1import{b as t}from"./base64Tools.5b8a160c.js";import{n as e}from"./vueComponentNormalizer.fc2fb13f.js";var s=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"b64-audio"},[s("form",{on:{submit:function(e){return e.preventDefault(),t.processBase64(e)}}},[s("label",{staticClass:"form-label",attrs:{for:"input-b64"}},[t._v("Base64 (raw or data URL)")]),t._v(" "),s("textarea",{directives:[{name:"model",rawName:"v-model.trim",value:t.inputB64,expression:"inputB64",modifiers:{trim:!0}}],staticClass:"form-control",attrs:{id:"input-b64",rows:"6",placeholder:"Paste Base64"},domProps:{value:t.inputB64},on:{input:function(e){e.target.composing||(t.inputB64=e.target.value.trim())},blur:function(e){return t.$forceUpdate()}}}),t._v(" "),t._m(0)]),t._v(" "),t.errorMessage?s("div",{staticClass:"card mt-3 border-danger"},[s("div",{staticClass:"card-body text-danger"},[s("i",{staticClass:"fa fa-exclamation-circle mr-2"}),t._v(t._s(t.errorMessage))])]):t._e(),t._v(" "),t.objectUrl?s("div",{staticClass:"mt-3"},[s("div",{staticClass:"d-flex justify-content-between align-items-center"},[s("div",[s("span",{staticClass:"meta-chip"},[t._v(t._s(t.mimeType))]),t._v(" "),s("span",{staticClass:"meta-chip"},[t._v(t._s(t.prettyBytes(t.rawSize)))])]),t._v(" "),s("div",{staticClass:"btn-group"},[s("button",{staticClass:"btn btn-primary",on:{click:t.downloadAudio}},[s("i",{staticClass:"fa fa-download"}),t._v(" Download")])])]),t._v(" "),s("div",{staticClass:"card mt-2 p-3"},[s("audio",{staticStyle:{width:"100%"},attrs:{src:t.objectUrl,controls:"",preload:"metadata"}})])]):t._e()])},a=[function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("button",{staticClass:"btn btn-primary mt-2"},[s("i",{staticClass:"fa fa-eye"}),t._v(" Preview")])}];const i={name:"Base64AudioViewer",data:()=>({inputB64:"",errorMessage:"",objectUrl:"",outputBlob:null,mimeType:"",rawSize:0}),methods:{reset(){this.objectUrl&&URL.revokeObjectURL(this.objectUrl),this.errorMessage="",this.objectUrl="",this.outputBlob=null,this.mimeType="",this.rawSize=0},processBase64(){if(this.reset(),this.inputB64)try{const{mime:e,b64:s}=t.extractMimeAndData(this.inputB64),a=t.base64ToUint8Array(s),i=t.sniffMime(a),r=(e||i||"audio/mpeg").toLowerCase();if(!r.startsWith("audio/")&&"application/ogg"!==r)return void(this.errorMessage=`Detected type (${r||"unknown"}) is not audio.`);this.outputBlob=new Blob([a],{type:r}),this.objectUrl=URL.createObjectURL(this.outputBlob),this.mimeType=r,this.rawSize=a.length}catch{this.errorMessage="Failed to decode Base64."}else this.errorMessage="Input cannot be empty."},downloadAudio(){if(!this.outputBlob)return;const t=(this.mimeType.split("/")[1]||"bin").replace("mpeg","mp3"),e=document.createElement("a");e.href=this.objectUrl,e.download=`audio.${t}`,e.click()},prettyBytes:t.prettyBytes},beforeDestroy(){this.objectUrl&&URL.revokeObjectURL(this.objectUrl)}},r={};var o=e(i,s,a,!1,n,"14f9c286",null,null);function n(t){for(let e in r)this[e]=r[e]}const l=function(){return o.exports}();export{l as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.