pointrix 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +971 -0
  3. package/dist/pointrix-drag.cjs +1 -0
  4. package/dist/pointrix-drag.d.cts +189 -0
  5. package/dist/pointrix-drag.d.mts +189 -0
  6. package/dist/pointrix-drag.mjs +2 -0
  7. package/dist/pointrix-dropzone.cjs +1 -0
  8. package/dist/pointrix-dropzone.d.cts +99 -0
  9. package/dist/pointrix-dropzone.d.mts +99 -0
  10. package/dist/pointrix-dropzone.mjs +2 -0
  11. package/dist/pointrix-gesture.cjs +1 -0
  12. package/dist/pointrix-gesture.d.cts +119 -0
  13. package/dist/pointrix-gesture.d.mts +119 -0
  14. package/dist/pointrix-gesture.mjs +2 -0
  15. package/dist/pointrix-modifiers.cjs +1 -0
  16. package/dist/pointrix-modifiers.d.cts +334 -0
  17. package/dist/pointrix-modifiers.d.mts +334 -0
  18. package/dist/pointrix-modifiers.mjs +2 -0
  19. package/dist/pointrix-nano.cjs +1 -0
  20. package/dist/pointrix-nano.d.cts +82 -0
  21. package/dist/pointrix-nano.d.mts +82 -0
  22. package/dist/pointrix-nano.mjs +2 -0
  23. package/dist/pointrix-react.cjs +1 -0
  24. package/dist/pointrix-react.d.cts +537 -0
  25. package/dist/pointrix-react.d.mts +537 -0
  26. package/dist/pointrix-react.mjs +2 -0
  27. package/dist/pointrix-resize.cjs +1 -0
  28. package/dist/pointrix-resize.d.cts +193 -0
  29. package/dist/pointrix-resize.d.mts +193 -0
  30. package/dist/pointrix-resize.mjs +2 -0
  31. package/dist/pointrix-sortable.cjs +1 -0
  32. package/dist/pointrix-sortable.d.cts +89 -0
  33. package/dist/pointrix-sortable.d.mts +89 -0
  34. package/dist/pointrix-sortable.mjs +2 -0
  35. package/dist/pointrix-vue.cjs +1 -0
  36. package/dist/pointrix-vue.d.cts +485 -0
  37. package/dist/pointrix-vue.d.mts +485 -0
  38. package/dist/pointrix-vue.mjs +2 -0
  39. package/dist/pointrix.cjs +1 -0
  40. package/dist/pointrix.d.cts +784 -0
  41. package/dist/pointrix.d.mts +784 -0
  42. package/dist/pointrix.mjs +2 -0
  43. package/package.json +144 -0
