!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define("VueAudioRecorder",[],n):"object"==typeof exports?exports.VueAudioRecorder=n():t.VueAudioRecorder=n()}("undefined"!=typeof self?self:this,function(){return function(t){function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}var e={};return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p="",n(n.s=12)}([function(t,n){t.exports=function(t,n,e,r,i,o){var a,s=t=t||{},c=typeof t.default;"object"!==c&&"function"!==c||(a=t,s=t.default);var l="function"==typeof s?s.options:s;n&&(l.render=n.render,l.staticRenderFns=n.staticRenderFns,l._compiled=!0),e&&(l.functional=!0),i&&(l._scopeId=i);var u;if(o?(u=function(t){t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,t||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),r&&r.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},l._ssrRegister=u):r&&(u=r),u){var d=l.functional,p=d?l.render:l.beforeCreate;d?(l._injectStyles=u,l.render=function(t,n){return u.call(n),p(t,n)}):l.beforeCreate=p?[].concat(p,u):[u]}return{esModule:a,exports:s,options:l}}},function(t,n){function e(t,n){var e=t[1]||"",i=t[3];if(!i)return e;if(n&&"function"==typeof btoa){var o=r(i);return[e].concat(i.sources.map(function(t){return"/*# sourceURL="+i.sourceRoot+t+" */"})).concat([o]).join("\n")}return[e].join("\n")}function r(t){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t))))+" */"}t.exports=function(t){var n=[];return n.toString=function(){return this.map(function(n){var r=e(n,t);return n[2]?"@media "+n[2]+"{"+r+"}":r}).join("")},n.i=function(t,e){"string"==typeof t&&(t=[[null,t,""]]);for(var r={},i=0;ie.parts.length&&(r.parts.length=e.parts.length)}else{for(var a=[],i=0;i1?1:i}function i(t){return new Date(1e3*t).toISOString().substr(14,5)}n.a=r,n.b=i},function(t,n,e){"use strict";var r=e(7),i=e(16),o=e(0),a=o(r.a,i.a,!1,null,null,null);n.a=a.exports},function(t,n,e){"use strict";function r(t){e(13)}var i=e(6),o=e(24),a=e(0),s=r,c=a(i.a,o.a,!1,s,null,null);n.a=c.exports},function(t,n,e){"use strict";var r=e(4),i=e(8),o=e(20),a=e(3);n.a={props:{src:{type:String},uploadUrl:{type:String},record:{type:Object},compact:{type:Boolean,default:!0},startUpload:{type:Function},successfulUpload:{type:Function},failedUpload:{type:Function}},data:function(){return{isPlaying:!1,duration:Object(a.b)(0),playedTime:Object(a.b)(0),progress:0}},components:{IconButton:r.a,LineControl:i.a,VolumeControl:o.a},mounted:function(){var t=this;this.player=document.getElementById(this.playerUniqId),this.player.addEventListener("ended",function(){t.isPlaying=!1}),this.player.addEventListener("loadeddata",function(n){t._resetProgress(),t.duration=Object(a.b)(t.player.duration)}),this.player.addEventListener("timeupdate",this._onTimeUpdate)},computed:{playBtnIcon:function(){return this.isPlaying?"pause":"play"},audioSource:function(){return this.src||this.record.url},playerUniqId:function(){return"audio-player"+this._uid}},methods:{playback:function(){var t=this;this.audioSource&&(this.isPlaying?this.player.pause():setTimeout(function(){t.player.play()},0),this.isPlaying=!this.isPlaying)},upload:function(){var t=this;if(this.audioSource){this.startUpload&&this.startUpload(),this.$emit("on-start-upload");var n=new FormData;n.append("audio",this.record.blob,"my-record"),this.$http.post(this.uploadUrl,n,{headers:{"Content-Type":"multipart/form-data; boundary="+n._boundary}}).then(function(n){t.$emit("on-end-upload","success"),t.successfulUpload&&t.successfulUpload(n)}).catch(function(n){t.$emit("on-end-upload","fail"),t.failedUpload&&t.failedUpload(n)})}},download:function(){if(this.audioSource){var t=document.createElement("a");t.href=this.record.url,t.download="record.wav",t.click()}},_resetProgress:function(){this.isPlaying=!1,this.progress=0},_onTimeUpdate:function(){this.playedTime=Object(a.b)(this.player.currentTime),this.progress=this.player.currentTime/this.player.duration*100},_onUpdateProgress:function(t){t&&(this.player.currentTime=t*this.player.duration)},_onChangeVolume:function(t){t&&(this.player.volume=t)}}}},function(t,n,e){"use strict";n.a={props:{name:{type:String}},data:function(){return{icons:{download:'',mic:'',pause:'',play:'',save:'',stop:'',volume:''}}}}},function(t,n,e){"use strict";function r(t){e(17)}var i=e(9),o=e(19),a=e(0),s=r,c=a(i.a,o.a,!1,s,null,null);n.a=c.exports},function(t,n,e){"use strict";var r=e(3);n.a={props:{refId:{type:String},eventName:{type:String},percentage:{type:Number,default:0},rowDirection:{type:Boolean,default:!0}},methods:{onMouseDown:function(t){var n=Object(r.a)(t,this.$refs[this.refId]);this.$emit("change-linehead",n),document.addEventListener("mousemove",this.onMouseMove),document.addEventListener("mouseup",this.onMouseUp)},onMouseUp:function(t){document.removeEventListener("mouseup",this.onMouseUp),document.removeEventListener("mousemove",this.onMouseMove);var n=Object(r.a)(t,this.$refs[this.refId]);this.$emit("change-linehead",n)},onMouseMove:function(t){var n=Object(r.a)(t,this.$refs[this.refId]);this.$emit("change-linehead",n)}},computed:{calculateSize:function(){var t=this.percentage<1?100*this.percentage:this.percentage;return(this.rowDirection?"width":"height")+": "+t+"%"}}}},function(t,n,e){"use strict";var r=e(4),i=e(8);n.a={data:function(){return{volume:.8}},components:{IconButton:r.a,LineControl:i.a},methods:{onChangeLinehead:function(t){this.$emit("change-volume",t),this.volume=t}}}},function(t,n,e){"use strict";var r=e(5),i=e(4),o=e(28),a=e(3);n.a={props:{attempts:{type:Number},compact:{type:Boolean,default:!1},time:{type:Number},uploadUrl:{type:String},attemptsLimit:{type:Function},failedUpload:{type:Function},micFailed:{type:Function},startRecord:{type:Function},startUpload:{type:Function},stopRecord:{type:Function},successfulUpload:{type:Function},successfulUploadMsg:{type:String,default:"Upload successful"},failedUploadMsg:{type:String,default:"Upload fail"}},data:function(){var t=this;return{isUploading:!1,recorder:new o.a({afterStop:function(){t.recordList=t.recorder.recordList(),t.stopRecord&&t.stopRecord("stop record")},attempts:this.attempts,time:this.time}),recordList:[],selectedRecord:{},uploadStatus:null}},components:{AudioPlayer:r.a,IconButton:i.a},methods:{toggleRecorder:function(){this.attempts&&this.recorder.records.length>=this.attempts||(!this.isRecording||this.isRecording&&this.isPause?(this.recorder.start(),this.startRecord&&this.startRecord("start record")):(this.recorder.pause(),this.startRecord&&this.startRecord("pause record")))},stopRecorder:function(){this.isRecording&&this.recorder.stop()},selectRecord:function(t,n){this.selectedRecord={idx:t,url:n.url,blob:n.blob}},onStartUpload:function(){this.isUploading=!0},onEndUpload:function(t){var n=this;this.isUploading=!1,this.uploadStatus=t,setTimeout(function(){n.uploadStatus=null},1500)}},computed:{attemptsLeft:function(){return this.attempts-this.recorder.records.length},iconButtonType:function(){return this.isRecording&&this.isPause?"mic":this.isRecording?"pause":"mic"},isPause:function(){return this.recorder.isPause},isRecording:function(){return this.recorder.isRecording},message:function(){return"success"===this.uploadStatus?this.successfulUploadMsg:this.failedUploadMsg},recordedTime:function(){return this.time&&this.recorder.duration>=60*this.time&&this.stopRecorder(),Object(a.b)(this.recorder.duration)},uploadStatusClasses:function(){var t=["ar__upload-status"];return t.push("success"===this.uploadStatus?"ar__upload-status--success":"ar__upload-status--fail"),t.join(" ")},volume:function(){return parseFloat(this.recorder.volume)}}}},function(t,n,e){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r=e(5),i=e(25);e.d(n,"AudioPlayer",function(){return r.a}),e.d(n,"AudioRecorder",function(){return i.a});var o={AudioPlayer:r.a,AudioRecorder:i.a,install:function(t){this.installed||(this.installed=!0,t.component("audio-player",r.a),t.component("audio-recorder",i.a))}};n.default=o},function(t,n,e){var r=e(14);"string"==typeof r&&(r=[[t.i,r,""]]),r.locals&&(t.exports=r.locals);e(2)("fd982976",r,!0,{})},function(t,n,e){n=t.exports=e(1)(!1),n.push([t.i,"\n.ar-player {\n width: 380px;\n height: 120px;\n border: 1px solid #E8E8E8;\n border-radius: 24px;\n display: flex;\n flex-direction: column-reverse;\n align-items: center;\n justify-content: center;\n background-color: #FAFAFA;\n font-family: 'Roboto', sans-serif;\n}\n.ar-player-bar {\n display: flex;\n align-items: center;\n height: 38px;\n padding: 0 12px;\n margin: 0 5px;\n}\n.ar-player-actions {\n width: 55%;\n display: flex;\n align-items: center;\n justify-content: space-around;\n}\n.ar-player--compact {\n height: unset;\n flex-direction: row;\n border: 0;\n border-radius: 0;\n background-color: unset;\n}\n.ar-player--compact > .ar-player-actions {\n width: unset;\n}\n.ar-player--compact > .ar-player-actions > #download,\n .ar-player--compact > .ar-player-actions > #upload {\n display: none;\n}\n.ar-player--compact > .ar-player-bar {\n border: 1px solid #E8E8E8;\n border-radius: 24px;\n margin: 0 0 0 5px;\n}\n.ar-player--compact > .ar-player-bar > .ar-player__progress {\n width: 125px;\n}\n.ar-player__progress {\n width: 160px;\n margin: 0 8px;\n}\n.ar-player__time {\n color: rgba(84, 84, 84, 0.5);\n font-size: 16px;\n width: 41px;\n}\n.ar-player__play {\n width: 45px;\n height: 45px;\n background-color: #FFFFFF;\n box-shadow: 0 2px 11px 11px rgba(0, 0, 0, 0.07);\n}\n.ar-player__play--active {\n fill: white !important;\n background-color: #05CBCD !important;\n}\n.ar-icon {\n fill: #747474;\n border-radius: 50%;\n border: 1px solid #05CBCD;\n background-color: #FFFFFF;\n padding: 5px;\n cursor: pointer;\n transition: .2s;\n}\n.ar-icon--rec {\n fill: white;\n background-color: #FF6B64;\n border-color: transparent;\n}\n.ar-icon--pulse {\n animation: ripple .5s linear infinite;\n}\n@keyframes ripple {\n0% {\n box-shadow: 0 0 0 0 rgba(255, 0, 0, 0.1), 0 0 0 1px rgba(255, 0, 0, 0.1), 0 0 0 5px rgba(255, 0, 0, 0.1);\n}\n100% {\n box-shadow: 0 0 0 0 rgba(255, 0, 0, 0.1), 0 0 0 10px rgba(255, 0, 0, 0.1), 0 0 0 20px rgba(255, 0, 0, 0);\n}\n}\n.ar-icon__sm {\n width: 30px;\n height: 30px;\n}\n.ar-icon__lg {\n width: 45px;\n height: 45px;\n box-shadow: 0 2px 5px 1px rgba(158, 158, 158, 0.5);\n}\n",""])},function(t,n){t.exports=function(t,n){for(var e=[],r={},i=0;i0&&void 0!==arguments[0]?arguments[0]:{};r(this,t),this.afterStop=n.afterStop,this.micFailed=n.micFailed,this.bufferSize=4096,this.records=[],this.samples=[],this.isPause=!1,this.isRecording=!1,this.duration=0,this.volume=0,this._duration=0}return a(t,[{key:"start",value:function(){navigator.mediaDevices.getUserMedia({audio:!0}).then(this._micCaptured.bind(this)).catch(this._micError.bind(this)),this.isPause=!1,this.isRecording=!0}},{key:"stop",value:function(){this.stream.getTracks().forEach(function(t){return t.stop()}),this.input.disconnect(),this.processor.disconnect(),this.context.close();var t=new i.a({bufferSize:this.bufferSize,sampleRate:this.context.sampleRate,samples:this.samples}),n=t.getData(),e=URL.createObjectURL(n);this.samples=[],this.records.push({blob:n,url:e,duration:Object(o.b)(this.duration)}),this.isPause=!1,this.isRecording=!1,this._duration=0,this.duration=0,this.afterStop&&this.afterStop()}},{key:"pause",value:function(){this.stream.getTracks().forEach(function(t){return t.stop()}),this.input.disconnect(),this.processor.disconnect(),this.context.close(),this._duration=this.duration,this.isPause=!0}},{key:"recordList",value:function(){return this.records}},{key:"lastRecord",value:function(){return this.records.slice(-1)}},{key:"_micCaptured",value:function(t){var n=this;this.context=new(window.AudioContext||window.webkitAudioContext),this.input=this.context.createMediaStreamSource(t),this.processor=this.context.createScriptProcessor(this.bufferSize,1,1),this.duration=this._duration,this.stream=t,this.processor.onaudioprocess=function(t){for(var e=t.inputBuffer.getChannelData(0),r=0,i=0;i.02},attrs:{name:t.iconButtonType},nativeOn:{click:function(n){return t.toggleRecorder(n)}}}),t._v(" "),e("icon-button",{staticClass:"ar-icon ar-icon__sm ar-recorder__stop",attrs:{name:"stop"},nativeOn:{click:function(n){return t.stopRecorder(n)}}})],1),t._v(" "),t.attempts?e("div",{staticClass:"ar-recorder__records-limit"},[t._v("Attempts: "+t._s(t.attemptsLeft)+"/"+t._s(t.attempts))]):t._e(),t._v(" "),e("div",{staticClass:"ar-recorder__duration"},[t._v(t._s(t.recordedTime))]),t._v(" "),t.time?e("div",{staticClass:"ar-recorder__time-limit"},[t._v("Record duration is limited: "+t._s(t.time)+"m")]):t._e(),t._v(" "),e("div",{staticClass:"ar-records"},t._l(t.recordList,function(n,r){return e("div",{staticClass:"ar-records__record",class:{"ar-records__record--selected":r===t.selectedRecord.idx},on:{click:function(e){t.selectRecord(r,n)}}},[e("div",{staticClass:"ar__text"},[t._v("Record "+t._s(r+1))]),t._v(" "),e("div",{staticClass:"ar__text"},[t._v(t._s(n.duration))])])})),t._v(" "),e("audio-player",{attrs:{compact:t.compact,record:t.selectedRecord,"upload-url":t.uploadUrl,"start-upload":t.startUpload,"successful-upload":t.successfulUpload,"failed-upload":t.failedUpload},on:{"start-upload":t.onStartUpload,"end-upload":t.onEndUpload}}),t._v(" "),t.uploadStatus?e("div",{class:t.uploadStatusClasses},[t._v(t._s(t.message))]):t._e()],1)])},i=[],o={render:r,staticRenderFns:i};n.a=o}]).default}); //# sourceMappingURL=vue-audio-recorder.min.js.map