@tresjs/leches
Version:
Tasty GUI for Vue controls 🍰
117 lines (116 loc) • 3.11 kB
TypeScript
import { MaybeRefOrGetter } from '@vueuse/shared';
export declare const defaultWindow: (Window & typeof globalThis) | undefined;
export interface Position {
x: number;
y: number;
}
export interface RenderableComponent {
/**
* The element that the component should be rendered as
*
* @default 'div'
*/
as?: object | string;
}
export type PointerType = 'mouse' | 'touch' | 'pen';
export interface UseDraggableOptions {
/**
* Only start the dragging when click on the element directly
*
* @default false
*/
exact?: MaybeRefOrGetter<boolean>;
/**
* Prevent events defaults
*
* @default false
*/
preventDefault?: MaybeRefOrGetter<boolean>;
/**
* Prevent events propagation
*
* @default false
*/
stopPropagation?: MaybeRefOrGetter<boolean>;
/**
* Whether dispatch events in capturing phase
*
* @default true
*/
capture?: boolean;
/**
* Element to attach `pointermove` and `pointerup` events to.
*
* @default window
*/
draggingElement?: MaybeRefOrGetter<HTMLElement | SVGElement | Window | Document | null | undefined>;
/**
* Handle that triggers the drag event
*
* @default target
*/
handle?: MaybeRefOrGetter<HTMLElement | SVGElement | null | undefined>;
/**
* Pointer types that listen to.
*
* @default ['mouse', 'touch', 'pen']
*/
pointerTypes?: PointerType[];
/**
* Initial position of the element.
*
* @default { x: 0, y: 0 }
*/
initialValue?: MaybeRefOrGetter<Position>;
/**
* 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;
/**
* Axis to drag on.
*
* @default 'both'
*/
axis?: 'x' | 'y' | 'both';
}
/**
* Make elements draggable.
*
* @see https://vueuse.org/useDraggable
* @param target
* @param options
*/
export declare function useDraggable(target: MaybeRefOrGetter<HTMLElement | SVGElement | null | undefined>, options?: UseDraggableOptions): {
position: import('vue').Ref<{
x: number;
y: number;
}, Position | {
x: number;
y: number;
}>;
isDragging: import('vue').ComputedRef<boolean>;
style: import('vue').ComputedRef<string>;
x: import('vue').Ref<number, number>;
y: import('vue').Ref<number, number>;
} | {
position: import('vue').Ref<{
x: number;
y: number;
}, Position | {
x: number;
y: number;
}>;
isDragging: import('vue').ComputedRef<boolean>;
style: import('vue').ComputedRef<string>;
x: import('vue').Ref<number, number>;
y: import('vue').Ref<number, number>;
};
export type UseDraggableReturn = ReturnType<typeof useDraggable>;