PageSourceSearch

https://ramblefix.com/chunk-73XQSMUH.js

js ramblefix.com collected 2026-10-04 05:02:33 UTC 42,062 bytes, 7 lines download raw bytes

1import{a as BA,b as IA,c as vA}from"./chunk-WVF33K6R.js";import{a as RA}from"./chunk-UWRRXH7J.js";import{a as wA}from"./chunk-BDNN5GRU.js";import{a as _A,b as xA}from"./chunk-GQFN7BH3.js";import{a as EA}from"./chunk-HJZUJGRV.js";import"./chunk-BYXBJQAS.js";import{a as fA}from"./chunk-4K2PG6OF.js";import{c as dA,j as R,l as q}from"./chunk-5JWU52HN.js";import"./chunk-EVIZIQ5V.js";import{a as sA}from"./chunk-X7NRWKZT.js";import{a as k}from"./chunk-OZQXZYN5.js";import{E as aA,h as rA,p as nA}from"./chunk-HMSTZCTR.js";import{A as pA,I as mA,N as gA,P as uA,ba as hA,ia as CA,ja as SA,l as lA,p as cA}from"./chunk-ISVXNFVV.js";import{Bb as _,Eb as u,Fb as d,Nb as s,Ob as O,Pb as W,Qb as P,Sa as a,W as C,ab as tA,ca as S,da as f,ea as T,fa as J,fb as m,nb as iA,o as I,ob as g,pb as oA,pc as v,qb as X,qc as b,ra as E,sb as l,xb as i,yb as r,zb as c}from"./chunk-6TFHNCXV.js";import{a as G,b as AA,d as eA,f as MA}from"./chunk-DAQOROHW.js";var kA=eA((Ie,bA)=>{"use strict";bA.exports={webm:"data:video/webm;base64,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",mp4:"data:video/mp4;base64,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"}});var yA=eA((ve,QA)=>{"use strict";var{webm:FA,mp4:YA}=kA(),L=()=>typeof navigator<"u"&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,z=()=>"wakeLock"in navigator,j=class{constructor(){if(this.enabled=!1,z()){this._wakeLock=null;let e=()=>{this._wakeLock!==null&&document.visibilityState==="visible"&&this.enable()};document.addEventListener("visibilitychange",e),document.addEventListener("fullscreenchange",e)}else L()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm",FA),this._addSourceToVideo(this.noSleepVideo,"mp4",YA),this.noSleepVideo.addEventListener("loadedmetadata",()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())})}))}_addSourceToVideo(e,A,o){var n=document.createElement("source");
1n.src=o,n.type=`video/${A}`,e.appendChild(n)}get isEnabled(){return this.enabled}enable(){return z()?navigator.wakeLock.request("screen").then(e=>{this._wakeLock=e,this.enabled=!0,console.log("Wake Lock active."),this._wakeLock.addEventListener("release",()=>{console.log("Wake Lock released.")})}).catch(e=>{throw this.enabled=!1,console.error(`${e.name}, ${e.message}`),e}):L()?(this.disable(),console.warn(`
2        NoSleep enabled for older iOS devices. This can interrupt
3        active or long-running network requests from completing successfully.
4        See https://github.com/richtr/NoSleep.js/issues/15 for more details.
5      `),this.noSleepTimer=window.setInterval(()=>{document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))},15e3),this.enabled=!0,Promise.resolve()):this.noSleepVideo.play().then(A=>(this.enabled=!0,A)).catch(A=>{throw this.enabled=!1,A})}disable(){z()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):L()?this.noSleepTimer&&(console.warn(`
6          NoSleep now disabled for older iOS devices.
7        `),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}};QA.exports=j});var VA=MA(yA());function GA(t,e){if(t&1&&(c(0,"lucide-icon",14),s(1," Starting\u2026 ")),t&2){let A=d(2);
7g("img",A.Loader2)("size",16)}}function JA(t,e){if(t&1&&(c(0,"lucide-icon",15),s(1," Try the microphone again ")),t&2){let A=d(2);g("img",A.Mic)("size",16)}}function XA(t,e){if(t&1){let A=_();i(0,"div",3)(1,"div",6)(2,"div",7),c(3,"lucide-icon",8),r(),i(4,"h3",9),s(5,"Microphone didn't start"),r(),i(6,"p",10),s(7),r(),i(8,"div",11)(9,"button",12),u("click",function(){S(A);let n=d();return f(n.retryMicrophone())}),m(10,GA,2,2)(11,JA,2,2),r(),i(12,"button",13),u("click",function(){S(A);let n=d();return f(n.confirmClose())}),s(13,"Close"),r()()()()}if(t&2){let A=d();a(3),g("img",A.Mic)("size",44),a(4),O(A.startError()),a(2),g("disabled",A.isRetryingStart()),a(),l(A.isRetryingStart()?10:11)}}function OA(t,e){t&1&&(i(0,"div",16)(1,"div",27),T(),i(2,"svg",28),c(3,"path",29),r(),J(),i(4,"span",30),s(5,"You're offline. Some features may be unavailable."),r()()())}function WA(t,e){t&1&&(i(0,"p",33),s(1,"It's gone quiet"),r(),i(2,"p",34),s(3,"Still recording, but nothing has come through the mic for a while. If you're still talking, check it hasn't been muted or switched."),r())}function PA(t,e){t&1&&(i(0,"p",33),s(1,"We can't hear anything"),r(),i(2,"p",34),s(3,"Your microphone isn't picking up any sound. Check that the right mic is selected in your browser and that it isn't muted."),r())}function qA(t,e){if(t&1&&(i(0,"div",17)(1,"div",31),c(2,"lucide-icon",32),i(3,"div"),m(4,WA,4,0)(5,PA,4,0),r()()()),t&2){let A=d(2);a(2),g("img",A.Mic)("size",18),a(2),l(A.silenceSpeechHeard()?4:5)}}function LA(t,e){if(t&1){let A=_();i(0,"button",35),u("click",function(){S(A);let n=d(2);return f(n.promptUpgrade())}),c(1,"lucide-icon",36),i(2,"span",37),s(3,"Increase Limit"),r()()}if(t&2){let A=d(2);a(),g("img",A.ClockPlus)("size",12)}}function zA(t,e){if(t&1&&(i(0,"span",41),s(1),r()),t&2){let A=d(3);a(),P("",A.liveTranscript.finalText()?" ":"","",A.liveTranscript.interimText(),"")}}function jA(t,e){t&1&&(i(0,"span",42),s(1,"Listening\u2026"),r())}function KA(t,e){if(t&1&&(i(0,"div",24)(1,"div",38)(2,"p",39)(3,"span",40),s(4),r(),m(5,zA,2,2,"span",41)(6,jA,2,0,"span",42),r()(),i(7,"p",43),s(8,"Live preview \u2014 the final transcript is polished after you stop"),r()()),t&2){let A=d(2);a(4),O(A.liveTranscript.finalText()),a(),l(A.liveTranscript.interimText()?5:-1),a(),l(!A.liveTranscript.finalText()&&!A.liveTranscript.interimText()?6:-1)}}function HA(t,e){if(t&1&&(c(0,"lucide-icon",44),i(1,"span",33),s(2,"Pause"),r()),t&2){let A=d(2);g("img",A.Pause)("size",14)}}function NA(t,e){if(t&1&&(c(0,"lucide-icon",44),i(1,"span",33),s(2,"Resume"),r()),t&2){let A=d(2);g("img",A.Play)("size",14)}}function $A(t,e){if(t&1){let A=_();i(0,"div",3),m(1,OA,6,0,"div",16)(2,qA,6,3,"div",17),i(3,"div",18),c(4,"app-waveform",19),r(),i(5,"div",20),c(6,"div",21),i(7,"span",22),s(8),r()(),m(9,LA,4,2,"button",23)(10,KA,9,3,"div",24),i(11,"div",25)(12,"button",26),u("click",function(){S(A);let n=d();return f(n.togglePause())}),m(13,HA,3,2)(14,NA,3,2),r()()()}if(t&2){let A=d();a(),l(A.isOnline()?-1:1),a(),l(A.silenceDetected()?2:-1),a(2),g("volume",A.volume())("minHeight",96)("maxHeight",112),a(3),X("text-red-500",A.isTimeWarning())("animate-[pulse_1s_ease-in-out_infinite]",A.isTimeWarning()),a(),P("",A.recordingTime()," / ",A.maxRecordingTime(),""),a(),l(A.showUpgradeHint()?9:-1),a(),l(A.hasLiveText()?10:-1),a(2),X("bg-white",A.isPaused())("text-red-500",A.isPaused())("hover:bg-white",A.isPaused()),g("disabled",A.isStopping())("title",A.isPaused()?"Resume Recording":"Pause Recording"),a(),l(A.isPaused()?14:13)}}function Ae(t,e){t&1&&(i(0,"h3",9),s(1,"No audio was captured"),r(),i(2,"p",51),s(3,"This recording is under a second long, so there is nothing to transcribe. Retrying it won't help \u2014 record again and speak for a moment before stopping."),r())}function ee(t,e){t&1&&(i(0,"h3",9),s(1,"We couldn't find any speech"),r(),i(2,"p",51),s(3,"The audio came through but had no speech we could transcribe. If you were talking, check that the right microphone is selected and it isn't muted, then record again. You can download this audio to check it yourself."),r())}function te(t,e){t&1&&(i(0,"h3",9),s(1,"Processing Failed"),r(),i(2,"p",51),s(3,"Your recording couldn't be processed. You can download it or close and try again from your drafts."),r())}function ie(t,e){if(t&1){let A=_();i(0,"button",52),u("click",function(){S(A);let n=d(3);return f(n.downloadRecording())}),c(1,"lucide-icon",15),s(2," Download Recording "),r()}if(t&2){let A=d(3);a(),g("img",A.Download)("size",16)}}function oe(t,e){if(t&1){let A=_();i(0,"button",53),u("click",function(){S(A);let n=d(3);return f(n.deleteFailedDraft())}),c(1,"lucide-icon",54),s(2),r()}if(t&2){let A=d(3);g("disabled",A.isDeletingFailedDraft()),a(),g("img",A.Trash2)("size",14),a(),W(" ",A.isDeletingFailedDraft()?"Deleting\u2026":"Delete this draft"," ")}}function re(t,e){if(t&1){let A=_();
7i(0,"div",45)(1,"div",7),T(),i(2,"svg",47),c(3,"path",48),r()(),m(4,Ae,4,0)(5,ee,4,0)(6,te,4,0),J(),i(7,"div",11),m(8,ie,3,2,"button",49)(9,oe,3,4,"button",50),i(10,"button",13),u("click",function(){S(A);let n=d(2);return f(n.confirmClose())}),s(11," Close "),r()()()}if(t&2){let A,o=d(2);a(4),l((A=o.failureKind())==="empty_audio"?4:A==="empty_transcript"?5:6),a(4),l(o.failureKind()!=="empty_audio"?8:-1),a(),l(o.failedDraftId()&&o.failureKind()!=="generic"?9:-1)}}function ne(t,e){t&1&&s(0," Uploading... ")}function ae(t,e){t&1&&s(0," Processing... ")}function se(t,e){if(t&1&&s(0),t&2){let A=d(3);W(" ",A.uploadProgress(),"% ")}}function de(t,e){t&1&&(i(0,"div",58),c(1,"div",63),i(2,"span"),s(3,"Transcribing"),r()())}function le(t,e){if(t&1&&c(0,"div",64),t&2){let A=d(3);oA("width",A.uploadProgress(),"%")}}function ce(t,e){t&1&&c(0,"div",61)}function pe(t,e){t&1&&s(0," Uploading your recording to the cloud ")}function me(t,e){t&1&&s(0," AI is transcribing and polishing your audio ")}function ge(t,e){if(t&1&&(i(0,"div",46)(1,"div",55)(2,"span",56),m(3,ne,1,0)(4,ae,1,0),r(),i(5,"span",57),m(6,se,1,1)(7,de,4,0,"div",58),r()(),i(8,"div",59),m(9,le,1,2,"div",60)(10,ce,1,0,"div",61),r(),i(11,"p",62),m(12,pe,1,0)(13,me,1,0),r()()),t&2){let A=d(2);a(3),l(A.uploadStage()==="uploading"?3:4),a(3),l(A.uploadStage()==="uploading"?6:7),a(3),l(A.uploadStage()==="uploading"?9:10),a(3),l(A.uploadStage()==="uploading"?12:13)}}function ue(t,e){if(t&1&&(i(0,"div",3),m(1,re,12,3,"div",45)(2,ge,14,4,"div",46),r()),t&2){let A=d();a(),l(A.uploadFailed()?1:2)}}function he(t,e){t&1&&c(0,"span",67)}function Ce(t,e){if(t&1&&c(0,"lucide-icon",69),t&2){let A=d(2);
7g("img",A.Loader2)("size",26)}}function Se(t,e){t&1&&c(0,"div",70)}function fe(t,e){t&1&&(i(0,"p",71),s(1,"Finishing your recording\u2026"),r())}function Ee(t,e){if(t&1){let A=_();i(0,"div",4)(1,"div",65)(2,"div",66),m(3,he,1,0,"span",67),i(4,"button",68),u("click",function(){S(A);let n=d();return f(n.stopRecording())}),m(5,Ce,1,2,"lucide-icon",69)(6,Se,1,0,"div",70),r()(),m(7,fe,2,0,"p",71),r()()}if(t&2){let A=d();a(3),l(!A.isPaused()&&!A.isStopping()?3:-1),a(),g("disabled",A.isStopping())("title",A.isStopping()?"Finishing recording\u2026":"Stop recording"),iA("aria-label",A.isStopping()?"Finishing recording":"Stop recording"),a(),l(A.isStopping()?5:6),a(2),l(A.isStopping()?7:-1)}}function _e(t,e){if(t&1){let A=_();i(0,"div",5)(1,"div",72)(2,"h3",73),s(3,"Discard Recording?"),r(),i(4,"p",10),s(5,"Are you sure you want to discard your current recording? This action cannot be undone."),r(),i(6,"div",74)(7,"button",75),u("click",function(){S(A);let n=d();return f(n.cancelClose())}),s(8," Cancel "),r(),i(9,"button",76),u("click",function(){S(A);let n=d();return f(n.confirmClose())}),s(10," Discard Recording "),r()()()()}}var DA=120,K=3,xe=[1e3,3e3],TA=class t{router=C(aA);appStateService=C(q);postService=C(dA);audioRecordingService=C(xA);taskPollingService=C(BA);audioStorageService=C(EA);networkStatusService=C(wA);toastService=C(sA);liveTranscript=C(_A);noSleep=new VA.default;currentUser=C(q).currentUser;isRecording=this.audioRecordingService.isRecording;isPaused=this.audioRecordingService.isPaused;isStopping=this.audioRecordingService.isStopping;blob=this.audioRecordingService.blob;silenceDetected=this.audioRecordingService.silenceDetected;silenceSpeechHeard=this.audioRecordingService.speechHeard;isOnline=this.networkStatusService.isOnline;startError=E(void 0);isRetryingStart=E(!1);failureKind=E("generic");failedDraftId=E(void 0);isDeletingFailedDraft=E(!1);uploadInFlight=!1;ClockPlus=lA;Download=cA;Loader2=pA;Mic=mA;Pause=gA;Play=uA;Trash2=hA;volume=v(()=>Math.round(this.audioRecordingService.currentAudioLevel()*100));hasLiveText=v(()=>this.liveTranscript.isLive()||this.liveTranscript.finalText().length>0||this.liveTranscript.interimText().length>0);autoScrollEffect=b(()=>{this.liveTranscript.finalText(),this.liveTranscript.interimText(),queueMicrotask(()=>{let e=document.getElementById("live-transcript-scroll");e&&(e.scrollTop=e.scrollHeight)})});recordingTime=v(()=>{let e=this.audioRecordingService.recordingTime(),A=Math.floor(e/3600),o=Math.floor(e%3600/60),n=Math.floor(e%60);return A>0?`${A.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}:${n.toString().padStart(2,"0")}`:`${o.toString().padStart(2,"0")}:${n.toString().padStart(2,"0")}`});maxRecordingTime=v(()=>{let e=this.currentUser()?.subscription?.price?.product?.maxRecordingSeconds??DA,A=Math.floor(e/3600),o=Math.floor(e%3600/60),n=Math.floor(e%60);return A>0?`${A.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}:${n.toString().padStart(2,"0")}`:`${o.toString().padStart(2,"0")}:${n.toString().padStart(2,"0")}`});isTimeWarning=v(()=>{let e=this.currentUser()?.subscription?.price?.product?.maxRecordingSeconds??DA,A=this.audioRecordingService.recordingTime();return e-A<=30});uploadUrlResponsePromise;showConfirmDialog=E(!1);shouldNavigateToUpgrade=E(!1);uploadFailed=E(!1);uploadProgress=E(0);uploadStage=E("uploading");constructor(){b(async()=>{let e=this.audioRecordingService.blob();e&&!this.uploadInFlight&&(this.uploadInFlight=!0,await this.uploadBlob(e)&&this.confirmClose())}),b(()=>{let e=this.audioRecordingService.error();if(e){if(e.kind==="start"){this.startError.set(e.message);return}this.toastService.show(e.message,"error"),this.confirmClose()}}),b(()=>{let e=this.audioRecordingService.warning();e&&this.toastService.show(e.message,"info",8e3)})}async ngOnInit(){this.noSleep.enable(),this.uploadUrlResponsePromise=I(this.postService.postControllerGenerateUploadUrl({filename:"recording.m4a"}));let e=this.appStateService.uploadFile(),A=this.appStateService.retryDraftId();if(this.appStateService.trackRecorderShown({isRetryingDraft:!!A,isUploadingFile:!!e,isLive:!A&&!e}),A)try{let o=await I(this.audioStorageService.getAudioBlob(A));this.audioRecordingService.setBlob(o)}catch(o){this.toastService.show("Failed to load draft recording.","error"),console.error("Error loading draft blob:",o),this.appStateService.trackRecorderClosed("process_error_draft_store",{Error:o}),this.appStateService.closeRecorder()}else e?this.audioRecordingService.setBlob(e):await this.audioRecordingService.startRecording()}closeRecorder(){if(this.uploadFailed()){this.confirmClose();return}this.shouldNavigateToUpgrade.set(!1),this.showConfirmDialog.set(!0)}confirmClose(){this.showConfirmDialog.set(!1);try{let e=this.isRecording(),A=!!this.blob();e&&this.appStateService.trackRecorderClosed("discarded",{"Was Recording":e,"Had Blob":A})}catch{}this.appStateService.closeRecorder(),this.audioRecordingService.discardInProgressDraft(),this.audioRecordingService.reset(),this.liveTranscript.reset(),this.shouldNavigateToUpgrade()&&(this.shouldNavigateToUpgrade.set(!1),this.router.navigate(["/","app","upgrade"]))}cancelClose(){this.showConfirmDialog.set(!1)}async stopRecording(){await this.audioRecordingService.stopRecording()}async retryMicrophone(){if(!this.isRetryingStart()){this.isRetryingStart.set(!0),this.startError.set(void 0);try{k.capture("Recorder Mic Retry Clicked")}catch{}this.appStateService.trackRecorderShown({isRetryingDraft:!1,isUploadingFile:!1,isLive:!0,isMicrophoneRetry:!0});try{await this.audioRecordingService.startRecording()}finally{this.isRetryingStart.set(!1)}}}async deleteFailedDraft(){let e=this.failedDraftId();if(!(!e||this.isDeletingFailedDraft())){this.isDeletingFailedDraft.set(!0);try{await this.cleanUpDraft(e);try{k.capture("Draft Deleted",{"Draft ID":e,Source:"recorder_failure","Failure Kind":this.failureKind()})}catch{}this.failedDraftId.set(void 0)}finally{this.isDeletingFailedDraft.set(!1)}this.confirmClose()}}async togglePause(){this.isPaused()?await this.audioRecordingService.resumeRecording():await this.audioRecordingService.pauseRecording()}showUpgradeHint=v(()=>{let e=this.currentUser()?.subscription?.price?.product?.id;return e==="basic"||e==="plus"});promptUpgrade(){this.shouldNavigateToUpgrade.set(!0),this.showConfirmDialog.set(!0)}async uploadBlob(e){if(!this.uploadUrlResponsePromise)return!1;let A=e;try{A=await IA(e,8e3)}catch(D){console.warn("Downsample failed, uploading original blob:",D)}let o=new File([A],"recording.m4a",{type:"audio/m4a"}),n=this.appStateService.retryDraftId(),p=!!this.appStateService.uploadFile(),h=n?"retry_draft":p?"upload":"live",Q=this.audioRecordingService.recordingTime(),w={"Recording Source":h,"Duration Seconds":Q,"Blob Size Bytes":e.size,"Blob MIME Type":e.type,"Upload File Size Bytes":o.size,"Upload File MIME Type":o.type};if(this.appStateService.setRecorderContext(w),h!=="upload"&&e.size<32e3)return this.failureKind.set("empty_audio"),this.failedDraftId.set(n),this.toastService.show(h==="retry_draft"?"This draft has no audio in it, so there is nothing to retry.":"No audio was captured \u2014 the recording was under a second long.","error"),this.appStateService.trackRecorderClosed("process_error_empty_audio",{"Blob Size Bytes":e.size}),this.uploadFailed.set(!0),!1;let H=null,V=!1;if(!n){let{data:D,error:$}=await R(I(this.audioStorageService.storeRecording(e,"Recording",0,"audio/m4a")));$||!D?console.warn("Skipping draft save; continuing upload.",$):(H=D,V=!0);try{this.appStateService.setRecorderContext({"Draft Saved":V})}catch{}}let Z=n||H?.id,{data:N,error:x}=await R(this.uploadUrlResponsePromise);if(x)return this.toastService.show("Could not process your recording. Check your drafts and try again.","error"),x instanceof nA?console.error("Failed to get upload url",{status:x.status,statusText:x.statusText,url:x.url,error:x.error}):console.error("Failed to get upload url",x),this.appStateService.trackRecorderClosed("process_error_upload_url",{Error:x}),this.uploadFailed.set(!0),!1;this.uploadProgress.set(0),this.uploadStage.set("uploading");let{attempts:M,error:F}=await this.uploadWithRetries(N.url,o);if(this.appStateService.setRecorderContext({"Upload Attempts":M}),F)return this.toastService.show("Could not process your recording. Check your drafts and try again.","error"),console.error("Error uploading file to Google Cloud Storage:",F),this.appStateService.trackRecorderClosed("process_error_upload",{Error:F,"Upload Attempts":M}),this.uploadFailed.set(!0),!1;this.uploadProgress.set(100),this.uploadStage.set("processing");let{data:ZA,error:Y}=await R(I(this.postService.postControllerCreatePost({filename:"recording.m4a",timestamp:N.timestamp,keyboardLocale:this.appStateService.keyboardLocale()}
7)));if(Y)return this.toastService.show("Could not process your recording. Check your drafts and try again.","error"),console.error("Error creating post:",Y),this.appStateService.trackRecorderClosed("process_error_create_post",{Error:Y}),this.uploadFailed.set(!0),!1;let{data:B,error:U}=await R(I(this.taskPollingService.getTask(ZA.taskId)));if(U)return this.toastService.show("Could not process your recording. Check your drafts and try again.","error"),console.error("Error getting task status:",U),this.appStateService.trackRecorderClosed("process_error_task_poll",{Error:U}),this.uploadFailed.set(!0),!1;if(B.status!=="completed")return console.error("Task status not completed:",B),B?.data?.error==="EMPTY_TRANSCRIPT"?(this.failureKind.set("empty_transcript"),this.failedDraftId.set(Z),this.toastService.show("We couldn\u2019t find any speech in this recording.","error"),this.appStateService.trackRecorderClosed("process_error_empty_transcript",{"Blob Size Bytes":e.size,"Upload File Size Bytes":o.size}),this.uploadFailed.set(!0),!1):B?.data?.error==="UNSUPPORTED_FORMAT"?(this.toastService.show(vA,"error"),this.appStateService.trackRecorderClosed("process_error_unsupported_format",{"Upload File Size Bytes":o.size}),this.uploadFailed.set(!0),!1):B?.data?.error==="LIMIT_EXCEEDED"?(this.toastService.show("This recording exceeds your limit, please upgrade to continue.","error"),this.appStateService.closeRecorder(),this.audioRecordingService.reset(),await this.router.navigate(["/","app","upgrade"],{queryParams:{reason:"limit-exceeded"}}),this.appStateService.trackRecorderClosed("process_error_limit_exceeded"),!1):(this.toastService.show("Could not transcribe because no audio was detected. Please try again.","error"),this.appStateService.trackRecorderClosed("process_error_task_not_completed",{Status:B.status}),this.uploadFailed.set(!0),!1);let y=(B?.data??{}).postId;if(!y)return this.toastService.show("Something went wrong, please try again.","error"),console.error("Task status does not have postId:",B),this.appStateService.trackRecorderClosed("process_error_no_post_id"),this.uploadFailed.set(!0),!1;Z&&await this.cleanUpDraft(Z);try{k.capture("Post Created",AA(G({"Post ID":y},w),{"Draft Saved":V,"Upload Attempts":M,"Keyboard Locale":this.appStateService.keyboardLocale()}))}catch{}return this.appStateService.trackRecorderClosed("success",G({"Post ID":y},w)),this.appStateService.markRamblesDirty(),await this.router.navigate(["/","app","chat"],{queryParams:{ramble:y}}),this.audioRecordingService.reset(),!0}async uploadWithRetries(e,A){let o;for(let n=1;n<=K;n++){let{error:p}=await R(this.uploadFileToSignedUrl(e,A));if(!p)return{attempts:n};o=p;let h=String(p?.message??p);if(/status 4\d\d/.test(h)||n===K)break;console.warn(`Upload attempt ${n} failed, retrying:`,h),this.uploadProgress.set(0),await new Promise(w=>setTimeout(w,xe[n-1]??3e3))}return{attempts:K,error:o}}uploadFileToSignedUrl(e,A){return new Promise((o,n)=>{let p=new XMLHttpRequest;p.upload.onprogress=h=>{if(!h.lengthComputable||h.total<=0)return;let Q=Math.min(100,Math.max(0,Math.round(h.loaded/h.total*100)));this.uploadProgress.set(Q)},p.onload=()=>{if(p.status>=200&&p.status<300){o();return}n(new Error(`Upload failed with status ${p.status}: ${p.responseText||p.statusText}`))},p.onerror=()=>n(new Error("Upload failed due to a network error.")),p.onabort=()=>n(new Error("Upload was cancelled.")),p.ontimeout=()=>n(new Error("Upload timed out.")),p.open("PUT",e),p.setRequestHeader("Content-Type","application/octet-stream"),p.send(A)})}downloadRecording(){let e=this.audioRecordingService.blob();if(!e)return;let o=`recording-${new Date().toISOString().replace(/[:.]/g,"-").slice(0,19)}.wav`;RA(e,o);try{k.capture("Recording Downloaded",{Source:"recorder_error","Blob Size Bytes":e.size,"Blob MIME Type":e.type})}catch{}}async cleanUpDraft(e){if(e){let{data:A,error:o}=await R(I(this.audioStorageService.deleteRecording(e)));o&&(this.toastService.show("Failed to delete draft recording.","error"),console.error("Error deleting draft",o))}}ngOnDestroy(){this.noSleep.disable();try{this.appStateService.trackRecorderClosed("abandoned")}catch{}}static \u0275fac=function(A){return new(A||t)};static \u0275cmp=tA({type:t,selectors:[["app-recorder"]],decls:8,vars:3,consts:[["aria-label","Close recorder","title","Close and discard recording",1,"absolute","top-6","right-6","p-2","text-muted-foreground","hover:text-foreground","rounded-full","hover:bg-accent/60","transition-colors","cursor-pointer",3,"click"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2",1,"h-6","w-6"],["stroke-linecap","round","stroke-linejoin","round","d","M6 18L18 6M6 6l12 12"],[1,"flex","flex-col","items-center","justify-center","h-full","max-w-xl","mx-auto"],[1,"fixed","bottom-0","left-0","right-0","z-40"],[1,"fixed","inset-0","bg-black/80","z-50","flex","items-center","justify-center","animate-overlay-in"],[1,"text-center","px-4"],[1,"mb-4"],[1,"text-red-400","mx-auto",3,"img","size"],[1,"text-lg","font-semibold","text-foreground","mb-2"],[1,"text-sm","text-muted-foreground","mb-6"],[1,"flex","flex-col","gap-3","items-center"],[1,"btn-primary","rounded-full",3,"click","disabled"],[1,"btn-ghost","text-sm",3,"click"],[1,"mr-2","animate-spin",3,"img","size"],[1,"mr-2",3,"img","size"],[1,"mb-6","inline-flex","px-4","py-2","border","border-yellow-900/50","bg-yellow-950/20","backdrop-blur-sm","rounded-lg"],[1,"mb-6","max-w-md","px-4","py-3","border","border-amber-900/50","bg-amber-950/30","backdrop-blur-sm","rounded-lg","animate-panel-in"],[1,"w-full","h-28"],[3,"volume","minHeight","maxHeight"],["title","Current Recording / Time Limit",1,"mt-6","bg-secondary/40","text-foreground","py-2.5","px-5","rounded-full","flex","items-center","gap-2","border","border-border"],[1,"h-2.5","w-2.5","bg-red-500","rounded-full","animate-pulse"],[1,"text-sm","font-mono"],["aria-label","Upgrade for longer recordings","title","Upgrade for longer recordings",1,"mt-2","px-3","py-1.5","bg-secondary/40","text-muted-foreground","hover:text-foreground","rounded-full","border","border-border","hover:border-input","hover:bg-accent/60","transition-colors","cursor-pointer","flex","items-center","gap-1.5"],[1,"w-full","max-w-lg","mt-6","animate-panel-in"],[1,"mt-4","flex","justify-center"],["aria-label","Toggle pause",1,"px-4","h-10","rounded-full","bg-secondary/40","text-muted-foreground","flex","items-center","justify-center","transition-colors","cursor-pointer","border","border-border","hover:text-foreground","hover:border-input","hover:bg-accent/60","disabled:opacity-50","disabled:cursor-not-allowed",3,"click","disabled","title"],[1,"flex","items-center","gap-1","text-yellow-500/90"],["fill","none","stroke","currentColor","viewBox","0 0 24 24",1,"w-5","h-5"],["stroke-linecap","round","stroke-linejoin","round","stroke-width","2","d","M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"],[1,"text-sm"],[1,"flex","items-start","gap-2","text-amber-400"],[1,"mt-0.5","shrink-0",3,"img","size"],[1,"text-sm","font-medium"],[1,"text-xs","text-amber-400/80","mt-0.5"],["aria-label","Upgrade for longer recordings","title","Upgrade for longer recordings",1,"mt-2","px-3","py-1.5","bg-secondary/40","text-muted-foreground","hover:text-foreground","rounded-full","border","border-border","hover:border-input","hover:bg-accent/60","transition-colors","cursor-pointer","flex","items-center","gap-1.5",3,"click"],[3,"img","size"],[1,"text-xs"],["id","live-transcript-scroll",1,"relative","max-h-44","overflow-y-auto","rounded-lg","border","border-border","bg-card/70","px-4","py-3"],[1,"text-sm","leading-relaxed","whitespace-pre-wrap"],[1,"text-foreground
7/90"],[1,"text-muted-foreground"],[1,"text-muted-foreground/60","italic"],[1,"mt-1.5","text-center","text-[11px]","text-muted-foreground/60"],[1,"mr-1",3,"img","size"],[1,"text-center"],[1,"w-full","max-w-xs"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.5",1,"h-12","w-12","text-red-400","mx-auto"],["stroke-linecap","round","stroke-linejoin","round","d","M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z"],[1,"btn-primary","rounded-full"],[1,"btn-secondary","text-sm",3,"disabled"],[1,"text-sm","text-muted-foreground","mb-6","px-4"],[1,"btn-primary","rounded-full",3,"click"],[1,"btn-secondary","text-sm",3,"click","disabled"],[1,"mr-1.5",3,"img","size"],[1,"flex","items-center","justify-between","mb-2"],[1,"text-foreground","text-sm","font-medium"],[1,"text-muted-foreground","text-xs"],[1,"flex","items-center","gap-1"],[1,"h-2","bg-muted","rounded-full","overflow-hidden"],[1,"h-full","bg-gradient-to-r","from-primary-500","to-pink-500","rounded-full","transition-all","duration-300","ease-out",3,"width"],[1,"h-full","bg-gradient-to-r","from-primary-500","to-pink-500","rounded-full","animate-[pulse_2s_ease-in-out_infinite]",2,"width","100%"],[1,"mt-3","text-muted-foreground","text-xs","text-center"],[1,"w-2","h-2","bg-primary-500","rounded-full","animate-pulse"],[1,"h-full","bg-gradient-to-r","from-primary-500","to-pink-500","rounded-full","transition-all","duration-300","ease-out"],[1,"flex","flex-col","items-center","pb-8","pt-2","bg-gradient-to-t","from-black/40","to-transparent"],[1,"relative","flex","items-center","justify-center"],["aria-hidden","true",1,"record-ring","absolute","inset-0","rounded-full","border-2","border-red-500/60"],[1,"relative","w-16","h-16","rounded-full","bg-primary","hover:bg-primary/90","shadow-lg","shadow-black/50","flex","items-center","justify-center","transition-colors","cursor-pointer","disabled:cursor-wait","disabled:opacity-80",3,"click","disabled","title"],[1,"text-red-600","animate-spin",3,"img","size"],[1,"w-7","h-7","bg-red-600","rounded-md"],[1,"mt-3","text-xs","text-muted-foreground"],[1,"bg-card","border","border-border","rounded-lg","p-6","max-w-md","w-full","mx-4","shadow-lg","animate-panel-in"],[1,"text-lg","font-semibold","text-foreground","leading-none","tracking-tight","mb-2"],[1,"flex","gap-3","justify-end"],[1,"btn-secondary","h-9","text-sm","px-4",3,"click"],[1,"inline-flex","items-center","justify-center","gap-2","h-9","px-4","text-sm","font-medium","rounded-md","bg-destructive","text-destructive-foreground","hover:bg-destructive/90","transition-colors","cursor-pointer",3,"click"]],template:function(A,o){A&1&&(i(0,"button",0),u("click",function(){return o.closeRecorder()}),T(),i(1,"svg",1),c(2,"path",2),r()(),m(3,XA,14,5,"div",3)(4,$A,15,22,"div",3)(5,ue,3,1,"div",3)(6,Ee,8,6,"div",4)(7,_e,11,0,"div",5)),A&2&&(a(3),l(o.startError()?3:o.isRecording()||!o.blob()?4:5),a(3),l(!o.startError()&&(o.isRecording()||!o.blob())?6:-1),a(),l(o.showConfirmDialog()?7:-1))},dependencies:[fA,rA,SA,CA],encapsulation:2})};export{TA as RecorderComponent};

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.