2363 lines
122 KiB
JavaScript
2363 lines
122 KiB
JavaScript
/*!
|
|
* wavesurfer.js 5.1.0 (2021-08-06)
|
|
* https://wavesurfer-js.org
|
|
* @license BSD-3-Clause
|
|
*/
|
|
!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 = t()
|
|
}(this, (function () {
|
|
return e = {
|
|
427: (e, t, r) => {
|
|
"use strict";
|
|
Object.defineProperty(t, "__esModule", {value: !0}), t.default = void 0;
|
|
var n = a(r(138)), i = a(r(56));
|
|
|
|
function a(e) {
|
|
return e && e.__esModule ? e : {default: e}
|
|
}
|
|
|
|
function s(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)
|
|
}
|
|
}
|
|
|
|
var o = function () {
|
|
function e() {
|
|
!function (e, t) {
|
|
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
|
|
}(this, e), this.wave = null, this.waveCtx = null, this.progress = null, this.progressCtx = null, this.start = 0, this.end = 1, this.id = (0, i.default)(void 0 !== this.constructor.name ? this.constructor.name.toLowerCase() + "_" : "canvasentry_"), this.canvasContextAttributes = {}
|
|
}
|
|
|
|
var t, r, a;
|
|
return t = e, (r = [{
|
|
key: "initWave", value: function (e) {
|
|
this.wave = e, this.waveCtx = this.wave.getContext("2d", this.canvasContextAttributes)
|
|
}
|
|
}, {
|
|
key: "initProgress", value: function (e) {
|
|
this.progress = e, this.progressCtx = this.progress.getContext("2d", this.canvasContextAttributes)
|
|
}
|
|
}, {
|
|
key: "updateDimensions", value: function (e, t, r, i) {
|
|
this.start = this.wave.offsetLeft / t || 0, this.end = this.start + e / t, this.wave.width = r, this.wave.height = i;
|
|
var a = {width: e + "px"};
|
|
(0, n.default)(this.wave, a), this.hasProgressCanvas && (this.progress.width = r, this.progress.height = i, (0, n.default)(this.progress, a))
|
|
}
|
|
}, {
|
|
key: "clearWave", value: function () {
|
|
this.waveCtx.clearRect(0, 0, this.waveCtx.canvas.width, this.waveCtx.canvas.height), this.hasProgressCanvas && this.progressCtx.clearRect(0, 0, this.progressCtx.canvas.width, this.progressCtx.canvas.height)
|
|
}
|
|
}, {
|
|
key: "setFillStyles", value: function (e, t) {
|
|
this.waveCtx.fillStyle = e, this.hasProgressCanvas && (this.progressCtx.fillStyle = t)
|
|
}
|
|
}, {
|
|
key: "applyCanvasTransforms", value: function (e) {
|
|
e && (this.waveCtx.setTransform(0, 1, 1, 0, 0, 0), this.hasProgressCanvas && this.progressCtx.setTransform(0, 1, 1, 0, 0, 0))
|
|
}
|
|
}, {
|
|
key: "fillRects", value: function (e, t, r, n, i) {
|
|
this.fillRectToContext(this.waveCtx, e, t, r, n, i), this.hasProgressCanvas && this.fillRectToContext(this.progressCtx, e, t, r, n, i)
|
|
}
|
|
}, {
|
|
key: "fillRectToContext", value: function (e, t, r, n, i, a) {
|
|
e && (a ? this.drawRoundedRect(e, t, r, n, i, a) : e.fillRect(t, r, n, i))
|
|
}
|
|
}, {
|
|
key: "drawRoundedRect", value: function (e, t, r, n, i, a) {
|
|
0 !== i && (i < 0 && (r -= i *= -1), e.beginPath(), e.moveTo(t + a, r), e.lineTo(t + n - a, r), e.quadraticCurveTo(t + n, r, t + n, r + a), e.lineTo(t + n, r + i - a), e.quadraticCurveTo(t + n, r + i, t + n - a, r + i), e.lineTo(t + a, r + i), e.quadraticCurveTo(t, r + i, t, r + i - a), e.lineTo(t, r + a), e.quadraticCurveTo(t, r, t + a, r), e.closePath(), e.fill())
|
|
}
|
|
}, {
|
|
key: "drawLines", value: function (e, t, r, n, i, a) {
|
|
this.drawLineToContext(this.waveCtx, e, t, r, n, i, a), this.hasProgressCanvas && this.drawLineToContext(this.progressCtx, e, t, r, n, i, a)
|
|
}
|
|
}, {
|
|
key: "drawLineToContext", value: function (e, t, r, n, i, a, s) {
|
|
if (e) {
|
|
var o, u, l, c = t.length / 2, f = Math.round(c * this.start), h = f,
|
|
d = Math.round(c * this.end) + 1, p = this.wave.width / (d - h - 1), v = n + i,
|
|
y = r / n;
|
|
for (e.beginPath(), e.moveTo((h - f) * p, v), e.lineTo((h - f) * p, v - Math.round((t[2 * h] || 0) / y)), o = h; o < d; o++) u = t[2 * o] || 0, l = Math.round(u / y), e.lineTo((o - f) * p + this.halfPixel, v - l);
|
|
for (var m = d - 1; m >= h; m--) u = t[2 * m + 1] || 0, l = Math.round(u / y), e.lineTo((m - f) * p + this.halfPixel, v - l);
|
|
e.lineTo((h - f) * p, v - Math.round((t[2 * h + 1] || 0) / y)), e.closePath(), e.fill()
|
|
}
|
|
}
|
|
}, {
|
|
key: "destroy", value: function () {
|
|
this.waveCtx = null, this.wave = null, this.progressCtx = null, this.progress = null
|
|
}
|
|
}, {
|
|
key: "getImage", value: function (e, t, r) {
|
|
var n = this;
|
|
return "blob" === r ? new Promise((function (r) {
|
|
n.wave.toBlob(r, e, t)
|
|
})) : "dataURL" === r ? this.wave.toDataURL(e, t) : void 0
|
|
}
|
|
}]) && s(t.prototype, r), a && s(t, a), e
|
|
}();
|
|
t.default = o, e.exports = t.default
|
|
}, 276: (e, t, r) => {
|
|
"use strict";
|
|
|
|
function n(e) {
|
|
return (n = "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
|
|
})(e)
|
|
}
|
|
|
|
Object.defineProperty(t, "__esModule", {value: !0}), t.default = void 0;
|
|
var i = function (e, t) {
|
|
if (!t && e && e.__esModule) return e;
|
|
if (null === e || "object" !== n(e) && "function" != typeof e) return {default: e};
|
|
var r = a(t);
|
|
if (r && r.has(e)) return r.get(e);
|
|
var i = {}, s = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
for (var o in e) if ("default" !== o && Object.prototype.hasOwnProperty.call(e, o)) {
|
|
var u = s ? Object.getOwnPropertyDescriptor(e, o) : null;
|
|
u && (u.get || u.set) ? Object.defineProperty(i, o, u) : i[o] = e[o]
|
|
}
|
|
return i.default = e, r && r.set(e, i), i
|
|
}(r(241));
|
|
|
|
function a(e) {
|
|
if ("function" != typeof WeakMap) return null;
|
|
var t = new WeakMap, r = new WeakMap;
|
|
return (a = function (e) {
|
|
return e ? r : t
|
|
})(e)
|
|
}
|
|
|
|
function s(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)
|
|
}
|
|
}
|
|
|
|
function o(e, t) {
|
|
return (o = Object.setPrototypeOf || function (e, t) {
|
|
return e.__proto__ = t, e
|
|
})(e, t)
|
|
}
|
|
|
|
function u(e) {
|
|
var t = function () {
|
|
if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
|
|
if (Reflect.construct.sham) return !1;
|
|
if ("function" == typeof Proxy) return !0;
|
|
try {
|
|
return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
|
|
}))), !0
|
|
} catch (e) {
|
|
return !1
|
|
}
|
|
}();
|
|
return function () {
|
|
var r, n = c(e);
|
|
if (t) {
|
|
var i = c(this).constructor;
|
|
r = Reflect.construct(n, arguments, i)
|
|
} else r = n.apply(this, arguments);
|
|
return l(this, r)
|
|
}
|
|
}
|
|
|
|
function l(e, t) {
|
|
return !t || "object" !== n(t) && "function" != typeof t ? function (e) {
|
|
if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
return e
|
|
}(e) : t
|
|
}
|
|
|
|
function c(e) {
|
|
return (c = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
|
|
return e.__proto__ || Object.getPrototypeOf(e)
|
|
})(e)
|
|
}
|
|
|
|
var f = function (e) {
|
|
!function (e, t) {
|
|
if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
|
|
e.prototype = Object.create(t && t.prototype, {
|
|
constructor: {
|
|
value: e,
|
|
writable: !0,
|
|
configurable: !0
|
|
}
|
|
}), t && o(e, t)
|
|
}(l, e);
|
|
var t, r, n, a = u(l);
|
|
|
|
function l(e, t) {
|
|
var r;
|
|
return function (e, t) {
|
|
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
|
|
}(this, l), (r = a.call(this)).container = i.withOrientation(e, t.vertical), r.params = t, r.width = 0, r.height = t.height * r.params.pixelRatio, r.lastPos = 0, r.wrapper = null, r
|
|
}
|
|
|
|
return t = l, (r = [{
|
|
key: "style", value: function (e, t) {
|
|
return i.style(e, t)
|
|
}
|
|
}, {
|
|
key: "createWrapper", value: function () {
|
|
this.wrapper = i.withOrientation(this.container.appendChild(document.createElement("wave")), this.params.vertical), this.style(this.wrapper, {
|
|
display: "block",
|
|
position: "relative",
|
|
userSelect: "none",
|
|
webkitUserSelect: "none",
|
|
height: this.params.height + "px"
|
|
}), (this.params.fillParent || this.params.scrollParent) && this.style(this.wrapper, {
|
|
width: "100%",
|
|
overflowX: this.params.hideScrollbar ? "hidden" : "auto",
|
|
overflowY: "hidden"
|
|
}), this.setupWrapperEvents()
|
|
}
|
|
}, {
|
|
key: "handleEvent", value: function (e, t) {
|
|
!t && e.preventDefault();
|
|
var r,
|
|
n = i.withOrientation(e.targetTouches ? e.targetTouches[0] : e, this.params.vertical).clientX,
|
|
a = this.wrapper.getBoundingClientRect(), s = this.width, o = this.getWidth(),
|
|
u = this.getProgressPixels(a, n);
|
|
return r = !this.params.fillParent && s < o ? u * (this.params.pixelRatio / s) || 0 : (u + this.wrapper.scrollLeft) / this.wrapper.scrollWidth || 0, i.clamp(r, 0, 1)
|
|
}
|
|
}, {
|
|
key: "getProgressPixels", value: function (e, t) {
|
|
return this.params.rtl ? e.right - t : t - e.left
|
|
}
|
|
}, {
|
|
key: "setupWrapperEvents", value: function () {
|
|
var e = this;
|
|
this.wrapper.addEventListener("click", (function (t) {
|
|
var r = i.withOrientation(t, e.params.vertical),
|
|
n = e.wrapper.offsetHeight - e.wrapper.clientHeight;
|
|
if (0 !== n) {
|
|
var a = e.wrapper.getBoundingClientRect();
|
|
if (r.clientY >= a.bottom - n) return
|
|
}
|
|
e.params.interact && e.fireEvent("click", t, e.handleEvent(t))
|
|
})), this.wrapper.addEventListener("dblclick", (function (t) {
|
|
e.params.interact && e.fireEvent("dblclick", t, e.handleEvent(t))
|
|
})), this.wrapper.addEventListener("scroll", (function (t) {
|
|
return e.fireEvent("scroll", t)
|
|
}))
|
|
}
|
|
}, {
|
|
key: "drawPeaks", value: function (e, t, r, n) {
|
|
this.setWidth(t) || this.clearWave(), this.params.barWidth ? this.drawBars(e, 0, r, n) : this.drawWave(e, 0, r, n)
|
|
}
|
|
}, {
|
|
key: "resetScroll", value: function () {
|
|
null !== this.wrapper && (this.wrapper.scrollLeft = 0)
|
|
}
|
|
}, {
|
|
key: "recenter", value: function (e) {
|
|
var t = this.wrapper.scrollWidth * e;
|
|
this.recenterOnPosition(t, !0)
|
|
}
|
|
}, {
|
|
key: "recenterOnPosition", value: function (e, t) {
|
|
var r = this.wrapper.scrollLeft, n = ~~(this.wrapper.clientWidth / 2),
|
|
i = this.wrapper.scrollWidth - this.wrapper.clientWidth, a = e - n, s = a - r;
|
|
if (0 != i) {
|
|
if (!t && -n <= s && s < n) {
|
|
var o = this.params.autoCenterRate;
|
|
o /= n, o *= i, a = r + (s = Math.max(-o, Math.min(o, s)))
|
|
}
|
|
(a = Math.max(0, Math.min(i, a))) != r && (this.wrapper.scrollLeft = a)
|
|
}
|
|
}
|
|
}, {
|
|
key: "getScrollX", value: function () {
|
|
var e = 0;
|
|
if (this.wrapper) {
|
|
var t = this.params.pixelRatio;
|
|
if (e = Math.round(this.wrapper.scrollLeft * t), this.params.scrollParent) {
|
|
var r = ~~(this.wrapper.scrollWidth * t - this.getWidth());
|
|
e = Math.min(r, Math.max(0, e))
|
|
}
|
|
}
|
|
return e
|
|
}
|
|
}, {
|
|
key: "getWidth", value: function () {
|
|
return Math.round(this.container.clientWidth * this.params.pixelRatio)
|
|
}
|
|
}, {
|
|
key: "setWidth", value: function (e) {
|
|
if (this.width == e) return !1;
|
|
if (this.width = e, this.params.fillParent || this.params.scrollParent) this.style(this.wrapper, {width: ""}); else {
|
|
var t = ~~(this.width / this.params.pixelRatio) + "px";
|
|
this.style(this.wrapper, {width: t})
|
|
}
|
|
return this.updateSize(), !0
|
|
}
|
|
}, {
|
|
key: "setHeight", value: function (e) {
|
|
return e != this.height && (this.height = e, this.style(this.wrapper, {height: ~~(this.height / this.params.pixelRatio) + "px"}), this.updateSize(), !0)
|
|
}
|
|
}, {
|
|
key: "progress", value: function (e) {
|
|
var t = 1 / this.params.pixelRatio, r = Math.round(e * this.width) * t;
|
|
if (r < this.lastPos || r - this.lastPos >= t) {
|
|
if (this.lastPos = r, this.params.scrollParent && this.params.autoCenter) {
|
|
var n = ~~(this.wrapper.scrollWidth * e);
|
|
this.recenterOnPosition(n, this.params.autoCenterImmediately)
|
|
}
|
|
this.updateProgress(r)
|
|
}
|
|
}
|
|
}, {
|
|
key: "destroy", value: function () {
|
|
this.unAll(), this.wrapper && (this.wrapper.parentNode == this.container.domElement && this.container.removeChild(this.wrapper.domElement), this.wrapper = null)
|
|
}
|
|
}, {
|
|
key: "updateCursor", value: function () {
|
|
}
|
|
}, {
|
|
key: "updateSize", value: function () {
|
|
}
|
|
}, {
|
|
key: "drawBars", value: function (e, t, r, n) {
|
|
}
|
|
}, {
|
|
key: "drawWave", value: function (e, t, r, n) {
|
|
}
|
|
}, {
|
|
key: "clearWave", value: function () {
|
|
}
|
|
}, {
|
|
key: "updateProgress", value: function (e) {
|
|
}
|
|
}]) && s(t.prototype, r), n && s(t, n), l
|
|
}(i.Observer);
|
|
t.default = f, e.exports = t.default
|
|
}, 646: (e, t, r) => {
|
|
"use strict";
|
|
|
|
function n(e) {
|
|
return (n = "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
|
|
})(e)
|
|
}
|
|
|
|
Object.defineProperty(t, "__esModule", {value: !0}), t.default = void 0;
|
|
var i = u(r(276)), a = function (e, t) {
|
|
if (!t && e && e.__esModule) return e;
|
|
if (null === e || "object" !== n(e) && "function" != typeof e) return {default: e};
|
|
var r = o(t);
|
|
if (r && r.has(e)) return r.get(e);
|
|
var i = {}, a = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
for (var s in e) if ("default" !== s && Object.prototype.hasOwnProperty.call(e, s)) {
|
|
var u = a ? Object.getOwnPropertyDescriptor(e, s) : null;
|
|
u && (u.get || u.set) ? Object.defineProperty(i, s, u) : i[s] = e[s]
|
|
}
|
|
return i.default = e, r && r.set(e, i), i
|
|
}(r(241)), s = u(r(427));
|
|
|
|
function o(e) {
|
|
if ("function" != typeof WeakMap) return null;
|
|
var t = new WeakMap, r = new WeakMap;
|
|
return (o = function (e) {
|
|
return e ? r : t
|
|
})(e)
|
|
}
|
|
|
|
function u(e) {
|
|
return e && e.__esModule ? e : {default: e}
|
|
}
|
|
|
|
function l(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)
|
|
}
|
|
}
|
|
|
|
function c(e, t) {
|
|
return (c = Object.setPrototypeOf || function (e, t) {
|
|
return e.__proto__ = t, e
|
|
})(e, t)
|
|
}
|
|
|
|
function f(e) {
|
|
var t = function () {
|
|
if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
|
|
if (Reflect.construct.sham) return !1;
|
|
if ("function" == typeof Proxy) return !0;
|
|
try {
|
|
return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
|
|
}))), !0
|
|
} catch (e) {
|
|
return !1
|
|
}
|
|
}();
|
|
return function () {
|
|
var r, n = d(e);
|
|
if (t) {
|
|
var i = d(this).constructor;
|
|
r = Reflect.construct(n, arguments, i)
|
|
} else r = n.apply(this, arguments);
|
|
return h(this, r)
|
|
}
|
|
}
|
|
|
|
function h(e, t) {
|
|
return !t || "object" !== n(t) && "function" != typeof t ? function (e) {
|
|
if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
return e
|
|
}(e) : t
|
|
}
|
|
|
|
function d(e) {
|
|
return (d = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
|
|
return e.__proto__ || Object.getPrototypeOf(e)
|
|
})(e)
|
|
}
|
|
|
|
var p = function (e) {
|
|
!function (e, t) {
|
|
if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
|
|
e.prototype = Object.create(t && t.prototype, {
|
|
constructor: {
|
|
value: e,
|
|
writable: !0,
|
|
configurable: !0
|
|
}
|
|
}), t && c(e, t)
|
|
}(o, e);
|
|
var t, r, n, i = f(o);
|
|
|
|
function o(e, t) {
|
|
var r;
|
|
return function (e, t) {
|
|
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
|
|
}(this, o), (r = i.call(this, e, t)).maxCanvasWidth = t.maxCanvasWidth, r.maxCanvasElementWidth = Math.round(t.maxCanvasWidth / t.pixelRatio), r.hasProgressCanvas = t.waveColor != t.progressColor, r.halfPixel = .5 / t.pixelRatio, r.canvases = [], r.progressWave = null, r.EntryClass = s.default, r.canvasContextAttributes = t.drawingContextAttributes, r.overlap = 2 * Math.ceil(t.pixelRatio / 2), r.barRadius = t.barRadius || 0, r.vertical = t.vertical, r
|
|
}
|
|
|
|
return t = o, (r = [{
|
|
key: "init", value: function () {
|
|
this.createWrapper(), this.createElements()
|
|
}
|
|
}, {
|
|
key: "createElements", value: function () {
|
|
this.progressWave = a.withOrientation(this.wrapper.appendChild(document.createElement("wave")), this.params.vertical), this.style(this.progressWave, {
|
|
position: "absolute",
|
|
zIndex: 3,
|
|
left: 0,
|
|
top: 0,
|
|
bottom: 0,
|
|
overflow: "hidden",
|
|
width: "0",
|
|
display: "none",
|
|
boxSizing: "border-box",
|
|
borderRightStyle: "solid",
|
|
pointerEvents: "none"
|
|
}), this.addCanvas(), this.updateCursor()
|
|
}
|
|
}, {
|
|
key: "updateCursor", value: function () {
|
|
this.style(this.progressWave, {
|
|
borderRightWidth: this.params.cursorWidth + "px",
|
|
borderRightColor: this.params.cursorColor
|
|
})
|
|
}
|
|
}, {
|
|
key: "updateSize", value: function () {
|
|
for (var e = this, t = Math.round(this.width / this.params.pixelRatio), r = Math.ceil(t / (this.maxCanvasElementWidth + this.overlap)); this.canvases.length < r;) this.addCanvas();
|
|
for (; this.canvases.length > r;) this.removeCanvas();
|
|
var n = this.maxCanvasWidth + this.overlap, i = this.canvases.length - 1;
|
|
this.canvases.forEach((function (t, r) {
|
|
r == i && (n = e.width - e.maxCanvasWidth * i), e.updateDimensions(t, n, e.height), t.clearWave()
|
|
}))
|
|
}
|
|
}, {
|
|
key: "addCanvas", value: function () {
|
|
var e = new this.EntryClass;
|
|
e.canvasContextAttributes = this.canvasContextAttributes, e.hasProgressCanvas = this.hasProgressCanvas, e.halfPixel = this.halfPixel;
|
|
var t = this.maxCanvasElementWidth * this.canvases.length,
|
|
r = a.withOrientation(this.wrapper.appendChild(document.createElement("canvas")), this.params.vertical);
|
|
if (this.style(r, {
|
|
position: "absolute",
|
|
zIndex: 2,
|
|
left: t + "px",
|
|
top: 0,
|
|
bottom: 0,
|
|
height: "100%",
|
|
pointerEvents: "none"
|
|
}), e.initWave(r), this.hasProgressCanvas) {
|
|
var n = a.withOrientation(this.progressWave.appendChild(document.createElement("canvas")), this.params.vertical);
|
|
this.style(n, {
|
|
position: "absolute",
|
|
left: t + "px",
|
|
top: 0,
|
|
bottom: 0,
|
|
height: "100%"
|
|
}), e.initProgress(n)
|
|
}
|
|
this.canvases.push(e)
|
|
}
|
|
}, {
|
|
key: "removeCanvas", value: function () {
|
|
var e = this.canvases[this.canvases.length - 1];
|
|
e.wave.parentElement.removeChild(e.wave.domElement), this.hasProgressCanvas && e.progress.parentElement.removeChild(e.progress.domElement), e && (e.destroy(), e = null), this.canvases.pop()
|
|
}
|
|
}, {
|
|
key: "updateDimensions", value: function (e, t, r) {
|
|
var n = Math.round(t / this.params.pixelRatio),
|
|
i = Math.round(this.width / this.params.pixelRatio);
|
|
e.updateDimensions(n, i, t, r), this.style(this.progressWave, {display: "block"})
|
|
}
|
|
}, {
|
|
key: "clearWave", value: function () {
|
|
var e = this;
|
|
a.frame((function () {
|
|
e.canvases.forEach((function (e) {
|
|
return e.clearWave()
|
|
}))
|
|
}))()
|
|
}
|
|
}, {
|
|
key: "drawBars", value: function (e, t, r, n) {
|
|
var i = this;
|
|
return this.prepareDraw(e, t, r, n, (function (e) {
|
|
var t = e.absmax, a = e.hasMinVals, s = (e.height, e.offsetY), o = e.halfH, u = e.peaks,
|
|
l = e.channelIndex;
|
|
if (void 0 !== r) for (var c = a ? 2 : 1, f = u.length / c, h = i.params.barWidth * i.params.pixelRatio, d = h + (null === i.params.barGap ? Math.max(i.params.pixelRatio, ~~(h / 2)) : Math.max(i.params.pixelRatio, i.params.barGap * i.params.pixelRatio)), p = f / i.width, v = n, y = r; y < v; y += d) {
|
|
var m = u[Math.floor(y * p * c)] || 0, b = Math.round(m / t * o);
|
|
0 == b && i.params.barMinHeight && (b = i.params.barMinHeight), i.fillRect(y + i.halfPixel, o - b + s, h + i.halfPixel, 2 * b, i.barRadius, l)
|
|
}
|
|
}))
|
|
}
|
|
}, {
|
|
key: "drawWave", value: function (e, t, r, n) {
|
|
var i = this;
|
|
return this.prepareDraw(e, t, r, n, (function (e) {
|
|
var t = e.absmax, a = e.hasMinVals, s = (e.height, e.offsetY), o = e.halfH, u = e.peaks,
|
|
l = e.channelIndex;
|
|
if (!a) {
|
|
for (var c = [], f = u.length, h = 0; h < f; h++) c[2 * h] = u[h], c[2 * h + 1] = -u[h];
|
|
u = c
|
|
}
|
|
void 0 !== r && i.drawLine(u, t, o, s, r, n, l), i.fillRect(0, o + s - i.halfPixel, i.width, i.halfPixel, i.barRadius, l)
|
|
}))
|
|
}
|
|
}, {
|
|
key: "drawLine", value: function (e, t, r, n, i, a, s) {
|
|
var o = this, u = this.params.splitChannelsOptions.channelColors[s] || {}, l = u.waveColor,
|
|
c = u.progressColor;
|
|
this.canvases.forEach((function (s, u) {
|
|
o.setFillStyles(s, l, c), o.applyCanvasTransforms(s, o.params.vertical), s.drawLines(e, t, r, n, i, a)
|
|
}))
|
|
}
|
|
}, {
|
|
key: "fillRect", value: function (e, t, r, n, i, a) {
|
|
for (var s = Math.floor(e / this.maxCanvasWidth), o = Math.min(Math.ceil((e + r) / this.maxCanvasWidth) + 1, this.canvases.length), u = s; u < o; u++) {
|
|
var l = this.canvases[u], c = u * this.maxCanvasWidth, f = {
|
|
x1: Math.max(e, u * this.maxCanvasWidth),
|
|
y1: t,
|
|
x2: Math.min(e + r, u * this.maxCanvasWidth + l.wave.width),
|
|
y2: t + n
|
|
};
|
|
if (f.x1 < f.x2) {
|
|
var h = this.params.splitChannelsOptions.channelColors[a] || {}, d = h.waveColor,
|
|
p = h.progressColor;
|
|
this.setFillStyles(l, d, p), this.applyCanvasTransforms(l, this.params.vertical), l.fillRects(f.x1 - c, f.y1, f.x2 - f.x1, f.y2 - f.y1, i)
|
|
}
|
|
}
|
|
}
|
|
}, {
|
|
key: "hideChannel", value: function (e) {
|
|
return this.params.splitChannels && this.params.splitChannelsOptions.filterChannels.includes(e)
|
|
}
|
|
}, {
|
|
key: "prepareDraw", value: function (e, t, r, n, i, s, o) {
|
|
var u = this;
|
|
return a.frame((function () {
|
|
if (e[0] instanceof Array) {
|
|
var l = e;
|
|
if (u.params.splitChannels) {
|
|
var c, f = l.filter((function (e, t) {
|
|
return !u.hideChannel(t)
|
|
}));
|
|
return u.params.splitChannelsOptions.overlay || u.setHeight(Math.max(f.length, 1) * u.params.height * u.params.pixelRatio), u.params.splitChannelsOptions && u.params.splitChannelsOptions.relativeNormalization && (c = a.max(l.map((function (e) {
|
|
return a.absMax(e)
|
|
})))), l.forEach((function (e, t) {
|
|
return u.prepareDraw(e, t, r, n, i, f.indexOf(e), c)
|
|
}))
|
|
}
|
|
e = l[0]
|
|
}
|
|
if (!u.hideChannel(t)) {
|
|
var h = 1 / u.params.barHeight;
|
|
u.params.normalize && (h = void 0 === o ? a.absMax(e) : o);
|
|
var d = [].some.call(e, (function (e) {
|
|
return e < 0
|
|
})), p = u.params.height * u.params.pixelRatio, v = p / 2, y = p * s || 0;
|
|
return u.params.splitChannelsOptions && u.params.splitChannelsOptions.overlay && (y = 0), i({
|
|
absmax: h,
|
|
hasMinVals: d,
|
|
height: p,
|
|
offsetY: y,
|
|
halfH: v,
|
|
peaks: e,
|
|
channelIndex: t
|
|
})
|
|
}
|
|
}))()
|
|
}
|
|
}, {
|
|
key: "setFillStyles", value: function (e) {
|
|
var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.params.waveColor,
|
|
r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : this.params.progressColor;
|
|
e.setFillStyles(t, r)
|
|
}
|
|
}, {
|
|
key: "applyCanvasTransforms", value: function (e) {
|
|
var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
|
|
e.applyCanvasTransforms(t)
|
|
}
|
|
}, {
|
|
key: "getImage", value: function (e, t, r) {
|
|
if ("blob" === r) return Promise.all(this.canvases.map((function (n) {
|
|
return n.getImage(e, t, r)
|
|
})));
|
|
if ("dataURL" === r) {
|
|
var n = this.canvases.map((function (n) {
|
|
return n.getImage(e, t, r)
|
|
}));
|
|
return n.length > 1 ? n : n[0]
|
|
}
|
|
}
|
|
}, {
|
|
key: "updateProgress", value: function (e) {
|
|
this.style(this.progressWave, {width: e + "px"})
|
|
}
|
|
}]) && l(t.prototype, r), n && l(t, n), o
|
|
}(i.default);
|
|
t.default = p, e.exports = t.default
|
|
}, 328: (e, t, r) => {
|
|
"use strict";
|
|
|
|
function n(e) {
|
|
return (n = "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
|
|
})(e)
|
|
}
|
|
|
|
var i;
|
|
|
|
function a(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)
|
|
}
|
|
}
|
|
|
|
function s(e, t, r) {
|
|
return (s = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function (e, t, r) {
|
|
var n = function (e, t) {
|
|
for (; !Object.prototype.hasOwnProperty.call(e, t) && null !== (e = c(e));) ;
|
|
return e
|
|
}(e, t);
|
|
if (n) {
|
|
var i = Object.getOwnPropertyDescriptor(n, t);
|
|
return i.get ? i.get.call(r) : i.value
|
|
}
|
|
})(e, t, r || e)
|
|
}
|
|
|
|
function o(e, t) {
|
|
return (o = Object.setPrototypeOf || function (e, t) {
|
|
return e.__proto__ = t, e
|
|
})(e, t)
|
|
}
|
|
|
|
function u(e) {
|
|
var t = function () {
|
|
if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
|
|
if (Reflect.construct.sham) return !1;
|
|
if ("function" == typeof Proxy) return !0;
|
|
try {
|
|
return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
|
|
}))), !0
|
|
} catch (e) {
|
|
return !1
|
|
}
|
|
}();
|
|
return function () {
|
|
var r, n = c(e);
|
|
if (t) {
|
|
var i = c(this).constructor;
|
|
r = Reflect.construct(n, arguments, i)
|
|
} else r = n.apply(this, arguments);
|
|
return l(this, r)
|
|
}
|
|
}
|
|
|
|
function l(e, t) {
|
|
return !t || "object" !== n(t) && "function" != typeof t ? function (e) {
|
|
if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
return e
|
|
}(e) : t
|
|
}
|
|
|
|
function c(e) {
|
|
return (c = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
|
|
return e.__proto__ || Object.getPrototypeOf(e)
|
|
})(e)
|
|
}
|
|
|
|
Object.defineProperty(t, "__esModule", {value: !0}), t.default = void 0;
|
|
var f = function (e) {
|
|
!function (e, t) {
|
|
if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
|
|
e.prototype = Object.create(t && t.prototype, {
|
|
constructor: {
|
|
value: e,
|
|
writable: !0,
|
|
configurable: !0
|
|
}
|
|
}), t && o(e, t)
|
|
}(l, e);
|
|
var t, r, n, i = u(l);
|
|
|
|
function l(e) {
|
|
var t;
|
|
return function (e, t) {
|
|
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
|
|
}(this, l), (t = i.call(this, e)).params = e, t.sourceMediaElement = null, t
|
|
}
|
|
|
|
return t = l, (r = [{
|
|
key: "init", value: function () {
|
|
this.setPlaybackRate(this.params.audioRate), this.createTimer(), this.createVolumeNode(), this.createScriptNode(), this.createAnalyserNode()
|
|
}
|
|
}, {
|
|
key: "_load", value: function (e, t, r) {
|
|
s(c(l.prototype), "_load", this).call(this, e, t, r), this.createMediaElementSource(e)
|
|
}
|
|
}, {
|
|
key: "createMediaElementSource", value: function (e) {
|
|
this.sourceMediaElement = this.ac.createMediaElementSource(e), this.sourceMediaElement.connect(this.analyser)
|
|
}
|
|
}, {
|
|
key: "play", value: function (e, t) {
|
|
return this.resumeAudioContext(), s(c(l.prototype), "play", this).call(this, e, t)
|
|
}
|
|
}, {
|
|
key: "destroy", value: function () {
|
|
s(c(l.prototype), "destroy", this).call(this), this.destroyWebAudio()
|
|
}
|
|
}]) && a(t.prototype, r), n && a(t, n), l
|
|
}(((i = r(743)) && i.__esModule ? i : {default: i}).default);
|
|
t.default = f, e.exports = t.default
|
|
}, 743: (e, t, r) => {
|
|
"use strict";
|
|
|
|
function n(e) {
|
|
return (n = "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
|
|
})(e)
|
|
}
|
|
|
|
Object.defineProperty(t, "__esModule", {value: !0}), t.default = void 0;
|
|
var i, a = (i = r(379)) && i.__esModule ? i : {default: i}, s = function (e, t) {
|
|
if (!t && e && e.__esModule) return e;
|
|
if (null === e || "object" !== n(e) && "function" != typeof e) return {default: e};
|
|
var r = o(t);
|
|
if (r && r.has(e)) return r.get(e);
|
|
var i = {}, a = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
for (var s in e) if ("default" !== s && Object.prototype.hasOwnProperty.call(e, s)) {
|
|
var u = a ? Object.getOwnPropertyDescriptor(e, s) : null;
|
|
u && (u.get || u.set) ? Object.defineProperty(i, s, u) : i[s] = e[s]
|
|
}
|
|
return i.default = e, r && r.set(e, i), i
|
|
}(r(241));
|
|
|
|
function o(e) {
|
|
if ("function" != typeof WeakMap) return null;
|
|
var t = new WeakMap, r = new WeakMap;
|
|
return (o = function (e) {
|
|
return e ? r : t
|
|
})(e)
|
|
}
|
|
|
|
function u(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)
|
|
}
|
|
}
|
|
|
|
function l(e, t, r) {
|
|
return (l = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function (e, t, r) {
|
|
var n = function (e, t) {
|
|
for (; !Object.prototype.hasOwnProperty.call(e, t) && null !== (e = d(e));) ;
|
|
return e
|
|
}(e, t);
|
|
if (n) {
|
|
var i = Object.getOwnPropertyDescriptor(n, t);
|
|
return i.get ? i.get.call(r) : i.value
|
|
}
|
|
})(e, t, r || e)
|
|
}
|
|
|
|
function c(e, t) {
|
|
return (c = Object.setPrototypeOf || function (e, t) {
|
|
return e.__proto__ = t, e
|
|
})(e, t)
|
|
}
|
|
|
|
function f(e) {
|
|
var t = function () {
|
|
if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
|
|
if (Reflect.construct.sham) return !1;
|
|
if ("function" == typeof Proxy) return !0;
|
|
try {
|
|
return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
|
|
}))), !0
|
|
} catch (e) {
|
|
return !1
|
|
}
|
|
}();
|
|
return function () {
|
|
var r, n = d(e);
|
|
if (t) {
|
|
var i = d(this).constructor;
|
|
r = Reflect.construct(n, arguments, i)
|
|
} else r = n.apply(this, arguments);
|
|
return h(this, r)
|
|
}
|
|
}
|
|
|
|
function h(e, t) {
|
|
return !t || "object" !== n(t) && "function" != typeof t ? function (e) {
|
|
if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
return e
|
|
}(e) : t
|
|
}
|
|
|
|
function d(e) {
|
|
return (d = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
|
|
return e.__proto__ || Object.getPrototypeOf(e)
|
|
})(e)
|
|
}
|
|
|
|
var p = function (e) {
|
|
!function (e, t) {
|
|
if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
|
|
e.prototype = Object.create(t && t.prototype, {
|
|
constructor: {
|
|
value: e,
|
|
writable: !0,
|
|
configurable: !0
|
|
}
|
|
}), t && c(e, t)
|
|
}(a, e);
|
|
var t, r, n, i = f(a);
|
|
|
|
function a(e) {
|
|
var t;
|
|
return function (e, t) {
|
|
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
|
|
}(this, a), (t = i.call(this, e)).params = e, t.media = {
|
|
currentTime: 0,
|
|
duration: 0,
|
|
paused: !0,
|
|
playbackRate: 1,
|
|
play: function () {
|
|
},
|
|
pause: function () {
|
|
},
|
|
volume: 0
|
|
}, t.mediaType = e.mediaType.toLowerCase(), t.elementPosition = e.elementPosition, t.peaks = null, t.playbackRate = 1, t.volume = 1, t.isMuted = !1, t.buffer = null, t.onPlayEnd = null, t.mediaListeners = {}, t
|
|
}
|
|
|
|
return t = a, (r = [{
|
|
key: "init", value: function () {
|
|
this.setPlaybackRate(this.params.audioRate), this.createTimer()
|
|
}
|
|
}, {
|
|
key: "_setupMediaListeners", value: function () {
|
|
var e = this;
|
|
this.mediaListeners.error = function () {
|
|
e.fireEvent("error", "Error loading media element")
|
|
}, this.mediaListeners.canplay = function () {
|
|
e.fireEvent("canplay")
|
|
}, this.mediaListeners.ended = function () {
|
|
e.fireEvent("finish")
|
|
}, this.mediaListeners.play = function () {
|
|
e.fireEvent("play")
|
|
}, this.mediaListeners.pause = function () {
|
|
e.fireEvent("pause")
|
|
}, this.mediaListeners.seeked = function (t) {
|
|
e.fireEvent("seek")
|
|
}, this.mediaListeners.volumechange = function (t) {
|
|
e.isMuted = e.media.muted, e.isMuted ? e.volume = 0 : e.volume = e.media.volume, e.fireEvent("volume")
|
|
}, Object.keys(this.mediaListeners).forEach((function (t) {
|
|
e.media.removeEventListener(t, e.mediaListeners[t]), e.media.addEventListener(t, e.mediaListeners[t])
|
|
}))
|
|
}
|
|
}, {
|
|
key: "createTimer", value: function () {
|
|
var e = this;
|
|
this.on("play", (function t() {
|
|
e.isPaused() || (e.fireEvent("audioprocess", e.getCurrentTime()), s.frame(t)())
|
|
})), this.on("pause", (function () {
|
|
e.fireEvent("audioprocess", e.getCurrentTime())
|
|
}))
|
|
}
|
|
}, {
|
|
key: "load", value: function (e, t, r, n) {
|
|
var i = document.createElement(this.mediaType);
|
|
i.controls = this.params.mediaControls, i.autoplay = this.params.autoplay || !1, i.preload = null == n ? "auto" : n, i.src = e, i.style.width = "100%";
|
|
var a = t.querySelector(this.mediaType);
|
|
a && t.removeChild(a), t.appendChild(i), this._load(i, r, n)
|
|
}
|
|
}, {
|
|
key: "loadElt", value: function (e, t) {
|
|
e.controls = this.params.mediaControls, e.autoplay = this.params.autoplay || !1, this._load(e, t, e.preload)
|
|
}
|
|
}, {
|
|
key: "_load", value: function (e, t, r) {
|
|
if (!(e instanceof HTMLMediaElement) || void 0 === e.addEventListener) throw new Error("media parameter is not a valid media element");
|
|
"function" != typeof e.load || t && "none" == r || e.load(), this.media = e, this._setupMediaListeners(), this.peaks = t, this.onPlayEnd = null, this.buffer = null, this.isMuted = e.muted, this.setPlaybackRate(this.playbackRate), this.setVolume(this.volume)
|
|
}
|
|
}, {
|
|
key: "isPaused", value: function () {
|
|
return !this.media || this.media.paused
|
|
}
|
|
}, {
|
|
key: "getDuration", value: function () {
|
|
if (this.explicitDuration) return this.explicitDuration;
|
|
var e = (this.buffer || this.media).duration;
|
|
return e >= 1 / 0 && (e = this.media.seekable.end(0)), e
|
|
}
|
|
}, {
|
|
key: "getCurrentTime", value: function () {
|
|
return this.media && this.media.currentTime
|
|
}
|
|
}, {
|
|
key: "getPlayedPercents", value: function () {
|
|
return this.getCurrentTime() / this.getDuration() || 0
|
|
}
|
|
}, {
|
|
key: "getPlaybackRate", value: function () {
|
|
return this.playbackRate || this.media.playbackRate
|
|
}
|
|
}, {
|
|
key: "setPlaybackRate", value: function (e) {
|
|
this.playbackRate = e || 1, this.media.playbackRate = this.playbackRate
|
|
}
|
|
}, {
|
|
key: "seekTo", value: function (e) {
|
|
null != e && (this.media.currentTime = e), this.clearPlayEnd()
|
|
}
|
|
}, {
|
|
key: "play", value: function (e, t) {
|
|
this.seekTo(e);
|
|
var r = this.media.play();
|
|
return t && this.setPlayEnd(t), r
|
|
}
|
|
}, {
|
|
key: "pause", value: function () {
|
|
var e;
|
|
return this.media && (e = this.media.pause()), this.clearPlayEnd(), e
|
|
}
|
|
}, {
|
|
key: "setPlayEnd", value: function (e) {
|
|
var t = this;
|
|
this.clearPlayEnd(), this._onPlayEnd = function (r) {
|
|
r >= e && (t.pause(), t.seekTo(e))
|
|
}, this.on("audioprocess", this._onPlayEnd)
|
|
}
|
|
}, {
|
|
key: "clearPlayEnd", value: function () {
|
|
this._onPlayEnd && (this.un("audioprocess", this._onPlayEnd), this._onPlayEnd = null)
|
|
}
|
|
}, {
|
|
key: "getPeaks", value: function (e, t, r) {
|
|
return this.buffer ? l(d(a.prototype), "getPeaks", this).call(this, e, t, r) : this.peaks || []
|
|
}
|
|
}, {
|
|
key: "setSinkId", value: function (e) {
|
|
return e ? this.media.setSinkId ? this.media.setSinkId(e) : Promise.reject(new Error("setSinkId is not supported in your browser")) : Promise.reject(new Error("Invalid deviceId: " + e))
|
|
}
|
|
}, {
|
|
key: "getVolume", value: function () {
|
|
return this.volume
|
|
}
|
|
}, {
|
|
key: "setVolume", value: function (e) {
|
|
this.volume = e, this.media.volume !== this.volume && (this.media.volume = this.volume)
|
|
}
|
|
}, {
|
|
key: "setMute", value: function (e) {
|
|
this.isMuted = this.media.muted = e
|
|
}
|
|
}, {
|
|
key: "destroy", value: function () {
|
|
var e = this;
|
|
this.pause(), this.unAll(), this.destroyed = !0, Object.keys(this.mediaListeners).forEach((function (t) {
|
|
e.media && e.media.removeEventListener(t, e.mediaListeners[t])
|
|
})), this.params.removeMediaElementOnDestroy && this.media && this.media.parentNode && this.media.parentNode.removeChild(this.media), this.media = null
|
|
}
|
|
}]) && u(t.prototype, r), n && u(t, n), a
|
|
}(a.default);
|
|
t.default = p, e.exports = t.default
|
|
}, 227: (e, t) => {
|
|
"use strict";
|
|
|
|
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() {
|
|
!function (e, t) {
|
|
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
|
|
}(this, e), this.clearPeakCache()
|
|
}
|
|
|
|
var t, n, i;
|
|
return t = e, (n = [{
|
|
key: "clearPeakCache", value: function () {
|
|
this.peakCacheRanges = [], this.peakCacheLength = -1
|
|
}
|
|
}, {
|
|
key: "addRangeToPeakCache", value: function (e, t, r) {
|
|
e != this.peakCacheLength && (this.clearPeakCache(), this.peakCacheLength = e);
|
|
for (var n = [], i = 0; i < this.peakCacheRanges.length && this.peakCacheRanges[i] < t;) i++;
|
|
for (i % 2 == 0 && n.push(t); i < this.peakCacheRanges.length && this.peakCacheRanges[i] <= r;) n.push(this.peakCacheRanges[i]), i++;
|
|
i % 2 == 0 && n.push(r), n = n.filter((function (e, t, r) {
|
|
return 0 == t ? e != r[t + 1] : t == r.length - 1 ? e != r[t - 1] : e != r[t - 1] && e != r[t + 1]
|
|
})), this.peakCacheRanges = this.peakCacheRanges.concat(n), this.peakCacheRanges = this.peakCacheRanges.sort((function (e, t) {
|
|
return e - t
|
|
})).filter((function (e, t, r) {
|
|
return 0 == t ? e != r[t + 1] : t == r.length - 1 ? e != r[t - 1] : e != r[t - 1] && e != r[t + 1]
|
|
}));
|
|
var a = [];
|
|
for (i = 0; i < n.length; i += 2) a.push([n[i], n[i + 1]]);
|
|
return a
|
|
}
|
|
}, {
|
|
key: "getCacheRanges", value: function () {
|
|
var e, t = [];
|
|
for (e = 0; e < this.peakCacheRanges.length; e += 2) t.push([this.peakCacheRanges[e], this.peakCacheRanges[e + 1]]);
|
|
return t
|
|
}
|
|
}]) && r(t.prototype, n), i && r(t, i), e
|
|
}();
|
|
t.default = n, e.exports = t.default
|
|
}, 765: (e, t, r) => {
|
|
"use strict";
|
|
Object.defineProperty(t, "__esModule", {value: !0}), t.default = function (e) {
|
|
var t = (0, n.default)(e), r = (0, i.default)(e);
|
|
return -r > t ? -r : t
|
|
};
|
|
var n = a(r(178)), i = a(r(706));
|
|
|
|
function a(e) {
|
|
return e && e.__esModule ? e : {default: e}
|
|
}
|
|
|
|
e.exports = t.default
|
|
}, 694: (e, t) => {
|
|
"use strict";
|
|
Object.defineProperty(t, "__esModule", {value: !0}), t.default = function (e, t, r) {
|
|
return Math.min(Math.max(t, e), r)
|
|
}, e.exports = t.default
|
|
}, 342: (e, t, r) => {
|
|
"use strict";
|
|
Object.defineProperty(t, "__esModule", {value: !0}), t.default = function (e) {
|
|
if (!e) throw new Error("fetch options missing");
|
|
if (!e.url) throw new Error("fetch url missing");
|
|
var t = new i.default, r = new Headers, n = new Request(e.url);
|
|
t.controller = new AbortController, e && e.requestHeaders && e.requestHeaders.forEach((function (e) {
|
|
r.append(e.key, e.value)
|
|
}));
|
|
var a = e.responseType || "json", o = {
|
|
method: e.method || "GET",
|
|
headers: r,
|
|
mode: e.mode || "cors",
|
|
credentials: e.credentials || "same-origin",
|
|
cache: e.cache || "default",
|
|
redirect: e.redirect || "follow",
|
|
referrer: e.referrer || "client",
|
|
signal: t.controller.signal
|
|
};
|
|
return fetch(n, o).then((function (e) {
|
|
t.response = e;
|
|
var r = !0;
|
|
e.body || (r = !1);
|
|
var n = e.headers.get("content-length");
|
|
return null === n && (r = !1), r ? (t.onProgress = function (e) {
|
|
t.fireEvent("progress", e)
|
|
}, new Response(new ReadableStream(new s(t, n, e)), o)) : e
|
|
})).then((function (e) {
|
|
var t;
|
|
if (e.ok) switch (a) {
|
|
case"arraybuffer":
|
|
return e.arrayBuffer();
|
|
case"json":
|
|
return e.json();
|
|
case"blob":
|
|
return e.blob();
|
|
case"text":
|
|
return e.text();
|
|
default:
|
|
t = "Unknown responseType: " + a
|
|
}
|
|
throw t || (t = "HTTP error status: " + e.status), new Error(t)
|
|
})).then((function (e) {
|
|
t.fireEvent("success", e)
|
|
})).catch((function (e) {
|
|
t.fireEvent("error", e)
|
|
})), t.fetchRequest = n, t
|
|
};
|
|
var n, i = (n = r(399)) && n.__esModule ? n : {default: n};
|
|
|
|
function a(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)
|
|
}
|
|
}
|
|
|
|
var s = function () {
|
|
function e(t, r, n) {
|
|
!function (e, t) {
|
|
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
|
|
}(this, e), this.instance = t, this.instance._reader = n.body.getReader(), this.total = parseInt(r, 10), this.loaded = 0
|
|
}
|
|
|
|
var t, r, n;
|
|
return t = e, (r = [{
|
|
key: "start", value: function (e) {
|
|
var t = this;
|
|
!function r() {
|
|
t.instance._reader.read().then((function (n) {
|
|
var i = n.done, a = n.value;
|
|
if (i) return 0 === t.total && t.instance.onProgress.call(t.instance, {
|
|
loaded: t.loaded,
|
|
total: t.total,
|
|
lengthComputable: !1
|
|
}), void e.close();
|
|
t.loaded += a.byteLength, t.instance.onProgress.call(t.instance, {
|
|
loaded: t.loaded,
|
|
total: t.total,
|
|
lengthComputable: !(0 === t.total)
|
|
}), e.enqueue(a), r()
|
|
})).catch((function (t) {
|
|
e.error(t)
|
|
}))
|
|
}()
|
|
}
|
|
}]) && a(t.prototype, r), n && a(t, n), e
|
|
}();
|
|
e.exports = t.default
|
|
}, 412: (e, t, r) => {
|
|
"use strict";
|
|
Object.defineProperty(t, "__esModule", {value: !0}), t.default = function (e) {
|
|
return function () {
|
|
for (var t = arguments.length, r = new Array(t), n = 0; n < t; n++) r[n] = arguments[n];
|
|
return (0, i.default)((function () {
|
|
return e.apply(void 0, r)
|
|
}))
|
|
}
|
|
};
|
|
var n, i = (n = r(779)) && n.__esModule ? n : {default: n};
|
|
e.exports = t.default
|
|
}, 56: (e, t) => {
|
|
"use strict";
|
|
Object.defineProperty(t, "__esModule", {value: !0}), t.default = function (e) {
|
|
return void 0 === e && (e = "wavesurfer_"), e + Math.random().toString(32).substring(2)
|
|
}, e.exports = t.default
|
|
}, 241: (e, t, r) => {
|
|
"use strict";
|
|
Object.defineProperty(t, "__esModule", {value: !0}), Object.defineProperty(t, "getId", {
|
|
enumerable: !0,
|
|
get: function () {
|
|
return n.default
|
|
}
|
|
}), Object.defineProperty(t, "max", {
|
|
enumerable: !0, get: function () {
|
|
return i.default
|
|
}
|
|
}), Object.defineProperty(t, "min", {
|
|
enumerable: !0, get: function () {
|
|
return a.default
|
|
}
|
|
}), Object.defineProperty(t, "absMax", {
|
|
enumerable: !0, get: function () {
|
|
return s.default
|
|
}
|
|
}), Object.defineProperty(t, "Observer", {
|
|
enumerable: !0, get: function () {
|
|
return o.default
|
|
}
|
|
}), Object.defineProperty(t, "style", {
|
|
enumerable: !0, get: function () {
|
|
return u.default
|
|
}
|
|
}), Object.defineProperty(t, "requestAnimationFrame", {
|
|
enumerable: !0, get: function () {
|
|
return l.default
|
|
}
|
|
}), Object.defineProperty(t, "frame", {
|
|
enumerable: !0, get: function () {
|
|
return c.default
|
|
}
|
|
}), Object.defineProperty(t, "debounce", {
|
|
enumerable: !0, get: function () {
|
|
return f.default
|
|
}
|
|
}), Object.defineProperty(t, "preventClick", {
|
|
enumerable: !0, get: function () {
|
|
return h.default
|
|
}
|
|
}), Object.defineProperty(t, "fetchFile", {
|
|
enumerable: !0, get: function () {
|
|
return d.default
|
|
}
|
|
}), Object.defineProperty(t, "clamp", {
|
|
enumerable: !0, get: function () {
|
|
return p.default
|
|
}
|
|
}), Object.defineProperty(t, "withOrientation", {
|
|
enumerable: !0, get: function () {
|
|
return v.default
|
|
}
|
|
});
|
|
var n = y(r(56)), i = y(r(178)), a = y(r(706)), s = y(r(765)), o = y(r(399)), u = y(r(138)), l = y(r(779)),
|
|
c = y(r(412)), f = y(r(296)), h = y(r(529)), d = y(r(342)), p = y(r(694)), v = y(r(713));
|
|
|
|
function y(e) {
|
|
return e && e.__esModule ? e : {default: e}
|
|
}
|
|
}, 178: (e, t) => {
|
|
"use strict";
|
|
Object.defineProperty(t, "__esModule", {value: !0}), t.default = function (e) {
|
|
var t = -1 / 0;
|
|
return Object.keys(e).forEach((function (r) {
|
|
e[r] > t && (t = e[r])
|
|
})), t
|
|
}, e.exports = t.default
|
|
}, 706: (e, t) => {
|
|
"use strict";
|
|
Object.defineProperty(t, "__esModule", {value: !0}), t.default = function (e) {
|
|
var t = Number(1 / 0);
|
|
return Object.keys(e).forEach((function (r) {
|
|
e[r] < t && (t = e[r])
|
|
})), t
|
|
}, e.exports = t.default
|
|
}, 399: (e, t) => {
|
|
"use strict";
|
|
|
|
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() {
|
|
!function (e, t) {
|
|
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
|
|
}(this, e), this._disabledEventEmissions = [], this.handlers = null
|
|
}
|
|
|
|
var t, n, i;
|
|
return t = e, (n = [{
|
|
key: "on", value: function (e, t) {
|
|
var r = this;
|
|
this.handlers || (this.handlers = {});
|
|
var n = this.handlers[e];
|
|
return n || (n = this.handlers[e] = []), n.push(t), {
|
|
name: e, callback: t, un: function (e, t) {
|
|
return r.un(e, t)
|
|
}
|
|
}
|
|
}
|
|
}, {
|
|
key: "un", value: function (e, t) {
|
|
if (this.handlers) {
|
|
var r, n = this.handlers[e];
|
|
if (n) if (t) for (r = n.length - 1; r >= 0; r--) n[r] == t && n.splice(r, 1); else n.length = 0
|
|
}
|
|
}
|
|
}, {
|
|
key: "unAll", value: function () {
|
|
this.handlers = null
|
|
}
|
|
}, {
|
|
key: "once", value: function (e, t) {
|
|
var r = this;
|
|
return this.on(e, (function n() {
|
|
for (var i = arguments.length, a = new Array(i), s = 0; s < i; s++) a[s] = arguments[s];
|
|
t.apply(r, a), setTimeout((function () {
|
|
r.un(e, n)
|
|
}), 0)
|
|
}))
|
|
}
|
|
}, {
|
|
key: "setDisabledEventEmissions", value: function (e) {
|
|
this._disabledEventEmissions = e
|
|
}
|
|
}, {
|
|
key: "_isDisabledEventEmission", value: function (e) {
|
|
return this._disabledEventEmissions && this._disabledEventEmissions.includes(e)
|
|
}
|
|
}, {
|
|
key: "fireEvent", value: function (e) {
|
|
for (var t = arguments.length, r = new Array(t > 1 ? t - 1 : 0), n = 1; n < t; n++) r[n - 1] = arguments[n];
|
|
if (this.handlers && !this._isDisabledEventEmission(e)) {
|
|
var i = this.handlers[e];
|
|
i && i.forEach((function (e) {
|
|
e.apply(void 0, r)
|
|
}))
|
|
}
|
|
}
|
|
}]) && r(t.prototype, n), i && r(t, i), e
|
|
}();
|
|
t.default = n, e.exports = t.default
|
|
}, 713: (e, t) => {
|
|
"use strict";
|
|
Object.defineProperty(t, "__esModule", {value: !0}), t.default = function e(t, r) {
|
|
return t[i] ? t : new Proxy(t, {
|
|
get: function (t, a, s) {
|
|
if (a === i) return !0;
|
|
if ("domElement" === a) return t;
|
|
if ("style" === a) return e(t.style, r);
|
|
if ("canvas" === a) return e(t.canvas, r);
|
|
if ("getBoundingClientRect" === a) return function () {
|
|
return e(t.getBoundingClientRect.apply(t, arguments), r)
|
|
};
|
|
if ("getContext" === a) return function () {
|
|
return e(t.getContext.apply(t, arguments), r)
|
|
};
|
|
var o = t[n(a, r)];
|
|
return "function" == typeof o ? o.bind(t) : o
|
|
}, set: function (e, t, i) {
|
|
return e[n(t, r)] = i, !0
|
|
}
|
|
})
|
|
};
|
|
var r = {
|
|
width: "height",
|
|
height: "width",
|
|
overflowX: "overflowY",
|
|
overflowY: "overflowX",
|
|
clientWidth: "clientHeight",
|
|
clientHeight: "clientWidth",
|
|
clientX: "clientY",
|
|
clientY: "clientX",
|
|
scrollWidth: "scrollHeight",
|
|
scrollLeft: "scrollTop",
|
|
offsetLeft: "offsetTop",
|
|
offsetTop: "offsetLeft",
|
|
offsetHeight: "offsetWidth",
|
|
offsetWidth: "offsetHeight",
|
|
left: "top",
|
|
right: "bottom",
|
|
top: "left",
|
|
bottom: "right",
|
|
borderRightStyle: "borderBottomStyle",
|
|
borderRightWidth: "borderBottomWidth",
|
|
borderRightColor: "borderBottomColor"
|
|
};
|
|
|
|
function n(e, t) {
|
|
return Object.prototype.hasOwnProperty.call(r, e) && t ? r[e] : e
|
|
}
|
|
|
|
var i = Symbol("isProxy");
|
|
e.exports = t.default
|
|
}, 529: (e, t) => {
|
|
"use strict";
|
|
|
|
function r(e) {
|
|
e.stopPropagation(), document.body.removeEventListener("click", r, !0)
|
|
}
|
|
|
|
Object.defineProperty(t, "__esModule", {value: !0}), t.default = function (e) {
|
|
document.body.addEventListener("click", r, !0)
|
|
}, e.exports = t.default
|
|
}, 779: (e, t) => {
|
|
"use strict";
|
|
Object.defineProperty(t, "__esModule", {value: !0}), t.default = void 0;
|
|
var r = (window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (e, t) {
|
|
return setTimeout(e, 1e3 / 60)
|
|
}).bind(window);
|
|
t.default = r, e.exports = t.default
|
|
}, 138: (e, t) => {
|
|
"use strict";
|
|
Object.defineProperty(t, "__esModule", {value: !0}), t.default = function (e, t) {
|
|
return Object.keys(t).forEach((function (r) {
|
|
e.style[r] !== t[r] && (e.style[r] = t[r])
|
|
})), e
|
|
}, e.exports = t.default
|
|
}, 631: (e, t, r) => {
|
|
"use strict";
|
|
|
|
function n(e) {
|
|
return (n = "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
|
|
})(e)
|
|
}
|
|
|
|
Object.defineProperty(t, "__esModule", {value: !0}), t.default = void 0;
|
|
var i = function (e, t) {
|
|
if (!t && e && e.__esModule) return e;
|
|
if (null === e || "object" !== n(e) && "function" != typeof e) return {default: e};
|
|
var r = f(t);
|
|
if (r && r.has(e)) return r.get(e);
|
|
var i = {}, a = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
for (var s in e) if ("default" !== s && Object.prototype.hasOwnProperty.call(e, s)) {
|
|
var o = a ? Object.getOwnPropertyDescriptor(e, s) : null;
|
|
o && (o.get || o.set) ? Object.defineProperty(i, s, o) : i[s] = e[s]
|
|
}
|
|
return i.default = e, r && r.set(e, i), i
|
|
}(r(241)), a = c(r(646)), s = c(r(379)), o = c(r(743)), u = c(r(227)), l = c(r(328));
|
|
|
|
function c(e) {
|
|
return e && e.__esModule ? e : {default: e}
|
|
}
|
|
|
|
function f(e) {
|
|
if ("function" != typeof WeakMap) return null;
|
|
var t = new WeakMap, r = new WeakMap;
|
|
return (f = function (e) {
|
|
return e ? r : t
|
|
})(e)
|
|
}
|
|
|
|
function h(e, t) {
|
|
return (h = Object.setPrototypeOf || function (e, t) {
|
|
return e.__proto__ = t, e
|
|
})(e, t)
|
|
}
|
|
|
|
function d(e) {
|
|
var t = function () {
|
|
if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
|
|
if (Reflect.construct.sham) return !1;
|
|
if ("function" == typeof Proxy) return !0;
|
|
try {
|
|
return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
|
|
}))), !0
|
|
} catch (e) {
|
|
return !1
|
|
}
|
|
}();
|
|
return function () {
|
|
var r, n = y(e);
|
|
if (t) {
|
|
var i = y(this).constructor;
|
|
r = Reflect.construct(n, arguments, i)
|
|
} else r = n.apply(this, arguments);
|
|
return p(this, r)
|
|
}
|
|
}
|
|
|
|
function p(e, t) {
|
|
return !t || "object" !== n(t) && "function" != typeof t ? v(e) : t
|
|
}
|
|
|
|
function v(e) {
|
|
if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
return e
|
|
}
|
|
|
|
function y(e) {
|
|
return (y = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
|
|
return e.__proto__ || Object.getPrototypeOf(e)
|
|
})(e)
|
|
}
|
|
|
|
function m(e, t) {
|
|
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
|
|
}
|
|
|
|
function b(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)
|
|
}
|
|
}
|
|
|
|
function g(e, t, r) {
|
|
return t && b(e.prototype, t), r && b(e, r), e
|
|
}
|
|
|
|
var k = function (e) {
|
|
!function (e, t) {
|
|
if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
|
|
e.prototype = Object.create(t && t.prototype, {
|
|
constructor: {
|
|
value: e,
|
|
writable: !0,
|
|
configurable: !0
|
|
}
|
|
}), t && h(e, t)
|
|
}(r, e);
|
|
var t = d(r);
|
|
|
|
function r(e) {
|
|
var n;
|
|
if (m(this, r), (n = t.call(this)).defaultParams = {
|
|
audioContext: null,
|
|
audioScriptProcessor: null,
|
|
audioRate: 1,
|
|
autoCenter: !0,
|
|
autoCenterRate: 5,
|
|
autoCenterImmediately: !1,
|
|
backend: "WebAudio",
|
|
backgroundColor: null,
|
|
barHeight: 1,
|
|
barRadius: 0,
|
|
barGap: null,
|
|
barMinHeight: null,
|
|
container: null,
|
|
cursorColor: "#333",
|
|
cursorWidth: 1,
|
|
dragSelection: !0,
|
|
drawingContextAttributes: {desynchronized: !1},
|
|
duration: null,
|
|
fillParent: !0,
|
|
forceDecode: !1,
|
|
height: 128,
|
|
hideScrollbar: !1,
|
|
interact: !0,
|
|
loopSelection: !0,
|
|
maxCanvasWidth: 4e3,
|
|
mediaContainer: null,
|
|
mediaControls: !1,
|
|
mediaType: "audio",
|
|
minPxPerSec: 20,
|
|
normalize: !1,
|
|
partialRender: !1,
|
|
pixelRatio: window.devicePixelRatio || screen.deviceXDPI / screen.logicalXDPI,
|
|
plugins: [],
|
|
progressColor: "#555",
|
|
removeMediaElementOnDestroy: !0,
|
|
renderer: a.default,
|
|
responsive: !1,
|
|
rtl: !1,
|
|
scrollParent: !1,
|
|
skipLength: 2,
|
|
splitChannels: !1,
|
|
splitChannelsOptions: {
|
|
overlay: !1,
|
|
channelColors: {},
|
|
filterChannels: [],
|
|
relativeNormalization: !1
|
|
},
|
|
vertical: !1,
|
|
waveColor: "#999",
|
|
xhr: {}
|
|
}, n.backends = {
|
|
MediaElement: o.default,
|
|
WebAudio: s.default,
|
|
MediaElementWebAudio: l.default
|
|
}, n.util = i, n.params = Object.assign({}, n.defaultParams, e), n.params.splitChannelsOptions = Object.assign({}, n.defaultParams.splitChannelsOptions, e.splitChannelsOptions), n.container = "string" == typeof e.container ? document.querySelector(n.params.container) : n.params.container, !n.container) throw new Error("Container element not found");
|
|
if (null == n.params.mediaContainer ? n.mediaContainer = n.container : "string" == typeof n.params.mediaContainer ? n.mediaContainer = document.querySelector(n.params.mediaContainer) : n.mediaContainer = n.params.mediaContainer, !n.mediaContainer) throw new Error("Media Container element not found");
|
|
if (n.params.maxCanvasWidth <= 1) throw new Error("maxCanvasWidth must be greater than 1");
|
|
if (n.params.maxCanvasWidth % 2 == 1) throw new Error("maxCanvasWidth must be an even number");
|
|
if (!0 === n.params.rtl && (!0 === n.params.vertical ? i.style(n.container, {transform: "rotateX(180deg)"}) : i.style(n.container, {transform: "rotateY(180deg)"})), n.params.backgroundColor && n.setBackgroundColor(n.params.backgroundColor), n.savedVolume = 0, n.isMuted = !1, n.tmpEvents = [], n.currentRequest = null, n.arraybuffer = null, n.drawer = null, n.backend = null, n.peakCache = null, "function" != typeof n.params.renderer) throw new Error("Renderer parameter is invalid");
|
|
n.Drawer = n.params.renderer, "AudioElement" == n.params.backend && (n.params.backend = "MediaElement"), "WebAudio" != n.params.backend && "MediaElementWebAudio" !== n.params.backend || s.default.prototype.supportsWebAudio.call(null) || (n.params.backend = "MediaElement"), n.Backend = n.backends[n.params.backend], n.initialisedPluginList = {}, n.isDestroyed = !1, n.isReady = !1;
|
|
var u = 0;
|
|
return n._onResize = i.debounce((function () {
|
|
u == n.drawer.wrapper.clientWidth || n.params.scrollParent || (u = n.drawer.wrapper.clientWidth, n.drawer.fireEvent("redraw"))
|
|
}), "number" == typeof n.params.responsive ? n.params.responsive : 100), p(n, v(n))
|
|
}
|
|
|
|
return g(r, [{
|
|
key: "init", value: function () {
|
|
return this.registerPlugins(this.params.plugins), this.createDrawer(), this.createBackend(), this.createPeakCache(), this
|
|
}
|
|
}, {
|
|
key: "registerPlugins", value: function (e) {
|
|
var t = this;
|
|
return e.forEach((function (e) {
|
|
return t.addPlugin(e)
|
|
})), e.forEach((function (e) {
|
|
e.deferInit || t.initPlugin(e.name)
|
|
})), this.fireEvent("plugins-registered", e), this
|
|
}
|
|
}, {
|
|
key: "getActivePlugins", value: function () {
|
|
return this.initialisedPluginList
|
|
}
|
|
}, {
|
|
key: "addPlugin", value: function (e) {
|
|
var t = this;
|
|
if (!e.name) throw new Error("Plugin does not have a name!");
|
|
if (!e.instance) throw new Error("Plugin ".concat(e.name, " does not have an instance property!"));
|
|
e.staticProps && Object.keys(e.staticProps).forEach((function (r) {
|
|
t[r] = e.staticProps[r]
|
|
}));
|
|
var r = e.instance;
|
|
return Object.getOwnPropertyNames(i.Observer.prototype).forEach((function (e) {
|
|
r.prototype[e] = i.Observer.prototype[e]
|
|
})), this[e.name] = new r(e.params || {}, this), this.fireEvent("plugin-added", e.name), this
|
|
}
|
|
}, {
|
|
key: "initPlugin", value: function (e) {
|
|
if (!this[e]) throw new Error("Plugin ".concat(e, " has not been added yet!"));
|
|
return this.initialisedPluginList[e] && this.destroyPlugin(e), this[e].init(), this.initialisedPluginList[e] = !0, this.fireEvent("plugin-initialised", e), this
|
|
}
|
|
}, {
|
|
key: "destroyPlugin", value: function (e) {
|
|
if (!this[e]) throw new Error("Plugin ".concat(e, " has not been added yet and cannot be destroyed!"));
|
|
if (!this.initialisedPluginList[e]) throw new Error("Plugin ".concat(e, " is not active and cannot be destroyed!"));
|
|
if ("function" != typeof this[e].destroy) throw new Error("Plugin ".concat(e, " does not have a destroy function!"));
|
|
return this[e].destroy(), delete this.initialisedPluginList[e], this.fireEvent("plugin-destroyed", e), this
|
|
}
|
|
}, {
|
|
key: "destroyAllPlugins", value: function () {
|
|
var e = this;
|
|
Object.keys(this.initialisedPluginList).forEach((function (t) {
|
|
return e.destroyPlugin(t)
|
|
}))
|
|
}
|
|
}, {
|
|
key: "createDrawer", value: function () {
|
|
var e = this;
|
|
this.drawer = new this.Drawer(this.container, this.params), this.drawer.init(), this.fireEvent("drawer-created", this.drawer), !1 !== this.params.responsive && (window.addEventListener("resize", this._onResize, !0), window.addEventListener("orientationchange", this._onResize, !0)), this.drawer.on("redraw", (function () {
|
|
e.drawBuffer(), e.drawer.progress(e.backend.getPlayedPercents())
|
|
})), this.drawer.on("click", (function (t, r) {
|
|
setTimeout((function () {
|
|
return e.seekTo(r)
|
|
}), 0)
|
|
})), this.drawer.on("scroll", (function (t) {
|
|
e.params.partialRender && e.drawBuffer(), e.fireEvent("scroll", t)
|
|
}))
|
|
}
|
|
}, {
|
|
key: "createBackend", value: function () {
|
|
var e = this;
|
|
this.backend && this.backend.destroy(), this.backend = new this.Backend(this.params), this.backend.init(), this.fireEvent("backend-created", this.backend), this.backend.on("finish", (function () {
|
|
e.drawer.progress(e.backend.getPlayedPercents()), e.fireEvent("finish")
|
|
})), this.backend.on("play", (function () {
|
|
return e.fireEvent("play")
|
|
})), this.backend.on("pause", (function () {
|
|
return e.fireEvent("pause")
|
|
})), this.backend.on("audioprocess", (function (t) {
|
|
e.drawer.progress(e.backend.getPlayedPercents()), e.fireEvent("audioprocess", t)
|
|
})), "MediaElement" !== this.params.backend && "MediaElementWebAudio" !== this.params.backend || (this.backend.on("seek", (function () {
|
|
e.drawer.progress(e.backend.getPlayedPercents())
|
|
})), this.backend.on("volume", (function () {
|
|
var t = e.getVolume();
|
|
e.fireEvent("volume", t), e.backend.isMuted !== e.isMuted && (e.isMuted = e.backend.isMuted, e.fireEvent("mute", e.isMuted))
|
|
})))
|
|
}
|
|
}, {
|
|
key: "createPeakCache", value: function () {
|
|
this.params.partialRender && (this.peakCache = new u.default)
|
|
}
|
|
}, {
|
|
key: "getDuration", value: function () {
|
|
return this.backend.getDuration()
|
|
}
|
|
}, {
|
|
key: "getCurrentTime", value: function () {
|
|
return this.backend.getCurrentTime()
|
|
}
|
|
}, {
|
|
key: "setCurrentTime", value: function (e) {
|
|
e >= this.getDuration() ? this.seekTo(1) : this.seekTo(e / this.getDuration())
|
|
}
|
|
}, {
|
|
key: "play", value: function (e, t) {
|
|
var r = this;
|
|
return this.fireEvent("interaction", (function () {
|
|
return r.play(e, t)
|
|
})), this.backend.play(e, t)
|
|
}
|
|
}, {
|
|
key: "setPlayEnd", value: function (e) {
|
|
this.backend.setPlayEnd(e)
|
|
}
|
|
}, {
|
|
key: "pause", value: function () {
|
|
if (!this.backend.isPaused()) return this.backend.pause()
|
|
}
|
|
}, {
|
|
key: "playPause", value: function () {
|
|
return this.backend.isPaused() ? this.play() : this.pause()
|
|
}
|
|
}, {
|
|
key: "isPlaying", value: function () {
|
|
return !this.backend.isPaused()
|
|
}
|
|
}, {
|
|
key: "skipBackward", value: function (e) {
|
|
this.skip(-e || -this.params.skipLength)
|
|
}
|
|
}, {
|
|
key: "skipForward", value: function (e) {
|
|
this.skip(e || this.params.skipLength)
|
|
}
|
|
}, {
|
|
key: "skip", value: function (e) {
|
|
var t = this.getDuration() || 1, r = this.getCurrentTime() || 0;
|
|
r = Math.max(0, Math.min(t, r + (e || 0))), this.seekAndCenter(r / t)
|
|
}
|
|
}, {
|
|
key: "seekAndCenter", value: function (e) {
|
|
this.seekTo(e), this.drawer.recenter(e)
|
|
}
|
|
}, {
|
|
key: "seekTo", value: function (e) {
|
|
var t = this;
|
|
if ("number" != typeof e || !isFinite(e) || e < 0 || e > 1) throw new Error("Error calling wavesurfer.seekTo, parameter must be a number between 0 and 1!");
|
|
this.fireEvent("interaction", (function () {
|
|
return t.seekTo(e)
|
|
}));
|
|
var r = "WebAudio" === this.params.backend, n = this.backend.isPaused();
|
|
r && !n && this.backend.pause();
|
|
var i = this.params.scrollParent;
|
|
this.params.scrollParent = !1, this.backend.seekTo(e * this.getDuration()), this.drawer.progress(e), r && !n && this.backend.play(), this.params.scrollParent = i, this.fireEvent("seek", e)
|
|
}
|
|
}, {
|
|
key: "stop", value: function () {
|
|
this.pause(), this.seekTo(0), this.drawer.progress(0)
|
|
}
|
|
}, {
|
|
key: "setSinkId", value: function (e) {
|
|
return this.backend.setSinkId(e)
|
|
}
|
|
}, {
|
|
key: "setVolume", value: function (e) {
|
|
this.backend.setVolume(e), this.fireEvent("volume", e)
|
|
}
|
|
}, {
|
|
key: "getVolume", value: function () {
|
|
return this.backend.getVolume()
|
|
}
|
|
}, {
|
|
key: "setPlaybackRate", value: function (e) {
|
|
this.backend.setPlaybackRate(e)
|
|
}
|
|
}, {
|
|
key: "getPlaybackRate", value: function () {
|
|
return this.backend.getPlaybackRate()
|
|
}
|
|
}, {
|
|
key: "toggleMute", value: function () {
|
|
this.setMute(!this.isMuted)
|
|
}
|
|
}, {
|
|
key: "setMute", value: function (e) {
|
|
e !== this.isMuted ? (this.backend.setMute ? (this.backend.setMute(e), this.isMuted = e) : e ? (this.savedVolume = this.backend.getVolume(), this.backend.setVolume(0), this.isMuted = !0, this.fireEvent("volume", 0)) : (this.backend.setVolume(this.savedVolume), this.isMuted = !1, this.fireEvent("volume", this.savedVolume)), this.fireEvent("mute", this.isMuted)) : this.fireEvent("mute", this.isMuted)
|
|
}
|
|
}, {
|
|
key: "getMute", value: function () {
|
|
return this.isMuted
|
|
}
|
|
}, {
|
|
key: "getFilters", value: function () {
|
|
return this.backend.filters || []
|
|
}
|
|
}, {
|
|
key: "toggleScroll", value: function () {
|
|
this.params.scrollParent = !this.params.scrollParent, this.drawBuffer()
|
|
}
|
|
}, {
|
|
key: "toggleInteraction", value: function () {
|
|
this.params.interact = !this.params.interact
|
|
}
|
|
}, {
|
|
key: "getWaveColor", value: function () {
|
|
return this.params.waveColor
|
|
}
|
|
}, {
|
|
key: "setWaveColor", value: function (e) {
|
|
this.params.waveColor = e, this.drawBuffer()
|
|
}
|
|
}, {
|
|
key: "getProgressColor", value: function () {
|
|
return this.params.progressColor
|
|
}
|
|
}, {
|
|
key: "setProgressColor", value: function (e) {
|
|
this.params.progressColor = e, this.drawBuffer()
|
|
}
|
|
}, {
|
|
key: "getBackgroundColor", value: function () {
|
|
return this.params.backgroundColor
|
|
}
|
|
}, {
|
|
key: "setBackgroundColor", value: function (e) {
|
|
this.params.backgroundColor = e, i.style(this.container, {background: this.params.backgroundColor})
|
|
}
|
|
}, {
|
|
key: "getCursorColor", value: function () {
|
|
return this.params.cursorColor
|
|
}
|
|
}, {
|
|
key: "setCursorColor", value: function (e) {
|
|
this.params.cursorColor = e, this.drawer.updateCursor()
|
|
}
|
|
}, {
|
|
key: "getHeight", value: function () {
|
|
return this.params.height
|
|
}
|
|
}, {
|
|
key: "setHeight", value: function (e) {
|
|
this.params.height = e, this.drawer.setHeight(e * this.params.pixelRatio), this.drawBuffer()
|
|
}
|
|
}, {
|
|
key: "setFilteredChannels", value: function (e) {
|
|
this.params.splitChannelsOptions.filterChannels = e, this.drawBuffer()
|
|
}
|
|
}, {
|
|
key: "drawBuffer", value: function () {
|
|
var e, t = Math.round(this.getDuration() * this.params.minPxPerSec * this.params.pixelRatio),
|
|
r = this.drawer.getWidth(), n = t, i = 0, a = Math.max(i + r, n);
|
|
if (this.params.fillParent && (!this.params.scrollParent || t < r) && (i = 0, a = n = r), this.params.partialRender) {
|
|
var s, o = this.peakCache.addRangeToPeakCache(n, i, a);
|
|
for (s = 0; s < o.length; s++) e = this.backend.getPeaks(n, o[s][0], o[s][1]), this.drawer.drawPeaks(e, n, o[s][0], o[s][1])
|
|
} else e = this.backend.getPeaks(n, i, a), this.drawer.drawPeaks(e, n, i, a);
|
|
this.fireEvent("redraw", e, n)
|
|
}
|
|
}, {
|
|
key: "zoom", value: function (e) {
|
|
e ? (this.params.minPxPerSec = e, this.params.scrollParent = !0) : (this.params.minPxPerSec = this.defaultParams.minPxPerSec, this.params.scrollParent = !1), this.drawBuffer(), this.drawer.progress(this.backend.getPlayedPercents()), this.drawer.recenter(this.getCurrentTime() / this.getDuration()), this.fireEvent("zoom", e)
|
|
}
|
|
}, {
|
|
key: "loadArrayBuffer", value: function (e) {
|
|
var t = this;
|
|
this.decodeArrayBuffer(e, (function (e) {
|
|
t.isDestroyed || t.loadDecodedBuffer(e)
|
|
}))
|
|
}
|
|
}, {
|
|
key: "loadDecodedBuffer", value: function (e) {
|
|
this.backend.load(e), this.drawBuffer(), this.isReady = !0, this.fireEvent("ready")
|
|
}
|
|
}, {
|
|
key: "loadBlob", value: function (e) {
|
|
var t = this, r = new FileReader;
|
|
r.addEventListener("progress", (function (e) {
|
|
return t.onProgress(e)
|
|
})), r.addEventListener("load", (function (e) {
|
|
return t.loadArrayBuffer(e.target.result)
|
|
})), r.addEventListener("error", (function () {
|
|
return t.fireEvent("error", "Error reading file")
|
|
})), r.readAsArrayBuffer(e), this.empty()
|
|
}
|
|
}, {
|
|
key: "load", value: function (e, t, r, n) {
|
|
if (!e) throw new Error("url parameter cannot be empty");
|
|
if (this.empty(), r) {
|
|
var i = {
|
|
"Preload is not 'auto', 'none' or 'metadata'": -1 === ["auto", "metadata", "none"].indexOf(r),
|
|
"Peaks are not provided": !t,
|
|
"Backend is not of type 'MediaElement' or 'MediaElementWebAudio'": -1 === ["MediaElement", "MediaElementWebAudio"].indexOf(this.params.backend),
|
|
"Url is not of type string": "string" != typeof e
|
|
}, a = Object.keys(i).filter((function (e) {
|
|
return i[e]
|
|
}));
|
|
a.length && (console.warn("Preload parameter of wavesurfer.load will be ignored because:\n\t- " + a.join("\n\t- ")), r = null)
|
|
}
|
|
switch ("WebAudio" === this.params.backend && e instanceof HTMLMediaElement && (e = e.src), this.params.backend) {
|
|
case"WebAudio":
|
|
return this.loadBuffer(e, t, n);
|
|
case"MediaElement":
|
|
case"MediaElementWebAudio":
|
|
return this.loadMediaElement(e, t, r, n)
|
|
}
|
|
}
|
|
}, {
|
|
key: "loadBuffer", value: function (e, t, r) {
|
|
var n = this, i = function (t) {
|
|
return t && n.tmpEvents.push(n.once("ready", t)), n.getArrayBuffer(e, (function (e) {
|
|
return n.loadArrayBuffer(e)
|
|
}))
|
|
};
|
|
if (!t) return i();
|
|
this.backend.setPeaks(t, r), this.drawBuffer(), this.fireEvent("waveform-ready"), this.tmpEvents.push(this.once("interaction", i))
|
|
}
|
|
}, {
|
|
key: "loadMediaElement", value: function (e, t, r, n) {
|
|
var i = this, a = e;
|
|
if ("string" == typeof e) this.backend.load(a, this.mediaContainer, t, r); else {
|
|
var s = e;
|
|
this.backend.loadElt(s, t), a = s.src
|
|
}
|
|
this.tmpEvents.push(this.backend.once("canplay", (function () {
|
|
i.backend.destroyed || (i.drawBuffer(), i.isReady = !0, i.fireEvent("ready"))
|
|
})), this.backend.once("error", (function (e) {
|
|
return i.fireEvent("error", e)
|
|
}))), t && (this.backend.setPeaks(t, n), this.drawBuffer(), this.fireEvent("waveform-ready")), t && !this.params.forceDecode || !this.backend.supportsWebAudio() || this.getArrayBuffer(a, (function (e) {
|
|
i.decodeArrayBuffer(e, (function (e) {
|
|
i.backend.buffer = e, i.backend.setPeaks(null), i.drawBuffer(), i.fireEvent("waveform-ready")
|
|
}))
|
|
}))
|
|
}
|
|
}, {
|
|
key: "decodeArrayBuffer", value: function (e, t) {
|
|
var r = this;
|
|
this.arraybuffer = e, this.backend.decodeArrayBuffer(e, (function (n) {
|
|
r.isDestroyed || r.arraybuffer != e || (t(n), r.arraybuffer = null)
|
|
}), (function () {
|
|
return r.fireEvent("error", "Error decoding audiobuffer")
|
|
}))
|
|
}
|
|
}, {
|
|
key: "getArrayBuffer", value: function (e, t) {
|
|
var r = this, n = Object.assign({url: e, responseType: "arraybuffer"}, this.params.xhr),
|
|
a = i.fetchFile(n);
|
|
return this.currentRequest = a, this.tmpEvents.push(a.on("progress", (function (e) {
|
|
r.onProgress(e)
|
|
})), a.on("success", (function (e) {
|
|
t(e), r.currentRequest = null
|
|
})), a.on("error", (function (e) {
|
|
r.fireEvent("error", e), r.currentRequest = null
|
|
}))), a
|
|
}
|
|
}, {
|
|
key: "onProgress", value: function (e) {
|
|
var t;
|
|
t = e.lengthComputable ? e.loaded / e.total : e.loaded / (e.loaded + 1e6), this.fireEvent("loading", Math.round(100 * t), e.target)
|
|
}
|
|
}, {
|
|
key: "exportPCM", value: function (e, t, r, n, i) {
|
|
e = e || 1024, n = n || 0, t = t || 1e4, r = r || !1;
|
|
var a = this.backend.getPeaks(e, n, i), s = [].map.call(a, (function (e) {
|
|
return Math.round(e * t) / t
|
|
}));
|
|
return new Promise((function (e, t) {
|
|
if (!r) {
|
|
var n = new Blob([JSON.stringify(s)], {type: "application/json;charset=utf-8"}),
|
|
i = URL.createObjectURL(n);
|
|
window.open(i), URL.revokeObjectURL(i)
|
|
}
|
|
e(s)
|
|
}))
|
|
}
|
|
}, {
|
|
key: "exportImage", value: function (e, t, r) {
|
|
return e || (e = "image/png"), t || (t = 1), r || (r = "dataURL"), this.drawer.getImage(e, t, r)
|
|
}
|
|
}, {
|
|
key: "cancelAjax", value: function () {
|
|
this.currentRequest && this.currentRequest.controller && (this.currentRequest._reader && this.currentRequest._reader.cancel().catch((function (e) {
|
|
})), this.currentRequest.controller.abort(), this.currentRequest = null)
|
|
}
|
|
}, {
|
|
key: "clearTmpEvents", value: function () {
|
|
this.tmpEvents.forEach((function (e) {
|
|
return e.un()
|
|
}))
|
|
}
|
|
}, {
|
|
key: "empty", value: function () {
|
|
this.backend.isPaused() || (this.stop(), this.backend.disconnectSource()), this.isReady = !1, this.cancelAjax(), this.clearTmpEvents(), this.drawer.progress(0), this.drawer.setWidth(0), this.drawer.drawPeaks({length: this.drawer.getWidth()}, 0)
|
|
}
|
|
}, {
|
|
key: "destroy", value: function () {
|
|
this.destroyAllPlugins(), this.fireEvent("destroy"), this.cancelAjax(), this.clearTmpEvents(), this.unAll(), !1 !== this.params.responsive && (window.removeEventListener("resize", this._onResize, !0), window.removeEventListener("orientationchange", this._onResize, !0)), this.backend && (this.backend.destroy(), this.backend = null), this.drawer && this.drawer.destroy(), this.isDestroyed = !0, this.isReady = !1, this.arraybuffer = null
|
|
}
|
|
}], [{
|
|
key: "create", value: function (e) {
|
|
return new r(e).init()
|
|
}
|
|
}]), r
|
|
}(i.Observer);
|
|
t.default = k, k.VERSION = "5.1.0", k.util = i, e.exports = t.default
|
|
}, 379: (e, t, r) => {
|
|
"use strict";
|
|
|
|
function n(e) {
|
|
return (n = "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
|
|
})(e)
|
|
}
|
|
|
|
Object.defineProperty(t, "__esModule", {value: !0}), t.default = void 0;
|
|
var i = function (e, t) {
|
|
if (!t && e && e.__esModule) return e;
|
|
if (null === e || "object" !== n(e) && "function" != typeof e) return {default: e};
|
|
var r = a(t);
|
|
if (r && r.has(e)) return r.get(e);
|
|
var i = {}, s = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
for (var o in e) if ("default" !== o && Object.prototype.hasOwnProperty.call(e, o)) {
|
|
var u = s ? Object.getOwnPropertyDescriptor(e, o) : null;
|
|
u && (u.get || u.set) ? Object.defineProperty(i, o, u) : i[o] = e[o]
|
|
}
|
|
return i.default = e, r && r.set(e, i), i
|
|
}(r(241));
|
|
|
|
function a(e) {
|
|
if ("function" != typeof WeakMap) return null;
|
|
var t = new WeakMap, r = new WeakMap;
|
|
return (a = function (e) {
|
|
return e ? r : t
|
|
})(e)
|
|
}
|
|
|
|
function s(e, t, r) {
|
|
return t in e ? Object.defineProperty(e, t, {
|
|
value: r,
|
|
enumerable: !0,
|
|
configurable: !0,
|
|
writable: !0
|
|
}) : e[t] = r, e
|
|
}
|
|
|
|
function o(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)
|
|
}
|
|
}
|
|
|
|
function u(e, t) {
|
|
return (u = Object.setPrototypeOf || function (e, t) {
|
|
return e.__proto__ = t, e
|
|
})(e, t)
|
|
}
|
|
|
|
function l(e) {
|
|
var t = function () {
|
|
if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
|
|
if (Reflect.construct.sham) return !1;
|
|
if ("function" == typeof Proxy) return !0;
|
|
try {
|
|
return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], (function () {
|
|
}))), !0
|
|
} catch (e) {
|
|
return !1
|
|
}
|
|
}();
|
|
return function () {
|
|
var r, n = f(e);
|
|
if (t) {
|
|
var i = f(this).constructor;
|
|
r = Reflect.construct(n, arguments, i)
|
|
} else r = n.apply(this, arguments);
|
|
return c(this, r)
|
|
}
|
|
}
|
|
|
|
function c(e, t) {
|
|
return !t || "object" !== n(t) && "function" != typeof t ? function (e) {
|
|
if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
return e
|
|
}(e) : t
|
|
}
|
|
|
|
function f(e) {
|
|
return (f = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
|
|
return e.__proto__ || Object.getPrototypeOf(e)
|
|
})(e)
|
|
}
|
|
|
|
var h = "playing", d = "paused", p = "finished", v = function (e) {
|
|
!function (e, t) {
|
|
if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
|
|
e.prototype = Object.create(t && t.prototype, {
|
|
constructor: {
|
|
value: e,
|
|
writable: !0,
|
|
configurable: !0
|
|
}
|
|
}), t && u(e, t)
|
|
}(a, e);
|
|
var t, r, n, i = l(a);
|
|
|
|
function a(e) {
|
|
var t, r, n;
|
|
return function (e, t) {
|
|
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
|
|
}(this, a), (n = i.call(this)).audioContext = null, n.offlineAudioContext = null, n.stateBehaviors = (s(t = {}, h, {
|
|
init: function () {
|
|
this.addOnAudioProcess()
|
|
}, getPlayedPercents: function () {
|
|
var e = this.getDuration();
|
|
return this.getCurrentTime() / e || 0
|
|
}, getCurrentTime: function () {
|
|
return this.startPosition + this.getPlayedTime()
|
|
}
|
|
}), s(t, d, {
|
|
init: function () {
|
|
this.removeOnAudioProcess()
|
|
}, getPlayedPercents: function () {
|
|
var e = this.getDuration();
|
|
return this.getCurrentTime() / e || 0
|
|
}, getCurrentTime: function () {
|
|
return this.startPosition
|
|
}
|
|
}), s(t, p, {
|
|
init: function () {
|
|
this.removeOnAudioProcess(), this.fireEvent("finish")
|
|
}, getPlayedPercents: function () {
|
|
return 1
|
|
}, getCurrentTime: function () {
|
|
return this.getDuration()
|
|
}
|
|
}), t), n.params = e, n.ac = e.audioContext || (n.supportsWebAudio() ? n.getAudioContext() : {}), n.lastPlay = n.ac.currentTime, n.startPosition = 0, n.scheduledPause = null, n.states = (s(r = {}, h, Object.create(n.stateBehaviors.playing)), s(r, d, Object.create(n.stateBehaviors.paused)), s(r, p, Object.create(n.stateBehaviors.finished)), r), n.buffer = null, n.filters = [], n.gainNode = null, n.mergedPeaks = null, n.offlineAc = null, n.peaks = null, n.playbackRate = 1, n.analyser = null, n.scriptNode = null, n.source = null, n.splitPeaks = [], n.state = null, n.explicitDuration = e.duration, n.destroyed = !1, n
|
|
}
|
|
|
|
return t = a, (r = [{
|
|
key: "supportsWebAudio", value: function () {
|
|
return !(!window.AudioContext && !window.webkitAudioContext)
|
|
}
|
|
}, {
|
|
key: "getAudioContext", value: function () {
|
|
return window.WaveSurferAudioContext || (window.WaveSurferAudioContext = new (window.AudioContext || window.webkitAudioContext)), window.WaveSurferAudioContext
|
|
}
|
|
}, {
|
|
key: "getOfflineAudioContext", value: function (e) {
|
|
return window.WaveSurferOfflineAudioContext || (window.WaveSurferOfflineAudioContext = new (window.OfflineAudioContext || window.webkitOfflineAudioContext)(1, 2, e)), window.WaveSurferOfflineAudioContext
|
|
}
|
|
}, {
|
|
key: "init", value: function () {
|
|
this.createVolumeNode(), this.createScriptNode(), this.createAnalyserNode(), this.setState(d), this.setPlaybackRate(this.params.audioRate), this.setLength(0)
|
|
}
|
|
}, {
|
|
key: "disconnectFilters", value: function () {
|
|
this.filters && (this.filters.forEach((function (e) {
|
|
e && e.disconnect()
|
|
})), this.filters = null, this.analyser.connect(this.gainNode))
|
|
}
|
|
}, {
|
|
key: "setState", value: function (e) {
|
|
this.state !== this.states[e] && (this.state = this.states[e], this.state.init.call(this))
|
|
}
|
|
}, {
|
|
key: "setFilter", value: function () {
|
|
for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) t[r] = arguments[r];
|
|
this.setFilters(t)
|
|
}
|
|
}, {
|
|
key: "setFilters", value: function (e) {
|
|
this.disconnectFilters(), e && e.length && (this.filters = e, this.analyser.disconnect(), e.reduce((function (e, t) {
|
|
return e.connect(t), t
|
|
}), this.analyser).connect(this.gainNode))
|
|
}
|
|
}, {
|
|
key: "createScriptNode", value: function () {
|
|
this.params.audioScriptProcessor ? this.scriptNode = this.params.audioScriptProcessor : this.ac.createScriptProcessor ? this.scriptNode = this.ac.createScriptProcessor(a.scriptBufferSize) : this.scriptNode = this.ac.createJavaScriptNode(a.scriptBufferSize), this.scriptNode.connect(this.ac.destination)
|
|
}
|
|
}, {
|
|
key: "addOnAudioProcess", value: function () {
|
|
var e = this;
|
|
this.scriptNode.onaudioprocess = function () {
|
|
var t = e.getCurrentTime();
|
|
t >= e.getDuration() ? (e.setState(p), e.fireEvent("pause")) : t >= e.scheduledPause ? e.pause() : e.state === e.states.playing && e.fireEvent("audioprocess", t)
|
|
}
|
|
}
|
|
}, {
|
|
key: "removeOnAudioProcess", value: function () {
|
|
this.scriptNode.onaudioprocess = null
|
|
}
|
|
}, {
|
|
key: "createAnalyserNode", value: function () {
|
|
this.analyser = this.ac.createAnalyser(), this.analyser.connect(this.gainNode)
|
|
}
|
|
}, {
|
|
key: "createVolumeNode", value: function () {
|
|
this.ac.createGain ? this.gainNode = this.ac.createGain() : this.gainNode = this.ac.createGainNode(), this.gainNode.connect(this.ac.destination)
|
|
}
|
|
}, {
|
|
key: "setSinkId", value: function (e) {
|
|
if (e) {
|
|
var t = new window.Audio;
|
|
if (!t.setSinkId) return Promise.reject(new Error("setSinkId is not supported in your browser"));
|
|
t.autoplay = !0;
|
|
var r = this.ac.createMediaStreamDestination();
|
|
return this.gainNode.disconnect(), this.gainNode.connect(r), t.srcObject = r.stream, t.setSinkId(e)
|
|
}
|
|
return Promise.reject(new Error("Invalid deviceId: " + e))
|
|
}
|
|
}, {
|
|
key: "setVolume", value: function (e) {
|
|
this.gainNode.gain.setValueAtTime(e, this.ac.currentTime)
|
|
}
|
|
}, {
|
|
key: "getVolume", value: function () {
|
|
return this.gainNode.gain.value
|
|
}
|
|
}, {
|
|
key: "decodeArrayBuffer", value: function (e, t, r) {
|
|
this.offlineAc || (this.offlineAc = this.getOfflineAudioContext(this.ac && this.ac.sampleRate ? this.ac.sampleRate : 44100)), "webkitAudioContext" in window ? this.offlineAc.decodeAudioData(e, (function (e) {
|
|
return t(e)
|
|
}), r) : this.offlineAc.decodeAudioData(e).then((function (e) {
|
|
return t(e)
|
|
})).catch((function (e) {
|
|
return r(e)
|
|
}))
|
|
}
|
|
}, {
|
|
key: "setPeaks", value: function (e, t) {
|
|
null != t && (this.explicitDuration = t), this.peaks = e
|
|
}
|
|
}, {
|
|
key: "setLength", value: function (e) {
|
|
if (!this.mergedPeaks || e != 2 * this.mergedPeaks.length - 1 + 2) {
|
|
this.splitPeaks = [], this.mergedPeaks = [];
|
|
var t, r = this.buffer ? this.buffer.numberOfChannels : 1;
|
|
for (t = 0; t < r; t++) this.splitPeaks[t] = [], this.splitPeaks[t][2 * (e - 1)] = 0, this.splitPeaks[t][2 * (e - 1) + 1] = 0;
|
|
this.mergedPeaks[2 * (e - 1)] = 0, this.mergedPeaks[2 * (e - 1) + 1] = 0
|
|
}
|
|
}
|
|
}, {
|
|
key: "getPeaks", value: function (e, t, r) {
|
|
if (this.peaks) return this.peaks;
|
|
if (!this.buffer) return [];
|
|
if (t = t || 0, r = r || e - 1, this.setLength(e), !this.buffer) return this.params.splitChannels ? this.splitPeaks : this.mergedPeaks;
|
|
if (!this.buffer.length) {
|
|
var n = this.createBuffer(1, 4096, this.sampleRate);
|
|
this.buffer = n.buffer
|
|
}
|
|
var i, a = this.buffer.length / e, s = ~~(a / 10) || 1, o = this.buffer.numberOfChannels;
|
|
for (i = 0; i < o; i++) {
|
|
var u = this.splitPeaks[i], l = this.buffer.getChannelData(i), c = void 0;
|
|
for (c = t; c <= r; c++) {
|
|
var f = ~~(c * a), h = ~~(f + a), d = l[f], p = d, v = void 0;
|
|
for (v = f; v < h; v += s) {
|
|
var y = l[v];
|
|
y > p && (p = y), y < d && (d = y)
|
|
}
|
|
u[2 * c] = p, u[2 * c + 1] = d, (0 == i || p > this.mergedPeaks[2 * c]) && (this.mergedPeaks[2 * c] = p), (0 == i || d < this.mergedPeaks[2 * c + 1]) && (this.mergedPeaks[2 * c + 1] = d)
|
|
}
|
|
}
|
|
return this.params.splitChannels ? this.splitPeaks : this.mergedPeaks
|
|
}
|
|
}, {
|
|
key: "getPlayedPercents", value: function () {
|
|
return this.state.getPlayedPercents.call(this)
|
|
}
|
|
}, {
|
|
key: "disconnectSource", value: function () {
|
|
this.source && this.source.disconnect()
|
|
}
|
|
}, {
|
|
key: "destroyWebAudio", value: function () {
|
|
this.disconnectFilters(), this.disconnectSource(), this.gainNode.disconnect(), this.scriptNode.disconnect(), this.analyser.disconnect(), this.params.closeAudioContext && ("function" == typeof this.ac.close && "closed" != this.ac.state && this.ac.close(), this.ac = null, this.params.audioContext ? this.params.audioContext = null : window.WaveSurferAudioContext = null, window.WaveSurferOfflineAudioContext = null)
|
|
}
|
|
}, {
|
|
key: "destroy", value: function () {
|
|
this.isPaused() || this.pause(), this.unAll(), this.buffer = null, this.destroyed = !0, this.destroyWebAudio()
|
|
}
|
|
}, {
|
|
key: "load", value: function (e) {
|
|
this.startPosition = 0, this.lastPlay = this.ac.currentTime, this.buffer = e, this.createSource()
|
|
}
|
|
}, {
|
|
key: "createSource", value: function () {
|
|
this.disconnectSource(), this.source = this.ac.createBufferSource(), this.source.start = this.source.start || this.source.noteGrainOn, this.source.stop = this.source.stop || this.source.noteOff, this.setPlaybackRate(this.playbackRate), this.source.buffer = this.buffer, this.source.connect(this.analyser)
|
|
}
|
|
}, {
|
|
key: "resumeAudioContext", value: function () {
|
|
"suspended" == this.ac.state && this.ac.resume && this.ac.resume()
|
|
}
|
|
}, {
|
|
key: "isPaused", value: function () {
|
|
return this.state !== this.states.playing
|
|
}
|
|
}, {
|
|
key: "getDuration", value: function () {
|
|
return this.explicitDuration ? this.explicitDuration : this.buffer ? this.buffer.duration : 0
|
|
}
|
|
}, {
|
|
key: "seekTo", value: function (e, t) {
|
|
if (this.buffer) return this.scheduledPause = null, null == e && (e = this.getCurrentTime()) >= this.getDuration() && (e = 0), null == t && (t = this.getDuration()), this.startPosition = e, this.lastPlay = this.ac.currentTime, this.state === this.states.finished && this.setState(d), {
|
|
start: e,
|
|
end: t
|
|
}
|
|
}
|
|
}, {
|
|
key: "getPlayedTime", value: function () {
|
|
return (this.ac.currentTime - this.lastPlay) * this.playbackRate
|
|
}
|
|
}, {
|
|
key: "play", value: function (e, t) {
|
|
if (this.buffer) {
|
|
this.createSource();
|
|
var r = this.seekTo(e, t);
|
|
e = r.start, t = r.end, this.scheduledPause = t, this.source.start(0, e), this.resumeAudioContext(), this.setState(h), this.fireEvent("play")
|
|
}
|
|
}
|
|
}, {
|
|
key: "pause", value: function () {
|
|
this.scheduledPause = null, this.startPosition += this.getPlayedTime(), this.source && this.source.stop(0), this.setState(d), this.fireEvent("pause")
|
|
}
|
|
}, {
|
|
key: "getCurrentTime", value: function () {
|
|
return this.state.getCurrentTime.call(this)
|
|
}
|
|
}, {
|
|
key: "getPlaybackRate", value: function () {
|
|
return this.playbackRate
|
|
}
|
|
}, {
|
|
key: "setPlaybackRate", value: function (e) {
|
|
this.playbackRate = e || 1, this.source && this.source.playbackRate.setValueAtTime(this.playbackRate, this.ac.currentTime)
|
|
}
|
|
}, {
|
|
key: "setPlayEnd", value: function (e) {
|
|
this.scheduledPause = e
|
|
}
|
|
}]) && o(t.prototype, r), n && o(t, n), a
|
|
}(i.Observer);
|
|
t.default = v, v.scriptBufferSize = 256, e.exports = t.default
|
|
}, 296: e => {
|
|
function t(e, t, r) {
|
|
var n, i, a, s, o;
|
|
|
|
function u() {
|
|
var l = Date.now() - s;
|
|
l < t && l >= 0 ? n = setTimeout(u, t - l) : (n = null, r || (o = e.apply(a, i), a = i = null))
|
|
}
|
|
|
|
null == t && (t = 100);
|
|
var l = function () {
|
|
a = this, i = arguments, s = Date.now();
|
|
var l = r && !n;
|
|
return n || (n = setTimeout(u, t)), l && (o = e.apply(a, i), a = i = null), o
|
|
};
|
|
return l.clear = function () {
|
|
n && (clearTimeout(n), n = null)
|
|
}, l.flush = function () {
|
|
n && (o = e.apply(a, i), a = i = null, clearTimeout(n), n = null)
|
|
}, l
|
|
}
|
|
|
|
t.debounce = t, e.exports = t
|
|
}
|
|
}, t = {}, function r(n) {
|
|
var i = t[n];
|
|
if (void 0 !== i) return i.exports;
|
|
var a = t[n] = {exports: {}};
|
|
return e[n](a, a.exports, r), a.exports
|
|
}(631);
|
|
var e, t
|
|
}));
|
|
//# sourceMappingURL=wavesurfer.min.js.map
|