/*! * wavesurfer.js microphone plugin 5.1.0 (2021-06-20) * 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 = e.WaveSurfer || {}), (e.WaveSurfer.microphone = t())); })(this, function () { return (() => { "use strict"; var e = { 872: (e, t) => { function r(e, t) { for (var r = 0; r < t.length; r++) { var i = t[r]; (i.enumerable = i.enumerable || !1), (i.configurable = !0), "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i); } } Object.defineProperty(t, "__esModule", { value: !0 }), (t.default = void 0); var i = (function () { function e(t, r) { var i = this; !(function (e, t) { if (!(e instanceof t)) throw new TypeError( "Cannot call a class as a function" ); })(this, e), (this.params = t), (this.wavesurfer = r), (this.active = !1), (this.paused = !1), (this.browser = this.detectBrowser()), (this.reloadBufferFunction = function (e) { return i.reloadBuffer(e); }); void 0 === navigator.mediaDevices && (navigator.mediaDevices = {}), void 0 === navigator.mediaDevices.getUserMedia && (navigator.mediaDevices.getUserMedia = function (e, t, r) { var i = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; return i ? new Promise(function (t, r) { i.call( navigator, e, t, r ); }) : Promise.reject( new Error( "getUserMedia is not implemented in this browser" ) ); }), (this.constraints = this.params.constraints || { video: !1, audio: !0, }), (this.bufferSize = this.params.bufferSize || 4096), (this.numberOfInputChannels = this.params.numberOfInputChannels || 1), (this.numberOfOutputChannels = this.params.numberOfOutputChannels || 1), (this._onBackendCreated = function () { i.micContext = i.wavesurfer.backend.getAudioContext(); }); } var t, i, n; return ( (t = e), (n = [ { key: "create", value: function (t) { return { name: "microphone", deferInit: !(!t || !t.deferInit) && t.deferInit, params: t, instance: e, }; }, }, ]), (i = [ { key: "init", value: function () { this.wavesurfer.on( "backend-created", this._onBackendCreated ), this.wavesurfer.backend && this._onBackendCreated(); }, }, { key: "destroy", value: function () { (this.paused = !0), this.wavesurfer.un( "backend-created", this._onBackendCreated ), this.stop(); }, }, { key: "start", value: function () { var e = this; navigator.mediaDevices .getUserMedia(this.constraints) .then(function (t) { return e.gotStream(t); }) .catch(function (t) { return e.deviceError(t); }); }, }, { key: "togglePlay", value: function () { this.active ? ((this.paused = !this.paused), this.paused ? this.pause() : this.play()) : this.start(); }, }, { key: "play", value: function () { (this.paused = !1), this.connect(); }, }, { key: "pause", value: function () { (this.paused = !0), this.disconnect(); }, }, { key: "stop", value: function () { this.active && (this.stopDevice(), this.wavesurfer.empty()); }, }, { key: "stopDevice", value: function () { (this.active = !1), this.disconnect(), this.stream && this.stream.getTracks && this.stream .getTracks() .forEach(function (e) { return e.stop(); }); }, }, { key: "connect", value: function () { void 0 !== this.stream && ("edge" === this.browser.browser && (this.localAudioBuffer = this.micContext.createBuffer( this .numberOfInputChannels, this.bufferSize, this.micContext .sampleRate )), (this.mediaStreamSource = this.micContext.createMediaStreamSource( this.stream )), (this.levelChecker = this.micContext.createScriptProcessor( this.bufferSize, this.numberOfInputChannels, this.numberOfOutputChannels )), this.mediaStreamSource.connect( this.levelChecker ), this.levelChecker.connect( this.micContext.destination ), (this.levelChecker.onaudioprocess = this.reloadBufferFunction)); }, }, { key: "disconnect", value: function () { void 0 !== this.mediaStreamSource && this.mediaStreamSource.disconnect(), void 0 !== this.levelChecker && (this.levelChecker.disconnect(), (this.levelChecker.onaudioprocess = void 0)), void 0 !== this.localAudioBuffer && (this.localAudioBuffer = void 0); }, }, { key: "reloadBuffer", value: function (e) { if (!this.paused) if ( (this.wavesurfer.empty(), "edge" === this.browser.browser) ) { var t, r; for ( t = 0, r = Math.min( this .localAudioBuffer .numberOfChannels, e.inputBuffer .numberOfChannels ); t < r; t++ ) this.localAudioBuffer .getChannelData(t) .set( e.inputBuffer.getChannelData( t ) ); this.wavesurfer.loadDecodedBuffer( this.localAudioBuffer ); } else this.wavesurfer.loadDecodedBuffer( e.inputBuffer ); }, }, { key: "gotStream", value: function (e) { (this.stream = e), (this.active = !0), this.play(), this.fireEvent("deviceReady", e); }, }, { key: "deviceError", value: function (e) { this.fireEvent("deviceError", e); }, }, { key: "extractVersion", value: function (e, t, r) { var i = e.match(t); return ( i && i.length >= r && parseInt(i[r], 10) ); }, }, { key: "detectBrowser", value: function () { var e = { browser: null, version: null, minVersion: null, }; return "undefined" != typeof window && window.navigator ? navigator.mozGetUserMedia ? ((e.browser = "firefox"), (e.version = this.extractVersion( navigator.userAgent, /Firefox\/(\d+)\./, 1 )), (e.minVersion = 31), e) : navigator.webkitGetUserMedia ? ((e.browser = "chrome"), (e.version = this.extractVersion( navigator.userAgent, /Chrom(e|ium)\/(\d+)\./, 2 )), (e.minVersion = 38), e) : navigator.mediaDevices && navigator.userAgent.match( /Edge\/(\d+).(\d+)$/ ) ? ((e.browser = "edge"), (e.version = this.extractVersion( navigator.userAgent, /Edge\/(\d+).(\d+)$/, 2 )), (e.minVersion = 10547), e) : window.RTCPeerConnection && navigator.userAgent.match( /AppleWebKit\/(\d+)\./ ) ? ((e.browser = "safari"), (e.minVersion = 11), (e.version = this.extractVersion( navigator.userAgent, /AppleWebKit\/(\d+)\./, 1 )), e) : ((e.browser = "Not a supported browser."), e) : ((e.browser = "Not a supported browser."), e); }, }, ]) && r(t.prototype, i), n && r(t, n), e ); })(); (t.default = i), (e.exports = t.default); }, }, t = {}; return (function r(i) { var n = t[i]; if (void 0 !== n) return n.exports; var s = (t[i] = { exports: {} }); return e[i](s, s.exports, r), s.exports; })(872); })(); }); //# sourceMappingURL=wavesurfer.microphone.min.js.map