@stlite/browser
Version:
Browser Stlite
73 lines (72 loc) • 50.5 kB
JavaScript
import{r as h,E as U,_ as B,bp as pe,bQ as Ve,bR as _e,bS as $e,K as H,M as X,R as me,b6 as He,c as M,bT as Xe,j as f,bU as Ge,bV as qe,bC as Ye,bW as Ke,l as Qe,z as Ze,bX as ee,F as Je,b2 as et,bY as tt,bZ as it,b_ as rt,bH as st}from"./index-B3URMCDH.js";import{u as nt,F as ot}from"./FormClearHelper-K0KeOUgG.js";import{T as at,a as ge}from"./Toolbar-CHE7Bjyi.js";import{u as lt}from"./Hooks-Be-gs8Yh.js";import{c as dt}from"./createDownloadLinkElement-Dk3hYdCb.js";import{F as ct,D as ht}from"./FileDownload.esm-ChANiEtH.js";var fe=h.forwardRef(function(r,e){var t={fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"};return h.createElement(U,B({iconAttrs:t,iconVerticalAlign:"middle",iconViewBox:"0 0 24 24"},r,{ref:e}),h.createElement("g",{fill:"none"},h.createElement("rect",{width:24,height:24}),h.createElement("rect",{width:24,height:24}),h.createElement("rect",{width:24,height:24})),h.createElement("path",{d:"M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3z"}),h.createElement("path",{d:"M17 11c0 2.76-2.24 5-5 5s-5-2.24-5-5H5c0 3.53 2.61 6.43 6 6.92V21h2v-3.08c3.39-.49 6-3.39 6-6.92h-2z"}))});fe.displayName="Mic";var ve=h.forwardRef(function(r,e){var t={fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"};return h.createElement(U,B({iconAttrs:t,iconVerticalAlign:"middle",iconViewBox:"0 0 24 24"},r,{ref:e}),h.createElement("rect",{width:24,height:24,fill:"none"}),h.createElement("path",{d:"M8 19c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2s-2 .9-2 2v10c0 1.1.9 2 2 2zm6-12v10c0 1.1.9 2 2 2s2-.9 2-2V7c0-1.1-.9-2-2-2s-2 .9-2 2z"}))});ve.displayName="Pause";var be=h.forwardRef(function(r,e){var t={fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"};return h.createElement(U,B({iconAttrs:t,iconVerticalAlign:"middle",iconViewBox:"0 0 24 24"},r,{ref:e}),h.createElement("rect",{width:24,height:24,fill:"none"}),h.createElement("path",{d:"M8 6.82v10.36c0 .79.87 1.27 1.54.84l8.14-5.18a1 1 0 000-1.69L9.54 5.98A.998.998 0 008 6.82z"}))});be.displayName="PlayArrow";var ye=h.forwardRef(function(r,e){var t={fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"};return h.createElement(U,B({iconAttrs:t,iconVerticalAlign:"middle",iconViewBox:"0 0 24 24"},r,{ref:e}),h.createElement("path",{fill:"none",d:"M0 0h24v24H0V0z"}),h.createElement("path",{d:"M17.65 6.35a7.95 7.95 0 00-6.48-2.31c-3.67.37-6.69 3.35-7.1 7.02C3.52 15.91 7.27 20 12 20a7.98 7.98 0 007.21-4.56c.32-.67-.16-1.44-.9-1.44-.37 0-.72.2-.88.53a5.994 5.994 0 01-6.8 3.31c-2.22-.49-4.01-2.3-4.48-4.52A6.002 6.002 0 0112 6c1.66 0 3.14.69 4.22 1.78l-1.51 1.51c-.63.63-.19 1.71.7 1.71H19c.55 0 1-.45 1-1V6.41c0-.89-1.08-1.34-1.71-.71l-.64.65z"}))});ye.displayName="Refresh";var we=h.forwardRef(function(r,e){var t={fill:"currentColor",xmlns:"http://www.w3.org/2000/svg"};return h.createElement(U,B({iconAttrs:t,iconVerticalAlign:"middle",iconViewBox:"0 0 24 24"},r,{ref:e}),h.createElement("g",{fill:"none"},h.createElement("rect",{width:24,height:24}),h.createElement("rect",{width:24,height:24})),h.createElement("path",{fillRule:"evenodd",d:"M9 16h6c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1zm3-14C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2z"}))});we.displayName="StopCircle";function P(r,e,t,i){return new(t||(t=Promise))(function(s,o){function n(c){try{a(i.next(c))}catch(l){o(l)}}function d(c){try{a(i.throw(c))}catch(l){o(l)}}function a(c){var l;c.done?s(c.value):(l=c.value,l instanceof t?l:new t(function(p){p(l)})).then(n,d)}a((i=i.apply(r,e||[])).next())})}let z=class{constructor(){this.listeners={}}on(r,e,t){if(this.listeners[r]||(this.listeners[r]=new Set),this.listeners[r].add(e),t==null?void 0:t.once){const i=()=>{this.un(r,i),this.un(r,e)};return this.on(r,i),i}return()=>this.un(r,e)}un(r,e){var t;(t=this.listeners[r])===null||t===void 0||t.delete(e)}once(r,e){return this.on(r,e,{once:!0})}unAll(){this.listeners={}}emit(r,...e){this.listeners[r]&&this.listeners[r].forEach(t=>t(...e))}};const G={decode:function(r,e){return P(this,void 0,void 0,function*(){const t=new AudioContext({sampleRate:e});return t.decodeAudioData(r).finally(()=>t.close())})},createBuffer:function(r,e){return typeof r[0]=="number"&&(r=[r]),function(t){const i=t[0];if(i.some(s=>s>1||s<-1)){const s=i.length;let o=0;for(let n=0;n<s;n++){const d=Math.abs(i[n]);d>o&&(o=d)}for(const n of t)for(let d=0;d<s;d++)n[d]/=o}}(r),{duration:e,length:r[0].length,sampleRate:r[0].length/e,numberOfChannels:r.length,getChannelData:t=>r==null?void 0:r[t],copyFromChannel:AudioBuffer.prototype.copyFromChannel,copyToChannel:AudioBuffer.prototype.copyToChannel}}};function Ce(r,e){const t=e.xmlns?document.createElementNS(e.xmlns,r):document.createElement(r);for(const[i,s]of Object.entries(e))if(i==="children")for(const[o,n]of Object.entries(e))typeof n=="string"?t.appendChild(document.createTextNode(n)):t.appendChild(Ce(o,n));else i==="style"?Object.assign(t.style,s):i==="textContent"?t.textContent=s:t.setAttribute(i,s.toString());return t}function xe(r,e,t){const i=Ce(r,e||{});return t==null||t.appendChild(i),i}var ut=Object.freeze({__proto__:null,createElement:xe,default:xe});const pt={fetchBlob:function(r,e,t){return P(this,void 0,void 0,function*(){const i=yield fetch(r,t);if(i.status>=400)throw new Error(`Failed to fetch ${r}: ${i.status} (${i.statusText})`);return function(s,o){P(this,void 0,void 0,function*(){if(!s.body||!s.headers)return;const n=s.body.getReader(),d=Number(s.headers.get("Content-Length"))||0;let a=0;const c=p=>P(this,void 0,void 0,function*(){a+=(p==null?void 0:p.length)||0;const m=Math.round(a/d*100);o(m)}),l=()=>P(this,void 0,void 0,function*(){let p;try{p=yield n.read()}catch{return}p.done||(c(p.value),yield l())});l()})}(i.clone(),e),i.blob()})}};class mt extends z{constructor(e){super(),this.isExternalMedia=!1,e.media?(this.media=e.media,this.isExternalMedia=!0):this.media=document.createElement("audio"),e.mediaControls&&(this.media.controls=!0),e.autoplay&&(this.media.autoplay=!0),e.playbackRate!=null&&this.onMediaEvent("canplay",()=>{e.playbackRate!=null&&(this.media.playbackRate=e.playbackRate)},{once:!0})}onMediaEvent(e,t,i){return this.media.addEventListener(e,t,i),()=>this.media.removeEventListener(e,t,i)}getSrc(){return this.media.currentSrc||this.media.src||""}revokeSrc(){const e=this.getSrc();e.startsWith("blob:")&&URL.revokeObjectURL(e)}canPlayType(e){return this.media.canPlayType(e)!==""}setSrc(e,t){const i=this.getSrc();if(e&&i===e)return;this.revokeSrc();const s=t instanceof Blob&&(this.canPlayType(t.type)||!e)?URL.createObjectURL(t):e;i&&(this.media.src="");try{this.media.src=s}catch{this.media.src=e}}destroy(){this.isExternalMedia||(this.media.pause(),this.media.remove(),this.revokeSrc(),this.media.src="",this.media.load())}setMediaElement(e){this.media=e}play(){return P(this,void 0,void 0,function*(){return this.media.play()})}pause(){this.media.pause()}isPlaying(){return!this.media.paused&&!this.media.ended}setTime(e){this.media.currentTime=Math.max(0,Math.min(e,this.getDuration()))}getDuration(){return this.media.duration}getCurrentTime(){return this.media.currentTime}getVolume(){return this.media.volume}setVolume(e){this.media.volume=e}getMuted(){return this.media.muted}setMuted(e){this.media.muted=e}getPlaybackRate(){return this.media.playbackRate}isSeeking(){return this.media.seeking}setPlaybackRate(e,t){t!=null&&(this.media.preservesPitch=t),this.media.playbackRate=e}getMediaElement(){return this.media}setSinkId(e){return this.media.setSinkId(e)}}class I extends z{constructor(e,t){super(),this.timeouts=[],this.isScrollable=!1,this.audioData=null,this.resizeObserver=null,this.lastContainerWidth=0,this.isDragging=!1,this.subscriptions=[],this.unsubscribeOnScroll=[],this.subscriptions=[],this.options=e;const i=this.parentFromOptionsContainer(e.container);this.parent=i;const[s,o]=this.initHtml();i.appendChild(s),this.container=s,this.scrollContainer=o.querySelector(".scroll"),this.wrapper=o.querySelector(".wrapper"),this.canvasWrapper=o.querySelector(".canvases"),this.progressWrapper=o.querySelector(".progress"),this.cursor=o.querySelector(".cursor"),t&&o.appendChild(t),this.initEvents()}parentFromOptionsContainer(e){let t;if(typeof e=="string"?t=document.querySelector(e):e instanceof HTMLElement&&(t=e),!t)throw new Error("Container not found");return t}initEvents(){const e=t=>{const i=this.wrapper.getBoundingClientRect(),s=t.clientX-i.left,o=t.clientY-i.top;return[s/i.width,o/i.height]};if(this.wrapper.addEventListener("click",t=>{const[i,s]=e(t);this.emit("click",i,s)}),this.wrapper.addEventListener("dblclick",t=>{const[i,s]=e(t);this.emit("dblclick",i,s)}),this.options.dragToSeek!==!0&&typeof this.options.dragToSeek!="object"||this.initDrag(),this.scrollContainer.addEventListener("scroll",()=>{const{scrollLeft:t,scrollWidth:i,clientWidth:s}=this.scrollContainer,o=t/i,n=(t+s)/i;this.emit("scroll",o,n,t,t+s)}),typeof ResizeObserver=="function"){const t=this.createDelay(100);this.resizeObserver=new ResizeObserver(()=>{t().then(()=>this.onContainerResize()).catch(()=>{})}),this.resizeObserver.observe(this.scrollContainer)}}onContainerResize(){const e=this.parent.clientWidth;e===this.lastContainerWidth&&this.options.height!=="auto"||(this.lastContainerWidth=e,this.reRender())}initDrag(){this.subscriptions.push(function(e,t,i,s,o=3,n=0,d=100){if(!e)return()=>{};const a=matchMedia("(pointer: coarse)").matches;let c=()=>{};const l=p=>{if(p.button!==n)return;p.preventDefault(),p.stopPropagation();let m=p.clientX,u=p.clientY,g=!1;const b=Date.now(),v=C=>{if(C.preventDefault(),C.stopPropagation(),a&&Date.now()-b<d)return;const k=C.clientX,T=C.clientY,D=k-m,j=T-u;if(g||Math.abs(D)>o||Math.abs(j)>o){const W=e.getBoundingClientRect(),{left:_,top:N}=W;g||(i==null||i(m-_,u-N),g=!0),t(D,j,k-_,T-N),m=k,u=T}},y=C=>{if(g){const k=C.clientX,T=C.clientY,D=e.getBoundingClientRect(),{left:j,top:W}=D;s==null||s(k-j,T-W)}c()},S=C=>{C.relatedTarget&&C.relatedTarget!==document.documentElement||y(C)},w=C=>{g&&(C.stopPropagation(),C.preventDefault())},E=C=>{g&&C.preventDefault()};document.addEventListener("pointermove",v),document.addEventListener("pointerup",y),document.addEventListener("pointerout",S),document.addEventListener("pointercancel",S),document.addEventListener("touchmove",E,{passive:!1}),document.addEventListener("click",w,{capture:!0}),c=()=>{document.removeEventListener("pointermove",v),document.removeEventListener("pointerup",y),document.removeEventListener("pointerout",S),document.removeEventListener("pointercancel",S),document.removeEventListener("touchmove",E),setTimeout(()=>{document.removeEventListener("click",w,{capture:!0})},10)}};return e.addEventListener("pointerdown",l),()=>{c(),e.removeEventListener("pointerdown",l)}}(this.wrapper,(e,t,i)=>{this.emit("drag",Math.max(0,Math.min(1,i/this.wrapper.getBoundingClientRect().width)))},e=>{this.isDragging=!0,this.emit("dragstart",Math.max(0,Math.min(1,e/this.wrapper.getBoundingClientRect().width)))},e=>{this.isDragging=!1,this.emit("dragend",Math.max(0,Math.min(1,e/this.wrapper.getBoundingClientRect().width)))}))}getHeight(e,t){var i;const s=((i=this.audioData)===null||i===void 0?void 0:i.numberOfChannels)||1;if(e==null)return 128;if(!isNaN(Number(e)))return Number(e);if(e==="auto"){const o=this.parent.clientHeight||128;return t!=null&&t.every(n=>!n.overlay)?o/s:o}return 128}initHtml(){const e=document.createElement("div"),t=e.attachShadow({mode:"open"}),i=this.options.cspNonce&&typeof this.options.cspNonce=="string"?this.options.cspNonce.replace(/"/g,""):"";return t.innerHTML=`
<style${i?` nonce="${i}"`:""}>
:host {
user-select: none;
min-width: 1px;
}
:host audio {
display: block;
width: 100%;
}
:host .scroll {
overflow-x: auto;
overflow-y: hidden;
width: 100%;
position: relative;
}
:host .noScrollbar {
scrollbar-color: transparent;
scrollbar-width: none;
}
:host .noScrollbar::-webkit-scrollbar {
display: none;
-webkit-appearance: none;
}
:host .wrapper {
position: relative;
overflow: visible;
z-index: 2;
}
:host .canvases {
min-height: ${this.getHeight(this.options.height,this.options.splitChannels)}px;
}
:host .canvases > div {
position: relative;
}
:host canvas {
display: block;
position: absolute;
top: 0;
image-rendering: pixelated;
}
:host .progress {
pointer-events: none;
position: absolute;
z-index: 2;
top: 0;
left: 0;
width: 0;
height: 100%;
overflow: hidden;
}
:host .progress > div {
position: relative;
}
:host .cursor {
pointer-events: none;
position: absolute;
z-index: 5;
top: 0;
left: 0;
height: 100%;
border-radius: 2px;
}
</style>
<div class="scroll" part="scroll">
<div class="wrapper" part="wrapper">
<div class="canvases" part="canvases"></div>
<div class="progress" part="progress"></div>
<div class="cursor" part="cursor"></div>
</div>
</div>
`,[e,t]}setOptions(e){if(this.options.container!==e.container){const t=this.parentFromOptionsContainer(e.container);t.appendChild(this.container),this.parent=t}e.dragToSeek!==!0&&typeof this.options.dragToSeek!="object"||this.initDrag(),this.options=e,this.reRender()}getWrapper(){return this.wrapper}getWidth(){return this.scrollContainer.clientWidth}getScroll(){return this.scrollContainer.scrollLeft}setScroll(e){this.scrollContainer.scrollLeft=e}setScrollPercentage(e){const{scrollWidth:t}=this.scrollContainer,i=t*e;this.setScroll(i)}destroy(){var e,t;this.subscriptions.forEach(i=>i()),this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(t=this.unsubscribeOnScroll)===null||t===void 0||t.forEach(i=>i()),this.unsubscribeOnScroll=[]}createDelay(e=10){let t,i;const s=()=>{t&&clearTimeout(t),i&&i()};return this.timeouts.push(s),()=>new Promise((o,n)=>{s(),i=n,t=setTimeout(()=>{t=void 0,i=void 0,o()},e)})}convertColorValues(e){if(!Array.isArray(e))return e||"";if(e.length<2)return e[0]||"";const t=document.createElement("canvas"),i=t.getContext("2d"),s=t.height*(window.devicePixelRatio||1),o=i.createLinearGradient(0,0,0,s),n=1/(e.length-1);return e.forEach((d,a)=>{const c=a*n;o.addColorStop(c,d)}),o}getPixelRatio(){return Math.max(1,window.devicePixelRatio||1)}renderBarWaveform(e,t,i,s){const o=e[0],n=e[1]||e[0],d=o.length,{width:a,height:c}=i.canvas,l=c/2,p=this.getPixelRatio(),m=t.barWidth?t.barWidth*p:1,u=t.barGap?t.barGap*p:t.barWidth?m/2:0,g=t.barRadius||0,b=a/(m+u)/d,v=g&&"roundRect"in i?"roundRect":"rect";i.beginPath();let y=0,S=0,w=0;for(let E=0;E<=d;E++){const C=Math.round(E*b);if(C>y){const D=Math.round(S*l*s),j=D+Math.round(w*l*s)||1;let W=l-D;t.barAlign==="top"?W=0:t.barAlign==="bottom"&&(W=c-j),i[v](y*(m+u),W,m,j,g),y=C,S=0,w=0}const k=Math.abs(o[E]||0),T=Math.abs(n[E]||0);k>S&&(S=k),T>w&&(w=T)}i.fill(),i.closePath()}renderLineWaveform(e,t,i,s){const o=n=>{const d=e[n]||e[0],a=d.length,{height:c}=i.canvas,l=c/2,p=i.canvas.width/a;i.moveTo(0,l);let m=0,u=0;for(let g=0;g<=a;g++){const b=Math.round(g*p);if(b>m){const y=l+(Math.round(u*l*s)||1)*(n===0?-1:1);i.lineTo(m,y),m=b,u=0}const v=Math.abs(d[g]||0);v>u&&(u=v)}i.lineTo(m,l)};i.beginPath(),o(0),o(1),i.fill(),i.closePath()}renderWaveform(e,t,i){if(i.fillStyle=this.convertColorValues(t.waveColor),t.renderFunction)return void t.renderFunction(e,i);let s=t.barHeight||1;if(t.normalize){const o=Array.from(e[0]).reduce((n,d)=>Math.max(n,Math.abs(d)),0);s=o?1/o:1}t.barWidth||t.barGap||t.barAlign?this.renderBarWaveform(e,t,i,s):this.renderLineWaveform(e,t,i,s)}renderSingleCanvas(e,t,i,s,o,n,d){const a=this.getPixelRatio(),c=document.createElement("canvas");c.width=Math.round(i*a),c.height=Math.round(s*a),c.style.width=`${i}px`,c.style.height=`${s}px`,c.style.left=`${Math.round(o)}px`,n.appendChild(c);const l=c.getContext("2d");if(this.renderWaveform(e,t,l),c.width>0&&c.height>0){const p=c.cloneNode(),m=p.getContext("2d");m.drawImage(c,0,0),m.globalCompositeOperation="source-in",m.fillStyle=this.convertColorValues(t.progressColor),m.fillRect(0,0,c.width,c.height),d.appendChild(p)}}renderMultiCanvas(e,t,i,s,o,n){const d=this.getPixelRatio(),{clientWidth:a}=this.scrollContainer,c=i/d;let l=Math.min(I.MAX_CANVAS_WIDTH,a,c),p={};if(l===0)return;if(t.barWidth||t.barGap){const v=t.barWidth||.5,y=v+(t.barGap||v/2);l%y!=0&&(l=Math.floor(l/y)*y)}const m=v=>{if(v<0||v>=u||p[v])return;p[v]=!0;const y=v*l,S=Math.min(c-y,l);if(S<=0)return;const w=e.map(E=>{const C=Math.floor(y/c*E.length),k=Math.floor((y+S)/c*E.length);return E.slice(C,k)});this.renderSingleCanvas(w,t,S,s,y,o,n)},u=Math.ceil(c/l);if(!this.isScrollable){for(let v=0;v<u;v++)m(v);return}const g=this.scrollContainer.scrollLeft/c,b=Math.floor(g*u);if(m(b-1),m(b),m(b+1),u>1){const v=this.on("scroll",()=>{const{scrollLeft:y}=this.scrollContainer,S=Math.floor(y/c*u);Object.keys(p).length>I.MAX_NODES&&(o.innerHTML="",n.innerHTML="",p={}),m(S-1),m(S),m(S+1)});this.unsubscribeOnScroll.push(v)}}renderChannel(e,t,i,s){var{overlay:o}=t,n=function(l,p){var m={};for(var u in l)Object.prototype.hasOwnProperty.call(l,u)&&p.indexOf(u)<0&&(m[u]=l[u]);if(l!=null&&typeof Object.getOwnPropertySymbols=="function"){var g=0;for(u=Object.getOwnPropertySymbols(l);g<u.length;g++)p.indexOf(u[g])<0&&Object.prototype.propertyIsEnumerable.call(l,u[g])&&(m[u[g]]=l[u[g]])}return m}(t,["overlay"]);const d=document.createElement("div"),a=this.getHeight(n.height,n.splitChannels);d.style.height=`${a}px`,o&&s>0&&(d.style.marginTop=`-${a}px`),this.canvasWrapper.style.minHeight=`${a}px`,this.canvasWrapper.appendChild(d);const c=d.cloneNode();this.progressWrapper.appendChild(c),this.renderMultiCanvas(e,n,i,a,d,c)}render(e){return P(this,void 0,void 0,function*(){var t;this.timeouts.forEach(a=>a()),this.timeouts=[],this.canvasWrapper.innerHTML="",this.progressWrapper.innerHTML="",this.options.width!=null&&(this.scrollContainer.style.width=typeof this.options.width=="number"?`${this.options.width}px`:this.options.width);const i=this.getPixelRatio(),s=this.scrollContainer.clientWidth,o=Math.ceil(e.duration*(this.options.minPxPerSec||0));this.isScrollable=o>s;const n=this.options.fillParent&&!this.isScrollable,d=(n?s:o)*i;if(this.wrapper.style.width=n?"100%":`${o}px`,this.scrollContainer.style.overflowX=this.isScrollable?"auto":"hidden",this.scrollContainer.classList.toggle("noScrollbar",!!this.options.hideScrollbar),this.cursor.style.backgroundColor=`${this.options.cursorColor||this.options.progressColor}`,this.cursor.style.width=`${this.options.cursorWidth}px`,this.audioData=e,this.emit("render"),this.options.splitChannels)for(let a=0;a<e.numberOfChannels;a++){const c=Object.assign(Object.assign({},this.options),(t=this.options.splitChannels)===null||t===void 0?void 0:t[a]);this.renderChannel([e.getChannelData(a)],c,d,a)}else{const a=[e.getChannelData(0)];e.numberOfChannels>1&&a.push(e.getChannelData(1)),this.renderChannel(a,this.options,d,0)}Promise.resolve().then(()=>this.emit("rendered"))})}reRender(){if(this.unsubscribeOnScroll.forEach(i=>i()),this.unsubscribeOnScroll=[],!this.audioData)return;const{scrollWidth:e}=this.scrollContainer,{right:t}=this.progressWrapper.getBoundingClientRect();if(this.render(this.audioData),this.isScrollable&&e!==this.scrollContainer.scrollWidth){const{right:i}=this.progressWrapper.getBoundingClientRect();let s=i-t;s*=2,s=s<0?Math.floor(s):Math.ceil(s),s/=2,this.scrollContainer.scrollLeft+=s}}zoom(e){this.options.minPxPerSec=e,this.reRender()}scrollIntoView(e,t=!1){const{scrollLeft:i,scrollWidth:s,clientWidth:o}=this.scrollContainer,n=e*s,d=i,a=i+o,c=o/2;if(this.isDragging)n+30>a?this.scrollContainer.scrollLeft+=30:n-30<d&&(this.scrollContainer.scrollLeft-=30);else{(n<d||n>a)&&(this.scrollContainer.scrollLeft=n-(this.options.autoCenter?c:0));const l=n-i-c;t&&this.options.autoCenter&&l>0&&(this.scrollContainer.scrollLeft+=Math.min(l,10))}{const l=this.scrollContainer.scrollLeft,p=l/s,m=(l+o)/s;this.emit("scroll",p,m,l,l+o)}}renderProgress(e,t){if(isNaN(e))return;const i=100*e;this.canvasWrapper.style.clipPath=`polygon(${i}% 0, 100% 0, 100% 100%, ${i}% 100%)`,this.progressWrapper.style.width=`${i}%`,this.cursor.style.left=`${i}%`,this.cursor.style.transform=`translateX(-${Math.round(i)===100?this.options.cursorWidth:0}px)`,this.isScrollable&&this.options.autoScroll&&this.scrollIntoView(e,t)}exportImage(e,t,i){return P(this,void 0,void 0,function*(){const s=this.canvasWrapper.querySelectorAll("canvas");if(!s.length)throw new Error("No waveform data");if(i==="dataURL"){const o=Array.from(s).map(n=>n.toDataURL(e,t));return Promise.resolve(o)}return Promise.all(Array.from(s).map(o=>new Promise((n,d)=>{o.toBlob(a=>{a?n(a):d(new Error("Could not export image"))},e,t)})))})}}I.MAX_CANVAS_WIDTH=8e3,I.MAX_NODES=10;class gt extends z{constructor(){super(...arguments),this.unsubscribe=()=>{}}start(){this.unsubscribe=this.on("tick",()=>{requestAnimationFrame(()=>{this.emit("tick")})}),this.emit("tick")}stop(){this.unsubscribe()}destroy(){this.unsubscribe()}}class te extends z{constructor(e=new AudioContext){super(),this.bufferNode=null,this.playStartTime=0,this.playedDuration=0,this._muted=!1,this._playbackRate=1,this._duration=void 0,this.buffer=null,this.currentSrc="",this.paused=!0,this.crossOrigin=null,this.seeking=!1,this.autoplay=!1,this.addEventListener=this.on,this.removeEventListener=this.un,this.audioContext=e,this.gainNode=this.audioContext.createGain(),this.gainNode.connect(this.audioContext.destination)}load(){return P(this,void 0,void 0,function*(){})}get src(){return this.currentSrc}set src(e){if(this.currentSrc=e,this._duration=void 0,!e)return this.buffer=null,void this.emit("emptied");fetch(e).then(t=>{if(t.status>=400)throw new Error(`Failed to fetch ${e}: ${t.status} (${t.statusText})`);return t.arrayBuffer()}).then(t=>this.currentSrc!==e?null:this.audioContext.decodeAudioData(t)).then(t=>{this.currentSrc===e&&(this.buffer=t,this.emit("loadedmetadata"),this.emit("canplay"),this.autoplay&&this.play())})}_play(){var e;if(!this.paused)return;this.paused=!1,(e=this.bufferNode)===null||e===void 0||e.disconnect(),this.bufferNode=this.audioContext.createBufferSource(),this.buffer&&(this.bufferNode.buffer=this.buffer),this.bufferNode.playbackRate.value=this._playbackRate,this.bufferNode.connect(this.gainNode);let t=this.playedDuration*this._playbackRate;(t>=this.duration||t<0)&&(t=0,this.playedDuration=0),this.bufferNode.start(this.audioContext.currentTime,t),this.playStartTime=this.audioContext.currentTime,this.bufferNode.onended=()=>{this.currentTime>=this.duration&&(this.pause(),this.emit("ended"))}}_pause(){var e;this.paused=!0,(e=this.bufferNode)===null||e===void 0||e.stop(),this.playedDuration+=this.audioContext.currentTime-this.playStartTime}play(){return P(this,void 0,void 0,function*(){this.paused&&(this._play(),this.emit("play"))})}pause(){this.paused||(this._pause(),this.emit("pause"))}stopAt(e){const t=e-this.currentTime,i=this.bufferNode;i==null||i.stop(this.audioContext.currentTime+t),i==null||i.addEventListener("ended",()=>{i===this.bufferNode&&(this.bufferNode=null,this.pause())},{once:!0})}setSinkId(e){return P(this,void 0,void 0,function*(){return this.audioContext.setSinkId(e)})}get playbackRate(){return this._playbackRate}set playbackRate(e){this._playbackRate=e,this.bufferNode&&(this.bufferNode.playbackRate.value=e)}get currentTime(){return(this.paused?this.playedDuration:this.playedDuration+(this.audioContext.currentTime-this.playStartTime))*this._playbackRate}set currentTime(e){const t=!this.paused;t&&this._pause(),this.playedDuration=e/this._playbackRate,t&&this._play(),this.emit("seeking"),this.emit("timeupdate")}get duration(){var e,t;return(e=this._duration)!==null&&e!==void 0?e:((t=this.buffer)===null||t===void 0?void 0:t.duration)||0}set duration(e){this._duration=e}get volume(){return this.gainNode.gain.value}set volume(e){this.gainNode.gain.value=e,this.emit("volumechange")}get muted(){return this._muted}set muted(e){this._muted!==e&&(this._muted=e,this._muted?this.gainNode.disconnect():this.gainNode.connect(this.audioContext.destination))}canPlayType(e){return/^(audio|video)\//.test(e)}getGainNode(){return this.gainNode}getChannelData(){const e=[];if(!this.buffer)return e;const t=this.buffer.numberOfChannels;for(let i=0;i<t;i++)e.push(this.buffer.getChannelData(i));return e}}const ft={waveColor:"#999",progressColor:"#555",cursorWidth:1,minPxPerSec:0,fillParent:!0,interact:!0,dragToSeek:!1,autoScroll:!0,autoCenter:!0,sampleRate:8e3};class V extends mt{static create(e){return new V(e)}constructor(e){const t=e.media||(e.backend==="WebAudio"?new te:void 0);super({media:t,mediaControls:e.mediaControls,autoplay:e.autoplay,playbackRate:e.audioRate}),this.plugins=[],this.decodedData=null,this.stopAtPosition=null,this.subscriptions=[],this.mediaSubscriptions=[],this.abortController=null,this.options=Object.assign({},ft,e),this.timer=new gt;const i=t?void 0:this.getMediaElement();this.renderer=new I(this.options,i),this.initPlayerEvents(),this.initRendererEvents(),this.initTimerEvents(),this.initPlugins();const s=this.options.url||this.getSrc()||"";Promise.resolve().then(()=>{this.emit("init");const{peaks:o,duration:n}=this.options;(s||o&&n)&&this.load(s,o,n).catch(()=>null)})}updateProgress(e=this.getCurrentTime()){return this.renderer.renderProgress(e/this.getDuration(),this.isPlaying()),e}initTimerEvents(){this.subscriptions.push(this.timer.on("tick",()=>{if(!this.isSeeking()){const e=this.updateProgress();this.emit("timeupdate",e),this.emit("audioprocess",e),this.stopAtPosition!=null&&this.isPlaying()&&e>=this.stopAtPosition&&this.pause()}}))}initPlayerEvents(){this.isPlaying()&&(this.emit("play"),this.timer.start()),this.mediaSubscriptions.push(this.onMediaEvent("timeupdate",()=>{const e=this.updateProgress();this.emit("timeupdate",e)}),this.onMediaEvent("play",()=>{this.emit("play"),this.timer.start()}),this.onMediaEvent("pause",()=>{this.emit("pause"),this.timer.stop(),this.stopAtPosition=null}),this.onMediaEvent("emptied",()=>{this.timer.stop(),this.stopAtPosition=null}),this.onMediaEvent("ended",()=>{this.emit("timeupdate",this.getDuration()),this.emit("finish"),this.stopAtPosition=null}),this.onMediaEvent("seeking",()=>{this.emit("seeking",this.getCurrentTime())}),this.onMediaEvent("error",()=>{var e;this.emit("error",(e=this.getMediaElement().error)!==null&&e!==void 0?e:new Error("Media error")),this.stopAtPosition=null}))}initRendererEvents(){this.subscriptions.push(this.renderer.on("click",(e,t)=>{this.options.interact&&(this.seekTo(e),this.emit("interaction",e*this.getDuration()),this.emit("click",e,t))}),this.renderer.on("dblclick",(e,t)=>{this.emit("dblclick",e,t)}),this.renderer.on("scroll",(e,t,i,s)=>{const o=this.getDuration();this.emit("scroll",e*o,t*o,i,s)}),this.renderer.on("render",()=>{this.emit("redraw")}),this.renderer.on("rendered",()=>{this.emit("redrawcomplete")}),this.renderer.on("dragstart",e=>{this.emit("dragstart",e)}),this.renderer.on("dragend",e=>{this.emit("dragend",e)}));{let e;this.subscriptions.push(this.renderer.on("drag",t=>{if(!this.options.interact)return;let i;this.renderer.renderProgress(t),clearTimeout(e),this.isPlaying()?i=0:this.options.dragToSeek===!0?i=200:typeof this.options.dragToSeek=="object"&&this.options.dragToSeek!==void 0&&(i=this.options.dragToSeek.debounceTime),e=setTimeout(()=>{this.seekTo(t)},i),this.emit("interaction",t*this.getDuration()),this.emit("drag",t)}))}}initPlugins(){var e;!((e=this.options.plugins)===null||e===void 0)&&e.length&&this.options.plugins.forEach(t=>{this.registerPlugin(t)})}unsubscribePlayerEvents(){this.mediaSubscriptions.forEach(e=>e()),this.mediaSubscriptions=[]}setOptions(e){this.options=Object.assign({},this.options,e),e.duration&&!e.peaks&&(this.decodedData=G.createBuffer(this.exportPeaks(),e.duration)),e.peaks&&e.duration&&(this.decodedData=G.createBuffer(e.peaks,e.duration)),this.renderer.setOptions(this.options),e.audioRate&&this.setPlaybackRate(e.audioRate),e.mediaControls!=null&&(this.getMediaElement().controls=e.mediaControls)}registerPlugin(e){return e._init(this),this.plugins.push(e),this.subscriptions.push(e.once("destroy",()=>{this.plugins=this.plugins.filter(t=>t!==e)})),e}getWrapper(){return this.renderer.getWrapper()}getWidth(){return this.renderer.getWidth()}getScroll(){return this.renderer.getScroll()}setScroll(e){return this.renderer.setScroll(e)}setScrollTime(e){const t=e/this.getDuration();this.renderer.setScrollPercentage(t)}getActivePlugins(){return this.plugins}loadAudio(e,t,i,s){return P(this,void 0,void 0,function*(){var o;if(this.emit("load",e),!this.options.media&&this.isPlaying()&&this.pause(),this.decodedData=null,this.stopAtPosition=null,!t&&!i){const d=this.options.fetchParams||{};window.AbortController&&!d.signal&&(this.abortController=new AbortController,d.signal=(o=this.abortController)===null||o===void 0?void 0:o.signal);const a=l=>this.emit("loading",l);t=yield pt.fetchBlob(e,a,d);const c=this.options.blobMimeType;c&&(t=new Blob([t],{type:c}))}this.setSrc(e,t);const n=yield new Promise(d=>{const a=s||this.getDuration();a?d(a):this.mediaSubscriptions.push(this.onMediaEvent("loadedmetadata",()=>d(this.getDuration()),{once:!0}))});if(!e&&!t){const d=this.getMediaElement();d instanceof te&&(d.duration=n)}if(i)this.decodedData=G.createBuffer(i,n||0);else if(t){const d=yield t.arrayBuffer();this.decodedData=yield G.decode(d,this.options.sampleRate)}this.decodedData&&(this.emit("decode",this.getDuration()),this.renderer.render(this.decodedData)),this.emit("ready",this.getDuration())})}load(e,t,i){return P(this,void 0,void 0,function*(){try{return yield this.loadAudio(e,void 0,t,i)}catch(s){throw this.emit("error",s),s}})}loadBlob(e,t,i){return P(this,void 0,void 0,function*(){try{return yield this.loadAudio("",e,t,i)}catch(s){throw this.emit("error",s),s}})}zoom(e){if(!this.decodedData)throw new Error("No audio loaded");this.renderer.zoom(e),this.emit("zoom",e)}getDecodedData(){return this.decodedData}exportPeaks({channels:e=2,maxLength:t=8e3,precision:i=1e4}={}){if(!this.decodedData)throw new Error("The audio has not been decoded yet");const s=Math.min(e,this.decodedData.numberOfChannels),o=[];for(let n=0;n<s;n++){const d=this.decodedData.getChannelData(n),a=[],c=d.length/t;for(let l=0;l<t;l++){const p=d.slice(Math.floor(l*c),Math.ceil((l+1)*c));let m=0;for(let u=0;u<p.length;u++){const g=p[u];Math.abs(g)>Math.abs(m)&&(m=g)}a.push(Math.round(m*i)/i)}o.push(a)}return o}getDuration(){let e=super.getDuration()||0;return e!==0&&e!==1/0||!this.decodedData||(e=this.decodedData.duration),e}toggleInteraction(e){this.options.interact=e}setTime(e){this.stopAtPosition=null,super.setTime(e),this.updateProgress(e),this.emit("timeupdate",e)}seekTo(e){const t=this.getDuration()*e;this.setTime(t)}play(e,t){const i=Object.create(null,{play:{get:()=>super.play}});return P(this,void 0,void 0,function*(){e!=null&&this.setTime(e);const s=yield i.play.call(this);return t!=null&&(this.media instanceof te?this.media.stopAt(t):this.stopAtPosition=t),s})}playPause(){return P(this,void 0,void 0,function*(){return this.isPlaying()?this.pause():this.play()})}stop(){this.pause(),this.setTime(0)}skip(e){this.setTime(this.getCurrentTime()+e)}empty(){this.load("",[[0]],.001)}setMediaElement(e){this.unsubscribePlayerEvents(),super.setMediaElement(e),this.initPlayerEvents()}exportImage(){return P(this,arguments,void 0,function*(e="image/png",t=1,i="dataURL"){return this.renderer.exportImage(e,t,i)})}destroy(){var e;this.emit("destroy"),(e=this.abortController)===null||e===void 0||e.abort(),this.plugins.forEach(t=>t.destroy()),this.subscriptions.forEach(t=>t()),this.unsubscribePlayerEvents(),this.timer.destroy(),this.renderer.destroy(),super.destroy()}}V.BasePlugin=class extends z{constructor(r){super(),this.subscriptions=[],this.options=r}onInit(){}_init(r){this.wavesurfer=r,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(r=>r())}},V.dom=ut;function ie(r,e,t,i){return new(t||(t=Promise))(function(s,o){function n(c){try{a(i.next(c))}catch(l){o(l)}}function d(c){try{a(i.throw(c))}catch(l){o(l)}}function a(c){var l;c.done?s(c.value):(l=c.value,l instanceof t?l:new t(function(p){p(l)})).then(n,d)}a((i=i.apply(r,[])).next())})}class Se{constructor(){this.listeners={}}on(e,t,i){if(this.listeners[e]||(this.listeners[e]=new Set),this.listeners[e].add(t),i==null?void 0:i.once){const s=()=>{this.un(e,s),this.un(e,t)};return this.on(e,s),s}return()=>this.un(e,t)}un(e,t){var i;(i=this.listeners[e])===null||i===void 0||i.delete(t)}once(e,t){return this.on(e,t,{once:!0})}unAll(){this.listeners={}}emit(e,...t){this.listeners[e]&&this.listeners[e].forEach(i=>i(...t))}}class vt extends Se{constructor(e){super(),this.subscriptions=[],this.options=e}onInit(){}_init(e){this.wavesurfer=e,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(e=>e())}}class bt extends Se{constructor(){super(...arguments),this.unsubscribe=()=>{}}start(){this.unsubscribe=this.on("tick",()=>{requestAnimationFrame(()=>{this.emit("tick")})}),this.emit("tick")}stop(){this.unsubscribe()}destroy(){this.unsubscribe()}}const yt=["audio/webm","audio/wav","audio/mpeg","audio/mp4","audio/mp3"];class Y extends vt{constructor(e){var t,i,s,o,n,d;super(Object.assign(Object.assign({},e),{audioBitsPerSecond:(t=e.audioBitsPerSecond)!==null&&t!==void 0?t:128e3,scrollingWaveform:(i=e.scrollingWaveform)!==null&&i!==void 0&&i,scrollingWaveformWindow:(s=e.scrollingWaveformWindow)!==null&&s!==void 0?s:5,continuousWaveform:(o=e.continuousWaveform)!==null&&o!==void 0&&o,renderRecordedAudio:(n=e.renderRecordedAudio)===null||n===void 0||n,mediaRecorderTimeslice:(d=e.mediaRecorderTimeslice)!==null&&d!==void 0?d:void 0})),this.stream=null,this.mediaRecorder=null,this.dataWindow=null,this.isWaveformPaused=!1,this.lastStartTime=0,this.lastDuration=0,this.duration=0,this.timer=new bt,this.subscriptions.push(this.timer.on("tick",()=>{const a=performance.now()-this.lastStartTime;this.duration=this.isPaused()?this.duration:this.lastDuration+a,this.emit("record-progress",this.duration)}))}static create(e){return new Y(e||{})}renderMicStream(e){var t;const i=new AudioContext,s=i.createMediaStreamSource(e),o=i.createAnalyser();s.connect(o),this.options.continuousWaveform&&(o.fftSize=32);const n=o.frequencyBinCount,d=new Float32Array(n);let a=0;this.wavesurfer&&((t=this.originalOptions)!==null&&t!==void 0||(this.originalOptions=Object.assign({},this.wavesurfer.options)),this.wavesurfer.options.interact=!1,this.options.scrollingWaveform&&(this.wavesurfer.options.cursorWidth=0));const c=setInterval(()=>{var l,p,m,u;if(!this.isWaveformPaused){if(o.getFloatTimeDomainData(d),this.options.scrollingWaveform){const g=Math.floor((this.options.scrollingWaveformWindow||0)*i.sampleRate),b=Math.min(g,this.dataWindow?this.dataWindow.length+n:n),v=new Float32Array(g);if(this.dataWindow){const y=Math.max(0,g-this.dataWindow.length);v.set(this.dataWindow.slice(-b+n),y)}v.set(d,g-n),this.dataWindow=v}else if(this.options.continuousWaveform){if(!this.dataWindow){const b=this.options.continuousWaveformDuration?Math.round(100*this.options.continuousWaveformDuration):((p=(l=this.wavesurfer)===null||l===void 0?void 0:l.getWidth())!==null&&p!==void 0?p:0)*window.devicePixelRatio;this.dataWindow=new Float32Array(b)}let g=0;for(let b=0;b<n;b++){const v=Math.abs(d[b]);v>g&&(g=v)}if(a+1>this.dataWindow.length){const b=new Float32Array(2*this.dataWindow.length);b.set(this.dataWindow,0),this.dataWindow=b}this.dataWindow[a]=g,a++}else this.dataWindow=d;if(this.wavesurfer){const g=((u=(m=this.dataWindow)===null||m===void 0?void 0:m.length)!==null&&u!==void 0?u:0)/100;this.wavesurfer.load("",[this.dataWindow],this.options.scrollingWaveform?this.options.scrollingWaveformWindow:g).then(()=>{this.wavesurfer&&this.options.continuousWaveform&&(this.wavesurfer.setTime(this.getDuration()/1e3),this.wavesurfer.options.minPxPerSec||this.wavesurfer.setOptions({minPxPerSec:this.wavesurfer.getWidth()/this.wavesurfer.getDuration()}))}).catch(b=>{console.error("Error rendering real-time recording data:",b)})}}},10);return{onDestroy:()=>{clearInterval(c),s==null||s.disconnect(),i==null||i.close()},onEnd:()=>{this.isWaveformPaused=!0,clearInterval(c),this.stopMic()}}}startMic(e){return ie(this,void 0,void 0,function*(){let t;try{t=yield navigator.mediaDevices.getUserMedia({audio:e==null||e})}catch(o){throw new Error("Error accessing the microphone: "+o.message)}const{onDestroy:i,onEnd:s}=this.renderMicStream(t);return this.subscriptions.push(this.once("destroy",i)),this.subscriptions.push(this.once("record-end",s)),this.stream=t,t})}stopMic(){this.stream&&(this.stream.getTracks().forEach(e=>e.stop()),this.stream=null,this.mediaRecorder=null)}startRecording(e){return ie(this,void 0,void 0,function*(){const t=this.stream||(yield this.startMic(e));this.dataWindow=null;const i=this.mediaRecorder||new MediaRecorder(t,{mimeType:this.options.mimeType||yt.find(n=>MediaRecorder.isTypeSupported(n)),audioBitsPerSecond:this.options.audioBitsPerSecond});this.mediaRecorder=i,this.stopRecording();const s=[];i.ondataavailable=n=>{n.data.size>0&&s.push(n.data),this.emit("record-data-available",n.data)};const o=n=>{var d;const a=new Blob(s,{type:i.mimeType});this.emit(n,a),this.options.renderRecordedAudio&&(this.applyOriginalOptionsIfNeeded(),(d=this.wavesurfer)===null||d===void 0||d.load(URL.createObjectURL(a)))};i.onpause=()=>o("record-pause"),i.onstop=()=>o("record-end"),i.start(this.options.mediaRecorderTimeslice),this.lastStartTime=performance.now(),this.lastDuration=0,this.duration=0,this.isWaveformPaused=!1,this.timer.start(),this.emit("record-start")})}getDuration(){return this.duration}isRecording(){var e;return((e=this.mediaRecorder)===null||e===void 0?void 0:e.state)==="recording"}isPaused(){var e;return((e=this.mediaRecorder)===null||e===void 0?void 0:e.state)==="paused"}isActive(){var e;return((e=this.mediaRecorder)===null||e===void 0?void 0:e.state)!=="inactive"}stopRecording(){var e;this.isActive()&&((e=this.mediaRecorder)===null||e===void 0||e.stop(),this.timer.stop())}pauseRecording(){var e,t;this.isRecording()&&(this.isWaveformPaused=!0,(e=this.mediaRecorder)===null||e===void 0||e.requestData(),(t=this.mediaRecorder)===null||t===void 0||t.pause(),this.timer.stop(),this.lastDuration=this.duration)}resumeRecording(){var e;this.isPaused()&&(this.isWaveformPaused=!1,(e=this.mediaRecorder)===null||e===void 0||e.resume(),this.timer.start(),this.lastStartTime=performance.now(),this.emit("record-resume"))}static getAvailableAudioDevices(){return ie(this,void 0,void 0,function*(){return navigator.mediaDevices.enumerateDevices().then(e=>e.filter(t=>t.kind==="audioinput"))})}destroy(){this.applyOriginalOptionsIfNeeded(),super.destroy(),this.stopRecording(),this.stopMic()}applyOriginalOptionsIfNeeded(){this.wavesurfer&&this.originalOptions&&(this.wavesurfer.setOptions(this.originalOptions),delete this.originalOptions)}}const wt=async({files:r,uploadClient:e,widgetMgr:t,widgetInfo:i,fragmentId:s})=>{let o=[];try{o=await e.fetchFileURLs(r)}catch(c){return{successfulUploads:[],failedUploads:r.map(l=>({file:l,error:pe(c)}))}}const n=Ve(r,o),d=[],a=[];return await Promise.all(n.map(async([c,l])=>{if(!c||!l||!l.uploadUrl||!l.fileId)return{file:c,fileUrl:l,error:new Error("No upload URL found")};try{await e.uploadFile({id:l.fileId,formId:i.formId||""},l.uploadUrl,c),d.push({fileUrl:l,file:c})}catch(p){const m=pe(p);a.push({file:c,error:m})}})),t.setFileUploaderStateValue(i,new _e({uploadedFileInfo:d.map(({file:c,fileUrl:l})=>new $e({fileId:l.fileId,fileUrls:l,name:c.name,size:c.size}))}),{fromUi:!0},s),{successfulUploads:d,failedUploads:a}},re=({widgetMgr:r,id:e,formId:t,key:i,defaultValue:s})=>{h.useEffect(()=>{const l=r.getElementState(e,i);H(l)&&X(s)&&r.setElementState(e,i,s)},[r,e,i,s]);const[o,n]=h.useState(r.getElementState(e,i)??s),d=h.useCallback(l=>{r.setElementState(e,i,l),n(l)},[r,e,i]),a=h.useMemo(()=>({formId:t||""}),[t]),c=h.useCallback(()=>d(s),[s,d]);return nt({element:a,widgetMgr:r,onFormCleared:c}),[o,d]},Ct=(r,e)=>{const{libConfig:{enforceDownloadInNewTab:t=!1}}=me.useContext(He);return h.useCallback(()=>{if(!r)return;const i=dt({enforceDownloadInNewTab:t,url:r,filename:e});i.style.display="none",document.body.appendChild(i),i.click(),document.body.removeChild(i)},[r,t,e])},xt=M("div",{target:"e12wn80j15"})(""),Re=M("div",{target:"e12wn80j14"})(({theme:r})=>({height:r.sizes.largestElementHeight,width:"100%",background:r.colors.secondaryBg,borderRadius:r.radii.default,marginBottom:r.spacing.twoXS,display:"flex",alignItems:"center",position:"relative",paddingLeft:r.spacing.xs,paddingRight:r.spacing.sm,border:r.colors.widgetBorderColor?`${r.sizes.borderWidth} solid ${r.colors.widgetBorderColor}`:void 0}),""),St=M("div",{target:"e12wn80j13"})({name:"82a6rk",styles:"flex:1"}),Rt=M("div",{target:"e12wn80j12"})(({show:r})=>({display:r?"block":"none"}),""),Et=M("span",{target:"e12wn80j11"})(({theme:r,isPlayingOrRecording:e})=>({margin:r.spacing.sm,fontFamily:r.fonts.monospace,color:e?r.colors.bodyText:r.colors.fadedText60,backgroundColor:r.colors.secondaryBg,fontSize:r.fontSizes.sm}),""),Ee=M("div",{target:"e12wn80j10"})({name:"1kyw74z",styles:"width:100%;text-align:center;overflow:hidden"}),Pe=M("span",{target:"e12wn80j9"})(({theme:r})=>({color:r.colors.bodyText}),""),Pt=M("a",{target:"e12wn80j8"})(({theme:r})=>({color:r.colors.link,textDecoration:"underline"}),""),Mt=M("div",{target:"e12wn80j7"})(({theme:r})=>({height:r.sizes.largestElementHeight,display:"flex",justifyContent:"center",alignItems:"center"}),""),kt=M("div",{target:"e12wn80j6"})(({theme:r})=>{const e="0.625em";return{opacity:.2,width:"100%",height:e,backgroundSize:e,backgroundImage:`radial-gradient(${r.colors.fadedText10} 40%, transparent 40%)`,backgroundRepeat:"repeat"}},""),Wt=M("span",{target:"e12wn80j5"})(({theme:r})=>({"& > button":{color:r.colors.primary,padding:r.spacing.threeXS},"& > button:hover, & > button:focus":{color:r.colors.red}}),""),Tt=M("span",{target:"e12wn80j4"})(({theme:r})=>({"& > button":{padding:r.spacing.threeXS,color:r.colors.fadedText60},"& > button:hover, & > button:focus":{color:r.colors.bodyText}}),""),Me=M("span",{target:"e12wn80j3"})(({theme:r})=>({"& > button":{padding:r.spacing.threeXS,color:r.colors.fadedText60},"& > button:hover, & > button:focus":{color:r.colors.bodyText}}),""),se=M("div",{target:"e12wn80j2"})(({theme:r})=>({display:"flex",justifyContent:"center",alignItems:"center",flexGrow:0,flexShrink:1,padding:r.spacing.xs,gap:r.spacing.twoXS,marginRight:r.spacing.twoXS}),""),Dt=M("div",{target:"e12wn80j1"})(({theme:r})=>({marginLeft:r.spacing.sm}),""),At=M(Xe,{target:"e12wn80j0"})(({theme:r})=>({fontSize:r.fontSizes.sm,width:r.sizes.spinnerSize,height:r.sizes.spinnerSize,borderWidth:r.sizes.spinnerThickness,justifyContents:"center",padding:r.spacing.none,margin:r.spacing.none,borderColor:r.colors.borderColor,borderTopColor:r.colors.secondary,flexGrow:0,flexShrink:0}),""),jt=()=>f.jsxs(Ee,{children:[f.jsx(Pe,{children:"This app would like to use your microphone."})," ",f.jsx(Pt,{href:Ge,children:"Learn how to allow access."})]}),Ot=h.memo(jt),Lt=()=>f.jsx(Mt,{children:f.jsx(kt,{})}),It=h.memo(Lt),Nt=4,Ut=4,Bt=4,zt=8,Ft=0,q="00:00",ke=r=>{const e=Math.floor(r/1e3),t=Math.floor(e/60),i=Math.floor(t/60),s=e%60,o=t%60,n=s.toString().padStart(2,"0"),d=o.toString().padStart(2,"0"),a=i.toString().padStart(2,"0");return t<60?`${d}:${n}`:`${a}:${d}:${n}`},F=({onClick:r,disabled:e,ariaLabel:t,iconContent:i})=>f.jsx(qe,{kind:Ye.BORDERLESS_ICON,onClick:r,disabled:e,"aria-label":t,containerWidth:!0,"data-testid":"stAudioInputActionButton",children:f.jsx(Ke,{content:i,size:"lg",color:"inherit"})}),Vt=({disabled:r,stopRecording:e})=>f.jsx(Wt,{children:f.jsx(F,{onClick:e,disabled:r,ariaLabel:"Stop recording",iconContent:we})}),_t=({disabled:r,isPlaying:e,onClickPlayPause:t})=>f.jsx(Me,{children:e?f.jsx(F,{onClick:t,disabled:r,ariaLabel:"Pause",iconContent:ve}):f.jsx(F,{onClick:t,disabled:r,ariaLabel:"Play",iconContent:be})}),$t=({disabled:r,startRecording:e})=>f.jsx(Tt,{children:f.jsx(F,{onClick:e,disabled:r,ariaLabel:"Record",iconContent:fe})}),Ht=({onClick:r})=>f.jsx(Me,{children:f.jsx(F,{disabled:!1,onClick:r,ariaLabel:"Reset",iconContent:ye})}),Xt=({disabled:r,isRecording:e,isPlaying:t,isUploading:i,isError:s,recordingUrlExists:o,startRecording:n,stopRecording:d,onClickPlayPause:a,onClear:c})=>s?f.jsx(se,{children:f.jsx(Ht,{onClick:c})}):i?f.jsx(se,{children:f.jsx(At,{"aria-label":"Uploading"})}):f.jsxs(se,{children:[e?f.jsx(Vt,{disabled:r,stopRecording:d}):f.jsx($t,{disabled:r,startRecording:n}),o&&f.jsx(_t,{disabled:r,isPlaying:t,onClickPlayPause:a})]}),Gt=h.memo(Xt),qt=Qe.getLogger("convertAudioToWav");async function Yt(r){const e=new window.AudioContext,t=await r.arrayBuffer();let i;try{i=await e.decodeAudioData(t)}catch(u){qt.error(u);return}const s=44,o=i.numberOfChannels,n=i.sampleRate,d=i.length*o*2+s,a=new ArrayBuffer(d),c=new DataView(a),l={0:{type:"string",value:"RIFF"},4:{type:"uint32",value:d-8},8:{type:"string",value:"WAVE"},12:{type:"string",value:"fmt "},16:{type:"uint32",value:16},20:{type:"uint16",value:1},22:{type:"uint16",value:o},24:{type:"uint32",value:n},28:{type:"uint32",value:n*o*2},32:{type:"uint16",value:o*2},34:{type:"uint16",value:16},36:{type:"string",value:"data"},40:{type:"uint32",value:i.length*o*2}};Object.entries(l).forEach(([u,{type:g,value:b}])=>{const v=parseInt(u,10);g==="string"?Kt(c,v,b):g==="uint32"?c.setUint32(v,b,!0):g==="uint16"&&c.setUint16(v,b,!0)});let p=s;for(let u=0;u<i.length;u++)for(let g=0;g<o;g++){const b=Math.max(-1,Math.min(1,i.getChannelData(g)[u]));c.setInt16(p,b*32767,!0),p+=2}const m=new Uint8Array(a);return new Blob([m],{type:"audio/wav"})}function Kt(r,e,t){for(let i=0;i<t.length;i++)r.setUint8(e+i,t.charCodeAt(i))}const Qt=()=>f.jsx(Ee,{children:f.jsx(Pe,{children:"An error has occurred, please try again."})}),Zt=h.memo(Qt),Jt=({element:r,uploadClient:e,widgetMgr:t,fragmentId:i,disabled:s})=>{var o;const n=Ze(),d=lt(n),[a,c]=h.useState(null),l=me.useRef(null),[p,m]=re({widgetMgr:t,id:r.id,key:"deleteFileUrl",defaultValue:null}),[u,g]=h.useState(null),[b,v]=h.useState([]),[y,S]=h.useState(null),[w,E]=re({widgetMgr:t,id:r.id,key:"recordingUrl",defaultValue:null}),[,C]=h.useState(0),k=()=>{C(x=>x+1)},[T,D]=h.useState(q),[j,W]=re({widgetMgr:t,id:r.id,formId:r.formId,key:"recordingTime",defaultValue:q}),[_,N]=h.useState(!1),[$,We]=h.useState(!1),[ne,Te]=h.useState(!1),[De,oe]=h.useState(!1),[K,Q]=h.useState(!1),ae=r.id,O=r.formId,le=h.useCallback(async x=>{oe(!0),X(O)&&t.setFormsWithUploadsInProgress(new Set([O]));let R;if(x.type==="audio/wav"?R=x:R=await Yt(x),!R){Q(!0);return}const A=URL.createObjectURL(R),Ue=new Date().toISOString().slice(0,16).replace(":","-"),Be=new File([R],`${Ue}_audio.wav`,{type:R.type});E(A),wt({files:[Be],uploadClient:e,widgetMgr:t,widgetInfo:{id:ae,formId:O},fragmentId:i}).then(({successfulUploads:ze,failedUploads:Fe})=>{if(Fe.length>0){Q(!0);return}const J=ze[0];J&&J.fileUrl.deleteUrl&&m(J.fileUrl.deleteUrl)}).finally(()=>{X(O)&&t.setFormsWithUploadsInProgress(new Set),oe(!1)})},[E,e,t,ae,O,i,m]),L=h.useCallback(({updateWidgetManager:x,deleteFile:R})=>{H(a)||H(p)||(E(null),a.empty(),R&&e.deleteFile(p),m(null),D(q),W(q),x&&t.setFileUploaderStateValue(r,{},{fromUi:!0},i),N(!1),X(w)&&URL.revokeObjectURL(w))},[p,w,e,a,r,t,i,W,E,m]);h.useEffect(()=>{if(H(O))return;const x=new ot;return x.manageFormClearListener(t,O,()=>L({updateWidgetManager:!0,deleteFile:!1})),()=>x.disconnect()},[O,L,t]);const de=h.useCallback(()=>{if(l.current===null)return;const x=V.create({container:l.current,waveColor:w?ee(n.colors.fadedText40,n.colors.secondaryBg):n.colors.primary,progressColor:n.colors.bodyText,height:Je(n.sizes.largestElementHeight)-2*Nt,barWidth:Ut,barGap:Bt,barRadius:zt,cursorWidth:Ft,url:w??void 0});x.on("timeupdate",A=>{D(ke(A*1e3))}),x.on("pause",()=>{k()});const R=x.registerPlugin(Y.create({scrollingWaveform:!1,renderRecordedAudio:!0}));return R.on("record-end",async A=>{le(A)}),R.on("record-progress",A=>{W(ke(A))}),c(x),g(R),()=>{x&&x.destroy(),R&&R.destroy()}},[le]);h.useEffect(()=>de(),[de]),h.useEffect(()=>{et(d,n)||a==null||a.setOptions({waveColor:w?ee(n.colors.fadedText40,n.colors.secondaryBg):n.colors.primary,progressColor:n.colors.bodyText})},[n,d,w,a]);const Ae=h.useCallback(()=>{a&&(a.playPause(),N(!0),k())},[a]),je=h.useCallback(async()=>{let x=y;ne||(await navigator.mediaDevices.getUserMedia({audio:!0}).then(()=>Y.getAvailableAudioDevices().then(R=>{if(v(R),R.length>0){const{deviceId:A}=R[0];S(A),x=A}})).catch(R=>{We(!0)}),Te(!0)),!(!u||!x||!a)&&(a.setOptions({waveColor:n.colors.primary}),w&&L({updateWidgetManager:!1,deleteFile:!0}),u.startRecording({deviceId:x}).then(()=>{k()}))},[y,u,n,a,w,L,ne]),Oe=h.useCallback(()=>{u&&(u.stopRecording(),a==null||a.setOptions({waveColor:ee(n.colors.fadedText40,n.colors.secondaryBg)}))},[u,a,n]),Le=Ct(w,"recording.wav"),Z=!!(u!=null&&u.isRecording()),ce=!!(a!=null&&a.isPlaying()),Ie=Z||ce,he=!Z&&!w&&!$,Ne=$||he||K,ue=s||$;return f.jsxs(xt,{className:"stAudioInput","data-testid":"stAudioInput",children:[f.jsx(tt,{label:r.label,disabled:ue,labelVisibility:it((o=r.labelVisibility)==null?void 0:o.value),children:r.help&&f.jsx(Dt,{children:f.jsx(rt,{content:r.help,placement:st.TOP})})}),f.jsxs(Re,{children:[f.jsxs(at,{isFullScreen:!1,disableFullscreenMode:!0,target:Re,children:[w&&f.jsx(ge,{label:"Download as WAV",icon:ct,onClick:()=>Le()}),p&&f.jsx(ge,{label:"Clear recording",icon:ht,onClick:()=>L({updateWidgetManager:!0,deleteFile:!0})})]}),f.jsx(Gt,{isRecording:Z,isPl