import * as React from 'react'; import type { EventSurfaceType, SchedulerEvent, SchedulerEventId, SchedulerEventOccurrence, SchedulerEventSide, SchedulerResourceId, TemporalSupportedObject } from "../../models/index.mjs"; /** * Pointer-based resize for calendar events. Unlike {@link useEventResizeHandler} (native * drag-and-drop, needs a long-press on touch), this responds to a plain touch + drag. * * Surface-agnostic: geometry comes from `getDateAtPointer` and surface semantics from * `surfaceType`/`getResizeSession`, so one hook drives any surface. */ export declare function useEventPointerResizeHandler(parameters: useEventPointerResizeHandler.Parameters): void; export declare namespace useEventPointerResizeHandler { /** * A resize gesture targeting an existing event. The resize is committed on pointer-up. */ interface ResizeSession { start: TemporalSupportedObject; end: TemporalSupportedObject; eventId: SchedulerEventId; occurrenceKey: string; originalOccurrence: SchedulerEventOccurrence; resourceId: SchedulerResourceId | null; } interface Parameters { /** * The ref to the resize handler root element. */ ref: React.RefObject; /** * The side of the event the handler resizes. */ side: SchedulerEventSide; /** * Whether the pointer-based resize is active. When `false`, no listeners are attached. */ enabled: boolean; /** * The surface the resized placeholder belongs to. */ surfaceType: EventSurfaceType; /** * Maps a pointer position to a precision-rounded date on the surface. Should be stable. */ getDateAtPointer: (input: { clientX: number; clientY: number; }) => TemporalSupportedObject | null; /** * Resolves the session to start on pointer-down, or `null` to ignore the gesture. Should be stable. */ getResizeSession: (input: { clientX: number; clientY: number; }) => ResizeSession | null; /** * Extra properties applied to the event when a resize of an existing event is committed. */ addPropertiesToResizedEvent?: () => Partial; /** * The resize granularity, in minutes: both the snap step and the minimum duration the event must * keep (intentionally coupled — see {@link clampResizedEventEdge}). * @default EVENT_DRAG_PRECISION_MINUTE */ precisionMinute?: number; } }