import { Async } from '@fluentui/utilities'; import type { ISettingsMap } from '@fluentui/utilities'; import type { IWarnControlledUsageParams } from '@fluentui/utilities'; import type { Point } from '@fluentui/utilities'; import * as React_2 from 'react'; import { Rectangle } from '@fluentui/utilities'; import { useIsomorphicLayoutEffect } from '@fluentui/utilities'; export declare type ChangeCallback | undefined> = (ev: TEvent, newValue: TValue | undefined) => void; /** Updater callbacks returned by `useBoolean`. */ export declare interface IUseBooleanCallbacks { /** Set the value to true. Always has the same identity. */ setTrue: () => void; /** Set the value to false. Always has the same identity. */ setFalse: () => void; /** Toggle the value. Always has the same identity. */ toggle: () => void; } export declare interface IWarningOptions

{ /** Name of the component */ name: string; /** Current component props */ props: P; /** Generic messages */ other?: string[]; /** Warns when props are required if a condition is met */ conditionallyRequired?: { /** Props required when the condition is met */ requiredProps: string[]; /** Name of the prop that the condition is based on */ conditionalPropName: string; /** Whether the condition is met */ condition: boolean; }[]; /** * Warns when deprecated props are being used. Each key is a prop name and each value is * either undefined or a replacement prop name. */ deprecations?: ISettingsMap

; /** * Warns when two props which are mutually exclusive are both being used. * The key is one prop name and the value is the other. */ mutuallyExclusive?: ISettingsMap

; /** * Check for and warn on the following error conditions with a form component: * - A value prop is provided (indicated it's being used as controlled) without a change handler, * and the component is not read-only * - Both the value and defaultValue props are provided * - The component is attempting to switch between controlled and uncontrolled * * The messages mimic the warnings React gives for these error conditions on input elements. * The warning will only be displayed once per component instance. */ controlledUsage?: Pick, 'valueProp' | 'defaultValueProp' | 'onChangeProp' | 'readOnlyProp'>; } /** * A callback ref function that also has a .current member for the ref's current value. */ export declare type RefCallback = ((value: T | null) => void) & React_2.RefObject; /** * A Ref function which can be treated like a ref object in that it has an attached * current property, which will be updated as the ref is evaluated. */ export declare type RefObjectFunction = React_2.RefObject & ((value: T) => void); export declare type Target = Element | string | MouseEvent | Point | Rectangle | null | React_2.RefObject; /** * Hook to provide an Async instance that is automatically cleaned up on dismount. */ export declare function useAsync(): Async; /** * Hook to store a value and generate callbacks for setting the value to true or false. * The identity of the callbacks will always stay the same. * * @param initialState - Initial value * @returns Array with the current value and an object containing the updater callbacks. */ export declare function useBoolean(initialState: boolean): [boolean, IUseBooleanCallbacks]; /** * Hook to initialize and return a constant value. Unlike `React.useMemo`, this is guaranteed to * always return the same value (and if the initializer is a function, only call it once). * This is similar to setting a private member in a class constructor. * * If the value should ever change based on dependencies, use `React.useMemo` instead. * * @param initialValue - Initial value, or function to get the initial value. Similar to `useState`, * only the value/function passed in the first time this is called is respected. * @returns The value. The identity of this value will always be the same. */ export declare function useConst(initialValue: T | (() => T)): T; /** * @deprecated Deprecated due to potential for misuse. Generally, use `React.useCallback` instead. * If you need a callback reference that never changes, consider `useEventCallback`. * * This hook was intended for creating callbacks which have no dependencies, and therefore never * need to change. It works fine if everyone using it is extremely mindful of how closures work, * but that's not a safe assumption--so in practice, usage of this hook tends to result in bugs * like unintentionally capturing the first value of a prop and not respecting updates (when * updates should be respected). */ export declare function useConstCallback any>(callback: T): T; /** * Hook to manage a value that could be either controlled or uncontrolled, such as a checked state or * text box string. * @param controlledValue - The controlled value passed in the props. This value will always be used if provided, * and the internal state will be updated to reflect it. * @param defaultUncontrolledValue - Initial value for the internal state in the uncontrolled case. * @returns An array of the current value and an updater callback. Like `React.useState`, the updater * callback always has the same identity, and it can take either a new value, or a function which * is passed the previous value and returns the new value. * @see https://reactjs.org/docs/uncontrolled-components.html */ export declare function useControllableValue(controlledValue: TValue | undefined, defaultUncontrolledValue: TValue | undefined): Readonly<[TValue | undefined, (update: React_2.SetStateAction) => void]>; export declare function useControllableValue | undefined>(controlledValue: TValue | undefined, defaultUncontrolledValue: TValue | undefined, onChange: ChangeCallback | undefined): Readonly<[ TValue | undefined, (update: React_2.SetStateAction, ev?: React_2.FormEvent) => void ]>; /** * Modified `useCallback` that returns the same function reference every time, but internally calls * the most-recently passed callback implementation. Can be useful in situations such as: * - Event handler dependencies change too frequently, such as user props which might change on * every render, or volatile values such as useState/useDispatch * - Callback must be referenced in a captured context (such as a window event handler or unmount * handler that's registered once) but needs access to the latest props * * In general, prefer `useCallback` unless you've encountered one of the problems above. * * https://reactjs.org/docs/hooks-faq.html#how-to-read-an-often-changing-value-from-usecallback * * @param fn - The callback function that will be used * @returns A function which is referentially stable but internally calls the most recently passed callback */ export declare function useEventCallback(fn: (...args: Args) => Return): (...args: Args) => Return; /** * Hook to force update a function component by updating a dummy state. */ export declare function useForceUpdate(): () => void; /** * Hook to generate a unique ID in the global scope (spanning across duplicate copies of the same library). * * @param prefix - Optional prefix for the ID * @param providedId - Optional id provided by a parent component. Defaults to the provided value if present, * without conditioning the hook call * @returns The ID */ export declare function useId(prefix?: string, providedId?: string): string; export { useIsomorphicLayoutEffect } /** * React hook to merge multiple React refs (either MutableRefObjects or ref callbacks) into a single ref callback that * updates all provided refs * @param refs - Refs to collectively update with one ref value. * @returns A function with an attached "current" prop, so that it can be treated like a RefObject. */ export declare function useMergedRefs(...refs: (React_2.Ref | undefined)[]): RefObjectFunction; /** * Hook which asynchronously executes a callback once the component has been mounted. * * @param callback - Function to call before mount. */ export declare const useMount: (callback: () => void) => void; /** * Hook which synchronously executes a callback once the component has been mounted. * * `WARNING` This should only be used if you need to perform an action after the component has been mounted and * before the browser paints. useMountSync will trigger debug warnings in server-rendered scenarios and should be used * sparingly. * * @deprecated Consider to use React.useEffect() or React.useLayoutEffect() directly based on a use case * * @param callback - Function to call once the component has been mounted. */ export declare const useMountSync: (callback: () => void) => void; /** * Hook to attach an event handler on mount and handle cleanup. * @param element - Element (or ref to an element) to attach the event handler to * @param eventName - The event to attach a handler for * @param callback - The handler for the event * @param useCapture - Whether or not to attach the handler for the capture phase */ export declare function useOnEvent(element: React_2.RefObject | TElement | Window | Document | undefined | null, eventName: string, callback: (ev: TEvent) => void, useCapture?: boolean): void; /** * Hook keeping track of a given value from a previous execution of the component the Hook is used in. * * See [React Hooks FAQ](https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state) */ export declare function usePrevious(value: T): T | undefined; /** * Creates a ref, and calls a callback whenever the ref changes to a non-null value. The callback can optionally return * a cleanup function that'll be called before the value changes, and when the ref is unmounted. * * This can be used to work around a limitation that useEffect cannot depend on `ref.current` (see * https://github.com/facebook/react/issues/14387#issuecomment-503616820). * * Usage example: * ```ts * const myRef = useRefEffect(element => { * ... * return () => { ... cleanup ... }; * }); * ``` * ```jsx *

* ``` * * @param callback - Called whenever the ref's value changes to non-null. Can optionally return a cleanup function. * @param initial - (Optional) The initial value for the ref. * * @returns A function that should be called to set the ref's value. The object also has a `.current` member that can be * used to access the ref's value (like a normal RefObject). It can be hooked up to an element's `ref` property. */ export declare function useRefEffect(callback: (value: T) => (() => void) | void, initial?: T | null): RefCallback; /** * Returns a wrapper function for `setInterval` which automatically handles disposal. */ export declare const useSetInterval: () => UseSetIntervalReturnType; export declare type UseSetIntervalReturnType = { setInterval: (callback: () => void, duration: number) => number; clearInterval: (id: number) => void; }; /** * Returns a wrapper function for `setTimeout` which automatically handles disposal. */ export declare const useSetTimeout: () => UseSetTimeoutReturnType; export declare type UseSetTimeoutReturnType = { setTimeout: (callback: () => void, duration: number) => number; clearTimeout: (id: number) => void; }; /** * Hook to calculate and cache the target element specified by the given target attribute, * as well as the target element's (or host element's) parent window * @param target- Target selector passed to the component as a property, describing the element that * the callout should target * @param hostElement- The callout's host element, used for determining the parent window. */ export declare function useTarget(target: Target | undefined, hostElement?: React_2.RefObject): Readonly<[React_2.RefObject, Window | undefined]>; /** * Hook which synchronously executes a callback when the component is about to unmount. * * @param callback - Function to call during unmount. */ export declare const useUnmount: (callback: () => void) => void; /** * Only in development mode, display console warnings when certain conditions are met. * Note that all warnings except `controlledUsage` will only be shown on first render * (new `controlledUsage` warnings may be shown later due to prop changes). */ export declare function useWarnings

(options: IWarningOptions

): void; export { }