@checksub_team/peaks_timeline 1.4.20 → 1.4.24
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/package.json +1 -1
- package/peaks.js +9 -29
- package/src/main.js +7 -7
- package/src/player.js +3 -3
- package/src/segment.js +1 -13
- package/src/segments-group.js +10 -31
- package/src/sources-layer.js +3 -1
package/package.json
CHANGED
package/peaks.js
CHANGED
|
@@ -15419,7 +15419,8 @@ module.exports = function (Colors, EventEmitter, TimelineSegments, TimelineSourc
|
|
|
15419
15419
|
autoScrollThreshold: 0.05,
|
|
15420
15420
|
enableLineIndicatorContextMenu: true,
|
|
15421
15421
|
minSourceSize: 0.05,
|
|
15422
|
-
minSegmentSize: 0.2
|
|
15422
|
+
minSegmentSize: 0.2,
|
|
15423
|
+
canMoveSourcesBetweenLines: true
|
|
15423
15424
|
};
|
|
15424
15425
|
this.logger = console.error.bind(console);
|
|
15425
15426
|
return this;
|
|
@@ -15561,9 +15562,6 @@ module.exports = function (Colors, EventEmitter, TimelineSegments, TimelineSourc
|
|
|
15561
15562
|
Peaks.prototype.allowInteractions = function (forSources, forSegments) {
|
|
15562
15563
|
return this.view.allowInteractions(forSources, forSegments);
|
|
15563
15564
|
};
|
|
15564
|
-
Peaks.prototype.checkOverlapping = function (segment, message) {
|
|
15565
|
-
return this.view.getSegmentsGroup().checkOverlapping(segment, message);
|
|
15566
|
-
};
|
|
15567
15565
|
Peaks.prototype._addWindowResizeHandler = function () {
|
|
15568
15566
|
this._onResize = this._onResize.bind(this);
|
|
15569
15567
|
window.addEventListener('resize', this._onResize);
|
|
@@ -15992,17 +15990,17 @@ module.exports = function (Utils) {
|
|
|
15992
15990
|
};
|
|
15993
15991
|
Player.prototype.play = function () {
|
|
15994
15992
|
if (!this._playInterval) {
|
|
15995
|
-
var prevTime =
|
|
15993
|
+
var prevTime = performance.now();
|
|
15996
15994
|
var time;
|
|
15997
15995
|
var self = this;
|
|
15998
15996
|
this._isPlaying = true;
|
|
15999
15997
|
this._peaks.overrideInteractions(true, false);
|
|
16000
15998
|
this._playInterval = setInterval(function () {
|
|
16001
|
-
time =
|
|
15999
|
+
time = performance.now();
|
|
16002
16000
|
self._currentTime += (time - prevTime) / 1000 * self._speed;
|
|
16003
16001
|
prevTime = time;
|
|
16004
16002
|
self._peaks.emit('timeline.update', self._currentTime);
|
|
16005
|
-
},
|
|
16003
|
+
}, 20);
|
|
16006
16004
|
this._peaks.emit('timeline.play', this._currentTime);
|
|
16007
16005
|
}
|
|
16008
16006
|
};
|
|
@@ -16624,7 +16622,7 @@ module.exports = function (Utils) {
|
|
|
16624
16622
|
}
|
|
16625
16623
|
if (options.endTime < 0) {
|
|
16626
16624
|
options.endTime = 0;
|
|
16627
|
-
} else if (options.endTime
|
|
16625
|
+
} else if (options.endTime - options.startTime < peaks.options.minSegmentSize) {
|
|
16628
16626
|
options.endTime = options.startTime + peaks.options.minSegmentSize;
|
|
16629
16627
|
}
|
|
16630
16628
|
options.startTime = Utils.roundTime(options.startTime);
|
|
@@ -16750,7 +16748,6 @@ module.exports = function (Utils) {
|
|
|
16750
16748
|
};
|
|
16751
16749
|
Utils.extend(opts, options);
|
|
16752
16750
|
validateSegment(this._peaks, opts, 'update()');
|
|
16753
|
-
this._peaks.checkOverlapping(this, 'overlapping before manual update');
|
|
16754
16751
|
this._startTime = opts.startTime;
|
|
16755
16752
|
this._endTime = opts.endTime;
|
|
16756
16753
|
this._labelText = opts.labelText;
|
|
@@ -16759,7 +16756,6 @@ module.exports = function (Utils) {
|
|
|
16759
16756
|
this._handleTextColor = opts.handleTextColor;
|
|
16760
16757
|
this._opacity = opts.opacity;
|
|
16761
16758
|
this._editable = opts.editable;
|
|
16762
|
-
this._peaks.checkOverlapping(this, 'overlapping after manual update');
|
|
16763
16759
|
this._peaks.emit('segment.updated', this);
|
|
16764
16760
|
};
|
|
16765
16761
|
Segment.prototype.isVisible = function (startTime, endTime) {
|
|
@@ -16780,7 +16776,6 @@ module.exports = function (SegmentShape, Utils, Konva) {
|
|
|
16780
16776
|
this._segmentShapes = {};
|
|
16781
16777
|
this._group = new Konva.Group();
|
|
16782
16778
|
this._updatedSegments = [];
|
|
16783
|
-
this._overlappingSegments = [];
|
|
16784
16779
|
this._isMagnetized = false;
|
|
16785
16780
|
this._peaks.on('segment.updated', this._onSegmentsUpdate.bind(this));
|
|
16786
16781
|
this._peaks.on('segments.add', this._onSegmentsAdd.bind(this));
|
|
@@ -16830,7 +16825,6 @@ module.exports = function (SegmentShape, Utils, Konva) {
|
|
|
16830
16825
|
return activeSegment;
|
|
16831
16826
|
};
|
|
16832
16827
|
SegmentsGroup.prototype._onSegmentsUpdate = function (segment) {
|
|
16833
|
-
this._overlappingSegments = [];
|
|
16834
16828
|
if (this._segments[segment.id]) {
|
|
16835
16829
|
var redraw = false;
|
|
16836
16830
|
var segmentShape = this._segmentShapes[segment.id];
|
|
@@ -16856,7 +16850,6 @@ module.exports = function (SegmentShape, Utils, Konva) {
|
|
|
16856
16850
|
SegmentsGroup.prototype._onSegmentUpdated = function () {
|
|
16857
16851
|
this._peaks.emit('segments.updated', this._updatedSegments);
|
|
16858
16852
|
this._updatedSegments = [];
|
|
16859
|
-
this._overlappingSegments = [];
|
|
16860
16853
|
};
|
|
16861
16854
|
SegmentsGroup.prototype._onSegmentsAdd = function (segments) {
|
|
16862
16855
|
var self = this;
|
|
@@ -17041,7 +17034,6 @@ module.exports = function (SegmentShape, Utils, Konva) {
|
|
|
17041
17034
|
}
|
|
17042
17035
|
};
|
|
17043
17036
|
SegmentsGroup.prototype.updateSegment = function (segment, newStartX, newEndX) {
|
|
17044
|
-
this.checkOverlapping(segment, 'overlapping before dragging');
|
|
17045
17037
|
var newXs = this.manageCollision(segment, newStartX, newEndX);
|
|
17046
17038
|
if (newXs.startX !== null) {
|
|
17047
17039
|
segment.startTime = this._view.pixelsToTime(newXs.startX);
|
|
@@ -17050,25 +17042,11 @@ module.exports = function (SegmentShape, Utils, Konva) {
|
|
|
17050
17042
|
segment.endTime = this._view.pixelsToTime(newXs.endX);
|
|
17051
17043
|
}
|
|
17052
17044
|
if (newXs) {
|
|
17053
|
-
this.checkOverlapping(segment, 'overlapping after dragging');
|
|
17054
17045
|
this._updateSegment(segment);
|
|
17055
17046
|
this.addToUpdatedSegments(segment);
|
|
17056
17047
|
this._draw();
|
|
17057
17048
|
}
|
|
17058
17049
|
};
|
|
17059
|
-
SegmentsGroup.prototype.checkOverlapping = function (segment, message) {
|
|
17060
|
-
if (this._segments[segment.id].prevSegmentId && this._segments[this._segments[segment.id].prevSegmentId].segment.endTime > segment.startTime || this._segments[segment.id].nextSegmentId && this._segments[this._segments[segment.id].nextSegmentId].segment.startTime < segment.endTime) {
|
|
17061
|
-
if (!this._overlappingSegments.includes(segment.id)) {
|
|
17062
|
-
this._peaks.emit('segments.overlap', {
|
|
17063
|
-
message: message,
|
|
17064
|
-
segment: segment,
|
|
17065
|
-
prevSegment: this._segments[segment.id].prevSegmentId ? this._segments[this._segments[segment.id].prevSegmentId].segment : null,
|
|
17066
|
-
nextSegment: this._segments[segment.id].nextSegmentId ? this._segments[this._segments[segment.id].nextSegmentId].segment : null
|
|
17067
|
-
});
|
|
17068
|
-
this._overlappingSegments.push(segment.id);
|
|
17069
|
-
}
|
|
17070
|
-
}
|
|
17071
|
-
};
|
|
17072
17050
|
SegmentsGroup.prototype.manageCollision = function (segment, newStartX, newEndX) {
|
|
17073
17051
|
var newStartTime = null;
|
|
17074
17052
|
var newEndTime = null;
|
|
@@ -18671,7 +18649,9 @@ module.exports = function (SourceGroup, SegmentsGroup, Lines, DataRetriever, Uti
|
|
|
18671
18649
|
endX: newEndX,
|
|
18672
18650
|
updateWidth: false
|
|
18673
18651
|
};
|
|
18674
|
-
this.
|
|
18652
|
+
if (this._peaks.options.canMoveSourcesBetweenLines) {
|
|
18653
|
+
this.manageVerticalPosition(source, newY);
|
|
18654
|
+
}
|
|
18675
18655
|
newXs = this.manageSourceOrder(source, newStartX, newEndX);
|
|
18676
18656
|
newXs = this.manageCollision(source, newXs.startX, newXs.endX);
|
|
18677
18657
|
source.updateTimes(newXs.startX !== null ? this._view.pixelsToTime(newXs.startX) : null, newXs.endX !== null ? this._view.pixelsToTime(newXs.endX) : null);
|
package/src/main.js
CHANGED
|
@@ -310,7 +310,13 @@ define([
|
|
|
310
310
|
/**
|
|
311
311
|
* The minimal size of a segment, in seconds
|
|
312
312
|
*/
|
|
313
|
-
minSegmentSize: 0.2
|
|
313
|
+
minSegmentSize: 0.2,
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Indicates whether or not sources can be dragged
|
|
317
|
+
* from one line to another
|
|
318
|
+
*/
|
|
319
|
+
canMoveSourcesBetweenLines: true
|
|
314
320
|
};
|
|
315
321
|
|
|
316
322
|
/**
|
|
@@ -622,12 +628,6 @@ define([
|
|
|
622
628
|
.allowInteractions(forSources, forSegments);
|
|
623
629
|
};
|
|
624
630
|
|
|
625
|
-
Peaks.prototype.checkOverlapping = function(segment, message) {
|
|
626
|
-
return this.view
|
|
627
|
-
.getSegmentsGroup()
|
|
628
|
-
.checkOverlapping(segment, message);
|
|
629
|
-
};
|
|
630
|
-
|
|
631
631
|
Peaks.prototype._addWindowResizeHandler = function() {
|
|
632
632
|
this._onResize = this._onResize.bind(this);
|
|
633
633
|
window.addEventListener('resize', this._onResize);
|
package/src/player.js
CHANGED
|
@@ -66,7 +66,7 @@ define([
|
|
|
66
66
|
|
|
67
67
|
Player.prototype.play = function() {
|
|
68
68
|
if (!this._playInterval) {
|
|
69
|
-
var prevTime =
|
|
69
|
+
var prevTime = performance.now();
|
|
70
70
|
var time;
|
|
71
71
|
var self = this;
|
|
72
72
|
|
|
@@ -75,11 +75,11 @@ define([
|
|
|
75
75
|
this._peaks.overrideInteractions(true, false);
|
|
76
76
|
|
|
77
77
|
this._playInterval = setInterval(function() {
|
|
78
|
-
time =
|
|
78
|
+
time = performance.now();
|
|
79
79
|
self._currentTime += ((time - prevTime) / 1000) * self._speed;
|
|
80
80
|
prevTime = time;
|
|
81
81
|
self._peaks.emit('timeline.update', self._currentTime);
|
|
82
|
-
},
|
|
82
|
+
}, 20);
|
|
83
83
|
|
|
84
84
|
this._peaks.emit('timeline.play', this._currentTime);
|
|
85
85
|
}
|
package/src/segment.js
CHANGED
|
@@ -24,7 +24,6 @@ define([
|
|
|
24
24
|
|
|
25
25
|
options.startTime = Utils.roundTime(options.startTime);
|
|
26
26
|
options.endTime = Utils.roundTime(options.endTime);
|
|
27
|
-
|
|
28
27
|
if (options.startTime < 0) {
|
|
29
28
|
options.startTime = 0;
|
|
30
29
|
}
|
|
@@ -32,20 +31,13 @@ define([
|
|
|
32
31
|
if (options.endTime < 0) {
|
|
33
32
|
options.endTime = 0;
|
|
34
33
|
}
|
|
35
|
-
else if (options.endTime
|
|
34
|
+
else if (options.endTime - options.startTime < peaks.options.minSegmentSize) {
|
|
36
35
|
options.endTime = options.startTime + peaks.options.minSegmentSize;
|
|
37
36
|
}
|
|
38
37
|
|
|
39
38
|
options.startTime = Utils.roundTime(options.startTime);
|
|
40
39
|
options.endTime = Utils.roundTime(options.endTime);
|
|
41
40
|
|
|
42
|
-
// if (options.endTime <= options.startTime) {
|
|
43
|
-
// // eslint-disable-next-line max-len
|
|
44
|
-
// throw new RangeError(
|
|
45
|
-
// 'peaks.segments.' + context + ': endTime should be greater than startTime'
|
|
46
|
-
// );
|
|
47
|
-
// }
|
|
48
|
-
|
|
49
41
|
if (options.opacity < 0 || options.opacity > 1) {
|
|
50
42
|
// eslint-disable-next-line max-len
|
|
51
43
|
throw new RangeError('peaks.segments.' + context + ': opacity should be between 0 and 1');
|
|
@@ -199,8 +191,6 @@ define([
|
|
|
199
191
|
|
|
200
192
|
validateSegment(this._peaks, opts, 'update()');
|
|
201
193
|
|
|
202
|
-
this._peaks.checkOverlapping(this, 'overlapping before manual update');
|
|
203
|
-
|
|
204
194
|
this._startTime = opts.startTime;
|
|
205
195
|
this._endTime = opts.endTime;
|
|
206
196
|
this._labelText = opts.labelText;
|
|
@@ -210,8 +200,6 @@ define([
|
|
|
210
200
|
this._opacity = opts.opacity;
|
|
211
201
|
this._editable = opts.editable;
|
|
212
202
|
|
|
213
|
-
this._peaks.checkOverlapping(this, 'overlapping after manual update');
|
|
214
|
-
|
|
215
203
|
this._peaks.emit('segment.updated', this);
|
|
216
204
|
};
|
|
217
205
|
|
package/src/segments-group.js
CHANGED
|
@@ -41,7 +41,6 @@ define([
|
|
|
41
41
|
this._group = new Konva.Group();
|
|
42
42
|
|
|
43
43
|
this._updatedSegments = [];
|
|
44
|
-
this._overlappingSegments = [];
|
|
45
44
|
|
|
46
45
|
this._isMagnetized = false;
|
|
47
46
|
|
|
@@ -114,8 +113,6 @@ define([
|
|
|
114
113
|
};
|
|
115
114
|
|
|
116
115
|
SegmentsGroup.prototype._onSegmentsUpdate = function(segment) {
|
|
117
|
-
this._overlappingSegments = [];
|
|
118
|
-
|
|
119
116
|
if (this._segments[segment.id]) {
|
|
120
117
|
var redraw = false;
|
|
121
118
|
var segmentShape = this._segmentShapes[segment.id];
|
|
@@ -146,7 +143,6 @@ define([
|
|
|
146
143
|
SegmentsGroup.prototype._onSegmentUpdated = function() {
|
|
147
144
|
this._peaks.emit('segments.updated', this._updatedSegments);
|
|
148
145
|
this._updatedSegments = [];
|
|
149
|
-
this._overlappingSegments = [];
|
|
150
146
|
};
|
|
151
147
|
|
|
152
148
|
SegmentsGroup.prototype._onSegmentsAdd = function(segments) {
|
|
@@ -445,8 +441,6 @@ define([
|
|
|
445
441
|
};
|
|
446
442
|
|
|
447
443
|
SegmentsGroup.prototype.updateSegment = function(segment, newStartX, newEndX) {
|
|
448
|
-
this.checkOverlapping(segment, 'overlapping before dragging');
|
|
449
|
-
|
|
450
444
|
var newXs = this.manageCollision(segment, newStartX, newEndX);
|
|
451
445
|
|
|
452
446
|
if (newXs.startX !== null) {
|
|
@@ -458,8 +452,6 @@ define([
|
|
|
458
452
|
}
|
|
459
453
|
|
|
460
454
|
if (newXs) {
|
|
461
|
-
this.checkOverlapping(segment, 'overlapping after dragging');
|
|
462
|
-
|
|
463
455
|
this._updateSegment(segment);
|
|
464
456
|
|
|
465
457
|
this.addToUpdatedSegments(segment);
|
|
@@ -468,27 +460,6 @@ define([
|
|
|
468
460
|
}
|
|
469
461
|
};
|
|
470
462
|
|
|
471
|
-
SegmentsGroup.prototype.checkOverlapping = function(segment, message) {
|
|
472
|
-
/* eslint-disable max-len */
|
|
473
|
-
if ((this._segments[segment.id].prevSegmentId
|
|
474
|
-
&& this._segments[this._segments[segment.id].prevSegmentId].segment.endTime > segment.startTime)
|
|
475
|
-
|| (this._segments[segment.id].nextSegmentId
|
|
476
|
-
&& this._segments[this._segments[segment.id].nextSegmentId].segment.startTime < segment.endTime)) {
|
|
477
|
-
|
|
478
|
-
if (!this._overlappingSegments.includes(segment.id)) {
|
|
479
|
-
this._peaks.emit('segments.overlap', {
|
|
480
|
-
message: message,
|
|
481
|
-
segment: segment,
|
|
482
|
-
prevSegment: this._segments[segment.id].prevSegmentId ? this._segments[this._segments[segment.id].prevSegmentId].segment : null,
|
|
483
|
-
nextSegment: this._segments[segment.id].nextSegmentId ? this._segments[this._segments[segment.id].nextSegmentId].segment : null
|
|
484
|
-
});
|
|
485
|
-
this._overlappingSegments.push(segment.id);
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
}
|
|
489
|
-
/* eslint-enable max-len */
|
|
490
|
-
};
|
|
491
|
-
|
|
492
463
|
SegmentsGroup.prototype.manageCollision = function(segment, newStartX, newEndX) {
|
|
493
464
|
var newStartTime = null;
|
|
494
465
|
var newEndTime = null;
|
|
@@ -537,7 +508,11 @@ define([
|
|
|
537
508
|
}
|
|
538
509
|
|
|
539
510
|
if (previousSegment.endTime !== newStartTime) {
|
|
540
|
-
newXs = this.manageCollision(
|
|
511
|
+
newXs = this.manageCollision(
|
|
512
|
+
previousSegment,
|
|
513
|
+
this._view.timeToPixels(previousSegment.startTime),
|
|
514
|
+
this._view.timeToPixels(newStartTime)
|
|
515
|
+
);
|
|
541
516
|
|
|
542
517
|
if (newXs.startX !== null) {
|
|
543
518
|
previousSegment.startTime = this._view.pixelsToTime(newXs.startX);
|
|
@@ -591,7 +566,11 @@ define([
|
|
|
591
566
|
}
|
|
592
567
|
|
|
593
568
|
if (nextSegment.startTime !== newEndTime) {
|
|
594
|
-
newXs = this.manageCollision(
|
|
569
|
+
newXs = this.manageCollision(
|
|
570
|
+
nextSegment,
|
|
571
|
+
this._view.timeToPixels(newEndTime),
|
|
572
|
+
this._view.timeToPixels(nextSegment.endTime)
|
|
573
|
+
);
|
|
595
574
|
|
|
596
575
|
if (newXs.startX !== null) {
|
|
597
576
|
nextSegment.startTime = this._view.pixelsToTime(newXs.startX);
|
package/src/sources-layer.js
CHANGED
|
@@ -297,7 +297,9 @@ define([
|
|
|
297
297
|
updateWidth: false
|
|
298
298
|
};
|
|
299
299
|
|
|
300
|
-
this.
|
|
300
|
+
if (this._peaks.options.canMoveSourcesBetweenLines) {
|
|
301
|
+
this.manageVerticalPosition(source, newY);
|
|
302
|
+
}
|
|
301
303
|
|
|
302
304
|
newXs = this.manageSourceOrder(source, newStartX, newEndX);
|
|
303
305
|
|