{"version":3,"file":"AudioWave.ChrvDbje.mjs","names":["useRef","useState","useCallback","p","useMemo","_Fragment"],"sources":["https:/framerusercontent.com/modules/448BcHw6xCbYCas1KY76/GHjbVmYwlnqeBYCzKKcC/AudioWave.js"],"sourcesContent":["// AudioWave — Framer Marketplace Component\n// Ambient audio player with SVG wave / bars animation\n// Tap to toggle · Persists across Framer page navigation · Pauses on tab/app hide\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useCallback,useEffect,useMemo,useRef,useState}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";// ─── Global state ─────────────────────────────────────────────────────────────\n// Everything here survives Framer page navigation, including full remounts.\n//\n// _wasPlaying / _resumeImmediate bridge the unmount→remount gap on homepage:\n//   releaseAudio saves playing state → acquireAudio resumes on the next mount\n//   and signals that playAmount and phase should NOT reset.\n//\n// _globalPhase persists the wave phase so the animation continues seamlessly\n// after a full remount instead of restarting from 0.\nlet _audio=null;let _audioUrl=null;let _mountCount=0;let _wasPlaying=false;let _resumeImmediate=false;let _globalPhase=0// survives remount so wave never restarts from flat\n;let _releasePauseTimer=null;function acquireAudio(url){if(typeof window===\"undefined\")return null;if(_releasePauseTimer!==null){window.clearTimeout(_releasePauseTimer);_releasePauseTimer=null;}_mountCount++;if(_audioUrl!==url){_wasPlaying=false;_resumeImmediate=false;if(_audio){_audio.pause();_audio.removeAttribute(\"src\");_audio.load();}_audio=new Audio;_audio.loop=true;_audio.preload=\"auto\";_audio.src=url;_audioUrl=url;}if(_wasPlaying&&_audio?.paused){_audio.play().catch(()=>{});_wasPlaying=false;_resumeImmediate=true;}return _audio;}function releaseAudio(){_mountCount=Math.max(0,_mountCount-1);if(_mountCount===0&&_audio){_wasPlaying=!_audio.paused;// Debounce pausing to avoid micro-pauses during fast page transitions\n// where the component unmounts and remounts within the same navigation.\nif(typeof window!==\"undefined\"){if(_releasePauseTimer!==null)window.clearTimeout(_releasePauseTimer);_releasePauseTimer=window.setTimeout(()=>{_releasePauseTimer=null;if(_mountCount===0)_audio?.pause();},250);}else{_audio.pause();}}}// ─── useRaf ───────────────────────────────────────────────────────────────────\n// RAF loop that runs while `active` is true.\n// cb always reads the latest closure values via a ref — no need to restart.\nfunction useRaf(active,cb){const cbRef=useRef(cb);cbRef.current=cb;const rafRef=useRef(null);const lastRef=useRef(null);useEffect(()=>{if(!active){if(rafRef.current!==null)cancelAnimationFrame(rafRef.current);rafRef.current=null;lastRef.current=null;return;}const tick=t=>{const dt=lastRef.current===null?0:(t-lastRef.current)/1e3;lastRef.current=t;cbRef.current(dt);rafRef.current=requestAnimationFrame(tick);};rafRef.current=requestAnimationFrame(tick);return()=>{if(rafRef.current!==null)cancelAnimationFrame(rafRef.current);rafRef.current=null;lastRef.current=null;};},[active]);}// ─── Helpers ──────────────────────────────────────────────────────────────────\nconst easeInOutCubic=x=>x<.5?4*x*x*x:1-Math.pow(-2*x+2,3)/2;const env=x=>Math.sin(x*Math.PI);function labelCharStyle(active,fromBelow,i,speed){const dur=speed*.85;return{display:\"inline-block\",transform:active?\"translateY(0%)\":`translateY(${fromBelow?\"105%\":\"-105%\"})`,filter:active?\"blur(0px)\":\"blur(2px)\",transition:`transform ${dur}s cubic-bezier(0.22,1,0.36,1) ${i*.032}s, filter ${dur*.65}s ease ${i*.032}s`,willChange:\"transform, filter\"};}// ─── Component ────────────────────────────────────────────────────────────────\n/**\n * @framerIntrinsicWidth 300\n * @framerIntrinsicHeight 80\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function AudioWave(props){const{audioUrl=\"\",volume=80,animation=\"wave\",animationSpeed=1,intensity=1,barCount=26,color=\"#0099FF\",restingColor=\"#CCCCCC\",strokeWidth=3,endCap=\"round\",svgWidth=240,svgHeight=80,transitionSpeed=.8,restingLevel=.35,showLabel=true,labelOnText=\"Sound On\",labelOffText=\"Sound Off\",labelFont,labelColor=\"#000000\",labelPosition=\"right\",labelGap=12,style}=props;const isStatic=useIsStaticRenderer();const strokeLinecap=endCap===\"round\"?\"round\":\"butt\";const w=Math.max(16,svgWidth);const h=Math.max(16,svgHeight);const minTap=44;const tapW=Math.max(w,minTap);const tapH=Math.max(h,minTap);const resting=Math.max(0,Math.min(.95,restingLevel));// ── State ────────────────────────────────────────────────────────────────\nconst[isPlaying,setIsPlaying]=useState(false);const[playAmount,setPlayAmount]=useState(resting);const[phase,setPhase]=useState(_globalPhase)// init from global so remount continues\n;const audioRef=useRef(null);const playAmountRef=useRef(resting);const phaseRef=useRef(_globalPhase)// init from global\n;const rafTransRef=useRef(null);const resumeWasPlayingRef=useRef(false);const desiredPlayingRef=useRef(false);// ── Audio setup ──────────────────────────────────────────────────────────\nuseEffect(()=>{if(isStatic||!audioUrl)return;const audio=acquireAudio(audioUrl);if(!audio)return;audioRef.current=audio;const onPlay=()=>setIsPlaying(true);const onPause=()=>setIsPlaying(false);audio.addEventListener(\"play\",onPlay);audio.addEventListener(\"pause\",onPause);if(!audio.paused){// Soft nav: audio never stopped, snap immediately to full amplitude\nsetIsPlaying(true);playAmountRef.current=1;setPlayAmount(1);}else if(_resumeImmediate){// Full remount (homepage): acquireAudio already called play().\n// Snap playAmount to 1 and keep phase from global — no fade-in glitch.\n_resumeImmediate=false;playAmountRef.current=1;setPlayAmount(1);}return()=>{audio.removeEventListener(\"play\",onPlay);audio.removeEventListener(\"pause\",onPause);releaseAudio();};},[audioUrl,isStatic]);// ── Volume ───────────────────────────────────────────────────────────────\nuseEffect(()=>{if(_audio)_audio.volume=Math.max(0,Math.min(1,volume/100));},[volume]);// ── Pause on tab / app hide ───────────────────────────────────────────────\n// visibilitychange — tab switching, desktop + mobile\n// pagehide/pageshow — iOS Safari bfcache and app backgrounding\nuseEffect(()=>{if(isStatic||typeof document===\"undefined\"||typeof window===\"undefined\")return;const pause=()=>{const a=audioRef.current;if(!a||a.paused)return;// Remember intent so we can resume when returning.\nresumeWasPlayingRef.current=desiredPlayingRef.current;a.pause();};const resume=()=>{// Resume only if user last intended playback.\nif(!desiredPlayingRef.current&&!resumeWasPlayingRef.current)return;if(typeof document!==\"undefined\"&&document.hidden)return;const a=audioRef.current;if(!a)return;resumeWasPlayingRef.current=false;a.play().catch(()=>{// If the browser blocks autoplay on resume, keep the flag set\n// so a later focus/visibility event can try again.\nresumeWasPlayingRef.current=true;});};const onVisibility=()=>{if(document.hidden){pause();}else{// iOS Safari can report visible slightly before audio is allowed.\n// Defer a tick to improve reliability.\nsetTimeout(resume,0);}};const onBlur=()=>pause();const onFocus=()=>setTimeout(resume,0);const onPageShow=()=>setTimeout(resume,0);document.addEventListener(\"visibilitychange\",onVisibility);// iOS Safari: switching apps / opening tab switcher can fire blur/focus more reliably than visibilitychange\nwindow.addEventListener(\"blur\",onBlur);window.addEventListener(\"focus\",onFocus);// bfcache + backgrounding\nwindow.addEventListener(\"pagehide\",pause);window.addEventListener(\"pageshow\",onPageShow);// Page Lifecycle API (supported in Chromium)\nwindow.addEventListener(\"freeze\",pause);window.addEventListener(\"resume\",resume);return()=>{document.removeEventListener(\"visibilitychange\",onVisibility);window.removeEventListener(\"blur\",onBlur);window.removeEventListener(\"focus\",onFocus);window.removeEventListener(\"pagehide\",pause);window.removeEventListener(\"pageshow\",onPageShow);window.removeEventListener(\"freeze\",pause);window.removeEventListener(\"resume\",resume);};},[isStatic]);// ── Click handler ────────────────────────────────────────────────────────\nconst handleClick=useCallback(()=>{if(isStatic)return;const a=audioRef.current;if(!a)return;if(a.paused){desiredPlayingRef.current=true;a.play().catch(e=>console.warn(\"AudioWave:\",e));}else{desiredPlayingRef.current=false;a.pause();}},[isStatic]);// ── playAmount transition ─────────────────────────────────────────────────\nuseEffect(()=>{if(typeof window===\"undefined\"){const v=isPlaying?1:resting;playAmountRef.current=v;setPlayAmount(v);return;}const from=playAmountRef.current;const to=isPlaying?1:resting;if(from===to)return;const dur=Math.max(60,transitionSpeed*1e3);const t0=performance.now();const tick=t=>{const p=Math.min(1,(t-t0)/dur);const v=from+(to-from)*easeInOutCubic(p);playAmountRef.current=v;setPlayAmount(v);if(p<1)rafTransRef.current=requestAnimationFrame(tick);};if(rafTransRef.current!==null)cancelAnimationFrame(rafTransRef.current);rafTransRef.current=requestAnimationFrame(tick);return()=>{if(rafTransRef.current!==null){cancelAnimationFrame(rafTransRef.current);rafTransRef.current=null;}};},[isPlaying,transitionSpeed,resting]);// ── Phase loop ───────────────────────────────────────────────────────────\n// Writes to both phaseRef (local) and _globalPhase (survives remount).\nuseRaf(!isStatic&&isPlaying,dt=>{phaseRef.current+=dt*Math.PI*2*Math.max(.01,animationSpeed)*.6;_globalPhase=phaseRef.current// keep global in sync\n;setPhase(phaseRef.current);});// ── SVG geometry ─────────────────────────────────────────────────────────\nconst computed=useMemo(()=>{const a=Math.max(0,Math.min(1,playAmount));const ph=phase;const upx=100/w;const upy=100/h;const capPx=endCap===\"round\"?Math.max(1,strokeWidth/2):0;const px=Math.min(12,capPx*upx);const py=Math.min(12,capPx*upy);const cy=y=>Math.max(py,Math.min(100-py,y));const path=fn=>{const pts=[];for(let i=0;i<=120;i++){const x01=i/120;pts.push(`${(px+x01*(100-px*2)).toFixed(2)},${fn(x01).toFixed(2)}`);}return`M ${pts.join(\" L \")}`;};if(animation===\"wave\"){return{kind:\"path\",d:a<=1e-4?path(()=>50):path(x=>cy(50+Math.sin(x*Math.PI*6+ph*1.05)*env(x)*18*intensity*a))};}// Bars — short stubs when paused, full height when playing\nconst count=Math.max(2,Math.round(barCount));const restHalf=endCap===\"round\"?0:strokeWidth*upy/2;const barPad=Math.min(6,Math.max(.5,strokeWidth/2*upx));const bars=Array.from({length:count},(_,i)=>{const x01=count<=1?.5:i/(count-1);const edgeEnv=.3+.7*Math.pow(Math.sin(x01*Math.PI),.5);const lfo=.35+.65*(.5+.5*Math.sin(ph*(1.15+i*.015)+i*.9+Math.sin(ph*.4+i*.2)*.6));const target=(6+38*lfo)*edgeEnv*intensity;return Math.max(0,restHalf+(Math.min(46,target)-restHalf)*a);});return{kind:\"bars\",bars,count,barPad};},[animation,intensity,playAmount,phase,barCount,strokeWidth,endCap,w,h]);// ── Label chars ──────────────────────────────────────────────────────────\nconst onChars=useMemo(()=>labelOnText.split(\"\"),[labelOnText]);const offChars=useMemo(()=>labelOffText.split(\"\"),[labelOffText]);// ── Render ───────────────────────────────────────────────────────────────\n//\n// Single root div — Framer passes position/size via `style` which we spread\n// first. We then add our own layout, interaction, and tap-padding on top.\n//\n// Single root div — Framer passes position/size via `style` which we spread.\n// The SVG is centered inside whatever frame size the user sets in Framer,\n// so making the frame larger naturally creates a bigger tap target on mobile.\nconst flexDir=labelPosition===\"top\"?\"column-reverse\":labelPosition===\"bottom\"?\"column\":labelPosition===\"left\"?\"row-reverse\":\"row\";// Unique class for CSS :focus-visible ring — works without React state,\n// fires reliably on both keyboard Tab and tap (on devices that support it).\nconst focusClass=\"aw-focus\";return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                .${focusClass}:focus-visible {\n                    outline: none;\n                    box-shadow: 0 0 0 3px ${color}55;\n                    border-radius: 6px;\n                }\n                .${focusClass}:focus:not(:focus-visible) {\n                    outline: none;\n                    box-shadow: none;\n                }\n            `}),/*#__PURE__*/_jsx(\"div\",{className:focusClass,style:{...style,width:\"100%\",height:\"100%\",minWidth:tapW,minHeight:tapH,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",position:\"relative\",cursor:\"pointer\",touchAction:\"manipulation\",WebkitTapHighlightColor:\"transparent\",userSelect:\"none\",WebkitUserSelect:\"none\",outline:\"none\"},onPointerUp:isStatic?undefined:e=>{// Use pointer events to avoid iOS/Safari double-triggering\n// click after touch (which toggles play→pause instantly).\nif(e.pointerType!==\"mouse\")e.preventDefault();handleClick();},role:\"button\",\"aria-label\":isPlaying?\"Pause audio\":\"Play audio\",\"aria-pressed\":isPlaying,\"aria-keyshortcuts\":\"Enter Space\",tabIndex:0,onKeyDown:isStatic?undefined:e=>{if(e.key===\"Enter\"||e.key===\" \"){e.preventDefault();handleClick();}},children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:flexDir,alignItems:\"center\",justifyContent:\"center\",gap:labelGap},children:[/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 100 100\",preserveAspectRatio:\"none\",style:{display:\"block\",overflow:\"hidden\",flexShrink:0,width:w,height:h},focusable:\"false\",\"aria-hidden\":true,children:computed.kind===\"path\"?/*#__PURE__*/_jsx(\"path\",{d:computed.d,stroke:isPlaying?color:restingColor,strokeWidth:strokeWidth,fill:\"none\",strokeLinecap:strokeLinecap,strokeLinejoin:\"round\",vectorEffect:\"non-scaling-stroke\"}):/*#__PURE__*/_jsx(\"g\",{children:computed.bars.map((half,i)=>{const x=computed.count<=1?50:computed.barPad+i/(computed.count-1)*(100-computed.barPad*2);return /*#__PURE__*/_jsx(\"line\",{x1:x,y1:50-half,x2:x,y2:50+half,stroke:isPlaying?color:restingColor,strokeWidth:strokeWidth,strokeLinecap:strokeLinecap,vectorEffect:\"non-scaling-stroke\"},i);})})}),showLabel&&/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",display:\"inline-block\"},children:[/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":!isPlaying,style:{...labelFont,color:labelColor,whiteSpace:\"nowrap\",display:\"inline-flex\",position:\"absolute\",top:0,left:0,pointerEvents:\"none\",overflow:\"hidden\"},children:onChars.map((c,i)=>/*#__PURE__*/_jsx(\"span\",{style:labelCharStyle(isPlaying,true,i,transitionSpeed),children:c===\" \"?\"\\xa0\":c},i))}),/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":isPlaying,style:{...labelFont,color:labelColor,whiteSpace:\"nowrap\",display:\"inline-flex\",pointerEvents:\"none\",overflow:\"hidden\"},children:offChars.map((c,i)=>/*#__PURE__*/_jsx(\"span\",{style:labelCharStyle(!isPlaying,false,i,transitionSpeed),children:c===\" \"?\"\\xa0\":c},i))})]})]})})]});}// ─── Property Controls ────────────────────────────────────────────────────────\naddPropertyControls(AudioWave,{audioUrl:{type:ControlType.File,title:\"Audio File\",allowedFileTypes:[\"mp3\",\"wav\",\"ogg\",\"m4a\"]},volume:{type:ControlType.Number,title:\"Volume\",defaultValue:80,min:0,max:100,step:5,unit:\"%\"},animation:{type:ControlType.Enum,title:\"Style\",options:[\"wave\",\"bars\"],optionTitles:[\"Wave\",\"Bars\"],defaultValue:\"wave\",displaySegmentedControl:true},barCount:{type:ControlType.Number,title:\"Bar Count\",defaultValue:26,min:4,max:80,step:1,hidden:p=>p.animation!==\"bars\"},animationSpeed:{type:ControlType.Number,title:\"Speed\",defaultValue:1,min:.2,max:4,step:.1},intensity:{type:ControlType.Number,title:\"Intensity\",defaultValue:1,min:.2,max:2.5,step:.1},transitionSpeed:{type:ControlType.Number,title:\"Fade Duration\",defaultValue:.8,min:.1,max:3,step:.1,unit:\"s\"},restingLevel:{type:ControlType.Number,title:\"Resting Level\",defaultValue:.35,min:0,max:.95,step:.05},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#0099FF\"},restingColor:{type:ControlType.Color,title:\"Resting Color\",defaultValue:\"#CCCCCC\"},svgWidth:{type:ControlType.Number,title:\"Width\",defaultValue:240,min:16,max:800,step:4,unit:\"px\"},svgHeight:{type:ControlType.Number,title:\"Height\",defaultValue:80,min:16,max:400,step:4,unit:\"px\"},strokeWidth:{type:ControlType.Number,title:\"Line Weight\",defaultValue:3,min:1,max:10,step:.5,unit:\"px\"},endCap:{type:ControlType.Enum,title:\"Line Cap\",options:[\"round\",\"square\"],optionTitles:[\"Rounded\",\"Square\"],defaultValue:\"round\",displaySegmentedControl:true},showLabel:{type:ControlType.Boolean,title:\"Show Label\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\"},labelPosition:{type:ControlType.Enum,title:\"Position\",options:[\"left\",\"right\",\"top\",\"bottom\"],optionTitles:[\"Left\",\"Right\",\"Top\",\"Bottom\"],defaultValue:\"right\",hidden:p=>!p.showLabel},labelGap:{type:ControlType.Number,title:\"Gap\",defaultValue:12,min:0,max:48,step:2,unit:\"px\",hidden:p=>!p.showLabel},labelOnText:{type:ControlType.String,title:\"Playing Text\",defaultValue:\"Sound On\",hidden:p=>!p.showLabel},labelOffText:{type:ControlType.String,title:\"Paused Text\",defaultValue:\"Sound Off\",hidden:p=>!p.showLabel},labelFont:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:14,variant:\"Medium\",letterSpacing:\"-0.01em\",lineHeight:1},hidden:p=>!p.showLabel},labelColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#000000\",hidden:p=>!p.showLabel}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AudioWave\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"300\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"80\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AudioWave.map"],"mappings":"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"}