{"version":3,"sources":["https://lively-kernel.org/lively4/composed-offset/src/components/widgets/lively-code-mirror-fake.js"],"names":["fake","fakeCMInput","fakeCMKeyEvent","createCodeMirrorFakeEvent","prettyCodeNames","enter","home","leftArrow","upArrow","rightArrow","downArrow","type","code","modifiers","charCode","e","_handled","keyCode","preventDefault","stopPropagation","i","length","editor","eventType","triggerOnKeyDown","triggerOnKeyPress","triggerOnKeyUp","Error","char","replaceSelection","originalCode","charCodeAt","push"],"mappings":"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","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"]}