/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2026 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ import * as React from 'react'; /** * Options for the useKendoPaste hook. */ export interface UseKendoPasteOptions { /** * The field name to listen for in the smart paste event. * This is typically the component's `name` or `id` prop. * When the event contains a value for this field, the onValueChange callback is called. * * If undefined or empty, the hook will not subscribe to events. */ fieldName?: string; /** * Callback fired when a value is received for this field from the smart paste event. * * @param value - The new value from the smart paste event */ onValueChange: (value: any) => void; /** * Whether the smart paste subscription is enabled. * When false, the hook will not listen for smart paste events. * * @default true */ enabled?: boolean; } /** * Options for subscribing to smart paste events in class components. */ export interface KendoPasteSubscriptionOptions { /** * The field name to listen for in the smart paste event. */ fieldName?: string; /** * Callback fired when a value is received for this field from the smart paste event. */ onValueChange: (value: any) => void; } /** * Result of subscribing to smart paste events, used to unsubscribe later. */ export interface KendoPasteSubscription { /** * Unsubscribe from smart paste events. * Call this in componentWillUnmount to clean up the event listener. */ unsubscribe: () => void; } /** * Subscribe to smart paste events for class components. * Call this in componentDidMount and store the result. * Call unsubscribe() in componentWillUnmount. * * @param element - The DOM element to use for finding the event target * @param options - Configuration options for the smart paste subscription * @returns A subscription object with an unsubscribe method * * @example * ```tsx * class MyComponent extends React.Component { * private KendoPasteSubscription?: KendoPasteSubscription; * * componentDidMount() { * this.KendoPasteSubscription = subscribeToKendoPaste(this.element, { * fieldName: this.props.name, * onValueChange: (value) => this.handleSmartPasteValue(value) * }); * } * * componentWillUnmount() { * this.KendoPasteSubscription?.unsubscribe(); * } * } * ``` */ export declare function subscribeToKendoPaste(element: Element | null | undefined, options: KendoPasteSubscriptionOptions): KendoPasteSubscription; /** * A React hook that subscribes a component to smart paste events. * When a SmartPasteButton dispatches a populate event, this hook will * call the onValueChange callback if the event contains a value for the specified field. * * The field is identified by the `name` or `id` prop of the component. * Works with both KendoReact Form components and native HTML form elements. * * @param elementRef - A ref to the DOM element that will be used to find the event target * @param options - Configuration options for the smart paste subscription * * @example * ```tsx * const inputRef = React.useRef(null); * const [value, setValue] = React.useState(''); * * // Using name prop as field identifier * useKendoPaste(inputRef, { * fieldName: 'firstName', // matches the name prop * onValueChange: (newValue) => setValue(newValue) * }); * * return setValue(e.target.value)} />; * ``` */ export declare function useKendoPaste(elementRef: React.RefObject, options: UseKendoPasteOptions): void;