wavesurfer.js 6.2.0 → 6.4.0

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.
Files changed (58) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -10
  3. package/dist/plugin/wavesurfer.cursor.js +29 -49
  4. package/dist/plugin/wavesurfer.cursor.js.map +1 -1
  5. package/dist/plugin/wavesurfer.cursor.min.js +2 -2
  6. package/dist/plugin/wavesurfer.cursor.min.js.map +1 -1
  7. package/dist/plugin/wavesurfer.elan.js +19 -49
  8. package/dist/plugin/wavesurfer.elan.js.map +1 -1
  9. package/dist/plugin/wavesurfer.elan.min.js +1 -1
  10. package/dist/plugin/wavesurfer.elan.min.js.map +1 -1
  11. package/dist/plugin/wavesurfer.markers.js +87 -67
  12. package/dist/plugin/wavesurfer.markers.js.map +1 -1
  13. package/dist/plugin/wavesurfer.markers.min.js +2 -2
  14. package/dist/plugin/wavesurfer.markers.min.js.map +1 -1
  15. package/dist/plugin/wavesurfer.mediasession.js +5 -15
  16. package/dist/plugin/wavesurfer.mediasession.js.map +1 -1
  17. package/dist/plugin/wavesurfer.mediasession.min.js +1 -1
  18. package/dist/plugin/wavesurfer.mediasession.min.js.map +1 -1
  19. package/dist/plugin/wavesurfer.microphone.js +44 -62
  20. package/dist/plugin/wavesurfer.microphone.js.map +1 -1
  21. package/dist/plugin/wavesurfer.microphone.min.js +1 -1
  22. package/dist/plugin/wavesurfer.microphone.min.js.map +1 -1
  23. package/dist/plugin/wavesurfer.minimap.js +16 -68
  24. package/dist/plugin/wavesurfer.minimap.js.map +1 -1
  25. package/dist/plugin/wavesurfer.minimap.min.js +1 -1
  26. package/dist/plugin/wavesurfer.minimap.min.js.map +1 -1
  27. package/dist/plugin/wavesurfer.playhead.js +2 -29
  28. package/dist/plugin/wavesurfer.playhead.js.map +1 -1
  29. package/dist/plugin/wavesurfer.playhead.min.js +1 -1
  30. package/dist/plugin/wavesurfer.playhead.min.js.map +1 -1
  31. package/dist/plugin/wavesurfer.regions.js +99 -253
  32. package/dist/plugin/wavesurfer.regions.js.map +1 -1
  33. package/dist/plugin/wavesurfer.regions.min.js +2 -2
  34. package/dist/plugin/wavesurfer.regions.min.js.map +1 -1
  35. package/dist/plugin/wavesurfer.spectrogram.js +52 -147
  36. package/dist/plugin/wavesurfer.spectrogram.js.map +1 -1
  37. package/dist/plugin/wavesurfer.spectrogram.min.js +2 -2
  38. package/dist/plugin/wavesurfer.spectrogram.min.js.map +1 -1
  39. package/dist/plugin/wavesurfer.timeline.js +42 -85
  40. package/dist/plugin/wavesurfer.timeline.js.map +1 -1
  41. package/dist/plugin/wavesurfer.timeline.min.js +1 -1
  42. package/dist/plugin/wavesurfer.timeline.min.js.map +1 -1
  43. package/dist/wavesurfer-html-init.js +31 -53
  44. package/dist/wavesurfer-html-init.js.map +1 -1
  45. package/dist/wavesurfer-html-init.min.js +1 -1
  46. package/dist/wavesurfer-html-init.min.js.map +1 -1
  47. package/dist/wavesurfer.js +448 -1008
  48. package/dist/wavesurfer.js.map +1 -1
  49. package/dist/wavesurfer.min.js +2 -2
  50. package/dist/wavesurfer.min.js.map +1 -1
  51. package/package.json +18 -19
  52. package/src/drawer.multicanvas.js +4 -4
  53. package/src/plugin/cursor/index.js +15 -3
  54. package/src/plugin/markers/index.js +70 -5
  55. package/src/plugin/regions/index.js +1 -1
  56. package/src/plugin/spectrogram/index.js +1 -1
  57. package/src/wavesurfer.js +12 -9
  58. package/CHANGES.md +0 -474
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * wavesurfer.js markers plugin 6.2.0 (2022-05-16)
2
+ * wavesurfer.js markers plugin 6.4.0 (2022-11-05)
3
3
  * https://wavesurfer-js.org
4
4
  * @license BSD-3-Clause
5
5
  */
@@ -29,23 +29,22 @@ Object.defineProperty(exports, "__esModule", ({
29
29
  value: true
30
30
  }));
31
31
  exports["default"] = void 0;
32
-
33
32
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
34
-
35
33
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
36
-
37
34
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
38
-
39
35
  /**
40
36
  * @typedef {Object} MarkerParams
41
37
  * @desc The parameters used to describe a marker.
42
38
  * @example wavesurfer.addMarker(regionParams);
43
39
  * @property {number} time The time to set the marker at
44
40
  * @property {?label} string An optional marker label
41
+ * @property {?tooltip} string An optional marker tooltip
45
42
  * @property {?color} string Background color for marker
46
43
  * @property {?position} string "top" or "bottom", defaults to "bottom"
47
44
  * @property {?markerElement} element An HTML element to display instead of the default marker image
48
45
  * @property {?draggable} boolean Set marker as draggable, defaults to false
46
+ * @property {?boolean} preventContextMenu Determines whether the context menu
47
+ * is prevented from being opened, defaults to false
49
48
  */
50
49
 
51
50
  /**
@@ -69,15 +68,13 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
69
68
  * ]
70
69
  * });
71
70
  */
71
+
72
72
  var DEFAULT_FILL_COLOR = "#D8D8D8";
73
73
  var DEFAULT_POSITION = "bottom";
