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.
- package/LICENSE +21 -0
- package/README.md +971 -0
- package/dist/pointrix-drag.cjs +1 -0
- package/dist/pointrix-drag.d.cts +189 -0
- package/dist/pointrix-drag.d.mts +189 -0
- package/dist/pointrix-drag.mjs +2 -0
- package/dist/pointrix-dropzone.cjs +1 -0
- package/dist/pointrix-dropzone.d.cts +99 -0
- package/dist/pointrix-dropzone.d.mts +99 -0
- package/dist/pointrix-dropzone.mjs +2 -0
- package/dist/pointrix-gesture.cjs +1 -0
- package/dist/pointrix-gesture.d.cts +119 -0
- package/dist/pointrix-gesture.d.mts +119 -0
- package/dist/pointrix-gesture.mjs +2 -0
- package/dist/pointrix-modifiers.cjs +1 -0
- package/dist/pointrix-modifiers.d.cts +334 -0
- package/dist/pointrix-modifiers.d.mts +334 -0
- package/dist/pointrix-modifiers.mjs +2 -0
- package/dist/pointrix-nano.cjs +1 -0
- package/dist/pointrix-nano.d.cts +82 -0
- package/dist/pointrix-nano.d.mts +82 -0
- package/dist/pointrix-nano.mjs +2 -0
- package/dist/pointrix-react.cjs +1 -0
- package/dist/pointrix-react.d.cts +537 -0
- package/dist/pointrix-react.d.mts +537 -0
- package/dist/pointrix-react.mjs +2 -0
- package/dist/pointrix-resize.cjs +1 -0
- package/dist/pointrix-resize.d.cts +193 -0
- package/dist/pointrix-resize.d.mts +193 -0
- package/dist/pointrix-resize.mjs +2 -0
- package/dist/pointrix-sortable.cjs +1 -0
- package/dist/pointrix-sortable.d.cts +89 -0
- package/dist/pointrix-sortable.d.mts +89 -0
- package/dist/pointrix-sortable.mjs +2 -0
- package/dist/pointrix-vue.cjs +1 -0
- package/dist/pointrix-vue.d.cts +485 -0
- package/dist/pointrix-vue.d.mts +485 -0
- package/dist/pointrix-vue.mjs +2 -0
- package/dist/pointrix.cjs +1 -0
- package/dist/pointrix.d.cts +784 -0
- package/dist/pointrix.d.mts +784 -0
- package/dist/pointrix.mjs +2 -0
- package/package.json +144 -0
|
@@ -0,0 +1,537 @@
|
|
|
1
|
+
import React, { MutableRefObject } from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/nano.d.ts
|
|
4
|
+
interface Point$2 {
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
}
|
|
8
|
+
interface PointerState {
|
|
9
|
+
id: number;
|
|
10
|
+
start: Point$2;
|
|
11
|
+
current: Point$2;
|
|
12
|
+
previous: Point$2;
|
|
13
|
+
delta: Point$2;
|
|
14
|
+
total: Point$2;
|
|
15
|
+
velocity: Point$2;
|
|
16
|
+
timestamp: number;
|
|
17
|
+
}
|
|
18
|
+
interface InteractionEvent {
|
|
19
|
+
target: HTMLElement;
|
|
20
|
+
pointers: PointerState[];
|
|
21
|
+
isPrimary: boolean;
|
|
22
|
+
originalEvent: PointerEvent;
|
|
23
|
+
}
|
|
24
|
+
interface GripOptions {
|
|
25
|
+
onStart?: (event: InteractionEvent) => void;
|
|
26
|
+
onMove?: (event: InteractionEvent) => void;
|
|
27
|
+
onEnd?: (event: InteractionEvent) => void;
|
|
28
|
+
onTap?: (event: InteractionEvent) => void;
|
|
29
|
+
onDoubleTap?: (event: InteractionEvent) => void;
|
|
30
|
+
onHold?: (event: InteractionEvent) => void;
|
|
31
|
+
threshold?: number;
|
|
32
|
+
preventScroll?: boolean;
|
|
33
|
+
holdDelay?: number;
|
|
34
|
+
holdDuration?: number;
|
|
35
|
+
mouseButtons?: number;
|
|
36
|
+
allowFrom?: string;
|
|
37
|
+
ignoreFrom?: string;
|
|
38
|
+
touchAction?: string;
|
|
39
|
+
styleCursor?: boolean;
|
|
40
|
+
}
|
|
41
|
+
declare class Grip {
|
|
42
|
+
protected element: HTMLElement;
|
|
43
|
+
protected options: GripOptions;
|
|
44
|
+
protected pointers: Map<number, PointerState>;
|
|
45
|
+
private pointersCache;
|
|
46
|
+
protected isActive: boolean;
|
|
47
|
+
protected lastUpdate: number;
|
|
48
|
+
protected priority: number;
|
|
49
|
+
private _enabled;
|
|
50
|
+
private holdTimer;
|
|
51
|
+
private holdEventTimer;
|
|
52
|
+
private lastTapTime;
|
|
53
|
+
private lastTapTarget;
|
|
54
|
+
private listeners;
|
|
55
|
+
on(event: string, handler: Function): this;
|
|
56
|
+
off(event: string, handler: Function): this;
|
|
57
|
+
protected emit(event: string, data: any): void;
|
|
58
|
+
get enabled(): boolean;
|
|
59
|
+
set enabled(value: boolean);
|
|
60
|
+
get interacting(): boolean;
|
|
61
|
+
private static elementInstances;
|
|
62
|
+
private static activeInstance;
|
|
63
|
+
private static elementListeners;
|
|
64
|
+
constructor(element: HTMLElement, options?: GripOptions);
|
|
65
|
+
private registerInstance;
|
|
66
|
+
private unregisterInstance;
|
|
67
|
+
protected shouldHandleEvent(_e: PointerEvent): boolean;
|
|
68
|
+
private checkEventFilters;
|
|
69
|
+
private static handleElementPointerDown;
|
|
70
|
+
private onPointerDown;
|
|
71
|
+
private handlePointerDown;
|
|
72
|
+
private onPointerMove;
|
|
73
|
+
private onPointerUp;
|
|
74
|
+
private start;
|
|
75
|
+
private end;
|
|
76
|
+
update(): void;
|
|
77
|
+
hasActivePointers(): boolean;
|
|
78
|
+
private createEvent;
|
|
79
|
+
destroy(): void;
|
|
80
|
+
}
|
|
81
|
+
//#endregion
|
|
82
|
+
//#region src/types.d.ts
|
|
83
|
+
interface Point$1 {
|
|
84
|
+
x: number;
|
|
85
|
+
y: number;
|
|
86
|
+
}
|
|
87
|
+
interface ActiveEdges {
|
|
88
|
+
top: boolean;
|
|
89
|
+
right: boolean;
|
|
90
|
+
bottom: boolean;
|
|
91
|
+
left: boolean;
|
|
92
|
+
}
|
|
93
|
+
interface ModifierContext {
|
|
94
|
+
position: Point$1;
|
|
95
|
+
velocity: Point$1;
|
|
96
|
+
element: HTMLElement;
|
|
97
|
+
startPosition: Point$1;
|
|
98
|
+
delta: Point$1;
|
|
99
|
+
edges?: ActiveEdges;
|
|
100
|
+
size?: {
|
|
101
|
+
width: number;
|
|
102
|
+
height: number;
|
|
103
|
+
};
|
|
104
|
+
startSize?: {
|
|
105
|
+
width: number;
|
|
106
|
+
height: number;
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
interface ModifierResult {
|
|
110
|
+
position: Point$1;
|
|
111
|
+
velocity: Point$1;
|
|
112
|
+
size?: {
|
|
113
|
+
width: number;
|
|
114
|
+
height: number;
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
interface Modifier {
|
|
118
|
+
name: string;
|
|
119
|
+
onStart?(context: ModifierContext): void;
|
|
120
|
+
modify(context: ModifierContext): ModifierResult;
|
|
121
|
+
onEnd?(context: ModifierContext): ModifierResult | void;
|
|
122
|
+
}
|
|
123
|
+
//#endregion
|
|
124
|
+
//#region src/drag.d.ts
|
|
125
|
+
interface DragOptions extends GripOptions {
|
|
126
|
+
/** Enable ARIA attributes for accessibility (default: true) */
|
|
127
|
+
aria?: boolean;
|
|
128
|
+
axis?: 'x' | 'y' | 'xy' | 'start';
|
|
129
|
+
startAxis?: 'x' | 'y';
|
|
130
|
+
handle?: string | HTMLElement;
|
|
131
|
+
bounds?: 'parent' | HTMLElement | {
|
|
132
|
+
left?: number;
|
|
133
|
+
top?: number;
|
|
134
|
+
right?: number;
|
|
135
|
+
bottom?: number;
|
|
136
|
+
};
|
|
137
|
+
grid?: {
|
|
138
|
+
x: number;
|
|
139
|
+
y: number;
|
|
140
|
+
};
|
|
141
|
+
momentum?: boolean | {
|
|
142
|
+
friction?: number;
|
|
143
|
+
minSpeed?: number;
|
|
144
|
+
};
|
|
145
|
+
modifiers?: Modifier[];
|
|
146
|
+
droppable?: boolean;
|
|
147
|
+
cursorChecker?: (action: 'idle' | 'grab' | 'grabbing') => string;
|
|
148
|
+
onDragStart?: (event: DragEvent) => void;
|
|
149
|
+
onDragMove?: (event: DragEvent) => void;
|
|
150
|
+
onDragEnd?: (event: DragEvent) => void;
|
|
151
|
+
}
|
|
152
|
+
interface DragEvent extends InteractionEvent {
|
|
153
|
+
dx: number;
|
|
154
|
+
dy: number;
|
|
155
|
+
totalX: number;
|
|
156
|
+
totalY: number;
|
|
157
|
+
velocityX: number;
|
|
158
|
+
velocityY: number;
|
|
159
|
+
}
|
|
160
|
+
declare class Draggable extends Grip {
|
|
161
|
+
private dragOptions;
|
|
162
|
+
private transform;
|
|
163
|
+
private startTransform;
|
|
164
|
+
private bounds;
|
|
165
|
+
private momentum;
|
|
166
|
+
private transformNormalized;
|
|
167
|
+
private detectedAxis;
|
|
168
|
+
private startAxisConfirmed;
|
|
169
|
+
private cachedSize;
|
|
170
|
+
private modifierContext;
|
|
171
|
+
private cachedDragEvent;
|
|
172
|
+
constructor(element: HTMLElement, options?: DragOptions);
|
|
173
|
+
protected shouldHandleEvent(e: PointerEvent): boolean;
|
|
174
|
+
private readCurrentTransform;
|
|
175
|
+
private handleDragStart;
|
|
176
|
+
private handleDragMove;
|
|
177
|
+
private handleDragEnd;
|
|
178
|
+
private startMomentum;
|
|
179
|
+
private applyTransform;
|
|
180
|
+
private createDragEvent;
|
|
181
|
+
setPosition(x: number, y: number): void;
|
|
182
|
+
getPosition(): {
|
|
183
|
+
x: number;
|
|
184
|
+
y: number;
|
|
185
|
+
};
|
|
186
|
+
destroy(): void;
|
|
187
|
+
}
|
|
188
|
+
//#endregion
|
|
189
|
+
//#region src/resize.d.ts
|
|
190
|
+
interface ResizeOptions extends GripOptions {
|
|
191
|
+
edges?: {
|
|
192
|
+
top?: boolean;
|
|
193
|
+
right?: boolean;
|
|
194
|
+
bottom?: boolean;
|
|
195
|
+
left?: boolean;
|
|
196
|
+
};
|
|
197
|
+
handleSize?: number;
|
|
198
|
+
minWidth?: number;
|
|
199
|
+
minHeight?: number;
|
|
200
|
+
maxWidth?: number;
|
|
201
|
+
maxHeight?: number;
|
|
202
|
+
aspectRatio?: number | 'preserve';
|
|
203
|
+
square?: boolean;
|
|
204
|
+
invert?: 'none' | 'negate' | 'reposition';
|
|
205
|
+
grid?: {
|
|
206
|
+
width: number;
|
|
207
|
+
height: number;
|
|
208
|
+
};
|
|
209
|
+
modifiers?: Modifier[];
|
|
210
|
+
cursorChecker?: (edge: string | null) => string;
|
|
211
|
+
onResizeStart?: (event: ResizeEvent) => void;
|
|
212
|
+
onResizeMove?: (event: ResizeEvent) => void;
|
|
213
|
+
onResizeEnd?: (event: ResizeEvent) => void;
|
|
214
|
+
}
|
|
215
|
+
interface ResizeEvent extends InteractionEvent {
|
|
216
|
+
width: number;
|
|
217
|
+
height: number;
|
|
218
|
+
deltaWidth: number;
|
|
219
|
+
deltaHeight: number;
|
|
220
|
+
edges: {
|
|
221
|
+
top: boolean;
|
|
222
|
+
right: boolean;
|
|
223
|
+
bottom: boolean;
|
|
224
|
+
left: boolean;
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
declare class Resizable extends Grip {
|
|
228
|
+
private resizeOptions;
|
|
229
|
+
private startSize;
|
|
230
|
+
private startPos;
|
|
231
|
+
private currentSize;
|
|
232
|
+
private currentPos;
|
|
233
|
+
private activeEdge;
|
|
234
|
+
private edgeFlags;
|
|
235
|
+
private aspectRatio;
|
|
236
|
+
private boundUpdateCursor;
|
|
237
|
+
private transformNormalized;
|
|
238
|
+
private modifierContext;
|
|
239
|
+
private cachedResizeEvent;
|
|
240
|
+
constructor(element: HTMLElement, options?: ResizeOptions);
|
|
241
|
+
private normalizeInitialTransform;
|
|
242
|
+
protected shouldHandleEvent(e: PointerEvent): boolean;
|
|
243
|
+
private updateCursor;
|
|
244
|
+
private detectEdge;
|
|
245
|
+
private getCursor;
|
|
246
|
+
private handleResizeStart;
|
|
247
|
+
private handleResizeMove;
|
|
248
|
+
private handleResizeEnd;
|
|
249
|
+
private createResizeEvent;
|
|
250
|
+
setSize(width: number, height: number): void;
|
|
251
|
+
getSize(): {
|
|
252
|
+
width: number;
|
|
253
|
+
height: number;
|
|
254
|
+
};
|
|
255
|
+
destroy(): void;
|
|
256
|
+
}
|
|
257
|
+
//#endregion
|
|
258
|
+
//#region src/gesture.d.ts
|
|
259
|
+
interface GestureEvent extends InteractionEvent {
|
|
260
|
+
scale: number;
|
|
261
|
+
rotation: number;
|
|
262
|
+
distance: number;
|
|
263
|
+
angle: number;
|
|
264
|
+
center: Point$2;
|
|
265
|
+
deltaScale: number;
|
|
266
|
+
deltaAngle: number;
|
|
267
|
+
}
|
|
268
|
+
interface GestureOptions extends GripOptions {
|
|
269
|
+
minPointers?: number;
|
|
270
|
+
onGestureStart?: (event: GestureEvent) => void;
|
|
271
|
+
onGestureMove?: (event: GestureEvent) => void;
|
|
272
|
+
onGestureEnd?: (event: GestureEvent) => void;
|
|
273
|
+
}
|
|
274
|
+
declare class Gesturable extends Grip {
|
|
275
|
+
private gestureOptions;
|
|
276
|
+
private gestureActive;
|
|
277
|
+
private startDistance;
|
|
278
|
+
private startAngle;
|
|
279
|
+
private prevScale;
|
|
280
|
+
private prevAngle;
|
|
281
|
+
private minPointers;
|
|
282
|
+
constructor(element: HTMLElement, options?: GestureOptions);
|
|
283
|
+
protected shouldHandleEvent(_e: PointerEvent): boolean;
|
|
284
|
+
private getTwoPointers;
|
|
285
|
+
private computeDistance;
|
|
286
|
+
private computeAngle;
|
|
287
|
+
private computeCenter;
|
|
288
|
+
private normalizeAngleDelta;
|
|
289
|
+
private createGestureEvent;
|
|
290
|
+
update(): void;
|
|
291
|
+
private endGesture;
|
|
292
|
+
destroy(): void;
|
|
293
|
+
}
|
|
294
|
+
//#endregion
|
|
295
|
+
//#region src/dropzone.d.ts
|
|
296
|
+
interface DropEvent {
|
|
297
|
+
target: HTMLElement;
|
|
298
|
+
draggable: HTMLElement;
|
|
299
|
+
dragEvent?: DragEvent;
|
|
300
|
+
overlap: number;
|
|
301
|
+
}
|
|
302
|
+
interface DropzoneOptions {
|
|
303
|
+
accept?: string | ((draggable: HTMLElement) => boolean);
|
|
304
|
+
overlap?: 'pointer' | 'center' | number;
|
|
305
|
+
activeClass?: string;
|
|
306
|
+
hoverClass?: string;
|
|
307
|
+
/** Enable ARIA attributes (default: true) */
|
|
308
|
+
aria?: boolean;
|
|
309
|
+
onActivate?: (event: DropEvent) => void;
|
|
310
|
+
onDeactivate?: (event: DropEvent) => void;
|
|
311
|
+
onDragEnter?: (event: DropEvent) => void;
|
|
312
|
+
onDragLeave?: (event: DropEvent) => void;
|
|
313
|
+
onDragOver?: (event: DropEvent) => void;
|
|
314
|
+
onDrop?: (event: DropEvent) => void;
|
|
315
|
+
}
|
|
316
|
+
interface Point {
|
|
317
|
+
x: number;
|
|
318
|
+
y: number;
|
|
319
|
+
}
|
|
320
|
+
declare class Dropzone {
|
|
321
|
+
readonly element: HTMLElement;
|
|
322
|
+
private options;
|
|
323
|
+
private _isOver;
|
|
324
|
+
private _isActive;
|
|
325
|
+
private _enabled;
|
|
326
|
+
private listeners;
|
|
327
|
+
on(event: string, handler: Function): this;
|
|
328
|
+
off(event: string, handler: Function): this;
|
|
329
|
+
private emit;
|
|
330
|
+
get enabled(): boolean;
|
|
331
|
+
set enabled(value: boolean);
|
|
332
|
+
constructor(element: HTMLElement, options?: DropzoneOptions);
|
|
333
|
+
get isOver(): boolean;
|
|
334
|
+
get isActive(): boolean;
|
|
335
|
+
accepts(draggableEl: HTMLElement): boolean;
|
|
336
|
+
checkOverlap(draggableEl: HTMLElement, pointerPos: Point): number;
|
|
337
|
+
activate(draggableEl: HTMLElement): void;
|
|
338
|
+
deactivate(draggableEl: HTMLElement): void;
|
|
339
|
+
enter(draggableEl: HTMLElement, overlap: number, dragEvent?: DragEvent): void;
|
|
340
|
+
leave(draggableEl: HTMLElement, dragEvent?: DragEvent): void;
|
|
341
|
+
over(draggableEl: HTMLElement, overlap: number, dragEvent?: DragEvent): void;
|
|
342
|
+
drop(draggableEl: HTMLElement, overlap: number, dragEvent?: DragEvent): void;
|
|
343
|
+
private createEvent;
|
|
344
|
+
updateOptions(options: Partial<DropzoneOptions>): void;
|
|
345
|
+
destroy(): void;
|
|
346
|
+
}
|
|
347
|
+
//#endregion
|
|
348
|
+
//#region src/sortable.d.ts
|
|
349
|
+
interface SortableOptions {
|
|
350
|
+
/** Enable ARIA attributes for accessibility (default: true) */
|
|
351
|
+
aria?: boolean;
|
|
352
|
+
/** CSS selector for draggable items within the container (default: direct children) */
|
|
353
|
+
items?: string;
|
|
354
|
+
/** Axis of sorting: 'y' for vertical lists, 'x' for horizontal (default: 'y') */
|
|
355
|
+
axis?: 'x' | 'y';
|
|
356
|
+
/** CSS selector for drag handle within each item (optional) */
|
|
357
|
+
handle?: string;
|
|
358
|
+
/** Animation duration in ms for items shifting out of the way (default: 200) */
|
|
359
|
+
animationDuration?: number;
|
|
360
|
+
/** CSS class added to the item being dragged */
|
|
361
|
+
dragClass?: string;
|
|
362
|
+
/** CSS class added to a container when a grouped item hovers over it */
|
|
363
|
+
hoverClass?: string;
|
|
364
|
+
/**
|
|
365
|
+
* Group name — sortables with the same group can exchange items.
|
|
366
|
+
* Items can be dragged between any sortables sharing the same group name.
|
|
367
|
+
*/
|
|
368
|
+
group?: string;
|
|
369
|
+
/** Called when order changes during drag (within same container) */
|
|
370
|
+
onSort?: (event: SortEvent) => void;
|
|
371
|
+
/** Called when drag ends and order is finalized */
|
|
372
|
+
onSortEnd?: (event: SortEvent) => void;
|
|
373
|
+
/** Called when an item is added from another sortable */
|
|
374
|
+
onAdd?: (event: SortTransferEvent) => void;
|
|
375
|
+
/** Called when an item is removed to another sortable */
|
|
376
|
+
onRemove?: (event: SortTransferEvent) => void;
|
|
377
|
+
}
|
|
378
|
+
interface SortEvent {
|
|
379
|
+
item: HTMLElement;
|
|
380
|
+
oldIndex: number;
|
|
381
|
+
newIndex: number;
|
|
382
|
+
items: HTMLElement[];
|
|
383
|
+
}
|
|
384
|
+
interface SortTransferEvent {
|
|
385
|
+
item: HTMLElement;
|
|
386
|
+
from: Sortable;
|
|
387
|
+
to: Sortable;
|
|
388
|
+
oldIndex: number;
|
|
389
|
+
newIndex: number;
|
|
390
|
+
}
|
|
391
|
+
declare class Sortable {
|
|
392
|
+
readonly container: HTMLElement;
|
|
393
|
+
private options;
|
|
394
|
+
private draggables;
|
|
395
|
+
private itemStates;
|
|
396
|
+
private dragItem;
|
|
397
|
+
private dragIndex;
|
|
398
|
+
private currentIndex;
|
|
399
|
+
private targetSortable;
|
|
400
|
+
private targetIndex;
|
|
401
|
+
private placeholder;
|
|
402
|
+
private _enabled;
|
|
403
|
+
private listeners;
|
|
404
|
+
on(event: string, handler: Function): this;
|
|
405
|
+
off(event: string, handler: Function): this;
|
|
406
|
+
private emit;
|
|
407
|
+
get enabled(): boolean;
|
|
408
|
+
set enabled(value: boolean);
|
|
409
|
+
constructor(container: HTMLElement, options?: SortableOptions);
|
|
410
|
+
getItems(): HTMLElement[];
|
|
411
|
+
private setup;
|
|
412
|
+
private handleDragStart;
|
|
413
|
+
private handleDragMove;
|
|
414
|
+
private updateWithinIndex;
|
|
415
|
+
private findTargetContainer;
|
|
416
|
+
private setTargetSortable;
|
|
417
|
+
private clearTargetSortable;
|
|
418
|
+
private updatePlaceholder;
|
|
419
|
+
private removePlaceholder;
|
|
420
|
+
private handleDragEnd;
|
|
421
|
+
snapshotItems(): void;
|
|
422
|
+
private animateItems;
|
|
423
|
+
private reorderDOM;
|
|
424
|
+
/** Refresh the sortable (e.g., after dynamically adding/removing items) */
|
|
425
|
+
refresh(): void;
|
|
426
|
+
/** Get the current order of items */
|
|
427
|
+
getOrder(): HTMLElement[];
|
|
428
|
+
/** Programmatically move an item */
|
|
429
|
+
move(fromIndex: number, toIndex: number): void;
|
|
430
|
+
private teardown;
|
|
431
|
+
destroy(): void;
|
|
432
|
+
}
|
|
433
|
+
//#endregion
|
|
434
|
+
//#region src/index.d.ts
|
|
435
|
+
interface InteractableOptions {
|
|
436
|
+
drag?: boolean | DragOptions;
|
|
437
|
+
resize?: boolean | ResizeOptions;
|
|
438
|
+
gesture?: boolean | GestureOptions;
|
|
439
|
+
}
|
|
440
|
+
//#endregion
|
|
441
|
+
//#region src/react.d.ts
|
|
442
|
+
declare const useGrip: (options?: GripOptions | undefined, deps?: React.DependencyList) => {
|
|
443
|
+
ref: MutableRefObject<HTMLElement | null>;
|
|
444
|
+
instance: React.MutableRefObject<Grip | null>;
|
|
445
|
+
};
|
|
446
|
+
declare const useDraggable: (options?: DragOptions | undefined, deps?: React.DependencyList) => {
|
|
447
|
+
ref: MutableRefObject<HTMLElement | null>;
|
|
448
|
+
instance: React.MutableRefObject<Draggable | null>;
|
|
449
|
+
};
|
|
450
|
+
declare const useResizable: (options?: ResizeOptions | undefined, deps?: React.DependencyList) => {
|
|
451
|
+
ref: MutableRefObject<HTMLElement | null>;
|
|
452
|
+
instance: React.MutableRefObject<Resizable | null>;
|
|
453
|
+
};
|
|
454
|
+
declare const useGesturable: (options?: GestureOptions | undefined, deps?: React.DependencyList) => {
|
|
455
|
+
ref: MutableRefObject<HTMLElement | null>;
|
|
456
|
+
instance: React.MutableRefObject<Gesturable | null>;
|
|
457
|
+
};
|
|
458
|
+
declare function useDropzone(options?: DropzoneOptions, deps?: React.DependencyList): {
|
|
459
|
+
ref: MutableRefObject<HTMLElement | null>;
|
|
460
|
+
instance: MutableRefObject<Dropzone | null>;
|
|
461
|
+
};
|
|
462
|
+
declare function useSortable(options?: SortableOptions, deps?: React.DependencyList): {
|
|
463
|
+
ref: MutableRefObject<HTMLElement | null>;
|
|
464
|
+
instance: MutableRefObject<Sortable | null>;
|
|
465
|
+
};
|
|
466
|
+
declare function useInteractable(options?: InteractableOptions, deps?: React.DependencyList): {
|
|
467
|
+
ref: MutableRefObject<HTMLElement | null>;
|
|
468
|
+
instance: MutableRefObject<{
|
|
469
|
+
drag: Draggable | null;
|
|
470
|
+
resize: Resizable | null;
|
|
471
|
+
gesture: Gesturable | null;
|
|
472
|
+
destroy: () => void;
|
|
473
|
+
} | null>;
|
|
474
|
+
};
|
|
475
|
+
declare const GripComponent: ({
|
|
476
|
+
children,
|
|
477
|
+
as: Tag,
|
|
478
|
+
className,
|
|
479
|
+
style,
|
|
480
|
+
...options
|
|
481
|
+
}: GripOptions & {
|
|
482
|
+
children: React.ReactNode;
|
|
483
|
+
as?: keyof React.JSX.IntrinsicElements;
|
|
484
|
+
className?: string;
|
|
485
|
+
style?: React.CSSProperties;
|
|
486
|
+
}) => React.JSX.Element;
|
|
487
|
+
declare const DraggableComponent: ({
|
|
488
|
+
children,
|
|
489
|
+
as: Tag,
|
|
490
|
+
className,
|
|
491
|
+
style,
|
|
492
|
+
...options
|
|
493
|
+
}: DragOptions & {
|
|
494
|
+
children: React.ReactNode;
|
|
495
|
+
as?: keyof React.JSX.IntrinsicElements;
|
|
496
|
+
className?: string;
|
|
497
|
+
style?: React.CSSProperties;
|
|
498
|
+
}) => React.JSX.Element;
|
|
499
|
+
declare const ResizableComponent: ({
|
|
500
|
+
children,
|
|
501
|
+
as: Tag,
|
|
502
|
+
className,
|
|
503
|
+
style,
|
|
504
|
+
...options
|
|
505
|
+
}: ResizeOptions & {
|
|
506
|
+
children: React.ReactNode;
|
|
507
|
+
as?: keyof React.JSX.IntrinsicElements;
|
|
508
|
+
className?: string;
|
|
509
|
+
style?: React.CSSProperties;
|
|
510
|
+
}) => React.JSX.Element;
|
|
511
|
+
declare const GesturableComponent: ({
|
|
512
|
+
children,
|
|
513
|
+
as: Tag,
|
|
514
|
+
className,
|
|
515
|
+
style,
|
|
516
|
+
...options
|
|
517
|
+
}: GestureOptions & {
|
|
518
|
+
children: React.ReactNode;
|
|
519
|
+
as?: keyof React.JSX.IntrinsicElements;
|
|
520
|
+
className?: string;
|
|
521
|
+
style?: React.CSSProperties;
|
|
522
|
+
}) => React.JSX.Element;
|
|
523
|
+
declare const InteractableComponent: ({
|
|
524
|
+
children,
|
|
525
|
+
as: Tag,
|
|
526
|
+
className,
|
|
527
|
+
style,
|
|
528
|
+
...options
|
|
529
|
+
}: InteractableOptions & {
|
|
530
|
+
children: React.ReactNode;
|
|
531
|
+
as?: keyof React.JSX.IntrinsicElements;
|
|
532
|
+
className?: string;
|
|
533
|
+
style?: React.CSSProperties;
|
|
534
|
+
}) => React.JSX.Element;
|
|
535
|
+
//#endregion
|
|
536
|
+
export { type DragEvent, type DragOptions, DraggableComponent, type DropEvent, type DropzoneOptions, GesturableComponent, type GestureEvent, type GestureOptions, GripComponent, type GripOptions, InteractableComponent, type InteractableOptions, type InteractionEvent, ResizableComponent, type ResizeEvent, type ResizeOptions, type SortEvent, type SortableOptions, useDraggable, useDropzone, useGesturable, useGrip, useInteractable, useResizable, useSortable };
|
|
537
|
+
//# sourceMappingURL=pointrix-react.d.mts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e,{useEffect as t,useRef as n}from"react";let r=null,i=new Set,a=new Set,o=null;function s(){return!o&&typeof PointerEvent<`u`&&(o=new PointerEvent(`pointermove`)),o}function c(){r===null&&(r=requestAnimationFrame(()=>{r=null;for(let e of a)e.update();if(a.clear(),i.size>0){let e=!1;for(let t of i)if(t.hasActivePointers()){e=!0;break}e&&c()}}))}var l=class e{on(e,t){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t),this}off(e,t){return this.listeners.get(e)?.delete(t),this}emit(e,t){let n=this.listeners.get(e);if(n)for(let e of n)e(t)}get enabled(){return this._enabled}set enabled(t){this._enabled=t,!t&&this.isActive&&(this.pointers.clear(),this.pointersCache=[],this.isActive=!1,i.delete(this),a.delete(this),e.activeInstance.get(this.element)===this&&e.activeInstance.set(this.element,null),document.removeEventListener(`pointermove`,this.onPointerMove),document.removeEventListener(`pointerup`,this.onPointerUp),document.removeEventListener(`pointercancel`,this.onPointerUp))}get interacting(){return this.isActive}static{this.elementInstances=new WeakMap}static{this.activeInstance=new WeakMap}static{this.elementListeners=new WeakMap}constructor(t,n={}){this.pointers=new Map,this.pointersCache=[],this.isActive=!1,this.lastUpdate=0,this.priority=0,this._enabled=!0,this.holdTimer=null,this.holdEventTimer=null,this.lastTapTime=0,this.lastTapTarget=null,this.listeners=new Map,this.element=t,this.options={threshold:3,preventScroll:!0,styleCursor:!0,...n},this.registerInstance();let r=e.elementInstances.get(t);if(r&&r.length===1&&(t.style.touchAction=this.options.touchAction??`none`,t.style.userSelect=`none`,t.style.webkitUserSelect=`none`),this.onPointerDown=this.onPointerDown.bind(this),this.onPointerMove=this.onPointerMove.bind(this),this.onPointerUp=this.onPointerUp.bind(this),r&&r.length===1){let n=n=>e.handleElementPointerDown(t,n);e.elementListeners.set(t,n),t.addEventListener(`pointerdown`,n)}}registerInstance(){let t=e.elementInstances.get(this.element);t?t.push(this):e.elementInstances.set(this.element,[this])}unregisterInstance(){let t=e.elementInstances.get(this.element);if(!t)return;let n=t.indexOf(this);n>=0&&(t.splice(n,1),t.length===0?(e.elementInstances.delete(this.element),e.activeInstance.delete(this.element),e.elementListeners.delete(this.element)):e.elementInstances.set(this.element,t))}shouldHandleEvent(e){return!0}checkEventFilters(e){let t=e.target;return t?!(this.options.ignoreFrom&&t.closest(this.options.ignoreFrom)||this.options.allowFrom&&!t.closest(this.options.allowFrom)):!0}static handleElementPointerDown(t,n){let r=e.elementInstances.get(t);if(!r)return;let i=e.activeInstance.get(t);if(i){i.onPointerDown(n);return}let a=null,o=-1;for(let e of r)e.checkEventFilters(n)&&e.shouldHandleEvent(n)&&e.enabled&&e.priority>o&&(a=e,o=e.priority);a&&(e.activeInstance.set(t,a),a.handlePointerDown(n))}onPointerDown(e){this.handlePointerDown(e)}handlePointerDown(e){if(this.options.mouseButtons&&!(e.buttons&this.options.mouseButtons))return;this.options.preventScroll&&e.preventDefault();let t={x:e.clientX,y:e.clientY},n={id:e.pointerId,start:{...t},current:{...t},previous:{...t},delta:{x:0,y:0},total:{x:0,y:0},velocity:{x:0,y:0},timestamp:e.timeStamp};this.pointers.set(e.pointerId,n),this.pointersCache=Array.from(this.pointers.values()),this.pointers.size===1&&(document.addEventListener(`pointermove`,this.onPointerMove,{passive:!1}),document.addEventListener(`pointerup`,this.onPointerUp),document.addEventListener(`pointercancel`,this.onPointerUp)),this.options.onHold&&(this.holdEventTimer&&clearTimeout(this.holdEventTimer),this.holdEventTimer=setTimeout(()=>{this.holdEventTimer=null,this.pointers.size>0&&!this.isActive&&this.options.onHold(this.createEvent(e))},this.options.holdDuration??600));let r=this.options.holdDelay??0;r>0?(this.holdTimer&&clearTimeout(this.holdTimer),this.holdTimer=setTimeout(()=>{this.holdTimer=null,!this.isActive&&this.pointers.size>0&&this.start(e)},r)):this.options.threshold===0&&this.start(e)}onPointerMove(e){let t=this.pointers.get(e.pointerId);if(!t)return;let n=e.clientX,r=e.clientY;if(t.current.x!==n||t.current.y!==r){if(t.current.x=n,t.current.y=r,!this.isActive){let n=t.current.x-t.start.x,r=t.current.y-t.start.y;Math.sqrt(n*n+r*r)>=(this.options.threshold||3)&&(this.holdTimer&&=(clearTimeout(this.holdTimer),null),this.holdEventTimer&&=(clearTimeout(this.holdEventTimer),null),this.start(e))}this.isActive&&(this.options.preventScroll&&e.preventDefault(),i.add(this),a.add(this),c())}}onPointerUp(e){if(this.pointers.get(e.pointerId)&&(this.pointers.delete(e.pointerId),this.pointersCache=Array.from(this.pointers.values()),this.holdTimer&&=(clearTimeout(this.holdTimer),null),this.holdEventTimer&&=(clearTimeout(this.holdEventTimer),null),this.pointers.size===0))if(document.removeEventListener(`pointermove`,this.onPointerMove),document.removeEventListener(`pointerup`,this.onPointerUp),document.removeEventListener(`pointercancel`,this.onPointerUp),this.isActive)this.end(e);else{let t=this.createEvent(e);this.options.onTap&&this.options.onTap(t),this.emit(`tap`,t);let n=e.timeStamp;this.options.onDoubleTap&&n-this.lastTapTime<300&&this.lastTapTarget===e.target&&this.options.onDoubleTap(t),this.lastTapTime=n,this.lastTapTarget=e.target}}start(e){this.isActive=!0,i.add(this);let t=this.createEvent(e);this.options.onStart&&this.options.onStart(t),this.emit(`start`,t)}end(t){this.isActive=!1,i.delete(this),a.delete(this),e.activeInstance.get(this.element)===this&&e.activeInstance.set(this.element,null);let n=this.createEvent(t);this.options.onEnd&&this.options.onEnd(n),this.emit(`end`,n)}update(){if(!this.isActive||this.pointers.size===0)return;let e=performance.now(),t=e-this.lastUpdate;this.lastUpdate=e;let n=!1,r=!1;if(this.pointers.forEach(e=>{let i=e.current.x-e.previous.x,a=e.current.y-e.previous.y;if(i!==0||a!==0){if(n=!0,e.delta.x=i,e.delta.y=a,e.total.x=e.current.x-e.start.x,e.total.y=e.current.y-e.start.y,t>0){let n=i/t*1e3,r=a/t*1e3;e.velocity.x=e.velocity.x*.7+n*.3,e.velocity.y=e.velocity.y*.7+r*.3}e.previous.x=e.current.x,e.previous.y=e.current.y}(Math.abs(e.velocity.x)>.1||Math.abs(e.velocity.y)>.1)&&(r=!0)}),n){let e=s(),t=this.createEvent(e);this.options.onMove&&this.options.onMove(t),this.emit(`move`,t)}r&&a.add(this)}hasActivePointers(){if(!this.isActive||this.pointers.size===0)return!1;for(let e of this.pointers.values())if(Math.abs(e.velocity.x)>.1||Math.abs(e.velocity.y)>.1)return!0;return this.pointers.size>0}createEvent(e){return{target:this.element,pointers:this.pointersCache,isPrimary:e.isPrimary,originalEvent:e}}destroy(){this.holdTimer&&=(clearTimeout(this.holdTimer),null),this.holdEventTimer&&=(clearTimeout(this.holdEventTimer),null),this.unregisterInstance();let t=e.elementInstances.get(this.element);if(!t||t.length===0){let t=e.elementListeners.get(this.element);t&&(this.element.removeEventListener(`pointerdown`,t),e.elementListeners.delete(this.element)),this.element.style.touchAction=``,this.element.style.userSelect=``,this.element.style.webkitUserSelect=``}this.pointers.size>0&&(document.removeEventListener(`pointermove`,this.onPointerMove),document.removeEventListener(`pointerup`,this.onPointerUp),document.removeEventListener(`pointercancel`,this.onPointerUp)),i.delete(this),this.pointers.clear(),this.pointersCache=[]}};function u(e,t){let n=typeof e==`string`?document.querySelector(e):e;if(!n)throw Error(`Element not found: ${e}`);return new l(n,t)}function d(e,t){let n=t.position.x,r=t.position.y,i=t.velocity.x,a=t.velocity.y,o=t.size?.width,s=t.size?.height;for(let c of e){t.position.x=n,t.position.y=r,t.velocity.x=i,t.velocity.y=a,t.size&&o!==void 0&&s!==void 0&&(t.size.width=o,t.size.height=s);let e=c.modify(t);n=e.position.x,r=e.position.y,i=e.velocity.x,a=e.velocity.y,e.size&&(o=e.size.width,s=e.size.height)}return{position:{x:n,y:r},velocity:{x:i,y:a},size:o!==void 0&&s!==void 0?{width:o,height:s}:void 0}}let f={instructions:`Press Space or Enter to pick up. Use arrow keys to move. Press Space or Enter to drop. Press Escape to cancel.`,pickedUp:(e,t,n)=>`Picked up ${e}, position ${t} of ${n}`,movedTo:(e,t)=>`Moved to position ${e} of ${t}`,dropped:(e,t,n)=>`Dropped ${e} in position ${t} of ${n}`,dragPickedUp:`Picked up`,dragDropped:`Dropped`};function p(){return f}let m=null;function h(){return m&&m.isConnected?m:(m=document.createElement(`div`),m.setAttribute(`aria-live`,`assertive`),m.setAttribute(`aria-atomic`,`true`),m.setAttribute(`role`,`status`),m.style.cssText=`position:fixed;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0`,document.body.appendChild(m),m)}function g(e){let t=h();t.textContent=``,requestAnimationFrame(()=>{t.textContent=e})}let _=null;const v=`grip-instructions`;function y(){return _&&_.isConnected?(_.textContent=f.instructions,v):(_=document.createElement(`div`),_.id=v,_.style.cssText=`position:fixed;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0`,_.textContent=f.instructions,document.body.appendChild(_),v)}function b(e){e.hasAttribute(`tabindex`)||e.setAttribute(`tabindex`,`0`),e.hasAttribute(`role`)||e.setAttribute(`role`,`button`),e.setAttribute(`aria-roledescription`,`draggable`),e.setAttribute(`aria-describedby`,y())}function x(e,t){e.setAttribute(`aria-grabbed`,String(t))}function S(e){e.removeAttribute(`aria-roledescription`),e.removeAttribute(`aria-grabbed`),e.removeAttribute(`aria-describedby`)}function C(e,t,n){e.hasAttribute(`tabindex`)||e.setAttribute(`tabindex`,`0`),e.hasAttribute(`role`)||e.setAttribute(`role`,`option`),e.setAttribute(`aria-roledescription`,`sortable`),e.setAttribute(`aria-describedby`,y()),e.setAttribute(`aria-posinset`,String(t+1)),e.setAttribute(`aria-setsize`,String(n))}function w(e){e.removeAttribute(`aria-roledescription`),e.removeAttribute(`aria-grabbed`),e.removeAttribute(`aria-describedby`),e.removeAttribute(`aria-posinset`),e.removeAttribute(`aria-setsize`)}function ee(e){e.hasAttribute(`role`)||e.setAttribute(`role`,`listbox`)}function T(e){e.getAttribute(`role`)===`listbox`&&e.removeAttribute(`role`)}function E(e){e.setAttribute(`aria-dropeffect`,`move`)}function D(e,t){e.setAttribute(`aria-dropeffect`,t?`move`:`none`)}function O(e){e.removeAttribute(`aria-dropeffect`)}function k(e,t){return t.x>=e.left&&t.x<=e.right&&t.y>=e.top&&t.y<=e.bottom}function A(e,t){let n=Math.max(0,Math.min(e.right,t.right)-Math.max(e.left,t.left))*Math.max(0,Math.min(e.bottom,t.bottom)-Math.max(e.top,t.top)),r=e.width*e.height;return r>0?n/r:0}var j=class{on(e,t){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t),this}off(e,t){return this.listeners.get(e)?.delete(t),this}emit(e,t){let n=this.listeners.get(e);if(n)for(let e of n)e(t)}get enabled(){return this._enabled}set enabled(e){this._enabled=e}constructor(e,t={}){this._isOver=!1,this._isActive=!1,this._enabled=!0,this.listeners=new Map,this.element=e,this.options={overlap:`pointer`,aria:!0,...t},M.register(this),this.options.aria!==!1&&E(e)}get isOver(){return this._isOver}get isActive(){return this._isActive}accepts(e){if(!this._enabled)return!1;let{accept:t}=this.options;return t?typeof t==`function`?t(e):e.matches(t):!0}checkOverlap(e,t){let n=this.element.getBoundingClientRect(),r=this.options.overlap??`pointer`;if(r===`pointer`)return k(n,t)?1:0;let i=e.getBoundingClientRect();if(r===`center`)return k(n,{x:i.left+i.width/2,y:i.top+i.height/2})?1:0;let a=A(i,n);return a>=r?a:0}activate(e){if(this._isActive)return;this._isActive=!0,this.options.activeClass&&this.element.classList.add(this.options.activeClass),this.options.aria!==!1&&D(this.element,!0);let t=this.createEvent(e,0);this.options.onActivate?.(t),this.emit(`activate`,t)}deactivate(e){if(!this._isActive)return;this._isOver&&this.leave(e),this._isActive=!1,this.options.activeClass&&this.element.classList.remove(this.options.activeClass),this.options.aria!==!1&&D(this.element,!1);let t=this.createEvent(e,0);this.options.onDeactivate?.(t),this.emit(`deactivate`,t)}enter(e,t,n){if(this._isOver)return;this._isOver=!0,this.options.hoverClass&&this.element.classList.add(this.options.hoverClass);let r=this.createEvent(e,t,n);this.options.onDragEnter?.(r),this.emit(`dragenter`,r)}leave(e,t){if(!this._isOver)return;this._isOver=!1,this.options.hoverClass&&this.element.classList.remove(this.options.hoverClass);let n=this.createEvent(e,0,t);this.options.onDragLeave?.(n),this.emit(`dragleave`,n)}over(e,t,n){let r=this.createEvent(e,t,n);this.options.onDragOver?.(r),this.emit(`dragover`,r)}drop(e,t,n){let r=this.createEvent(e,t,n);this.options.onDrop?.(r),this.emit(`drop`,r)}createEvent(e,t,n){return{target:this.element,draggable:e,dragEvent:n,overlap:t}}updateOptions(e){this.options={...this.options,...e}}destroy(){this._isOver=!1,this._isActive=!1,this.options.activeClass&&this.element.classList.remove(this.options.activeClass),this.options.hoverClass&&this.element.classList.remove(this.options.hoverClass),this.options.aria!==!1&&O(this.element),M.unregister(this)}};const M=new class{constructor(){this.zones=new Set}register(e){this.zones.add(e)}unregister(e){this.zones.delete(e)}onDragStart(e){for(let t of this.zones)t.accepts(e)&&t.activate(e)}onDragMove(e,t,n){for(let r of this.zones){if(!r.isActive)continue;let i=r.checkOverlap(e,t);i>0?(r.isOver||r.enter(e,i,n),r.over(e,i,n)):r.isOver&&r.leave(e,n)}}onDragEnd(e,t,n){for(let r of this.zones)if(r.isActive){if(r.isOver){let i=r.checkOverlap(e,t);r.drop(e,i>0?i:1,n)}r.deactivate(e)}}getActiveZones(){let e=[];for(let t of this.zones)t.isActive&&e.push(t);return e}getHoveredZones(){let e=[];for(let t of this.zones)t.isOver&&e.push(t);return e}};function N(e,t){let n=typeof e==`string`?document.querySelector(e):e;if(!n)throw Error(`Element not found: ${e}`);return new j(n,t)}var P=class extends l{constructor(e,t={}){super(e,{...t,onStart:e=>{this.handleDragStart(e),t.onStart?.(e)},onMove:e=>{this.handleDragMove(e),t.onMove?.(e)},onEnd:e=>{this.handleDragEnd(e),t.onEnd?.(e)}}),this.transform={x:0,y:0},this.startTransform={x:0,y:0},this.bounds=null,this.momentum={vx:0,vy:0,active:!1},this.transformNormalized=!1,this.detectedAxis=null,this.startAxisConfirmed=!1,this.cachedSize={width:0,height:0},this.modifierContext={position:{x:0,y:0},velocity:{x:0,y:0},element:null,startPosition:{x:0,y:0},delta:{x:0,y:0},size:{width:0,height:0}},this.cachedDragEvent={target:null,originalEvent:null,pointers:[],isPrimary:!0,dx:0,dy:0,totalX:0,totalY:0,velocityX:0,velocityY:0},this.dragOptions=t,this.priority=5,t.styleCursor!==!1&&(e.style.cursor=t.cursorChecker?t.cursorChecker(`idle`):`grab`),t.aria!==!1&&b(e)}shouldHandleEvent(e){if(!this.dragOptions.handle)return!0;let t=null;return t=typeof this.dragOptions.handle==`string`?this.element.querySelector(this.dragOptions.handle):this.dragOptions.handle,t?t.contains(e.target):!1}readCurrentTransform(e){let t=window.getComputedStyle(e).transform;if(t&&t!==`none`){let e=t.match(/matrix.*\((.+)\)/);if(e){let t=e[1].split(`, `);this.transform.x=parseFloat(t[4])||0,this.transform.y=parseFloat(t[5])||0}}else this.transformNormalized||(this.transform.x=0,this.transform.y=0);this.transformNormalized||=(e.style.transform=`translate3d(${this.transform.x}px, ${this.transform.y}px, 0)`,!0)}handleDragStart(e){let t=e.target;if(this.dragOptions.aria!==!1&&(x(t,!0),g(p().dragPickedUp)),this.detectedAxis=null,this.startAxisConfirmed=!1,this.readCurrentTransform(t),this.dragOptions.styleCursor!==!1&&(t.style.cursor=this.dragOptions.cursorChecker?this.dragOptions.cursorChecker(`grabbing`):`grabbing`),t.style.willChange=`transform`,this.startTransform={...this.transform},this.dragOptions.bounds){let e=t.getBoundingClientRect(),n=this.startTransform.x,r=this.startTransform.y,i;if(this.dragOptions.bounds===`parent`){let e=(t.offsetParent||document.body).getBoundingClientRect();i={left:e.left,top:e.top,right:e.right,bottom:e.bottom}}else if(this.dragOptions.bounds instanceof HTMLElement){let e=this.dragOptions.bounds.getBoundingClientRect();i={left:e.left,top:e.top,right:e.right,bottom:e.bottom}}else{let e=this.dragOptions.bounds;i={left:e.left??-1/0,top:e.top??-1/0,right:e.right??1/0,bottom:e.bottom??1/0}}let a=i.left-e.left+n,o=i.top-e.top+r,s=i.right-e.right+n,c=i.bottom-e.bottom+r;this.bounds=new DOMRect(a,o,s-a,c-o)}this.momentum.active=!1;let n=e.target.getBoundingClientRect();if(this.cachedSize.width=n.width,this.cachedSize.height=n.height,this.dragOptions.modifiers?.length){let t=this.modifierContext;t.position.x=this.startTransform.x,t.position.y=this.startTransform.y,t.velocity.x=0,t.velocity.y=0,t.element=e.target,t.startPosition.x=this.startTransform.x,t.startPosition.y=this.startTransform.y,t.delta.x=0,t.delta.y=0,t.size.width=this.cachedSize.width,t.size.height=this.cachedSize.height;for(let e of this.dragOptions.modifiers)e.onStart?.(t)}let r=this.createDragEvent(e,0,0);this.dragOptions.onDragStart&&this.dragOptions.onDragStart(r),this.emit(`dragstart`,r),this.dragOptions.droppable&&M.onDragStart(e.target)}handleDragMove(e){let t=e.pointers[0],n=t.total.x,r=t.total.y;if(this.dragOptions.startAxis&&!this.startAxisConfirmed){let e=Math.abs(n),t=Math.abs(r);if(this.dragOptions.startAxis===`x`&&t>e||this.dragOptions.startAxis===`y`&&e>t)return;this.startAxisConfirmed=!0}if(this.dragOptions.axis===`start`&&this.detectedAxis===null){let e=Math.abs(n),t=Math.abs(r);(e>0||t>0)&&(this.detectedAxis=e>t?`x`:`y`)}let i=this.dragOptions.axis===`start`?this.detectedAxis:this.dragOptions.axis;i===`x`?r=0:i===`y`&&(n=0);let a=this.startTransform.x+n,o=this.startTransform.y+r;if(this.dragOptions.grid&&(a=Math.round(a/this.dragOptions.grid.x)*this.dragOptions.grid.x,o=Math.round(o/this.dragOptions.grid.y)*this.dragOptions.grid.y),this.bounds&&(a=Math.max(this.bounds.left,Math.min(a,this.bounds.right)),o=Math.max(this.bounds.top,Math.min(o,this.bounds.bottom))),this.dragOptions.modifiers?.length){let n=this.modifierContext;n.position.x=a,n.position.y=o,n.velocity.x=t.velocity.x,n.velocity.y=t.velocity.y,n.element=e.target,n.startPosition.x=this.startTransform.x,n.startPosition.y=this.startTransform.y,n.delta.x=t.delta.x,n.delta.y=t.delta.y,n.size.width=this.cachedSize.width,n.size.height=this.cachedSize.height;let r=d(this.dragOptions.modifiers,n);a=r.position.x,o=r.position.y}this.transform={x:a,y:o},this.applyTransform(e.target),this.dragOptions.momentum&&(this.momentum.vx=t.velocity.x,this.momentum.vy=t.velocity.y);let s=this.createDragEvent(e,n,r);this.dragOptions.onDragMove&&this.dragOptions.onDragMove(s),this.emit(`dragmove`,s),this.dragOptions.droppable&&M.onDragMove(e.target,t.current,s)}handleDragEnd(e){let t=e.target;this.dragOptions.aria!==!1&&(x(t,!1),g(p().dragDropped)),this.dragOptions.styleCursor!==!1&&(t.style.cursor=this.dragOptions.cursorChecker?this.dragOptions.cursorChecker(`grab`):`grab`);let n=this.transform.x-this.startTransform.x,r=this.transform.y-this.startTransform.y;if(this.dragOptions.momentum&&(Math.abs(this.momentum.vx)>10||Math.abs(this.momentum.vy)>10)?this.startMomentum():t.style.willChange=``,this.dragOptions.modifiers?.length){let i=e.pointers[0],a={...this.transform},o={position:a,velocity:i?.velocity??{x:0,y:0},element:e.target,startPosition:{...this.startTransform},delta:{x:n,y:r}};for(let e of this.dragOptions.modifiers){let t=e.onEnd?.(o);t&&(a=t.position,o.position=a)}if(a.x!==this.transform.x||a.y!==this.transform.y){this.transform=a,t.style.transition=`transform 300ms cubic-bezier(0.25, 1, 0.5, 1)`,this.applyTransform(t);let e=()=>{t.style.transition=``,t.removeEventListener(`transitionend`,e)};t.addEventListener(`transitionend`,e)}}if(this.dragOptions.droppable){let t=e.pointers[0]?.current??{x:0,y:0};M.onDragEnd(e.target,t,this.createDragEvent(e,n,r))}let i=this.createDragEvent(e,n,r);this.dragOptions.onDragEnd&&this.dragOptions.onDragEnd(i),this.emit(`dragend`,i)}startMomentum(){this.momentum.active=!0;let e=typeof this.dragOptions.momentum==`object`&&this.dragOptions.momentum.friction||.95,t=typeof this.dragOptions.momentum==`object`&&this.dragOptions.momentum.minSpeed||.1,n=()=>{if(this.momentum.active){if(this.momentum.vx*=e,this.momentum.vy*=e,Math.abs(this.momentum.vx)<t&&Math.abs(this.momentum.vy)<t){this.momentum.active=!1,this.element.style.willChange=``;return}this.transform.x+=this.momentum.vx*.016,this.transform.y+=this.momentum.vy*.016,this.bounds&&((this.transform.x<this.bounds.left||this.transform.x>this.bounds.right)&&(this.momentum.vx*=-.5,this.transform.x=Math.max(this.bounds.left,Math.min(this.transform.x,this.bounds.right))),(this.transform.y<this.bounds.top||this.transform.y>this.bounds.bottom)&&(this.momentum.vy*=-.5,this.transform.y=Math.max(this.bounds.top,Math.min(this.transform.y,this.bounds.bottom)))),this.applyTransform(this.element),requestAnimationFrame(n)}};requestAnimationFrame(n)}applyTransform(e){e.style.transform=`translate3d(${this.transform.x}px, ${this.transform.y}px, 0)`}createDragEvent(e,t,n){let r=e.pointers[0],i=this.cachedDragEvent;return i.target=e.target,i.originalEvent=e.originalEvent,i.pointers=e.pointers,i.isPrimary=e.isPrimary,i.dx=r?.delta.x||0,i.dy=r?.delta.y||0,i.totalX=t,i.totalY=n,i.velocityX=r?.velocity.x||0,i.velocityY=r?.velocity.y||0,i}setPosition(e,t){this.transform={x:e,y:t},this.applyTransform(this.element)}getPosition(){return{...this.transform}}destroy(){super.destroy(),this.element.style.cursor=``,this.element.style.willChange=``,this.momentum.active=!1,this.dragOptions.aria!==!1&&S(this.element)}};function F(e,t){let n=typeof e==`string`?document.querySelector(e):e;if(!n)throw Error(`Element not found: ${e}`);return new P(n,t)}var I=class extends l{constructor(e,t={}){let n={edges:{top:!0,right:!0,bottom:!0,left:!0},handleSize:10,minWidth:50,minHeight:50,...t};super(e,{...n,threshold:0,onStart:e=>{this.handleResizeStart(e),t.onStart?.(e)},onMove:e=>{this.handleResizeMove(e),t.onMove?.(e)},onEnd:e=>{this.handleResizeEnd(e),t.onEnd?.(e)}}),this.startSize={width:0,height:0},this.startPos={x:0,y:0},this.currentSize={width:0,height:0},this.currentPos={x:0,y:0},this.activeEdge=null,this.edgeFlags={top:!1,right:!1,bottom:!1,left:!1},this.aspectRatio=null,this.transformNormalized=!1,this.modifierContext={position:{x:0,y:0},velocity:{x:0,y:0},element:null,startPosition:{x:0,y:0},delta:{x:0,y:0},edges:{top:!1,right:!1,bottom:!1,left:!1},size:{width:0,height:0},startSize:{width:0,height:0}},this.cachedResizeEvent={target:null,originalEvent:null,pointers:[],isPrimary:!0,width:0,height:0,deltaWidth:0,deltaHeight:0,edges:{top:!1,right:!1,bottom:!1,left:!1}},this.resizeOptions=n,this.resizeOptions.square&&(this.resizeOptions.aspectRatio=1),this.priority=10,this.boundUpdateCursor=this.updateCursor.bind(this),e.addEventListener(`pointermove`,this.boundUpdateCursor),e.style.position=`relative`}normalizeInitialTransform(e){let t=window.getComputedStyle(e).transform;if(t&&t!==`none`){let n=t.match(/matrix.*\((.+)\)/);if(n){let t=n[1].split(`, `),r=parseFloat(t[4])||0,i=parseFloat(t[5])||0;e.style.transform=`translate3d(${r}px, ${i}px, 0)`}}}shouldHandleEvent(e){return this.detectEdge(e)!==null}updateCursor(e){if(this.activeEdge)return;let t=this.detectEdge(e);this.element.style.cursor=this.resizeOptions.cursorChecker?this.resizeOptions.cursorChecker(t):this.getCursor(t)}detectEdge(e){let t=this.element.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top,i=this.resizeOptions.handleSize||10,a=this.resizeOptions.edges||{},o=a.top&&r<i,s=a.bottom&&r>t.height-i,c=a.left&&n<i,l=a.right&&n>t.width-i;return o&&c?`top-left`:o&&l?`top-right`:s&&c?`bottom-left`:s&&l?`bottom-right`:o?`top`:s?`bottom`:c?`left`:l?`right`:null}getCursor(e){switch(e){case`top`:case`bottom`:return`ns-resize`;case`left`:case`right`:return`ew-resize`;case`top-left`:case`bottom-right`:return`nwse-resize`;case`top-right`:case`bottom-left`:return`nesw-resize`;default:return``}}handleResizeStart(e){this.transformNormalized||=(this.normalizeInitialTransform(this.element),!0);let t=this.element.getBoundingClientRect(),n=window.getComputedStyle(this.element);if(this.activeEdge=this.detectEdge(e.originalEvent),!this.activeEdge)return;this.edgeFlags.top=this.activeEdge.includes(`top`),this.edgeFlags.right=this.activeEdge.includes(`right`),this.edgeFlags.bottom=this.activeEdge.includes(`bottom`),this.edgeFlags.left=this.activeEdge.includes(`left`),this.startSize={width:parseFloat(n.width)||t.width,height:parseFloat(n.height)||t.height},this.currentSize={...this.startSize};let r=n.transform;if(r&&r!==`none`){let e=r.match(/matrix.*\((.+)\)/);if(e){let t=e[1].split(`, `);this.startPos.x=parseFloat(t[4])||0,this.startPos.y=parseFloat(t[5])||0}}else this.startPos.x=0,this.startPos.y=0;this.currentPos={...this.startPos},this.resizeOptions.aspectRatio===`preserve`?this.aspectRatio=this.startSize.width/this.startSize.height:typeof this.resizeOptions.aspectRatio==`number`&&(this.aspectRatio=this.resizeOptions.aspectRatio),this.element.style.willChange=`width, height, transform`;let i=this.createResizeEvent(e,0,0);this.resizeOptions.onResizeStart&&this.resizeOptions.onResizeStart(i),this.emit(`resizestart`,i)}handleResizeMove(e){if(!this.activeEdge)return;let t=e.pointers[0],n=t.total.x,r=t.total.y,i=this.startSize.width,a=this.startSize.height,o=this.startPos.x,s=this.startPos.y;this.edgeFlags.right&&(i+=n),this.edgeFlags.left&&(i-=n,o+=n),this.edgeFlags.bottom&&(a+=r),this.edgeFlags.top&&(a-=r,s+=r);let c=this.resizeOptions.invert||`none`;c===`reposition`&&(i<0&&(o+=i,i=-i),a<0&&(s+=a,a=-a));let l=c===`negate`?-1/0:this.resizeOptions.minWidth||0,u=c===`negate`?-1/0:this.resizeOptions.minHeight||0,f=this.resizeOptions.maxWidth||1/0,p=this.resizeOptions.maxHeight||1/0,m=c===`reposition`?1:l||50,h=c===`reposition`?1:u||50;if(this.aspectRatio&&(this.activeEdge===`left`||this.activeEdge===`right`?a=i/this.aspectRatio:this.activeEdge===`top`||this.activeEdge===`bottom`?i=a*this.aspectRatio:Math.abs(i-this.startSize.width)>Math.abs(a-this.startSize.height)?a=i/this.aspectRatio:i=a*this.aspectRatio),i<m&&(this.edgeFlags.left&&(o+=i-m),i=m,this.aspectRatio&&(a=i/this.aspectRatio)),i>f&&(this.edgeFlags.left&&(o+=i-f),i=f,this.aspectRatio&&(a=i/this.aspectRatio)),a<h&&(this.edgeFlags.top&&(s+=a-h),a=h,this.aspectRatio&&(i=a*this.aspectRatio)),a>p&&(this.edgeFlags.top&&(s+=a-p),a=p,this.aspectRatio&&(i=a*this.aspectRatio)),this.resizeOptions.grid&&(i=Math.round(i/this.resizeOptions.grid.width)*this.resizeOptions.grid.width,a=Math.round(a/this.resizeOptions.grid.height)*this.resizeOptions.grid.height),this.resizeOptions.modifiers?.length){let e=this.modifierContext;e.position.x=o,e.position.y=s,e.velocity.x=t.velocity?.x??0,e.velocity.y=t.velocity?.y??0,e.element=this.element,e.startPosition.x=this.startPos.x,e.startPosition.y=this.startPos.y,e.delta.x=n,e.delta.y=r,e.edges.top=this.edgeFlags.top,e.edges.right=this.edgeFlags.right,e.edges.bottom=this.edgeFlags.bottom,e.edges.left=this.edgeFlags.left,e.size.width=i,e.size.height=a,e.startSize.width=this.startSize.width,e.startSize.height=this.startSize.height;let c=d(this.resizeOptions.modifiers,e);o=c.position.x,s=c.position.y,c.size&&(i=c.size.width,a=c.size.height)}this.currentSize={width:i,height:a},this.currentPos={x:o,y:s},this.element.style.width=`${i}px`,this.element.style.height=`${a}px`,(o!==this.startPos.x||s!==this.startPos.y)&&(this.element.style.transform=`translate3d(${o}px, ${s}px, 0)`);let g=i-this.startSize.width,_=a-this.startSize.height,v=this.createResizeEvent(e,g,_);this.resizeOptions.onResizeMove&&this.resizeOptions.onResizeMove(v),this.emit(`resizemove`,v)}handleResizeEnd(e){this.element.style.willChange=``,this.activeEdge=null;let t=this.currentSize.width-this.startSize.width,n=this.currentSize.height-this.startSize.height,r=this.createResizeEvent(e,t,n);this.resizeOptions.onResizeEnd&&this.resizeOptions.onResizeEnd(r),this.emit(`resizeend`,r)}createResizeEvent(e,t,n){let r=this.cachedResizeEvent;return r.target=e.target,r.originalEvent=e.originalEvent,r.pointers=e.pointers,r.isPrimary=e.isPrimary,r.width=this.currentSize.width,r.height=this.currentSize.height,r.deltaWidth=t,r.deltaHeight=n,r.edges.top=this.edgeFlags.top,r.edges.right=this.edgeFlags.right,r.edges.bottom=this.edgeFlags.bottom,r.edges.left=this.edgeFlags.left,r}setSize(e,t){this.currentSize={width:e,height:t},this.element.style.width=`${e}px`,this.element.style.height=`${t}px`}getSize(){return{...this.currentSize}}destroy(){super.destroy(),this.element.removeEventListener(`pointermove`,this.boundUpdateCursor),this.element.style.cursor=``,this.element.style.willChange=``}};function L(e,t){let n=typeof e==`string`?document.querySelector(e):e;if(!n)throw Error(`Element not found: ${e}`);return new I(n,t)}var te=class extends l{constructor(e,t={}){super(e,{...t,threshold:0}),this.gestureActive=!1,this.startDistance=0,this.startAngle=0,this.prevScale=1,this.prevAngle=0,this.gestureOptions=t,this.minPointers=t.minPointers??2,this.priority=15}shouldHandleEvent(e){return!0}getTwoPointers(){if(this.pointers.size<2)return null;let e=this.pointers.values(),t=e.next().value,n=e.next().value;return[t.current,n.current]}computeDistance(e,t){let n=t.x-e.x,r=t.y-e.y;return Math.sqrt(n*n+r*r)}computeAngle(e,t){return Math.atan2(t.y-e.y,t.x-e.x)*180/Math.PI}computeCenter(e,t){return{x:(e.x+t.x)/2,y:(e.y+t.y)/2}}normalizeAngleDelta(e){for(;e>180;)e-=360;for(;e<-180;)e+=360;return e}createGestureEvent(e,t){return{...e,scale:t.scale??1,rotation:t.rotation??0,distance:t.distance??0,angle:t.angle??0,center:t.center??{x:0,y:0},deltaScale:t.deltaScale??0,deltaAngle:t.deltaAngle??0}}update(){if(!this.isActive||this.pointers.size===0)return;let e=this.getTwoPointers();if(!this.gestureActive&&e&&this.pointers.size>=this.minPointers){this.gestureActive=!0;let[t,n]=e;this.startDistance=this.computeDistance(t,n),this.startAngle=this.computeAngle(t,n),this.prevScale=1,this.prevAngle=0;let r={target:this.element,pointers:Array.from(this.pointers.values()),isPrimary:!1,originalEvent:new PointerEvent(`pointermove`)},i=this.createGestureEvent(r,{scale:1,rotation:0,distance:this.startDistance,angle:this.startAngle,center:this.computeCenter(t,n),deltaScale:0,deltaAngle:0});this.gestureOptions.onGestureStart&&this.gestureOptions.onGestureStart(i),this.emit(`gesturestart`,i);return}if(this.gestureActive&&this.pointers.size<this.minPointers){this.endGesture(),super.update();return}if(this.gestureActive&&e){let[t,n]=e,r=this.computeDistance(t,n),i=this.computeAngle(t,n),a=this.computeCenter(t,n),o=this.startDistance>0?r/this.startDistance:1,s=this.normalizeAngleDelta(i-this.startAngle),c=o-this.prevScale,l=this.normalizeAngleDelta(s-this.prevAngle);this.prevScale=o,this.prevAngle=s;let u={target:this.element,pointers:Array.from(this.pointers.values()),isPrimary:!1,originalEvent:new PointerEvent(`pointermove`)},d=this.createGestureEvent(u,{scale:o,rotation:s,distance:r,angle:i,center:a,deltaScale:c,deltaAngle:l});this.gestureOptions.onGestureMove&&this.gestureOptions.onGestureMove(d),this.emit(`gesturemove`,d)}super.update()}endGesture(){if(!this.gestureActive)return;this.gestureActive=!1;let e={target:this.element,pointers:Array.from(this.pointers.values()),isPrimary:!1,originalEvent:new PointerEvent(`pointerup`)},t=this.getTwoPointers(),n=t?this.computeDistance(t[0],t[1]):0,r=t?this.computeAngle(t[0],t[1]):0,i=t?this.computeCenter(t[0],t[1]):{x:0,y:0},a=this.startDistance>0&&n>0?n/this.startDistance:this.prevScale,o=this.createGestureEvent(e,{scale:a,rotation:this.prevAngle,distance:n,angle:r,center:i,deltaScale:0,deltaAngle:0});this.gestureOptions.onGestureEnd&&this.gestureOptions.onGestureEnd(o),this.emit(`gestureend`,o)}destroy(){this.gestureActive&&this.endGesture(),super.destroy()}};function R(e,t){let n=typeof e==`string`?document.querySelector(e):e;if(!n)throw Error(`Element not found: ${e}`);return new te(n,t)}const z=new Map;function B(e,t){z.has(e)||z.set(e,new Set),z.get(e).add(t)}function V(e,t){let n=z.get(e);n&&(n.delete(t),n.size===0&&z.delete(e))}function H(e){let t=z.get(e);return t?Array.from(t):[]}var U=class{on(e,t){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t),this}off(e,t){return this.listeners.get(e)?.delete(t),this}emit(e,t){let n=this.listeners.get(e);if(n)for(let e of n)e(t)}get enabled(){return this._enabled}set enabled(e){this._enabled=e}constructor(e,t={}){this.draggables=[],this.itemStates=[],this.dragItem=null,this.dragIndex=-1,this.currentIndex=-1,this.targetSortable=null,this.targetIndex=-1,this.placeholder=null,this._enabled=!0,this.listeners=new Map,this.container=e,this.options={items:t.items??``,axis:t.axis??`y`,handle:t.handle??``,animationDuration:t.animationDuration??200,dragClass:t.dragClass??`sortable-dragging`,hoverClass:t.hoverClass??`sortable-hover`,group:t.group??``,onSort:t.onSort??(()=>{}),onSortEnd:t.onSortEnd??(()=>{}),onAdd:t.onAdd??(()=>{}),onRemove:t.onRemove??(()=>{}),aria:t.aria??!0},this.options.group&&B(this.options.group,this),this.options.aria&&ee(e),this.setup()}getItems(){return this.options.items?Array.from(this.container.querySelectorAll(this.options.items+`:not(.sortable-placeholder)`)):Array.from(this.container.children).filter(e=>!e.classList.contains(`sortable-placeholder`))}setup(){this.teardown();let e=this.getItems();if(this.options.aria)for(let t=0;t<e.length;t++)C(e[t],t,e.length);for(let t of e){let e={aria:!1,axis:this.options.group?void 0:this.options.axis,handle:this.options.handle||void 0,onDragStart:e=>this.handleDragStart(t,e),onDragMove:e=>this.handleDragMove(t,e),onDragEnd:e=>this.handleDragEnd(t,e)};this.draggables.push(new P(t,e))}}handleDragStart(e,t){if(!this._enabled)return;this.dragItem=e;let n=this.getItems();if(this.dragIndex=n.indexOf(e),this.currentIndex=this.dragIndex,this.targetSortable=null,this.targetIndex=-1,this.snapshotItems(),e.classList.add(this.options.dragClass),e.style.zIndex=`9999`,e.style.position=`relative`,this.options.aria){x(e,!0);let t=e.textContent?.trim()||`Item ${this.dragIndex+1}`;g(p().pickedUp(t,this.dragIndex+1,n.length))}}handleDragMove(e,t){if(!this.dragItem)return;let n=e.getBoundingClientRect(),r=n.left+n.width/2,i=n.top+n.height/2;if(this.options.group){let n=this.findTargetContainer(r,i);if(n&&n!==this){this.setTargetSortable(n,r,i),this.updateWithinIndex(e,t);return}else this.targetSortable&&this.clearTargetSortable()}this.updateWithinIndex(e,t)}updateWithinIndex(e,t){let n=this.options.axis===`y`,r=this.itemStates[this.dragIndex];if(!r)return;let i=n?t.totalY:t.totalX,a=n?r.rect.top+r.rect.height/2+i:r.rect.left+r.rect.width/2+i,o=0;for(let e=0;e<this.itemStates.length;e++){if(e===this.dragIndex)continue;let t=this.itemStates[e];a>(n?t.rect.top+t.rect.height/2:t.rect.left+t.rect.width/2)&&o++}if(o=Math.max(0,Math.min(o,this.itemStates.length-1)),o!==this.currentIndex){this.currentIndex=o,this.animateItems(e);let t={item:e,oldIndex:this.dragIndex,newIndex:o,items:this.getItems()};this.options.onSort(t),this.emit(`sort`,t),this.options.aria&&g(p().movedTo(o+1,this.itemStates.length))}}findTargetContainer(e,t){for(let n of H(this.options.group)){if(n===this)continue;let r=n.container.getBoundingClientRect();if(e>=r.left&&e<=r.right&&t>=r.top&&t<=r.bottom)return n}return null}setTargetSortable(e,t,n){let r=this.targetSortable!==e;if(this.targetSortable=e,r){for(let e of H(this.options.group))e!==this&&e.container.classList.remove(this.options.hoverClass);e.container.classList.add(this.options.hoverClass)}let i=this.options.axis===`y`,a=e.getItems(),o=a.length;for(let e=0;e<a.length;e++){let r=a[e].getBoundingClientRect(),s=i?r.top+r.height/2:r.left+r.width/2;if((i?n:t)<s){o=e;break}}(o!==this.targetIndex||r)&&(this.targetIndex=o,this.updatePlaceholder(e,o))}clearTargetSortable(){this.targetSortable&&this.targetSortable.container.classList.remove(this.options.hoverClass),this.targetSortable=null,this.targetIndex=-1,this.removePlaceholder()}updatePlaceholder(e,t){if(this.removePlaceholder(),!this.dragItem)return;let n=document.createElement(`div`);n.className=`sortable-placeholder`;let r=this.dragItem.getBoundingClientRect();n.style.height=`${r.height}px`,n.style.width=`${r.width}px`,n.style.border=`2px dashed currentColor`,n.style.borderRadius=`6px`,n.style.opacity=`0.3`,n.style.transition=`all 150ms ease`,n.style.boxSizing=`border-box`;let i=e.getItems();t>=i.length?e.container.appendChild(n):i[t].before(n),this.placeholder=n}removePlaceholder(){this.placeholder&&=(this.placeholder.remove(),null)}handleDragEnd(e,t){if(!this.dragItem)return;let n=this.dragIndex,r=this.targetSortable!==null;if(e.classList.remove(this.options.dragClass),e.style.zIndex=``,this.options.aria&&x(e,!1),r&&this.targetSortable){let t=this.targetSortable,r=this.targetIndex;this.removePlaceholder(),t.container.classList.remove(this.options.hoverClass),e.style.transform=``,e.style.transition=``;let i=t.getItems();r>=i.length?t.container.appendChild(e):i[r].before(e);let a=t.getItems().indexOf(e),o={item:e,from:this,to:t,oldIndex:n,newIndex:a};this.options.onRemove(o),this.emit(`remove`,o);let s={item:e,from:this,to:t,oldIndex:n,newIndex:a};t.options.onAdd(s),t.emit(`add`,s);let c={item:e,oldIndex:-1,newIndex:a,items:t.getItems()};t.options.onSortEnd(c),t.emit(`sortend`,c)}else{let t=this.currentIndex;if(n!==t){let e=this.getItems();this.reorderDOM(e,n,t)}let r={item:e,oldIndex:n,newIndex:t,items:this.getItems()};this.options.onSortEnd(r),this.emit(`sortend`,r)}for(let e of this.getItems())e.style.transform=``,e.style.transition=``;if(this.options.aria){let t=e.textContent?.trim()||`Item`,n=this.getItems(),r=n.indexOf(e);g(p().dropped(t,r+1,n.length));for(let e=0;e<n.length;e++)C(n[e],e,n.length)}if(this.dragItem=null,this.dragIndex=-1,this.currentIndex=-1,this.targetSortable=null,this.targetIndex=-1,this.setup(),this.options.group)for(let e of H(this.options.group))e!==this&&e.setup()}snapshotItems(){this.itemStates=this.getItems().map((e,t)=>({el:e,rect:e.getBoundingClientRect(),originalIndex:t}))}animateItems(e){let t=this.options.axis===`y`,n=this.options.animationDuration,r=this.dragIndex,i=this.currentIndex;for(let a=0;a<this.itemStates.length;a++){if(this.itemStates[a].el===e)continue;let o=this.itemStates[a].el,s=0;if(r<i&&a>r&&a<=i){let e=this.itemStates[a-1].rect,n=this.itemStates[a].rect;s=t?e.top-n.top:e.left-n.left}else if(r>i&&a>=i&&a<r){let e=this.itemStates[a+1].rect,n=this.itemStates[a].rect;s=t?e.top-n.top:e.left-n.left}o.style.transition=`transform ${n}ms ease`,o.style.transform=t?`translateY(${s}px)`:`translateX(${s}px)`}}reorderDOM(e,t,n){let r=e[t];t<n?e[n].after(r):e[n].before(r)}refresh(){this.setup()}getOrder(){return this.getItems()}move(e,t){let n=this.getItems();if(e<0||e>=n.length||t<0||t>=n.length||e===t)return;this.reorderDOM(n,e,t);let r={item:n[e],oldIndex:e,newIndex:t,items:this.getItems()};this.options.onSortEnd(r),this.emit(`sortend`,r),this.setup()}teardown(){for(let e of this.draggables)e.destroy();this.draggables=[]}destroy(){this.teardown(),this.removePlaceholder();let e=this.getItems();for(let t of e)t.style.transform=``,t.style.transition=``,this.options.aria&&w(t);this.options.aria&&T(this.container),this.options.group&&V(this.options.group,this)}};function W(e,t){let n=typeof e==`string`?document.querySelector(e):e;if(!n)throw Error(`Container not found: ${e}`);return new U(n,t)}function G(e,t={}){let n=typeof e==`string`?document.querySelector(e):e;if(!n)throw Error(`Element not found: ${e}`);let r=null,i=null,a=null;return t.drag&&(r=F(n,typeof t.drag==`object`?t.drag:{})),t.resize&&(i=L(n,typeof t.resize==`object`?t.resize:{})),t.gesture&&(a=R(n,typeof t.gesture==`object`?t.gesture:{})),{drag:r,resize:i,gesture:a,destroy(){r?.destroy(),i?.destroy(),a?.destroy()}}}function K(e){return function(r={},i=[]){let a=n(null),o=n(null);return t(()=>{if(a.current)return o.current?.destroy(),o.current=e(a.current,r),()=>{o.current?.destroy(),o.current=null}},[a.current,...i]),{ref:a,instance:o}}}const q=K(u),J=K(F),Y=K(L),X=K(R);function Z(e={},r=[]){let i=n(null),a=n(null);return t(()=>{if(i.current)return a.current?.destroy(),a.current=N(i.current,e),()=>{a.current?.destroy(),a.current=null}},[i.current,...r]),{ref:i,instance:a}}function ne(e={},r=[]){let i=n(null),a=n(null);return t(()=>{if(i.current)return a.current?.destroy(),a.current=W(i.current,e),()=>{a.current?.destroy(),a.current=null}},[i.current,...r]),{ref:i,instance:a}}function Q(e={},r=[]){let i=n(null),a=n(null);return t(()=>{if(i.current)return a.current?.destroy(),a.current=G(i.current,e),()=>{a.current?.destroy(),a.current=null}},[i.current,...r]),{ref:i,instance:a}}function $(t){return function({children:n,as:r=`div`,className:i,style:a,...o}){let{ref:s}=t(o,[JSON.stringify(o)]),c=r;return e.createElement(c,{ref:s,className:i,style:a},n)}}const re=$(q),ie=$(J),ae=$(Y),oe=$(X),se=$(Q);export{ie as DraggableComponent,oe as GesturableComponent,re as GripComponent,se as InteractableComponent,ae as ResizableComponent,J as useDraggable,Z as useDropzone,X as useGesturable,q as useGrip,Q as useInteractable,Y as useResizable,ne as useSortable};
|
|
2
|
+
//# sourceMappingURL=pointrix-react.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let e=null,t=new Set,n=new Set,r=null;function i(){return!r&&typeof PointerEvent<`u`&&(r=new PointerEvent(`pointermove`)),r}function a(){e===null&&(e=requestAnimationFrame(()=>{e=null;for(let e of n)e.update();if(n.clear(),t.size>0){let e=!1;for(let n of t)if(n.hasActivePointers()){e=!0;break}e&&a()}}))}var o=class e{on(e,t){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t),this}off(e,t){return this.listeners.get(e)?.delete(t),this}emit(e,t){let n=this.listeners.get(e);if(n)for(let e of n)e(t)}get enabled(){return this._enabled}set enabled(r){this._enabled=r,!r&&this.isActive&&(this.pointers.clear(),this.pointersCache=[],this.isActive=!1,t.delete(this),n.delete(this),e.activeInstance.get(this.element)===this&&e.activeInstance.set(this.element,null),document.removeEventListener(`pointermove`,this.onPointerMove),document.removeEventListener(`pointerup`,this.onPointerUp),document.removeEventListener(`pointercancel`,this.onPointerUp))}get interacting(){return this.isActive}static{this.elementInstances=new WeakMap}static{this.activeInstance=new WeakMap}static{this.elementListeners=new WeakMap}constructor(t,n={}){this.pointers=new Map,this.pointersCache=[],this.isActive=!1,this.lastUpdate=0,this.priority=0,this._enabled=!0,this.holdTimer=null,this.holdEventTimer=null,this.lastTapTime=0,this.lastTapTarget=null,this.listeners=new Map,this.element=t,this.options={threshold:3,preventScroll:!0,styleCursor:!0,...n},this.registerInstance();let r=e.elementInstances.get(t);if(r&&r.length===1&&(t.style.touchAction=this.options.touchAction??`none`,t.style.userSelect=`none`,t.style.webkitUserSelect=`none`),this.onPointerDown=this.onPointerDown.bind(this),this.onPointerMove=this.onPointerMove.bind(this),this.onPointerUp=this.onPointerUp.bind(this),r&&r.length===1){let n=n=>e.handleElementPointerDown(t,n);e.elementListeners.set(t,n),t.addEventListener(`pointerdown`,n)}}registerInstance(){let t=e.elementInstances.get(this.element);t?t.push(this):e.elementInstances.set(this.element,[this])}unregisterInstance(){let t=e.elementInstances.get(this.element);if(!t)return;let n=t.indexOf(this);n>=0&&(t.splice(n,1),t.length===0?(e.elementInstances.delete(this.element),e.activeInstance.delete(this.element),e.elementListeners.delete(this.element)):e.elementInstances.set(this.element,t))}shouldHandleEvent(e){return!0}checkEventFilters(e){let t=e.target;return t?!(this.options.ignoreFrom&&t.closest(this.options.ignoreFrom)||this.options.allowFrom&&!t.closest(this.options.allowFrom)):!0}static handleElementPointerDown(t,n){let r=e.elementInstances.get(t);if(!r)return;let i=e.activeInstance.get(t);if(i){i.onPointerDown(n);return}let a=null,o=-1;for(let e of r)e.checkEventFilters(n)&&e.shouldHandleEvent(n)&&e.enabled&&e.priority>o&&(a=e,o=e.priority);a&&(e.activeInstance.set(t,a),a.handlePointerDown(n))}onPointerDown(e){this.handlePointerDown(e)}handlePointerDown(e){if(this.options.mouseButtons&&!(e.buttons&this.options.mouseButtons))return;this.options.preventScroll&&e.preventDefault();let t={x:e.clientX,y:e.clientY},n={id:e.pointerId,start:{...t},current:{...t},previous:{...t},delta:{x:0,y:0},total:{x:0,y:0},velocity:{x:0,y:0},timestamp:e.timeStamp};this.pointers.set(e.pointerId,n),this.pointersCache=Array.from(this.pointers.values()),this.pointers.size===1&&(document.addEventListener(`pointermove`,this.onPointerMove,{passive:!1}),document.addEventListener(`pointerup`,this.onPointerUp),document.addEventListener(`pointercancel`,this.onPointerUp)),this.options.onHold&&(this.holdEventTimer&&clearTimeout(this.holdEventTimer),this.holdEventTimer=setTimeout(()=>{this.holdEventTimer=null,this.pointers.size>0&&!this.isActive&&this.options.onHold(this.createEvent(e))},this.options.holdDuration??600));let r=this.options.holdDelay??0;r>0?(this.holdTimer&&clearTimeout(this.holdTimer),this.holdTimer=setTimeout(()=>{this.holdTimer=null,!this.isActive&&this.pointers.size>0&&this.start(e)},r)):this.options.threshold===0&&this.start(e)}onPointerMove(e){let r=this.pointers.get(e.pointerId);if(!r)return;let i=e.clientX,o=e.clientY;if(r.current.x!==i||r.current.y!==o){if(r.current.x=i,r.current.y=o,!this.isActive){let t=r.current.x-r.start.x,n=r.current.y-r.start.y;Math.sqrt(t*t+n*n)>=(this.options.threshold||3)&&(this.holdTimer&&=(clearTimeout(this.holdTimer),null),this.holdEventTimer&&=(clearTimeout(this.holdEventTimer),null),this.start(e))}this.isActive&&(this.options.preventScroll&&e.preventDefault(),t.add(this),n.add(this),a())}}onPointerUp(e){if(this.pointers.get(e.pointerId)&&(this.pointers.delete(e.pointerId),this.pointersCache=Array.from(this.pointers.values()),this.holdTimer&&=(clearTimeout(this.holdTimer),null),this.holdEventTimer&&=(clearTimeout(this.holdEventTimer),null),this.pointers.size===0))if(document.removeEventListener(`pointermove`,this.onPointerMove),document.removeEventListener(`pointerup`,this.onPointerUp),document.removeEventListener(`pointercancel`,this.onPointerUp),this.isActive)this.end(e);else{let t=this.createEvent(e);this.options.onTap&&this.options.onTap(t),this.emit(`tap`,t);let n=e.timeStamp;this.options.onDoubleTap&&n-this.lastTapTime<300&&this.lastTapTarget===e.target&&this.options.onDoubleTap(t),this.lastTapTime=n,this.lastTapTarget=e.target}}start(e){this.isActive=!0,t.add(this);let n=this.createEvent(e);this.options.onStart&&this.options.onStart(n),this.emit(`start`,n)}end(r){this.isActive=!1,t.delete(this),n.delete(this),e.activeInstance.get(this.element)===this&&e.activeInstance.set(this.element,null);let i=this.createEvent(r);this.options.onEnd&&this.options.onEnd(i),this.emit(`end`,i)}update(){if(!this.isActive||this.pointers.size===0)return;let e=performance.now(),t=e-this.lastUpdate;this.lastUpdate=e;let r=!1,a=!1;if(this.pointers.forEach(e=>{let n=e.current.x-e.previous.x,i=e.current.y-e.previous.y;if(n!==0||i!==0){if(r=!0,e.delta.x=n,e.delta.y=i,e.total.x=e.current.x-e.start.x,e.total.y=e.current.y-e.start.y,t>0){let r=n/t*1e3,a=i/t*1e3;e.velocity.x=e.velocity.x*.7+r*.3,e.velocity.y=e.velocity.y*.7+a*.3}e.previous.x=e.current.x,e.previous.y=e.current.y}(Math.abs(e.velocity.x)>.1||Math.abs(e.velocity.y)>.1)&&(a=!0)}),r){let e=i(),t=this.createEvent(e);this.options.onMove&&this.options.onMove(t),this.emit(`move`,t)}a&&n.add(this)}hasActivePointers(){if(!this.isActive||this.pointers.size===0)return!1;for(let e of this.pointers.values())if(Math.abs(e.velocity.x)>.1||Math.abs(e.velocity.y)>.1)return!0;return this.pointers.size>0}createEvent(e){return{target:this.element,pointers:this.pointersCache,isPrimary:e.isPrimary,originalEvent:e}}destroy(){this.holdTimer&&=(clearTimeout(this.holdTimer),null),this.holdEventTimer&&=(clearTimeout(this.holdEventTimer),null),this.unregisterInstance();let n=e.elementInstances.get(this.element);if(!n||n.length===0){let t=e.elementListeners.get(this.element);t&&(this.element.removeEventListener(`pointerdown`,t),e.elementListeners.delete(this.element)),this.element.style.touchAction=``,this.element.style.userSelect=``,this.element.style.webkitUserSelect=``}this.pointers.size>0&&(document.removeEventListener(`pointermove`,this.onPointerMove),document.removeEventListener(`pointerup`,this.onPointerUp),document.removeEventListener(`pointercancel`,this.onPointerUp)),t.delete(this),this.pointers.clear(),this.pointersCache=[]}};function s(e,t){let n=t.position.x,r=t.position.y,i=t.velocity.x,a=t.velocity.y,o=t.size?.width,s=t.size?.height;for(let c of e){t.position.x=n,t.position.y=r,t.velocity.x=i,t.velocity.y=a,t.size&&o!==void 0&&s!==void 0&&(t.size.width=o,t.size.height=s);let e=c.modify(t);n=e.position.x,r=e.position.y,i=e.velocity.x,a=e.velocity.y,e.size&&(o=e.size.width,s=e.size.height)}return{position:{x:n,y:r},velocity:{x:i,y:a},size:o!==void 0&&s!==void 0?{width:o,height:s}:void 0}}var c=class extends o{constructor(e,t={}){let n={edges:{top:!0,right:!0,bottom:!0,left:!0},handleSize:10,minWidth:50,minHeight:50,...t};super(e,{...n,threshold:0,onStart:e=>{this.handleResizeStart(e),t.onStart?.(e)},onMove:e=>{this.handleResizeMove(e),t.onMove?.(e)},onEnd:e=>{this.handleResizeEnd(e),t.onEnd?.(e)}}),this.startSize={width:0,height:0},this.startPos={x:0,y:0},this.currentSize={width:0,height:0},this.currentPos={x:0,y:0},this.activeEdge=null,this.edgeFlags={top:!1,right:!1,bottom:!1,left:!1},this.aspectRatio=null,this.transformNormalized=!1,this.modifierContext={position:{x:0,y:0},velocity:{x:0,y:0},element:null,startPosition:{x:0,y:0},delta:{x:0,y:0},edges:{top:!1,right:!1,bottom:!1,left:!1},size:{width:0,height:0},startSize:{width:0,height:0}},this.cachedResizeEvent={target:null,originalEvent:null,pointers:[],isPrimary:!0,width:0,height:0,deltaWidth:0,deltaHeight:0,edges:{top:!1,right:!1,bottom:!1,left:!1}},this.resizeOptions=n,this.resizeOptions.square&&(this.resizeOptions.aspectRatio=1),this.priority=10,this.boundUpdateCursor=this.updateCursor.bind(this),e.addEventListener(`pointermove`,this.boundUpdateCursor),e.style.position=`relative`}normalizeInitialTransform(e){let t=window.getComputedStyle(e).transform;if(t&&t!==`none`){let n=t.match(/matrix.*\((.+)\)/);if(n){let t=n[1].split(`, `),r=parseFloat(t[4])||0,i=parseFloat(t[5])||0;e.style.transform=`translate3d(${r}px, ${i}px, 0)`}}}shouldHandleEvent(e){return this.detectEdge(e)!==null}updateCursor(e){if(this.activeEdge)return;let t=this.detectEdge(e);this.element.style.cursor=this.resizeOptions.cursorChecker?this.resizeOptions.cursorChecker(t):this.getCursor(t)}detectEdge(e){let t=this.element.getBoundingClientRect(),n=e.clientX-t.left,r=e.clientY-t.top,i=this.resizeOptions.handleSize||10,a=this.resizeOptions.edges||{},o=a.top&&r<i,s=a.bottom&&r>t.height-i,c=a.left&&n<i,l=a.right&&n>t.width-i;return o&&c?`top-left`:o&&l?`top-right`:s&&c?`bottom-left`:s&&l?`bottom-right`:o?`top`:s?`bottom`:c?`left`:l?`right`:null}getCursor(e){switch(e){case`top`:case`bottom`:return`ns-resize`;case`left`:case`right`:return`ew-resize`;case`top-left`:case`bottom-right`:return`nwse-resize`;case`top-right`:case`bottom-left`:return`nesw-resize`;default:return``}}handleResizeStart(e){this.transformNormalized||=(this.normalizeInitialTransform(this.element),!0);let t=this.element.getBoundingClientRect(),n=window.getComputedStyle(this.element);if(this.activeEdge=this.detectEdge(e.originalEvent),!this.activeEdge)return;this.edgeFlags.top=this.activeEdge.includes(`top`),this.edgeFlags.right=this.activeEdge.includes(`right`),this.edgeFlags.bottom=this.activeEdge.includes(`bottom`),this.edgeFlags.left=this.activeEdge.includes(`left`),this.startSize={width:parseFloat(n.width)||t.width,height:parseFloat(n.height)||t.height},this.currentSize={...this.startSize};let r=n.transform;if(r&&r!==`none`){let e=r.match(/matrix.*\((.+)\)/);if(e){let t=e[1].split(`, `);this.startPos.x=parseFloat(t[4])||0,this.startPos.y=parseFloat(t[5])||0}}else this.startPos.x=0,this.startPos.y=0;this.currentPos={...this.startPos},this.resizeOptions.aspectRatio===`preserve`?this.aspectRatio=this.startSize.width/this.startSize.height:typeof this.resizeOptions.aspectRatio==`number`&&(this.aspectRatio=this.resizeOptions.aspectRatio),this.element.style.willChange=`width, height, transform`;let i=this.createResizeEvent(e,0,0);this.resizeOptions.onResizeStart&&this.resizeOptions.onResizeStart(i),this.emit(`resizestart`,i)}handleResizeMove(e){if(!this.activeEdge)return;let t=e.pointers[0],n=t.total.x,r=t.total.y,i=this.startSize.width,a=this.startSize.height,o=this.startPos.x,c=this.startPos.y;this.edgeFlags.right&&(i+=n),this.edgeFlags.left&&(i-=n,o+=n),this.edgeFlags.bottom&&(a+=r),this.edgeFlags.top&&(a-=r,c+=r);let l=this.resizeOptions.invert||`none`;l===`reposition`&&(i<0&&(o+=i,i=-i),a<0&&(c+=a,a=-a));let u=l===`negate`?-1/0:this.resizeOptions.minWidth||0,d=l===`negate`?-1/0:this.resizeOptions.minHeight||0,f=this.resizeOptions.maxWidth||1/0,p=this.resizeOptions.maxHeight||1/0,m=l===`reposition`?1:u||50,h=l===`reposition`?1:d||50;if(this.aspectRatio&&(this.activeEdge===`left`||this.activeEdge===`right`?a=i/this.aspectRatio:this.activeEdge===`top`||this.activeEdge===`bottom`?i=a*this.aspectRatio:Math.abs(i-this.startSize.width)>Math.abs(a-this.startSize.height)?a=i/this.aspectRatio:i=a*this.aspectRatio),i<m&&(this.edgeFlags.left&&(o+=i-m),i=m,this.aspectRatio&&(a=i/this.aspectRatio)),i>f&&(this.edgeFlags.left&&(o+=i-f),i=f,this.aspectRatio&&(a=i/this.aspectRatio)),a<h&&(this.edgeFlags.top&&(c+=a-h),a=h,this.aspectRatio&&(i=a*this.aspectRatio)),a>p&&(this.edgeFlags.top&&(c+=a-p),a=p,this.aspectRatio&&(i=a*this.aspectRatio)),this.resizeOptions.grid&&(i=Math.round(i/this.resizeOptions.grid.width)*this.resizeOptions.grid.width,a=Math.round(a/this.resizeOptions.grid.height)*this.resizeOptions.grid.height),this.resizeOptions.modifiers?.length){let e=this.modifierContext;e.position.x=o,e.position.y=c,e.velocity.x=t.velocity?.x??0,e.velocity.y=t.velocity?.y??0,e.element=this.element,e.startPosition.x=this.startPos.x,e.startPosition.y=this.startPos.y,e.delta.x=n,e.delta.y=r,e.edges.top=this.edgeFlags.top,e.edges.right=this.edgeFlags.right,e.edges.bottom=this.edgeFlags.bottom,e.edges.left=this.edgeFlags.left,e.size.width=i,e.size.height=a,e.startSize.width=this.startSize.width,e.startSize.height=this.startSize.height;let l=s(this.resizeOptions.modifiers,e);o=l.position.x,c=l.position.y,l.size&&(i=l.size.width,a=l.size.height)}this.currentSize={width:i,height:a},this.currentPos={x:o,y:c},this.element.style.width=`${i}px`,this.element.style.height=`${a}px`,(o!==this.startPos.x||c!==this.startPos.y)&&(this.element.style.transform=`translate3d(${o}px, ${c}px, 0)`);let g=i-this.startSize.width,_=a-this.startSize.height,v=this.createResizeEvent(e,g,_);this.resizeOptions.onResizeMove&&this.resizeOptions.onResizeMove(v),this.emit(`resizemove`,v)}handleResizeEnd(e){this.element.style.willChange=``,this.activeEdge=null;let t=this.currentSize.width-this.startSize.width,n=this.currentSize.height-this.startSize.height,r=this.createResizeEvent(e,t,n);this.resizeOptions.onResizeEnd&&this.resizeOptions.onResizeEnd(r),this.emit(`resizeend`,r)}createResizeEvent(e,t,n){let r=this.cachedResizeEvent;return r.target=e.target,r.originalEvent=e.originalEvent,r.pointers=e.pointers,r.isPrimary=e.isPrimary,r.width=this.currentSize.width,r.height=this.currentSize.height,r.deltaWidth=t,r.deltaHeight=n,r.edges.top=this.edgeFlags.top,r.edges.right=this.edgeFlags.right,r.edges.bottom=this.edgeFlags.bottom,r.edges.left=this.edgeFlags.left,r}setSize(e,t){this.currentSize={width:e,height:t},this.element.style.width=`${e}px`,this.element.style.height=`${t}px`}getSize(){return{...this.currentSize}}destroy(){super.destroy(),this.element.removeEventListener(`pointermove`,this.boundUpdateCursor),this.element.style.cursor=``,this.element.style.willChange=``}};function l(e,t){let n=typeof e==`string`?document.querySelector(e):e;if(!n)throw Error(`Element not found: ${e}`);return new c(n,t)}exports.Resizable=c,exports.default=l,exports.resizable=l;
|