{"version":3,"file":"ListenToArticle.CPmLp8NT.mjs","names":["useState","useRef","useCallback"],"sources":["https:/framerusercontent.com/modules/VD0Y1G0Aj0PIzzNaxJB9/5jesvLnG4uzNREropzcl/ListenToArticle.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useCallback,useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType,useTracking}from\"framer\";/**\n * Listen to this article\n * A free text-to-speech player that uses the browser's built-in voices\n * (Web Speech API). No account, no API key, no tracking.\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicWidth 560\n */const SPEEDS=[1,1.25,1.5,2,.75];const WORDS_PER_MINUTE=165;const CHUNK_MAX=180// Chrome stops long utterances after ~15s, so we speak in short pieces\n;const BLOCK_SELECTOR=\"h1,h2,h3,h4,h5,h6,p,li,blockquote\";const SKIP_SELECTOR=\"[data-tts-player],script,style,noscript,nav,footer,button,figcaption,[aria-hidden='true']\";/* ---------- Languages ---------- */// Used when the page language has no region (e.g. \"es\" instead of \"es-MX\").\nconst REGION_DEFAULTS={en:\"en-US\",es:\"es-MX\",fr:\"fr-FR\",pt:\"pt-BR\"};// Built-in labels for Spanish, French, and Portuguese pages.\n// English uses the labels you type in Framer's right panel.\nconst DEFAULT_OUTRO=\"End of article\";const UI_TEXT={es:{label:\"Escuchar este art\\xedculo\",playing:\"Reproduciendo\",paused:\"En pausa\",listen:\"min de audio\",left:\"min restantes\",empty:\"No se encontr\\xf3 texto del art\\xedculo en esta p\\xe1gina\",unsupported:\"El audio no est\\xe1 disponible en este navegador\",play:\"Reproducir\",pause:\"Pausar\",position:\"Posici\\xf3n de reproducci\\xf3n\",speed:\"Velocidad\",noVoice:\"Este dispositivo no tiene una voz en espa\\xf1ol\",end:\"Fin del art\\xedculo\"},fr:{label:\"\\xc9couter cet article\",playing:\"Lecture en cours\",paused:\"En pause\",listen:\"min d'\\xe9coute\",left:\"min restantes\",empty:\"Aucun texte d'article trouv\\xe9 sur cette page\",unsupported:\"L'audio n'est pas disponible dans ce navigateur\",play:\"Lire\",pause:\"Pause\",position:\"Position de lecture\",speed:\"Vitesse\",noVoice:\"Cet appareil n'a pas de voix en fran\\xe7ais\",end:\"Fin de l'article\"},pt:{label:\"Ouvir este artigo\",playing:\"Reproduzindo\",paused:\"Pausado\",listen:\"min de \\xe1udio\",left:\"min restantes\",empty:\"Nenhum texto de artigo encontrado nesta p\\xe1gina\",unsupported:\"O \\xe1udio n\\xe3o est\\xe1 dispon\\xedvel neste navegador\",play:\"Reproduzir\",pause:\"Pausar\",position:\"Posi\\xe7\\xe3o de reprodu\\xe7\\xe3o\",speed:\"Velocidade\",noVoice:\"Este dispositivo n\\xe3o tem uma voz em portugu\\xeas\",end:\"Fim do artigo\"}};// Names and alternative codes some sites use instead of standard two-letter codes.\nconst LANGUAGE_ALIASES={english:\"en\",eng:\"en\",spanish:\"es\",español:\"es\",espanol:\"es\",spa:\"es\",french:\"fr\",français:\"fr\",francais:\"fr\",fra:\"fr\",fre:\"fr\",portuguese:\"pt\",português:\"pt\",portugues:\"pt\",por:\"pt\",br:\"pt\"};// Turns \"pt\", \"pt_BR\", \"Portuguese\", \"br\" or \"por-BRA\" into a standard code like \"pt-BR\".\n// Returns \"\" when it isn't a language we recognize.\nfunction normalizeLanguage(raw){const clean=(raw||\"\").trim().replace(/_/g,\"-\");if(!clean)return\"\";const[head,...rest]=clean.split(\"-\");const headLower=head.toLowerCase();const base=LANGUAGE_ALIASES[headLower]||headLower;if(!/^[a-z]{2}$/.test(base))return\"\";let region=rest[0]?rest[0].toUpperCase():\"\";if(region.length===3)region=region===\"BRA\"?\"BR\":region===\"PRT\"?\"PT\":region.slice(0,2);if(!region&&headLower===\"br\")region=\"BR\";return region?`${base}-${region}`:REGION_DEFAULTS[base]||base;}// Reads the language from the page address, e.g. /pt/artigos/... → pt-BR.\n// Only accepts the languages this site uses, so English paths like /articles are ignored.\nfunction languageFromPath(){if(typeof window===\"undefined\")return\"\";const first=(window.location.pathname||\"\").split(\"/\").filter(Boolean)[0]||\"\";const lang=normalizeLanguage(first);return lang&&REGION_DEFAULTS[lang.split(\"-\")[0]]?lang:\"\";}function resolveLanguage(setting){// A typed language (e.g. \"es-ES\") wins, but only if we recognize it. Anything else,\n// including \"auto\" or a translated \"automático\" from Framer localization, means automatic.\nconst manual=normalizeLanguage((setting||\"\").trim());if(manual&&REGION_DEFAULTS[manual.split(\"-\")[0]])return manual;const fromPath=languageFromPath();const fromPage=typeof document!==\"undefined\"?normalizeLanguage(document.documentElement.lang||\"\"):\"\";if(fromPath){// Keep the page's region (e.g. pt-PT) when both agree on the language.\nif(fromPage&&fromPage.split(\"-\")[0]===fromPath.split(\"-\")[0])return fromPage;return fromPath;}if(fromPage)return fromPage;const fromBrowser=typeof navigator!==\"undefined\"?normalizeLanguage(navigator.language||\"\"):\"\";return fromBrowser||\"en-US\";}/* ---------- Text helpers ---------- */function isVisible(el){// Framer keeps hidden breakpoints (desktop/tablet/phone) in the page,\n// so we only read text that is actually on screen.\nreturn!!(el.offsetWidth||el.offsetHeight||el.getClientRects().length);}// Turns \"Meta, Share bar\" into a selector for those Framer layer names (and everything inside them).\nfunction buildLayerSelector(names){return(names||\"\").split(\",\").map(n=>n.trim()).filter(Boolean).map(n=>`[data-framer-name=\"${n.replace(/[\"\\\\]/g,\"\\\\$&\")}\" i]`).join(\",\");}function collectArticleText(selector,intro,skipLayers=\"\",outro=\"\"){if(typeof document===\"undefined\")return\"\";let root=null;const custom=(selector||\"\").trim();if(custom){try{// Framer can repeat the same section for each breakpoint; use the visible one.\nconst matches=Array.from(document.querySelectorAll(custom));root=matches.find(el=>isVisible(el))||matches[0]||null;}catch(e){root=null;}}if(!root)root=document.querySelector(\"article\");if(!root)root=document.querySelector(\"main\");if(!root)root=document.body;const parts=[];const introClean=(intro||\"\").trim();if(introClean)parts.push(/[.!?…:;]$/.test(introClean)?introClean:introClean+\".\");let layerSelector=buildLayerSelector(skipLayers);try{if(layerSelector)document.querySelector(layerSelector);}catch(e){layerSelector=\"\"// ignore names the browser can't understand\n;}const blocks=Array.from(root.querySelectorAll(BLOCK_SELECTOR));for(const el of blocks){if(el.closest(SKIP_SELECTOR))continue;if(layerSelector&&el.closest(layerSelector))continue;if(!isVisible(el))continue;const parentBlock=el.parentElement?el.parentElement.closest(BLOCK_SELECTOR):null;if(parentBlock&&root.contains(parentBlock))continue;// avoid reading nested text twice\nconst text=(el.innerText||el.textContent||\"\").replace(/\\s+/g,\" \").trim();if(!RegExp(\"[\\\\p{L}\\\\p{N}]\",\"u\").test(text))continue;// skip empty or symbol-only text\n// Headings and list items often have no period; add one so the voice pauses.\nparts.push(/[.!?…:;]$/.test(text)?text:text+\".\");}// If the title is read as the intro AND appears inside the article, skip the duplicate.\nif(introClean&&parts.length>1){const a=parts[0].replace(/[.!?…:;]$/,\"\").toLowerCase();const b=parts[1].replace(/[.!?…:;]$/,\"\").toLowerCase();if(a===b)parts.splice(1,1);}const outroClean=(outro||\"\").trim();if(outroClean&&parts.length)parts.push(/[.!?…:;]$/.test(outroClean)?outroClean:outroClean+\".\");return parts.join(\" \");}function splitIntoChunks(text){const clean=text.replace(/\\s+/g,\" \").trim();if(!clean)return[];const sentences=clean.match(/[^.!?…]+[.!?…]+[\"'”’)\\]]*\\s*|[^.!?…]+$/g)||[clean];const pieces=[];for(let s of sentences){s=s.trim();while(s.length>CHUNK_MAX){let cut=s.lastIndexOf(\", \",CHUNK_MAX);if(cut<CHUNK_MAX*.5)cut=s.lastIndexOf(\" \",CHUNK_MAX);if(cut<=0)cut=CHUNK_MAX;pieces.push(s.slice(0,cut+1).trim());s=s.slice(cut+1).trim();}if(s)pieces.push(s);}// Merge short sentences so there are fewer gaps between them.\nconst chunks=[];for(const p of pieces){const last=chunks[chunks.length-1];if(last&&last.length+p.length+1<=CHUNK_MAX)chunks[chunks.length-1]=last+\" \"+p;else chunks.push(p);}return chunks;}/* ---------- Voice helpers ---------- */const PREFERRED_VOICE_HINTS=[\"natural\",\"neural\",\"premium\",\"enhanced\",\"google\",\"google us english\",\"google uk english\",\"samantha\",\"ava\",\"allison\",\"aria\",\"jenny\",\"daniel\",\"karen\"];const LANGUAGE_NAMES={en:[\"english\"],es:[\"espa\\xf1ol\",\"espanol\",\"spanish\"],fr:[\"fran\\xe7ais\",\"francais\",\"french\"],pt:[\"portugu\\xeas\",\"portugues\",\"portuguese\"]};const THREE_LETTER={en:\"eng\",es:\"spa\",fr:\"fra\",pt:\"por\"};function pickVoice(voices,lang,preferredName){if(!voices||!voices.length)return null;const want=(lang||\"en-US\").toLowerCase().replace(\"_\",\"-\");const base=want.split(\"-\")[0];const norm=v=>(v.lang||\"\").toLowerCase().replace(\"_\",\"-\");// Some devices report languages as \"por\" or only in the voice name (\"Português\"),\n// so we also match three-letter codes and language names.\nconst names=LANGUAGE_NAMES[base]||[];const codes=[base,...THREE_LETTER[base]?[THREE_LETTER[base]]:[]];const sameLang=voices.filter(v=>{const l=norm(v);const n=(v.name||\"\").toLowerCase();return codes.some(c=>l===c||l.startsWith(c+\"-\"))||names.some(x=>n.includes(x));});const exact=sameLang.filter(v=>norm(v)===want);const pool=exact.length?exact:sameLang;if(!pool.length)return null;const pref=(preferredName||\"\").trim().toLowerCase();if(pref){const match=pool.find(v=>v.name.toLowerCase().includes(pref));if(match)return match;}for(const hint of PREFERRED_VOICE_HINTS){const match=pool.find(v=>v.name.toLowerCase().includes(hint));if(match)return match;}return pool.find(v=>v.localService)||pool[0];}/* ---------- Icons ---------- */function PlayIcon(){return /*#__PURE__*/_jsx(\"svg\",{width:\"42%\",height:\"42%\",viewBox:\"0 0 24 24\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M8 5.6v12.8a1 1 0 0 0 1.52.85l10.4-6.4a1 1 0 0 0 0-1.7L9.52 4.75A1 1 0 0 0 8 5.6z\",fill:\"currentColor\"})});}function PauseIcon(){return /*#__PURE__*/_jsxs(\"svg\",{width:\"40%\",height:\"40%\",viewBox:\"0 0 24 24\",\"aria-hidden\":\"true\",children:[/*#__PURE__*/_jsx(\"rect\",{x:\"6\",y:\"5\",width:\"4.2\",height:\"14\",rx:\"1.2\",fill:\"currentColor\"}),/*#__PURE__*/_jsx(\"rect\",{x:\"13.8\",y:\"5\",width:\"4.2\",height:\"14\",rx:\"1.2\",fill:\"currentColor\"})]});}function Equalizer({color}){const bar={display:\"block\",width:3,height:\"100%\",borderRadius:2,background:color};return /*#__PURE__*/_jsxs(\"span\",{className:\"sso-tts-eq\",\"aria-hidden\":\"true\",style:{display:\"inline-flex\",alignItems:\"flex-end\",gap:2,height:\"0.85em\"},children:[/*#__PURE__*/_jsx(\"span\",{style:bar}),/*#__PURE__*/_jsx(\"span\",{style:bar}),/*#__PURE__*/_jsx(\"span\",{style:bar})]});}/* ---------- Component ---------- */export default function ListenToArticle(props){const{introText,outroText,articleSelector,skipLayers,language,autoTranslate,preferredVoice,label,playingLabel,pausedLabel,listenSuffix,leftSuffix,emptyMessage,unsupportedMessage,font,textTransform,background,borderColor,textColor,accent,iconColor,trackColor,radius,padding,buttonSize,showTime,showSpeed,hideIfUnsupported,playTrackingId,finishTrackingId,style}=props;const[supported,setSupported]=useState(true);const[status,setStatus]=useState(\"idle\");const[progress,setProgress]=useState(0);const[totalMinutes,setTotalMinutes]=useState(0);const[speedIndex,setSpeedIndex]=useState(0);const[empty,setEmpty]=useState(false);const[lang,setLang]=useState(\"en-US\");const[noVoice,setNoVoice]=useState(false);// \"Read last\": the default phrase is translated on Spanish, French, and Portuguese pages.\nconst langBase=lang.split(\"-\")[0].toLowerCase();const outro=autoTranslate&&UI_TEXT[langBase]&&(outroText||\"\").trim().toLowerCase()===DEFAULT_OUTRO.toLowerCase()?UI_TEXT[langBase].end:outroText||\"\";// Detect the page language (Framer sets it for each locale) and follow changes.\nuseEffect(()=>{if(typeof document===\"undefined\")return;const update=()=>setLang(resolveLanguage(language));update();const observer=new MutationObserver(update);observer.observe(document.documentElement,{attributes:true,attributeFilter:[\"lang\"]});// Framer can switch pages without reloading, so check the address now and then.\nconst interval=setInterval(update,1e3);window.addEventListener(\"popstate\",update);return()=>{observer.disconnect();clearInterval(interval);window.removeEventListener(\"popstate\",update);};},[language]);// When the language changes, stop and start fresh.\nuseEffect(()=>{chunksRef.current=[];indexRef.current=0;setProgress(0);setStatus(\"idle\");setEmpty(false);},[lang]);const chunksRef=useRef([]);const indexRef=useRef(0);const runRef=useRef(0);const rateRef=useRef(1);const voiceRef=useRef(null);const utteranceRef=useRef(null);const wordsRef=useRef(0);// Analytics: sends events to Framer Analytics (Funnels → custom step).\nconst track=useTracking();const trackingRef=useRef({track,play:\"\",finish:\"\"});trackingRef.current={track,play:playTrackingId===undefined?\"article-audio-play\":playTrackingId,finish:finishTrackingId===undefined?\"article-audio-finish\":finishTrackingId};const playTrackedRef=useRef(false);const sendEvent=kind=>{const{track:send,play,finish}=trackingRef.current;const id=kind===\"play\"?play:finish;if(!id||typeof send!==\"function\")return;try{send(id);}catch(e){// never let analytics break the player\n}};// Setup: check support, load voices, estimate reading time, clean up on leave.\nuseEffect(()=>{if(typeof window===\"undefined\"||!(\"speechSynthesis\"in window)||typeof window.SpeechSynthesisUtterance===\"undefined\"){setSupported(false);return;}const synth=window.speechSynthesis;const loadVoices=()=>{const voices=synth.getVoices();voiceRef.current=pickVoice(voices,lang,preferredVoice);// Only conclude \"no voice\" once the device has actually listed its voices.\nsetNoVoice(voices.length>0&&!voiceRef.current);};loadVoices();if(synth.addEventListener)synth.addEventListener(\"voiceschanged\",loadVoices);else synth.onvoiceschanged=loadVoices;const measure=()=>{const text=collectArticleText(articleSelector,introText,skipLayers,outro);const words=text?text.split(/\\s+/).length:0;wordsRef.current=words;setTotalMinutes(words?Math.max(1,Math.round(words/WORDS_PER_MINUTE)):0);};measure();const timer=setTimeout(measure,1200)// CMS content can arrive a moment later\n;const stopAll=()=>{runRef.current++;synth.cancel();};window.addEventListener(\"pagehide\",stopAll);return()=>{clearTimeout(timer);if(synth.removeEventListener)synth.removeEventListener(\"voiceschanged\",loadVoices);window.removeEventListener(\"pagehide\",stopAll);stopAll();};},[lang,preferredVoice,articleSelector,introText,skipLayers,outro]);const prepareChunks=useCallback(()=>{if(chunksRef.current.length)return true;const text=collectArticleText(articleSelector,introText,skipLayers,outro);const chunks=splitIntoChunks(text);if(!chunks.length){setEmpty(true);return false;}setEmpty(false);chunksRef.current=chunks;wordsRef.current=text.split(/\\s+/).length;if(!voiceRef.current){const voices=window.speechSynthesis.getVoices();voiceRef.current=pickVoice(voices,lang,preferredVoice);if(voices.length>0&&!voiceRef.current){setNoVoice(true);return false;}}return true;},[articleSelector,introText,skipLayers,outro,lang,preferredVoice]);const speakFrom=useCallback(start=>{const synth=window.speechSynthesis;const run=++runRef.current;const wasBusy=synth.speaking||synth.pending;synth.cancel();if(synth.paused)synth.resume();const chunks=chunksRef.current;const speakOne=k=>{if(run!==runRef.current)return;if(k>=chunks.length){sendEvent(\"finish\");playTrackedRef.current=false// a replay counts as a new play\n;indexRef.current=0;setProgress(0);setStatus(\"idle\");return;}indexRef.current=k;setProgress(k/chunks.length);const u=new SpeechSynthesisUtterance(chunks[k]);u.lang=lang;u.rate=rateRef.current;if(voiceRef.current)u.voice=voiceRef.current;u.onend=()=>speakOne(k+1);u.onerror=e=>{if(run!==runRef.current)return;const err=e&&e.error;if(err===\"interrupted\"||err===\"canceled\")return;if(err===\"not-allowed\"){setStatus(\"idle\");return;}speakOne(k+1);};utteranceRef.current=u// keeps a reference so the browser doesn't drop events\n;synth.speak(u);};setStatus(\"playing\");// iPhone needs the first speak() to happen right on the tap; Chrome needs a\n// short pause after cancel() when something was already speaking.\nif(wasBusy)setTimeout(()=>speakOne(start),80);else speakOne(start);},[lang]);const pause=()=>{runRef.current++;window.speechSynthesis.cancel();setStatus(\"paused\");};const onToggle=()=>{if(!supported||noVoice)return;if(status===\"playing\")return pause();if(!prepareChunks())return;if(!playTrackedRef.current){playTrackedRef.current=true// count once per visit, not every pause/resume\n;sendEvent(\"play\");}speakFrom(status===\"paused\"?indexRef.current:0);};const onSpeed=()=>{const next=(speedIndex+1)%SPEEDS.length;setSpeedIndex(next);rateRef.current=SPEEDS[next];if(status===\"playing\")speakFrom(indexRef.current);};const seekTo=fraction=>{if(!supported||!prepareChunks())return;const total=chunksRef.current.length;const k=Math.min(total-1,Math.max(0,Math.floor(fraction*total)));indexRef.current=k;setProgress(k/total);if(status===\"playing\")speakFrom(k);else setStatus(\"paused\");};const onTrackClick=e=>{const rect=e.currentTarget.getBoundingClientRect();seekTo((e.clientX-rect.left)/rect.width);};const onTrackKey=e=>{if(e.key===\"ArrowRight\")seekTo(progress+.05);else if(e.key===\"ArrowLeft\")seekTo(Math.max(0,progress-.05));else if(e.key===\"Home\")seekTo(0);else return;e.preventDefault();};if(!supported&&hideIfUnsupported)return null;const base=lang.split(\"-\")[0].toLowerCase();const t=autoTranslate&&UI_TEXT[base]?UI_TEXT[base]:null;const ui={label:t?t.label:label,playing:t?t.playing:playingLabel,paused:t?t.paused:pausedLabel,listen:t?t.listen:listenSuffix,left:t?t.left:leftSuffix,empty:t?t.empty:emptyMessage,unsupported:t?t.unsupported:unsupportedMessage,play:t?t.play:\"Play\",pause:t?t.pause:\"Pause\",position:t?t.position:\"Playback position\",speed:t?t.speed:\"Playback speed\",noVoice:t?t.noVoice:\"This device has no voice for this language\"};const speed=SPEEDS[speedIndex];const minutesLeft=Math.max(1,Math.ceil(wordsRef.current*(1-progress)/WORDS_PER_MINUTE/rateRef.current));const timeText=status===\"idle\"?`${totalMinutes} ${ui.listen}`:`${minutesLeft} ${ui.left}`;let labelText=ui.label;if(!supported)labelText=ui.unsupported;else if(noVoice)labelText=ui.noVoice;else if(empty)labelText=ui.empty;else if(status===\"playing\")labelText=ui.playing;else if(status===\"paused\")labelText=ui.paused;const css=`\n.sso-tts button { font: inherit; -webkit-tap-highlight-color: transparent; }\n.sso-tts-btn { transition: transform .15s ease, filter .15s ease; }\n.sso-tts-btn:hover { filter: brightness(1.08); }\n.sso-tts-btn:active { transform: scale(.94); }\n.sso-tts-btn:focus-visible, .sso-tts-speed:focus-visible, .sso-tts-track:focus-visible {\n  outline: 2px solid ${accent}; outline-offset: 3px;\n}\n.sso-tts-speed:hover { background: ${trackColor}; }\n@keyframes ssoTtsEq { 0%, 100% { transform: scaleY(.35); } 50% { transform: scaleY(1); } }\n.sso-tts-eq span { transform-origin: bottom; animation: ssoTtsEq .9s ease-in-out infinite; }\n.sso-tts-eq span:nth-child(2) { animation-delay: -.3s; }\n.sso-tts-eq span:nth-child(3) { animation-delay: -.6s; }\n@media (prefers-reduced-motion: reduce) {\n  .sso-tts-eq span { animation: none; transform: scaleY(.7); }\n  .sso-tts-btn, .sso-tts-fill { transition: none !important; }\n}`;return /*#__PURE__*/_jsxs(\"div\",{\"data-tts-player\":\"\",className:\"sso-tts\",role:\"region\",\"aria-label\":ui.label,style:{...style,...font,textTransform:textTransform||\"none\",width:\"100%\",boxSizing:\"border-box\",display:\"flex\",alignItems:\"center\",gap:14,padding,background,color:textColor,border:`1px solid ${borderColor}`,borderRadius:radius,opacity:supported?1:.6},children:[/*#__PURE__*/_jsx(\"style\",{children:css}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"sso-tts-btn\",onClick:onToggle,disabled:!supported||noVoice,\"aria-label\":status===\"playing\"?ui.pause:ui.play,style:{width:buttonSize,height:buttonSize,flexShrink:0,display:\"grid\",placeItems:\"center\",padding:0,border:\"none\",borderRadius:\"50%\",background:accent,color:iconColor,cursor:supported?\"pointer\":\"default\"},children:status===\"playing\"?/*#__PURE__*/_jsx(PauseIcon,{}):/*#__PURE__*/_jsx(PlayIcon,{})}),/*#__PURE__*/_jsxs(\"div\",{style:{flex:1,minWidth:0,display:\"flex\",flexDirection:\"column\",gap:6},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",alignItems:\"baseline\",gap:12},children:[/*#__PURE__*/_jsxs(\"span\",{\"aria-live\":\"polite\",style:{display:\"inline-flex\",alignItems:\"center\",gap:8,minWidth:0,overflow:\"hidden\",whiteSpace:\"nowrap\",textOverflow:\"ellipsis\"},children:[status===\"playing\"&&/*#__PURE__*/_jsx(Equalizer,{color:accent}),/*#__PURE__*/_jsx(\"span\",{style:{overflow:\"hidden\",textOverflow:\"ellipsis\"},children:labelText})]}),showTime&&supported&&totalMinutes>0&&/*#__PURE__*/_jsx(\"span\",{style:{fontSize:\"0.85em\",opacity:.7,whiteSpace:\"nowrap\",fontVariantNumeric:\"tabular-nums\"},children:timeText})]}),/*#__PURE__*/_jsx(\"div\",{className:\"sso-tts-track\",role:\"slider\",tabIndex:supported?0:-1,\"aria-label\":ui.position,\"aria-valuemin\":0,\"aria-valuemax\":100,\"aria-valuenow\":Math.round(progress*100),onClick:onTrackClick,onKeyDown:onTrackKey,style:{padding:\"6px 0\",cursor:supported?\"pointer\":\"default\",borderRadius:4},children:/*#__PURE__*/_jsx(\"div\",{style:{height:4,borderRadius:2,background:trackColor,overflow:\"hidden\"},children:/*#__PURE__*/_jsx(\"div\",{className:\"sso-tts-fill\",style:{height:\"100%\",width:`${progress*100}%`,background:accent,borderRadius:2,transition:\"width .5s ease\"}})})})]}),showSpeed&&supported&&/*#__PURE__*/_jsxs(\"button\",{type:\"button\",className:\"sso-tts-speed\",onClick:onSpeed,\"aria-label\":`${ui.speed} ${speed}\\xd7`,style:{flexShrink:0,minWidth:52,padding:\"5px 10px\",fontSize:\"0.85em\",fontVariantNumeric:\"tabular-nums\",color:textColor,background:\"transparent\",border:`1px solid ${borderColor}`,borderRadius:999,cursor:\"pointer\"},children:[speed,\"\\xd7\"]})]});}ListenToArticle.displayName=\"Listen to Article\";/* ---------- Framer property controls ---------- */addPropertyControls(ListenToArticle,{// What to read\nintroText:{type:ControlType.String,title:\"Read first\",defaultValue:\"\",placeholder:\"Connect to CMS Title\"},outroText:{type:ControlType.String,title:\"Read last\",defaultValue:DEFAULT_OUTRO,placeholder:\"Optional, e.g. End of article\"},articleSelector:{type:ControlType.String,title:\"Article area\",defaultValue:\"\",placeholder:\"e.g. #article\"},skipLayers:{type:ControlType.String,title:\"Skip layers\",defaultValue:\"\",placeholder:\"Layer names, comma-separated\"},// Voice and language\nlanguage:{type:ControlType.String,title:\"Language\",defaultValue:\"auto\",placeholder:\"auto, or e.g. es-ES\"},autoTranslate:{type:ControlType.Boolean,title:\"Translate labels\",defaultValue:true},preferredVoice:{type:ControlType.String,title:\"Voice name\",defaultValue:\"\",placeholder:\"Optional, e.g. Samantha\"},// Labels (English; other languages are translated automatically)\nlabel:{type:ControlType.String,title:\"Label\",defaultValue:\"Listen to this article\"},playingLabel:{type:ControlType.String,title:\"Playing label\",defaultValue:\"Playing\"},pausedLabel:{type:ControlType.String,title:\"Paused label\",defaultValue:\"Paused\"},listenSuffix:{type:ControlType.String,title:\"Time (before)\",defaultValue:\"min listen\"},leftSuffix:{type:ControlType.String,title:\"Time (during)\",defaultValue:\"min left\"},emptyMessage:{type:ControlType.String,title:\"No text message\",defaultValue:\"No article text found on this page\"},unsupportedMessage:{type:ControlType.String,title:\"Unsupported msg\",defaultValue:\"Audio isn't available in this browser\"},// Display\nshowTime:{type:ControlType.Boolean,title:\"Show time\",defaultValue:true},showSpeed:{type:ControlType.Boolean,title:\"Show speed\",defaultValue:true},hideIfUnsupported:{type:ControlType.Boolean,title:\"Hide if no audio\",defaultValue:true},// Analytics (Framer Analytics → Funnels → custom step)\nplayTrackingId:{type:ControlType.TrackingId,title:\"Track play\",defaultValue:\"article-audio-play\"},finishTrackingId:{type:ControlType.TrackingId,title:\"Track finish\",defaultValue:\"article-audio-finish\"},// Style\nfont:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:15,lineHeight:\"1.3em\"}},textTransform:{type:ControlType.Enum,title:\"Transform\",options:[\"none\",\"capitalize\",\"uppercase\",\"lowercase\"],optionTitles:[\"None\",\"Capitalize\",\"Uppercase\",\"Lowercase\"],defaultValue:\"none\"},background:{type:ControlType.Color,title:\"Background\",defaultValue:\"#FFFFFF\"},borderColor:{type:ControlType.Color,title:\"Border\",defaultValue:\"#D6DEE8\"},textColor:{type:ControlType.Color,title:\"Text\",defaultValue:\"#13263D\"},accent:{type:ControlType.Color,title:\"Accent\",defaultValue:\"#1557D6\"},iconColor:{type:ControlType.Color,title:\"Icon\",defaultValue:\"#FFFFFF\"},trackColor:{type:ControlType.Color,title:\"Track\",defaultValue:\"#E4EAF2\"},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:16,min:0,max:60,unit:\"px\"},padding:{type:ControlType.Padding,title:\"Padding\",defaultValue:\"12px 16px 12px 12px\"},buttonSize:{type:ControlType.Number,title:\"Button size\",defaultValue:44,min:32,max:72,unit:\"px\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ListenToArticle\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ListenToArticle.map"],"mappings":"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"}