Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
# [9.1.0-alpha.1](https://github.com/ZeeCoder/use-resize-observer/compare/v9.0.2...v9.1.0-alpha.1) (2022-11-21)

### Features

- Exported some TS types ([e056e19](https://github.com/ZeeCoder/use-resize-observer/commit/e056e191499c713dc7bdd872530cfb9786e1af3e)), closes [#98](https://github.com/ZeeCoder/use-resize-observer/issues/98)

## [9.0.2](https://github.com/ZeeCoder/use-resize-observer/compare/v9.0.1...v9.0.2) (2022-06-13)

### Bug Fixes
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "use-resize-observer",
"version": "9.0.2",
"version": "9.1.0-alpha.1",
"main": "dist/bundle.cjs.js",
"module": "dist/bundle.esm.js",
"types": "dist/index.d.ts",
Expand Down
8 changes: 4 additions & 4 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,20 @@ import {
import useResolvedElement from "./utils/useResolvedElement";
import extractSize from "./utils/extractSize";

type ObservedSize = {
export type ObservedSize = {
width: number | undefined;
height: number | undefined;
};

type ResizeHandler = (size: ObservedSize) => void;
export type ResizeHandler = (size: ObservedSize) => void;

type HookResponse<T extends Element> = {
ref: RefCallback<T>;
} & ObservedSize;

// Declaring my own type here instead of using the one provided by TS (available since 4.2.2), because this way I'm not
// forcing consumers to use a specific TS version.
type ResizeObserverBoxOptions =
export type ResizeObserverBoxOptions =
| "border-box"
| "content-box"
| "device-pixel-content-box";
Expand All @@ -34,7 +34,7 @@ declare global {
}
}

type RoundingFunction = (n: number) => number;
export type RoundingFunction = (n: number) => number;

function useResizeObserver<T extends Element>(
opts: {
Expand Down
8 changes: 3 additions & 5 deletions tests/basic.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@
import React, { useRef, useState } from "react";
import { render, cleanup, act } from "@testing-library/react";
import createController from "./utils/createController";
import useResizeObserver from "../";
import useResizeObserver, { ObservedSize, ResizeHandler } from "../";
import useMergedCallbackRef from "./utils/useMergedCallbackRef";
import awaitNextFrame from "./utils/awaitNextFrame";
import { ObservedSize } from "./utils";
import useRenderTrigger from "./utils/useRenderTrigger";

afterEach(() => {
Expand Down Expand Up @@ -341,10 +340,9 @@ describe("Basic tests", () => {

it("should handle if the onResize handler changes, with the correct render counts", async () => {
const controller = createController();
type OnResizeHandler = (size: ObservedSize) => void;
let changeOnResizeHandler = (handler: OnResizeHandler) => {};
let changeOnResizeHandler = (handler: ResizeHandler) => {};
const Test = () => {
const [onResize, setOnResize] = useState<OnResizeHandler>(() => () => {});
const [onResize, setOnResize] = useState<ResizeHandler>(() => () => {});
changeOnResizeHandler = (handler) => setOnResize(() => handler);
const { ref, width, height } = useResizeObserver({ onResize });
controller.reportMeasuredSize({ width, height });
Expand Down
19 changes: 13 additions & 6 deletions tests/testing-lib.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
// Tests written with react testing library
import React, { useRef, useState, useCallback } from "react";
import useResizeObserver from "../";
import useResizeObserver, {
ResizeHandler,
ObservedSize,
ResizeObserverBoxOptions,
RoundingFunction,
} from "../";
import { render, cleanup, act } from "@testing-library/react";
import useRenderTrigger from "./utils/useRenderTrigger";
import awaitNextFrame from "./utils/awaitNextFrame";
import createController from "./utils/createController";
import useMergedCallbackRef from "./utils/useMergedCallbackRef";
import { ObservedSize, supports } from "./utils";
import { supports } from "./utils";

afterEach(() => {
cleanup();
Expand Down Expand Up @@ -77,11 +82,13 @@ describe("Testing Lib: Basics", () => {
const controller = createController();
const Test = () => {
const ref = useRef(null);
// Declaring onResize here only to test the availability and correctness of the exported `ResizeHandler` function
const onResize: ResizeHandler = (size) => {
controller.reportMeasuredSize(size);
};
useResizeObserver({
ref,
onResize: (size) => {
controller.reportMeasuredSize(size);
},
onResize,
});

return <div ref={ref} style={{ width: 10, height: 20 }} />;
Expand Down Expand Up @@ -577,7 +584,7 @@ describe("Testing Lib: Resize Observer Instance Counting Block", () => {
};
const c2 = {} as Controller;
const Test = () => {
const [rounder, setRounder] = useState<typeof Math.ceil | undefined>(
const [rounder, setRounder] = useState<RoundingFunction | undefined>(
() => Math.ceil
);
const { ref, width, height } = useResizeObserver<HTMLDivElement>({
Expand Down
5 changes: 0 additions & 5 deletions tests/utils/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,3 @@ new ResizeObserver((entries) => {
entries[0].devicePixelContentBoxSize
);
}).observe(document.body);

export type ObservedSize = {
width: number | undefined;
height: number | undefined;
};