-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathselectnspeak.min.js
1 lines (1 loc) · 2.14 KB
/
selectnspeak.min.js
1
javascript:(function(){var e,t,n,o=document,a=window,i=o.getElementById("selectnspeak_bk_control"),l=[],p="",r=new SpeechSynthesisUtterance,s=a.speechSynthesis;function c(){var t;a.getSelection?p=a.getSelection().toString():(n=a.selection)&&"Text"==n.type&&(p=n.createRange().htmlText),d(),p.length?(r.text=p,r.voice=(t=e.selectedOptions)&&t.length?l[t[0].value]:null,s.speak(r)):alert("Select & Speak: Please select some text before pressing play.")}function d(){s.cancel()}function x(e,t,n){var a=o.createElement(e);return t&&t.forEach(e=>{a.setAttribute(e[0],e[1])}),n&&(a.style.cssText=n),a}function g(e,t,n){var o=x("button",null,"margin:10px 5px;vertical-align:middle;height:32px;width:32px;background-color:white;color:black;border:1px solid #333;white-space:nowrap;padding:2px;border-radius: 6px;");return o.innerHTML=e,o.title=t,o.onclick=n,o}i?e=i.getelementsByTagName("select")[0]:((i=x("div",[["draggable",!0]],"font-family:sans-serif;border:1px solid #bdbdbd;padding: 6px 10px;position: fixed;top: 10px; left: 10px;background-color:rgba(236,236,236,0.9);width: 275px;text-align: center;z-index:9999999;box-shadow: 0px 0px 17px -3px rgba(255,255,255,1);font-size:16px;box-sizing:border-box;border-radius: 6px;")).id="selectnspeak_bk_control",i.innerHTML='<div style="font-size:18px;font-weight:600;border-bottom:1px solid;padding:7px 0;">Select & Speak Controls <a title="Select & Speak v0.2" href="https://github.com/leonar15/SelectNSpeak" style="position:absolute;top:3px;right:6px;font-size:12px;">ⓘ</a></div>',e=x("select",null,"width:100%;"),(t=o.createElement("option")).disabled=!0,t.textContent="Select a voice:",e.append(t),e.onchange=c,l=s.getVoices(),setTimeout((function(){(l=s.getVoices()).forEach((t,n)=>{var o=x("option",[["value",n]]);o.textContent=t.name+" ("+t.lang+")",t.default&&(o.selected=!0,o.textContent+=" -- DEFAULT"),e.append(o)})}),30),i.append(g("▶","Speak current selection",c),g("❚ ❚","Pause/Unpause",(function(){s.speaking&&s.paused?s.resume():s.pause()})),g("◼","Stop all playback",d),g("×","Stop playback & Close controls",(function(){d(),i.parentNode.removeChild(i)})),e),o.body.append(i)),c()})();