74
-
75
74
  var MarkersPlugin = /*#__PURE__*/function () {
76
75
  function MarkersPlugin(params, ws) {
77
76
  var _this = this;
78
-
79
77
  _classCallCheck(this, MarkersPlugin);
80
-
81
78
  this.params = params;
82
79
  this.wavesurfer = ws;
83
80
  this.util = ws.util;
@@ -86,60 +83,45 @@ var MarkersPlugin = /*#__PURE__*/function () {
86
83
  this.markerWidth = 11;
87
84
  this.markerHeight = 22;
88
85
  this.dragging = false;
89
-
90
86
  this._onResize = function () {
91
87
  _this._updateMarkerPositions();
92
88
  };
93
-
94
89
  this._onBackendCreated = function () {
95
90
  _this.wrapper = _this.wavesurfer.drawer.wrapper;
96
-
97
91
  if (_this.params.markers) {
98
92
  _this.params.markers.forEach(function (marker) {
99
93
  return _this.add(marker);
100
94
  });
101
95
  }
102
-
103
96
  window.addEventListener('resize', _this._onResize, true);
104
97
  window.addEventListener('orientationchange', _this._onResize, true);
105
-
106
98
  _this.wavesurfer.on('zoom', _this._onResize);
107
-
108
99
  if (!_this.markers.find(function (marker) {
109
100
  return marker.draggable;
110
101
  })) {
111
102
  return;
112
103
  }
113
-
114
104
  _this.onMouseMove = function (e) {
115
105
  return _this._onMouseMove(e);
116
106
  };
117
-
118
107
  window.addEventListener('mousemove', _this.onMouseMove);
119
-
120
108
  _this.onMouseUp = function (e) {
121
109
  return _this._onMouseUp(e);
122
110
  };
123
-
124
111
  window.addEventListener("mouseup", _this.onMouseUp);
125
112
  };
126
-
127
113
  this.markers = [];
128
-
129
114
  this._onReady = function () {
130
115
  _this.wrapper = _this.wavesurfer.drawer.wrapper;
131
-
132
116
  _this._updateMarkerPositions();
133
117
  };
134
118
  }
135
-
136
119
  _createClass(MarkersPlugin, [{
137
120
  key: "init",
138
121
  value: function init() {
139
122
  // Check if ws is ready
140
123
  if (this.wavesurfer.isReady) {
141
124
  this._onBackendCreated();
142
-
143
125
  this._onReady();
144
126
  } else {
145
127
  this.wavesurfer.once('ready', this._onReady);
@@ -154,59 +136,68 @@ var MarkersPlugin = /*#__PURE__*/function () {
154
136
  this.wavesurfer.un('zoom', this._onResize);
155
137
  window.removeEventListener('resize', this._onResize, true);
156
138
  window.removeEventListener('orientationchange', this._onResize, true);
157
-
158
139
  if (this.onMouseMove) {
159
140
  window.removeEventListener('mousemove', this.onMouseMove);
160
141
  }
161
-
162
142
  if (this.onMouseUp) {
163
143
  window.removeEventListener("mouseup", this.onMouseUp);
164
144
  }
165
-
166
145
  this.clear();
167
146
  }
147
+
168
148
  /**
169
149
  * Add a marker
170
150
  *
171
151
  * @param {MarkerParams} params Marker definition
172
152
  * @return {object} The created marker
173
153
  */
174
-
175
154
  }, {
176
155
  key: "add",
177
156
  value: function add(params) {
178
157
  var marker = {
179
158
  time: params.time,
180
159
  label: params.label,
160
+ tooltip: params.tooltip,
181
161
  color: params.color || DEFAULT_FILL_COLOR,
182
162
  position: params.position || DEFAULT_POSITION,
183
- draggable: !!params.draggable
163
+ draggable: !!params.draggable,
164
+ preventContextMenu: !!params.preventContextMenu
184
165
  };
185
166
  marker.el = this._createMarkerElement(marker, params.markerElement);
186
167
  this.wrapper.appendChild(marker.el);
187
168
  this.markers.push(marker);
188
-
189
169
  this._updateMarkerPositions();
190
-
170
+ this._registerEvents();
191
171
  return marker;
192
172
  }
173
+
193
174
  /**
194
175
  * Remove a marker
195
176
  *
196
177
  * @param {number} index Index of the marker to remove
197
178
  */
198
-
199
179
  }, {
200
180
  key: "remove",
201
181
  value: function remove(index) {
202
182
  var marker = this.markers[index];
203
-
204
183
  if (!marker) {
205
184
  return;
206
185
  }
207
-
186
+ var label = marker.el.getElementsByClassName("marker-label")[0];
187
+ if (label) {
188
+ if (label._onContextMenu) {
189
+ label.removeEventListener("contextmenu", label._onContextMenu);
190
+ }
191
+ if (label._onClick) {
192
+ label.removeEventListener("click", label._onClick);
193
+ }
194
+ if (label._onMouseDown) {
195
+ label.removeEventListener("mousedown", label._onMouseDown);
196
+ }
197
+ }
208
198
  this.wrapper.removeChild(marker.el);
209
199
  this.markers.splice(index, 1);
200
+ this._unregisterEvents();
210
201
  }
211
202
  }, {
212
203
  key: "_createPointerSVG",
@@ -219,11 +210,9 @@ var MarkersPlugin = /*#__PURE__*/function () {
219
210
  polygon.setAttribute("stroke", "#979797");
220
211
  polygon.setAttribute("fill", color);
221
212
  polygon.setAttribute("points", "20 0 40 30 40 80 0 80 0 30");
222
-
223
213
  if (position == "top") {
224
214
  polygon.setAttribute("transform", "rotate(180, 20 40)");
225
215
  }
226
-
227
216
  el.appendChild(polygon);
228
217
  this.style(el, {
229
218
  width: this.markerWidth + "px",
@@ -238,8 +227,8 @@ var MarkersPlugin = /*#__PURE__*/function () {
238
227
  key: "_createMarkerElement",
239
228
  value: function _createMarkerElement(marker, markerElement) {
240
229
  var _this2 = this;
241
-
242
230
  var label = marker.label;
231
+ var tooltip = marker.tooltip;
243
232
  var el = document.createElement('marker');
244
233
  el.className = "wavesurfer-marker";
245
234
  this.style(el, {
@@ -261,51 +250,53 @@ var MarkersPlugin = /*#__PURE__*/function () {
261
250
  });
262
251
  el.appendChild(line);
263
252
  var labelDiv = document.createElement('div');
264
-
265
253
  var point = markerElement || this._createPointerSVG(marker.color, marker.position);
266
-
267
254
  if (marker.draggable) {
268
255
  point.draggable = false;
269
256
  }
270
-
271
257
  labelDiv.appendChild(point);
272
-
273
258
  if (label) {
274
259
  var labelEl = document.createElement('span');
275
260
  labelEl.innerText = label;
261
+ labelEl.setAttribute('title', tooltip);
276
262
  this.style(labelEl, {
277
263
  "font-family": "monospace",
278
264
  "font-size": "90%"
279
265
  });
280
266
  labelDiv.appendChild(labelEl);
281
267
  }
282
-
283
268
  this.style(labelDiv, {
284
269
  display: "flex",
285
270
  "align-items": "center",
286
271
  cursor: "pointer"
287
272
  });
273
+ labelDiv.classList.add("marker-label");
288
274
  el.appendChild(labelDiv);
289
- labelDiv.addEventListener("click", function (e) {
290
- e.stopPropagation(); // Click event is caught when the marker-drop event was dispatched.
275
+ labelDiv._onClick = function (e) {
276
+ e.stopPropagation();
277
+ // Click event is caught when the marker-drop event was dispatched.
291
278
  // Drop event was dispatched at this moment, but this.dragging
292
279
  // is waiting for the next tick to set as false
293
-
294
280
  if (_this2.dragging) {
295
281
  return;
296
282
  }
297
-
298
283
  _this2.wavesurfer.setCurrentTime(marker.time);
299
-
300
284
  _this2.wavesurfer.fireEvent("marker-click", marker, e);
301
- });
302
-
285
+ };
286
+ labelDiv.addEventListener("click", labelDiv._onClick);
287
+ labelDiv._onContextMenu = function (e) {
288
+ if (marker.preventContextMenu) {
289
+ e.preventDefault();
290
+ }
291
+ _this2.wavesurfer.fireEvent("marker-contextmenu", marker, e);
292
+ };
293
+ labelDiv.addEventListener("contextmenu", labelDiv._onContextMenu);
303
294
  if (marker.draggable) {
304
- labelDiv.addEventListener("mousedown", function (e) {
295
+ labelDiv._onMouseDown = function () {
305
296
  _this2.selectedMarker = marker;
306
- });
297
+ };
298
+ labelDiv.addEventListener("mousedown", labelDiv._onMouseDown);
307
299
  }
308
-
309
300
  return el;
310
301
  }
311
302
  }, {
@@ -313,10 +304,10 @@ var MarkersPlugin = /*#__PURE__*/function () {
313
304
  value: function _updateMarkerPositions() {
314
305
  for (var i = 0; i < this.markers.length; i++) {
315
306
  var marker = this.markers[i];
316
-
317
307
  this._updateMarkerPosition(marker);
318
308
  }
319
309
  }
310
+
320
311
  /**
321
312
  * Update a marker position based on its time property.
322
313
  *
@@ -324,7 +315,6 @@ var MarkersPlugin = /*#__PURE__*/function () {
324
315
  * @param {MarkerParams} params The marker to update.
325
316
  * @returns {void}
326
317
  */
327
-
328
318
  }, {
329
319
  key: "_updateMarkerPosition",
330
320
  value: function _updateMarkerPosition(params) {
@@ -337,6 +327,7 @@ var MarkersPlugin = /*#__PURE__*/function () {
337
327
  "max-width": elementWidth - leftPx + "px"
338
328
  });
339
329
  }
330
+
340
331
  /**
341
332
  * Fires `marker-drag` event, update the `time` property for the
342
333
  * selected marker based on the mouse position, and calls to update
@@ -346,23 +337,20 @@ var MarkersPlugin = /*#__PURE__*/function () {
346
337
  * @param {MouseEvent} event The mouse event.
347
338
  * @returns {void}
348
339
  */
349
-
350
340
  }, {
351
341
  key: "_onMouseMove",
352
342
  value: function _onMouseMove(event) {
353
343
  if (!this.selectedMarker) {
354
344
  return;
355
345
  }
356
-
357
346
  if (!this.dragging) {
358
347
  this.dragging = true;
359
348
  this.wavesurfer.fireEvent("marker-drag", this.selectedMarker, event);
360
349
  }
361
-
362
350
  this.selectedMarker.time = this.wavesurfer.drawer.handleEvent(event) * this.wavesurfer.getDuration();
363
-
364
351
  this._updateMarkerPositions();
365
352
  }
353
+
366
354
  /**
367
355
  * Fires `marker-drop` event and unselect the dragged marker.
368
356
  *
@@ -370,35 +358,70 @@ var MarkersPlugin = /*#__PURE__*/function () {
370
358
  * @param {MouseEvent} event The mouse event.
371
359
  * @returns {void}
372
360
  */
373
-
374
361
  }, {
375
362
  key: "_onMouseUp",
376
363
  value: function _onMouseUp(event) {
377
364
  var _this3 = this;
378
-
379
365
  if (this.selectedMarker) {
380
366
  setTimeout(function () {
381
367
  _this3.selectedMarker = false;
382
368
  _this3.dragging = false;
383
369
  }, 0);
384
370
  }
385
-
386
371
  if (!this.dragging) {
387
372
  return;
388
373
  }
389
-
390
374
  event.stopPropagation();
391
375
  var duration = this.wavesurfer.getDuration();
392
376
  this.selectedMarker.time = this.wavesurfer.drawer.handleEvent(event) * duration;
393
-
394
377
  this._updateMarkerPositions();
395
-
396
378
  this.wavesurfer.fireEvent("marker-drop", this.selectedMarker, event);
397
379
  }
380
+ }, {
381
+ key: "_registerEvents",
382
+ value: function _registerEvents() {
383
+ var _this4 = this;
384
+ if (!this.markers.find(function (marker) {
385
+ return marker.draggable;
386
+ })) {
387
+ return;
388
+ }
389
+ //we have some draggable markers, check for listeners
390
+ if (!this.onMouseMove) {
391
+ this.onMouseMove = function (e) {
392
+ return _this4._onMouseMove(e);
393
+ };
394
+ window.addEventListener('mousemove', this.onMouseMove);
395
+ }
396
+ if (!this.onMouseUp) {
397
+ this.onMouseUp = function (e) {
398
+ return _this4._onMouseUp(e);
399
+ };
400
+ window.addEventListener("mouseup", this.onMouseUp);
401
+ }
402
+ }
403
+ }, {
404
+ key: "_unregisterEvents",
405
+ value: function _unregisterEvents() {
406
+ if (this.markers.find(function (marker) {
407
+ return marker.draggable;
408
+ })) {
409
+ return;
410
+ }
411
+ //we don't have any draggable markers, unregister listeners
412
+ if (this.onMouseMove) {
413
+ window.removeEventListener('mousemove', this.onMouseMove);
414
+ this.onMouseMove = null;
415
+ }
416
+ if (this.onMouseUp) {
417
+ window.removeEventListener("mouseup", this.onMouseUp);
418
+ this.onMouseUp = null;
419
+ }
420
+ }
421
+
398
422
  /**
399
423
  * Remove all markers
400
424
  */
401
-
402
425
  }, {
403
426
  key: "clear",
404
427
  value: function clear() {
@@ -437,7 +460,6 @@ var MarkersPlugin = /*#__PURE__*/function () {
437
460
  if (!this.initialisedPluginList.markers) {
438
461
  this.initPlugin('markers');
439
462
  }
440
-
441
463
  return this.markers.add(options);
442
464
  },
443
465
  clearMarkers: function clearMarkers() {
@@ -448,10 +470,8 @@ var MarkersPlugin = /*#__PURE__*/function () {
448
470
  };
449
471
  }
450
472
  }]);
451
-
452
473
  return MarkersPlugin;
453
474
  }();
454
-
455
475
  exports["default"] = MarkersPlugin;
456
476
  module.exports = exports.default;
457
477
 
@@ -1 +1 @@
1
- {"version":3,"file":"wavesurfer.markers.js","mappings":"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","sources":["webpack://WaveSurfer/webpack/universalModuleDefinition","webpack://WaveSurfer/./src/plugin/markers/index.js","webpack://WaveSurfer/webpack/bootstrap","webpack://WaveSurfer/webpack/before-startup","webpack://WaveSurfer/webpack/startup","webpack://WaveSurfer/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"WaveSurfer\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"WaveSurfer\"] = factory();\n\telse\n\t\troot[\"WaveSurfer\"] = root[\"WaveSurfer\"] || {}, root[\"WaveSurfer\"][\"markers\"] = factory();\n})(self, () => {\nreturn ","/**\n * @typedef {Object} MarkerParams\n * @desc The parameters used to describe a marker.\n * @example wavesurfer.addMarker(regionParams);\n * @property {number} time The time to set the marker at\n * @property {?label} string An optional marker label\n * @property {?color} string Background color for marker\n * @property {?position} string \"top\" or \"bottom\", defaults to \"bottom\"\n * @property {?markerElement} element An HTML element to display instead of the default marker image\n * @property {?draggable} boolean Set marker as draggable, defaults to false\n */\n\n\n/**\n * Markers are points in time in the audio that can be jumped to.\n *\n * @implements {PluginClass}\n *\n * @example\n * import MarkersPlugin from 'wavesurfer.markers.js';\n *\n * // if you are using <script> tags\n * var MarkerPlugin = window.WaveSurfer.markers;\n *\n * // ... initialising wavesurfer with the plugin\n * var wavesurfer = WaveSurfer.create({\n * // wavesurfer options ...\n * plugins: [\n * MarkersPlugin.create({\n * // plugin options ...\n * })\n * ]\n * });\n */\n\nconst DEFAULT_FILL_COLOR = \"#D8D8D8\";\nconst DEFAULT_POSITION = \"bottom\";\n\nexport default class MarkersPlugin {\n /**\n * @typedef {Object} MarkersPluginParams\n * @property {?MarkerParams[]} markers Initial set of markers\n * @fires MarkersPlugin#marker-click\n * @fires MarkersPlugin#marker-drag\n * @fires MarkersPlugin#marker-drop\n */\n\n /**\n * Markers plugin definition factory\n *\n * This function must be used to create a plugin definition which can be\n * used by wavesurfer to correctly instantiate the plugin.\n *\n * @param {MarkersPluginParams} params parameters use to initialise the plugin\n * @since 4.6.0\n * @return {PluginDefinition} an object representing the plugin\n */\n static create(params) {\n return {\n name: 'markers',\n deferInit: params && params.deferInit ? params.deferInit : false,\n params: params,\n staticProps: {\n addMarker(options) {\n if (!this.initialisedPluginList.markers) {\n this.initPlugin('markers');\n }\n return this.markers.add(options);\n },\n clearMarkers() {\n this.markers && this.markers.clear();\n }\n },\n instance: MarkersPlugin\n };\n }\n\n constructor(params, ws) {\n this.params = params;\n this.wavesurfer = ws;\n this.util = ws.util;\n this.style = this.util.style;\n this.markerLineWidth = 1;\n this.markerWidth = 11;\n this.markerHeight = 22;\n this.dragging = false;\n\n\n this._onResize = () => {\n this._updateMarkerPositions();\n };\n\n this._onBackendCreated = () => {\n this.wrapper = this.wavesurfer.drawer.wrapper;\n if (this.params.markers) {\n this.params.markers.forEach(marker => this.add(marker));\n }\n window.addEventListener('resize', this._onResize, true);\n window.addEventListener('orientationchange', this._onResize, true);\n this.wavesurfer.on('zoom', this._onResize);\n\n if (!this.markers.find(marker => marker.draggable)){\n return;\n }\n\n this.onMouseMove = (e) => this._onMouseMove(e);\n window.addEventListener('mousemove', this.onMouseMove);\n\n this.onMouseUp = (e) => this._onMouseUp(e);\n window.addEventListener(\"mouseup\", this.onMouseUp);\n };\n\n this.markers = [];\n this._onReady = () => {\n this.wrapper = this.wavesurfer.drawer.wrapper;\n this._updateMarkerPositions();\n };\n }\n\n init() {\n // Check if ws is ready\n if (this.wavesurfer.isReady) {\n this._onBackendCreated();\n this._onReady();\n } else {\n this.wavesurfer.once('ready', this._onReady);\n this.wavesurfer.once('backend-created', this._onBackendCreated);\n }\n }\n\n destroy() {\n this.wavesurfer.un('ready', this._onReady);\n this.wavesurfer.un('backend-created', this._onBackendCreated);\n\n this.wavesurfer.un('zoom', this._onResize);\n\n window.removeEventListener('resize', this._onResize, true);\n window.removeEventListener('orientationchange', this._onResize, true);\n\n if (this.onMouseMove) {\n window.removeEventListener('mousemove', this.onMouseMove);\n }\n if (this.onMouseUp) {\n window.removeEventListener(\"mouseup\", this.onMouseUp);\n }\n\n this.clear();\n }\n\n /**\n * Add a marker\n *\n * @param {MarkerParams} params Marker definition\n * @return {object} The created marker\n */\n add(params) {\n let marker = {\n time: params.time,\n label: params.label,\n color: params.color || DEFAULT_FILL_COLOR,\n position: params.position || DEFAULT_POSITION,\n draggable: !!params.draggable\n };\n\n marker.el = this._createMarkerElement(marker, params.markerElement);\n\n this.wrapper.appendChild(marker.el);\n this.markers.push(marker);\n this._updateMarkerPositions();\n\n return marker;\n }\n\n /**\n * Remove a marker\n *\n * @param {number} index Index of the marker to remove\n */\n remove(index) {\n let marker = this.markers[index];\n if (!marker) {\n return;\n }\n\n this.wrapper.removeChild(marker.el);\n this.markers.splice(index, 1);\n }\n\n _createPointerSVG(color, position) {\n const svgNS = \"http://www.w3.org/2000/svg\";\n\n const el = document.createElementNS(svgNS, \"svg\");\n const polygon = document.createElementNS(svgNS, \"polygon\");\n\n el.setAttribute(\"viewBox\", \"0 0 40 80\");\n\n polygon.setAttribute(\"id\", \"polygon\");\n polygon.setAttribute(\"stroke\", \"#979797\");\n polygon.setAttribute(\"fill\", color);\n polygon.setAttribute(\"points\", \"20 0 40 30 40 80 0 80 0 30\");\n if ( position == \"top\" ) {\n polygon.setAttribute(\"transform\", \"rotate(180, 20 40)\");\n }\n\n el.appendChild(polygon);\n\n this.style(el, {\n width: this.markerWidth + \"px\",\n height: this.markerHeight + \"px\",\n \"min-width\": this.markerWidth + \"px\",\n \"margin-right\": \"5px\",\n \"z-index\": 4\n });\n return el;\n }\n\n _createMarkerElement(marker, markerElement) {\n let label = marker.label;\n\n const el = document.createElement('marker');\n el.className = \"wavesurfer-marker\";\n\n this.style(el, {\n position: \"absolute\",\n height: \"100%\",\n display: \"flex\",\n overflow: \"hidden\",\n \"flex-direction\": (marker.position == \"top\" ? \"column-reverse\" : \"column\")\n });\n\n const line = document.createElement('div');\n const width = markerElement ? markerElement.width : this.markerWidth;\n marker.offset = (width - this.markerLineWidth) / 2;\n this.style(line, {\n \"flex-grow\": 1,\n \"margin-left\": marker.offset + \"px\",\n background: \"black\",\n width: this.markerLineWidth + \"px\",\n opacity: 0.1\n });\n el.appendChild(line);\n\n const labelDiv = document.createElement('div');\n const point = markerElement || this._createPointerSVG(marker.color, marker.position);\n if (marker.draggable){\n point.draggable = false;\n }\n labelDiv.appendChild(point);\n\n if ( label ) {\n const labelEl = document.createElement('span');\n labelEl.innerText = label;\n this.style(labelEl, {\n \"font-family\": \"monospace\",\n \"font-size\": \"90%\"\n });\n labelDiv.appendChild(labelEl);\n }\n\n this.style(labelDiv, {\n display: \"flex\",\n \"align-items\": \"center\",\n cursor: \"pointer\"\n });\n\n el.appendChild(labelDiv);\n\n labelDiv.addEventListener(\"click\", e => {\n e.stopPropagation();\n // Click event is caught when the marker-drop event was dispatched.\n // Drop event was dispatched at this moment, but this.dragging\n // is waiting for the next tick to set as false\n if (this.dragging){\n return;\n }\n this.wavesurfer.setCurrentTime(marker.time);\n this.wavesurfer.fireEvent(\"marker-click\", marker, e);\n });\n\n if (marker.draggable) {\n labelDiv.addEventListener(\"mousedown\", e => {\n this.selectedMarker = marker;\n });\n }\n return el;\n }\n\n _updateMarkerPositions() {\n for ( let i = 0 ; i < this.markers.length; i++ ) {\n let marker = this.markers[i];\n this._updateMarkerPosition(marker);\n }\n }\n\n /**\n * Update a marker position based on its time property.\n *\n * @private\n * @param {MarkerParams} params The marker to update.\n * @returns {void}\n */\n _updateMarkerPosition(params) {\n const duration = this.wavesurfer.getDuration();\n const elementWidth =\n this.wavesurfer.drawer.width /\n this.wavesurfer.params.pixelRatio;\n\n const positionPct = Math.min(params.time / duration, 1);\n const leftPx = ((elementWidth * positionPct) - params.offset);\n this.style(params.el, {\n \"left\": leftPx + \"px\",\n \"max-width\": (elementWidth - leftPx) + \"px\"\n });\n }\n\n /**\n * Fires `marker-drag` event, update the `time` property for the\n * selected marker based on the mouse position, and calls to update\n * its position.\n *\n * @private\n * @param {MouseEvent} event The mouse event.\n * @returns {void}\n */\n _onMouseMove(event) {\n if (!this.selectedMarker){\n return;\n }\n if (!this.dragging){\n this.dragging = true;\n this.wavesurfer.fireEvent(\"marker-drag\", this.selectedMarker, event);\n }\n this.selectedMarker.time = this.wavesurfer.drawer.handleEvent(event) * this.wavesurfer.getDuration();\n this._updateMarkerPositions();\n }\n\n /**\n * Fires `marker-drop` event and unselect the dragged marker.\n *\n * @private\n * @param {MouseEvent} event The mouse event.\n * @returns {void}\n */\n _onMouseUp(event) {\n if (this.selectedMarker) {\n setTimeout(() => {\n this.selectedMarker = false;\n this.dragging = false;\n }, 0);\n }\n\n if (!this.dragging) {\n return;\n }\n\n event.stopPropagation();\n const duration = this.wavesurfer.getDuration();\n this.selectedMarker.time = this.wavesurfer.drawer.handleEvent(event) * duration;\n this._updateMarkerPositions();\n this.wavesurfer.fireEvent(\"marker-drop\", this.selectedMarker, event);\n }\n\n /**\n * Remove all markers\n */\n clear() {\n while ( this.markers.length > 0 ) {\n this.remove(0);\n }\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/plugin/markers/index.js\");\n",""],"names":["DEFAULT_FILL_COLOR","DEFAULT_POSITION","MarkersPlugin","params","ws","wavesurfer","util","style","markerLineWidth","markerWidth","markerHeight","dragging","_onResize","_updateMarkerPositions","_onBackendCreated","wrapper","drawer","markers","forEach","marker","add","window","addEventListener","on","find","draggable","onMouseMove","e","_onMouseMove","onMouseUp","_onMouseUp","_onReady","isReady","once","un","removeEventListener","clear","time","label","color","position","el","_createMarkerElement","markerElement","appendChild","push","index","removeChild","splice","svgNS","document","createElementNS","polygon","setAttribute","width","height","createElement","className","display","overflow","line","offset","background","opacity","labelDiv","point","_createPointerSVG","labelEl","innerText","cursor","stopPropagation","setCurrentTime","fireEvent","selectedMarker","i","length","_updateMarkerPosition","duration","getDuration","elementWidth","pixelRatio","positionPct","Math","min","leftPx","event","handleEvent","setTimeout","remove","name","deferInit","staticProps","addMarker","options","initialisedPluginList","initPlugin","clearMarkers","instance"],"sourceRoot":""}
1
+ {"version":3,"file":"wavesurfer.markers.js","mappings":"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","sources":["webpack://WaveSurfer/webpack/universalModuleDefinition","webpack://WaveSurfer/./src/plugin/markers/index.js","webpack://WaveSurfer/webpack/bootstrap","webpack://WaveSurfer/webpack/before-startup","webpack://WaveSurfer/webpack/startup","webpack://WaveSurfer/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"WaveSurfer\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"WaveSurfer\"] = factory();\n\telse\n\t\troot[\"WaveSurfer\"] = root[\"WaveSurfer\"] || {}, root[\"WaveSurfer\"][\"markers\"] = factory();\n})(self, () => {\nreturn ","/**\n * @typedef {Object} MarkerParams\n * @desc The parameters used to describe a marker.\n * @example wavesurfer.addMarker(regionParams);\n * @property {number} time The time to set the marker at\n * @property {?label} string An optional marker label\n * @property {?tooltip} string An optional marker tooltip\n * @property {?color} string Background color for marker\n * @property {?position} string \"top\" or \"bottom\", defaults to \"bottom\"\n * @property {?markerElement} element An HTML element to display instead of the default marker image\n * @property {?draggable} boolean Set marker as draggable, defaults to false\n * @property {?boolean} preventContextMenu Determines whether the context menu\n * is prevented from being opened, defaults to false\n */\n\n\n/**\n * Markers are points in time in the audio that can be jumped to.\n *\n * @implements {PluginClass}\n *\n * @example\n * import MarkersPlugin from 'wavesurfer.markers.js';\n *\n * // if you are using <script> tags\n * var MarkerPlugin = window.WaveSurfer.markers;\n *\n * // ... initialising wavesurfer with the plugin\n * var wavesurfer = WaveSurfer.create({\n * // wavesurfer options ...\n * plugins: [\n * MarkersPlugin.create({\n * // plugin options ...\n * })\n * ]\n * });\n */\n\nconst DEFAULT_FILL_COLOR = \"#D8D8D8\";\nconst DEFAULT_POSITION = \"bottom\";\n\nexport default class MarkersPlugin {\n /**\n * @typedef {Object} MarkersPluginParams\n * @property {?MarkerParams[]} markers Initial set of markers\n * @fires MarkersPlugin#marker-click\n * @fires MarkersPlugin#marker-drag\n * @fires MarkersPlugin#marker-drop\n */\n\n /**\n * Markers plugin definition factory\n *\n * This function must be used to create a plugin definition which can be\n * used by wavesurfer to correctly instantiate the plugin.\n *\n * @param {MarkersPluginParams} params parameters use to initialise the plugin\n * @since 4.6.0\n * @return {PluginDefinition} an object representing the plugin\n */\n static create(params) {\n return {\n name: 'markers',\n deferInit: params && params.deferInit ? params.deferInit : false,\n params: params,\n staticProps: {\n addMarker(options) {\n if (!this.initialisedPluginList.markers) {\n this.initPlugin('markers');\n }\n return this.markers.add(options);\n },\n clearMarkers() {\n this.markers && this.markers.clear();\n }\n },\n instance: MarkersPlugin\n };\n }\n\n constructor(params, ws) {\n this.params = params;\n this.wavesurfer = ws;\n this.util = ws.util;\n this.style = this.util.style;\n this.markerLineWidth = 1;\n this.markerWidth = 11;\n this.markerHeight = 22;\n this.dragging = false;\n\n\n this._onResize = () => {\n this._updateMarkerPositions();\n };\n\n this._onBackendCreated = () => {\n this.wrapper = this.wavesurfer.drawer.wrapper;\n if (this.params.markers) {\n this.params.markers.forEach(marker => this.add(marker));\n }\n window.addEventListener('resize', this._onResize, true);\n window.addEventListener('orientationchange', this._onResize, true);\n this.wavesurfer.on('zoom', this._onResize);\n\n if (!this.markers.find(marker => marker.draggable)){\n return;\n }\n\n this.onMouseMove = (e) => this._onMouseMove(e);\n window.addEventListener('mousemove', this.onMouseMove);\n\n this.onMouseUp = (e) => this._onMouseUp(e);\n window.addEventListener(\"mouseup\", this.onMouseUp);\n };\n\n this.markers = [];\n this._onReady = () => {\n this.wrapper = this.wavesurfer.drawer.wrapper;\n this._updateMarkerPositions();\n };\n }\n\n init() {\n // Check if ws is ready\n if (this.wavesurfer.isReady) {\n this._onBackendCreated();\n this._onReady();\n } else {\n this.wavesurfer.once('ready', this._onReady);\n this.wavesurfer.once('backend-created', this._onBackendCreated);\n }\n }\n\n destroy() {\n this.wavesurfer.un('ready', this._onReady);\n this.wavesurfer.un('backend-created', this._onBackendCreated);\n\n this.wavesurfer.un('zoom', this._onResize);\n\n window.removeEventListener('resize', this._onResize, true);\n window.removeEventListener('orientationchange', this._onResize, true);\n\n if (this.onMouseMove) {\n window.removeEventListener('mousemove', this.onMouseMove);\n }\n if (this.onMouseUp) {\n window.removeEventListener(\"mouseup\", this.onMouseUp);\n }\n\n this.clear();\n }\n\n /**\n * Add a marker\n *\n * @param {MarkerParams} params Marker definition\n * @return {object} The created marker\n */\n add(params) {\n let marker = {\n time: params.time,\n label: params.label,\n tooltip: params.tooltip,\n color: params.color || DEFAULT_FILL_COLOR,\n position: params.position || DEFAULT_POSITION,\n draggable: !!params.draggable,\n preventContextMenu: !!params.preventContextMenu\n };\n\n marker.el = this._createMarkerElement(marker, params.markerElement);\n\n this.wrapper.appendChild(marker.el);\n this.markers.push(marker);\n this._updateMarkerPositions();\n\n this._registerEvents();\n\n return marker;\n }\n\n /**\n * Remove a marker\n *\n * @param {number} index Index of the marker to remove\n */\n remove(index) {\n let marker = this.markers[index];\n if (!marker) {\n return;\n }\n let label = marker.el.getElementsByClassName(\"marker-label\")[0];\n if (label) {\n if (label._onContextMenu) {\n label.removeEventListener(\"contextmenu\", label._onContextMenu);\n }\n if (label._onClick) {\n label.removeEventListener(\"click\", label._onClick);\n }\n if (label._onMouseDown) {\n label.removeEventListener(\"mousedown\", label._onMouseDown);\n }\n }\n\n this.wrapper.removeChild(marker.el);\n this.markers.splice(index, 1);\n\n this._unregisterEvents();\n }\n\n _createPointerSVG(color, position) {\n const svgNS = \"http://www.w3.org/2000/svg\";\n\n const el = document.createElementNS(svgNS, \"svg\");\n const polygon = document.createElementNS(svgNS, \"polygon\");\n\n el.setAttribute(\"viewBox\", \"0 0 40 80\");\n\n polygon.setAttribute(\"id\", \"polygon\");\n polygon.setAttribute(\"stroke\", \"#979797\");\n polygon.setAttribute(\"fill\", color);\n polygon.setAttribute(\"points\", \"20 0 40 30 40 80 0 80 0 30\");\n if ( position == \"top\" ) {\n polygon.setAttribute(\"transform\", \"rotate(180, 20 40)\");\n }\n\n el.appendChild(polygon);\n\n this.style(el, {\n width: this.markerWidth + \"px\",\n height: this.markerHeight + \"px\",\n \"min-width\": this.markerWidth + \"px\",\n \"margin-right\": \"5px\",\n \"z-index\": 4\n });\n return el;\n }\n\n _createMarkerElement(marker, markerElement) {\n let label = marker.label;\n let tooltip = marker.tooltip;\n\n const el = document.createElement('marker');\n el.className = \"wavesurfer-marker\";\n\n this.style(el, {\n position: \"absolute\",\n height: \"100%\",\n display: \"flex\",\n overflow: \"hidden\",\n \"flex-direction\": (marker.position == \"top\" ? \"column-reverse\" : \"column\")\n });\n\n const line = document.createElement('div');\n const width = markerElement ? markerElement.width : this.markerWidth;\n marker.offset = (width - this.markerLineWidth) / 2;\n this.style(line, {\n \"flex-grow\": 1,\n \"margin-left\": marker.offset + \"px\",\n background: \"black\",\n width: this.markerLineWidth + \"px\",\n opacity: 0.1\n });\n el.appendChild(line);\n\n const labelDiv = document.createElement('div');\n const point = markerElement || this._createPointerSVG(marker.color, marker.position);\n if (marker.draggable){\n point.draggable = false;\n }\n labelDiv.appendChild(point);\n\n if ( label ) {\n const labelEl = document.createElement('span');\n labelEl.innerText = label;\n labelEl.setAttribute('title', tooltip);\n this.style(labelEl, {\n \"font-family\": \"monospace\",\n \"font-size\": \"90%\"\n });\n labelDiv.appendChild(labelEl);\n }\n\n this.style(labelDiv, {\n display: \"flex\",\n \"align-items\": \"center\",\n cursor: \"pointer\"\n });\n labelDiv.classList.add(\"marker-label\");\n\n el.appendChild(labelDiv);\n\n labelDiv._onClick = (e) => {\n e.stopPropagation();\n // Click event is caught when the marker-drop event was dispatched.\n // Drop event was dispatched at this moment, but this.dragging\n // is waiting for the next tick to set as false\n if (this.dragging){\n return;\n }\n this.wavesurfer.setCurrentTime(marker.time);\n this.wavesurfer.fireEvent(\"marker-click\", marker, e);\n };\n labelDiv.addEventListener(\"click\", labelDiv._onClick);\n\n labelDiv._onContextMenu = (e) => {\n if (marker.preventContextMenu) {\n e.preventDefault();\n }\n this.wavesurfer.fireEvent(\"marker-contextmenu\", marker, e);\n };\n labelDiv.addEventListener(\"contextmenu\", labelDiv._onContextMenu);\n\n if (marker.draggable) {\n labelDiv._onMouseDown = () => {\n this.selectedMarker = marker;\n };\n labelDiv.addEventListener(\"mousedown\", labelDiv._onMouseDown);\n }\n return el;\n }\n\n _updateMarkerPositions() {\n for ( let i = 0 ; i < this.markers.length; i++ ) {\n let marker = this.markers[i];\n this._updateMarkerPosition(marker);\n }\n }\n\n /**\n * Update a marker position based on its time property.\n *\n * @private\n * @param {MarkerParams} params The marker to update.\n * @returns {void}\n */\n _updateMarkerPosition(params) {\n const duration = this.wavesurfer.getDuration();\n const elementWidth =\n this.wavesurfer.drawer.width /\n this.wavesurfer.params.pixelRatio;\n\n const positionPct = Math.min(params.time / duration, 1);\n const leftPx = ((elementWidth * positionPct) - params.offset);\n this.style(params.el, {\n \"left\": leftPx + \"px\",\n \"max-width\": (elementWidth - leftPx) + \"px\"\n });\n }\n\n /**\n * Fires `marker-drag` event, update the `time` property for the\n * selected marker based on the mouse position, and calls to update\n * its position.\n *\n * @private\n * @param {MouseEvent} event The mouse event.\n * @returns {void}\n */\n _onMouseMove(event) {\n if (!this.selectedMarker){\n return;\n }\n if (!this.dragging){\n this.dragging = true;\n this.wavesurfer.fireEvent(\"marker-drag\", this.selectedMarker, event);\n }\n this.selectedMarker.time = this.wavesurfer.drawer.handleEvent(event) * this.wavesurfer.getDuration();\n this._updateMarkerPositions();\n }\n\n /**\n * Fires `marker-drop` event and unselect the dragged marker.\n *\n * @private\n * @param {MouseEvent} event The mouse event.\n * @returns {void}\n */\n _onMouseUp(event) {\n if (this.selectedMarker) {\n setTimeout(() => {\n this.selectedMarker = false;\n this.dragging = false;\n }, 0);\n }\n\n if (!this.dragging) {\n return;\n }\n\n event.stopPropagation();\n const duration = this.wavesurfer.getDuration();\n this.selectedMarker.time = this.wavesurfer.drawer.handleEvent(event) * duration;\n this._updateMarkerPositions();\n this.wavesurfer.fireEvent(\"marker-drop\", this.selectedMarker, event);\n }\n\n _registerEvents() {\n if (!this.markers.find(marker => marker.draggable)) {\n return;\n }\n //we have some draggable markers, check for listeners\n if (!this.onMouseMove) {\n this.onMouseMove = (e) => this._onMouseMove(e);\n window.addEventListener('mousemove', this.onMouseMove);\n }\n\n if (!this.onMouseUp) {\n this.onMouseUp = (e) => this._onMouseUp(e);\n window.addEventListener(\"mouseup\", this.onMouseUp);\n }\n }\n\n _unregisterEvents() {\n if (this.markers.find(marker => marker.draggable)) {\n return;\n }\n //we don't have any draggable markers, unregister listeners\n if (this.onMouseMove) {\n window.removeEventListener('mousemove', this.onMouseMove);\n this.onMouseMove = null;\n }\n if (this.onMouseUp) {\n window.removeEventListener(\"mouseup\", this.onMouseUp);\n this.onMouseUp = null;\n }\n }\n\n /**\n * Remove all markers\n */\n clear() {\n while ( this.markers.length > 0 ) {\n this.remove(0);\n }\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/plugin/markers/index.js\");\n",""],"names":["DEFAULT_FILL_COLOR","DEFAULT_POSITION","MarkersPlugin","params","ws","wavesurfer","util","style","markerLineWidth","markerWidth","markerHeight","dragging","_onResize","_updateMarkerPositions","_onBackendCreated","wrapper","drawer","markers","forEach","marker","add","window","addEventListener","on","find","draggable","onMouseMove","e","_onMouseMove","onMouseUp","_onMouseUp","_onReady","isReady","once","un","removeEventListener","clear","time","label","tooltip","color","position","preventContextMenu","el","_createMarkerElement","markerElement","appendChild","push","_registerEvents","index","getElementsByClassName","_onContextMenu","_onClick","_onMouseDown","removeChild","splice","_unregisterEvents","svgNS","document","createElementNS","polygon","setAttribute","width","height","createElement","className","display","overflow","line","offset","background","opacity","labelDiv","point","_createPointerSVG","labelEl","innerText","cursor","classList","stopPropagation","setCurrentTime","fireEvent","preventDefault","selectedMarker","i","length","_updateMarkerPosition","duration","getDuration","elementWidth","pixelRatio","positionPct","Math","min","leftPx","event","handleEvent","setTimeout","remove","name","deferInit","staticProps","addMarker","options","initialisedPluginList","initPlugin","clearMarkers","instance"],"sourceRoot":""}
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * wavesurfer.js markers plugin 6.2.0 (2022-05-16)
2
+ * wavesurfer.js markers plugin 6.4.0 (2022-11-05)
3
3
  * https://wavesurfer-js.org
4
4
  * @license BSD-3-Clause
5
5
  */
6
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("WaveSurfer",[],t):"object"==typeof exports?exports.WaveSurfer=t():(e.WaveSurfer=e.WaveSurfer||{},e.WaveSurfer.markers=t())}(self,(()=>(()=>{"use strict";var e={188:(e,t)=>{function r(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=function(){function e(t,r){var i=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.params=t,this.wavesurfer=r,this.util=r.util,this.style=this.util.style,this.markerLineWidth=1,this.markerWidth=11,this.markerHeight=22,this.dragging=!1,this._onResize=function(){i._updateMarkerPositions()},this._onBackendCreated=function(){i.wrapper=i.wavesurfer.drawer.wrapper,i.params.markers&&i.params.markers.forEach((function(e){return i.add(e)})),window.addEventListener("resize",i._onResize,!0),window.addEventListener("orientationchange",i._onResize,!0),i.wavesurfer.on("zoom",i._onResize),i.markers.find((function(e){return e.draggable}))&&(i.onMouseMove=function(e){return i._onMouseMove(e)},window.addEventListener("mousemove",i.onMouseMove),i.onMouseUp=function(e){return i._onMouseUp(e)},window.addEventListener("mouseup",i.onMouseUp))},this.markers=[],this._onReady=function(){i.wrapper=i.wavesurfer.drawer.wrapper,i._updateMarkerPositions()}}var t,i,a;return t=e,a=[{key:"create",value:function(t){return{name:"markers",deferInit:!(!t||!t.deferInit)&&t.deferInit,params:t,staticProps:{addMarker:function(e){return this.initialisedPluginList.markers||this.initPlugin("markers"),this.markers.add(e)},clearMarkers:function(){this.markers&&this.markers.clear()}},instance:e}}}],(i=[{key:"init",value:function(){this.wavesurfer.isReady?(this._onBackendCreated(),this._onReady()):(this.wavesurfer.once("ready",this._onReady),this.wavesurfer.once("backend-created",this._onBackendCreated))}},{key:"destroy",value:function(){this.wavesurfer.un("ready",this._onReady),this.wavesurfer.un("backend-created",this._onBackendCreated),this.wavesurfer.un("zoom",this._onResize),window.removeEventListener("resize",this._onResize,!0),window.removeEventListener("orientationchange",this._onResize,!0),this.onMouseMove&&window.removeEventListener("mousemove",this.onMouseMove),this.onMouseUp&&window.removeEventListener("mouseup",this.onMouseUp),this.clear()}},{key:"add",value:function(e){var t={time:e.time,label:e.label,color:e.color||"#D8D8D8",position:e.position||"bottom",draggable:!!e.draggable};return t.el=this._createMarkerElement(t,e.markerElement),this.wrapper.appendChild(t.el),this.markers.push(t),this._updateMarkerPositions(),t}},{key:"remove",value:function(e){var t=this.markers[e];t&&(this.wrapper.removeChild(t.el),this.markers.splice(e,1))}},{key:"_createPointerSVG",value:function(e,t){var r="http://www.w3.org/2000/svg",i=document.createElementNS(r,"svg"),a=document.createElementNS(r,"polygon");return i.setAttribute("viewBox","0 0 40 80"),a.setAttribute("id","polygon"),a.setAttribute("stroke","#979797"),a.setAttribute("fill",e),a.setAttribute("points","20 0 40 30 40 80 0 80 0 30"),"top"==t&&a.setAttribute("transform","rotate(180, 20 40)"),i.appendChild(a),this.style(i,{width:this.markerWidth+"px",height:this.markerHeight+"px","min-width":this.markerWidth+"px","margin-right":"5px","z-index":4}),i}},{key:"_createMarkerElement",value:function(e,t){var r=this,i=e.label,a=document.createElement("marker");a.className="wavesurfer-marker",this.style(a,{position:"absolute",height:"100%",display:"flex",overflow:"hidden","flex-direction":"top"==e.position?"column-reverse":"column"});var n=document.createElement("div"),s=t?t.width:this.markerWidth;e.offset=(s-this.markerLineWidth)/2,this.style(n,{"flex-grow":1,"margin-left":e.offset+"px",background:"black",width:this.markerLineWidth+"px",opacity:.1}),a.appendChild(n);var o=document.createElement("div"),u=t||this._createPointerSVG(e.color,e.position);if(e.draggable&&(u.draggable=!1),o.appendChild(u),i){var d=document.createElement("span");d.innerText=i,this.style(d,{"font-family":"monospace","font-size":"90%"}),o.appendChild(d)}return this.style(o,{display:"flex","align-items":"center",cursor:"pointer"}),a.appendChild(o),o.addEventListener("click",(function(t){t.stopPropagation(),r.dragging||(r.wavesurfer.setCurrentTime(e.time),r.wavesurfer.fireEvent("marker-click",e,t))})),e.draggable&&o.addEventListener("mousedown",(function(t){r.selectedMarker=e})),a}},{key:"_updateMarkerPositions",value:function(){for(var e=0;e<this.markers.length;e++){var t=this.markers[e];this._updateMarkerPosition(t)}}},{key:"_updateMarkerPosition",value:function(e){var t=this.wavesurfer.getDuration(),r=this.wavesurfer.drawer.width/this.wavesurfer.params.pixelRatio,i=r*Math.min(e.time/t,1)-e.offset;this.style(e.el,{left:i+"px","max-width":r-i+"px"})}},{key:"_onMouseMove",value:function(e){this.selectedMarker&&(this.dragging||(this.dragging=!0,this.wavesurfer.fireEvent("marker-drag",this.selectedMarker,e)),this.selectedMarker.time=this.wavesurfer.drawer.handleEvent(e)*this.wavesurfer.getDuration(),this._updateMarkerPositions())}},{key:"_onMouseUp",value:function(e){var t=this;if(this.selectedMarker&&setTimeout((function(){t.selectedMarker=!1,t.dragging=!1}),0),this.dragging){e.stopPropagation();var r=this.wavesurfer.getDuration();this.selectedMarker.time=this.wavesurfer.drawer.handleEvent(e)*r,this._updateMarkerPositions(),this.wavesurfer.fireEvent("marker-drop",this.selectedMarker,e)}}},{key:"clear",value:function(){for(;this.markers.length>0;)this.remove(0)}}])&&r(t.prototype,i),a&&r(t,a),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.default=i,e.exports=t.default}},t={};var r=function r(i){var a=t[i];if(void 0!==a)return a.exports;var n=t[i]={exports:{}};return e[i](n,n.exports,r),n.exports}(188);return r})()));
6
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("WaveSurfer",[],t):"object"==typeof exports?exports.WaveSurfer=t():(e.WaveSurfer=e.WaveSurfer||{},e.WaveSurfer.markers=t())}(self,(()=>(()=>{"use strict";var e={188:(e,t)=>{function r(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=function(){function e(t,r){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.params=t,this.wavesurfer=r,this.util=r.util,this.style=this.util.style,this.markerLineWidth=1,this.markerWidth=11,this.markerHeight=22,this.dragging=!1,this._onResize=function(){n._updateMarkerPositions()},this._onBackendCreated=function(){n.wrapper=n.wavesurfer.drawer.wrapper,n.params.markers&&n.params.markers.forEach((function(e){return n.add(e)})),window.addEventListener("resize",n._onResize,!0),window.addEventListener("orientationchange",n._onResize,!0),n.wavesurfer.on("zoom",n._onResize),n.markers.find((function(e){return e.draggable}))&&(n.onMouseMove=function(e){return n._onMouseMove(e)},window.addEventListener("mousemove",n.onMouseMove),n.onMouseUp=function(e){return n._onMouseUp(e)},window.addEventListener("mouseup",n.onMouseUp))},this.markers=[],this._onReady=function(){n.wrapper=n.wavesurfer.drawer.wrapper,n._updateMarkerPositions()}}var t,n,i;return t=e,i=[{key:"create",value:function(t){return{name:"markers",deferInit:!(!t||!t.deferInit)&&t.deferInit,params:t,staticProps:{addMarker:function(e){return this.initialisedPluginList.markers||this.initPlugin("markers"),this.markers.add(e)},clearMarkers:function(){this.markers&&this.markers.clear()}},instance:e}}}],(n=[{key:"init",value:function(){this.wavesurfer.isReady?(this._onBackendCreated(),this._onReady()):(this.wavesurfer.once("ready",this._onReady),this.wavesurfer.once("backend-created",this._onBackendCreated))}},{key:"destroy",value:function(){this.wavesurfer.un("ready",this._onReady),this.wavesurfer.un("backend-created",this._onBackendCreated),this.wavesurfer.un("zoom",this._onResize),window.removeEventListener("resize",this._onResize,!0),window.removeEventListener("orientationchange",this._onResize,!0),this.onMouseMove&&window.removeEventListener("mousemove",this.onMouseMove),this.onMouseUp&&window.removeEventListener("mouseup",this.onMouseUp),this.clear()}},{key:"add",value:function(e){var t={time:e.time,label:e.label,tooltip:e.tooltip,color:e.color||"#D8D8D8",position:e.position||"bottom",draggable:!!e.draggable,preventContextMenu:!!e.preventContextMenu};return t.el=this._createMarkerElement(t,e.markerElement),this.wrapper.appendChild(t.el),this.markers.push(t),this._updateMarkerPositions(),this._registerEvents(),t}},{key:"remove",value:function(e){var t=this.markers[e];if(t){var r=t.el.getElementsByClassName("marker-label")[0];r&&(r._onContextMenu&&r.removeEventListener("contextmenu",r._onContextMenu),r._onClick&&r.removeEventListener("click",r._onClick),r._onMouseDown&&r.removeEventListener("mousedown",r._onMouseDown)),this.wrapper.removeChild(t.el),this.markers.splice(e,1),this._unregisterEvents()}}},{key:"_createPointerSVG",value:function(e,t){var r="http://www.w3.org/2000/svg",n=document.createElementNS(r,"svg"),i=document.createElementNS(r,"polygon");return n.setAttribute("viewBox","0 0 40 80"),i.setAttribute("id","polygon"),i.setAttribute("stroke","#979797"),i.setAttribute("fill",e),i.setAttribute("points","20 0 40 30 40 80 0 80 0 30"),"top"==t&&i.setAttribute("transform","rotate(180, 20 40)"),n.appendChild(i),this.style(n,{width:this.markerWidth+"px",height:this.markerHeight+"px","min-width":this.markerWidth+"px","margin-right":"5px","z-index":4}),n}},{key:"_createMarkerElement",value:function(e,t){var r=this,n=e.label,i=e.tooltip,o=document.createElement("marker");o.className="wavesurfer-marker",this.style(o,{position:"absolute",height:"100%",display:"flex",overflow:"hidden","flex-direction":"top"==e.position?"column-reverse":"column"});var s=document.createElement("div"),a=t?t.width:this.markerWidth;e.offset=(a-this.markerLineWidth)/2,this.style(s,{"flex-grow":1,"margin-left":e.offset+"px",background:"black",width:this.markerLineWidth+"px",opacity:.1}),o.appendChild(s);var u=document.createElement("div"),d=t||this._createPointerSVG(e.color,e.position);if(e.draggable&&(d.draggable=!1),u.appendChild(d),n){var l=document.createElement("span");l.innerText=n,l.setAttribute("title",i),this.style(l,{"font-family":"monospace","font-size":"90%"}),u.appendChild(l)}return this.style(u,{display:"flex","align-items":"center",cursor:"pointer"}),u.classList.add("marker-label"),o.appendChild(u),u._onClick=function(t){t.stopPropagation(),r.dragging||(r.wavesurfer.setCurrentTime(e.time),r.wavesurfer.fireEvent("marker-click",e,t))},u.addEventListener("click",u._onClick),u._onContextMenu=function(t){e.preventContextMenu&&t.preventDefault(),r.wavesurfer.fireEvent("marker-contextmenu",e,t)},u.addEventListener("contextmenu",u._onContextMenu),e.draggable&&(u._onMouseDown=function(){r.selectedMarker=e},u.addEventListener("mousedown",u._onMouseDown)),o}},{key:"_updateMarkerPositions",value:function(){for(var e=0;e<this.markers.length;e++){var t=this.markers[e];this._updateMarkerPosition(t)}}},{key:"_updateMarkerPosition",value:function(e){var t=this.wavesurfer.getDuration(),r=this.wavesurfer.drawer.width/this.wavesurfer.params.pixelRatio,n=r*Math.min(e.time/t,1)-e.offset;this.style(e.el,{left:n+"px","max-width":r-n+"px"})}},{key:"_onMouseMove",value:function(e){this.selectedMarker&&(this.dragging||(this.dragging=!0,this.wavesurfer.fireEvent("marker-drag",this.selectedMarker,e)),this.selectedMarker.time=this.wavesurfer.drawer.handleEvent(e)*this.wavesurfer.getDuration(),this._updateMarkerPositions())}},{key:"_onMouseUp",value:function(e){var t=this;if(this.selectedMarker&&setTimeout((function(){t.selectedMarker=!1,t.dragging=!1}),0),this.dragging){e.stopPropagation();var r=this.wavesurfer.getDuration();this.selectedMarker.time=this.wavesurfer.drawer.handleEvent(e)*r,this._updateMarkerPositions(),this.wavesurfer.fireEvent("marker-drop",this.selectedMarker,e)}}},{key:"_registerEvents",value:function(){var e=this;this.markers.find((function(e){return e.draggable}))&&(this.onMouseMove||(this.onMouseMove=function(t){return e._onMouseMove(t)},window.addEventListener("mousemove",this.onMouseMove)),this.onMouseUp||(this.onMouseUp=function(t){return e._onMouseUp(t)},window.addEventListener("mouseup",this.onMouseUp)))}},{key:"_unregisterEvents",value:function(){this.markers.find((function(e){return e.draggable}))||(this.onMouseMove&&(window.removeEventListener("mousemove",this.onMouseMove),this.onMouseMove=null),this.onMouseUp&&(window.removeEventListener("mouseup",this.onMouseUp),this.onMouseUp=null))}},{key:"clear",value:function(){for(;this.markers.length>0;)this.remove(0)}}])&&r(t.prototype,n),i&&r(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.default=n,e.exports=t.default}},t={};var r=function r(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,r),o.exports}(188);return r})()));
7
7
  //# sourceMappingURL=wavesurfer.markers.min.js.map