@octane-xplat/dnd-kit 0.0.1 → 0.10.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.
@@ -0,0 +1,84 @@
1
+ import type { CollisionDetector, Data, UniqueIdentifier } from '@dnd-kit/abstract';
2
+ import type { PanEvent, ViewProps } from '@octane-xplat/ui';
3
+ export type DndId = UniqueIdentifier;
4
+ export interface DndItem {
5
+ id: DndId;
6
+ data: Data;
7
+ }
8
+ export interface DndSnapshot {
9
+ active: DndItem | null;
10
+ over: DndItem | null;
11
+ transform: {
12
+ x: number;
13
+ y: number;
14
+ };
15
+ isDragging: boolean;
16
+ }
17
+ export interface DragEvent extends DndSnapshot {
18
+ canceled: boolean;
19
+ }
20
+ /** Supply current viewport bounds and offsets; scrollTo must update offsetRef synchronously. */
21
+ export interface AutoScroll {
22
+ bounds(): {
23
+ x: number;
24
+ y: number;
25
+ width: number;
26
+ height: number;
27
+ } | null;
28
+ offsetRef: {
29
+ current: number;
30
+ };
31
+ maxOffset(): number;
32
+ scrollTo(offset: number): void;
33
+ axis?: 'x' | 'y';
34
+ threshold?: number;
35
+ speed?: number;
36
+ }
37
+ export interface DndContextProps {
38
+ children?: ViewProps['children'];
39
+ collisionDetection?: CollisionDetector;
40
+ autoScroll?: AutoScroll;
41
+ onDragStart?: (event: DragEvent) => void;
42
+ onDragMove?: (event: DragEvent) => void;
43
+ onDragOver?: (event: DragEvent) => void;
44
+ onDragEnd?: (event: DragEvent) => void;
45
+ onDragCancel?: (event: DragEvent) => void;
46
+ }
47
+ export interface DraggableOptions {
48
+ id: DndId;
49
+ data?: Data;
50
+ disabled?: boolean;
51
+ }
52
+ export interface DroppableOptions extends DraggableOptions {
53
+ accept?: (source: DndItem) => boolean;
54
+ }
55
+ export interface DraggableResult {
56
+ ref(element: any): void;
57
+ onPan(event: PanEvent): void;
58
+ isDragging: boolean;
59
+ transform: {
60
+ x: number;
61
+ y: number;
62
+ };
63
+ /** Spread into View with ref and onPan. */
64
+ style: NonNullable<ViewProps['style']>;
65
+ }
66
+ export interface DroppableResult {
67
+ ref(element: any): void;
68
+ isOver: boolean;
69
+ }
70
+ export interface SortableResult extends DraggableResult {
71
+ isOver: boolean;
72
+ }
73
+ export interface SortableContextProps {
74
+ items: readonly DndId[];
75
+ children?: ViewProps['children'];
76
+ }
77
+ export interface SortableListProps<T extends DndId = DndId> extends Omit<ViewProps, 'children'> {
78
+ items: readonly T[];
79
+ renderItem(id: T, index: number): ViewProps['children'];
80
+ /** Called after a successful drop within this list; caller owns the item order. */
81
+ onReorder(items: T[], event: DragEvent): void;
82
+ disabled?: boolean;
83
+ dnd?: Omit<DndContextProps, 'children'>;
84
+ }
@@ -0,0 +1,2 @@
1
+ /** Return a new order. Invalid indices leave the order unchanged. */
2
+ export declare function arrayMove<T>(items: readonly T[], from: number, to: number): T[];