{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-bp2019/src/components/widgets/lively-code-mirror-fake.js"],"names":["prettyCodeNames","enter","home","leftArrow","upArrow","rightArrow","downArrow","createCodeMirrorFakeEvent","type","code","modifiers","charCode","e","_handled","keyCode","preventDefault","stopPropagation","i","length","fakeCMKeyEvent","editor","eventType","triggerOnKeyDown","triggerOnKeyPress","triggerOnKeyUp","Error","fakeCMInput","char","replaceSelection","fake","originalCode","charCodeAt","push"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA,gBAAIA,kBAAkB;AAClBC,uBAAO,EADW;AAElBC,sBAAM,EAFY;AAGlBC,2BAAW,EAHO;AAIlBC,yBAAS,EAJS;AAKlBC,4BAAY,EALM;AAMlBC,2BAAW;AANO,aAAtB;;;;;;;;;;;;;;;AASA,qBAASC,yBAAT,CAAmCC,IAAnC,EAAyCC,IAAzC,EAA+CC,SAA/C,EAA0DC,QAA1D,EACA;AACI,oBAAIC,IAAI;AACJC,8BAAU,KADN;AAEJL,0BAAMA,IAFF;AAGJG,8BAAUA,QAHN;AAIJG,6BAASL,IAJL;AAKJM,oCAAgB,YAAU;AAAE,6BAAKF,QAAL,GAAgB,IAAhB;AAAuB,qBAL/C;AAMJG,qCAAiB,YAAU,CAAE;AANzB,iBAAR;AAQA,oBAAIN,SAAJ,EAAe;AACX,yBAAK,IAAIO,IAAI,CAAb,EAAgBA,IAAIP,UAAUQ,MAA9B,EAAsC,EAAED,CAAxC,EACIL,EAAEF,UAAUO,CAAV,CAAF,IAAkB,IAAlB;AACP;AACD,uBAAOL,CAAP;AACH;;AAED,qBAASO,cAAT,CAAwBC,MAAxB,EAAgCC,SAAhC,EAA2CZ,IAA3C,EAAiDC,SAAjD,EAA4DC,QAA5D,EACA;AACI,oBAAIC,IAAIL,0BAA0Bc,SAA1B,EAAqCZ,IAArC,EAA2CC,SAA3C,EAAsDC,QAAtD,CAAR;AACA,wBAAOU,SAAP;AACA,yBAAK,SAAL;AAAgBD,+BAAOE,gBAAP,CAAwBV,CAAxB,EAA4B;AAC5C,yBAAK,UAAL;AAAiBQ,+BAAOG,iBAAP,CAAyBX,CAAzB,EAA6B;AAC9C,yBAAK,OAAL;AAAcQ,+BAAOI,cAAP,CAAsBZ,CAAtB,EAA0B;AACxC;AAAS,8BAAM,IAAIa,KAAJ,CAAU,oBAAV,CAAN;AAJT;AAMA,uBAAOb,EAAEC,QAAT;AACH;;AAED,qBAASa,WAAT,CAAqBN,MAArB,EAA6BO,IAA7B,EACA;AACI,oBAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC3B;AACAP,2BAAOQ,gBAAP,CAAwBD,IAAxB;AACF;AACJ;;AAEc,qBAASE,IAAT,CAAcT,MAAd,EAAsBU,YAAtB,EAAoCpB,SAApC,EACf;AACIA,4BAAYA,aAAa,EAAzB;AACA,oBAAID,IAAJ;AACA,oBAAIE,QAAJ;AACA,oBAAImB,iBAAiB,GAArB,EAA0B;AACtBrB,2BAAO,IAAIsB,UAAJ,CAAe,CAAf,CAAP;AACArB,8BAAUsB,IAAV,CAAe,UAAf;AACArB,+BAAW,IAAIoB,UAAJ,CAAe,CAAf,CAAX;AACH;AACDtB,uBAAOA,QAAQT,gBAAgB8B,YAAhB,CAAR,IAAyCA,YAAhD;AACA,oBAAI,OAAOrB,IAAP,KAAgB,QAApB,EACIA,OAAOA,KAAKsB,UAAL,CAAgB,CAAhB,CAAP;;AAEJ;AACA;AACA,oBAAI,EAAED,aAAaZ,MAAb,IAAuB,CAAvB,IAA4BR,UAAUQ,MAAV,IAAmB,CAAjD,CAAJ,EAAyD;AACvD,wBAAIC,eAAeC,MAAf,EAAuB,SAAvB,EAAkCX,IAAlC,EAAwCC,SAAxC,EAAmDC,QAAnD,CAAJ,EAAkE;AAChE;AACD;AACD,wBAAIQ,eAAeC,MAAf,EAAuB,UAAvB,EAAmCX,IAAnC,EAAyCC,SAAzC,EAAoDC,QAApD,CAAJ,EAAmE;AACjE;AACD;AACF;AACDe,4BAAYN,MAAZ,EAAoBU,YAApB;AACAX,+BAAeC,MAAf,EAAuB,OAAvB,EAAgCX,IAAhC,EAAsCC,SAAtC,EAAiDC,QAAjD;AACH;;+BA1BuBkB,I","file":"lively-code-mirror-fake.js","sourcesContent":["// pretty names to use for codes, e.g. `fake(\"leftArrow\")` \nvar prettyCodeNames = {\n    enter: 13,\n    home: 36,\n    leftArrow: 37, \n    upArrow: 38, \n    rightArrow: 39, \n    downArrow: 40\n};\n \nfunction createCodeMirrorFakeEvent(type, code, modifiers, charCode)\n{\n    var e = { \n        _handled: false,\n        type: type,\n        charCode: charCode,\n        keyCode: code,\n        preventDefault: function(){ this._handled = true; },\n        stopPropagation: function(){},\n    };  \n    if (modifiers) {\n        for (var i = 0; i < modifiers.length; ++i)\n            e[modifiers[i]] = true;\n    }\n    return e;\n}\n \nfunction fakeCMKeyEvent(editor, eventType, code, modifiers, charCode)\n{\n    var e = createCodeMirrorFakeEvent(eventType, code, modifiers, charCode);\n    switch(eventType) {\n    case \"keydown\": editor.triggerOnKeyDown(e); break;\n    case \"keypress\": editor.triggerOnKeyPress(e); break;\n    case \"keyup\": editor.triggerOnKeyUp(e); break;\n    default: throw new Error(\"Unknown event type\");\n    }\n    return e._handled;\n}\n \nfunction fakeCMInput(editor, char)\n{\n    if (typeof char === \"string\") {\n       // editor.display.input.value += char;\n       editor.replaceSelection(char)\n    }\n}\n \nexport default function fake(editor, originalCode, modifiers)\n{\n    modifiers = modifiers || [];\n    var code;\n    var charCode;\n    if (originalCode === \"(\") {\n        code = \"9\".charCodeAt(0);\n        modifiers.push(\"shiftKey\");\n        charCode = \"(\".charCodeAt(0);\n    }\n    code = code || prettyCodeNames[originalCode] || originalCode;\n    if (typeof code === \"string\")\n        code = code.charCodeAt(0);\n  \n    // simple character strokes like \"r\" should always be input?\n    // workaround: \"r\" bug that invoked search instead of beeing input\n    if (!(originalCode.length == 1 && modifiers.length ==0)) {\n      if (fakeCMKeyEvent(editor, \"keydown\", code, modifiers, charCode)) {\n        return \n      }  \n      if (fakeCMKeyEvent(editor, \"keypress\", code, modifiers, charCode)) {\n        return;\n      }      \n    } \n    fakeCMInput(editor, originalCode);\n    fakeCMKeyEvent(editor, \"keyup\", code, modifiers, charCode);\n}\n"]}