react-use-motion-measure
Version:
measure view bounds
38 lines (37 loc) • 1.24 kB
TypeScript
import { MotionValue } from 'framer-motion'
declare type ResizeObserverCallback = (entries: any[], observer: ResizeObserver) => void
declare class ResizeObserver {
constructor(callback: ResizeObserverCallback)
observe(target: Element, options?: any): void
unobserve(target: Element): void
disconnect(): void
static toString(): string
}
export interface MotionRectReadOnly {
readonly x: MotionValue<number>
readonly y: MotionValue<number>
readonly width: MotionValue<number>
readonly height: MotionValue<number>
readonly top: MotionValue<number>
readonly right: MotionValue<number>
readonly bottom: MotionValue<number>
readonly left: MotionValue<number>
[key: string]: MotionValue<number>
}
type HTMLOrSVGElement = HTMLElement | SVGElement
type Result = [ref: (element: HTMLOrSVGElement | null) => void, bounds: MotionRectReadOnly, forceRefresh: () => void]
export type Options = {
debounce?:
| number
| {
scroll: number
resize: number
}
scroll?: boolean
polyfill?: {
new (cb: ResizeObserverCallback): ResizeObserver
}
offsetSize?: boolean
}
declare function useMotionMeasure({ debounce, scroll, polyfill, offsetSize }?: Options): Result
export default useMotionMeasure