{"version":3,"names":["loadDict","name","aff","dic","dictionaries","Promise","resolve","affData","fetch","then","r","text","wordsData","dictionary","Typo","current","loadDictLang","lang","lively4url","loadIgnoreDict","focalStorage","getItem","spellCheckKey","saveIgnoreDict","dict","setItem","startSpellCheck","cm","typo","ignoreDict","_recorder_","_src_external_codemirror_spellcheck_js","rx_word","spellcheckOverlay","removeOverlay","token","stream","state","ch","peek","word","includes","next","test","check","addOverlay","box","document","getElementById","remove","sbox","getSuggestionBox","lively","removeEventListener","getWrapperElement","addEventListener","e","target","classList","contains","preventDefault","stopPropagation","suggest","sboxShow","items","x","y","hourglass","selwidget","children","isSafari","navigator","vendor","indexOf","userAgent","match","separator","length","options","forEach","s","indexInParent","slice","call","parentElement","innerHTML","fontSize","window","getComputedStyle","getPropertyValue","style","size","value","cmrect","getBoundingClientRect","left","top","offsetHeight","body","scrollTop","widgetRect","right","width","bottom","height","sboxHide","_addSourceLocation","createElement","file","end","column","line","start","zIndex","id","position","multiple","appendChild","innerText","codeMirror","screenPos","pageX","pageY","tokenRect","coordsChar","cmpos","results","all","push","onmouseout","related","relatedTarget","tagName","onchange","correction","setOption","maxHighlightLength","replaceRange","focus","setCursor","_export","setters","_reactiveJsx","addSourceLocation","_srcExternalTypoJs","default","_srcExternalFocalStorageJs","execute","__SystemJSRewritingHack","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable"],"sources":["codemirror-spellcheck.js"],"sourcesContent":["import Typo from \"src/external/typo.js\"\nimport focalStorage from \"src/external/focalStorage.js\"\n\nexport var dictionaries = {}\n\nexport async function loadDict(name, aff, dic) {\n  if (!dictionaries[name]) {\n    dictionaries[name] = new Promise(async resolve => {\n      var affData = await fetch(aff).then(r => r.text())\n      var wordsData = await fetch(dic).then(r => r.text())\n      var dictionary = new Typo( name, affData, wordsData);\t\n      resolve(dictionary)\n    })\n  }   \n  return dictionaries[name]\n}\n\nexport function current() {\n  return loadDictLang(\"en_US\")\n}\n\nexport function loadDictLang(lang=\"en_US\") {\n  return loadDict(\n    lang,\n    lively4url + `/src/external/dicts/${lang}.aff`,\n    lively4url + `/src/external/dicts/${lang}.dic`)  \n}\n\n\ncurrent()\n\n// copied from kofifus/ Codemirror spellchecker with typo corrections\n// https://gist.github.com/kofifus/4b2f79cadc871a29439d919692099406\n\n\nvar spellCheckKey = \"SpellcheckIngoreWords\"\nasync function loadIgnoreDict() {\n  return (await focalStorage.getItem(spellCheckKey)) || {};\n}\n\nasync function saveIgnoreDict(dict) { \n  return (await focalStorage.setItem(spellCheckKey, dict));\n}\n\nexport var ignoreDict\n\nexport async  function startSpellCheck(cm, typo) {\n  // console.log(\"start spellcheck \" + typo.dictionary)\n  \n\tif (!cm || !typo) return; // sanity\n\n\t// ignoreDict = {}; // dictionary of ignored words\n  if (!ignoreDict ) {\n    ignoreDict = await loadIgnoreDict()\n  }\n  \n\t// Define what separates a word\n\tvar rx_word = '!\\'\\\"#$%&()*+,-./:;<=>?@[\\\\]^_`{|}~ ';\n\n  if (cm.spellcheckOverlay) {\n    // console.log(\"remove spellcheck overlay\")\n    cm.removeOverlay(\"spellcheck\");\n  }\n  \n\tcm.spellcheckOverlay = {\n    name: \"spellcheck\",\n\t\ttoken: function(stream, state) {\n      \n\t\t\tvar ch = stream.peek();\n\t\t\tvar word = \"\";\n\t\t\tif (rx_word.includes(ch) || ch === '\\uE000' || ch === '\\uE001') {\n\t\t\t\tstream.next();\n\t\t\t\treturn null;\n\t\t\t}\n      \n      while ((ch = stream.peek()) && !rx_word.includes(ch)) {\n\t\t\t\tword += ch;\n\t\t\t\tstream.next();\n\t\t\t}\n      // cm.doc.findMarksAt(\n      // var cm = that.editor\n      \n      \n\t\t\tif (!/[a-zöäüß]/i.test(word)) return null; // no letters\n\t\t\t\n      // console.log(\"w\", word, \"stream \", stream)\n      // var token = cm.getTokenAt(cm.doc.posFromIndex(stream.pos))\n      // console.log(\"w\", word, \"type \", token.type)\n      // if (token.type && token.type.match(\"url\")) return null; \n\n      if (ignoreDict && ignoreDict[word]) return null;\n      // console.log(\"check \" + word + \" in \" + typo.dictionary + \" \" + typo.check(word))\n\t\t\tif (!typo.check(word)) return \"spell-error\"; // CSS class: cm-spell-error\n\t\t}\n\t}\n\tcm.addOverlay(cm.spellcheckOverlay);\n\n  \n  var box = document.getElementById('suggestBox');\n  if (box) box.remove()\n  \n\t// initialize the suggestion box\n\tvar sbox = getSuggestionBox(typo);\n  // console.log(\"register context menu spell checker\")\n  lively.removeEventListener(\"spellcheck\", cm.getWrapperElement(), \"contextmenu\")\n\tlively.addEventListener(\"spellcheck\", cm.getWrapperElement(), \"contextmenu\", e => {\n    if (!e.target.classList.contains('cm-spell-error')) return      \n    e.preventDefault();\n\t  e.stopPropagation();  \n\t\tsbox.suggest(cm, e);\n\t\treturn false;\n\t});\n}\n\nexport function getSuggestionBox(typo) {\n\tfunction sboxShow(cm, sbox, items, x, y, hourglass) {\n    // console.log(\"get suggestion box \" + typo.dictionary)\n\t\tlet selwidget = sbox.children[0];\n\n\t\tvar isSafari = navigator.vendor && navigator.vendor.indexOf('Apple') > -1 &&  navigator.userAgent && !navigator.userAgent.match('CriOS');\n\t\tlet separator=(!isSafari && (hourglass || items.length>0)); // separator line does not work well on safari\n\n\t\tlet options = '';\n\t\titems.forEach(s => options += '<option value=\"' + s + '\">' + s + '</option>');\n\t\tif (hourglass) options += '<option disabled=\"disabled\">&nbsp;&nbsp;&nbsp;&#8987;</option>';\n\t\tif (separator) options += '<option style=\"min-height:1px; max-height:1px; padding:0; background-color: #000000;\" disabled>&nbsp;</option>';\n\t\toptions += `<option value=\"##ignoreall##\">Ignore&nbsp;all&nbsp;${typo.dictionary}</option>`;\n\n\t\tlet indexInParent=[].slice.call(selwidget.parentElement.children).indexOf(selwidget);\n\t\tselwidget.innerHTML=options;\n\t\tselwidget=selwidget.parentElement.children[indexInParent];\n\t\t\n\t\tlet fontSize=window.getComputedStyle(cm.getWrapperElement(), null).getPropertyValue('font-size');\n\t\tselwidget.style.fontSize=fontSize;\n\t\tselwidget.size = selwidget.length;\n\t\tif (separator) selwidget.size--;\n\t\tselwidget.value = -1;\n\n\t\t// position widget inside cm\n\t\tlet cmrect = cm.getWrapperElement().getBoundingClientRect();\n    sbox.style.left = x + 'px';\n\t\tsbox.style.top = ((y - sbox.offsetHeight / 2) - document.body.parentElement.scrollTop) + 'px';\n\t\tlet widgetRect = sbox.getBoundingClientRect();\n\t\tif (widgetRect.top < cmrect.top) sbox.style.top = (cmrect.top + 2) + 'px';\n\t\tif (widgetRect.right > cmrect.right) sbox.style.left = (cmrect.right - widgetRect.width - 2) + 'px';\n\t\tif (widgetRect.bottom > cmrect.bottom) sbox.style.top = (cmrect.bottom - widgetRect.height - 2) + 'px';\n  \n\t}\n\n\tfunction sboxHide(sbox) {\n\t\tsbox.style.top = sbox.style.left = '-1000px';\n\t\t// typo.suggest(); // disable any running suggeations search\n\t}\n\n\t// create suggestions widget\n\tlet sbox = document.getElementById('suggestBox');\n\tif (!sbox) {\n\t\tsbox = document.createElement('div');\n\t\tsbox.style.zIndex = 100000;\n\t\tsbox.id = 'suggestBox';\n\t\tsbox.style.position = 'fixed';\n\t\tsboxHide(sbox);\n\n\t\tlet selwidget = document.createElement('select');\n\t\tselwidget.multiple = 'yes';\n\t\tsbox.appendChild(selwidget);\n\n\t\tsbox.suggest = (async (cm, e) => { // e is the event from cm contextmenu event\n\t\t\tif (!e.target.classList.contains('cm-spell-error')) return false; // not on typo\n\n\t\t\tlet token = e.target.innerText;\n\t\t\tif (!token) return false; // sanity\n\n\t\t\t// save cm instance, token, token coordinates in sbox\n\t\t\tsbox.codeMirror = cm;\n\t\t\tsbox.token = token;\n\t\t\tsbox.screenPos={ x: e.pageX, y: e.pageY }\n\t\t\tlet tokenRect = e.target.getBoundingClientRect();\n\t\t\tlet start=cm.coordsChar({left: tokenRect.left+1, top: tokenRect.top+1});\n\t\t\tlet end=cm.coordsChar({left: tokenRect.right-1, top: tokenRect.top+1});\n\t\t\tsbox.cmpos={ line: start.line, start: start.ch, end: end.ch};\n\n\t\t\t// show hourglass\n\t\t\t// sboxShow(cm, sbox, [], e.pageX, e.pageY, true);\n      \n\t\t\tvar results = [];\n\t\n      // async \n\t\t\ttypo.suggest(token, null, all => {\n\t\t\t\t//console.log('done');\n\t\t\t\tsboxShow(cm, sbox, results, e.pageX, e.pageY);\n\t\t\t}, next => {\n\t\t\t\t//console.log('found '+next);\n\t\t\t\tresults.push(next);\n\t\t\t\tsboxShow(cm, sbox, results, e.pageX, e.pageY, true);\n\t\t\t});\n\n\t\t\t// non async \n\t\t\t// sboxShow(cm, sbox, typo.suggest(token), e.pageX, e.pageY);\n\n\t\t\te.preventDefault();\n\n\t\t\treturn false;\n\t\t});\n\n\t\tsbox.onmouseout = (e => {\n\t\t\tlet related=(e.relatedTarget ? e.relatedTarget.tagName : null);\n\t\t\tif (related!=='SELECT' && related!=='OPTION') sboxHide(sbox)\n\t\t});\n\n\t\tselwidget.onchange = (e => {\n\t\t\tsboxHide(sbox)\n\t\t\tlet cm = sbox.codeMirror, correction = e.target.value;\n\t\t\tif (correction == '##ignoreall##') {\n        \n\t\t\t\tignoreDict[sbox.token] = true;\n        saveIgnoreDict(ignoreDict);\n\t\t\t\tcm.setOption('maxHighlightLength', (--cm.options.maxHighlightLength) + 1); // ugly hack to rerun overlays\n\t\t\t} else {\n\t\t\t\tcm.replaceRange(correction, { line: sbox.cmpos.line, ch: sbox.cmpos.start}, { line: sbox.cmpos.line, ch: sbox.cmpos.end});\n\t\t\t\tcm.focus();\n\t\t\t\tcm.setCursor({line: sbox.cmpos.line, ch: sbox.cmpos.start+correction.length});\n\t\t\t}\n\t\t});\n\n\t\tdocument.body.appendChild(sbox);\n\t}\n\n\treturn sbox;\n}"],"mappings":"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"}