1import{i as n,c as s}from"./mermaid-NA5CF7SZ-BW-qNGGt.js";import"./chunk-ZA36QIGN-Dq1Fkfik.js";import"./chunk-62JRHF6Z-bfD53SOp.js";import"./jsx-runtime-u17CrQMm.js";import"./Button-DmMEzNVw.js";import"./useHover-CzmIqD15.js";import"./usePress-3lCCvr6b.js";import"./index-DBzAvLVe.js";import"./icon-CwkHE3DH.js";import"./index-CDpyLZpS.js";import"./popover-Bhy_zgj0.js";import"./Dialog-BG5YzsK1.js";import"./FocusScope-oqnhLXFu.js";import"./VisuallyHidden-q1NBfwCb.js";import"./index-1i1syFfE.js";import"./button-DRcrZ6dN.js";import"./radio-group-C6OtSvt6.js";import"./useFormValidation-BjyAfLpO.js";import"./Label-BtVzf35a.js";import"./useSlot-CnzSNurq.js";import"./field-BJaIK68s.js";import"./freebc-logo-dark-6JRgUcu9.js";import"./paragraph-DF-eS1Gr.js";import"./StepProgress-CEdcqf3x.js";import"./header-C0smGzNw.js";import"./methodSlugs-BVCwE0DF.js";import"./schemas-BdPyM-YW.js";import"./CookieBanner-BekpxL5y.js";import"./index-BbN0-VeI.js";import"./constants-DAWul56a.js";import"./resetVisitorIdentity-BQ95LcRG.js";import"./visitorBootstrap-Y4scAR2D.js";import"./useTranslation-3Qrhfb_e.js";import"./context-CoWWtjvn.js";import"./Trans-DRFLHH82.js";import"./i18next-Cm10fOe7.js";import"./featureFlags-B_-_Lj8a.js";import"./logger-dBxPFjkU.js";import"./LocalStorageProvider-BwGvbneT.js";import"./methods-mbBMuTYW.js";import"./input-DVAAwZbe.js";import"./Input-CgmZSlN-.js";import"./index-BkzU2qH-.js";import"./parse-BAgr0IfG.js";import"./helpers-CV61HEKM.js";import"./index-CzZrtqVF.js";import"./emailMe-igzsz98x.js";import"./MethodLabels-D7myVQIE.js";import"./Select-LclSQMWS.js";import"./DragAndDrop-5s64eDsR.js";import"./Modal-ozEIpyXh.js";import"./card-DzTowZFt.js";import"./a11y-yERX5OOZ.js";import"./Banner-Dr18bpFK.js";import"./index-BG7ZdmCr.js";import"./formatLlmOutputToSsml-BC6vs2WN.js";import"./utils-DfrdhlvH.js";import"./Checkbox-C9NCF2Xb.js";import"./useToggleState-D13tW15H.js";class ft{constructor(i,t,e){this.playbackSession=i,this.turnId=t,this.timings=e}playbackSession;turnId;timings;queue=[];pumping=!1;enqueuedFirst=!1;utteranceIndex=0;enqueueFromExtract(i,t){if(i.length===0){this.fixupRolesWhenStreamComplete(t);return}for(let e=0;e<i.length;e++){const p=e===i.length-1,r=t&&p;let o;this.enqueuedFirst?o=r?"last":"middle":(this.enqueuedFirst=!0,o=r?"only":"first");const m=this.utteranceIndex>0;this.utteranceIndex++,this.queue.push({text:i[e],role:o,isContinuation:m})}this.fixupRolesWhenStreamComplete(t),this.pump()}fixupRolesWhenStreamComplete(i){if(!i||this.queue.length===0)return;const t=this.queue[this.queue.length-1];this.queue.length===1?t.role==="first"&&(t.role="only"):t.role==="middle"&&(t.role="last")}async waitUntilIdle(){!this.pumping&&this.queue.length===0||await new Promise(i=>{const t=()=>{if(!this.pumping&&this.queue.length===0){i();return}window.setTimeout(t,16)};t()})}async pump(){if(!this.pumping){this.pumping=!0;try{for(;this.queue.length>0;){if(this.turnId!==void 0&&!n(this.turnId)){this.queue.length=0;break}const i=this.queue.shift(),t=i.text.trim();if(!t)continue;const e=i.role!=="middle";await s(t,{turnId:this.turnId,timings:e?this.timings:void 0,isContinuation:i.isContinuation,playbackSession:this.playbackSession,playbackRole:i.role})}}finally{this.pumping=!1,this.queue.length>0&&this.pump()}}}}export{ft as ConnieSentenceTtsDrain};
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.