/*! * 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