/** * State of visual viewport. */ export interface VisualViewportState { /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport/height). */ readonly height: number; /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport/offsetLeft). */ readonly offsetLeft: number; /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport/offsetTop). */ readonly offsetTop: number; /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport/pageLeft). */ readonly pageLeft: number; /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport/pageTop). */ readonly pageTop: number; /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport/scale). */ readonly scale: number; /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/VisualViewport/width). */ readonly width: number; /** False by default (before mount), true when initialized (after mount). */ readonly ready: boolean; } export interface UseVisualViewportOptions { /** * Mode of how hook will be work. * * Possible values: * - `stateful` (default) - hook will update returned state and cause rerender. * - `stateless` - hook will not update returned state. * * If you can observe `visualViewport` without re-renders * you can set `mode: 'stateless'` and also `onChange` to listen changes. */ mode?: 'stateful' | 'stateless'; /** * Will be called each time `visualViewport` changes. * Also will be called once during listening initialization. */ onChange?: (state: VisualViewportState) => void; /** Initial returned state. Used before subscription effect applied. */ defaultState?: VisualViewportState | (() => VisualViewportState); } /** * Hook of window.visualViewport state. * @param options Options. * @returns State of visualViewport (width, height, etc). */ export declare function useVisualViewport({ mode, onChange, defaultState, }?: UseVisualViewportOptions): VisualViewportState;