Quellcode durchsuchen

_findDraggable optional value, val can be skipped.

Ievgen Naida vor 5 Jahren
Ursprung
Commit
9b63b1656d
1 geänderte Dateien mit 12 neuen und 5 gelöschten Zeilen
  1. 12 5
      src/timeline.ts

+ 12 - 5
src/timeline.ts

@@ -1729,7 +1729,7 @@ export class Timeline extends TimelineEventsEmitter {
    * @param Array
    * @param val current mouse value
    */
-  _findDraggable(elements: Array<TimelineClickableElement>, val: number): TimelineClickableElement {
+  _findDraggable(elements: Array<TimelineClickableElement>, val: number | null = null): TimelineClickableElement {
     // filter and sort: Timeline, individual keyframes, stripes (distance).
     const getPriority = (type: TimelineElementType): number => {
       if (type === TimelineElementType.Timeline) {
@@ -1743,15 +1743,19 @@ export class Timeline extends TimelineEventsEmitter {
     };
     const filteredElements = elements.filter((element) => {
       if (element.type === TimelineElementType.Keyframe) {
-        const draggable =
-          (this._options.keyframesDraggable === undefined ? true : !!this._options.keyframesDraggable) && (element.keyframe.draggable === undefined ? true : !!element.keyframe.draggable);
+        let draggable = true;
+        if (this._options) {
+          draggable = (this._options.keyframesDraggable === undefined ? true : !!this._options.keyframesDraggable) && (element.keyframe.draggable === undefined ? true : !!element.keyframe.draggable);
+        }
 
         if (!draggable) {
           return false;
         }
       } else if (element.type === TimelineElementType.Stripe) {
-        const draggable =
-          (this._options.stripesDraggable === undefined ? true : !!this._options.stripesDraggable) && (element.row.stripeDraggable === undefined ? true : !!element.row.stripeDraggable);
+        let draggable = true;
+        if (this._options) {
+          draggable = (this._options.stripesDraggable === undefined ? true : !!this._options.stripesDraggable) && (element.row.stripeDraggable === undefined ? true : !!element.row.stripeDraggable);
+        }
         if (!draggable) {
           return false;
         }
@@ -1765,6 +1769,9 @@ export class Timeline extends TimelineEventsEmitter {
       const prioA = getPriority(a.type);
       const prioB = getPriority(b.type);
       if (prioA == prioB) {
+        if (val === null) {
+          return 0;
+        }
         return TimelineUtils.getDistance(a.val, val) > TimelineUtils.getDistance(b.val, val) ? 1 : 0;
       }