@checksub_team/peaks_timeline 1.4.32 → 1.4.35
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 +82 -19
- package/src/line-indicator.js +77 -12
- package/src/lines.js +4 -0
- package/src/main.js +7 -1
- package/src/segment-shape.js +1 -1
- package/src/segment.js +15 -4
- package/src/sources-layer.js +4 -0
- package/src/timeline-segments.js +1 -0
- package/src/timeline-zoomview.js +4 -0
- package/CHANGELOG.md +0 -530
package/package.json
CHANGED
package/peaks.js
CHANGED
|
@@ -14503,22 +14503,57 @@ module.exports = function (Konva, Utils) {
|
|
|
14503
14503
|
if (this._peaks.options.enableLineIndicatorContextMenu) {
|
|
14504
14504
|
this._createContextMenu();
|
|
14505
14505
|
}
|
|
14506
|
+
this.ICON_SIZE = 18;
|
|
14507
|
+
this._volumeSVGPath = 'M0 6.00001V12H4L9 17V1.00001L4 6.00001H0ZM13.5 9.00001C13.5 7.23001 12.48 5.71001 11 4.97001V13.02C12.48 12.29 13.5 10.77 13.5 9.00001ZM11 0.230011V2.29001C13.89 3.15001 16 5.83001 16 9.00001C16 12.17 13.89 14.85 11 15.71V17.77C15.01 16.86 18 13.28 18 9.00001C18 4.72001 15.01 1.14001 11 0.230011Z';
|
|
14508
|
+
this._noVolumeSVGPath = 'M13.5 9C13.5 7.23 12.48 5.71 11 4.97V7.18L13.45 9.63C13.48 9.43 13.5 9.22 13.5 9ZM16 9C16 9.94 15.8 10.82 15.46 11.64L16.97 13.15C17.63 11.91 18 10.5 18 9C18 4.72 15.01 1.14 11 0.23V2.29C13.89 3.15 16 5.83 16 9ZM1.27 0L0 1.27L4.73 6H0V12H4L9 17V10.27L13.25 14.52C12.58 15.04 11.83 15.45 11 15.7V17.76C12.38 17.45 13.63 16.81 14.69 15.95L16.73 18L18 16.73L9 7.73L1.27 0ZM9 1L6.91 3.09L9 5.18V1Z';
|
|
14509
|
+
this._peaks.on('lineIndicator.setType', this._onSetType.bind(this));
|
|
14510
|
+
this._types = [
|
|
14511
|
+
'default',
|
|
14512
|
+
'volume',
|
|
14513
|
+
'noVolume'
|
|
14514
|
+
];
|
|
14506
14515
|
}
|
|
14516
|
+
LineIndicator.prototype._onSetType = function (lineId, type) {
|
|
14517
|
+
this.removeIndicator(lineId, true);
|
|
14518
|
+
type = this._types.includes(type) ? type : 'default';
|
|
14519
|
+
var indicator = this._createIndicator(this._indicators[lineId].line, type);
|
|
14520
|
+
this._layer.add(indicator);
|
|
14521
|
+
this._indicators[lineId].indicator = indicator;
|
|
14522
|
+
this._indicators[lineId].type = type;
|
|
14523
|
+
this.draw();
|
|
14524
|
+
};
|
|
14507
14525
|
LineIndicator.prototype._showMenu = function (menu) {
|
|
14508
14526
|
menu.style.display = 'block';
|
|
14509
14527
|
var containerRect = this._stage.container().getBoundingClientRect();
|
|
14510
14528
|
menu.style.top = containerRect.top + this._stage.getPointerPosition().y - menu.offsetHeight + 'px';
|
|
14511
14529
|
menu.style.left = containerRect.left + this._stage.getPointerPosition().x + 6 + 'px';
|
|
14512
14530
|
};
|
|
14513
|
-
LineIndicator.prototype._createIndicator = function (line) {
|
|
14514
|
-
var indicator
|
|
14515
|
-
|
|
14516
|
-
|
|
14517
|
-
|
|
14518
|
-
|
|
14519
|
-
|
|
14520
|
-
|
|
14521
|
-
|
|
14531
|
+
LineIndicator.prototype._createIndicator = function (line, type) {
|
|
14532
|
+
var indicator;
|
|
14533
|
+
type = typeof type !== 'undefined' ? type : 'default';
|
|
14534
|
+
if (type === 'default') {
|
|
14535
|
+
indicator = new Konva.Circle({
|
|
14536
|
+
x: this._width / 2,
|
|
14537
|
+
y: line.getY() + line.lineHeight() / 2,
|
|
14538
|
+
radius: this._indicatorRadius,
|
|
14539
|
+
fill: this._peaks.options.lineIndicatorColor,
|
|
14540
|
+
strokeWidth: 0,
|
|
14541
|
+
lineId: line.getId()
|
|
14542
|
+
});
|
|
14543
|
+
} else {
|
|
14544
|
+
var scaleFactor = this._width / 2 / this.ICON_SIZE;
|
|
14545
|
+
indicator = new Konva.Path({
|
|
14546
|
+
x: this._width / 4,
|
|
14547
|
+
y: line.getY() + line.lineHeight() / 2 - this._width / 4,
|
|
14548
|
+
data: type === 'volume' ? this._volumeSVGPath : this._noVolumeSVGPath,
|
|
14549
|
+
fill: this._peaks.options.lineIndicatorColor,
|
|
14550
|
+
scale: {
|
|
14551
|
+
x: scaleFactor,
|
|
14552
|
+
y: scaleFactor
|
|
14553
|
+
},
|
|
14554
|
+
lineId: line.getId()
|
|
14555
|
+
});
|
|
14556
|
+
}
|
|
14522
14557
|
var self = this;
|
|
14523
14558
|
indicator.on('mouseover', function () {
|
|
14524
14559
|
indicator.fill(self._peaks.options.lineIndicatorSelected);
|
|
@@ -14528,6 +14563,9 @@ module.exports = function (Konva, Utils) {
|
|
|
14528
14563
|
indicator.fill(self._peaks.options.lineIndicatorColor);
|
|
14529
14564
|
indicator.draw();
|
|
14530
14565
|
});
|
|
14566
|
+
indicator.on('click', function (e) {
|
|
14567
|
+
self._peaks.emit('lineIndicator.click', self._indicators[line.getId()], e.evt.button);
|
|
14568
|
+
});
|
|
14531
14569
|
return indicator;
|
|
14532
14570
|
};
|
|
14533
14571
|
LineIndicator.prototype.addIndicator = function (line) {
|
|
@@ -14536,7 +14574,8 @@ module.exports = function (Konva, Utils) {
|
|
|
14536
14574
|
this._layer.add(indicator);
|
|
14537
14575
|
this._indicators[line.getId()] = {
|
|
14538
14576
|
indicator: indicator,
|
|
14539
|
-
line: line
|
|
14577
|
+
line: line,
|
|
14578
|
+
type: 'default'
|
|
14540
14579
|
};
|
|
14541
14580
|
}
|
|
14542
14581
|
};
|
|
@@ -14552,15 +14591,18 @@ module.exports = function (Konva, Utils) {
|
|
|
14552
14591
|
}
|
|
14553
14592
|
}
|
|
14554
14593
|
};
|
|
14594
|
+
LineIndicator.prototype.getPixelsFromCenter = function (lineId) {
|
|
14595
|
+
return this._indicators[lineId].type === 'default' ? 0 : this._width / 4;
|
|
14596
|
+
};
|
|
14555
14597
|
LineIndicator.prototype.updateIndicator = function (lineId) {
|
|
14556
14598
|
if (this._indicators[lineId]) {
|
|
14557
14599
|
var y = this._indicators[lineId].line.getY() + this._indicators[lineId].line.lineHeight() / 2;
|
|
14558
14600
|
if (y + this._indicatorRadius > 0 && y - this._indicatorRadius < this._height) {
|
|
14559
14601
|
if (!this._indicators[lineId].indicator) {
|
|
14560
|
-
this._indicators[lineId].indicator = this._createIndicator(this._indicators[lineId].line);
|
|
14602
|
+
this._indicators[lineId].indicator = this._createIndicator(this._indicators[lineId].line, this._indicators[lineId].type);
|
|
14561
14603
|
this._layer.add(this._indicators[lineId].indicator);
|
|
14562
14604
|
} else {
|
|
14563
|
-
this._indicators[lineId].indicator.y(y);
|
|
14605
|
+
this._indicators[lineId].indicator.y(y - this.getPixelsFromCenter(lineId));
|
|
14564
14606
|
}
|
|
14565
14607
|
} else {
|
|
14566
14608
|
this.removeIndicator(lineId, true);
|
|
@@ -15357,6 +15399,9 @@ module.exports = function (SegmentsGroup, Line, LineIndicator, Utils) {
|
|
|
15357
15399
|
}
|
|
15358
15400
|
}
|
|
15359
15401
|
};
|
|
15402
|
+
Lines.prototype.getLineByPosition = function (pos) {
|
|
15403
|
+
return this._linesByPosition[pos];
|
|
15404
|
+
};
|
|
15360
15405
|
Lines.prototype.getLineOnPosition = function (y) {
|
|
15361
15406
|
var height;
|
|
15362
15407
|
var pos = [
|
|
@@ -15503,7 +15548,7 @@ module.exports = function (Colors, EventEmitter, TimelineSegments, TimelineSourc
|
|
|
15503
15548
|
segmentMagnetThreshold: 15,
|
|
15504
15549
|
enableVerticalScrolling: true,
|
|
15505
15550
|
lineIndicatorWidth: 20,
|
|
15506
|
-
lineIndicatorColor: '
|
|
15551
|
+
lineIndicatorColor: '#8A8F98',
|
|
15507
15552
|
lineIndicatorSelected: '#ccc',
|
|
15508
15553
|
autoScrollThreshold: 0.05,
|
|
15509
15554
|
enableLineIndicatorContextMenu: true,
|
|
@@ -15642,6 +15687,10 @@ module.exports = function (Colors, EventEmitter, TimelineSegments, TimelineSourc
|
|
|
15642
15687
|
Peaks.prototype.setCutMode = function () {
|
|
15643
15688
|
this.emit('cut_mode');
|
|
15644
15689
|
};
|
|
15690
|
+
Peaks.prototype.setIndicatorType = function (linePosition, type) {
|
|
15691
|
+
var lineId = this.view.getLineByPosition(linePosition).getId();
|
|
15692
|
+
this.emit('lineIndicator.setType', lineId, type);
|
|
15693
|
+
};
|
|
15645
15694
|
Peaks.prototype.getVisibleSegments = function () {
|
|
15646
15695
|
return this.view.getSegmentsGroup().getVisibleSegments();
|
|
15647
15696
|
};
|
|
@@ -16681,7 +16730,7 @@ module.exports = function (Konva, SegmentMarker) {
|
|
|
16681
16730
|
SegmentShape.prototype._onMouseEnter = function () {
|
|
16682
16731
|
this._view.setCursor('pointer');
|
|
16683
16732
|
this._view.setHoveredElement(this);
|
|
16684
|
-
this._rectangle.fill(this._segment.
|
|
16733
|
+
this._rectangle.fill(this._segment.hoverColor + Math.round(this._segment.opacity * 255).toString(16));
|
|
16685
16734
|
this._view.drawSourcesLayer();
|
|
16686
16735
|
this._peaks.emit('segments.mouseenter', this._segment);
|
|
16687
16736
|
};
|
|
@@ -16782,8 +16831,13 @@ module.exports = function (Utils) {
|
|
|
16782
16831
|
} else if (!Utils.isBoolean(options.editable)) {
|
|
16783
16832
|
throw new TypeError('peaks.segments.' + context + ': editable must be a boolean');
|
|
16784
16833
|
}
|
|
16834
|
+
if (Utils.isNullOrUndefined(options.hoverColor)) {
|
|
16835
|
+
options.hoverColor = Utils.shadeColor(options.color, 20);
|
|
16836
|
+
} else if (!Utils.isValidColor(options.hoverColor)) {
|
|
16837
|
+
throw new TypeError('peaks.segments.' + context + ': hoverColor must be a boolean');
|
|
16838
|
+
}
|
|
16785
16839
|
}
|
|
16786
|
-
function Segment(peaks, id, startTime, endTime, labelText, color, textColor, handleTextColor, opacity, editable, allowDeletion, line) {
|
|
16840
|
+
function Segment(peaks, id, startTime, endTime, labelText, color, textColor, handleTextColor, hoverColor, opacity, editable, allowDeletion, line) {
|
|
16787
16841
|
var opts = {
|
|
16788
16842
|
startTime: startTime,
|
|
16789
16843
|
endTime: endTime,
|
|
@@ -16791,6 +16845,7 @@ module.exports = function (Utils) {
|
|
|
16791
16845
|
color: color,
|
|
16792
16846
|
textColor: textColor,
|
|
16793
16847
|
handleTextColor: handleTextColor,
|
|
16848
|
+
hoverColor: hoverColor,
|
|
16794
16849
|
opacity: opacity,
|
|
16795
16850
|
editable: editable,
|
|
16796
16851
|
allowDeletion: allowDeletion,
|
|
@@ -16803,7 +16858,7 @@ module.exports = function (Utils) {
|
|
|
16803
16858
|
this._endTime = opts.endTime;
|
|
16804
16859
|
this._labelText = opts.labelText;
|
|
16805
16860
|
this._color = opts.color;
|
|
16806
|
-
this.
|
|
16861
|
+
this._hoverColor = opts.hoverColor;
|
|
16807
16862
|
this._textColor = opts.textColor;
|
|
16808
16863
|
this._handleTextColor = opts.handleTextColor;
|
|
16809
16864
|
this._opacity = opts.opacity;
|
|
@@ -16849,10 +16904,10 @@ module.exports = function (Utils) {
|
|
|
16849
16904
|
return this._color;
|
|
16850
16905
|
}
|
|
16851
16906
|
},
|
|
16852
|
-
|
|
16907
|
+
hoverColor: {
|
|
16853
16908
|
enumerable: true,
|
|
16854
16909
|
get: function () {
|
|
16855
|
-
return this.
|
|
16910
|
+
return this._hoverColor;
|
|
16856
16911
|
}
|
|
16857
16912
|
},
|
|
16858
16913
|
textColor: {
|
|
@@ -16906,6 +16961,7 @@ module.exports = function (Utils) {
|
|
|
16906
16961
|
color: this.color,
|
|
16907
16962
|
textColor: this.textColor,
|
|
16908
16963
|
handleTextColor: this.handleTextColor,
|
|
16964
|
+
hoverColor: this.hoverColor,
|
|
16909
16965
|
opacity: this.opacity,
|
|
16910
16966
|
editable: this.editable,
|
|
16911
16967
|
allowDeletion: this.allowDeletion,
|
|
@@ -16919,6 +16975,7 @@ module.exports = function (Utils) {
|
|
|
16919
16975
|
this._color = opts.color;
|
|
16920
16976
|
this._textColor = opts.textColor;
|
|
16921
16977
|
this._handleTextColor = opts.handleTextColor;
|
|
16978
|
+
this._hoverColor = opts.hoverColor;
|
|
16922
16979
|
this._opacity = opts.opacity;
|
|
16923
16980
|
this._editable = opts.editable;
|
|
16924
16981
|
this._allowDeletion = opts.allowDeletion;
|
|
@@ -19014,6 +19071,9 @@ module.exports = function (SourceGroup, Lines, DataRetriever, Utils, Invoker, Ko
|
|
|
19014
19071
|
SourcesLayer.prototype.getLength = function () {
|
|
19015
19072
|
return this._lines.linesLength();
|
|
19016
19073
|
};
|
|
19074
|
+
SourcesLayer.prototype.getLineByPosition = function (pos) {
|
|
19075
|
+
return this._lines.getLineByPosition(pos);
|
|
19076
|
+
};
|
|
19017
19077
|
return SourcesLayer;
|
|
19018
19078
|
}(_dereq_('./source-group'), _dereq_('./lines'), _dereq_('./data-retriever'), _dereq_('./utils'), _dereq_('./invoker'), _dereq_('konva'));
|
|
19019
19079
|
},{"./data-retriever":85,"./invoker":88,"./lines":92,"./source-group":103,"./utils":110,"konva":43}],106:[function(_dereq_,module,exports){
|
|
@@ -19200,7 +19260,7 @@ module.exports = function (Colors, Segment, Utils) {
|
|
|
19200
19260
|
if (!Utils.isObject(options)) {
|
|
19201
19261
|
throw new TypeError('peaks.segments.add(): expected a Segment object parameter');
|
|
19202
19262
|
}
|
|
19203
|
-
var segment = new Segment(this._peaks, Utils.isNullOrUndefined(options.id) ? this._getNextSegmentId() : options.id, options.startTime, options.endTime, options.labelText, options.color || this._getSegmentColor(), options.textColor || '#000000', options.handleTextColor || '#000000', options.opacity || 1, options.editable, options.allowDeletion || false, options.line);
|
|
19263
|
+
var segment = new Segment(this._peaks, Utils.isNullOrUndefined(options.id) ? this._getNextSegmentId() : options.id, options.startTime, options.endTime, options.labelText, options.color || this._getSegmentColor(), options.textColor || '#000000', options.handleTextColor || '#000000', options.hoverColor, options.opacity || 1, options.editable, options.allowDeletion || false, options.line);
|
|
19204
19264
|
return segment;
|
|
19205
19265
|
};
|
|
19206
19266
|
TimelineSegments.prototype.getSegments = function () {
|
|
@@ -19885,6 +19945,9 @@ module.exports = function (MouseDragHandler, PlayheadLayer, SourcesLayer, ModeLa
|
|
|
19885
19945
|
TimelineZoomView.prototype.getEndTime = function () {
|
|
19886
19946
|
return this.pixelsToTime(this._frameOffset + this._width);
|
|
19887
19947
|
};
|
|
19948
|
+
TimelineZoomView.prototype.getLineByPosition = function (pos) {
|
|
19949
|
+
return this._sourcesLayer.getLineByPosition(pos);
|
|
19950
|
+
};
|
|
19888
19951
|
TimelineZoomView.prototype.setStartTime = function (time) {
|
|
19889
19952
|
if (time < 0) {
|
|
19890
19953
|
time = 0;
|
package/src/line-indicator.js
CHANGED
|
@@ -58,8 +58,36 @@ define([
|
|
|
58
58
|
if (this._peaks.options.enableLineIndicatorContextMenu) {
|
|
59
59
|
this._createContextMenu();
|
|
60
60
|
}
|
|
61
|
+
|
|
62
|
+
/* eslint-disable max-len */
|
|
63
|
+
this.ICON_SIZE = 18;
|
|
64
|
+
this._volumeSVGPath = 'M0 6.00001V12H4L9 17V1.00001L4 6.00001H0ZM13.5 9.00001C13.5 7.23001 12.48 5.71001 11 4.97001V13.02C12.48 12.29 13.5 10.77 13.5 9.00001ZM11 0.230011V2.29001C13.89 3.15001 16 5.83001 16 9.00001C16 12.17 13.89 14.85 11 15.71V17.77C15.01 16.86 18 13.28 18 9.00001C18 4.72001 15.01 1.14001 11 0.230011Z';
|
|
65
|
+
this._noVolumeSVGPath = 'M13.5 9C13.5 7.23 12.48 5.71 11 4.97V7.18L13.45 9.63C13.48 9.43 13.5 9.22 13.5 9ZM16 9C16 9.94 15.8 10.82 15.46 11.64L16.97 13.15C17.63 11.91 18 10.5 18 9C18 4.72 15.01 1.14 11 0.23V2.29C13.89 3.15 16 5.83 16 9ZM1.27 0L0 1.27L4.73 6H0V12H4L9 17V10.27L13.25 14.52C12.58 15.04 11.83 15.45 11 15.7V17.76C12.38 17.45 13.63 16.81 14.69 15.95L16.73 18L18 16.73L9 7.73L1.27 0ZM9 1L6.91 3.09L9 5.18V1Z';
|
|
66
|
+
/* eslint-enable max-len */
|
|
67
|
+
|
|
68
|
+
this._peaks.on('lineIndicator.setType', this._onSetType.bind(this));
|
|
69
|
+
|
|
70
|
+
this._types = ['default', 'volume', 'noVolume'];
|
|
61
71
|
}
|
|
62
72
|
|
|
73
|
+
LineIndicator.prototype._onSetType = function(lineId, type) {
|
|
74
|
+
this.removeIndicator(lineId, true);
|
|
75
|
+
|
|
76
|
+
type = this._types.includes(type) ? type : 'default';
|
|
77
|
+
|
|
78
|
+
var indicator = this._createIndicator(
|
|
79
|
+
this._indicators[lineId].line,
|
|
80
|
+
type
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
this._layer.add(indicator);
|
|
84
|
+
|
|
85
|
+
this._indicators[lineId].indicator = indicator;
|
|
86
|
+
this._indicators[lineId].type = type;
|
|
87
|
+
|
|
88
|
+
this.draw();
|
|
89
|
+
};
|
|
90
|
+
|
|
63
91
|
LineIndicator.prototype._showMenu = function(menu) {
|
|
64
92
|
menu.style.display = 'block';
|
|
65
93
|
var containerRect = this._stage.container().getBoundingClientRect();
|
|
@@ -70,15 +98,38 @@ define([
|
|
|
70
98
|
menu.style.left = containerRect.left + this._stage.getPointerPosition().x + 6 + 'px';
|
|
71
99
|
};
|
|
72
100
|
|
|
73
|
-
LineIndicator.prototype._createIndicator = function(line) {
|
|
74
|
-
var indicator
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
101
|
+
LineIndicator.prototype._createIndicator = function(line, type) {
|
|
102
|
+
var indicator;
|
|
103
|
+
|
|
104
|
+
type = typeof type !== 'undefined' ? type : 'default';
|
|
105
|
+
|
|
106
|
+
if (type === 'default') {
|
|
107
|
+
indicator = new Konva.Circle({
|
|
108
|
+
x: this._width / 2,
|
|
109
|
+
y: line.getY() + (line.lineHeight() / 2),
|
|
110
|
+
radius: this._indicatorRadius,
|
|
111
|
+
fill: this._peaks.options.lineIndicatorColor,
|
|
112
|
+
strokeWidth: 0,
|
|
113
|
+
lineId: line.getId()
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
var scaleFactor = (this._width / 2) / this.ICON_SIZE;
|
|
118
|
+
|
|
119
|
+
indicator = new Konva.Path({
|
|
120
|
+
x: this._width / 4,
|
|
121
|
+
y: line.getY() + (line.lineHeight() / 2) - (this._width / 4),
|
|
122
|
+
data: type === 'volume' ?
|
|
123
|
+
this._volumeSVGPath :
|
|
124
|
+
this._noVolumeSVGPath,
|
|
125
|
+
fill: this._peaks.options.lineIndicatorColor,
|
|
126
|
+
scale: {
|
|
127
|
+
x: scaleFactor,
|
|
128
|
+
y: scaleFactor
|
|
129
|
+
},
|
|
130
|
+
lineId: line.getId()
|
|
131
|
+
});
|
|
132
|
+
}
|
|
82
133
|
|
|
83
134
|
var self = this;
|
|
84
135
|
|
|
@@ -92,6 +143,10 @@ define([
|
|
|
92
143
|
indicator.draw();
|
|
93
144
|
});
|
|
94
145
|
|
|
146
|
+
indicator.on('click', function(e) {
|
|
147
|
+
self._peaks.emit('lineIndicator.click', self._indicators[line.getId()], e.evt.button);
|
|
148
|
+
});
|
|
149
|
+
|
|
95
150
|
return indicator;
|
|
96
151
|
};
|
|
97
152
|
|
|
@@ -103,7 +158,8 @@ define([
|
|
|
103
158
|
|
|
104
159
|
this._indicators[line.getId()] = {
|
|
105
160
|
indicator: indicator,
|
|
106
|
-
line: line
|
|
161
|
+
line: line,
|
|
162
|
+
type: 'default'
|
|
107
163
|
};
|
|
108
164
|
}
|
|
109
165
|
};
|
|
@@ -122,6 +178,12 @@ define([
|
|
|
122
178
|
}
|
|
123
179
|
};
|
|
124
180
|
|
|
181
|
+
LineIndicator.prototype.getPixelsFromCenter = function(lineId) {
|
|
182
|
+
return this._indicators[lineId].type === 'default' ?
|
|
183
|
+
0 :
|
|
184
|
+
this._width / 4;
|
|
185
|
+
};
|
|
186
|
+
|
|
125
187
|
LineIndicator.prototype.updateIndicator = function(lineId) {
|
|
126
188
|
if (this._indicators[lineId]) {
|
|
127
189
|
var y = this._indicators[lineId].line.getY()
|
|
@@ -130,11 +192,14 @@ define([
|
|
|
130
192
|
if (y + this._indicatorRadius > 0 && y - this._indicatorRadius < this._height) {
|
|
131
193
|
// The indicator is visible
|
|
132
194
|
if (!this._indicators[lineId].indicator) {
|
|
133
|
-
this._indicators[lineId].indicator = this._createIndicator(
|
|
195
|
+
this._indicators[lineId].indicator = this._createIndicator(
|
|
196
|
+
this._indicators[lineId].line,
|
|
197
|
+
this._indicators[lineId].type
|
|
198
|
+
);
|
|
134
199
|
this._layer.add(this._indicators[lineId].indicator);
|
|
135
200
|
}
|
|
136
201
|
else {
|
|
137
|
-
this._indicators[lineId].indicator.y(y);
|
|
202
|
+
this._indicators[lineId].indicator.y(y - this.getPixelsFromCenter(lineId));
|
|
138
203
|
}
|
|
139
204
|
}
|
|
140
205
|
else {
|
package/src/lines.js
CHANGED
package/src/main.js
CHANGED
|
@@ -283,7 +283,7 @@ define([
|
|
|
283
283
|
/**
|
|
284
284
|
* Color of the line indicators
|
|
285
285
|
*/
|
|
286
|
-
lineIndicatorColor: '
|
|
286
|
+
lineIndicatorColor: '#8A8F98',
|
|
287
287
|
|
|
288
288
|
/**
|
|
289
289
|
* Color for the indicator when selected
|
|
@@ -618,6 +618,12 @@ define([
|
|
|
618
618
|
this.emit('cut_mode');
|
|
619
619
|
};
|
|
620
620
|
|
|
621
|
+
Peaks.prototype.setIndicatorType = function(linePosition, type) {
|
|
622
|
+
var lineId = this.view.getLineByPosition(linePosition).getId();
|
|
623
|
+
|
|
624
|
+
this.emit('lineIndicator.setType', lineId, type);
|
|
625
|
+
};
|
|
626
|
+
|
|
621
627
|
Peaks.prototype.getVisibleSegments = function() {
|
|
622
628
|
return this.view
|
|
623
629
|
.getSegmentsGroup()
|
package/src/segment-shape.js
CHANGED
package/src/segment.js
CHANGED
|
@@ -61,6 +61,13 @@ define([
|
|
|
61
61
|
else if (!Utils.isBoolean(options.editable)) {
|
|
62
62
|
throw new TypeError('peaks.segments.' + context + ': editable must be a boolean');
|
|
63
63
|
}
|
|
64
|
+
|
|
65
|
+
if (Utils.isNullOrUndefined(options.hoverColor)) {
|
|
66
|
+
options.hoverColor = Utils.shadeColor(options.color, 20);
|
|
67
|
+
}
|
|
68
|
+
else if (!Utils.isValidColor(options.hoverColor)) {
|
|
69
|
+
throw new TypeError('peaks.segments.' + context + ': hoverColor must be a boolean');
|
|
70
|
+
}
|
|
64
71
|
}
|
|
65
72
|
|
|
66
73
|
/**
|
|
@@ -81,7 +88,8 @@ define([
|
|
|
81
88
|
*/
|
|
82
89
|
|
|
83
90
|
function Segment(peaks, id, startTime, endTime, labelText, color,
|
|
84
|
-
textColor, handleTextColor, opacity, editable,
|
|
91
|
+
textColor, handleTextColor, hoverColor, opacity, editable,
|
|
92
|
+
allowDeletion, line) {
|
|
85
93
|
var opts = {
|
|
86
94
|
startTime: startTime,
|
|
87
95
|
endTime: endTime,
|
|
@@ -89,6 +97,7 @@ define([
|
|
|
89
97
|
color: color,
|
|
90
98
|
textColor: textColor,
|
|
91
99
|
handleTextColor: handleTextColor,
|
|
100
|
+
hoverColor: hoverColor,
|
|
92
101
|
opacity: opacity,
|
|
93
102
|
editable: editable,
|
|
94
103
|
allowDeletion: allowDeletion,
|
|
@@ -103,7 +112,7 @@ define([
|
|
|
103
112
|
this._endTime = opts.endTime;
|
|
104
113
|
this._labelText = opts.labelText;
|
|
105
114
|
this._color = opts.color;
|
|
106
|
-
this.
|
|
115
|
+
this._hoverColor = opts.hoverColor;
|
|
107
116
|
this._textColor = opts.textColor;
|
|
108
117
|
this._handleTextColor = opts.handleTextColor;
|
|
109
118
|
this._opacity = opts.opacity;
|
|
@@ -152,10 +161,10 @@ define([
|
|
|
152
161
|
return this._color;
|
|
153
162
|
}
|
|
154
163
|
},
|
|
155
|
-
|
|
164
|
+
hoverColor: {
|
|
156
165
|
enumerable: true,
|
|
157
166
|
get: function() {
|
|
158
|
-
return this.
|
|
167
|
+
return this._hoverColor;
|
|
159
168
|
}
|
|
160
169
|
},
|
|
161
170
|
textColor: {
|
|
@@ -210,6 +219,7 @@ define([
|
|
|
210
219
|
color: this.color,
|
|
211
220
|
textColor: this.textColor,
|
|
212
221
|
handleTextColor: this.handleTextColor,
|
|
222
|
+
hoverColor: this.hoverColor,
|
|
213
223
|
opacity: this.opacity,
|
|
214
224
|
editable: this.editable,
|
|
215
225
|
allowDeletion: this.allowDeletion,
|
|
@@ -226,6 +236,7 @@ define([
|
|
|
226
236
|
this._color = opts.color;
|
|
227
237
|
this._textColor = opts.textColor;
|
|
228
238
|
this._handleTextColor = opts.handleTextColor;
|
|
239
|
+
this._hoverColor = opts.hoverColor;
|
|
229
240
|
this._opacity = opts.opacity;
|
|
230
241
|
this._editable = opts.editable;
|
|
231
242
|
this._allowDeletion = opts.allowDeletion;
|
package/src/sources-layer.js
CHANGED
package/src/timeline-segments.js
CHANGED
package/src/timeline-zoomview.js
CHANGED
|
@@ -638,6 +638,10 @@ define([
|
|
|
638
638
|
return this.pixelsToTime(this._frameOffset + this._width);
|
|
639
639
|
};
|
|
640
640
|
|
|
641
|
+
TimelineZoomView.prototype.getLineByPosition = function(pos) {
|
|
642
|
+
return this._sourcesLayer.getLineByPosition(pos);
|
|
643
|
+
};
|
|
644
|
+
|
|
641
645
|
TimelineZoomView.prototype.setStartTime = function(time) {
|
|
642
646
|
if (time < 0) {
|
|
643
647
|
time = 0;
|
package/CHANGELOG.md
DELETED
|
@@ -1,530 +0,0 @@
|
|
|
1
|
-
# Peaks.js
|
|
2
|
-
|
|
3
|
-
## 0.19.0 (2020/02/06)
|
|
4
|
-
|
|
5
|
-
* (#309) Fixed rendering of non-editable segment marker handles (@chrisn)
|
|
6
|
-
|
|
7
|
-
* Reduced size of npm and Bower installs by removing unnecessary files
|
|
8
|
-
(@chrisn)
|
|
9
|
-
|
|
10
|
-
* Refactored to simplify code structure. All source files are now placed
|
|
11
|
-
in a single 'src' directory, and several files have been renamed for
|
|
12
|
-
consistency (@chrisn)
|
|
13
|
-
|
|
14
|
-
## 0.18.1 (2020/02/02)
|
|
15
|
-
|
|
16
|
-
* (#306) Updated TypeScript declarations (@tscz)
|
|
17
|
-
|
|
18
|
-
* Documented zoomview.setStartTime() (@chrisn)
|
|
19
|
-
|
|
20
|
-
## 0.18.0 (2020/02/02)
|
|
21
|
-
|
|
22
|
-
* (#300) Redesigned the marker customization API. Refer to customizing.md
|
|
23
|
-
for detailed documentation on how to customize the appearance of point
|
|
24
|
-
and segment marker handles (@chrisn)
|
|
25
|
-
|
|
26
|
-
* Added a view.fitToContainer() method that resizes the waveform and point and
|
|
27
|
-
segment marker handles to fit the available space (@chrisn)
|
|
28
|
-
|
|
29
|
-
* Added zoomview.setStartTime() method (@chrisn)
|
|
30
|
-
|
|
31
|
-
* The `inMarkerColor` and `outMarkerColor` configuration options have been
|
|
32
|
-
renamed to `segmentStartMarkerColor` and `segmentEndMarkerColor` (@chrisn)
|
|
33
|
-
|
|
34
|
-
* (#305) Added a zoomview.setZoom() method that gives applications greater
|
|
35
|
-
flexibility in setting the zoom level. The zoom level can be set to (a)
|
|
36
|
-
a number of samples per pixel, as per the existing peaks.zoom.setZoom() API,
|
|
37
|
-
(b) a number of seconds fit to the available width, or (c) the entire audio
|
|
38
|
-
duration fit to the available width (@chrisn)
|
|
39
|
-
|
|
40
|
-
## 0.17.0 (2020/01/16)
|
|
41
|
-
|
|
42
|
-
* (#302) Fixed segment handle dragging so that dragging the start marker does
|
|
43
|
-
not change the segment end time, and vice versa (@chrisn)
|
|
44
|
-
|
|
45
|
-
* Added view.enableMarkerEditing() method (@chrisn)
|
|
46
|
-
|
|
47
|
-
* Updated Typescript definitions (@is343, @chrisn)
|
|
48
|
-
|
|
49
|
-
## 0.16.0 (2019/12/16)
|
|
50
|
-
|
|
51
|
-
* (#262) Increased hit region for segment mouseenter and mouseleave events,
|
|
52
|
-
no longer requires placing the mouse directly over the waveform image
|
|
53
|
-
(@chrisn)
|
|
54
|
-
|
|
55
|
-
* (#263, #283) Added destroyZoomview() and destroyOverview() methods (@chrisn)
|
|
56
|
-
|
|
57
|
-
## 0.15.0 (2019/12/04)
|
|
58
|
-
|
|
59
|
-
* (#293) Added overview.dblclick and zoomview.dblclick events (@chrisn)
|
|
60
|
-
|
|
61
|
-
* Fixed Typescript definitions (@tscz, @chrisn)
|
|
62
|
-
|
|
63
|
-
## 0.14.5 (2019/11/10)
|
|
64
|
-
|
|
65
|
-
* (#290) Fixed setAmplitudeScale() to update all waveform segments (@chrisn)
|
|
66
|
-
|
|
67
|
-
* Disabled warnings from Konva.js
|
|
68
|
-
|
|
69
|
-
* Fixed demo pages for Webkit
|
|
70
|
-
|
|
71
|
-
## 0.14.4 (2019/11/06)
|
|
72
|
-
|
|
73
|
-
* (#289) Fixed overlapHighlightOffset behaviour when value too large
|
|
74
|
-
(@jodonnell)
|
|
75
|
-
|
|
76
|
-
## 0.14.3 (2019/11/06)
|
|
77
|
-
|
|
78
|
-
* (#288) Added overviewHighlightOffset option, and renamed the
|
|
79
|
-
overviewHighlightRectangleColor option to overviewHighlightColor
|
|
80
|
-
(@jodonnell)
|
|
81
|
-
|
|
82
|
-
## 0.14.2 (2019/11/05)
|
|
83
|
-
|
|
84
|
-
* (#285) The axis labels are now correctly rendered on top of the waveform
|
|
85
|
-
(@chrisn)
|
|
86
|
-
|
|
87
|
-
* (#286) Fixed point/segment marker creation function options, and updated
|
|
88
|
-
documentation (@chrisn)
|
|
89
|
-
|
|
90
|
-
## 0.14.1 (2019/10/31)
|
|
91
|
-
|
|
92
|
-
* (#284) Fixed `peaks.destroy()` (@chrisn)
|
|
93
|
-
|
|
94
|
-
* Updated waveform-data.js to v3.1.0 (@chrisn)
|
|
95
|
-
|
|
96
|
-
## 0.14.0 (2019/10/23)
|
|
97
|
-
|
|
98
|
-
* (#287) Added `segment.dragstart` and `segment.dragend` events.
|
|
99
|
-
The `segment.dragged` event now receives a boolean parameter that indicates
|
|
100
|
-
whether the start or end marker is being dragged (@Spidy88)
|
|
101
|
-
|
|
102
|
-
## 0.13.1 (2019/10/22)
|
|
103
|
-
|
|
104
|
-
* (#281) Fixed TypeScript definitions (@tscz)
|
|
105
|
-
|
|
106
|
-
* Updated demo pages to use updated `Peaks.init()` API options (@chrisn)
|
|
107
|
-
|
|
108
|
-
## 0.13.0 (2019/09/11)
|
|
109
|
-
|
|
110
|
-
* (#228, #240) Added ability to intialise a Peaks instance given an
|
|
111
|
-
AudioBuffer
|
|
112
|
-
|
|
113
|
-
* The API for creating waveforms using the Web Audio API has changed.
|
|
114
|
-
Instead of passing an `audioContext` option to `Peaks.init()` or
|
|
115
|
-
`peaksInstance.setSource()`, you shoud now pass a `webAudio` object,
|
|
116
|
-
for example:
|
|
117
|
-
|
|
118
|
-
```javascript
|
|
119
|
-
const options = {
|
|
120
|
-
// ... etc
|
|
121
|
-
webAudio: {
|
|
122
|
-
audioContext: new AudioContext(),
|
|
123
|
-
multiChannel: true
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
Peaks.init(options, function(err, peaksInstance) { ... });
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
* The (undocumented) `waveformBuilderOptions` option has also been removed.
|
|
131
|
-
If you were using `amplitude_scale`, please use `view.setAmplitudeScale()`
|
|
132
|
-
instead. The `scale` option is now determined by the lowest `zoomLevels`
|
|
133
|
-
setting
|
|
134
|
-
|
|
135
|
-
* Added `view.enableAutoScroll()` method
|
|
136
|
-
|
|
137
|
-
## 0.12.0 (2019/08/24)
|
|
138
|
-
|
|
139
|
-
* (#194) Added multi-channel waveform support (@chrisn)
|
|
140
|
-
|
|
141
|
-
## 0.11.1 (2019/08/23)
|
|
142
|
-
|
|
143
|
-
* Updated waveform-data.js to v3.0.0 (@chrisn)
|
|
144
|
-
|
|
145
|
-
## 0.11.0 (2019/08/11)
|
|
146
|
-
|
|
147
|
-
* (#243, #268) Added emitCueEvents option that causes Peaks.js to emit
|
|
148
|
-
'points.enter', 'segments.enter', and 'segments.exit' events during playback
|
|
149
|
-
or on seeking (@gmarinov, @chrisn)
|
|
150
|
-
|
|
151
|
-
* (#92) Added setSource() method to change the media element's source URL
|
|
152
|
-
and update the waveform (@chrisn)
|
|
153
|
-
|
|
154
|
-
## 0.10.1 (2019/07/10)
|
|
155
|
-
|
|
156
|
-
* (#211) Added view.setAmplitudeScale() method, and documented new API methods
|
|
157
|
-
for creating and accessing the waveform views (@chrisn)
|
|
158
|
-
|
|
159
|
-
* (#270) Fixed segment rendering after updating startTime or endTime (@chrisn)
|
|
160
|
-
|
|
161
|
-
* (#267) Added option to run specific test files by glob pattern (@gmarinov)
|
|
162
|
-
|
|
163
|
-
## 0.10.0 (2019/06/22)
|
|
164
|
-
|
|
165
|
-
* (#247) Added update() methods to allow changes to segment and point
|
|
166
|
-
properties (@zachsa)
|
|
167
|
-
|
|
168
|
-
* (#250) Added 'segments.mouseenter', 'segments.mouseleave', and
|
|
169
|
-
'segments.click' events (@zachsa)
|
|
170
|
-
|
|
171
|
-
* (#258) Added new 'containers' option, to allow creation of zoomable
|
|
172
|
-
and non-zoomable ('overview') waveform views. Added example pages,
|
|
173
|
-
in the 'demo' folder (@chrisn)
|
|
174
|
-
|
|
175
|
-
* Updated to Konva 3.3.3 (@chrisn)
|
|
176
|
-
|
|
177
|
-
## 0.9.14 (2019/03/05)
|
|
178
|
-
|
|
179
|
-
* (#249, #251, #252) Enabled touch events for waveform container
|
|
180
|
-
and point and segment markers (@rfrei)
|
|
181
|
-
|
|
182
|
-
* Updated to Konva 3.1.6 and waveform-data.js 2.1.2, and updated
|
|
183
|
-
development dependencies (@chrisn)
|
|
184
|
-
|
|
185
|
-
* Updated TypeScript declarations (@evanlouie)
|
|
186
|
-
|
|
187
|
-
## 0.9.13 (2018/09/04)
|
|
188
|
-
|
|
189
|
-
* Added TypeScript declarations (@evanlouie)
|
|
190
|
-
|
|
191
|
-
## 0.9.12 (2018/07/27)
|
|
192
|
-
|
|
193
|
-
* Version bump after updating npm access token (@chrisn)
|
|
194
|
-
|
|
195
|
-
## 0.9.11 (2018/07/27)
|
|
196
|
-
|
|
197
|
-
* Refactored waveform rendering code, added WaveformShape class (@chrisn)
|
|
198
|
-
|
|
199
|
-
* Removed background layer, to reduce the number of Konva layers used (@chrisn)
|
|
200
|
-
|
|
201
|
-
* Avoid building waveform data multiple times when using the Web Audio API
|
|
202
|
-
(@cky917)
|
|
203
|
-
|
|
204
|
-
## 0.9.10 (2018/06/23)
|
|
205
|
-
|
|
206
|
-
* Fixed use of Web Audio API in Safari (@ibobobo)
|
|
207
|
-
|
|
208
|
-
* Fixed point drag event handling (@anthonytex, @chrisn)
|
|
209
|
-
|
|
210
|
-
## 0.9.9 (2018/05/21)
|
|
211
|
-
|
|
212
|
-
* Allow Peaks objects to be created using the new operator (@chrisn)
|
|
213
|
-
|
|
214
|
-
* The points.add() and segments.add() methods now operate atomically. This
|
|
215
|
-
change ensures that the input point/segment objects are validated before
|
|
216
|
-
storing, so that if an exception is thrown, we leave the state of the
|
|
217
|
-
points/segments array as it was before the function was called (@chrisn)
|
|
218
|
-
|
|
219
|
-
* Added 'points.mouseenter' and 'points.mouseleave' events. Also added
|
|
220
|
-
'points.dblclick', which replaces the (previously undocumented)
|
|
221
|
-
pointDblClickHandler config option (@markjongkind, @chrisn)
|
|
222
|
-
|
|
223
|
-
* Added 'points.dragstart' and 'points.dragend' events, and renamed
|
|
224
|
-
'points.dragged' to 'points.dragmove'. The (also undocumented)
|
|
225
|
-
pointDragEndHandler config option is deprecated (@chrisn)
|
|
226
|
-
|
|
227
|
-
## 0.9.8 (2018/02/10)
|
|
228
|
-
|
|
229
|
-
* Ensure resources used by Player object are released on calling
|
|
230
|
-
peaks.destroy() (@chrisn)
|
|
231
|
-
|
|
232
|
-
* points.remove() and segments.remove() no longer throw an exception
|
|
233
|
-
if multiple matching markers are found. The removed markers are returned
|
|
234
|
-
in an array (@chrisn)
|
|
235
|
-
|
|
236
|
-
* Updated to eventemitter2 v5.0.1, also updated development dependencies
|
|
237
|
-
(@chrisn)
|
|
238
|
-
|
|
239
|
-
## 0.9.7 (2018/01/25)
|
|
240
|
-
|
|
241
|
-
* (#104) Prevent "zoom level too low" exception when using the Web Audio API
|
|
242
|
-
to compute the waveform data (@chrisn)
|
|
243
|
-
|
|
244
|
-
* (#213) Added withCredentials option to allow users to send credentials
|
|
245
|
-
when requesting waveform data files using XHR (@bennypowers)
|
|
246
|
-
|
|
247
|
-
* (#212) Fixed points.removeAll() and segments.removeAll() (@chrisn)
|
|
248
|
-
|
|
249
|
-
* Fixed a bug where the time axis would show the wrong times next to the
|
|
250
|
-
axis markers (@chrisn)
|
|
251
|
-
|
|
252
|
-
* Peaks.js is now available via cdnjs. Added a link to the ReadMe
|
|
253
|
-
(@extend1994)
|
|
254
|
-
|
|
255
|
-
## 0.9.6 (2018/01/13)
|
|
256
|
-
|
|
257
|
-
* (#112) Fixed a race condition where an audio element that contains
|
|
258
|
-
one or more source elements is added to a page, and Peaks.init()
|
|
259
|
-
is called before the audio element has selected which source
|
|
260
|
-
to use. Also improved error reporting, to avoid a misleading "Unable to
|
|
261
|
-
determine a compatible dataUri format for this browser" error (@chrisn)
|
|
262
|
-
|
|
263
|
-
## 0.9.5 (2017/12/11)
|
|
264
|
-
|
|
265
|
-
* (#207) Prevent jump in playhead motion after starting playback
|
|
266
|
-
(@chrisn, @jdelStrother)
|
|
267
|
-
|
|
268
|
-
## 0.9.4 (2017/11/24)
|
|
269
|
-
|
|
270
|
-
* Version bump to refresh npm and browserify cached releases (@chrisn)
|
|
271
|
-
|
|
272
|
-
## 0.9.3 (2017/11/24)
|
|
273
|
-
|
|
274
|
-
* (#201) Added showPlayheadTime option to control display of the current time
|
|
275
|
-
position next to the playhead marker (@chrisn)
|
|
276
|
-
|
|
277
|
-
* (#202) Keep playhead layer in sync with timeupdate events (@jdelStrother)
|
|
278
|
-
|
|
279
|
-
## 0.9.2 (2017/09/27)
|
|
280
|
-
|
|
281
|
-
* (#199) The playhead position is now correctly updated in the zoomable
|
|
282
|
-
view after calling player.seek() (@chrisn)
|
|
283
|
-
* Added parameter validation to player.seek() (@chrisn)
|
|
284
|
-
* Show the time when dragging point markers (@chrisn)
|
|
285
|
-
* Use a fixed set of default colors instead of random colors for segments
|
|
286
|
-
(@chrisn)
|
|
287
|
-
* Simplified createSegmentMarker, createSegmentLabel, and createPointMarker
|
|
288
|
-
functions (@chrisn)
|
|
289
|
-
* Refactored WaveformPoints and WaveformSegments classes (@chrisn)
|
|
290
|
-
* Refactored PointsLayer and SegmentsLayer _removeInvisiblePoints methods
|
|
291
|
-
(@chrisn)
|
|
292
|
-
|
|
293
|
-
## 0.9.1 (2017/08/29)
|
|
294
|
-
|
|
295
|
-
* Fixed bug in IE11 which caused adding segment objects to fail (@chrisn)
|
|
296
|
-
|
|
297
|
-
## 0.9.0 (2017/08/16)
|
|
298
|
-
|
|
299
|
-
* (#184, #116) Fixed waveform zoom and scrolling behaviour. Note that the
|
|
300
|
-
animated zoom feature no longer works, and so static zoom is now always used,
|
|
301
|
-
regardless of the 'zoomAdapter' option (@chrisn)
|
|
302
|
-
* Refactored WaveformSegments and WaveformPoints to separate the UI code into
|
|
303
|
-
new SegmentsLayer and PointsLayer classes (@chrisn)
|
|
304
|
-
* Points and segments are now represented by Point and Segment objects, rather
|
|
305
|
-
than plain JavaScript objects (@chrisn)
|
|
306
|
-
* (#117) Improved rendering speed of points and segments (@chrisn)
|
|
307
|
-
* Points and segments with duplicate ids are no longer allowed (@chrisn)
|
|
308
|
-
* The 'segments.ready' event is deprecated, use 'peaks.ready' instead (@chrisn)
|
|
309
|
-
* Added 'add', 'remove', 'remove_all', and 'dragged' events for points
|
|
310
|
-
and segments (@chrisn)
|
|
311
|
-
* The demo page now allows points and segments to be removed (@chrisn)
|
|
312
|
-
* Added ZoomController and TimeController classes to simplify main.js (@chrisn)
|
|
313
|
-
* Added PlayheadLayer class and refactored WaveformOverview and
|
|
314
|
-
WaveformZoomView so that the playhead update code is reused between both
|
|
315
|
-
(@chrisn)
|
|
316
|
-
* Added peaks.points.getPoint() method (@chrisn)
|
|
317
|
-
* Changed the keyboard interface so that the left/right arrow keys scroll the
|
|
318
|
-
waveform by 1 second, and shift+left/right by one screen width (@chrisn)
|
|
319
|
-
* Improved error messages (@chrisn)
|
|
320
|
-
* Removed Node.js v4 and added v8 in Travis CI builds. Please use v6.0 or later
|
|
321
|
-
to build Peaks.js (@chrisn)
|
|
322
|
-
* Many other refactorings and code improvements (@chrisn)
|
|
323
|
-
|
|
324
|
-
## 0.8.1 (2017/07/03)
|
|
325
|
-
|
|
326
|
-
* Fixed deprecation logging from time API functions (@chrisn)
|
|
327
|
-
* Added parameter validation to Player.playSegment (@chrisn)
|
|
328
|
-
|
|
329
|
-
## 0.8.0 (2017/07/01)
|
|
330
|
-
|
|
331
|
-
* (#192) Added Player.playSegment() method (@craigharvi3)
|
|
332
|
-
* Deprecated the time API; use the player API instead (@chrisn)
|
|
333
|
-
* Display optional point label text (@chrisn)
|
|
334
|
-
* Added documentation for the points API (@chrisn)
|
|
335
|
-
* Build ChangeLog manually (@chrisn)
|
|
336
|
-
|
|
337
|
-
## 0.7.0 (2017/05/03)
|
|
338
|
-
|
|
339
|
-
* Updated to waveform-data.js v2.0.1 (@chrisn)
|
|
340
|
-
* (#182) Modified build to output a single UMD module; supporting installation with
|
|
341
|
-
package managers or the script-tag (@craigjohnwright)
|
|
342
|
-
* Another fix to mouse dragging behaviour (@chrisn)
|
|
343
|
-
* (#187) Fixed segment handle rendering (@chrisn)
|
|
344
|
-
|
|
345
|
-
## v0.6.0 (2016/12/19)
|
|
346
|
-
|
|
347
|
-
* (#167) Added audioContext config option (@chrisn, @oncletom, @dodds-cc)
|
|
348
|
-
* (#165) Fixed mouse dragging behaviour (@chrisn)
|
|
349
|
-
* (#161) More reliable clicking behaviour, don't turn seek click off on
|
|
350
|
-
vertical mouse movement (@Develliot)
|
|
351
|
-
* (#159) Added JSDoc comments (@chrisn)
|
|
352
|
-
* (#157) Register mouse up/move events to the window rather than the waveform
|
|
353
|
-
stages (@jdelStrother)
|
|
354
|
-
* (#156) Refactored player and keyboard handler objects (@chrisn)
|
|
355
|
-
* (#155) Refactored WaveformPoints and WaveformSegments (@chrisn)
|
|
356
|
-
|
|
357
|
-
## v0.5.0 (2016/08/25)
|
|
358
|
-
|
|
359
|
-
* (#150) Add Peaks.destroy method (@jdelStrother)
|
|
360
|
-
|
|
361
|
-
## v0.4.9 (2016/08/24)
|
|
362
|
-
|
|
363
|
-
* (#151) Report XHR errors (@jdelStrother)
|
|
364
|
-
* (#152) Use the npm version of waveform-data.js (@oncletom)
|
|
365
|
-
|
|
366
|
-
## v0.4.8 (2016/08/18)
|
|
367
|
-
|
|
368
|
-
* Fixed bug in defaultInMarker() which caused the wrong colour to be used for
|
|
369
|
-
left-hand segment markers (@chrisn)
|
|
370
|
-
* Renamed keyboard events (@chrisn)
|
|
371
|
-
* Updated to EventEmitter v1.0.x (@chrisn)
|
|
372
|
-
* Updated to Konva v1.0.x (@chrisn)
|
|
373
|
-
* Fixed adding points from Peaks.init() (@chrisn)
|
|
374
|
-
* (#144) Use Konva.FastLayer for drawing waveforms (@jdelStrother)
|
|
375
|
-
* (#143) Improve addSegment() method signature (@jdelStrother)
|
|
376
|
-
* (#142) Serve media from Karma during tests (@jdelStrother)
|
|
377
|
-
* (#141) Add/remove points and segments by ID (@jdelStrother)
|
|
378
|
-
* (#140) Expose browserified version as package.json "main" property
|
|
379
|
-
(@oncletom)
|
|
380
|
-
* (#139) Fixed keyboard right-shift bug (@chrisn)
|
|
381
|
-
* Numerous other refactorings (@chrisn)
|
|
382
|
-
|
|
383
|
-
## v0.4.6 (2015/09/29)
|
|
384
|
-
|
|
385
|
-
* (#127) Don't add waveform layer to the overview stage twice and ensure
|
|
386
|
-
the UI layer is on top (@johvet)
|
|
387
|
-
* (#125) Node 0.12 and iojs compability (@oncletom)
|
|
388
|
-
* (#120) Explicit segment draw on drag resize (@oncletom)
|
|
389
|
-
* (#121) Make more colors configurable (@ziggythehamster)
|
|
390
|
-
|
|
391
|
-
## v0.4.5 (2015/07/02)
|
|
392
|
-
|
|
393
|
-
* (#123) Allow alternate zoom adapters, add a static (non-animated) zoom
|
|
394
|
-
adapter, add more safety checks (@johvet, @ziggythehamster)
|
|
395
|
-
|
|
396
|
-
## v0.4.4 (2015/06/30)
|
|
397
|
-
|
|
398
|
-
* (#122) Fix typo, seeking instead of seaking (@johvet)
|
|
399
|
-
* (#113) Make the axis label and gridline colors configurable
|
|
400
|
-
(@ziggythehamster)
|
|
401
|
-
* (#111) Initial error logging function for async errors (@oncletom)
|
|
402
|
-
* (#108) fix for bug #105 (@un-chein-andalou)
|
|
403
|
-
|
|
404
|
-
## 0.4.3 (2014/10/15)
|
|
405
|
-
|
|
406
|
-
* (#101) deamdify and browserify back to optionalDependencies (@oncletom)
|
|
407
|
-
|
|
408
|
-
## 0.4.2 (2014/10/09)
|
|
409
|
-
|
|
410
|
-
* Replaced example image in README.md
|
|
411
|
-
* Fixed time-out errors in Travis CI builds
|
|
412
|
-
|
|
413
|
-
## 0.4.1 (2014/10/09)
|
|
414
|
-
|
|
415
|
-
* (#86) Fix Kinetic bower path in README (@oncletom)
|
|
416
|
-
|
|
417
|
-
## 0.4.0 (2014/09/24)
|
|
418
|
-
|
|
419
|
-
* (#72) Upgrade to Kinetic 5.10 (@oncletom)
|
|
420
|
-
* (#84) Switch from SauceLabs to BrowserStack (@oncletom)
|
|
421
|
-
* (#81) beforeEach -> before, afterEach -> after (@oncletom)
|
|
422
|
-
* (#78) Added peaks.points.removeAll() method (@oncletom)
|
|
423
|
-
|
|
424
|
-
## 0.3.2 (2014/09/10)
|
|
425
|
-
|
|
426
|
-
* (#79) EventEmitter2 prototype workaround (@oncletom)
|
|
427
|
-
* (#75) Fixed Travis + IE9 tests (@oncletom)
|
|
428
|
-
|
|
429
|
-
## 0.3.1 (2014/09/08)
|
|
430
|
-
|
|
431
|
-
* (#74) 0.3 Build System Fix (@oncletom)
|
|
432
|
-
|
|
433
|
-
## 0.3.0 (2014/08/21)
|
|
434
|
-
|
|
435
|
-
* (#71) Replaced eventEmitter with eventemitter2 (@oncletom)
|
|
436
|
-
|
|
437
|
-
## 0.3.0-beta.5 (2014/07/10)
|
|
438
|
-
|
|
439
|
-
* (#62) Added waveformZoomReady event (after segments and points initialized)
|
|
440
|
-
(@chainlink)
|
|
441
|
-
|
|
442
|
-
## 0.3.0-beta.4 (2014/07/10)
|
|
443
|
-
|
|
444
|
-
* Automatically deamdify files with browserify
|
|
445
|
-
|
|
446
|
-
## 0.3.0-beta.3 (2014/07/10)
|
|
447
|
-
|
|
448
|
-
* (#66) Simplified build system (@oncletom)
|
|
449
|
-
* (#63) Fixed bug when using grunt build for vanilla JS (Kinetic Not Found)
|
|
450
|
-
(@chainlink)
|
|
451
|
-
* (#52) Custom height for each container (@bbcrd)
|
|
452
|
-
* Refactored waveform rendering code (@oncletom)
|
|
453
|
-
* View height can be set through CSS (@oncletom)
|
|
454
|
-
* Added smooth zoom animation (@mgrewal, @oncletom)
|
|
455
|
-
* Use waveform-data.js v1.2.0 (@chainlink)
|
|
456
|
-
* Added Points interface (@chainlink)
|
|
457
|
-
|
|
458
|
-
## 0.3.0-beta.2 (2014/06/28)
|
|
459
|
-
|
|
460
|
-
* (#51) Added functions to delete segments (@oncletom)
|
|
461
|
-
* Aliased segments.addSegment as segments.add (@oncletom)
|
|
462
|
-
|
|
463
|
-
## 0.3.0-beta.1 (2014/06/27)
|
|
464
|
-
|
|
465
|
-
* (#50) Peaks build system (@oncletom)
|
|
466
|
-
* Added Web Audio builder from waveform-data.js
|
|
467
|
-
|
|
468
|
-
## 0.2.1 (2014/03/24)
|
|
469
|
-
|
|
470
|
-
* (#43) Fixed "SYNTAX_ERR: DOM Exception 12" error in Safari (@oncletom)
|
|
471
|
-
* (#28) Segment improvement (@oncletom)
|
|
472
|
-
|
|
473
|
-
## 0.2.0 (2014/03/13)
|
|
474
|
-
|
|
475
|
-
* (#36) Ability to work with a video element as well (@oncletom)
|
|
476
|
-
* (#39) Fixing the `FAILED Peaks.segments "before each" hook` breaking CI
|
|
477
|
-
(@oncletom)
|
|
478
|
-
* (#38) Removing the requirejs builder (@oncletom)
|
|
479
|
-
* (#37) Added "segments.ready" event (@oncletom)
|
|
480
|
-
* (#35) Simplifying the AMD tree (@oncletom)
|
|
481
|
-
* (#32) Resize event is assigned to window and not the Peaks instance
|
|
482
|
-
(@oncletom)
|
|
483
|
-
* (#33) Enforcing strict mode (@oncletom)
|
|
484
|
-
|
|
485
|
-
## 0.1.0 (2014/02/25)
|
|
486
|
-
|
|
487
|
-
* (#26) Removed sass dependency (@oncletom)
|
|
488
|
-
* (#20) Removed JST/Underscore dependencies (@oncletom)
|
|
489
|
-
* (#19) Added tests for each element of the public API (@oncletom)
|
|
490
|
-
* (#15) Partially removed jQuery dependency (@oncletom)
|
|
491
|
-
* (#14) Fixed {zoom,over}view mouseup is not releasing document.addEventListener("mouseup") (@oncletom)
|
|
492
|
-
* (#11) Handling multiple Peaks instances (@oncletom)
|
|
493
|
-
* (#10) Added peaks.time.setCurrentTime() (@oncletom)
|
|
494
|
-
* Rewrote the README and added screenshot (@oncletom)
|
|
495
|
-
* Fixed playhead positioning after click/drag etc (@oncletom)
|
|
496
|
-
* Removed dependency on underscore (@oncletom)
|
|
497
|
-
* Added parameter validation (@oncletom)
|
|
498
|
-
* Added test cases for segments API and zoom levels (@oncletom)
|
|
499
|
-
* Removed bootstrap module (@oncletom)
|
|
500
|
-
|
|
501
|
-
## 0.0.6 (2014/02/19)
|
|
502
|
-
|
|
503
|
-
* (#30) Clicking in the zoomview should just change the playhead position
|
|
504
|
-
(@oncletom)
|
|
505
|
-
|
|
506
|
-
## 0.0.5 (2014/02/17)
|
|
507
|
-
|
|
508
|
-
* (#25) Dragging zoomview bug (low priority) (@oncletom)
|
|
509
|
-
* (#24) Out of Range bug (@oncletom)
|
|
510
|
-
|
|
511
|
-
## 0.0.4 (2014/02/06)
|
|
512
|
-
|
|
513
|
-
* (#22) Seeking not working (@oncletom)
|
|
514
|
-
|
|
515
|
-
## 0.0.3 (2014/01/30)
|
|
516
|
-
|
|
517
|
-
* (#17) Moving the playhead in views now updates the audio element
|
|
518
|
-
currentTime (@oncletom)
|
|
519
|
-
* (#16) Fixed IE9 bug with createSegment (@oncletom)
|
|
520
|
-
* (#3) Added TravisCI + Saucelabs (@oncletom)
|
|
521
|
-
* (#13) Migrated to Mocha+Chai for tests (@oncletom)
|
|
522
|
-
|
|
523
|
-
## 0.0.2 (2014/01/28)
|
|
524
|
-
|
|
525
|
-
* (#12) `element.currentTime` side-effect (@oncletom)
|
|
526
|
-
* (#5) Segments performance boost (@oncletom)
|
|
527
|
-
|
|
528
|
-
## 0.0.1 (2013/12/14 09:42 +00:00)
|
|
529
|
-
|
|
530
|
-
* (#1) bower install failing for me (@oncletom)
|