@@ -0,0 +1,784 @@
1
+ //#region src/nano.d.ts
2
+ interface Point {
3
+ x: number;
4
+ y: number;
5
+ }
6
+ interface PointerState {
7
+ id: number;
8
+ start: Point;
9
+ current: Point;
10
+ previous: Point;
11
+ delta: Point;
12
+ total: Point;
13
+ velocity: Point;
14
+ timestamp: number;
15
+ }
16
+ interface InteractionEvent {
17
+ target: HTMLElement;
18
+ pointers: PointerState[];
19
+ isPrimary: boolean;
20
+ originalEvent: PointerEvent;
21
+ }
22
+ interface GripOptions {
23
+ onStart?: (event: InteractionEvent) => void;
24
+ onMove?: (event: InteractionEvent) => void;
25
+ onEnd?: (event: InteractionEvent) => void;
26
+ onTap?: (event: InteractionEvent) => void;
27
+ onDoubleTap?: (event: InteractionEvent) => void;
28
+ onHold?: (event: InteractionEvent) => void;
29
+ threshold?: number;
30
+ preventScroll?: boolean;
31
+ holdDelay?: number;
32
+ holdDuration?: number;
33
+ mouseButtons?: number;
34
+ allowFrom?: string;
35
+ ignoreFrom?: string;
36
+ touchAction?: string;
37
+ styleCursor?: boolean;
38
+ }
39
+ declare class Grip {
40
+ protected element: HTMLElement;
41
+ protected options: GripOptions;
42
+ protected pointers: Map<number, PointerState>;
43
+ private pointersCache;
44
+ protected isActive: boolean;
45
+ protected lastUpdate: number;
46
+ protected priority: number;
47
+ private _enabled;
48
+ private holdTimer;
49
+ private holdEventTimer;
50
+ private lastTapTime;
51
+ private lastTapTarget;
52
+ private listeners;
53
+ on(event: string, handler: Function): this;
54
+ off(event: string, handler: Function): this;
55
+ protected emit(event: string, data: any): void;
56
+ get enabled(): boolean;
57
+ set enabled(value: boolean);
58
+ get interacting(): boolean;
59
+ private static elementInstances;
60
+ private static activeInstance;
61
+ private static elementListeners;
62
+ constructor(element: HTMLElement, options?: GripOptions);
63
+ private registerInstance;
64
+ private unregisterInstance;
65
+ protected shouldHandleEvent(_e: PointerEvent): boolean;
66
+ private checkEventFilters;
67
+ private static handleElementPointerDown;
68
+ private onPointerDown;
69
+ private handlePointerDown;
70
+ private onPointerMove;
71
+ private onPointerUp;
72
+ private start;
73
+ private end;
74
+ update(): void;
75
+ hasActivePointers(): boolean;
76
+ private createEvent;
77
+ destroy(): void;
78
+ }
79
+ declare function grip(element: HTMLElement | string, options?: GripOptions): Grip;
80
+ //#endregion
81
+ //#region src/types.d.ts
82
+ interface Point$2 {
83
+ x: number;
84
+ y: number;
85
+ }
86
+ interface Rect {
87
+ x: number;
88
+ y: number;
89
+ width: number;
90
+ height: number;
91
+ }
92
+ interface ActiveEdges {
93
+ top: boolean;
94
+ right: boolean;
95
+ bottom: boolean;
96
+ left: boolean;
97
+ }
98
+ interface ModifierContext {
99
+ position: Point$2;
100
+ velocity: Point$2;
101
+ element: HTMLElement;
102
+ startPosition: Point$2;
103
+ delta: Point$2;
104
+ edges?: ActiveEdges;
105
+ size?: {
106
+ width: number;
107
+ height: number;
108
+ };
109
+ startSize?: {
110
+ width: number;
111
+ height: number;
112
+ };
113
+ }
114
+ interface ModifierResult {
115
+ position: Point$2;
116
+ velocity: Point$2;
117
+ size?: {
118
+ width: number;
119
+ height: number;
120
+ };
121
+ }
122
+ interface Modifier {
123
+ name: string;
124
+ onStart?(context: ModifierContext): void;
125
+ modify(context: ModifierContext): ModifierResult;
126
+ onEnd?(context: ModifierContext): ModifierResult | void;
127
+ }
128
+ declare function applyModifiers(modifiers: Modifier[], context: ModifierContext): ModifierResult;
129
+ //#endregion
130
+ //#region src/drag.d.ts
131
+ interface DragOptions extends GripOptions {
132
+ /** Enable ARIA attributes for accessibility (default: true) */
133
+ aria?: boolean;
134
+ axis?: 'x' | 'y' | 'xy' | 'start';
135
+ startAxis?: 'x' | 'y';
136
+ handle?: string | HTMLElement;
137
+ bounds?: 'parent' | HTMLElement | {
138
+ left?: number;
139
+ top?: number;
140
+ right?: number;
141
+ bottom?: number;
142
+ };
143
+ grid?: {
144
+ x: number;
145
+ y: number;
146
+ };
147
+ momentum?: boolean | {
148
+ friction?: number;
149
+ minSpeed?: number;
150
+ };
151
+ modifiers?: Modifier[];
152
+ droppable?: boolean;
153
+ cursorChecker?: (action: 'idle' | 'grab' | 'grabbing') => string;
154
+ onDragStart?: (event: DragEvent) => void;
155
+ onDragMove?: (event: DragEvent) => void;
156
+ onDragEnd?: (event: DragEvent) => void;
157
+ }
158
+ interface DragEvent extends InteractionEvent {
159
+ dx: number;
160
+ dy: number;
161
+ totalX: number;
162
+ totalY: number;
163
+ velocityX: number;
164
+ velocityY: number;
165
+ }
166
+ declare class Draggable extends Grip {
167
+ private dragOptions;
168
+ private transform;
169
+ private startTransform;
170
+ private bounds;
171
+ private momentum;
172
+ private transformNormalized;
173
+ private detectedAxis;
174
+ private startAxisConfirmed;
175
+ private cachedSize;
176
+ private modifierContext;
177
+ private cachedDragEvent;
178
+ constructor(element: HTMLElement, options?: DragOptions);
179
+ protected shouldHandleEvent(e: PointerEvent): boolean;
180
+ private readCurrentTransform;
181
+ private handleDragStart;
182
+ private handleDragMove;
183
+ private handleDragEnd;
184
+ private startMomentum;
185
+ private applyTransform;
186
+ private createDragEvent;
187
+ setPosition(x: number, y: number): void;
188
+ getPosition(): {
189
+ x: number;
190
+ y: number;
191
+ };
192
+ destroy(): void;
193
+ }
194
+ declare function draggable(element: HTMLElement | string, options?: DragOptions): Draggable;
195
+ //#endregion
196
+ //#region src/resize.d.ts
197
+ interface ResizeOptions extends GripOptions {
198
+ edges?: {
199
+ top?: boolean;
200
+ right?: boolean;
201
+ bottom?: boolean;
202
+ left?: boolean;
203
+ };
204
+ handleSize?: number;
205
+ minWidth?: number;
206
+ minHeight?: number;
207
+ maxWidth?: number;
208
+ maxHeight?: number;
209
+ aspectRatio?: number | 'preserve';
210
+ square?: boolean;
211
+ invert?: 'none' | 'negate' | 'reposition';
212
+ grid?: {
213
+ width: number;
214
+ height: number;
215
+ };
216
+ modifiers?: Modifier[];
217
+ cursorChecker?: (edge: string | null) => string;
218
+ onResizeStart?: (event: ResizeEvent) => void;
219
+ onResizeMove?: (event: ResizeEvent) => void;
220
+ onResizeEnd?: (event: ResizeEvent) => void;
221
+ }
222
+ interface ResizeEvent extends InteractionEvent {
223
+ width: number;
224
+ height: number;
225
+ deltaWidth: number;
226
+ deltaHeight: number;
227
+ edges: {
228
+ top: boolean;
229
+ right: boolean;
230
+ bottom: boolean;
231
+ left: boolean;
232
+ };
233
+ }
234
+ declare class Resizable extends Grip {
235
+ private resizeOptions;
236
+ private startSize;
237
+ private startPos;
238
+ private currentSize;
239
+ private currentPos;
240
+ private activeEdge;
241
+ private edgeFlags;
242
+ private aspectRatio;
243
+ private boundUpdateCursor;
244
+ private transformNormalized;
245
+ private modifierContext;
246
+ private cachedResizeEvent;
247
+ constructor(element: HTMLElement, options?: ResizeOptions);
248
+ private normalizeInitialTransform;
249
+ protected shouldHandleEvent(e: PointerEvent): boolean;
250
+ private updateCursor;
251
+ private detectEdge;
252
+ private getCursor;
253
+ private handleResizeStart;
254
+ private handleResizeMove;
255
+ private handleResizeEnd;
256
+ private createResizeEvent;
257
+ setSize(width: number, height: number): void;
258
+ getSize(): {
259
+ width: number;
260
+ height: number;
261
+ };
262
+ destroy(): void;
263
+ }
264
+ declare function resizable(element: HTMLElement | string, options?: ResizeOptions): Resizable;
265
+ //#endregion
266
+ //#region src/gesture.d.ts
267
+ interface GestureEvent extends InteractionEvent {
268
+ scale: number;
269
+ rotation: number;
270
+ distance: number;
271
+ angle: number;
272
+ center: Point;
273
+ deltaScale: number;
274
+ deltaAngle: number;
275
+ }
276
+ interface GestureOptions extends GripOptions {
277
+ minPointers?: number;
278
+ onGestureStart?: (event: GestureEvent) => void;
279
+ onGestureMove?: (event: GestureEvent) => void;
280
+ onGestureEnd?: (event: GestureEvent) => void;
281
+ }
282
+ declare class Gesturable extends Grip {
283
+ private gestureOptions;
284
+ private gestureActive;
285
+ private startDistance;
286
+ private startAngle;
287
+ private prevScale;
288
+ private prevAngle;
289
+ private minPointers;
290
+ constructor(element: HTMLElement, options?: GestureOptions);
291
+ protected shouldHandleEvent(_e: PointerEvent): boolean;
292
+ private getTwoPointers;
293
+ private computeDistance;
294
+ private computeAngle;
295
+ private computeCenter;
296
+ private normalizeAngleDelta;
297
+ private createGestureEvent;
298
+ update(): void;
299
+ private endGesture;
300
+ destroy(): void;
301
+ }
302
+ declare function gesturable(element: HTMLElement | string, options?: GestureOptions): Gesturable;
303
+ //#endregion
304
+ //#region src/dropzone.d.ts
305
+ interface DropEvent {
306
+ target: HTMLElement;
307
+ draggable: HTMLElement;
308
+ dragEvent?: DragEvent;
309
+ overlap: number;
310
+ }
311
+ interface DropzoneOptions {
312
+ accept?: string | ((draggable: HTMLElement) => boolean);
313
+ overlap?: 'pointer' | 'center' | number;
314
+ activeClass?: string;
315
+ hoverClass?: string;
316
+ /** Enable ARIA attributes (default: true) */
317
+ aria?: boolean;
318
+ onActivate?: (event: DropEvent) => void;
319
+ onDeactivate?: (event: DropEvent) => void;
320
+ onDragEnter?: (event: DropEvent) => void;
321
+ onDragLeave?: (event: DropEvent) => void;
322
+ onDragOver?: (event: DropEvent) => void;
323
+ onDrop?: (event: DropEvent) => void;
324
+ }
325
+ interface Point$1 {
326
+ x: number;
327
+ y: number;
328
+ }
329
+ declare class Dropzone {
330
+ readonly element: HTMLElement;
331
+ private options;
332
+ private _isOver;
333
+ private _isActive;
334
+ private _enabled;
335
+ private listeners;
336
+ on(event: string, handler: Function): this;
337
+ off(event: string, handler: Function): this;
338
+ private emit;
339
+ get enabled(): boolean;
340
+ set enabled(value: boolean);
341
+ constructor(element: HTMLElement, options?: DropzoneOptions);
342
+ get isOver(): boolean;
343
+ get isActive(): boolean;
344
+ accepts(draggableEl: HTMLElement): boolean;
345
+ checkOverlap(draggableEl: HTMLElement, pointerPos: Point$1): number;
346
+ activate(draggableEl: HTMLElement): void;
347
+ deactivate(draggableEl: HTMLElement): void;
348
+ enter(draggableEl: HTMLElement, overlap: number, dragEvent?: DragEvent): void;
349
+ leave(draggableEl: HTMLElement, dragEvent?: DragEvent): void;
350
+ over(draggableEl: HTMLElement, overlap: number, dragEvent?: DragEvent): void;
351
+ drop(draggableEl: HTMLElement, overlap: number, dragEvent?: DragEvent): void;
352
+ private createEvent;
353
+ updateOptions(options: Partial<DropzoneOptions>): void;
354
+ destroy(): void;
355
+ }
356
+ declare class DropzoneManagerSingleton {
357
+ private zones;
358
+ register(zone: Dropzone): void;
359
+ unregister(zone: Dropzone): void;
360
+ onDragStart(draggableEl: HTMLElement): void;
361
+ onDragMove(draggableEl: HTMLElement, pointerPos: Point$1, dragEvent?: DragEvent): void;
362
+ onDragEnd(draggableEl: HTMLElement, pointerPos: Point$1, dragEvent?: DragEvent): void;
363
+ getActiveZones(): Dropzone[];
364
+ getHoveredZones(): Dropzone[];
365
+ }
366
+ declare const DropzoneManager: DropzoneManagerSingleton;
367
+ declare function dropzone(element: HTMLElement | string, options?: DropzoneOptions): Dropzone;
368
+ //#endregion
369
+ //#region src/sortable.d.ts
370
+ interface SortableOptions {
371
+ /** Enable ARIA attributes for accessibility (default: true) */
372
+ aria?: boolean;
373
+ /** CSS selector for draggable items within the container (default: direct children) */
374
+ items?: string;
375
+ /** Axis of sorting: 'y' for vertical lists, 'x' for horizontal (default: 'y') */
376
+ axis?: 'x' | 'y';
377
+ /** CSS selector for drag handle within each item (optional) */
378
+ handle?: string;
379
+ /** Animation duration in ms for items shifting out of the way (default: 200) */
380
+ animationDuration?: number;
381
+ /** CSS class added to the item being dragged */
382
+ dragClass?: string;
383
+ /** CSS class added to a container when a grouped item hovers over it */
384
+ hoverClass?: string;
385
+ /**
386
+ * Group name — sortables with the same group can exchange items.
387
+ * Items can be dragged between any sortables sharing the same group name.
388
+ */
389
+ group?: string;
390
+ /** Called when order changes during drag (within same container) */
391
+ onSort?: (event: SortEvent) => void;
392
+ /** Called when drag ends and order is finalized */
393
+ onSortEnd?: (event: SortEvent) => void;
394
+ /** Called when an item is added from another sortable */
395
+ onAdd?: (event: SortTransferEvent) => void;
396
+ /** Called when an item is removed to another sortable */
397
+ onRemove?: (event: SortTransferEvent) => void;
398
+ }
399
+ interface SortEvent {
400
+ item: HTMLElement;
401
+ oldIndex: number;
402
+ newIndex: number;
403
+ items: HTMLElement[];
404
+ }
405
+ interface SortTransferEvent {
406
+ item: HTMLElement;
407
+ from: Sortable;
408
+ to: Sortable;
409
+ oldIndex: number;
410
+ newIndex: number;
411
+ }
412
+ declare class Sortable {
413
+ readonly container: HTMLElement;
414
+ private options;
415
+ private draggables;
416
+ private itemStates;
417
+ private dragItem;
418
+ private dragIndex;
419
+ private currentIndex;
420
+ private targetSortable;
421
+ private targetIndex;
422
+ private placeholder;
423
+ private _enabled;
424
+ private listeners;
425
+ on(event: string, handler: Function): this;
426
+ off(event: string, handler: Function): this;
427
+ private emit;
428
+ get enabled(): boolean;
429
+ set enabled(value: boolean);
430
+ constructor(container: HTMLElement, options?: SortableOptions);
431
+ getItems(): HTMLElement[];
432
+ private setup;
433
+ private handleDragStart;
434
+ private handleDragMove;
435
+ private updateWithinIndex;
436
+ private findTargetContainer;
437
+ private setTargetSortable;
438
+ private clearTargetSortable;
439
+ private updatePlaceholder;
440
+ private removePlaceholder;
441
+ private handleDragEnd;
442
+ snapshotItems(): void;
443
+ private animateItems;
444
+ private reorderDOM;
445
+ /** Refresh the sortable (e.g., after dynamically adding/removing items) */
446
+ refresh(): void;
447
+ /** Get the current order of items */
448
+ getOrder(): HTMLElement[];
449
+ /** Programmatically move an item */
450
+ move(fromIndex: number, toIndex: number): void;
451
+ private teardown;
452
+ destroy(): void;
453
+ }
454
+ declare function sortable(container: HTMLElement | string, options?: SortableOptions): Sortable;
455
+ //#endregion
456
+ //#region src/modifiers/restrict.d.ts
457
+ interface RestrictOptions {
458
+ bounds?: 'parent' | HTMLElement | {
459
+ left?: number;
460
+ top?: number;
461
+ right?: number;
462
+ bottom?: number;
463
+ };
464
+ elementRect?: {
465
+ left: number;
466
+ top: number;
467
+ right: number;
468
+ bottom: number;
469
+ };
470
+ endOnly?: boolean;
471
+ }
472
+ declare class RestrictModifier implements Modifier {
473
+ name: string;
474
+ private options;
475
+ private transformBounds;
476
+ constructor(options: RestrictOptions);
477
+ onStart(context: ModifierContext): void;
478
+ modify(context: ModifierContext): ModifierResult;
479
+ onEnd(context: ModifierContext): ModifierResult;
480
+ private resolveAndCache;
481
+ private applyRestriction;
482
+ private resolveTransformBounds;
483
+ }
484
+ declare function restrict(options: RestrictOptions): RestrictModifier;
485
+ //#endregion
486
+ //#region src/modifiers/snap-grid.d.ts
487
+ interface SnapGridOptions {
488
+ x: number;
489
+ y: number;
490
+ offset?: {
491
+ x: number;
492
+ y: number;
493
+ };
494
+ limits?: {
495
+ top?: number;
496
+ left?: number;
497
+ bottom?: number;
498
+ right?: number;
499
+ };
500
+ }
501
+ declare class SnapGridModifier implements Modifier {
502
+ name: string;
503
+ private options;
504
+ constructor(options: SnapGridOptions);
505
+ modify(context: ModifierContext): ModifierResult;
506
+ }
507
+ declare function snapGrid(options: SnapGridOptions): SnapGridModifier;
508
+ //#endregion
509
+ //#region src/modifiers/snap-targets.d.ts
510
+ interface SnapTarget {
511
+ /** X coordinate of the target */
512
+ x?: number;
513
+ /** Y coordinate of the target */
514
+ y?: number;
515
+ /** Snap range in pixels (default: global range) */
516
+ range?: number;
517
+ }
518
+ /** Preset pivot positions */
519
+ type PivotPreset = 'top-left' | 'top' | 'top-right' | 'left' | 'center' | 'right' | 'bottom-left' | 'bottom' | 'bottom-right';
520
+ interface SnapTargetsOptions {
521
+ /** Array of snap target positions */
522
+ targets: SnapTarget[];
523
+ /** Default snap range in pixels (default: 50) */
524
+ range?: number;
525
+ /**
526
+ * Pivot point(s) on the element to check for snapping.
527
+ * Accepts preset strings or {x,y} where 0-1 maps to element dimensions.
528
+ *
529
+ * Presets: 'top-left', 'top', 'top-right', 'left', 'center', 'right',
530
+ * 'bottom-left', 'bottom', 'bottom-right'
531
+ *
532
+ * Default: 'top-left'
533
+ */
534
+ relativePoints?: Array<PivotPreset | {
535
+ x: number;
536
+ y: number;
537
+ }>;
538
+ /**
539
+ * Coordinate mode:
540
+ * - 'offset' (default): targets are transform offsets
541
+ * - 'parent': targets are positions relative to the parent element's top-left
542
+ */
543
+ coordinateMode?: 'offset' | 'parent';
544
+ }
545
+ declare class SnapTargetsModifier implements Modifier {
546
+ name: string;
547
+ private options;
548
+ private parentOffset;
549
+ private _snappedTarget;
550
+ private _snappedIndex;
551
+ private resolvedPivots;
552
+ constructor(options: SnapTargetsOptions);
553
+ /** The target the element is currently snapped to, or null */
554
+ get snappedTarget(): SnapTarget | null;
555
+ /** The index of the snapped target in the targets array, or -1 */
556
+ get snappedIndex(): number;
557
+ /** Whether the element is currently snapped to any target */
558
+ get isSnapped(): boolean;
559
+ onStart(context: ModifierContext): void;
560
+ modify(context: ModifierContext): ModifierResult;
561
+ }
562
+ declare function snapTargets(options: SnapTargetsOptions): SnapTargetsModifier;
563
+ //#endregion
564
+ //#region src/modifiers/magnetic-snap.d.ts
565
+ interface MagneticTarget {
566
+ id: string;
567
+ x: number;
568
+ y: number;
569
+ width?: number;
570
+ height?: number;
571
+ strength?: number;
572
+ }
573
+ interface MagneticSnapOptions {
574
+ targets: MagneticTarget[];
575
+ distance?: number;
576
+ strength?: number;
577
+ onSnap?: (target: MagneticTarget) => void;
578
+ onUnsnap?: (target: MagneticTarget) => void;
579
+ }
580
+ declare class MagneticSnapModifier implements Modifier {
581
+ name: string;
582
+ private options;
583
+ private currentTarget;
584
+ private targetMap;
585
+ constructor(options: MagneticSnapOptions);
586
+ updateTargets(targets: MagneticTarget[]): void;
587
+ addTarget(target: MagneticTarget): void;
588
+ removeTarget(id: string): void;
589
+ modify(context: ModifierContext): ModifierResult;
590
+ private getDistance;
591
+ getCurrentTarget(): MagneticTarget | null;
592
+ isSnapped(): boolean;
593
+ }
594
+ declare function magneticSnap(options: MagneticSnapOptions): MagneticSnapModifier;
595
+ //#endregion
596
+ //#region src/modifiers/inertia.d.ts
597
+ interface InertiaOptions {
598
+ resistance?: number;
599
+ minSpeed?: number;
600
+ endSpeed?: number;
601
+ smoothEnd?: boolean;
602
+ smoothEndDuration?: number;
603
+ }
604
+ declare class InertiaModifier implements Modifier {
605
+ name: string;
606
+ private options;
607
+ private state;
608
+ constructor(options?: InertiaOptions);
609
+ onStart(): void;
610
+ modify(context: ModifierContext): ModifierResult;
611
+ onEnd(context: ModifierContext): ModifierResult | void;
612
+ private computeSmoothEnd;
613
+ isActive(): boolean;
614
+ }
615
+ declare function inertia(options?: InertiaOptions): InertiaModifier;
616
+ //#endregion
617
+ //#region src/modifiers/auto-scroll.d.ts
618
+ interface AutoScrollOptions {
619
+ container?: HTMLElement | Window;
620
+ speed?: number;
621
+ margin?: number;
622
+ acceleration?: number;
623
+ }
624
+ declare class AutoScrollModifier implements Modifier {
625
+ name: string;
626
+ private options;
627
+ private animationFrame;
628
+ private cachedContainer;
629
+ private cachedContainerRect;
630
+ constructor(options?: AutoScrollOptions);
631
+ onStart(context: ModifierContext): void;
632
+ modify(context: ModifierContext): ModifierResult;
633
+ onEnd(): void;
634
+ private resolveContainer;
635
+ private getContainerRect;
636
+ private performScroll;
637
+ }
638
+ declare function autoScroll(options?: AutoScrollOptions): AutoScrollModifier;
639
+ //#endregion
640
+ //#region src/modifiers/rubberband.d.ts
641
+ interface RubberbandOptions {
642
+ bounds: {
643
+ left?: number;
644
+ top?: number;
645
+ right?: number;
646
+ bottom?: number;
647
+ } | 'parent';
648
+ /** Resistance factor 0-1 (default: 0.15). Lower = more resistance. */
649
+ resistance?: number;
650
+ /** Max overshoot in pixels (default: 100) */
651
+ maxOvershoot?: number;
652
+ }
653
+ declare class RubberbandModifier implements Modifier {
654
+ name: string;
655
+ private options;
656
+ private transformBounds;
657
+ constructor(options: RubberbandOptions);
658
+ onStart(context: ModifierContext): void;
659
+ modify(context: ModifierContext): ModifierResult;
660
+ onEnd(context: ModifierContext): ModifierResult;
661
+ private resolveTransformBounds;
662
+ }
663
+ declare function rubberband(options: RubberbandOptions): RubberbandModifier;
664
+ //#endregion
665
+ //#region src/modifiers/restrict-size.d.ts
666
+ interface RestrictSizeOptions {
667
+ min?: {
668
+ width?: number;
669
+ height?: number;
670
+ };
671
+ max?: {
672
+ width?: number;
673
+ height?: number;
674
+ };
675
+ }
676
+ declare class RestrictSizeModifier implements Modifier {
677
+ name: string;
678
+ private options;
679
+ constructor(options: RestrictSizeOptions);
680
+ modify(context: ModifierContext): ModifierResult;
681
+ }
682
+ declare function restrictSize(options: RestrictSizeOptions): RestrictSizeModifier;
683
+ //#endregion
684
+ //#region src/modifiers/restrict-edges.d.ts
685
+ interface RestrictEdgesOptions {
686
+ /** Restriction bounds for each edge — edges can't go beyond these values */
687
+ outer?: {
688
+ left?: number;
689
+ top?: number;
690
+ right?: number;
691
+ bottom?: number;
692
+ };
693
+ /** Edges must stay within these values (can't pass toward center) */
694
+ inner?: {
695
+ left?: number;
696
+ top?: number;
697
+ right?: number;
698
+ bottom?: number;
699
+ };
700
+ }
701
+ declare class RestrictEdgesModifier implements Modifier {
702
+ name: string;
703
+ private options;
704
+ constructor(options: RestrictEdgesOptions);
705
+ modify(context: ModifierContext): ModifierResult;
706
+ }
707
+ declare function restrictEdges(options: RestrictEdgesOptions): RestrictEdgesModifier;
708
+ //#endregion
709
+ //#region src/modifiers/snap-size.d.ts
710
+ interface SnapSizeOptions {
711
+ width?: number;
712
+ height?: number;
713
+ offset?: {
714
+ width?: number;
715
+ height?: number;
716
+ };
717
+ }
718
+ declare class SnapSizeModifier implements Modifier {
719
+ name: string;
720
+ private options;
721
+ constructor(options: SnapSizeOptions);
722
+ modify(context: ModifierContext): ModifierResult;
723
+ }
724
+ declare function snapSize(options: SnapSizeOptions): SnapSizeModifier;
725
+ //#endregion
726
+ //#region src/modifiers/snap-edges.d.ts
727
+ interface SnapEdgeTarget {
728
+ left?: number;
729
+ top?: number;
730
+ right?: number;
731
+ bottom?: number;
732
+ range?: number;
733
+ }
734
+ interface SnapEdgesOptions {
735
+ targets: SnapEdgeTarget[];
736
+ range?: number;
737
+ }
738
+ declare class SnapEdgesModifier implements Modifier {
739
+ name: string;
740
+ private options;
741
+ constructor(options: SnapEdgesOptions);
742
+ modify(context: ModifierContext): ModifierResult;
743
+ }
744
+ declare function snapEdges(options: SnapEdgesOptions): SnapEdgesModifier;
745
+ //#endregion
746
+ //#region src/aria.d.ts
747
+ interface AriaMessages {
748
+ instructions: string;
749
+ pickedUp: (label: string, position: number, total: number) => string;
750
+ movedTo: (position: number, total: number) => string;
751
+ dropped: (label: string, position: number, total: number) => string;
752
+ dragPickedUp: string;
753
+ dragDropped: string;
754
+ }
755
+ /** Override announcement messages for i18n / localization */
756
+ declare function setMessages(custom: Partial<AriaMessages>): void;
757
+ /** Get current messages (for reading) */
758
+ declare function getMessages(): Readonly<AriaMessages>;
759
+ declare function announce(message: string): void;
760
+ //#endregion
761
+ //#region src/index.d.ts
762
+ interface InteractableOptions {
763
+ drag?: boolean | DragOptions;
764
+ resize?: boolean | ResizeOptions;
765
+ gesture?: boolean | GestureOptions;
766
+ }
767
+ declare function interactable(element: HTMLElement | string, options?: InteractableOptions): {
768
+ drag: Draggable | null;
769
+ resize: Resizable | null;
770
+ gesture: Gesturable | null;
771
+ destroy(): void;
772
+ };
773
+ declare function interactAll(selector: string, options?: InteractableOptions): {
774
+ instances: {
775
+ drag: Draggable | null;
776
+ resize: Resizable | null;
777
+ gesture: Gesturable | null;
778
+ destroy(): void;
779
+ }[];
780
+ destroy(): void;
781
+ };
782
+ //#endregion
783
+ export { type ActiveEdges, type AriaMessages, type DragEvent, type DragOptions, Draggable, type DropEvent, Dropzone, DropzoneManager, type DropzoneOptions, Gesturable, type GestureEvent, type GestureOptions, Grip, type GripOptions, InteractableOptions, type InteractionEvent, type Modifier, type ModifierContext, type ModifierResult, type Point, type PointerState, type Rect, Resizable, type ResizeEvent, type ResizeOptions, type SortEvent, type SortTransferEvent, Sortable, type SortableOptions, announce, applyModifiers, autoScroll, interactable as default, interactable, draggable, dropzone, gesturable, getMessages, grip, inertia, interactAll, magneticSnap, resizable, restrict, restrictEdges, restrictSize, rubberband, setMessages, snapEdges, snapGrid, snapSize, snapTargets, sortable };
784
+ //# sourceMappingURL=pointrix.d.cts.map