@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@checksub_team/peaks_timeline",
3
- "version": "1.4.20",
3
+ "version": "1.4.24",
4
4
  "description": "JavaScript UI component for displaying audio waveforms",
5
5
  "main": "./peaks.js",
6
6
  "types": "./peaks.js.d.ts",
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 = Date.now();
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 = Date.now();
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
- }, 10);
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 < options.startTime + peaks.options.minSegmentSize) {
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.manageVerticalPosition(source, newY);
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 = Date.now();
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 = Date.now();
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
- }, 10);
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 < options.startTime + peaks.options.minSegmentSize) {
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
 
@@ -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(previousSegment, this._view.timeToPixels(previousSegment.startTime), this._view.timeToPixels(newStartTime));
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(nextSegment, this._view.timeToPixels(newEndTime), this._view.timeToPixels(nextSegment.endTime));
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);
@@ -297,7 +297,9 @@ define([
297
297
  updateWidth: false
298
298
  };
299
299
 
300
- this.manageVerticalPosition(source, newY);
300
+ if (this._peaks.options.canMoveSourcesBetweenLines) {
301
+ this.manageVerticalPosition(source, newY);
302
+ }
301
303
 
302
304
  newXs = this.manageSourceOrder(source, newStartX, newEndX);
303
305