learn-morse-code/static/js/main.d1a1cd6f.chunk.js
2020-02-13 14:05:34 -08:00

2 lines
39 KiB
JavaScript

(this["webpackJsonplearn-morse-code"]=this["webpackJsonplearn-morse-code"]||[]).push([[0],[,,function(e){e.exports=JSON.parse('{"-----":"0",".----":"1","..---":"2","...--":"3","....-":"4",".....":"5","-....":"6","--...":"7","---..":"8","----.":"9",".-":"a","-...":"b","-.-.":"c","-..":"d",".":"e","..-.":"f","--.":"g","....":"h","..":"i",".---":"j","-.-":"k",".-..":"l","--":"m","-.":"n","---":"o",".--.":"p","--.-":"q",".-.":"r","...":"s","-":"t","..-":"u","...-":"v",".--":"w","-..-":"x","-.--":"y","--..":"z",".-.-.-":".","--..--":",","..--..":"?","-.-.--":"!","-....-":"-","-..-.":"/",".--.-.":"@","-.--.":"(","-.--.-":")",".----.":"\'",".-..-.":"\\"",".-...":"&","---...":": ","-.-.-.":";","-...-":"=",".-.-.":"+","..--.-":"_","...-..-":"$"}')},function(e){e.exports=JSON.parse('{"mainVolume":0.2,"historySize":50}')},function(e){e.exports=JSON.parse('{"0":"-----","1":".----","2":"..---","3":"...--","4":"....-","5":".....","6":"-....","7":"--...","8":"---..","9":"----.","a":".-","b":"-...","c":"-.-.","d":"-..","e":".","f":"..-.","g":"--.","h":"....","i":"..","j":".---","k":"-.-","l":".-..","m":"--","n":"-.","o":"---","p":".--.","q":"--.-","r":".-.","s":"...","t":"-","u":"..-","v":"...-","w":".--","x":"-..-","y":"-.--","z":"--..",".":".-.-.-",",":"--..--","?":"..--..","!":"-.-.--","-":"-....-","/":"-..-.","@":".--.-.","(":"-.--.",")":"-.--.-","\'":".----.","\\"":".-..-.","&":".-...",":":"---...",";":"-.-.-.","=":"-...-","+":".-.-.","_":"..--.-","$":"...-..-"}')},,function(e,t,n){},,,function(e){e.exports=JSON.parse('{"words":["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]}')},function(e){e.exports=JSON.parse('{"words":["1","2","3","4","5","6","7","8","9","0"]}')},function(e){e.exports=JSON.parse('{"words":["the","be","to","of","and","a","in","that","have","I","it","for","not","on","with","he","as","you","do","at","this","but","his","by","from","they","we","say","her","she","or","an","will","my","one","all","would","there","their","what","so","up","out","if","about","who","get","which","go","me","when","make","can","like","time","no","just","him","know","take","person","into","year","your","good","some","could","them","see","other","than","then","now","look","only","come","its","over","think","also","back","after","use","two","how","our","work","first","well","way","even","new","want","because","any","these","give","day","most","us"]}')},function(e){e.exports=JSON.parse('{"words":["Liam","Noah","Elijah","Logan","Mason","James","Aiden","Ethan","Lucas","Jacob","Michael","Matthew","Benjamin","Alexander","William","Daniel","Jayden","Oliver","Carter","Sebastian","Joseph","David","Gabriel","Julian","Jackson","Anthony","Dylan","Wyatt","Grayson","Isaiah","Christopher","Joshua","Christian","Andrew","Samuel","Mateo","Jaxon","Josiah","John","Luke","Ryan","Nathan","Isaac","Owen","Henry","Levi","Aaron","Caleb","Jeremiah","Landon"]}')},function(e){e.exports=JSON.parse('{"words":["Emma","Olivia","Ava","Isabella","Sophia","Mia","Amelia","Charlotte","Abigail","Emily","Harper","Evelyn","Madison","Victoria","Sofia","Scarlett","Aria","Elizabeth","Camila","Layla","Ella","Chloe","Zoey","Penelope","Skylar","Grace","Mila","Lillian","Aaliyah","Lily","Paisley","Bella","Brooklyn","Savannah","Luna","Natalie","Ellie","Leah","Audrey","Ariana","Aurora","Zoe","Hannah","Violet","Samantha","Nora","Nevaeh","Serenity","Gabriella","Hailey"]}')},function(e){e.exports=JSON.parse('{"words":["dilithium","borg","replicator","picard","vulcan","ensign","phaser","kirk","warbird","ferengi","hypospray","tribble","sisko","starfleet","engage","holodeck","warp","enterprise","romulan","quadrant","tricorder","georgiou","futile","klingon","janeway","delta","assimilate","energize"]}')},function(e,t,n){e.exports=n.p+"static/media/straight_key.f140bc7b.jpg"},function(e,t,n){e.exports=n.p+"static/media/electronic_key.cd2cf560.jpg"},function(e,t,n){e.exports=n(23)},,,,,function(e,t,n){},function(e,t,n){"use strict";n.r(t);var a=n(0),r=n.n(a),o=n(8),i=n.n(o),l=(n(22),n(6),n(1)),c=r.a.createContext();var s=r.a.createContext();function d(e){var t=Object(a.useState)(""),n=Object(l.a)(t,2),o=n[0],i=n[1],c=Object(a.useState)([]),d=Object(l.a)(c,2),u=d[0],m=d[1];return r.a.createElement(s.Provider,{value:{morseCharBuffer:o,morseWords:u,setMorseCharBuffer:i,setMorseWords:m}},e.children)}var u=n(5),m=n(9),h=n(10),p=n(11),f=n(12),v=n(13),E=n(14),g=r.a.createContext();function y(e){var t=Object(a.useState)("alphabet"),n=Object(l.a)(t,2),o=n[0],i=n[1],c=Object(a.useState)(10),s=Object(l.a)(c,2),d=s[0],y=s[1],b=[];"alphabet"===o?b=m.words:"numbers"===o?b=h.words:"boys"===o?b=f.words:"girls"===o?b=v.words:"startrek"===o?b=E.words:"common100"===o&&(b=p.words);var w=b.length;return r.a.createElement(g.Provider,{value:{wordList:b.slice(0,d),wordListShuffled:function(e){for(var t,n,a=Object(u.a)(e),r=a.length;0!==r;)n=Math.floor(Math.random()*r),t=a[r-=1],a[r]=a[n],a[n]=t;return a}(b).slice(0,d),wordListCategory:o,setWordListCategory:i,metadata:{alphabet:{name:"Alphabet",description:"All letters of the alphabet"},numbers:{name:"Numbers",description:"0-9"},boys:{name:"Boys Names",description:"Popular Boys Names"},girls:{name:"Girls Names",description:"Popular Girls Names"},startrek:{name:"Star Trek",description:"Star Trek universe"},common100:{name:"Common Words",description:"100 Most Common Words"}},wordListCount:d,setWordListCount:y,wordListCountMax:w}},e.children)}var b=r.a.createContext();function w(e){var t,n=Object(a.useContext)(g),o=n.wordList,i=n.wordListShuffled,c=Object(a.useState)(0),s=Object(l.a)(c,2),d=s[0],u=s[1],m=Object(a.useState)("sequential"),h=Object(l.a)(m,2),p=h[0],f=h[1];return"sequential"===p?t=void 0===o[d]?[o[0]]:o[d]:"random"===p&&(t=void 0===i[d]?[i[0]]:i[d]),r.a.createElement(b.Provider,{value:{word:t,getNextWord:function(){u((function(e){return e+1}))},resetFeeder:function(){u(0)},setOrder:f}},e.children)}var C=n(2),k=r.a.createContext();function O(e){var t,n=Object(a.useState)("ready"),o=Object(l.a)(n,2),i=o[0],c=o[1],d=Object(a.useContext)(b).resetFeeder,u=Object(a.useContext)(b),m=u.word,h=u.getNextWord,p=Object(a.useContext)(s),f=p.morseCharBuffer,v=p.setMorseCharBuffer,E=f.split("_").filter((function(e){return""!==e})),g="",y=[],w=[],O=0;function j(){"completed"!==i&&(c("completed"),d(),L())}function L(){var e=document.getElementById("challenge-overlay");e.classList.remove("fade"),e.classList.remove("hide")}return"object"===typeof m?(j(),t=m[0].split("")):t=m.split(""),E.forEach((function(e,n){"_"===f.slice(-1)&&((C[E[n]]||"[?]")===t[n-O].toLowerCase()?(y.push(n-O),document.getElementById("challengeWord").childNodes[n-O].classList.add("correct")):(w.push(n),w.length>0&&(v((function(e){var t=e.split("_").filter((function(e){return""!==e}));return t.splice(w[0],1),t=t.join("_")+"_"})),w.splice(1,w.length)),O=w.length))})),y.length===t.length&&(g="correct",setTimeout((function(){v(""),E=[],w=[],O=0,null!==document.getElementById("challengeWord")&&document.getElementById("challengeWord").childNodes.forEach((function(e){e.classList="cLetter"}))}),800),setTimeout((function(){y.length>0&&(y=[],h())}),1e3)),r.a.createElement(k.Provider,{value:{challengeState:i,setChallengeState:c,startChallenge:function(){var e,t=3;document.getElementById("challengeReady").classList.add("starting"),document.getElementById("challengeReady").innerHTML='<span id="message">Challenge starting in</span><span id="count">'.concat(t,"</span>"),e=setInterval((function(){0===--t&&(document.getElementById("challenge-overlay").classList.add("fade"),clearInterval(e),setTimeout((function(){document.getElementById("challenge-overlay").classList.add("hide"),c("started")}),900)),document.getElementById("challengeReady").innerHTML='<span id="message">Challenge starting in</span><span id="count">'.concat(t,"</span>")}),1e3)},completeChallenge:j,cancelChallenge:function(){"cancelled"!==i&&(c("cancelled"),d(),L())},challengeWordClass:g,morseArray:E,incorrectMorseIndexes:w}},e.children)}var j=r.a.createContext();function L(e){var t=Object(a.useState)(0),n=Object(l.a)(t,2),o=n[0],i=n[1],c=Object(a.useState)(!1),s=Object(l.a)(c,2),d=s[0],m=s[1],h=Object(a.useState)([]),p=Object(l.a)(h,2),f=p[0],v=p[1],E=Object(a.useContext)(k),g=E.challengeState,y=E.setChallengeState;function b(){d||(m(!0),v((function(e){return[].concat(Object(u.a)(e),[setInterval((function(){null!==document.getElementById("gameClock")?i((function(e){return e+1})):w()}),1e3)])})))}function w(){d&&(C(),m(!1))}function C(){for(var e=0;e<f.length;e++)clearInterval(f[e])}return Object(a.useEffect)((function(){switch(g){case"ready":i(0),C();break;case"started":b();break;case"completed":w();break;case"cancelled":w(),y("ready");break;default:return}}),[g]),r.a.createElement(j.Provider,{value:{gameClockTime:o,setGameClockTime:i,startGameClock:b,stopGameClock:w,cleanup:C,clockIsRunning:d,intervals:f}},e.children)}var x=r.a.createContext();function N(e){var t=Object(a.useState)(10),n=Object(l.a)(t,2),o=n[0],i=n[1];return r.a.createElement(x.Provider,{value:{wpm:Number(o),setWPM:i}},e.children)}var S=r.a.createContext();function T(e){var t=Object(a.useState)(650),n=Object(l.a)(t,2),o=n[0],i=n[1];return r.a.createElement(S.Provider,{value:{frequency:Number(o),setFrequency:i}},e.children)}var M=r.a.createContext();function A(e){var t=Object(a.useState)("straight"),n=Object(l.a)(t,2),o=n[0],i=n[1];return r.a.createElement(M.Provider,{value:{keyType:o,setKeyType:i}},e.children)}var I=n(3),B=function(){var e,t,n,r=Object(a.useContext)(s),o=r.morseCharBuffer,i=r.setMorseCharBuffer,l=r.morseWords,d=r.setMorseWords,m=Object(a.useContext)(x).wpm,h=Object(a.useContext)(c).gameMode,p=Object(a.useContext)(S).frequency,f=1200/m,v=.2*f*3,E=.2*f*7,g=I.historySize,y=!1,b=!1,w=!1,C=[],k=null,O=!1,j=0,L=0,N=!1,T=Promise.resolve(),M=window.AudioContext||window.webkitAudioContext||!1;function A(e){var t="."===e?f+f:3*f+f;return new Promise((function(a){"."===e||"-"===e?(clearInterval(L),j>=v&&j<E&&("practice"===h?i((function(e){return e+" "})):"challenge"===h&&i((function(e){return e+"_"})),j=0,clearInterval(L),L=0),i((function(t){return t+e})),function(e){var t="."===e?f:3*f;return new Promise((function(e,a){"interrupted"===n.state&&n.resume();var r=n.createOscillator();r.frequency.value=p,r.type="sine",r.onended=function(){e()};var o=n.currentTime,i=n.createGain();i.gain.exponentialRampToValueAtTime(I.mainVolume,o),i.gain.setValueAtTime(I.mainVolume,o),r.connect(i),i.connect(n.destination),r.start(o),setTimeout((function(){i.gain.setTargetAtTime(1e-4,n.currentTime,.001),r.stop(n.currentTime+.05)}),t)}))}(e).then(setTimeout((function(){L=setInterval((function(){j+=1,"practice"===h&&j>=E?(i((function(e){return e+"/"})),clearInterval(L),L=0,j=0):"challenge"===h&&j>=v&&(i((function(e){return e+"_"})),clearInterval(L),L=0,j=0)}),1),a()}),t))):setTimeout((function(){a()}),3*f)}))}function B(){y&&b?"left"===k?(C.push("-"),k=null):(C.push("."),C.push("-")):y&&!b?C.push("."):b&&!y&&C.push("-"),C.length>0&&function(){var e=C,t=0;for(var n in e)"."===e[n]?t+=2*f:"-"===e[n]&&(t+=4*f);function a(){w=!1,C=[],B()}var r=setTimeout((function(){a()}),t);w=!0;for(var o=function(t){N&&(e.pop(),clearTimeout(r),a()),T=T.then((function(){return A(e[t])}))},i=0;i<e.length;i++)o(i)}()}function q(e){if("touchstart"===e.type&&e.preventDefault(),N=!1,188===e.keyCode||190===e.keyCode){if("morseInput"===document.activeElement.id)return;"body"!==document.activeElement.tagName.toLowerCase()&&(e.preventDefault(),document.activeElement.blur())}e.repeat||(188===e.keyCode||"left"===e.target.id?(document.querySelector(".paddle#left").classList.add("active"),y=!0,b||(k="left"),w||B()):190!==e.keyCode&&"right"!==e.target.id||(document.querySelector(".paddle#right").classList.add("active"),b=!0,y||(k="right"),w||B()))}function W(e){"touchend"===e.type&&e.preventDefault(),188!==e.keyCode&&"left"!==e.target.id||(document.querySelector(".paddle#left").classList.remove("active"),y=!1,"left"===k&&(k=null),O?_():P()),190!==e.keyCode&&"right"!==e.target.id||(document.querySelector(".paddle#right").classList.remove("active"),b=!1,"right"===k&&(k=null),O?_():P())}function P(){O=!0,e=0,t=setInterval((function(){(e+=1)>20&&(O=!1,clearInterval(t),e=0)}),1)}function _(){O=!1,clearInterval(t),e<10&&(N=!0,C.pop()),e=0}window.AudioContext=window.AudioContext||window.webkitAudioContext,n=M?new M:null,Object(a.useEffect)((function(){return document.addEventListener("keydown",q),document.addEventListener("keyup",W),document.querySelectorAll(".paddle").forEach((function(e){e.addEventListener("mousedown",q),e.addEventListener("touchstart",q),e.addEventListener("mouseout",W),e.addEventListener("mouseup",W),e.addEventListener("touchend",W)})),function(){document.removeEventListener("keydown",q),document.removeEventListener("keyup",W),document.querySelectorAll(".paddle").forEach((function(e){e.removeEventListener("mousedown",q),e.removeEventListener("touchstart",q),e.removeEventListener("mouseout",W),e.removeEventListener("mouseup",W),e.removeEventListener("touchend",W)})),clearInterval(t),clearInterval(L)}}),[m,h,p]),Object(a.useEffect)((function(){if("/"===o.slice(-1)&&"practice"===h){var e=o.slice(0,o.length-1);d((function(t){return[e].concat(Object(u.a)(t))})),l.length>=g&&d((function(e){return e.slice(0,e.length-1)})),i("")}}),[o])},q=r.a.memo((function(){B()})),W=function(e){return" "===e.dd?r.a.createElement("div",{className:"ditDah"},"\xa0"):r.a.createElement("div",{className:"ditDah"},e.dd)},P=r.a.memo((function(){var e=Object(a.useContext)(s).morseCharBuffer,t=e.split("").map((function(e,t){return r.a.createElement(W,{key:t,dd:e})})),n="",o=e.split(" ");if(""===e);else for(var i in o)" "===o[i]?n+=" ":void 0===C[o[i]]?n+=""===o[i]?"":"[?]":n+=C[o[i]];return r.a.createElement("div",{id:"morseBufferDisplay"},r.a.createElement("div",{id:"overlay"}),r.a.createElement("div",{id:"ditDahs-container"},r.a.createElement("div",{id:"ditDahs"},t)),r.a.createElement("div",{id:"alphanumeric-container"},r.a.createElement("div",{id:"alphanumeric"},n.toUpperCase())))})),_=function(){var e=Object(a.useContext)(s),t=e.morseWords,n=e.setMorseWords,o="";return t.forEach((function(e,t){if(e.includes(" ")){var n="";e.split(" ").forEach((function(e){void 0===C[e]?n+="[?]":n+=C[e].toUpperCase()})),o=n+" "+o}else o=void 0===C[e]?"[?] "+o:C[e].toUpperCase()+" "+o})),r.a.createElement("div",{id:"morse-history"},r.a.createElement("div",{id:"morseHistory-textbox"},o),r.a.createElement("div",{id:"clear"},r.a.createElement("span",{id:"message"},'"',r.a.createElement("span",{className:"ditDah"},"[?]"),'" signifies no translation available.'),r.a.createElement("button",{id:"clear-history",onClick:function(){n([])}},"Clear")))},D=function(){var e,t,n,r=Object(a.useContext)(s),o=r.morseCharBuffer,i=r.setMorseCharBuffer,l=r.morseWords,d=r.setMorseWords,m=Object(a.useContext)(x).wpm,h=Object(a.useContext)(c).gameMode,p=Object(a.useContext)(S).frequency,f=0,v=0,E=0,g=0,y=1200/m*.3,b=3*y,w=7*y,C=I.historySize,k=window.AudioContext||window.webkitAudioContext||!1;window.AudioContext=window.AudioContext||window.webkitAudioContext,e=k?new k:null;var O=!1;function j(a){if("touchstart"===a.type&&a.preventDefault(),32===a.keyCode){if("morseInput"===document.activeElement.id)return;"body"!==document.activeElement.tagName.toLowerCase()&&(a.preventDefault(),document.activeElement.blur())}O||(O=!0,32!==a.keyCode&&"morseButton"!==a.target.id&&"paddle"!==a.target.className||a.repeat||(document.getElementById("morseButton").classList.add("active"),"interrupted"===e.state&&e.resume(),(t=e.createOscillator()).frequency.value=p,t.type="sine",(n=e.createGain()).gain.exponentialRampToValueAtTime(I.mainVolume,e.currentTime),t.connect(n),n.connect(e.destination),t.start(),g>=b&&g<w&&("practice"===h?i((function(e){return e+" "})):"challenge"===h&&i((function(e){return e+"_"})),clearInterval(E),E=0),clearInterval(E),f=setInterval((function(){v+=1}),1)))}function L(a){O&&(32!==a.keyCode&&"morseButton"!==a.target.id&&"paddle"!==a.target.className||a.repeat||(document.getElementById("morseButton").classList.remove("active"),O=!1,i(v<=y?function(e){return e+"."}:function(e){return e+"-"}),clearInterval(f),f=0,v=0,g=0,E=setInterval((function(){g+=1,"practice"===h&&g>=w?(i((function(e){return e+"/"})),clearInterval(E),E=0,g=0):"challenge"===h&&g>=b&&(i((function(e){return e+"_"})),clearInterval(E),E=0,g=0)}),1),void 0!==t&&"running"===t.context.state&&(n.gain.setTargetAtTime(1e-4,e.currentTime,.001),t.stop(e.currentTime+.05))))}Object(a.useEffect)((function(){document.addEventListener("keydown",j),document.addEventListener("keyup",L);var e=document.getElementById("morseButton");return e.addEventListener("touchstart",j),e.addEventListener("touchend",L),e.addEventListener("mousedown",j),e.addEventListener("mouseout",L),e.addEventListener("mouseup",L),function(){document.removeEventListener("keydown",j),document.removeEventListener("keyup",L);var e=document.getElementById("morseButton");e.removeEventListener("touchstart",j),e.removeEventListener("touchend",L),e.removeEventListener("mousedown",j),e.removeEventListener("mouseout",L),e.removeEventListener("mouseup",L),clearInterval(f),clearInterval(E)}}),[m,h,p]),Object(a.useEffect)((function(){if("/"===o.slice(-1)&&"practice"===h){var e=o.slice(0,o.length-1);d((function(t){return[e].concat(Object(u.a)(t))})),l.length>=C&&d((function(e){return e.slice(0,e.length-1)})),i("");var t=document.getElementById("morseHistory-textbox");t.scrollTop=t.scrollHeight}}),[o])},J=r.a.memo((function(){D()})),R=function(){var e=Object(a.useContext)(M).keyType;return r.a.createElement(r.a.Fragment,null,"straight"===e?r.a.createElement(J,null):r.a.createElement(q,null),r.a.createElement(P,null),r.a.createElement("br",null),r.a.createElement(_,null))},G=r.a.memo((function(e){var t=e.morseArray,n=[];for(var a in t){var o=t[a];n.push(r.a.createElement("span",{key:a},o))}return r.a.createElement("div",{id:"challengeBufferDisplay"},r.a.createElement("div",{id:"ditDahs"},n))})),H=function(e){return r.a.createElement("div",{id:"challengeControls"},r.a.createElement("button",{onClick:e.cancelChallenge},"Exit Challenge"))},F=r.a.memo((function(e){var t=Object(a.useContext)(b).word,n=("object"===typeof t?t[0].split(""):t.split("")).map((function(e,t){return r.a.createElement("span",{key:t,className:"cLetter"},e)}));return r.a.createElement("div",{id:"challengeWord",className:e.challengeWordClass},n)})),V=function(e){var t=Object(a.useContext)(j).gameClockTime,n=Math.floor(t/60),o=t%60;return r.a.createElement("div",{id:"gameClock"},"Time Elapsed: ",r.a.createElement("span",{id:"clockTime"},n," minutes ",o," seconds"))},U=r.a.memo((function(){var e=Object(a.useContext)(M).keyType,t=Object(a.useContext)(k),n=t.challengeState,o=t.cancelChallenge,i=t.morseArray,l=t.challengeWordClass;return r.a.createElement(r.a.Fragment,null,"started"===n?"straight"===e?r.a.createElement(J,null):r.a.createElement(q,null):r.a.createElement(r.a.Fragment,null),r.a.createElement("div",{id:"challenge-header"},r.a.createElement(V,null),r.a.createElement(H,{cancelChallenge:o})),r.a.createElement(F,{challengeWordClass:l}),r.a.createElement(G,{morseArray:i}))})),K=r.a.memo((function(){var e=Object(a.useContext)(c).setGameMode,t=Object(a.useContext)(s).setMorseCharBuffer,n=Object(a.useContext)(b).resetFeeder,o=Object(a.useContext)(j),i=o.stopGameClock,l=o.setGameClockTime,d=o.clockIsRunning,u=Object(a.useContext)(k).setChallengeState;function m(a){t(""),n(),u("ready"),e(a.target.id),d&&(i(),l(0)),document.querySelector(".mode-picker#gameMode #buttons").childNodes.forEach((function(e){e.id===a.target.id?e.classList.add("selected"):e.classList.remove("selected")}))}return r.a.createElement("div",{id:"gameMode",className:"mode-picker"},r.a.createElement("div",{id:"title"},"Mode"),r.a.createElement("div",{id:"buttons"},r.a.createElement("button",{id:"practice",className:"selected",onClick:m},"Practice Mode"),r.a.createElement("button",{id:"challenge",onClick:m},"Challenge Mode")))})),z=r.a.memo((function(){var e=Object(a.useContext)(M),t=e.setKeyType,n=e.keyType;function o(e){t(e.target.id),document.querySelector(".mode-picker#keyType #buttons").childNodes.forEach((function(t){t.id===e.target.id?t.classList.add("selected"):t.classList.remove("selected")})),"electronic"===e.target.id?(document.querySelector("#morseButton").classList.add("showPaddles"),document.querySelector(".paddle").classList.add("showPaddles"),document.querySelector(".paddle#left").classList.add("showPaddles"),document.querySelector(".paddle#right").classList.add("showPaddles"),document.getElementById("morseButtonText").innerHTML="TAP/HOLD BUTTONS OR PRESS COMMA / PERIOD"):(document.querySelector("#morseButton").classList.remove("showPaddles"),document.querySelector(".paddle").classList.remove("showPaddles"),document.querySelector(".paddle#left").classList.remove("showPaddles"),document.querySelector(".paddle#right").classList.remove("showPaddles"),document.getElementById("morseButtonText").innerHTML="TAP BUTTON OR PRESS SPACEBAR")}return Object(a.useEffect)((function(){document.querySelector("button#".concat(n)).classList.add("selected")}),[]),r.a.createElement("div",{id:"keyType",className:"mode-picker"},r.a.createElement("div",{id:"title"},"Key Type"),r.a.createElement("div",{id:"buttons"},r.a.createElement("button",{id:"straight",onClick:o},"Straight Key"),r.a.createElement("button",{id:"electronic",onClick:o},"Electronic Key")))})),$={twitter:{name:"Twitter",icon:"ri-twitter-fill",link:"https://twitter.com/intent/tweet?text=Check%20out%20this%20site%20that%20helps%20you%20learn%20Morse%20Code%3A%20https%3A//learnmorsecode.net%20%40genemecija%20%23morse%20%23morsecode"},facebook:{name:"Facebook",icon:"ri-facebook-box-fill",link:"https://www.facebook.com/sharer/sharer.php?u=https%3A//learnmorsecode.net"},email:{name:"Email",icon:"ri-mail-line",link:"mailto:?subject="+encodeURIComponent("Check out this site that helps you learn Morse code! https://learnmorsecode.net")}},Z={email:{name:"Email",icon:"ri-mail-line",link:"mailto:gene@genemecija.com?subject="+encodeURIComponent("Hello, Gene!")},github:{name:"GitHub",icon:"ri-github-fill",link:"https://github.com/genemecija/learn-morse-code/"},twitter:{name:"Twitter",icon:"ri-twitter-fill",link:"https://twitter.com/genemecija"}},Y=function(){function e(e){var t=e.target.id,n="900",a="500";"email"===t&&(n="150",a="150"),function(e,t,n,a){var r=void 0!==window.screenLeft?window.screenLeft:window.screen.left,o=void 0!==window.screenTop?window.screenTop:window.screen.top,i=(window.innerWidth?window.innerWidth:document.documentElement.clientWidth?document.documentElement.clientWidth:window.screen.width)/2-n/2+r,l=(window.innerHeight?window.innerHeight:document.documentElement.clientHeight?document.documentElement.clientHeight:window.screen.height)/2-a/2+o,c=window.open(e,t,"scrollbars=yes, width="+n+", height="+a+", top="+l+", left="+i);window.focus&&c.focus()}($[t].link,"Share",n,a)}var t=Object.keys($).map((function(t,n){return r.a.createElement("i",{id:t,key:n,onClick:e,className:$[t].icon})}));return r.a.createElement("div",{id:"header"},r.a.createElement("div",{id:"title"},"Learn Morse Code"),r.a.createElement("div",{id:"social-links"},"Share: ",r.a.createElement("span",{id:"share-icons"},t)))},Q=function(){var e,t=Object(a.useContext)(x).wpm,n=Object(a.useContext)(S).frequency,r=1200/t,o=window.AudioContext||window.webkitAudioContext;function i(t){var a,o="."===t?r:3*r;"interrupted"===e.state&&e.resume(),(a=e.createOscillator()).frequency.value=n,a.type="sine";var i=e.currentTime,l=e.createGain();l.gain.exponentialRampToValueAtTime(I.mainVolume,i),l.gain.setValueAtTime(I.mainVolume,i),a.connect(l),l.connect(e.destination),a.start(i),setTimeout((function(){l.gain.setTargetAtTime(1e-4,e.currentTime,.009),a.stop(e.currentTime+.05)}),o)}window.AudioContext=window.AudioContext||window.webkitAudioContext,e=o?new o:null;var l=[],c=[];return{playMorseWord:function(e){l=[];for(var t=0;t<c.length;t++)clearTimeout(c[t]);l=Array.from(e);for(var n=0,a=!0,o=function(e){var t=l[e];"."===t?(a?(a=!1,c.push(setTimeout((function(){i(t)}),0))):c.push(setTimeout((function(){i(t)}),n)),n+=2*r):"-"===t?(a?(a=!1,c.push(setTimeout((function(){i(t)}),0))):c.push(setTimeout((function(){i(t)}),n)),n+=4*r):" "===t?(c.push(setTimeout((function(){}),n)),n+=2*r):"/"===t&&(c.push(setTimeout((function(){}),n)),n+=6*r)},s=0;s<l.length;s++)o(s)},play:i}},X=r.a.memo((function(){var e=Object(a.useContext)(x),t=e.wpm,n=e.setWPM,o=Q().playMorseWord,i=5,l=30;return r.a.createElement("div",{id:"wpm",className:"mode-picker"},r.a.createElement("div",{id:"title"},"WPM ",r.a.createElement("span",{id:"range"},"(",i,"-",l,")")),r.a.createElement("div",{id:"input"},r.a.createElement("button",{id:"wpm-down",onClick:function(){n((function(e){return e-1>=i?e-1:i}))}},r.a.createElement("i",{className:"ri-arrow-down-s-line"})),r.a.createElement("input",{type:"number",name:"wpm",id:"wpm-input",min:"5",max:"30",value:t,onChange:function(e){Number(e.target.value)>l?n(l):Number(e.target.value)<i?n(i):n(Number(e.target.value))}}),r.a.createElement("button",{id:"wpm-up",onClick:function(){n((function(e){return e+1<=l?e+1:l}))}},r.a.createElement("i",{className:"ri-arrow-up-s-line"})),"Test\xa0",r.a.createElement("i",{className:"ri-volume-up-fill",onClick:function(){return o(".....")}})))})),ee=r.a.memo((function(){return r.a.createElement(r.a.Fragment,null,r.a.createElement("div",{id:"morseButton"},r.a.createElement("button",{className:"paddle",id:"left"}),r.a.createElement("button",{className:"paddle",id:"right"})),r.a.createElement("div",{id:"morseButtonText"},"TAP BUTTON OR PRESS SPACEBAR"))})),te=function(){function e(e){window.open(Z[e.target.id].link)}return r.a.createElement("div",{id:"footer"},"app by @genemecija\xa0",r.a.createElement("span",{id:"contact-icons"},r.a.createElement("i",{id:"twitter",onClick:e,className:Z.twitter.icon})),"\u2022 contact\xa0",r.a.createElement("span",{id:"contact-icons"},r.a.createElement("i",{id:"email",onClick:e,className:Z.email.icon})),"\xa0\u2022 code\xa0",r.a.createElement("span",{id:"contact-icons"},r.a.createElement("i",{id:"github",onClick:e,className:Z.github.icon})))},ne=r.a.memo((function(){var e=Object(a.useContext)(g),t=e.setWordListCount,n=e.wordListCountMax,o=Object(a.useContext)(b).resetFeeder;for(var i=[],l=0;l<n;l++)i.push(r.a.createElement("option",{value:l+1,key:l},l+1));return r.a.createElement("div",{id:"word-count",className:"mode-picker"},r.a.createElement("div",{id:"title"},"Challenge Word Count: ",r.a.createElement("span",{id:"range"},"(1-",n,")")),r.a.createElement("div",{id:"input"},r.a.createElement("select",{id:"wordCount-picker",defaultValue:n,onChange:function(e){o(),t(e.target.value)}},i)))})),ae=r.a.memo((function(){var e=Object(a.useContext)(g),t=e.wordListCategory,n=e.setWordListCategory,o=e.metadata,i=Object(a.useContext)(b),l=i.resetFeeder,c=i.setOrder,s=["sequential","random"];function d(e){(l(),s.includes(e.target.id))?(document.querySelector(".mode-picker#wordOrderPicker #buttons").childNodes.forEach((function(t){t.id===e.target.id?t.classList.add("selected"):t.classList.remove("selected")})),c(e.target.id)):n(e.target.value)}var u=Object.keys(o).map((function(e,t){return r.a.createElement("option",{value:e,key:t},o[e].name)}));return r.a.createElement("div",{id:"challengeOptions"},r.a.createElement("div",{id:"wordListPicker",className:"mode-picker"},r.a.createElement("div",{id:"title"},"Word List:"),r.a.createElement("div",{id:"input"},r.a.createElement("select",{id:"wordlist-picker",defaultValue:t,onChange:d},u))),r.a.createElement("div",{id:"wordOrderPicker",className:"mode-picker"},r.a.createElement("div",{id:"title"},"Word Order:"),r.a.createElement("div",{id:"buttons"},r.a.createElement("button",{id:"sequential",className:"selected",onClick:d},"Sequential"),r.a.createElement("button",{id:"random",onClick:d},"Random"))),r.a.createElement(ne,null),r.a.createElement("div",{id:"wordlist-description",className:"mode-picker"},r.a.createElement("div",{id:"title"},"Description:"),r.a.createElement("div",{id:"info"},o[t].description)))})),re=function(){var e=Object(a.useContext)(k).startChallenge;return r.a.createElement("div",{id:"challengeReady",className:"notify"},r.a.createElement("span",{id:"notify-title"},"Challenge Options"),r.a.createElement(ae,null),r.a.createElement("button",{id:"startChallenge",onClick:e},"Start Challenge"))},oe=function(){var e=Object(a.useContext)(j).gameClockTime,t=Object(a.useContext)(k).setChallengeState,n=Object(a.useContext)(g),o=n.wordListCount,i=n.wordListCategory,l=n.metadata;var c=Math.floor(e/60),s=e%60,d=0===c?"".concat(s," seconds"):"".concat(c," minutes and ").concat(s," seconds");return r.a.createElement("div",{id:"challengeComplete",className:"notify"},r.a.createElement("span",{id:"notify-title"},"Challenge Complete"),r.a.createElement("span",{id:"message"},"You completed ",r.a.createElement("b",null,o)," words",r.a.createElement("br",null),"from the ",r.a.createElement("b",null,l[i].name)," word list",r.a.createElement("br",null),"in ",r.a.createElement("b",null,d),"!"),r.a.createElement("button",{id:"continue",onClick:function(){t("ready")}},"Continue"))},ie=function(){var e=Object(a.useContext)(k),t=e.challengeState,n=e.setChallengeState;return r.a.createElement("div",{id:"challenge-overlay"},"ready"===t&&r.a.createElement(re,null),"completed"===t&&r.a.createElement(oe,{setChallengeState:n}))},le=n(15),ce=n.n(le),se=n(16),de=n.n(se),ue=r.a.memo((function(){var e=Q().playMorseWord;return r.a.createElement("div",{id:"info"},r.a.createElement("h1",null,"Morse Code"),r.a.createElement("p",null,"Morse code is a method of communication that uses short tones (dits) and long tones (dahs) in various sequences to make letters, numbers, and special characters. This tool will help beginners learn Morse code."),r.a.createElement("h2",null,"Dits and Dahs"),r.a.createElement("p",null,r.a.createElement("span",{className:"bold"},"Dit")," ",r.a.createElement("i",{className:"ri-volume-up-fill",onClick:function(){return e(".")}})," (",r.a.createElement("span",{className:"ditdah"},"."),") Short tones and the base unit length of Morse code communication.",r.a.createElement("br",null),r.a.createElement("span",{className:"bold"},"Dah")," ",r.a.createElement("i",{className:"ri-volume-up-fill",onClick:function(){return e("-")}})," (",r.a.createElement("span",{className:"ditdah"},"-"),") Long tones, each the length of three dits."),r.a.createElement("h2",null,"Spacing"),r.a.createElement("p",null,"The spacing between dits and dahs matters in Morse code. Spacing of various lengths signify different things.",r.a.createElement("br",null),r.a.createElement("span",{className:"bold"},"Intra-character Spacing"),' A letter in Morse code can be made up of multiple dits and dahs. The spaces between the dits and dahs that make up a single letter are each the length of one dit. E.g., three dits, each separated by one-dit-long spaces, is an "S". (',r.a.createElement("span",{className:"ditdah"},"..."),") ",r.a.createElement("i",{className:"ri-volume-up-fill",onClick:function(){return e("...")}}),r.a.createElement("br",null),r.a.createElement("span",{className:"bold"},"Inter-character Spacing"),' The space between consecutive letters is three dits long. E.g., three dits, each separated by a three-dit-long spaces is "EEE". (',r.a.createElement("span",{className:"ditdah"},". . ."),") ",r.a.createElement("i",{className:"ri-volume-up-fill",onClick:function(){return e(". . .")}}),r.a.createElement("br",null),r.a.createElement("span",{className:"bold"},"Inter-word Spacing")," The space between words is seven dits long. E.g., three dits, each separated by seven-dit-long spaces (denoted by a forward slash in this example: ",r.a.createElement("span",{className:"ditdah"},"././."),'), is "E E E". ',r.a.createElement("i",{className:"ri-volume-up-fill",onClick:function(){return e("././.")}})),r.a.createElement("h2",null,"Speed"),r.a.createElement("p",null,"The rate of communication is increased or decreased by adjusting the length of the dits, which in turn adjusts the length of dahs and spaces. Adjust the ",r.a.createElement("b",null,"WPM")," (Words Per Minute) in the Options section to adjust the speed."),r.a.createElement("h2",null,"Telegraph Key Types"),r.a.createElement("p",null,"The instrument used to send Morse code is called the key."),r.a.createElement("center",null,r.a.createElement("img",{src:ce.a,alt:"Straight Key"})),r.a.createElement("p",null,r.a.createElement("b",null,"Straight Keys")," use a single button and generate tones when pressed down. Straight keys require greater accuracy as the length of dits, dahs, and spacing is completely under manual control."),r.a.createElement("center",null,r.a.createElement("img",{src:de.a,alt:"Electronic Key"})),r.a.createElement("p",null,r.a.createElement("b",null,"Electronic Keys")," use paddles that automatically generate dits and dahs when pressed. The Electronic Keyer used here is an Iambic keyer that uses two paddles\u2013left paddle for dits, right paddle for dahs. Pressing both paddles simultaneously automatically alternates between dit and dah. Switch between the two paddles at the appropriate times to build letters in Morse code."),r.a.createElement("p",null,"Check out ",r.a.createElement("a",{href:"https://www.youtube.com/watch?v=uEy4Wvy6uUg",target:"_blank",rel:"noopener noreferrer"},"this video")," for a demonstration of the difference between Straight and Electronic keys."))})),me=n(4),he=r.a.memo((function(){var e=Q().playMorseWord;function t(t){t.preventDefault();var n=t.target.innerText;"alpha"===t.target.className&&(n=function(e){var t="";for(var n in e)t+=me[e[n].toLowerCase()],t+=" ";return t}(n)),e(n)}var n=Object.keys(me).map((function(e,n){if(n<10)return r.a.createElement("button",{key:"legend_item_"+n,className:"item",onClick:t},r.a.createElement("span",{className:"alpha",key:"legend_btn_"+n},e.toUpperCase()),r.a.createElement("span",{className:"morse",key:"legend_spn_"+n},me[e]))})),a=Object.keys(me).map((function(e,n){if(n>=10&&n<36)return r.a.createElement("button",{key:"legend_item_"+n,className:"item",onClick:t},r.a.createElement("span",{className:"alpha",key:"legend_btn_"+n},e.toUpperCase()),r.a.createElement("span",{className:"morse",key:"legend_spn_"+n},me[e]))})),o=Object.keys(me).map((function(e,n){if(n>36)return r.a.createElement("button",{key:"legend_item_"+n,className:"item",onClick:t},r.a.createElement("span",{className:"alpha",key:"legend_btn_"+n},e.toUpperCase()),r.a.createElement("span",{className:"morse",key:"legend_spn_"+n},me[e]))}));return r.a.createElement("div",{id:"legend"},r.a.createElement("div",{id:"legend-title"},"Legend"),r.a.createElement("div",{id:"legend-items"},a,n,o))})),pe=function(){var e=Q().playMorseWord,t=Object(a.useState)(""),n=Object(l.a)(t,2),o=n[0],i=n[1],c=Object(a.useState)(""),s=Object(l.a)(c,2),d=s[0],u=s[1];return Object(a.useEffect)((function(){var e=Array.from(o.trim().toLowerCase()).map((function(e){if(" "===e)return"/";var t=function(e){var t="";for(var n in e)t+=me[e[n].toLowerCase()];return t}(e);return"undefined"===t?"?":t+" "})).map((function(e){return e.trim()})).join(" ").replace(/ \/ /g,"/").replace(/ \?/g,"?");u(e)}),[o]),r.a.createElement("div",{id:"playMorseInput"},r.a.createElement("div",{id:"title"},r.a.createElement("h2",null,"Translate To Morse")),r.a.createElement("div",{id:"input"},r.a.createElement("input",{type:"text",id:"morseInput",value:o,onChange:function(e){e.preventDefault(),i(e.target.value)},placeholder:"Type here.",maxLength:"25"})," ",r.a.createElement("i",{className:"ri-play-fill",onClick:function(){e(d)}}),r.a.createElement("i",{className:"ri-stop-fill",onClick:function(){return e("")}})),r.a.createElement("div",{id:"morseTranslation"},r.a.createElement("span",{id:"morseTrans"},""===d?"Morse translation will appear here.":d.replace(/\?/g,"[?]").replace(/\] /g,"]"))))},fe=function(){var e=Object(a.useState)("nav-learn"),t=Object(l.a)(e,2),n=t[0],o=t[1];function i(e){"nav-learn"===e.target.id?o("nav-learn"):"nav-legend"===e.target.id?o("nav-legend"):o("nav-play"),document.querySelector(".navbar").childNodes.forEach((function(t){t.id===e.target.id?t.classList.add("selected"):t.classList.remove("selected")}))}return r.a.createElement("div",{className:"sidebar",id:"left"},r.a.createElement("div",{id:"sidebar-container"},r.a.createElement("div",{className:"navbar"},r.a.createElement("div",{id:"nav-play",className:"nav-item",onClick:i},"Play"),r.a.createElement("div",{id:"nav-learn",className:"nav-item selected",onClick:i},"Learn"),r.a.createElement("div",{id:"nav-legend",className:"nav-item",onClick:i},"Legend")),r.a.createElement("div",{id:"info-icon",onClick:function(){document.querySelector(".sidebar#left").classList.toggle("hide"),document.querySelector("#main-interface").classList.toggle("expandLeft")}},r.a.createElement("i",{className:"ri-arrow-left-circle-line"})),r.a.createElement("div",{id:"sidebar-content"},"nav-learn"===n&&r.a.createElement(ue,null),"nav-legend"===n&&r.a.createElement("div",{id:"playerAndLegend"},r.a.createElement(he,null),r.a.createElement("span",{id:"note"},"Adjust the Morse code speed by changing the WPM in the Options menu."),r.a.createElement(pe,null)))))},ve=r.a.memo((function(e){var t=Object(a.useContext)(S),n=t.frequency,o=t.setFrequency,i=300,l=1500;return r.a.createElement("div",{id:"frequency",className:"mode-picker"},r.a.createElement("div",{id:"title"},"Frequency ",r.a.createElement("span",{id:"range"},"(",i,"-",l,")")),r.a.createElement("div",{id:"input"},r.a.createElement("button",{id:"freq-down",onClick:function(){o((function(e){return e-10>=i?e-10:i}))}},r.a.createElement("i",{className:"ri-arrow-down-s-line"})),r.a.createElement("input",{type:"number",name:"frequency",id:"frequency-input",value:n,onChange:function(e){Number(e.target.value)>l?o(l):Number(e.target.value)<i?o(i):o(Number(e.target.value))}}),r.a.createElement("button",{id:"freq-up",onClick:function(){o((function(e){return e+10<=l?e+10:l}))}},r.a.createElement("i",{className:"ri-arrow-up-s-line"}))))})),Ee=r.a.memo((function(){var e=Object(a.useContext)(c).gameMode;return r.a.createElement(r.a.Fragment,null,r.a.createElement(Y,null),r.a.createElement("div",{id:"main-content"},r.a.createElement(A,null,r.a.createElement(N,null,r.a.createElement(T,null,r.a.createElement(d,null,r.a.createElement(y,null,r.a.createElement(w,null,r.a.createElement(O,null,r.a.createElement(L,null,r.a.createElement(fe,null),r.a.createElement("div",{id:"main-interface"},r.a.createElement("div",{id:"mainOptions"},r.a.createElement("div",{id:"options-left"},r.a.createElement(K,null),r.a.createElement(z,null)),r.a.createElement("div",{id:"options-right"},r.a.createElement(X,null),r.a.createElement(ve,null))),"practice"===e&&r.a.createElement(R,null),"challenge"===e&&r.a.createElement(r.a.Fragment,null,r.a.createElement(ie,null),r.a.createElement(U,null)),r.a.createElement(ee,null))))))))))),r.a.createElement(te,null))}));Boolean("localhost"===window.location.hostname||"[::1]"===window.location.hostname||window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));i.a.render(r.a.createElement((function(e){var t=Object(a.useState)("practice"),n=Object(l.a)(t,2),o=n[0],i=n[1];return r.a.createElement(c.Provider,{value:{gameMode:o,setGameMode:i}},e.children)}),null,r.a.createElement(Ee,null)),document.getElementById("root")),"serviceWorker"in navigator&&navigator.serviceWorker.ready.then((function(e){e.unregister()}))}],[[17,1,2]]]);
//# sourceMappingURL=main.d1a1cd6f.chunk.js.map