extra-react-hooks 0.7.1 → 0.8.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.
package/README.md CHANGED
@@ -112,7 +112,7 @@ function useIncrement(
112
112
  ```ts
113
113
  function useResizeObserver(
114
114
  callback: ResizeObserverCallback
115
- , refs: Array<RefObject<HTMLElement> | MutableRefObject<HTMLElement>>
115
+ , refs: Array<RefObject<HTMLElement | null | undefined>>
116
116
  , deps?: React.DependencyList
117
117
  ): void
118
118
  ```
@@ -122,12 +122,12 @@ function useResizeObserver(
122
122
  function useIntersectionObserver(
123
123
  callback: IntersectionObserverCallback
124
124
  , options: IntersectionObserverInit | undefined
125
- , refs: Array<RefObject<HTMLElement> | MutableRefObject<HTMLElement>>
125
+ , refs: Array<RefObject<HTMLElement | null | undefined>>
126
126
  , deps?: React.DependencyList
127
127
  ): void
128
128
  function useIntersectionObserver(
129
129
  callback: IntersectionObserverCallback
130
- , refs: Array<RefObject<HTMLElement> | MutableRefObject<HTMLElement>>
130
+ , refs: Array<RefObject<HTMLElement | null | undefined>>
131
131
  , deps?: React.DependencyList
132
132
  ): void
133
133
  ```
@@ -1 +1 @@
1
- {"version":3,"file":"use-effect-async.js","sourceRoot":"","sources":["../src/use-effect-async.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAA;AACjD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEhD,MAAM,kBAAmB,SAAQ,WAAW;CAAG;AAE/C,MAAM,UAAU,cAAc,CAC5B,MAA8C,EAC9C,IAAqB;IAErB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QAExC,EAAE,CAAC,KAAK,IAAI,EAAE;YACZ,IAAI;gBACF,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;gBAElC,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;aAChC;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,GAAG,YAAY,kBAAkB,EAAE;oBACrC,IAAI,EAAE,CAAA;iBACP;qBAAM;oBACL,MAAM,GAAG,CAAA;iBACV;aACF;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAA;IACzD,CAAC,EAAE,IAAI,CAAC,CAAA;AACV,CAAC"}
1
+ {"version":3,"file":"use-effect-async.js","sourceRoot":"","sources":["../src/use-effect-async.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAA;AACjD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEhD,MAAM,kBAAmB,SAAQ,WAAW;CAAG;AAE/C,MAAM,UAAU,cAAc,CAC5B,MAA8C,EAC9C,IAAqB;IAErB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QAExC,EAAE,CAAC,KAAK,IAAI,EAAE;YACZ,IAAI,CAAC;gBACH,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;gBAElC,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;YACjC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;oBACtC,IAAI,EAAE,CAAA;gBACR,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,CAAA;gBACX,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAA;IACzD,CAAC,EAAE,IAAI,CAAC,CAAA;AACV,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-get-set.js","sourceRoot":"","sources":["../src/use-get-set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD,MAAM,UAAU,SAAS,CACvB,YAAe;IAEf,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IACpC,MAAM,GAAG,GAAG,MAAM,CAAI,YAAY,CAAC,CAAA;IAEnC,OAAO;QACL,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;QAClC,WAAW,CAAC,CAAC,KAAQ,EAAE,EAAE;YACvB,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK,EAAE;gBACzB,GAAG,CAAC,OAAO,GAAG,KAAK,CAAA;gBACnB,WAAW,EAAE,CAAA;aACd;QACH,CAAC,EAAE,EAAE,CAAC;KACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"use-get-set.js","sourceRoot":"","sources":["../src/use-get-set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD,MAAM,UAAU,SAAS,CACvB,YAAe;IAEf,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IACpC,MAAM,GAAG,GAAG,MAAM,CAAI,YAAY,CAAC,CAAA;IAEnC,OAAO;QACL,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;QAClC,WAAW,CAAC,CAAC,KAAQ,EAAE,EAAE;YACvB,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC1B,GAAG,CAAC,OAAO,GAAG,KAAK,CAAA;gBACnB,WAAW,EAAE,CAAA;YACf,CAAC;QACH,CAAC,EAAE,EAAE,CAAC;KACP,CAAA;AACH,CAAC"}
package/lib/use-iife.d.ts CHANGED
@@ -1,2 +1 @@
1
- /// <reference types="react" />
2
1
  export declare function useIIFE(iife: () => void, deps: React.DependencyList): void;
@@ -1 +1 @@
1
- {"version":3,"file":"use-iife.js","sourceRoot":"","sources":["../src/use-iife.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,gBAAgB,EAAE,iCAAmC;AAE9D,MAAM,UAAU,OAAO,CAAC,IAAgB,EAAE,IAA0B;IAClE,MAAM,OAAO,GAAG,MAAM,CAAuB,EAAE,CAAC,CAAA;IAChD,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;IAExC,IAAI,aAAa,EAAE,EAAE;QACnB,IAAI,EAAE,CAAA;KACP;SAAM;QACL,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;YAC1C,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;gBACjD,IAAI,EAAE,CAAA;aACP;SACF;aAAM;YACL,IAAI,EAAE,CAAA;SACP;KACF;IAED,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACpC,CAAC"}
1
+ {"version":3,"file":"use-iife.js","sourceRoot":"","sources":["../src/use-iife.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,gBAAgB,EAAE,iCAAmC;AAE9D,MAAM,UAAU,OAAO,CAAC,IAAgB,EAAE,IAA0B;IAClE,MAAM,OAAO,GAAG,MAAM,CAAuB,EAAE,CAAC,CAAA;IAChD,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;IAExC,IAAI,aAAa,EAAE,EAAE,CAAC;QACpB,IAAI,EAAE,CAAA;IACR,CAAC;SAAM,CAAC;QACN,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClD,IAAI,EAAE,CAAA;YACR,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,EAAE,CAAA;QACR,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACpC,CAAC"}
@@ -1,3 +1,3 @@
1
- import { RefObject, MutableRefObject } from 'react';
2
- export declare function useIntersectionObserver(callback: IntersectionObserverCallback, options: IntersectionObserverInit | undefined, refs: Array<RefObject<HTMLElement> | MutableRefObject<HTMLElement>>, deps?: React.DependencyList): void;
3
- export declare function useIntersectionObserver(callback: IntersectionObserverCallback, refs: Array<RefObject<HTMLElement> | MutableRefObject<HTMLElement>>, deps?: React.DependencyList): void;
1
+ import { RefObject } from 'react';
2
+ export declare function useIntersectionObserver(callback: IntersectionObserverCallback, options: IntersectionObserverInit | undefined, refs: Array<RefObject<HTMLElement | undefined | null>>, deps?: React.DependencyList): void;
3
+ export declare function useIntersectionObserver(callback: IntersectionObserverCallback, refs: Array<RefObject<HTMLElement | undefined | null>>, deps?: React.DependencyList): void;
@@ -1,5 +1,5 @@
1
1
  import { useEffect } from 'react';
2
- import { isArray, isntNull } from '@blackglory/prelude';
2
+ import { isArray, isntNull, isntUndefined } from '@blackglory/prelude';
3
3
  export function useIntersectionObserver(...args) {
4
4
  switch (args.length) {
5
5
  case 2: {
@@ -26,6 +26,7 @@ export function useIntersectionObserver(...args) {
26
26
  refs
27
27
  .map(x => x.current)
28
28
  .filter(isntNull)
29
+ .filter(isntUndefined)
29
30
  .forEach(x => observer.observe(x));
30
31
  return () => observer.disconnect();
31
32
  }, deps);
@@ -1 +1 @@
1
- {"version":3,"file":"use-intersection-observer.js","sourceRoot":"","sources":["../src/use-intersection-observer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA+B,MAAM,OAAO,CAAA;AAC9D,OAAO,EAAU,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAa/D,MAAM,UAAU,uBAAuB,CAAC,GAAG,IAWxC;IAED,QAAQ,IAAI,CAAC,MAAM,EAAE;QACnB,KAAK,CAAC,CAAC,CAAC;YACN,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,IAAI,CAAA;YAG7B,OAAO,uBAAuB,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;SAC1D;QACD,KAAK,CAAC,CAAC,CAAC;YACN,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,GAAG,IAAI,CAAA;YAClD,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE;gBAC1B,MAAM,IAAI,GAAG,aAAa,CAAA;gBAC1B,MAAM,IAAI,GAAG,UAA8C,CAAA;gBAG3D,OAAO,uBAAuB,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;aAChE;iBAAM;gBACL,MAAM,OAAO,GAAG,aAAa,CAAA;gBAC7B,MAAM,IAAI,GAAG,UAA2E,CAAA;gBAGxF,OAAO,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;aACxD;SACF;KACF;IAED,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CAAA;IAG5C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAE5D,IAAI;aACD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;aACnB,MAAM,CAAC,QAAQ,CAAC;aAChB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;QAEpC,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA;IACpC,CAAC,EAAE,IAAI,CAAC,CAAA;AACV,CAAC"}
1
+ {"version":3,"file":"use-intersection-observer.js","sourceRoot":"","sources":["../src/use-intersection-observer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAa,MAAM,OAAO,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAatE,MAAM,UAAU,uBAAuB,CAAC,GAAG,IAWxC;IAED,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,CAAC,CAAC,CAAC;YACP,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,IAAI,CAAA;YAE7B,OAAO,uBAAuB,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;QAC3D,CAAC;QACD,KAAK,CAAC,CAAC,CAAC,CAAC;YACP,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,GAAG,IAAI,CAAA;YAClD,IAAI,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,aAAa,CAAA;gBAC1B,MAAM,IAAI,GAAG,UAA8C,CAAA;gBAE3D,OAAO,uBAAuB,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YACjE,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,aAAa,CAAA;gBAC7B,MAAM,IAAI,GAAG,UAA2C,CAAA;gBAExD,OAAO,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;YACzD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CAAA;IAE5C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAE5D,IAAI;aACD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;aACnB,MAAM,CAAC,QAAQ,CAAC;aAChB,MAAM,CAAC,aAAa,CAAC;aACrB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;QAEpC,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA;IACpC,CAAC,EAAE,IAAI,CAAC,CAAA;AACV,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-is-first-render.js","sourceRoot":"","sources":["../src/use-is-first-render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAE3C,IAAK,KAIJ;AAJD,WAAK,KAAK;IACR,iDAAY,CAAA;IACZ,mCAAK,CAAA;IACL,yCAAQ,CAAA;AACV,CAAC,EAJI,KAAK,KAAL,KAAK,QAIT;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IAExC,QAAQ,KAAK,CAAC,OAAO,EAAE;QACrB,KAAK,KAAK,CAAC,YAAY;YACrB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAA;YAC3B,MAAK;QACP,KAAK,KAAK,CAAC,KAAK;YACd,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAA;YAC9B,MAAK;QACP,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAK;KAC3B;IAED,OAAO,WAAW,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;IAErC,SAAS,aAAa;QACpB,OAAO,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,KAAK,CAAA;IACtC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"use-is-first-render.js","sourceRoot":"","sources":["../src/use-is-first-render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAE3C,IAAK,KAIJ;AAJD,WAAK,KAAK;IACR,iDAAY,CAAA;IACZ,mCAAK,CAAA;IACL,yCAAQ,CAAA;AACV,CAAC,EAJI,KAAK,KAAL,KAAK,QAIT;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IAExC,QAAQ,KAAK,CAAC,OAAO,EAAE,CAAC;QACtB,KAAK,KAAK,CAAC,YAAY;YACrB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAA;YAC3B,MAAK;QACP,KAAK,KAAK,CAAC,KAAK;YACd,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAA;YAC9B,MAAK;QACP,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAK;IAC5B,CAAC;IAED,OAAO,WAAW,CAAC,aAAa,EAAE,EAAE,CAAC,CAAA;IAErC,SAAS,aAAa;QACpB,OAAO,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,KAAK,CAAA;IACtC,CAAC;AACH,CAAC"}
@@ -1,2 +1 @@
1
- /// <reference types="react" />
2
1
  export declare function useMemoWithCleanup<T>(factory: () => T, cleanup: (value: T) => void, deps?: React.DependencyList): T;
@@ -1 +1 @@
1
- {"version":3,"file":"use-memo-with-cleanup.js","sourceRoot":"","sources":["../src/use-memo-with-cleanup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAE1C,MAAM,UAAU,kBAAkB,CAChC,OAAgB,EAChB,OAA2B,EAC3B,IAA2B;IAE3B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAEpC,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC,EAAE,IAAI,CAAC,CAAA;IAER,OAAO,KAAK,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"use-memo-with-cleanup.js","sourceRoot":"","sources":["../src/use-memo-with-cleanup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAE1C,MAAM,UAAU,kBAAkB,CAChC,OAAgB,EAChB,OAA2B,EAC3B,IAA2B;IAE3B,MAAM,KAAK,GAAG,OAAO,CACnB,OAAO,EAEP,IAAI,CACL,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC,EAAE,IAAI,CAAC,CAAA;IAER,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-multiple-selection.js","sourceRoot":"","sources":["../src/use-multiple-selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAiB,MAAM,qBAAqB,CAAA;AAEpE,OAAO,EAAE,OAAO,EAAE,sBAAwB;AAE1C,MAAM,UAAU,oBAAoB,CAClC,OAAyB,EACzB,yBAAmC,EAAE;IAQrC,OAAO,CAAC,GAAG,EAAE;QACX,KAAK,MAAM,KAAK,IAAI,sBAAsB,EAAE;YAC1C,MAAM,CACJ,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,EACpC,0FAA0F,CAC3F,CAAA;SACF;IACH,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAA;IAE5B,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAA;IAEvF,OAAO;QACL,eAAe,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;QAC3E,YAAY,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACrE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,eAAe,CAAC,CAAC;QAC9C,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;QAC/B,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;KACpC,CAAA;IAED,SAAS,kBAAkB;QACzB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YAC9B,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;YAClC,OAAO,EAAE,QAAQ,EAAE,CAAA;QACrB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,SAAS,UAAU,CAAC,KAAa;QAC/B,OAAO,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC;IAED,SAAS,MAAM,CAAC,KAAa;QAC3B,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;YACrB,QAAQ,CAAC,KAAK,CAAC,CAAA;SAChB;aAAM;YACL,MAAM,CAAC,KAAK,CAAC,CAAA;SACd;IACH,CAAC;IAED,SAAS,MAAM,CAAC,KAAa;QAC3B,kBAAkB,CAAC,eAAe,CAAC,EAAE;YACnC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAA;YACvC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YACjB,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,SAAS,QAAQ,CAAC,KAAa;QAC7B,kBAAkB,CAAC,eAAe,CAAC,EAAE;YACnC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAA;YACvC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACpB,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"use-multiple-selection.js","sourceRoot":"","sources":["../src/use-multiple-selection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAiB,MAAM,qBAAqB,CAAA;AAEpE,OAAO,EAAE,OAAO,EAAE,sBAAwB;AAE1C,MAAM,UAAU,oBAAoB,CAClC,OAAyB,EACzB,yBAAmC,EAAE;IAQrC,OAAO,CAAC,GAAG,EAAE;QACX,KAAK,MAAM,KAAK,IAAI,sBAAsB,EAAE,CAAC;YAC3C,MAAM,CACJ,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,EACpC,0FAA0F,CAC3F,CAAA;QACH,CAAC;IACH,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAA;IAE5B,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAA;IAEvF,OAAO;QACL,eAAe,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;QAC3E,YAAY,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACrE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,eAAe,CAAC,CAAC;QAC9C,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;QAC/B,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;KACpC,CAAA;IAED,SAAS,kBAAkB;QACzB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YAC9B,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;YAClC,OAAO,EAAE,QAAQ,EAAE,CAAA;QACrB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,SAAS,UAAU,CAAC,KAAa;QAC/B,OAAO,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC;IAED,SAAS,MAAM,CAAC,KAAa;QAC3B,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,CAAA;QACf,CAAC;IACH,CAAC;IAED,SAAS,MAAM,CAAC,KAAa;QAC3B,kBAAkB,CAAC,eAAe,CAAC,EAAE;YACnC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAA;YACvC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YACjB,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,SAAS,QAAQ,CAAC,KAAa;QAC7B,kBAAkB,CAAC,eAAe,CAAC,EAAE;YACnC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAA;YACvC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACpB,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
@@ -1,2 +1,2 @@
1
- import { RefObject, MutableRefObject } from 'react';
2
- export declare function useResizeObserver(callback: ResizeObserverCallback, refs: Array<RefObject<HTMLElement> | MutableRefObject<HTMLElement>>, deps?: React.DependencyList): void;
1
+ import { RefObject } from 'react';
2
+ export declare function useResizeObserver(callback: ResizeObserverCallback, refs: Array<RefObject<HTMLElement | null | undefined>>, deps?: React.DependencyList): void;
@@ -1,11 +1,12 @@
1
1
  import { useEffect } from 'react';
2
- import { isntNull } from '@blackglory/prelude';
2
+ import { isntNull, isntUndefined } from '@blackglory/prelude';
3
3
  export function useResizeObserver(callback, refs, deps) {
4
4
  useEffect(() => {
5
5
  const observer = new ResizeObserver(callback);
6
6
  refs
7
7
  .map(x => x.current)
8
8
  .filter(isntNull)
9
+ .filter(isntUndefined)
9
10
  .forEach(x => observer.observe(x));
10
11
  return () => observer.disconnect();
11
12
  }, deps);
@@ -1 +1 @@
1
- {"version":3,"file":"use-resize-observer.js","sourceRoot":"","sources":["../src/use-resize-observer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA+B,MAAM,OAAO,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,MAAM,UAAU,iBAAiB,CAC/B,QAAgC,EAChC,IAAmE,EACnE,IAA2B;IAE3B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAA;QAE7C,IAAI;aACD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;aACnB,MAAM,CAAC,QAAQ,CAAC;aAChB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;QAEpC,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA;IACpC,CAAC,EAAE,IAAI,CAAC,CAAA;AACV,CAAC"}
1
+ {"version":3,"file":"use-resize-observer.js","sourceRoot":"","sources":["../src/use-resize-observer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAa,MAAM,OAAO,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAE7D,MAAM,UAAU,iBAAiB,CAC/B,QAAgC,EAChC,IAAsD,EACtD,IAA2B;IAE3B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAA;QAE7C,IAAI;aACD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;aACnB,MAAM,CAAC,QAAQ,CAAC;aAChB,MAAM,CAAC,aAAa,CAAC;aACrB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;QAEpC,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA;IACpC,CAAC,EAAE,IAAI,CAAC,CAAA;AACV,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-state-cycle.js","sourceRoot":"","sources":["../src/use-state-cycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAG7C,MAAM,UAAU,aAAa,CAC3B,aAA+B,EAC/B,oBAA4B,CAAC;IAE7B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAA;IAErD,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;IAEjE,SAAS,IAAI;QACX,QAAQ,CAAC,KAAK,CAAC,EAAE;YACf,IAAI,KAAK,GAAG,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE;gBACpC,OAAO,KAAK,GAAG,CAAC,CAAA;aACjB;iBAAM;gBACL,OAAO,CAAC,CAAA;aACT;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"use-state-cycle.js","sourceRoot":"","sources":["../src/use-state-cycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAG7C,MAAM,UAAU,aAAa,CAC3B,aAA+B,EAC/B,oBAA4B,CAAC;IAE7B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAA;IAErD,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;IAEjE,SAAS,IAAI;QACX,QAAQ,CAAC,KAAK,CAAC,EAAE;YACf,IAAI,KAAK,GAAG,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;gBACrC,OAAO,KAAK,GAAG,CAAC,CAAA;YAClB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,CAAA;YACV,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-step.js","sourceRoot":"","sources":["../src/use-step.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAG7C,MAAM,UAAU,OAAO,CACrB,KAAuB,EACvB,mBAA2B,CAAC;IAE5B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAA;IAEpD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAA;IAE5E,SAAS,IAAI;QACX,QAAQ,CAAC,KAAK,CAAC,EAAE;YACf,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC9B,OAAO,KAAK,CAAA;aACb;iBAAM;gBACL,OAAO,KAAK,GAAG,CAAC,CAAA;aACjB;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,SAAS,QAAQ;QACf,QAAQ,CAAC,KAAK,CAAC,EAAE;YACf,IAAI,KAAK,KAAK,CAAC,EAAE;gBACf,OAAO,KAAK,CAAA;aACb;iBAAM;gBACL,OAAO,KAAK,GAAG,CAAC,CAAA;aACjB;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"use-step.js","sourceRoot":"","sources":["../src/use-step.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAG7C,MAAM,UAAU,OAAO,CACrB,KAAuB,EACvB,mBAA2B,CAAC;IAE5B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAA;IAEpD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAA;IAE5E,SAAS,IAAI;QACX,QAAQ,CAAC,KAAK,CAAC,EAAE;YACf,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,OAAO,KAAK,CAAA;YACd,CAAC;iBAAM,CAAC;gBACN,OAAO,KAAK,GAAG,CAAC,CAAA;YAClB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,SAAS,QAAQ;QACf,QAAQ,CAAC,KAAK,CAAC,EAAE;YACf,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,OAAO,KAAK,CAAA;YACd,CAAC;iBAAM,CAAC;gBACN,OAAO,KAAK,GAAG,CAAC,CAAA;YAClB,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-update-effect.js","sourceRoot":"","sources":["../src/use-update-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE3D,MAAM,UAAU,eAAe,CAC7B,MAAsB,EACtB,IAA2B;IAE3B,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;IAExC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,EAAE;YACpB,OAAO,MAAM,EAAE,CAAA;SAChB;IACH,CAAC,EAAE,IAAI,CAAC,CAAA;AACV,CAAC"}
1
+ {"version":3,"file":"use-update-effect.js","sourceRoot":"","sources":["../src/use-update-effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAE3D,MAAM,UAAU,eAAe,CAC7B,MAAsB,EACtB,IAA2B;IAE3B,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAA;IAExC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACrB,OAAO,MAAM,EAAE,CAAA;QACjB,CAAC;IACH,CAAC,EAAE,IAAI,CAAC,CAAA;AACV,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "extra-react-hooks",
3
- "version": "0.7.1",
3
+ "version": "0.8.0",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "files": [
@@ -19,7 +19,7 @@
19
19
  "license": "MIT",
20
20
  "scripts": {
21
21
  "prepare": "ts-patch install -s",
22
- "lint": "eslint --ext .js,.jsx,.ts,.tsx --quiet src __tests__",
22
+ "lint": "eslint --quiet src __tests__",
23
23
  "test": "karma start karma.config.cjs --single-run",
24
24
  "test:dev": "karma start karma.config.cjs",
25
25
  "prepublishOnly": "run-s prepare clean build",
@@ -37,33 +37,34 @@
37
37
  "@blackglory/wait-for": "^0.7.4",
38
38
  "@commitlint/cli": "^17.6.5",
39
39
  "@commitlint/config-conventional": "^17.6.5",
40
- "@testing-library/react": "^14.0.0",
41
- "@types/jasmine": "^4.3.2",
42
- "@types/react": "^18.2.11",
43
- "@typescript-eslint/eslint-plugin": "^5.59.9",
44
- "@typescript-eslint/parser": "^5.59.9",
45
- "eslint": "^8.42.0",
46
- "eslint-plugin-react": "^7.32.2",
47
- "eslint-plugin-react-hooks": "^4.6.0",
40
+ "@eslint/js": "^9.18.0",
41
+ "@testing-library/dom": "^10.4.0",
42
+ "@testing-library/react": "^16.1.0",
43
+ "@types/jasmine": "^5.1.5",
44
+ "@types/react": "^19.0.7",
45
+ "eslint": "^9.18.0",
46
+ "eslint-plugin-react": "^7.37.4",
47
+ "eslint-plugin-react-hooks": "^5.1.0",
48
48
  "husky": "4",
49
- "karma": "^6.4.2",
49
+ "karma": "^6.4.4",
50
50
  "karma-chrome-launcher": "^3.2.0",
51
51
  "karma-jasmine": "^5.1.0",
52
- "karma-webpack": "^5.0.0",
52
+ "karma-webpack": "^5.0.1",
53
53
  "npm-run-all": "^4.1.5",
54
- "react": "^18.2.0",
55
- "react-dom": "^18.2.0",
56
- "react-test-renderer": "^18.2.0",
54
+ "react": "^19.0.0",
55
+ "react-dom": "^19.0.0",
56
+ "react-test-renderer": "^19.0.0",
57
57
  "return-style": "^3.0.1",
58
58
  "rimraf": "^4.3.0",
59
59
  "standard-version": "^9.3.2",
60
- "ts-loader": "^9.4.3",
61
- "ts-patch": "^2.1.0",
62
- "tsconfig-paths-webpack-plugin": "^4.0.1",
63
- "tslib": "^2.5.3",
64
- "typescript": "4.9.5",
65
- "typescript-transform-paths": "^3.4.6",
66
- "webpack": "^5.86.0"
60
+ "ts-loader": "^9.5.2",
61
+ "ts-patch": "^3.3.0",
62
+ "tsconfig-paths-webpack-plugin": "^4.2.0",
63
+ "tslib": "^2.8.1",
64
+ "typescript": "5.7.3",
65
+ "typescript-eslint": "^8.20.0",
66
+ "typescript-transform-paths": "^3.5.3",
67
+ "webpack": "^5.97.1"
67
68
  },
68
69
  "dependencies": {
69
70
  "@blackglory/errors": "^3.0.3",
@@ -74,6 +75,6 @@
74
75
  "rxjs": "^7.8.1"
75
76
  },
76
77
  "peerDependencies": {
77
- "react": "^17 || ^18"
78
+ "react": "^19"
78
79
  }
79
80
  }
@@ -1,27 +1,27 @@
1
- import { useEffect, RefObject, MutableRefObject } from 'react'
2
- import { assert, isArray, isntNull } from '@blackglory/prelude'
1
+ import { useEffect, RefObject } from 'react'
2
+ import { isArray, isntNull, isntUndefined } from '@blackglory/prelude'
3
3
 
4
4
  export function useIntersectionObserver(
5
5
  callback: IntersectionObserverCallback
6
6
  , options: IntersectionObserverInit | undefined
7
- , refs: Array<RefObject<HTMLElement> | MutableRefObject<HTMLElement>>
7
+ , refs: Array<RefObject<HTMLElement | undefined | null>>
8
8
  , deps?: React.DependencyList
9
9
  ): void
10
10
  export function useIntersectionObserver(
11
11
  callback: IntersectionObserverCallback
12
- , refs: Array<RefObject<HTMLElement> | MutableRefObject<HTMLElement>>
12
+ , refs: Array<RefObject<HTMLElement | undefined | null>>
13
13
  , deps?: React.DependencyList
14
14
  ): void
15
15
  export function useIntersectionObserver(...args:
16
16
  | [
17
17
  callback: IntersectionObserverCallback
18
18
  , options: IntersectionObserverInit | undefined
19
- , refs: Array<RefObject<HTMLElement> | MutableRefObject<HTMLElement>>
19
+ , refs: Array<RefObject<HTMLElement | undefined | null>>
20
20
  , deps?: React.DependencyList
21
21
  ]
22
22
  | [
23
23
  callback: IntersectionObserverCallback
24
- , refs: Array<RefObject<HTMLElement> | MutableRefObject<HTMLElement>>
24
+ , refs: Array<RefObject<HTMLElement | undefined | null>>
25
25
  , deps?: React.DependencyList
26
26
  ]
27
27
  ): void {
@@ -29,7 +29,6 @@ export function useIntersectionObserver(...args:
29
29
  case 2: {
30
30
  const [callback, refs] = args
31
31
 
32
- // eslint-disable-next-line react-hooks/rules-of-hooks
33
32
  return useIntersectionObserver(callback, undefined, refs)
34
33
  }
35
34
  case 3: {
@@ -38,13 +37,11 @@ export function useIntersectionObserver(...args:
38
37
  const refs = optionsOrRefs
39
38
  const deps = refsOrDeps as React.DependencyList | undefined
40
39
 
41
- // eslint-disable-next-line react-hooks/rules-of-hooks
42
40
  return useIntersectionObserver(callback, undefined, refs, deps)
43
41
  } else {
44
42
  const options = optionsOrRefs
45
- const refs = refsOrDeps as Array<RefObject<HTMLElement> | MutableRefObject<HTMLElement>>
43
+ const refs = refsOrDeps as Array<RefObject<HTMLElement>>
46
44
 
47
- // eslint-disable-next-line react-hooks/rules-of-hooks
48
45
  return useIntersectionObserver(callback, options, refs)
49
46
  }
50
47
  }
@@ -52,13 +49,13 @@ export function useIntersectionObserver(...args:
52
49
 
53
50
  const [callback, options, refs, deps] = args
54
51
 
55
- // eslint-disable-next-line react-hooks/rules-of-hooks
56
52
  useEffect(() => {
57
53
  const observer = new IntersectionObserver(callback, options)
58
54
 
59
55
  refs
60
56
  .map(x => x.current)
61
57
  .filter(isntNull)
58
+ .filter(isntUndefined)
62
59
  .forEach(x => observer.observe(x))
63
60
 
64
61
  return () => observer.disconnect()
@@ -5,7 +5,11 @@ export function useMemoWithCleanup<T>(
5
5
  , cleanup: (value: T) => void
6
6
  , deps?: React.DependencyList
7
7
  ): T {
8
- const value = useMemo(factory, deps)
8
+ const value = useMemo(
9
+ factory
10
+ // @ts-ignore
11
+ , deps
12
+ )
9
13
 
10
14
  useEffect(() => {
11
15
  return () => cleanup(value)
@@ -1,9 +1,9 @@
1
- import { useEffect, RefObject, MutableRefObject } from 'react'
2
- import { isntNull } from '@blackglory/prelude'
1
+ import { useEffect, RefObject } from 'react'
2
+ import { isntNull, isntUndefined } from '@blackglory/prelude'
3
3
 
4
4
  export function useResizeObserver(
5
5
  callback: ResizeObserverCallback
6
- , refs: Array<RefObject<HTMLElement> | MutableRefObject<HTMLElement>>
6
+ , refs: Array<RefObject<HTMLElement | null | undefined>>
7
7
  , deps?: React.DependencyList
8
8
  ): void {
9
9
  useEffect(() => {
@@ -12,6 +12,7 @@ export function useResizeObserver(
12
12
  refs
13
13
  .map(x => x.current)
14
14
  .filter(isntNull)
15
+ .filter(isntUndefined)
15
16
  .forEach(x => observer.observe(x))
16
17
 
17
18
  return () => observer.disconnect()