@rescui/use-resize-observer 0.1.7 → 0.2.1-RUI-201-Support-css-modules-in-typography.25

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
@@ -40,3 +40,27 @@ const MyComponent = () => {
40
40
  return <div ref={setEl}>To the moon!</div>;
41
41
  };
42
42
  ```
43
+
44
+ ### Ignore first call
45
+
46
+ Sometimes you need to observe only changes and ignore the first observer call.
47
+
48
+ In that case, you may use the `ignoreFirstCall` option:
49
+
50
+ ```tsx
51
+ import React, { useState } from 'react';
52
+ import { useResizeObserver } from '@rescui/use-resize-observer';
53
+
54
+ const MyComponent = () => {
55
+ const ref = useRef<HTMLElement>(null);
56
+ useResizeObserver(
57
+ ref,
58
+ (entry: ResizeObserverEntry) => {
59
+ // resize logic
60
+ },
61
+ { ignoreFirstCall: true }
62
+ );
63
+
64
+ return <div ref={ref}>To the moon!</div>;
65
+ };
66
+ ```
package/lib/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export { useResizeObserver } from './use-resize-observer';
2
- export type { Callback } from './use-resize-observer';
2
+ export type { UseResizeObserverCallback as Callback, UseResizeObserverCallback, UseResizeObserverOptions } from './use-resize-observer';
@@ -1,3 +1,6 @@
1
1
  import React from 'react';
2
- export declare type Callback = (entry: ResizeObserverEntry) => void;
3
- export declare const useResizeObserver: <T extends Element>(target: T | React.RefObject<T> | null, callback: Callback) => void;
2
+ export declare type UseResizeObserverCallback = (entry: ResizeObserverEntry) => void;
3
+ export declare type UseResizeObserverOptions = {
4
+ ignoreFirstCall?: boolean;
5
+ };
6
+ export declare const useResizeObserver: <T extends Element>(target: T | React.RefObject<T> | null, callback: UseResizeObserverCallback, options?: UseResizeObserverOptions) => void;
@@ -1,8 +1,12 @@
1
1
  import { useRef, useEffect } from 'react';
2
2
 
3
3
  var useResizeObserver = function useResizeObserver(target, callback) {
4
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
5
+ ignoreFirstCall: false
6
+ };
4
7
  var cb = useRef();
5
8
  cb.current = callback;
9
+ var ignoreFirstCall = options.ignoreFirstCall;
6
10
  useEffect(function () {
7
11
  if (!target) {
8
12
  return;
@@ -21,15 +25,19 @@ var useResizeObserver = function useResizeObserver(target, callback) {
21
25
  }
22
26
 
23
27
  var firstCall = true;
24
- var abort = false;
28
+ var abort = false; // eslint-disable-next-line complexity
25
29
 
26
30
  var onResize = function onResize(entries) {
27
31
  // on the first call, delay it by a frame, see https://stackoverflow.com/a/58701523
28
32
  if (firstCall) {
29
33
  firstCall = false;
30
- window.requestAnimationFrame(function () {
31
- onResize(entries);
32
- });
34
+
35
+ if (!ignoreFirstCall) {
36
+ window.requestAnimationFrame(function () {
37
+ onResize(entries);
38
+ });
39
+ }
40
+
33
41
  return;
34
42
  }
35
43
 
@@ -49,7 +57,7 @@ var useResizeObserver = function useResizeObserver(target, callback) {
49
57
  abort = true;
50
58
  resizeObserver.disconnect();
51
59
  };
52
- }, [target]);
60
+ }, [target, ignoreFirstCall]);
53
61
  };
54
62
 
55
63
  export { useResizeObserver };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rescui/use-resize-observer",
3
- "version": "0.1.7",
3
+ "version": "0.2.1-RUI-201-Support-css-modules-in-typography.25+2583dfa0",
4
4
  "description": "ResizeObserver hook",
5
5
  "license": "Apache-2.0",
6
6
  "author": "JetBrains",
@@ -21,10 +21,10 @@
21
21
  "react": ">=16.8.0 <19"
22
22
  },
23
23
  "devDependencies": {
24
- "@rescui/scripts": "^0.2.3"
24
+ "@rescui/scripts": "0.3.0"
25
25
  },
26
26
  "scripts": {
27
27
  "build": "rescui-scripts build"
28
28
  },
29
- "gitHead": "e21b6f80037993b094ceaff022db6d4cd176a88d"
29
+ "gitHead": "2583dfa060441a32fe4e32024b04fa6f32a51eec"
30
30
  }