@waveform-playlist/browser 5.0.0-alpha.3 → 5.0.0-alpha.5

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/dist/index.d.ts CHANGED
@@ -206,6 +206,37 @@ export declare const DownloadAnnotationsButton: default_2.FC<{
206
206
  className?: string;
207
207
  }>;
208
208
 
209
+ /**
210
+ * Hook for configuring @dnd-kit sensors for clip dragging
211
+ *
212
+ * Provides consistent drag activation behavior across all examples.
213
+ * Supports both desktop (immediate feedback) and mobile (delay-based) interactions.
214
+ */
215
+ declare interface DragSensorOptions {
216
+ /**
217
+ * Enable mobile-optimized touch handling with delay-based activation.
218
+ * When true, uses TouchSensor with 250ms delay to distinguish drag from scroll.
219
+ * When false (default), uses PointerSensor with 1px activation for immediate feedback.
220
+ */
221
+ touchOptimized?: boolean;
222
+ /**
223
+ * Delay in milliseconds before touch drag activates (only when touchOptimized is true).
224
+ * Default: 250ms - long enough to distinguish from scroll intent
225
+ */
226
+ touchDelay?: number;
227
+ /**
228
+ * Distance tolerance during touch delay (only when touchOptimized is true).
229
+ * If finger moves more than this during delay, drag is cancelled.
230
+ * Default: 5px - allows slight finger movement
231
+ */
232
+ touchTolerance?: number;
233
+ /**
234
+ * Distance in pixels before mouse drag activates.
235
+ * Default: 1px for immediate feedback on desktop
236
+ */
237
+ mouseDistance?: number;
238
+ }
239
+
209
240
  /**
210
241
  * Editable annotations checkbox that uses the playlist context
211
242
  * Uses split contexts to avoid re-rendering during animation
@@ -1050,17 +1081,29 @@ declare interface UseClipSplittingResult {
1050
1081
  splitClipAt: (trackIndex: number, clipIndex: number, splitTime: number) => boolean;
1051
1082
  }
1052
1083
 
1053
- /**
1054
- * Hook for configuring @dnd-kit sensors for clip dragging
1055
- *
1056
- * Provides consistent drag activation behavior across all examples
1057
- */
1058
1084
  /**
1059
1085
  * Returns configured sensors for @dnd-kit drag operations
1060
1086
  *
1061
- * @returns Configured sensors with 1px activation distance for immediate feedback
1087
+ * @param options - Configuration options for drag sensors
1088
+ * @returns Configured sensors appropriate for the interaction mode
1089
+ *
1090
+ * @example
1091
+ * // Desktop-optimized (default)
1092
+ * const sensors = useDragSensors();
1093
+ *
1094
+ * @example
1095
+ * // Mobile-optimized with touch delay
1096
+ * const sensors = useDragSensors({ touchOptimized: true });
1097
+ *
1098
+ * @example
1099
+ * // Custom touch settings
1100
+ * const sensors = useDragSensors({
1101
+ * touchOptimized: true,
1102
+ * touchDelay: 300,
1103
+ * touchTolerance: 8
1104
+ * });
1062
1105
  */
1063
- export declare function useDragSensors(): SensorDescriptor<SensorOptions>[];
1106
+ export declare function useDragSensors(options?: DragSensorOptions): SensorDescriptor<SensorOptions>[];
1064
1107
 
1065
1108
  /**
1066
1109
  * Hook for managing a dynamic chain of audio effects with real-time parameter updates
@@ -1496,6 +1539,12 @@ export declare interface WaveformProps {
1496
1539
  showClipHeaders?: boolean;
1497
1540
  interactiveClips?: boolean;
1498
1541
  showFades?: boolean;
1542
+ /**
1543
+ * Enable mobile-optimized touch interactions.
1544
+ * When true, increases touch target sizes for clip boundaries.
1545
+ * Use with useDragSensors({ touchOptimized: true }) for best results.
1546
+ */
1547
+ touchOptimized?: boolean;
1499
1548
  recordingState?: {
1500
1549
  isRecording: boolean;
1501
1550
  trackId: string;