import { Base } from '@studiometa/js-toolkit'; import type { BaseProps, BaseConfig, DragServiceProps } from '@studiometa/js-toolkit'; export interface DraggableProps extends BaseProps { $refs: { target: HTMLElement; }; $options: { x: boolean; y: boolean; fitBounds: boolean; strictFitBounds: boolean; sensitivity: number; dropSensitivity: number; margin: string; }; } declare const Draggable_base: import("@studiometa/js-toolkit").BaseDecorator>; /** * Draggable class. * @link https://ui.studiometa.dev/components/Draggable/ */ export declare class Draggable extends Draggable_base { /** * Config. */ static config: BaseConfig; /** * Props for the target position. */ props: { x: number; y: number; progressX: number; progressY: number; originX: number; originY: number; dampedX: number; dampedY: number; }; /** * Smooth factor. */ dampFactor: number; /** * The draggable element, defaults to `this.$refs.target`. */ get target(): HTMLElement; /** * The bouding element, defaults to `this.$el`. */ get parent(): HTMLElement; /** * Draggable area bounds. * @private Use the `bounds` getter instead. */ __bounds: { yMin: number; yMax: number; xMin: number; xMax: number; }; /** * Cached margin values. * @private */ __margin: { top: number; right: number; bottom: number; left: number; }; /** * Cached margin option for invalidation. * @private */ __marginOption: string; /** * Offset from the bounds. */ get margin(): { top: number; right: number; bottom: number; left: number; }; /** * Draggable area bounds. */ get bounds(): { yMin: number; yMax: number; xMin: number; xMax: number; }; /** * Resized hook. * Reset bounds on resize. */ resized(): void; /** * Drag service hook. */ dragged(props: DragServiceProps): void; ticked(): void; render(): void; } export {};