/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/capacitor-voice-recorder@7.0.6/dist/plugin.cjs.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";var core=require("@capacitor/core"),write_blob=require("capacitor-blob-writer"),getBlobDuration=require("get-blob-duration");const RecordingStatus={RECORDING:"RECORDING",PAUSED:"PAUSED",NONE:"NONE"},VoiceRecorder=core.registerPlugin("VoiceRecorder",{web:()=>Promise.resolve().then((function(){return web})).then((e=>new e.VoiceRecorderWeb))}),successResponse=()=>({value:!0}),failureResponse=()=>({value:!1}),missingPermissionError=()=>new Error("MISSING_PERMISSION"),alreadyRecordingError=()=>new Error("ALREADY_RECORDING"),deviceCannotVoiceRecordError=()=>new Error("DEVICE_CANNOT_VOICE_RECORD"),failedToRecordError=()=>new Error("FAILED_TO_RECORD"),emptyRecordingError=()=>new Error("EMPTY_RECORDING"),recordingHasNotStartedError=()=>new Error("RECORDING_HAS_NOT_STARTED"),failedToFetchRecordingError=()=>new Error("FAILED_TO_FETCH_RECORDING"),couldNotQueryPermissionStatusError=()=>new Error("COULD_NOT_QUERY_PERMISSION_STATUS"),POSSIBLE_MIME_TYPES={"audio/aac":".aac","audio/mp4":".mp3","audio/webm;codecs=opus":".ogg","audio/webm":".ogg","audio/ogg;codecs=opus":".ogg"},neverResolvingPromise=()=>new Promise((()=>{}));class VoiceRecorderImpl{constructor(){this.mediaRecorder=null,this.chunks=[],this.pendingResult=neverResolvingPromise()}static async canDeviceVoiceRecord(){var e;return null==(null===(e=null===navigator||void 0===navigator?void 0:navigator.mediaDevices)||void 0===e?void 0:e.getUserMedia)||null==VoiceRecorderImpl.getSupportedMimeType()?failureResponse():successResponse()}async startRecording(e){if(null!=this.mediaRecorder)throw alreadyRecordingError();if(!(await VoiceRecorderImpl.canDeviceVoiceRecord()).value)throw deviceCannotVoiceRecordError();if(!(await VoiceRecorderImpl.hasAudioRecordingPermission().catch((()=>successResponse()))).value)throw missingPermissionError();return navigator.mediaDevices.getUserMedia({audio:!0}).then((r=>this.onSuccessfullyStartedRecording(r,e))).catch(this.onFailedToStartRecording.bind(this))}async stopRecording(){if(null==this.mediaRecorder)throw recordingHasNotStartedError();try{return this.mediaRecorder.stop(),this.mediaRecorder.stream.getTracks().forEach((e=>e.stop())),this.pendingResult}catch(e){throw failedToFetchRecordingError()}finally{this.prepareInstanceForNextOperation()}}static async hasAudioRecordingPermission(){return null==navigator.permissions.query?null==navigator.mediaDevices?Promise.reject(couldNotQueryPermissionStatusError()):navigator.mediaDevices.getUserMedia({audio:!0}).then((()=>successResponse())).catch((()=>{throw couldNotQueryPermissionStatusError()})):navigator.permissions.query({name:"microphone"}).then((e=>({value:"granted"===e.state}))).catch((()=>{throw couldNotQueryPermissionStatusError()}))}static async requestAudioRecordingPermission(){return(await VoiceRecorderImpl.hasAudioRecordingPermission().catch((()=>failureResponse()))).value?successResponse():navigator.mediaDevices.getUserMedia({audio:!0}).then((()=>successResponse())).catch((()=>failureResponse()))}pauseRecording(){if(null==this.mediaRecorder)throw recordingHasNotStartedError();return"recording"===this.mediaRecorder.state?(this.mediaRecorder.pause(),Promise.resolve(successResponse())):Promise.resolve(failureResponse())}resumeRecording(){if(null==this.mediaRecorder)throw recordingHasNotStartedError();return"paused"===this.mediaRecorder.state?(this.mediaRecorder.resume(),Promise.resolve(successResponse())):Promise.resolve(failureResponse())}getCurrentStatus(){return null==this.mediaRecorder?Promise.resolve({status:RecordingStatus.NONE}):"recording"===this.mediaRecorder.state?Promise.resolve({status:RecordingStatus.RECORDING}):"paused"===this.mediaRecorder.state?Promise.resolve({status:RecordingStatus.PAUSED}):Promise.resolve({status:RecordingStatus.NONE})}static getSupportedMimeType(){if(null==(null===MediaRecorder||void 0===MediaRecorder?void 0:MediaRecorder.isTypeSupported))return null;const e=Object.keys(POSSIBLE_MIME_TYPES).find((e=>MediaRecorder.isTypeSupported(e)));return null!=e?e:null}onSuccessfullyStartedRecording(e,r){return this.pendingResult=new Promise(((o,i)=>{this.mediaRecorder=new MediaRecorder(e),this.mediaRecorder.onerror=()=>{this.prepareInstanceForNextOperation(),i(failedToRecordError())},this.mediaRecorder.onstop=async()=>{var e,t,s;const c=VoiceRecorderImpl.getSupportedMimeType();if(null==c)return this.prepareInstanceForNextOperation(),void i(failedToFetchRecordingError());const n=new Blob(this.chunks,{type:c});if(n.size<=0)return this.prepareInstanceForNextOperation(),void i(emptyRecordingError());let a,d;if(null!=r){a=`${null!==(s=null===(t=null===(e=r.subDirectory)||void 0===e?void 0:e.match(/^\/?(.+[^/])\/?$/))||void 0===t?void 0:t[1])&&void 0!==s?s:""}/recording-${(new Date).getTime()}${POSSIBLE_MIME_TYPES[c]}`,await write_blob({blob:n,directory:r.directory,fast_mode:!0,path:a,recursive:!0})}else d=await VoiceRecorderImpl.blobToBase64(n);const u=await getBlobDuration(n);this.prepareInstanceForNextOperation(),o({value:{recordDataBase64:d,mimeType:c,msDuration:1e3*u,path:a}})},this.mediaRecorder.ondataavailable=e=>this.chunks.push(e.data),this.mediaRecorder.start()})),successResponse()}onFailedToStartRecording(){throw this.prepareInstanceForNextOperation(),failedToRecordError()}static blobToBase64(e){return new Promise((r=>{const o=new FileReader;o.onloadend=()=>{const e=String(o.result),i=e.split("base64,"),t=i.length>1?i[1]:e;r(t.trim())},o.readAsDataURL(e)}))}prepareInstanceForNextOperation(){if(null!=this.mediaRecorder&&"recording"===this.mediaRecorder.state)try{this.mediaRecorder.stop()}catch(e){console.warn("While trying to stop a media recorder, an error was thrown",e)}this.pendingResult=neverResolvingPromise(),this.mediaRecorder=null,this.chunks=[]}}class VoiceRecorderWeb extends core.WebPlugin{constructor(){super(...arguments),this.voiceRecorderInstance=new VoiceRecorderImpl}canDeviceVoiceRecord(){return VoiceRecorderImpl.canDeviceVoiceRecord()}hasAudioRecordingPermission(){return VoiceRecorderImpl.hasAudioRecordingPermission()}requestAudioRecordingPermission(){return VoiceRecorderImpl.requestAudioRecordingPermission()}startRecording(e){return this.voiceRecorderInstance.startRecording(e)}stopRecording(){return this.voiceRecorderInstance.stopRecording()}pauseRecording(){return this.voiceRecorderInstance.pauseRecording()}resumeRecording(){return this.voiceRecorderInstance.resumeRecording()}getCurrentStatus(){return this.voiceRecorderInstance.getCurrentStatus()}}var web=Object.freeze({__proto__:null,VoiceRecorderWeb:VoiceRecorderWeb});exports.RecordingStatus=RecordingStatus,exports.VoiceRecorder=VoiceRecorder;
//# sourceMappingURL=/sm/a45b2612c2fd8c83d8ad67a28364661750783a525296f549e24a920b3e25c1a0.map