Socket
Socket
Sign inDemoInstall

react-dom-resize-observer

Package Overview
Dependencies
3
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.1.7 to 0.1.9

46

dist/hooks/__tests__/useResizeObserver.test.jsx

@@ -24,6 +24,8 @@ "use strict";

window.ResizeObserver = ResizeObserver;
const MockComponent = () => {
const result = (0, useResizeObserver_1.useResizeObserver)();
const MockComponent = (props) => {
const result = (0, useResizeObserver_1.useResizeObserver)(props.elementRef);
return (<div>
<div ref={result.observer}>Mock</div>
<div ref={props.elementRef === undefined ? result.observer : undefined}>
Mock
</div>
<button onClick={result.disconnect}>Disconnect</button>

@@ -38,6 +40,11 @@ </div>);

});
it("observes the registered DOM element", () => {
it("observes the DOM element passed into the observer callback.", () => {
(0, react_1.render)(<MockComponent />);
expect(mockObserve).toHaveBeenCalledTimes(1);
});
it("observes the DOM element reference passed as a parameter.", () => {
const elRef = { current: document.createElement("div") };
(0, react_1.render)(<MockComponent elementRef={elRef}/>);
expect(mockObserve).toHaveBeenCalledTimes(1);
});
it("disconnects when callback invoked", () => {

@@ -73,3 +80,3 @@ const { getByText, rerender } = (0, react_1.render)(<MockComponent />);

window.ResizeObserver = ResizeObserver;
const { result } = (0, react_1.renderHook)(() => (0, useResizeObserver_1.useResizeObserver)());
const { result, rerender } = (0, react_1.renderHook)(() => (0, useResizeObserver_1.useResizeObserver)());
(0, react_1.act)(() => {

@@ -102,7 +109,10 @@ const el = document.createElement("div");

});
rerender();
expect(result.current.entry).toEqual({
contentBoxSize: {
blockSize: 0,
inlineSize: 0
},
contentBoxSize: [
{
blockSize: 0,
inlineSize: 0
}
],
contentRect: {

@@ -118,3 +128,3 @@ bottom: 0,

},
target: expect.any(HTMLDivElement)
target: <div />
});

@@ -136,3 +146,3 @@ });

const mockOnResize = jest.fn();
const { result } = (0, react_1.renderHook)(() => (0, useResizeObserver_1.useResizeObserver)(mockOnResize));
const { result } = (0, react_1.renderHook)(() => (0, useResizeObserver_1.useResizeObserver)(undefined, mockOnResize));
(0, react_1.act)(() => {

@@ -167,6 +177,8 @@ const el = document.createElement("div");

expect(mockOnResize).toHaveBeenCalledWith({
contentBoxSize: {
blockSize: 0,
inlineSize: 0
},
contentBoxSize: [
{
blockSize: 0,
inlineSize: 0
}
],
contentRect: {

@@ -182,3 +194,3 @@ bottom: 0,

},
target: expect.any(HTMLDivElement)
target: <div />
});

@@ -198,3 +210,3 @@ });

const mockOnResize = jest.fn();
const { result } = (0, react_1.renderHook)(() => (0, useResizeObserver_1.useResizeObserver)(mockOnResize));
const { result } = (0, react_1.renderHook)(() => (0, useResizeObserver_1.useResizeObserver)(undefined, mockOnResize));
(0, react_1.act)(() => {

@@ -201,0 +213,0 @@ const el = document.createElement("div");

@@ -1,26 +0,7 @@

declare type ResizeEntry<T> = {
contentBoxSize: {
inlineSize: number;
blockSize: number;
};
contentRect: {
bottom: number;
height: number;
left: number;
right: number;
top: number;
width: number;
x: number;
y: number;
};
target: T;
};
export declare function useResizeObserver<T extends Element>(onResize?: (entry: ResizeEntry<T> & {
target: T;
}) => void): {
entry: ResizeEntry<T> | null;
/// <reference types="react" />
export declare function useResizeObserver<T extends Element | null>(ref?: React.MutableRefObject<T>, onResize?: (entry: ResizeObserverEntry) => void): {
entry: ResizeObserverEntry | null;
observer: (el: T) => void;
disconnect: () => void;
disconnect?: () => void;
};
export {};
//# sourceMappingURL=useResizeObserver.d.ts.map

@@ -5,69 +5,62 @@ "use strict";

const react_1 = require("react");
function useResizeObserver(onResize) {
const [entry, setEntry] = (0, react_1.useState)(null);
const [el, setEl] = (0, react_1.useState)(null);
const observer = (0, react_1.useCallback)((el) => {
setEl(el);
}, []);
function useResizeObserver(ref, onResize) {
const [state, setState] = (0, react_1.useState)(false);
const resizeObserver = (0, react_1.useRef)(null);
const observerEntry = (0, react_1.useRef)(null);
const disconnect = (0, react_1.useRef)(() => {
/** */
});
const cb = (0, react_1.useCallback)((entry) => {
setEntry(entry);
}, []);
(0, react_1.useEffect)(() => {
const unobserve = (0, react_1.useRef)(() => {
/** */
});
/** Set when */
const isElementObserved = (0, react_1.useRef)(false);
/** Pass a callback to set the observed element. */
const observer = (0, react_1.useCallback)((el) => {
if (el === null)
return;
const resizeObserver = new ResizeObserver(entries => {
resizeObserver.current = new ResizeObserver(entries => {
if (entries.length === 0)
return;
const { contentBoxSize: [contentBoxSize], contentRect } = entries[0];
cb({
contentBoxSize: {
inlineSize: contentBoxSize.inlineSize,
blockSize: contentBoxSize.blockSize
},
contentRect: {
bottom: contentRect.bottom,
height: contentRect.height,
left: contentRect.left,
right: contentRect.right,
top: contentRect.top,
width: contentRect.width,
x: contentRect.x,
y: contentRect.y
},
target: el
});
observerEntry.current = entries[0];
if (onResize) {
onResize({
contentBoxSize: {
inlineSize: contentBoxSize.inlineSize,
blockSize: contentBoxSize.blockSize
},
contentRect: {
bottom: contentRect.bottom,
height: contentRect.height,
left: contentRect.left,
right: contentRect.right,
top: contentRect.top,
width: contentRect.width,
x: contentRect.x,
y: contentRect.y
},
target: el
});
onResize(entries[0]);
}
});
resizeObserver.observe(el);
resizeObserver.current.observe(el);
isElementObserved.current = true;
disconnect.current = () => {
resizeObserver.disconnect();
var _a;
(_a = resizeObserver.current) === null || _a === void 0 ? void 0 : _a.disconnect();
};
return () => {
resizeObserver.unobserve(el);
resizeObserver.disconnect();
unobserve.current = () => {
var _a;
(_a = resizeObserver.current) === null || _a === void 0 ? void 0 : _a.unobserve(el);
};
}, [el, onResize, cb]);
}, [onResize]);
/** Set the element reference as a side-effect if they already have a ref. */
(0, react_1.useEffect)(() => {
const currentElement = ref === null || ref === void 0 ? void 0 : ref.current;
if (currentElement === undefined ||
currentElement === null ||
isElementObserved.current === true)
return;
observer(currentElement);
}, []);
/** If there is an element reference passed in, set to true to prevent observer callback running twice. */
(0, react_1.useEffect)(() => {
const currentElement = ref === null || ref === void 0 ? void 0 : ref.current;
if (currentElement === undefined || currentElement === null)
return;
isElementObserved.current = true;
}, []);
/** Unobserve and disconnect when unmounted. */
(0, react_1.useEffect)(() => () => {
if (resizeObserver.current !== null) {
unobserve.current();
disconnect.current();
}
}, []);
return {
entry,
entry: observerEntry.current,
observer,

@@ -74,0 +67,0 @@ disconnect: disconnect.current

{
"name": "react-dom-resize-observer",
"version": "0.1.7",
"version": "0.1.9",
"description": "",

@@ -5,0 +5,0 @@ "main": "./dist/index.js",

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc