-
Type a word and hit Go for rhymes. Double-click a word in your draft for its definition. Click any result chip for its definition too.
+
Type a word and hit Go, or double-click a word in your draft. The buttons switch between its definition, rhymes, and synonyms.
@@ -528,7 +528,7 @@ editor.addEventListener('dblclick', ()=>{
if(sel){
document.getElementById('lookupInput').value = sel;
tab('lookup');
- showDefinition(sel);
+ setMode('dict');
}
});
@@ -551,11 +551,15 @@ function insertAtCursor(word){
frequency-ranked). Synonyms come from the free Datamuse API.
============================================================ */
const modeSeg = document.getElementById('modeSeg');
-let mode = 'rhyme';
+let mode = 'dict';
+function setMode(m){
+ mode = m;
+ [...modeSeg.children].forEach(c=>c.classList.toggle('active', c.dataset.mode === m));
+ doLookup();
+}
modeSeg.addEventListener('click', e=>{
const b = e.target.closest('button'); if(!b) return;
- [...modeSeg.children].forEach(c=>c.classList.remove('active'));
- b.classList.add('active'); mode = b.dataset.mode; doLookup();
+ setMode(b.dataset.mode);
});
document.getElementById('lookupBtn').addEventListener('click', doLookup);
document.getElementById('lookupInput').addEventListener('keydown', e=>{ if(e.key==='Enter') doLookup(); });
@@ -598,8 +602,12 @@ function chipHtml(words){
'';
}
function wireChips(){
+ // clicking a result navigates to that word's dictionary entry
resultsBox.querySelectorAll('.chip').forEach(c=>{
- c.addEventListener('click', ()=> showDefinition(c.dataset.w));
+ c.addEventListener('click', ()=>{
+ document.getElementById('lookupInput').value = c.dataset.w;
+ setMode('dict');
+ });
});
}
@@ -619,7 +627,7 @@ function defCard(word, inner){
defBox.querySelector('#defInsert').addEventListener('click', ()=> insertAtCursor(word));
defBox.querySelector('#defRhymes').addEventListener('click', ()=>{
document.getElementById('lookupInput').value = word;
- doLookup();
+ setMode('rhyme');
});
defBox.querySelector('.defx').addEventListener('click', ()=>{ defBox.innerHTML=''; });
}