@figliolia/size-observer
Version:
Resize Observers simplified
54 lines (46 loc) • 1.32 kB
Markdown
add @figliolia/size-observer
```
```typescript
import { SizeObserver } from "@figliolia/size-observer";
const node = document.getElementById("myNode");
const observer = new SizeObserver(node, {
width: true, // set to false to disable observing width
height: true, // set to false to disable observing height
type: "border-box", // (border-box, "content-box", "device-pixels")
onChange: ({ height, width }, node) => {
// your logic
}
});
// Clean Up
observer.destroy();
```
This library also exports a `useSizeObserver` hook that you can use in your react components. The Hook returns a `ref` that you can attach to any DOM node and it'll be observed as long as it's mounted to the DOM
```tsx
import { useMemo } from "react";
import { useSizeObserver } from "@figliolia/size-observer";
export const MyComponent = () => {
// Create Your Ref
const nodeRef = useResizeObserver<HTMLDivElement>({
width: true,
height: true,
type: "border-box",
onChange: ({ width, height }, node) => {
// do something with the observed dimensions
}
});
return (
// Attach your ref!
<div ref={nodeRef}>
{/* Your Markup */}
</div>
);
}
```
Resize Observers simplified!
```bash
npm i @figliolia/size-observer
yarn