wavesurfer.js 6.6.1 → 6.6.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/README.md +1 -1
- package/dist/plugin/wavesurfer.cursor.js +1 -1
- package/dist/plugin/wavesurfer.cursor.min.js +1 -1
- package/dist/plugin/wavesurfer.elan.js +1 -1
- package/dist/plugin/wavesurfer.elan.min.js +1 -1
- package/dist/plugin/wavesurfer.markers.js +12 -3
- package/dist/plugin/wavesurfer.markers.js.map +1 -1
- package/dist/plugin/wavesurfer.markers.min.js +2 -2
- package/dist/plugin/wavesurfer.markers.min.js.map +1 -1
- package/dist/plugin/wavesurfer.mediasession.js +1 -1
- package/dist/plugin/wavesurfer.mediasession.min.js +1 -1
- package/dist/plugin/wavesurfer.microphone.js +1 -1
- package/dist/plugin/wavesurfer.microphone.min.js +1 -1
- package/dist/plugin/wavesurfer.minimap.js +1 -1
- package/dist/plugin/wavesurfer.minimap.min.js +1 -1
- package/dist/plugin/wavesurfer.playhead.js +1 -1
- package/dist/plugin/wavesurfer.playhead.min.js +1 -1
- package/dist/plugin/wavesurfer.regions.js +1 -1
- package/dist/plugin/wavesurfer.regions.min.js +1 -1
- package/dist/plugin/wavesurfer.spectrogram.js +34 -128
- package/dist/plugin/wavesurfer.spectrogram.js.map +1 -1
- package/dist/plugin/wavesurfer.spectrogram.min.js +2 -2
- package/dist/plugin/wavesurfer.spectrogram.min.js.map +1 -1
- package/dist/plugin/wavesurfer.timeline.js +1 -1
- package/dist/plugin/wavesurfer.timeline.min.js +1 -1
- package/dist/wavesurfer-html-init.js +1 -1
- package/dist/wavesurfer-html-init.min.js +1 -1
- package/dist/wavesurfer.js +16 -186
- package/dist/wavesurfer.js.map +1 -1
- package/dist/wavesurfer.min.js +2 -2
- package/dist/wavesurfer.min.js.map +1 -1
- package/package.json +1 -1
- package/src/drawer.canvasentry.js +0 -43
- package/src/drawer.js +4 -0
- package/src/drawer.multicanvas.js +1 -71
- package/src/plugin/markers/index.js +9 -2
- package/src/plugin/spectrogram/index.js +30 -121
- package/src/wavesurfer.js +0 -33
- package/src/webaudio.js +9 -26
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@ import WaveSurfer from 'wavesurfer.js'
|
|
|
33
33
|
|
|
34
34
|
If you're not using a package manager, simply insert the script from a CDN:
|
|
35
35
|
```
|
|
36
|
-
<script src="https://unpkg.com/wavesurfer.js"></script>
|
|
36
|
+
<script src="https://unpkg.com/wavesurfer.js@6.6"></script>
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
Create a container in your HTML:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* wavesurfer.js markers plugin 6.6.
|
|
2
|
+
* wavesurfer.js markers plugin 6.6.3 (2023-04-04)
|
|
3
3
|
* https://wavesurfer-js.org
|
|
4
4
|
* @license BSD-3-Clause
|
|
5
5
|
*/
|
|
@@ -177,11 +177,17 @@ var MarkersPlugin = /*#__PURE__*/function () {
|
|
|
177
177
|
/**
|
|
178
178
|
* Remove a marker
|
|
179
179
|
*
|
|
180
|
-
* @param {number}
|
|
180
|
+
* @param {number|Object} indexOrMarker Index of the marker to remove or the marker object itself
|
|
181
181
|
*/
|
|
182
182
|
}, {
|
|
183
183
|
key: "remove",
|
|
184
|
-
value: function remove(
|
|
184
|
+
value: function remove(indexOrMarker) {
|
|
185
|
+
var index = indexOrMarker;
|
|
186
|
+
if (isNaN(index)) {
|
|
187
|
+
index = this.markers.findIndex(function (marker) {
|
|
188
|
+
return marker === indexOrMarker;
|
|
189
|
+
});
|
|
190
|
+
}
|
|
185
191
|
var marker = this.markers[index];
|
|
186
192
|
if (!marker) {
|
|
187
193
|
return;
|
|
@@ -465,6 +471,9 @@ var MarkersPlugin = /*#__PURE__*/function () {
|
|
|
465
471
|
}
|
|
466
472
|
return this.markers.add(options);
|
|
467
473
|
},
|
|
474
|
+
getMarkers: function getMarkers() {
|
|
475
|
+
return this.markers;
|
|
476
|
+
},
|
|
468
477
|
clearMarkers: function clearMarkers() {
|
|
469
478
|
this.markers && this.markers.clear();
|
|
470
479
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wavesurfer.markers.js","mappings":";;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,CAAC;AACD;;;;;;;;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMA,kBAAkB,GAAG,SAAS;AACpC,IAAMC,gBAAgB,GAAG,QAAQ;AAAC,IAEbC,aAAa;EAuC9B,SAAAA,cAAYC,MAAM,EAAEC,EAAE,EAAE;IAAA,IAAAC,KAAA;IAAAC,eAAA,OAAAJ,aAAA;IACpB,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACI,UAAU,GAAGH,EAAE;IACpB,IAAI,CAACI,IAAI,GAAGJ,EAAE,CAACI,IAAI;IACnB,IAAI,CAACC,KAAK,GAAG,IAAI,CAACD,IAAI,CAACC,KAAK;IAC5B,IAAI,CAACC,eAAe,GAAG,CAAC;IACxB,IAAI,CAACC,WAAW,GAAG,EAAE;IACrB,IAAI,CAACC,YAAY,GAAG,EAAE;IACtB,IAAI,CAACC,QAAQ,GAAG,KAAK;IAGrB,IAAI,CAACC,SAAS,GAAG,YAAM;MACnBT,KAAI,CAACU,sBAAsB,EAAE;IACjC,CAAC;IAED,IAAI,CAACC,iBAAiB,GAAG,YAAM;MAC3BX,KAAI,CAACY,OAAO,GAAGZ,KAAI,CAACE,UAAU,CAACW,MAAM,CAACD,OAAO;MAC7C,IAAIZ,KAAI,CAACF,MAAM,CAACgB,OAAO,EAAE;QACrBd,KAAI,CAACF,MAAM,CAACgB,OAAO,CAACC,OAAO,CAAC,UAAAC,MAAM;UAAA,OAAIhB,KAAI,CAACiB,GAAG,CAACD,MAAM,CAAC;QAAA,EAAC;MAC3D;MACAE,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAEnB,KAAI,CAACS,SAAS,EAAE,IAAI,CAAC;MACvDS,MAAM,CAACC,gBAAgB,CAAC,mBAAmB,EAAEnB,KAAI,CAACS,SAAS,EAAE,IAAI,CAAC;MAClET,KAAI,CAACE,UAAU,CAACkB,EAAE,CAAC,MAAM,EAAEpB,KAAI,CAACS,SAAS,CAAC;MAE1C,IAAI,CAACT,KAAI,CAACc,OAAO,CAACO,IAAI,CAAC,UAAAL,MAAM;QAAA,OAAIA,MAAM,CAACM,SAAS;MAAA,EAAC,EAAC;QAC/C;MACJ;MAEAtB,KAAI,CAACuB,WAAW,GAAG,UAACC,CAAC;QAAA,OAAKxB,KAAI,CAACyB,YAAY,CAACD,CAAC,CAAC;MAAA;MAC9CN,MAAM,CAACC,gBAAgB,CAAC,WAAW,EAAEnB,KAAI,CAACuB,WAAW,CAAC;MAEtDvB,KAAI,CAAC0B,SAAS,GAAG,UAACF,CAAC;QAAA,OAAKxB,KAAI,CAAC2B,UAAU,CAACH,CAAC,CAAC;MAAA;MAC1CN,MAAM,CAACC,gBAAgB,CAAC,SAAS,EAAEnB,KAAI,CAAC0B,SAAS,CAAC;IACtD,CAAC;IAED,IAAI,CAACZ,OAAO,GAAG,EAAE;IACjB,IAAI,CAACc,QAAQ,GAAG,YAAM;MAClB5B,KAAI,CAACY,OAAO,GAAGZ,KAAI,CAACE,UAAU,CAACW,MAAM,CAACD,OAAO;MAC7CZ,KAAI,CAACU,sBAAsB,EAAE;IACjC,CAAC;EACL;EAACmB,YAAA,CAAAhC,aAAA;IAAAiC,GAAA;IAAAC,KAAA,EAED,SAAAC,KAAA,EAAO;MACH;MACA,IAAI,IAAI,CAAC9B,UAAU,CAAC+B,OAAO,EAAE;QACzB,IAAI,CAACtB,iBAAiB,EAAE;QACxB,IAAI,CAACiB,QAAQ,EAAE;MACnB,CAAC,MAAM;QACH,IAAI,CAAC1B,UAAU,CAACgC,IAAI,CAAC,OAAO,EAAE,IAAI,CAACN,QAAQ,CAAC;QAC5C,IAAI,CAAC1B,UAAU,CAACgC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAACvB,iBAAiB,CAAC;MACnE;IACJ;EAAC;IAAAmB,GAAA;IAAAC,KAAA,EAED,SAAAI,QAAA,EAAU;MACN,IAAI,CAACjC,UAAU,CAACkC,EAAE,CAAC,OAAO,EAAE,IAAI,CAACR,QAAQ,CAAC;MAC1C,IAAI,CAAC1B,UAAU,CAACkC,EAAE,CAAC,iBAAiB,EAAE,IAAI,CAACzB,iBAAiB,CAAC;MAE7D,IAAI,CAACT,UAAU,CAACkC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC3B,SAAS,CAAC;MAE1CS,MAAM,CAACmB,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC5B,SAAS,EAAE,IAAI,CAAC;MAC1DS,MAAM,CAACmB,mBAAmB,CAAC,mBAAmB,EAAE,IAAI,CAAC5B,SAAS,EAAE,IAAI,CAAC;MAErE,IAAI,IAAI,CAACc,WAAW,EAAE;QAClBL,MAAM,CAACmB,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAACd,WAAW,CAAC;MAC7D;MACA,IAAI,IAAI,CAACG,SAAS,EAAE;QAChBR,MAAM,CAACmB,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACX,SAAS,CAAC;MACzD;MAEA,IAAI,CAACY,KAAK,EAAE;IAChB;;IAEA;AACJ;AACA;AACA;AACA;AACA;EALI;IAAAR,GAAA;IAAAC,KAAA,EAMA,SAAAd,IAAInB,MAAM,EAAE;MACR,IAAIkB,MAAM,GAAG;QACTuB,IAAI,EAAEzC,MAAM,CAACyC,IAAI;QACjBC,KAAK,EAAE1C,MAAM,CAAC0C,KAAK;QACnBC,OAAO,EAAE3C,MAAM,CAAC2C,OAAO;QACvBC,KAAK,EAAE5C,MAAM,CAAC4C,KAAK,IAAI/C,kBAAkB;QACzCgD,QAAQ,EAAE7C,MAAM,CAAC6C,QAAQ,IAAI/C,gBAAgB;QAC7C0B,SAAS,EAAE,CAAC,CAACxB,MAAM,CAACwB,SAAS;QAC7BsB,kBAAkB,EAAE,CAAC,CAAC9C,MAAM,CAAC8C;MACjC,CAAC;MAED5B,MAAM,CAAC6B,EAAE,GAAG,IAAI,CAACC,oBAAoB,CAAC9B,MAAM,EAAElB,MAAM,CAACiD,aAAa,CAAC;MAEnE,IAAI,CAACnC,OAAO,CAACoC,WAAW,CAAChC,MAAM,CAAC6B,EAAE,CAAC;MACnC,IAAI,CAAC/B,OAAO,CAACmC,IAAI,CAACjC,MAAM,CAAC;MACzB,IAAI,CAACN,sBAAsB,EAAE;MAE7B,IAAI,CAACwC,eAAe,EAAE;MAEtB,OAAOlC,MAAM;IACjB;;IAEA;AACJ;AACA;AACA;AACA;EAJI;IAAAc,GAAA;IAAAC,KAAA,EAKA,SAAAoB,OAAOC,KAAK,EAAE;MACV,IAAIpC,MAAM,GAAG,IAAI,CAACF,OAAO,CAACsC,KAAK,CAAC;MAChC,IAAI,CAACpC,MAAM,EAAE;QACT;MACJ;MACA,IAAIwB,KAAK,GAAGxB,MAAM,CAAC6B,EAAE,CAACQ,sBAAsB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;MAC/D,IAAIb,KAAK,EAAE;QACP,IAAIA,KAAK,CAACc,cAAc,EAAE;UACtBd,KAAK,CAACH,mBAAmB,CAAC,aAAa,EAAEG,KAAK,CAACc,cAAc,CAAC;QAClE;QACA,IAAId,KAAK,CAACe,QAAQ,EAAE;UAChBf,KAAK,CAACH,mBAAmB,CAAC,OAAO,EAAEG,KAAK,CAACe,QAAQ,CAAC;QACtD;QACA,IAAIf,KAAK,CAACgB,YAAY,EAAE;UACpBhB,KAAK,CAACH,mBAAmB,CAAC,WAAW,EAAEG,KAAK,CAACgB,YAAY,CAAC;QAC9D;MACJ;MAEA,IAAI,CAAC5C,OAAO,CAAC6C,WAAW,CAACzC,MAAM,CAAC6B,EAAE,CAAC;MACnC,IAAI,CAAC/B,OAAO,CAAC4C,MAAM,CAACN,KAAK,EAAE,CAAC,CAAC;MAE7B,IAAI,CAACO,iBAAiB,EAAE;IAC5B;EAAC;IAAA7B,GAAA;IAAAC,KAAA,EAED,SAAA6B,kBAAkBlB,KAAK,EAAEC,QAAQ,EAAE;MAC/B,IAAMkB,KAAK,GAAG,4BAA4B;MAE1C,IAAMhB,EAAE,GAAGiB,QAAQ,CAACC,eAAe,CAACF,KAAK,EAAE,KAAK,CAAC;MACjD,IAAMG,OAAO,GAAGF,QAAQ,CAACC,eAAe,CAACF,KAAK,EAAE,SAAS,CAAC;MAE1DhB,EAAE,CAACoB,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC;MAEvCD,OAAO,CAACC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC;MACrCD,OAAO,CAACC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC;MACzCD,OAAO,CAACC,YAAY,CAAC,MAAM,EAAEvB,KAAK,CAAC;MACnCsB,OAAO,CAACC,YAAY,CAAC,QAAQ,EAAE,4BAA4B,CAAC;MAC5D,IAAKtB,QAAQ,IAAI,KAAK,EAAG;QACrBqB,OAAO,CAACC,YAAY,CAAC,WAAW,EAAE,oBAAoB,CAAC;MAC3D;MAEApB,EAAE,CAACG,WAAW,CAACgB,OAAO,CAAC;MAEvB,IAAI,CAAC5D,KAAK,CAACyC,EAAE,EAAE;QACXqB,KAAK,EAAE,IAAI,CAAC5D,WAAW,GAAG,IAAI;QAC9B6D,MAAM,EAAE,IAAI,CAAC5D,YAAY,GAAG,IAAI;QAChC,WAAW,EAAE,IAAI,CAACD,WAAW,GAAG,IAAI;QACpC,cAAc,EAAE,KAAK;QACrB,SAAS,EAAE;MACf,CAAC,CAAC;MACF,OAAOuC,EAAE;IACb;EAAC;IAAAf,GAAA;IAAAC,KAAA,EAED,SAAAe,qBAAqB9B,MAAM,EAAE+B,aAAa,EAAE;MAAA,IAAAqB,MAAA;MACxC,IAAI5B,KAAK,GAAGxB,MAAM,CAACwB,KAAK;MACxB,IAAIC,OAAO,GAAGzB,MAAM,CAACyB,OAAO;MAE5B,IAAMI,EAAE,GAAGiB,QAAQ,CAACO,aAAa,CAAC,QAAQ,CAAC;MAC3CxB,EAAE,CAACyB,SAAS,GAAG,mBAAmB;MAElC,IAAI,CAAClE,KAAK,CAACyC,EAAE,EAAE;QACXF,QAAQ,EAAE,UAAU;QACpBwB,MAAM,EAAE,MAAM;QACdI,OAAO,EAAE,MAAM;QACfC,QAAQ,EAAE,QAAQ;QAClB,gBAAgB,EAAGxD,MAAM,CAAC2B,QAAQ,IAAI,KAAK,GAAG,gBAAgB,GAAG;MACrE,CAAC,CAAC;MAEF,IAAM8B,IAAI,GAAGX,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC1C,IAAMH,KAAK,GAAGnB,aAAa,GAAGA,aAAa,CAACmB,KAAK,GAAG,IAAI,CAAC5D,WAAW;MACpEU,MAAM,CAAC0D,MAAM,GAAG,CAACR,KAAK,GAAG,IAAI,CAAC7D,eAAe,IAAI,CAAC;MAClD,IAAI,CAACD,KAAK,CAACqE,IAAI,EAAE;QACb,WAAW,EAAE,CAAC;QACd,aAAa,EAAEzD,MAAM,CAAC0D,MAAM,GAAG,IAAI;QACnCC,UAAU,EAAE,OAAO;QACnBT,KAAK,EAAE,IAAI,CAAC7D,eAAe,GAAG,IAAI;QAClCuE,OAAO,EAAE;MACb,CAAC,CAAC;MACF/B,EAAE,CAACG,WAAW,CAACyB,IAAI,CAAC;MAEpB,IAAMI,QAAQ,GAAGf,QAAQ,CAACO,aAAa,CAAC,KAAK,CAAC;MAC9C,IAAMS,KAAK,GAAG/B,aAAa,IAAI,IAAI,CAACa,iBAAiB,CAAC5C,MAAM,CAAC0B,KAAK,EAAE1B,MAAM,CAAC2B,QAAQ,CAAC;MACpF,IAAI3B,MAAM,CAACM,SAAS,EAAC;QACjBwD,KAAK,CAACxD,SAAS,GAAG,KAAK;MAC3B;MACAuD,QAAQ,CAAC7B,WAAW,CAAC8B,KAAK,CAAC;MAE3B,IAAKtC,KAAK,EAAG;QACT,IAAMuC,OAAO,GAAGjB,QAAQ,CAACO,aAAa,CAAC,MAAM,CAAC;QAC9CU,OAAO,CAACC,SAAS,GAAGxC,KAAK;QACzBuC,OAAO,CAACd,YAAY,CAAC,OAAO,EAAExB,OAAO,CAAC;QACtC,IAAI,CAACrC,KAAK,CAAC2E,OAAO,EAAE;UAChB,aAAa,EAAE,SAAS;UACxB,WAAW,EAAE;QACjB,CAAC,CAAC;QACFF,QAAQ,CAAC7B,WAAW,CAAC+B,OAAO,CAAC;MACjC;MAEA,IAAI,CAAC3E,KAAK,CAACyE,QAAQ,EAAE;QACjBN,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,QAAQ;QACvBU,MAAM,EAAE;MACZ,CAAC,CAAC;MACFJ,QAAQ,CAACK,SAAS,CAACjE,GAAG,CAAC,cAAc,CAAC;MAEtC4B,EAAE,CAACG,WAAW,CAAC6B,QAAQ,CAAC;MAExBA,QAAQ,CAACtB,QAAQ,GAAG,UAAC/B,CAAC,EAAK;QACvBA,CAAC,CAAC2D,eAAe,EAAE;QACnB;QACA;QACA;QACA,IAAIf,MAAI,CAAC5D,QAAQ,EAAC;UACd;QACJ;QACA4D,MAAI,CAAClE,UAAU,CAACkF,cAAc,CAACpE,MAAM,CAACuB,IAAI,CAAC;QAC3C6B,MAAI,CAAClE,UAAU,CAACmF,SAAS,CAAC,cAAc,EAAErE,MAAM,EAAEQ,CAAC,CAAC;MACxD,CAAC;MACDqD,QAAQ,CAAC1D,gBAAgB,CAAC,OAAO,EAAE0D,QAAQ,CAACtB,QAAQ,CAAC;MAErDsB,QAAQ,CAACvB,cAAc,GAAG,UAAC9B,CAAC,EAAK;QAC7B,IAAIR,MAAM,CAAC4B,kBAAkB,EAAE;UAC3BpB,CAAC,CAAC8D,cAAc,EAAE;QACtB;QACAlB,MAAI,CAAClE,UAAU,CAACmF,SAAS,CAAC,oBAAoB,EAAErE,MAAM,EAAEQ,CAAC,CAAC;MAC9D,CAAC;MACDqD,QAAQ,CAAC1D,gBAAgB,CAAC,aAAa,EAAE0D,QAAQ,CAACvB,cAAc,CAAC;MAEjE,IAAItC,MAAM,CAACM,SAAS,EAAE;QAClBuD,QAAQ,CAACrB,YAAY,GAAG,YAAM;UAC1BY,MAAI,CAACmB,cAAc,GAAGvE,MAAM;QAChC,CAAC;QACD6D,QAAQ,CAAC1D,gBAAgB,CAAC,WAAW,EAAE0D,QAAQ,CAACrB,YAAY,CAAC;MACjE;MACA,OAAOX,EAAE;IACb;EAAC;IAAAf,GAAA;IAAAC,KAAA,EAED,SAAArB,uBAAA,EAAyB;MACrB,KAAM,IAAI8E,CAAC,GAAG,CAAC,EAAGA,CAAC,GAAG,IAAI,CAAC1E,OAAO,CAAC2E,MAAM,EAAED,CAAC,EAAE,EAAG;QAC7C,IAAIxE,MAAM,GAAG,IAAI,CAACF,OAAO,CAAC0E,CAAC,CAAC;QAC5B,IAAI,CAACE,qBAAqB,CAAC1E,MAAM,CAAC;MACtC;IACJ;;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EANI;IAAAc,GAAA;IAAAC,KAAA,EAOA,SAAA2D,sBAAsB5F,MAAM,EAAE;MAC1B,IAAM6F,QAAQ,GAAG,IAAI,CAACzF,UAAU,CAAC0F,WAAW,EAAE;MAC9C,IAAMC,YAAY,GACd,IAAI,CAAC3F,UAAU,CAACW,MAAM,CAACqD,KAAK,GAC5B,IAAI,CAAChE,UAAU,CAACJ,MAAM,CAACgG,UAAU;MAErC,IAAMC,WAAW,GAAGC,IAAI,CAACC,GAAG,CAACnG,MAAM,CAACyC,IAAI,GAAGoD,QAAQ,EAAE,CAAC,CAAC;MACvD,IAAMO,MAAM,GAAKL,YAAY,GAAGE,WAAW,GAAIjG,MAAM,CAAC4E,MAAO;MAC7D,IAAI,CAACtE,KAAK,CAACN,MAAM,CAAC+C,EAAE,EAAE;QAClB,MAAM,EAAEqD,MAAM,GAAG,IAAI;QACrB,WAAW,EAAGL,YAAY,GAAGK,MAAM,GAAI;MAC3C,CAAC,CAAC;IACN;;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EARI;IAAApE,GAAA;IAAAC,KAAA,EASA,SAAAN,aAAa0E,KAAK,EAAE;MAChB,IAAI,CAAC,IAAI,CAACZ,cAAc,EAAC;QACrB;MACJ;MACA,IAAI,CAAC,IAAI,CAAC/E,QAAQ,EAAC;QACf,IAAI,CAACA,QAAQ,GAAG,IAAI;QACpB,IAAI,CAACN,UAAU,CAACmF,SAAS,CAAC,aAAa,EAAE,IAAI,CAACE,cAAc,EAAEY,KAAK,CAAC;MACxE;MACA,IAAI,CAACZ,cAAc,CAAChD,IAAI,GAAG,IAAI,CAACrC,UAAU,CAACW,MAAM,CAACuF,WAAW,CAACD,KAAK,CAAC,GAAG,IAAI,CAACjG,UAAU,CAAC0F,WAAW,EAAE;MACpG,IAAI,CAAClF,sBAAsB,EAAE;IACjC;;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EANI;IAAAoB,GAAA;IAAAC,KAAA,EAOA,SAAAJ,WAAWwE,KAAK,EAAE;MAAA,IAAAE,MAAA;MACd,IAAI,IAAI,CAACd,cAAc,EAAE;QACrBe,UAAU,CAAC,YAAM;UACbD,MAAI,CAACd,cAAc,GAAG,KAAK;UAC3Bc,MAAI,CAAC7F,QAAQ,GAAG,KAAK;QACzB,CAAC,EAAE,CAAC,CAAC;MACT;MAEA,IAAI,CAAC,IAAI,CAACA,QAAQ,EAAE;QAChB;MACJ;MAEA2F,KAAK,CAAChB,eAAe,EAAE;MACvB,IAAMQ,QAAQ,GAAG,IAAI,CAACzF,UAAU,CAAC0F,WAAW,EAAE;MAC9C,IAAI,CAACL,cAAc,CAAChD,IAAI,GAAG,IAAI,CAACrC,UAAU,CAACW,MAAM,CAACuF,WAAW,CAACD,KAAK,CAAC,GAAGR,QAAQ;MAC/E,IAAI,CAACjF,sBAAsB,EAAE;MAC7B,IAAI,CAACR,UAAU,CAACmF,SAAS,CAAC,aAAa,EAAE,IAAI,CAACE,cAAc,EAAEY,KAAK,CAAC;IACxE;EAAC;IAAArE,GAAA;IAAAC,KAAA,EAED,SAAAmB,gBAAA,EAAkB;MAAA,IAAAqD,MAAA;MACd,IAAI,CAAC,IAAI,CAACzF,OAAO,CAACO,IAAI,CAAC,UAAAL,MAAM;QAAA,OAAIA,MAAM,CAACM,SAAS;MAAA,EAAC,EAAE;QAChD;MACJ;MACA;MACA,IAAI,CAAC,IAAI,CAACC,WAAW,EAAE;QACnB,IAAI,CAACA,WAAW,GAAG,UAACC,CAAC;UAAA,OAAK+E,MAAI,CAAC9E,YAAY,CAACD,CAAC,CAAC;QAAA;QAC9CN,MAAM,CAACC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACI,WAAW,CAAC;MAC1D;MAEA,IAAI,CAAC,IAAI,CAACG,SAAS,EAAE;QACjB,IAAI,CAACA,SAAS,GAAG,UAACF,CAAC;UAAA,OAAK+E,MAAI,CAAC5E,UAAU,CAACH,CAAC,CAAC;QAAA;QAC1CN,MAAM,CAACC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACO,SAAS,CAAC;MACtD;IACJ;EAAC;IAAAI,GAAA;IAAAC,KAAA,EAED,SAAA4B,kBAAA,EAAoB;MAChB,IAAI,IAAI,CAAC7C,OAAO,CAACO,IAAI,CAAC,UAAAL,MAAM;QAAA,OAAIA,MAAM,CAACM,SAAS;MAAA,EAAC,EAAE;QAC/C;MACJ;MACA;MACA,IAAI,IAAI,CAACC,WAAW,EAAE;QAClBL,MAAM,CAACmB,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAACd,WAAW,CAAC;QACzD,IAAI,CAACA,WAAW,GAAG,IAAI;MAC3B;MACA,IAAI,IAAI,CAACG,SAAS,EAAE;QAChBR,MAAM,CAACmB,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACX,SAAS,CAAC;QACrD,IAAI,CAACA,SAAS,GAAG,IAAI;MACzB;IACJ;;IAEA;AACJ;AACA;EAFI;IAAAI,GAAA;IAAAC,KAAA,EAGA,SAAAO,MAAA,EAAQ;MACJ,OAAQ,IAAI,CAACxB,OAAO,CAAC2E,MAAM,GAAG,CAAC,EAAG;QAC9B,IAAI,CAACtC,MAAM,CAAC,CAAC,CAAC;MAClB;IACJ;EAAC;IAAArB,GAAA;IAAAC,KAAA;IAxYD;AACJ;AACA;AACA;AACA;AACA;AACA;;IAEI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI,SAAAyE,OAAc1G,MAAM,EAAE;MAClB,OAAO;QACH2G,IAAI,EAAE,SAAS;QACfC,SAAS,EAAE5G,MAAM,IAAIA,MAAM,CAAC4G,SAAS,GAAG5G,MAAM,CAAC4G,SAAS,GAAG,KAAK;QAChE5G,MAAM,EAAEA,MAAM;QACd6G,WAAW,EAAE;UACTC,SAAS,WAAAA,UAACC,OAAO,EAAE;YACf,IAAI,CAAC,IAAI,CAACC,qBAAqB,CAAChG,OAAO,EAAE;cACrC,IAAI,CAACiG,UAAU,CAAC,SAAS,CAAC;YAC9B;YACA,OAAO,IAAI,CAACjG,OAAO,CAACG,GAAG,CAAC4F,OAAO,CAAC;UACpC,CAAC;UACDG,YAAY,WAAAA,aAAA,EAAG;YACX,IAAI,CAAClG,OAAO,IAAI,IAAI,CAACA,OAAO,CAACwB,KAAK,EAAE;UACxC;QACJ,CAAC;QACD2E,QAAQ,EAAEpH;MACd,CAAC;IACL;EAAC;EAAA,OAAAA,aAAA;AAAA;AAAAqH,kBAAA,GAAArH,aAAA;AAAAuH,MAAA,CAAAF,OAAA,GAAAA,OAAA,CAAAC,OAAA;;;;;;UC9EL;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;UEtBA;UACA;UACA;UACA","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\": \"inherit\",\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","_this","_classCallCheck","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","_createClass","key","value","init","isReady","once","destroy","un","removeEventListener","clear","time","label","tooltip","color","position","preventContextMenu","el","_createMarkerElement","markerElement","appendChild","push","_registerEvents","remove","index","getElementsByClassName","_onContextMenu","_onClick","_onMouseDown","removeChild","splice","_unregisterEvents","_createPointerSVG","svgNS","document","createElementNS","polygon","setAttribute","width","height","_this2","createElement","className","display","overflow","line","offset","background","opacity","labelDiv","point","labelEl","innerText","cursor","classList","stopPropagation","setCurrentTime","fireEvent","preventDefault","selectedMarker","i","length","_updateMarkerPosition","duration","getDuration","elementWidth","pixelRatio","positionPct","Math","min","leftPx","event","handleEvent","_this3","setTimeout","_this4","create","name","deferInit","staticProps","addMarker","options","initialisedPluginList","initPlugin","clearMarkers","instance","exports","default","module"],"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 getMarkers() {\n return this.markers;\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|Object} indexOrMarker Index of the marker to remove or the marker object itself\n */\n remove(indexOrMarker) {\n let index = indexOrMarker;\n if (isNaN(index)) {\n index = this.markers.findIndex(marker => marker === indexOrMarker);\n }\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\": \"inherit\",\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","_this","_classCallCheck","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","_createClass","key","value","init","isReady","once","destroy","un","removeEventListener","clear","time","label","tooltip","color","position","preventContextMenu","el","_createMarkerElement","markerElement","appendChild","push","_registerEvents","remove","indexOrMarker","index","isNaN","findIndex","getElementsByClassName","_onContextMenu","_onClick","_onMouseDown","removeChild","splice","_unregisterEvents","_createPointerSVG","svgNS","document","createElementNS","polygon","setAttribute","width","height","_this2","createElement","className","display","overflow","line","offset","background","opacity","labelDiv","point","labelEl","innerText","cursor","classList","stopPropagation","setCurrentTime","fireEvent","preventDefault","selectedMarker","i","length","_updateMarkerPosition","duration","getDuration","elementWidth","pixelRatio","positionPct","Math","min","leftPx","event","handleEvent","_this3","setTimeout","_this4","create","name","deferInit","staticProps","addMarker","options","initialisedPluginList","initPlugin","getMarkers","clearMarkers","instance","exports","default","module"],"sourceRoot":""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* wavesurfer.js markers plugin 6.6.
|
|
2
|
+
* wavesurfer.js markers plugin 6.6.3 (2023-04-04)
|
|
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){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function n(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,(o=i.key,s=void 0,s=function(e,t){if("object"!==r(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!==r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(o,"string"),"symbol"===r(s)?s:String(s)),i)}var o,s}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=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,r,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}}}],(r=[{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[
|
|
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){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function n(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,(o=i.key,s=void 0,s=function(e,t){if("object"!==r(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!==r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(o,"string"),"symbol"===r(s)?s:String(s)),i)}var o,s}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=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,r,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)},getMarkers:function(){return this.markers},clearMarkers:function(){this.markers&&this.markers.clear()}},instance:e}}}],(r=[{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=e;isNaN(t)&&(t=this.markers.findIndex((function(t){return t===e})));var r=this.markers[t];if(r){var n=r.el.getElementsByClassName("marker-label")[0];n&&(n._onContextMenu&&n.removeEventListener("contextmenu",n._onContextMenu),n._onClick&&n.removeEventListener("click",n._onClick),n._onMouseDown&&n.removeEventListener("mousedown",n._onMouseDown)),this.wrapper.removeChild(r.el),this.markers.splice(t,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":"inherit","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)}}])&&n(t.prototype,r),i&&n(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();t.default=i,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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wavesurfer.markers.min.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/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\": \"inherit\",\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__(188);\n"],"names":["root","factory","exports","module","define","amd","self","MarkersPlugin","params","ws","_this","_classCallCheck","this","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","key","value","name","deferInit","staticProps","addMarker","options","initialisedPluginList","initPlugin","clearMarkers","clear","instance","isReady","once","un","removeEventListener","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","_this2","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","leftPx","Math","min","event","handleEvent","_this3","setTimeout","_this4","remove","default","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"wavesurfer.markers.min.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/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 getMarkers() {\n return this.markers;\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|Object} indexOrMarker Index of the marker to remove or the marker object itself\n */\n remove(indexOrMarker) {\n let index = indexOrMarker;\n if (isNaN(index)) {\n index = this.markers.findIndex(marker => marker === indexOrMarker);\n }\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\": \"inherit\",\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__(188);\n"],"names":["root","factory","exports","module","define","amd","self","MarkersPlugin","params","ws","_this","_classCallCheck","this","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","key","value","name","deferInit","staticProps","addMarker","options","initialisedPluginList","initPlugin","getMarkers","clearMarkers","clear","instance","isReady","once","un","removeEventListener","time","label","tooltip","color","position","preventContextMenu","el","_createMarkerElement","markerElement","appendChild","push","_registerEvents","indexOrMarker","index","isNaN","findIndex","getElementsByClassName","_onContextMenu","_onClick","_onMouseDown","removeChild","splice","_unregisterEvents","svgNS","document","createElementNS","polygon","setAttribute","width","height","_this2","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","leftPx","Math","min","event","handleEvent","_this3","setTimeout","_this4","remove","default","__webpack_module_cache__","__webpack_exports__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__"],"sourceRoot":""}
|