Skip to content

Commit d44bd8e

Browse files
authored
Merge pull request #8 from envato/typescript
Add TypeScript definitions
2 parents 1c60afd + a334067 commit d44bd8e

File tree

3 files changed

+58
-2
lines changed

3 files changed

+58
-2
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"version": "1.0.2",
44
"description": "Respond to changes in a DOM element's size. With React Breakpoints, element queries are no longer \"web design's unicorn\" 🦄",
55
"main": "dist/index.js",
6+
"types": "src/index.d.ts",
67
"scripts": {
78
"build": "babel src/ -d dist/ --source-maps",
89
"prepare": "npm run build"

src/Observe.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import { Context } from './Context';
44
import { useBreakpoints } from './useBreakpoints';
55

66
const Observe = ({
7-
render,
87
box = undefined,
9-
breakpoints = {}
8+
breakpoints = {},
9+
render
1010
}) => {
1111
const observeOptions = box ? { box } : {};
1212

src/index.d.ts

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import React from 'react';
2+
3+
type BoxOptions = 'border-box' | 'content-box' | 'device-pixel-content-box';
4+
5+
interface ResizeObserverBoxSize {
6+
readonly inlineSize: number;
7+
readonly blockSize: number;
8+
}
9+
10+
interface ResizeObserverEntry {
11+
readonly target: Element;
12+
readonly contentRect: DOMRectReadOnly;
13+
readonly borderBoxSize: Array<ResizeObserverBoxSize> | ResizeObserverBoxSize;
14+
readonly contentBoxSize: Array<ResizeObserverBoxSize> | ResizeObserverBoxSize;
15+
readonly devicePixelContentBoxSize: Array<ResizeObserverBoxSize> | ResizeObserverBoxSize;
16+
}
17+
18+
interface Breakpoints {
19+
[key: number]: any;
20+
}
21+
22+
interface BreakpointsOptions {
23+
box?: BoxOptions;
24+
widths?: Breakpoints;
25+
heights?: Breakpoints;
26+
fragment?: number;
27+
}
28+
29+
interface ObservedElementProps {
30+
ref: () => React.RefObject<HTMLElement>;
31+
}
32+
33+
interface ObserveRenderArgs {
34+
observedElementProps: ObservedElementProps;
35+
widthMatch: any;
36+
heightMatch: any;
37+
}
38+
39+
interface ObserveProps {
40+
box?: BoxOptions;
41+
breakpoints?: BreakpointsOptions;
42+
render: ({
43+
observedElementProps,
44+
widthMatch,
45+
heightMatch
46+
}: ObserveRenderArgs) => React.ReactNode;
47+
}
48+
49+
export const Observe: (props: ObserveProps) => React.ReactNode;
50+
51+
export const useBreakpoints: (options: BreakpointsOptions, injectResizeObserverEntry?: ResizeObserverEntry) => [any, any];
52+
53+
export const useResizeObserverEntry: (injectResizeObserverEntry?: ResizeObserverEntry) => ResizeObserverEntry | null;
54+
55+
export const Context: React.Context<ResizeObserverEntry | null>;

0 commit comments

Comments
 (0)