@checksub_team/peaks_timeline 2.2.1 → 2.2.3

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": "2.2.1",
3
+ "version": "2.2.3",
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
@@ -15875,24 +15875,24 @@ module.exports = function (Konva, SVGs, Utils) {
15875
15875
  ]);
15876
15876
  this.refreshIndicators();
15877
15877
  };
15878
- LineIndicator.prototype._createIndicator = function (lineGroup, type, text, subText) {
15878
+ LineIndicator.prototype._createIndicator = function (lineGroup, type, text, subText, defaultStyle = {}) {
15879
15879
  const indicator = new Konva.Group();
15880
15880
  let indicatorHeight = 0;
15881
15881
  var self = this;
15882
15882
  var textGroup, iconGroup, subTextGroup;
15883
15883
  var textNode, iconNode, subTextNode;
15884
15884
  if (text) {
15885
- [textGroup, textNode] = this._createIndicatorText(text);
15885
+ [textGroup, textNode] = this._createIndicatorText(text, 'line-indicator-text', defaultStyle);
15886
15886
  indicator.add(textGroup);
15887
15887
  indicatorHeight += textGroup.getAttr('trueHeight') + this._topPadding;
15888
15888
  }
15889
- [iconGroup, iconNode] = this._createIndicatorIcon(type);
15889
+ [iconGroup, iconNode] = this._createIndicatorIcon(type, 'line-indicator-icon', defaultStyle);
15890
15890
  iconGroup.y(indicatorHeight);
15891
15891
  indicator.add(iconGroup);
15892
15892
  indicatorHeight += iconGroup.getAttr('trueHeight');
15893
15893
  if (subText) {
15894
15894
  indicatorHeight += this._bottomPadding;
15895
- [subTextGroup, subTextNode] = this._createIndicatorText(subText);
15895
+ [subTextGroup, subTextNode] = this._createIndicatorText(subText, 'line-indicator-subText', defaultStyle);
15896
15896
  subTextGroup.y(indicatorHeight);
15897
15897
  indicator.add(subTextGroup);
15898
15898
  indicatorHeight += subTextGroup.getAttr('trueHeight');
@@ -15973,16 +15973,18 @@ module.exports = function (Konva, SVGs, Utils) {
15973
15973
  indicator.y(lineGroup.y() + (lineGroup.lineHeight() - indicatorHeight) / 2);
15974
15974
  return indicator;
15975
15975
  };
15976
- LineIndicator.prototype._createIndicatorText = function (text) {
15976
+ LineIndicator.prototype._createIndicatorText = function (text, role, defaultStyle = {}) {
15977
+ defaultStyle = defaultStyle[role] || {};
15977
15978
  const textGroup = new Konva.Group();
15978
15979
  const textNode = new Konva.Text({
15979
15980
  text: text,
15980
15981
  fontSize: this._sizes.font,
15981
15982
  fontFamily: this._peaks.options.lineIndicatorFont,
15982
- fill: this._peaks.options.lineIndicatorTextColor,
15983
+ fill: defaultStyle.fill || this._peaks.options.lineIndicatorTextColor,
15983
15984
  align: 'center',
15984
15985
  width: this._width,
15985
- listening: false
15986
+ listening: false,
15987
+ name: role
15986
15988
  });
15987
15989
  textNode.setAttr('defaultColor', this._peaks.options.lineIndicatorTextColor);
15988
15990
  textNode.setAttr('selectedColor', this._peaks.options.lineIndicatorSelectedTextColor);
@@ -16003,7 +16005,8 @@ module.exports = function (Konva, SVGs, Utils) {
16003
16005
  textNode
16004
16006
  ];
16005
16007
  };
16006
- LineIndicator.prototype._createIndicatorIcon = function (type) {
16008
+ LineIndicator.prototype._createIndicatorIcon = function (type, role, defaultStyle = {}) {
16009
+ defaultStyle = defaultStyle[role] || {};
16007
16010
  type = this._types.includes(type) ? type : 'default';
16008
16011
  const iconGroup = new Konva.Group();
16009
16012
  var iconHeight = this._sizes.icon[type];
@@ -16013,21 +16016,23 @@ module.exports = function (Konva, SVGs, Utils) {
16013
16016
  x: this._width / 2,
16014
16017
  y: this._sizes.icon.default / 2,
16015
16018
  radius: this._sizes.icon.default / 2,
16016
- fill: this._peaks.options.lineIndicatorIconColor,
16019
+ fill: defaultStyle.fill || this._peaks.options.lineIndicatorIconColor,
16017
16020
  strokeWidth: 0,
16018
- listening: false
16021
+ listening: false,
16022
+ name: role
16019
16023
  });
16020
16024
  } else {
16021
16025
  iconNode = new Konva.Path({
16022
16026
  x: (this._width - this._sizes.icon[type]) / 2,
16023
16027
  y: 0,
16024
16028
  data: SVGs[type].path,
16025
- fill: this._peaks.options.lineIndicatorIconColor,
16029
+ fill: defaultStyle.fill || this._peaks.options.lineIndicatorIconColor,
16026
16030
  scale: {
16027
16031
  x: this._sizes.icon[type] / SVGs[type].width,
16028
16032
  y: this._sizes.icon[type] / SVGs[type].height
16029
16033
  },
16030
- listening: false
16034
+ listening: false,
16035
+ name: role
16031
16036
  });
16032
16037
  }
16033
16038
  iconNode.setAttr('defaultColor', this._peaks.options.lineIndicatorIconColor);
@@ -16069,11 +16074,11 @@ module.exports = function (Konva, SVGs, Utils) {
16069
16074
  this._peaks.logger('peaks.line-indicator.update(): line indicator not found: ' + line.id);
16070
16075
  return;
16071
16076
  }
16072
- if (indicatorData.type === line.indicatorType && indicatorData.text === line.indicatorText) {
16077
+ if (indicatorData.type === line.indicatorType && indicatorData.text === line.indicatorText && indicatorData.subText === line.indicatorSubText) {
16073
16078
  return;
16074
16079
  }
16075
- this.removeIndicator(line.id, true);
16076
- var indicator = this._createIndicator(indicatorData.lineGroup, line.indicatorType, line.indicatorText, line.indicatorSubText);
16080
+ const styleData = this.removeIndicator(line.id, true);
16081
+ var indicator = this._createIndicator(indicatorData.lineGroup, line.indicatorType, line.indicatorText, line.indicatorSubText, styleData);
16077
16082
  this._layer.add(indicator);
16078
16083
  indicatorData.indicator = indicator;
16079
16084
  indicatorData.type = line.indicatorType;
@@ -16081,17 +16086,40 @@ module.exports = function (Konva, SVGs, Utils) {
16081
16086
  indicatorData.subText = line.indicatorSubText;
16082
16087
  this.batchDraw();
16083
16088
  };
16089
+ LineIndicator.prototype._getStyleData = function (konvaItem) {
16090
+ if (!konvaItem) {
16091
+ return {};
16092
+ }
16093
+ var styleData = {};
16094
+ const name = konvaItem.name();
16095
+ if (name) {
16096
+ styleData[name] = { fill: konvaItem.fill() };
16097
+ }
16098
+ if (typeof konvaItem.getChildren === 'function') {
16099
+ const children = konvaItem.getChildren();
16100
+ if (children && children.length > 0) {
16101
+ children.forEach(function (child) {
16102
+ styleData = Object.assign(styleData, this._getStyleData(child));
16103
+ }.bind(this));
16104
+ }
16105
+ }
16106
+ return styleData;
16107
+ };
16084
16108
  LineIndicator.prototype.removeIndicator = function (lineId, keepInList) {
16109
+ var styleData = {};
16085
16110
  if (this._indicators[lineId]) {
16086
- if (this._indicators[lineId].indicator) {
16087
- this._indicators[lineId].indicator.destroy();
16088
- }
16111
+ const indicator = this._indicators[lineId].indicator;
16089
16112
  if (!keepInList) {
16090
16113
  delete this._indicators[lineId];
16091
16114
  } else {
16092
16115
  this._indicators[lineId].indicator = null;
16116
+ styleData = this._getStyleData(indicator);
16117
+ }
16118
+ if (indicator) {
16119
+ indicator.destroy();
16093
16120
  }
16094
16121
  }
16122
+ return styleData;
16095
16123
  };
16096
16124
  LineIndicator.prototype.refreshIndicator = function (lineId) {
16097
16125
  var anyChange = false;
@@ -89,7 +89,7 @@ define([
89
89
  this.refreshIndicators();
90
90
  };
91
91
 
92
- LineIndicator.prototype._createIndicator = function(lineGroup, type, text, subText) {
92
+ LineIndicator.prototype._createIndicator = function(lineGroup, type, text, subText, defaultStyle = {}) {
93
93
  const indicator = new Konva.Group();
94
94
  let indicatorHeight = 0;
95
95
  var self = this;
@@ -97,13 +97,13 @@ define([
97
97
  var textNode, iconNode, subTextNode;
98
98
 
99
99
  if (text) {
100
- [textGroup, textNode] = this._createIndicatorText(text);
100
+ [textGroup, textNode] = this._createIndicatorText(text, 'line-indicator-text', defaultStyle);
101
101
 
102
102
  indicator.add(textGroup);
103
103
  indicatorHeight += textGroup.getAttr('trueHeight') + this._topPadding;
104
104
  }
105
105
 
106
- [iconGroup, iconNode] = this._createIndicatorIcon(type);
106
+ [iconGroup, iconNode] = this._createIndicatorIcon(type, 'line-indicator-icon', defaultStyle);
107
107
 
108
108
  iconGroup.y(indicatorHeight);
109
109
  indicator.add(iconGroup);
@@ -112,7 +112,7 @@ define([
112
112
  if (subText) {
113
113
  indicatorHeight += this._bottomPadding;
114
114
 
115
- [subTextGroup, subTextNode] = this._createIndicatorText(subText);
115
+ [subTextGroup, subTextNode] = this._createIndicatorText(subText, 'line-indicator-subText', defaultStyle);
116
116
 
117
117
  subTextGroup.y(indicatorHeight);
118
118
  indicator.add(subTextGroup);
@@ -208,17 +208,19 @@ define([
208
208
  return indicator;
209
209
  };
210
210
 
211
- LineIndicator.prototype._createIndicatorText = function(text) {
211
+ LineIndicator.prototype._createIndicatorText = function(text, role, defaultStyle = {}) {
212
+ defaultStyle = defaultStyle[role] || {};
212
213
  const textGroup = new Konva.Group();
213
214
 
214
215
  const textNode = new Konva.Text({
215
216
  text: text,
216
217
  fontSize: this._sizes.font,
217
218
  fontFamily: this._peaks.options.lineIndicatorFont,
218
- fill: this._peaks.options.lineIndicatorTextColor,
219
+ fill: defaultStyle.fill || this._peaks.options.lineIndicatorTextColor,
219
220
  align: 'center',
220
221
  width: this._width,
221
- listening: false
222
+ listening: false,
223
+ name: role
222
224
  });
223
225
 
224
226
  textNode.setAttr('defaultColor', this._peaks.options.lineIndicatorTextColor);
@@ -242,7 +244,8 @@ define([
242
244
  return [textGroup, textNode];
243
245
  };
244
246
 
245
- LineIndicator.prototype._createIndicatorIcon = function(type) {
247
+ LineIndicator.prototype._createIndicatorIcon = function(type, role, defaultStyle = {}) {
248
+ defaultStyle = defaultStyle[role] || {};
246
249
  type = this._types.includes(type) ? type : 'default';
247
250
 
248
251
  const iconGroup = new Konva.Group();
@@ -255,9 +258,10 @@ define([
255
258
  x: this._width / 2,
256
259
  y: this._sizes.icon.default / 2,
257
260
  radius: this._sizes.icon.default / 2,
258
- fill: this._peaks.options.lineIndicatorIconColor,
261
+ fill: defaultStyle.fill || this._peaks.options.lineIndicatorIconColor,
259
262
  strokeWidth: 0,
260
- listening: false
263
+ listening: false,
264
+ name: role
261
265
  });
262
266
  }
263
267
  else {
@@ -265,12 +269,13 @@ define([
265
269
  x: (this._width - this._sizes.icon[type]) / 2,
266
270
  y: 0,
267
271
  data: SVGs[type].path,
268
- fill: this._peaks.options.lineIndicatorIconColor,
272
+ fill: defaultStyle.fill || this._peaks.options.lineIndicatorIconColor,
269
273
  scale: {
270
274
  x: (this._sizes.icon[type]) / SVGs[type].width,
271
275
  y: (this._sizes.icon[type]) / SVGs[type].height
272
276
  },
273
- listening: false
277
+ listening: false,
278
+ name: role
274
279
  });
275
280
  }
276
281
 
@@ -326,17 +331,20 @@ define([
326
331
  return;
327
332
  }
328
333
 
329
- if (indicatorData.type === line.indicatorType && indicatorData.text === line.indicatorText) {
334
+ if (indicatorData.type === line.indicatorType
335
+ && indicatorData.text === line.indicatorText
336
+ && indicatorData.subText === line.indicatorSubText) {
330
337
  return;
331
338
  }
332
339
 
333
- this.removeIndicator(line.id, true);
340
+ const styleData = this.removeIndicator(line.id, true);
334
341
 
335
342
  var indicator = this._createIndicator(
336
343
  indicatorData.lineGroup,
337
344
  line.indicatorType,
338
345
  line.indicatorText,
339
- line.indicatorSubText
346
+ line.indicatorSubText,
347
+ styleData
340
348
  );
341
349
 
342
350
  this._layer.add(indicator);
@@ -349,18 +357,51 @@ define([
349
357
  this.batchDraw();
350
358
  };
351
359
 
360
+ LineIndicator.prototype._getStyleData = function(konvaItem) {
361
+ if (!konvaItem) {
362
+ return {};
363
+ }
364
+
365
+ var styleData = {};
366
+ const name = konvaItem.name();
367
+
368
+ if (name) {
369
+ styleData[name] = {
370
+ fill: konvaItem.fill()
371
+ };
372
+ }
373
+
374
+ if (typeof konvaItem.getChildren === 'function') {
375
+ const children = konvaItem.getChildren();
376
+
377
+ if (children && children.length > 0) {
378
+ children.forEach(function(child) {
379
+ styleData = Object.assign(styleData, this._getStyleData(child));
380
+ }.bind(this));
381
+ }
382
+ }
383
+
384
+ return styleData;
385
+ };
386
+
352
387
  LineIndicator.prototype.removeIndicator = function(lineId, keepInList) {
388
+ var styleData = {};
389
+
353
390
  if (this._indicators[lineId]) {
354
- if (this._indicators[lineId].indicator) {
355
- this._indicators[lineId].indicator.destroy();
356
- }
391
+ const indicator = this._indicators[lineId].indicator;
392
+
357
393
  if (!keepInList) {
358
394
  delete this._indicators[lineId];
359
395
  }
360
396
  else {
361
397
  this._indicators[lineId].indicator = null;
398
+ styleData = this._getStyleData(indicator);
399
+ }
400
+ if (indicator) {
401
+ indicator.destroy();
362
402
  }
363
403
  }
404
+ return styleData;
364
405
  };
365
406
 
366
407
  LineIndicator.prototype.refreshIndicator = function(lineId) {