import * as solid_js from 'solid-js'; import { MaybeAccessor } from '@solidjs-use/shared'; import { PointerType, Position } from '../types.js'; import '../_configurable.js'; interface UseDraggableOptions { /** * Only start the dragging when click on the element directly * * @default false */ exact?: MaybeAccessor; /** * Prevent events defaults * * @default false */ preventDefault?: MaybeAccessor; /** * Prevent events propagation * * @default false */ stopPropagation?: MaybeAccessor; /** * Element to attach `pointermove` and `pointerup` events to. * * @default window */ draggingElement?: MaybeAccessor; /** * Handle that triggers the drag event * * @default target */ handle?: MaybeAccessor; /** * Pointer types that listen to. * * @default ['mouse', 'touch', 'pen'] */ pointerTypes?: PointerType[]; /** * Initial position of the element. * * @default { x: 0, y: 0 } */ initialValue?: MaybeAccessor; /** * Callback when the dragging starts. Return `false` to prevent dragging. */ onStart?: (position: Position, event: PointerEvent) => void | false; /** * Callback during dragging. */ onMove?: (position: Position, event: PointerEvent) => void; /** * Callback when dragging end. */ onEnd?: (position: Position, event: PointerEvent) => void; } /** * Make elements draggable. * * @see https://solidjs-use.github.io/solidjs-use/core/useDraggable */ declare function useDraggable(target: MaybeAccessor, options?: UseDraggableOptions): { x: () => number; y: () => number; position: { value: Position; }; isDragging: solid_js.Accessor; style: solid_js.Accessor<{ left: string; top: string; }>; }; type UseDraggableReturn = ReturnType; export { UseDraggableOptions, UseDraggableReturn, useDraggable };