{"version":3,"file":"shared-lib.DgAFV9vx.mjs","names":["u","useMemo","useState","useRef","start","p"],"sources":["https:/framerusercontent.com/modules/zm0RCS9597DBInOW0OSe/ZgDegIkhTiV3hxlfUw90/AudioPlayer.js","https:/framerusercontent.com/modules/xOzQ14wHrZk3SOhbY9Cd/0lPHU4mImKm29aNXsNuW/XzwV2Zff7.js","https:/framerusercontent.com/modules/jgxjPiEGU8652QP7CWgQ/X20evdZTbmqAAB3eSFMd/siteMetadata.js"],"sourcesContent":["// code/AudioPlayer.tsx\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useRef,useEffect,useMemo,useState}from\"react\";import{motion,useReducedMotion}from\"framer-motion\";import{addPropertyControls,ControlType}from\"framer\";// Turn Dropbox links into direct streaming\nfunction normalizeDropboxUrl(u){if(!u)return u;try{const url=new URL(u);const host=url.hostname.toLowerCase();if(host.endsWith(\"dropbox.com\")&&url.pathname.startsWith(\"/scl/fi/\")){const rlkey=url.searchParams.get(\"rlkey\");url.hostname=\"dl.dropboxusercontent.com\";url.search=\"\";if(rlkey)url.searchParams.set(\"rlkey\",rlkey);url.searchParams.set(\"raw\",\"1\");return url.toString();}if((host.endsWith(\"dropbox.com\")||host.endsWith(\"dropboxusercontent.com\"))&&url.pathname.startsWith(\"/s/\")){url.hostname=\"dl.dropboxusercontent.com\";url.search=\"\";url.searchParams.set(\"raw\",\"1\");return url.toString();}return url.toString();}catch{return u;}}export default function AudioPlayer({audioUrl=\"\",vinylSrc,barColor=\"#111\",background=\"transparent\",speed=1.2,volume=.6,barCount=5,barWidth=6,barGap=6,minScale=.2,maxScale=1.2,showStatus=false,startPlaying=false,autoplayMode=\"unmuted\",showUnmuteHint=true,loop=true,preventOverlap=true,respectReducedMotion=true,debug=false}){const src=useMemo(()=>normalizeDropboxUrl(audioUrl)||\"\",[audioUrl]);const reducedMotion=useReducedMotion();const rm=respectReducedMotion&&reducedMotion;const[uiPlaying,setUiPlaying]=useState(false);const[status,setStatus]=useState(\"idle\");const[hint,setHint]=useState(false);const audioRef=useRef(null);const hasInteracted=useRef(false);// Guards against duplicate starts\nconst hasAutoStarted=useRef(false);const isStarting=useRef(false);const lastStartTs=useRef(0);// Fade (element volume only → single route)\nconst fadeRaf=useRef(null);const seq=useRef(0);const cancelFade=()=>{if(fadeRaf.current!=null)cancelAnimationFrame(fadeRaf.current);fadeRaf.current=null;};const clamp01=v=>Math.max(0,Math.min(1,v));const targetVol=()=>clamp01(volume>0?volume:.05);const fadeTo=(a,to,ms,after)=>{const my=++seq.current;const start=performance.now();const from=a.volume;const step=t=>{if(seq.current!==my)return;const p=Math.min(1,(t-start)/ms);a.volume=from+(to-from)*p;if(p<1)fadeRaf.current=requestAnimationFrame(step);else{fadeRaf.current=null;after?.();}};fadeRaf.current=requestAnimationFrame(step);};// Kill any other media (audio or video) except \"exceptEl\"\nconst killAllMediaExcept=exceptEl=>{try{const mine=exceptEl||null;document.querySelectorAll(\"audio,video\").forEach(m=>{if(m!==mine){try{m.pause();}catch{}try{m.currentTime=0;}catch{}try{m.muted=false;}catch{}m.removeAttribute(\"data-ap-active\");}});}catch{}};// Basic setup\nuseEffect(()=>{const a=audioRef.current;if(!a)return;a.setAttribute(\"playsinline\",\"true\");a.setAttribute(\"webkit-playsinline\",\"true\");a.loop=!!loop;a.setAttribute(\"data-ap\",\"1\");a.setAttribute(\"data-ap-component\",\"AudioPlayer\");// Hard kill any leftover media on mount (ghosts from previous page)\nif(preventOverlap)killAllMediaExcept(a);},[loop,preventOverlap]);// React to src changes\nconst lastUrl=useRef(\"\");useEffect(()=>{const a=audioRef.current;if(!a||!src||lastUrl.current===src)return;cancelFade();const swap=()=>{a.src=src;try{a.currentTime=1e-4;}catch{}a.muted=false;a.volume=0;setStatus(\"src set\");};if(!a.paused)fadeTo(a,0,100,()=>{try{a.pause();}catch{}swap();});else swap();lastUrl.current=src;hasAutoStarted.current=false;},[src]);// Stop other media (for safety before playing)\nconst stopOthers=()=>{if(!preventOverlap)return;killAllMediaExcept(audioRef.current);};// Core start/stop\nconst start=async allowMutedAutoplay=>{const a=audioRef.current;if(!a)return;const now=performance.now();if(isStarting.current||now-lastStartTs.current<120)return;isStarting.current=true;lastStartTs.current=now;stopOthers();cancelFade();a.muted=false;a.volume=0;a.loop=!!loop;try{await a.play();fadeTo(a,targetVol(),160);setStatus(\"playing\");}catch{if(allowMutedAutoplay){try{a.muted=true;a.volume=0;await a.play();setStatus(\"autoplay muted\");if(showUnmuteHint)setHint(true);}catch{setStatus(\"play blocked – tap\");}}else{setStatus(\"play blocked – tap\");}}finally{isStarting.current=false;}};const stop=()=>{const a=audioRef.current;if(!a)return;cancelFade();if(!a.paused)fadeTo(a,0,120,()=>{try{a.pause();}catch{}a.currentTime=0;a.muted=false;setStatus(\"paused\");});else{a.currentTime=0;a.muted=false;setStatus(\"paused\");}};// One-and-only-one auto-start per mount\nuseEffect(()=>{const a=audioRef.current;if(!a)return;if(!startPlaying||autoplayMode===\"off\")return;if(hasAutoStarted.current)return;hasAutoStarted.current=true;const allowMuted=!hasInteracted.current&&autoplayMode===\"muted\";void start(allowMuted);},[startPlaying,autoplayMode]);// Audio → UI\nuseEffect(()=>{const a=audioRef.current;if(!a)return;const onPlaying=()=>{setUiPlaying(true);setStatus(\"playing\");};const onPause=()=>{setUiPlaying(false);setStatus(\"paused\");};const onEnded=()=>{setUiPlaying(false);setStatus(\"ended\");};const onWaiting=()=>setStatus(\"buffering\");a.addEventListener(\"playing\",onPlaying);a.addEventListener(\"pause\",onPause);a.addEventListener(\"ended\",onEnded);a.addEventListener(\"waiting\",onWaiting);return()=>{a.removeEventListener(\"playing\",onPlaying);a.removeEventListener(\"pause\",onPause);a.removeEventListener(\"ended\",onEnded);a.removeEventListener(\"waiting\",onWaiting);};},[]);// First gesture → mark + unmute if we were in muted autoplay\nuseEffect(()=>{const onFirst=()=>{hasInteracted.current=true;setHint(false);const a=audioRef.current;if(!a)return;if(a.muted&&!a.paused){a.muted=false;a.volume=0;fadeTo(a,targetVol(),160);setStatus(\"playing\");}};window.addEventListener(\"pointerdown\",onFirst,{once:true});window.addEventListener(\"keydown\",onFirst,{once:true});return()=>{window.removeEventListener(\"pointerdown\",onFirst);window.removeEventListener(\"keydown\",onFirst);};},[]);// Cleanup\nuseEffect(()=>{return()=>{const a=audioRef.current;if(!a)return;try{a.pause();}catch{}try{a.currentTime=0;}catch{}try{a.removeAttribute(\"src\");a.load();}catch{}};},[]);// Handlers\nconst onPointerDown=()=>{hasInteracted.current=true;setHint(false);};const toggle=e=>{e?.preventDefault?.();e?.stopPropagation?.();hasInteracted.current=true;setHint(false);if(uiPlaying){stop();}else{void start(false);}};const onKey=e=>{if(e.key===\" \"||e.key===\"Enter\"){e.preventDefault();toggle(e);}};// Waveform bars\nconst bars=useMemo(()=>Array.from({length:Math.max(3,Math.min(9,barCount))},(_,i)=>({d:600+i*90,delay:i*37%200})),[barCount]);return /*#__PURE__*/_jsxs(\"div\",{role:\"button\",tabIndex:0,onPointerDown:onPointerDown,onClick:toggle,onKeyDown:onKey,\"aria-pressed\":uiPlaying,\"aria-label\":uiPlaying?\"Pause audio\":\"Play audio\",style:{width:\"100%\",height:\"100%\",background,display:\"grid\",gridTemplateColumns:\"1fr auto\",alignItems:\"center\",gap:12,borderRadius:8,cursor:\"pointer\",userSelect:\"none\",position:\"relative\"},children:[(showStatus||debug)&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:6,left:6,padding:\"2px 6px\",fontSize:10,borderRadius:6,background:\"rgba(0,0,0,.06)\",pointerEvents:\"none\"},children:status}),hint&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",bottom:8,left:8,padding:\"6px 10px\",fontSize:12,borderRadius:8,background:\"rgba(0,0,0,.55)\",color:\"#fff\",pointerEvents:\"none\"},children:\"🔊 Tap to unmute\"}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",height:\"60%\",display:\"flex\",alignItems:\"center\",gap:barGap,pointerEvents:\"none\"},children:bars.map(({d,delay},i)=>{const dotScale=.06;const min=Math.max(dotScale,minScale);const max=Math.max(min+.02,maxScale);const animate=rm?{scaleY:1}:uiPlaying?{scaleY:[min,max,min]}:{scaleY:dotScale};const transition=rm?{duration:0}:uiPlaying?{duration:d/1e3,ease:\"easeInOut\",repeat:Infinity,repeatType:\"loop\",delay:delay/1e3}:{duration:.18,ease:[.16,1,.3,1]};return /*#__PURE__*/_jsx(motion.div,{style:{width:Math.max(1,barWidth),height:\"100%\",transformOrigin:\"50% 50%\",background:barColor,borderRadius:999,willChange:\"transform\"},animate:animate,transition:transition},i);})}),/*#__PURE__*/_jsx(\"div\",{style:{width:\"auto\",height:\"80%\",aspectRatio:\"1 / 1\",pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(motion.div,{\"aria-hidden\":true,style:{width:\"100%\",height:\"100%\",borderRadius:9999,overflow:\"hidden\",background:vinylSrc?`url(${vinylSrc}) center/cover no-repeat`:\"radial-gradient(circle at 50% 50%, #1e1e1e 0 40%, #0e0e0e 41% 100%)\",boxShadow:\"inset 0 0 0 2px rgba(0,0,0,.15)\"},animate:rm?{rotate:0}:uiPlaying?{rotate:360}:{rotate:0},transition:rm?{duration:0}:uiPlaying?{duration:Math.max(.3,speed),ease:\"linear\",repeat:Infinity}:{duration:.5,ease:[.16,1,.3,1]}})}),/*#__PURE__*/_jsx(\"audio\",{ref:audioRef,src:src,preload:\"auto\",playsInline:true,loop:loop,\"data-ap\":\"1\",\"data-ap-component\":\"AudioPlayer\",style:{position:\"absolute\",width:0,height:0,opacity:0,pointerEvents:\"none\"}})]});}addPropertyControls(AudioPlayer,{audioUrl:{type:ControlType.String,title:\"Audio URL\"},vinylSrc:{type:ControlType.Image,title:\"Vinyl\"},barColor:{type:ControlType.Color,title:\"Bars\",defaultValue:\"#111\"},background:{type:ControlType.Color,title:\"Background\",defaultValue:\"transparent\"},speed:{type:ControlType.Number,title:\"Spin (s)\",min:.3,max:10,step:.1,defaultValue:1.2},volume:{type:ControlType.Number,title:\"Volume\",min:0,max:1,step:.05,defaultValue:.6},barCount:{type:ControlType.Number,title:\"Bars\",min:3,max:9,step:1,defaultValue:5},barWidth:{type:ControlType.Number,title:\"Bar W\",min:1,max:16,step:.5,defaultValue:6},barGap:{type:ControlType.Number,title:\"Gap\",min:0,max:16,step:1,defaultValue:6},minScale:{type:ControlType.Number,title:\"Min\",min:.05,max:1,step:.05,defaultValue:.2},maxScale:{type:ControlType.Number,title:\"Max\",min:.2,max:2,step:.1,defaultValue:1.2},showStatus:{type:ControlType.Boolean,title:\"Show Status\",defaultValue:false},startPlaying:{type:ControlType.Boolean,title:\"Start Playing\",defaultValue:false},autoplayMode:{type:ControlType.Enum,title:\"Autoplay\",options:[\"off\",\"muted\",\"unmuted\"],optionTitles:[\"Off\",\"Muted\",\"With Volume\"],defaultValue:\"unmuted\"},showUnmuteHint:{type:ControlType.Boolean,title:\"Unmute Hint\",defaultValue:true},loop:{type:ControlType.Boolean,title:\"Loop\",defaultValue:true},preventOverlap:{type:ControlType.Boolean,title:\"Prevent Overlap\",defaultValue:true},respectReducedMotion:{type:ControlType.Boolean,title:\"Respect Reduced Motion\",defaultValue:true},debug:{type:ControlType.Boolean,title:\"Debug Overlay\",defaultValue:false}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AudioPlayer\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AudioPlayer.map","// Generated by Framer (0dc35dd)\nimport{fontStore}from\"framer\";fontStore.loadFonts([]);export const fonts=[{explicitInter:true,fonts:[]}];export const css=[\".framer-jreBx .framer-styles-preset-1u47bep:not(.rich-text-wrapper), .framer-jreBx .framer-styles-preset-1u47bep.rich-text-wrapper a { --framer-link-current-text-color: #152a8e; --framer-link-hover-text-color: #245eff; --framer-link-hover-text-decoration: underline; --framer-link-hover-text-decoration-offset: 4px; --framer-link-hover-text-decoration-thickness: 1px; --framer-link-text-color: #152a8e; transition-delay: 0s; transition-duration: 0.4s; transition-property: color; transition-timing-function: cubic-bezier(0.44, 0, 0.56, 1); }\"];export const className=\"framer-jreBx\";\nexport const __FramerMetadata__ = {\"exports\":{\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (7b363e7)\nexport default function metadata(params,activeLocale){return{customHTMLBodyEnd:'<script>\\n(() => {\\n  const log = (...a) => console.log(\"[media-guard]\", ...a);\\n\\n  // ---- Deep scan helpers (document + shadow DOM) ---------------------------\\n  const forEachShadow = (root, fn) => {\\n    const stack = [root];\\n    while (stack.length) {\\n      const node = stack.pop();\\n      fn(node);\\n      if (node.shadowRoot) stack.push(node.shadowRoot);\\n      // Recurse into child nodes\\n      node.childNodes && node.childNodes.forEach?.(n => stack.push(n));\\n    }\\n  };\\n\\n  const pauseAllMediaInRoot = (root) => {\\n    try {\\n      const els = (root.querySelectorAll\\n        ? root.querySelectorAll(\"audio,video\")\\n        : []);\\n      els.forEach(el => {\\n        try { el.pause(); } catch {}\\n        try { el.currentTime = 0; } catch {}\\n        try { el.muted = false; } catch {}\\n        el.removeAttribute?.(\"data-ap-active\");\\n      });\\n    } catch {}\\n  };\\n\\n  const deepPauseDocument = (doc) => {\\n    try {\\n      pauseAllMediaInRoot(doc);\\n      // Walk shadow roots\\n      forEachShadow(doc.documentElement, (n) => {\\n        if (n instanceof ShadowRoot) pauseAllMediaInRoot(n);\\n      });\\n    } catch {}\\n  };\\n\\n  // ---- Iframe handling ------------------------------------------------------\\n  // For same-origin iframes, we can drill in and pause media.\\n  // For cross-origin iframes, we *blank* them (store original src, set about:blank).\\n  const purgeIframes = (opts = { restore: false }) => {\\n    document.querySelectorAll(\"iframe\").forEach((f) => {\\n      try {\\n        // Same-origin?\\n        const idoc = f.contentDocument;\\n        if (idoc) {\\n          deepPauseDocument(idoc);\\n        } else {\\n          throw new Error(\"cross-origin\");\\n        }\\n      } catch {\\n        // Cross-origin – nuke source to guarantee stop\\n        if (!opts.restore) {\\n          if (!f.dataset.apRestoreSrc) f.dataset.apRestoreSrc = f.src || \"\";\\n          if (f.src && f.src !== \"about:blank\") {\\n            f.src = \"about:blank\";\\n            log(\"Blanked cross-origin iframe to stop audio:\", f);\\n          }\\n        } else {\\n          // Restore if we previously blanked it\\n          if (f.dataset.apRestoreSrc && (!f.src || f.src === \"about:blank\")) {\\n            const s = f.dataset.apRestoreSrc;\\n            f.removeAttribute(\"data-ap-restore-src\");\\n            // small async to avoid immediate autoplay race\\n            setTimeout(() => { try { f.src = s; } catch {} }, 50);\\n            log(\"Restored iframe src:\", s);\\n          }\\n        }\\n      }\\n    });\\n  };\\n\\n  // ---- Single-media listener (keeps last player only) -----------------------\\n  let current = null;\\n  const stopEl = el => {\\n    if (!el) return;\\n    try { el.pause(); } catch {}\\n    try { el.currentTime = 0; } catch {}\\n    try { el.muted = false; } catch {}\\n    el.removeAttribute?.(\"data-ap-active\");\\n  };\\n  const hardStopAll = () => {\\n    deepPauseDocument(document);\\n    purgeIframes({ restore: false }); // also blanks cross-origin frames\\n    current = null;\\n    log(\"Stopped all media (doc + iframes).\");\\n  };\\n\\n  const onPlayCapture = (e) => {\\n    const el = e.target;\\n    if (!(el instanceof HTMLMediaElement)) return;\\n    if (current && current !== el) stopEl(current);\\n    current = el;\\n    el.setAttribute(\"data-ap-active\", \"1\");\\n    // Also ensure no hidden frame is still playing\\n    purgeIframes({ restore: false });\\n  };\\n  const onPauseOrEnded = (e) => {\\n    const el = e.target;\\n    if (el === current && (el.paused || el.ended)) {\\n      el.removeAttribute(\"data-ap-active\");\\n      current = null;\\n    }\\n  };\\n\\n  document.addEventListener(\"play\", onPlayCapture, true);\\n  document.addEventListener(\"pause\", onPauseOrEnded, true);\\n  document.addEventListener(\"ended\", onPauseOrEnded, true);\\n\\n  // Stop on pagehide / unload / visibility hidden / SPA nav\\n  const kill = () => hardStopAll();\\n  window.addEventListener(\"pagehide\", kill);\\n  window.addEventListener(\"beforeunload\", kill);\\n  document.addEventListener(\"visibilitychange\", () => {\\n    if (document.visibilityState === \"hidden\") kill();\\n  });\\n\\n  // Observe DOM for new nodes (e.g., during Framer transitions)\\n  const mo = new MutationObserver(() => {\\n    // Proactively blank autoplayers inside new cross-origin iframes\\n    purgeIframes({ restore: false });\\n  });\\n  mo.observe(document.documentElement, { childList: true, subtree: true });\\n\\n  // Hook SPA navigation\\n  const hookHistory = () => {\\n    const fire = () => window.dispatchEvent(new Event(\"ap:navigate\"));\\n    const { pushState, replaceState } = history;\\n    history.pushState = function () { const r = pushState.apply(this, arguments); fire(); return r; };\\n    history.replaceState = function () { const r = replaceState.apply(this, arguments); fire(); return r; };\\n    window.addEventListener(\"popstate\", fire);\\n  };\\n  hookHistory();\\n  window.addEventListener(\"ap:navigate\", hardStopAll);\\n\\n  // Console helpers\\n  window.__AP_STOP_ALL__ = hardStopAll;                 // stop + blank iframes\\n  window.__AP_RESTORE_IFRAMES__ = () => purgeIframes({ restore: true }); // restore blanked iframes\\n  window.__AP_WHO_IS_PLAYING__ = () =>\\n    [...document.querySelectorAll(\"audio,video\")].map(m => ({\\n      tag: m.tagName.toLowerCase(),\\n      src: m.currentSrc || m.src || \"\",\\n      paused: m.paused,\\n      muted: m.muted,\\n      time: m.currentTime,\\n      active: m.hasAttribute(\"data-ap-active\"),\\n      id: m.dataset.apId || m.dataset.apComponent || m.id || \"\"\\n    }));\\n})();\\n</script>\\n',description:\"Wir feiern unseren Tag!\",favicon:\"https://framerusercontent.com/assets/bG9TIZcKHY4f4mINIJOnbszPWo.png\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/wbvjbSKnbS1uMrq4EdKFdTW8Oak.jpg\",title:\"Vivian & Franco 2026\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}