{"version":3,"sources":["https://lively-kernel.org/lively4/swt1-debugging/src/client/keys.js"],"names":["boundEval","GraphControl","keyInfo","Keys","getTextSelection","window","getSelection","toLocaleString","handle","evt","handledInCodeMirror","composedPath","find","node","tagName","lively","lastScrollTop","document","scrollingElement","scrollTop","lastScrollLeft","scrollLeft","char","ctrl","shiftKey","altKey","keyCode","charCode","keyHandlers","openWorkspace","openSearchWidget","openBrowser","openComponentInWindow","fullTextSearch","str","letsScript","System","import","then","m","e","handleError","hideSearchWidget","search","body","querySelector","create","appendChild","setFocus","notify","name","match","callback","preventDefault","err","console","log","onKeyUp","key","stopPropagation"],"mappings":"AAAA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;;;;;;;;;;AAEOA,e;;AACAC,kB;;AACAC,a;;;;;;;;;;;AAFAF,oD;;;;;;;;;;;;;AACAC,uD;;;;;;;;;;;;;AACAC,kD;;;;;;;AAEQ,YAAMC,IAAN,CAAW;;AAExB,eAAOC,gBAAP,GAA0B;AACxB,iBAAOC,OAAOC,YAAP,GAAsBC,cAAtB,EAAP;AACD;;AAED,eAAOC,MAAP,CAAcC,GAAd,EAAmB;AACjB,mBAASC,mBAAT,CAA6BD,GAA7B,EAAkC;AAChC,mBAAOA,IAAIE,YAAJ,GAAmBC,IAAnB,CAAwBC,QAAQA,KAAKC,OAAL,IAAgB,oBAAhD,CAAP;AACD;;AAED;AACAC,iBAAOC,aAAP,GAAuBC,SAASC,gBAAT,CAA0BC,SAAjD;AACAJ,iBAAOK,cAAP,GAAwBH,SAASC,gBAAT,CAA0BG,UAAlD;;AAEA,cAAI;AACF,kBAAM,EAAEC,IAAF,EAAQC,IAAR,EAAcC,QAAd,EAAwBC,MAAxB,EAAgCC,OAAhC,EAAyCC,QAAzC,KAAsDzB,QAAQO,GAAR,CAA5D;;AAEA,kBAAMmB,cAAc;AAClB;AACA,aAAC,gBAAD,EAAmBL,QAAQD,QAAQ,GAAnC,EAAwCb,OAAO;AAC7CM,qBAAOc,aAAP,CAAqB,EAArB;AACD,aAFD,CAFkB;AAKlB;AACA,aAAC,QAAD,EAAWN,QAAQC,QAAR,IAAoBF,QAAQ,GAAvC,EAA4Cb,OAAO;AACjDM,qBAAOe,gBAAP,CAAwB,KAAK1B,gBAAL,EAAxB,EAAiD,IAAjD,EAAuDK,IAAIE,YAAJ,GAAmB,CAAnB,CAAvD;AACD,aAFD,CANkB;AASlB;AACA,aAAC,gBAAD,EAAmBa,YAAYD,IAAZ,IAAoBD,QAAQ,GAA/C,EAAoDb,OAAO;AACzDM,qBAAOgB,WAAP,CAAmB,KAAK3B,gBAAL,EAAnB;AACD,aAFD,CAVkB;AAalB;AACA,aAAC,gBAAD,EAAmBoB,YAAYD,IAAZ,IAAoBD,QAAQ,GAA/C,EAAoDb,OAAO;AACzD;AACAM,qBAAOiB,qBAAP,CAA6B,aAA7B;AACD,aAHD,CAdkB;AAkBlB;AACA,aAAC,oBAAD,EAAuBT,QAAQD,QAAQ,GAAvC,EAA4Cb,OAAO;AACjDM,qBAAOiB,qBAAP,CAA6B,sBAA7B;AACD,aAFD,CAnBkB;AAsBlB;AACA,aAAC,cAAD,EAAiB,CAACR,QAAD,IAAaD,IAAb,IAAqBD,QAAQ,GAA9C,EAAmDb,OAAO;AACxDM,qBAAOiB,qBAAP,CAA6B,gBAA7B;AACD,aAFD,CAvBkB;AA0BlB;AACA;AACA;AACA;AACA,aAAC,oBAAD,EAAuBT,QAAQE,MAAR,IAAkBH,QAAQ,GAAjD,EAAsDb,OAAO;AAC3D,kBAAIC,oBAAoBD,GAApB,CAAJ,EAA8B;AAC5B,uBAD4B,CACpB;AACT;AACDM,qBAAOiB,qBAAP,CAA6B,eAA7B;AACD,aALD,CA9BkB;AAoClB;AACA,aAAC,qBAAD,EAAwBT,QAAQE,MAAR,IAAkBH,QAAQ,GAAlD,EAAuDb,OAAO;AAC5DM,qBAAOiB,qBAAP,CAA6B,gBAA7B;AACD,aAFD,CArCkB;AAwClB;AACA,aAAC,cAAD,EAAiBT,QAAQE,MAAR,IAAkBH,QAAQ,GAA3C,EAAgDb,OAAO;AACrDR,2BAAagC,cAAb,CAA4B,KAAK7B,gBAAL,EAA5B;AACD,aAFD,CAzCkB;AA4ClB;AACA,aAAC,yBAAD,EAA4BmB,QAAQE,MAAR,IAAkBH,QAAQ,GAAtD,EAA2D,MAAMb,GAAN,IAAa;AACtE,kBAAIC,oBAAoBD,GAApB,CAAJ,EAA8B;AAC5B,uBAD4B,CACpB;AACT;AACD,kBAAIyB,MAAM7B,OAAOC,YAAP,GAAsBC,cAAtB,EAAV;AACA,kBAAI;AACF,sBAAM4B,aAAa,MAAMC,OAAOC,MAAP,CAAc,6BAAd,EACtBC,IADsB,CACjBC,KAAKA,EAAEJ,UADU,CAAzB;;AAGAA,4BAAW,MAAMnC,UAAUkC,GAAV,CAAjB;AACD,eALD,CAKE,OAAMM,CAAN,EAAS;AACTzB,uBAAO0B,WAAP,CAAmBD,CAAnB;AACD;AACF,aAbD,CA7CkB;AA2DlB;AACA,aAAC,oBAAD,EAAuBd,WAAW,EAAlC,EAAsCjB,OAAO;AAC3CM,qBAAO2B,gBAAP;AACD,aAFD,CA5DkB;AA+DlB;AACA,aAAC,uBAAD,EAA0BhB,YAAY,GAAtC,EAA2C,MAAMjB,GAAN,IAAa;AACtD,oBAAMkC,SAAS1B,SAAS2B,IAAT,CAAcC,aAAd,CAA4B,uBAA5B,MAAwD,yBAAM9B,OAAO+B,MAAP,CAAc,uBAAd,CAAN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAxD,CAAf;AACA7B,uBAAS2B,IAAT,CAAcG,WAAd,CAA0BJ,MAA1B;AACAA,qBAAOK,QAAP;AACD,aAJD,CAhEkB,EAqElB,CAAC,OAAD,EAAUzB,QAAQ,CAACE,MAAT,IAAmBH,QAAQ,GAArC,EAA0Cb,OAAO;AAC/C,kBAAIC,oBAAoBD,GAApB,CAAJ,EAA8B;AAC5B,uBAD4B,CACpB;AACT;AACD,kBAAIyB,MAAM7B,OAAOC,YAAP,GAAsBC,cAAtB,EAAV;AACAQ,qBAAOkC,MAAP,CAAc,WAAWf,GAAzB;AACA,kBAAI;AACFlC,0BAAUkC,GAAV;AACD,eAFD,CAEE,OAAMM,CAAN,EAAS;AACTzB,uBAAO0B,WAAP,CAAmBD,CAAnB;AACD;AACF,aAXD,CArEkB,CAApB;;AAmFA,kBAAM,CAACU,IAAD,EAAOC,KAAP,EAAcC,QAAd,IAA0BxB,YAAYhB,IAAZ,CAAiB,CAAC,CAACsC,IAAD,EAAOC,KAAP,CAAD,KAAmBA,KAApC,KAA8C,EAA9E;AACA,gBAAGC,QAAH,EAAa;AACXA,uBAAS3C,GAAT;AACAA,kBAAI4C,cAAJ;AACD;AACF,WA3FD,CA2FE,OAAOC,GAAP,EAAY;AACZC,oBAAQC,GAAR,CAAY,4BAA6BF,GAAzC;AACD;AACF;;AAED,eAAOG,OAAP,CAAehD,GAAf,EAAoB;AAClB,cAAIA,IAAIiD,GAAJ,IAAW,KAAf,EAAsB;AACpBjD,gBAAIkD,eAAJ;AACAlD,gBAAI4C,cAAJ;AACD;AAEF;AArHuB;;yBAALlD,I;;;;;;;;6BAAAA,qC","file":"keys.js","sourcesContent":["'use strict';\n\n// Lively4 Keyboard shortcuts\n\n// Experiments for more late bound modules... that way the expots won't get frozen!\n// idea\n\n// #Duplication with shortcuts.js #TODO\n\n// import lively from \"./lively.js\"; #TODO does not work anymore...\n\nimport boundEval from \"src/client/bound-eval.js\";\nimport GraphControl from \"templates/graph-control.js\";\nimport keyInfo from \"src/client/keyinfo.js\";\n\nexport default class Keys {\n\n  static getTextSelection() {\n    return window.getSelection().toLocaleString();\n  }\n  \n  static handle(evt) {\n    function handledInCodeMirror(evt) {\n      return evt.composedPath().find(node => node.tagName == \"LIVELY-CODE-MIRROR\");\n    }\n    \n    // #Hack, fix a little but in ContextMenu movement...\n    lively.lastScrollTop = document.scrollingElement.scrollTop;\n    lively.lastScrollLeft = document.scrollingElement.scrollLeft;\n    \n    try {\n      const { char, ctrl, shiftKey, altKey, keyCode, charCode } = keyInfo(evt);\n      \n      const keyHandlers = [\n        // #KeyboardShortcut Ctrl-K open workspace\n        [\"Open Workspace\", ctrl && char == \"K\", evt => {\n          lively.openWorkspace(\"\")\n        }],\n        // #KeyboardShortcut Ctrl-Shift-F search throughout the whole repository\n        [\"Search\", ctrl && shiftKey && char == \"F\", evt => {\n          lively.openSearchWidget(this.getTextSelection(), null, evt.composedPath()[0]);\n        }],\n        // #KeyboardShortcut Ctrl-Shift-B open browser\n        [\"Open Container\", shiftKey && ctrl && char == \"B\", evt => {\n          lively.openBrowser(this.getTextSelection());\n        }],\n        // #KeyboardShortcut Ctrl-Shift-G open sync tool\n        [\"Open Sync Tool\", shiftKey && ctrl && char == \"G\", evt => {\n          // this does not work up on #Jens' windows machine\n          lively.openComponentInWindow(\"lively-sync\");\n        }],\n        // #KeyboardShortcut Ctrl-O open component bin\n        [\"Open Component Bin\", ctrl && char == \"O\", evt => {\n          lively.openComponentInWindow(\"lively-component-bin\");\n        }],\n        // #KeyboardShortcut Ctrl-J open console\n        [\"Open Console\", !shiftKey && ctrl && char == \"J\", evt => {\n          lively.openComponentInWindow(\"lively-console\");\n        }],\n        // [\"Open DevDocs\", ctrl && char == \"H\", evt => {\n        //   lively.openHelpWindow(this.getTextSelection());\n        // }],\n        // #KeyboardShortcut Ctrl-Alt-G open graph control\n        [\"Open Graph Control\", ctrl && altKey && char == \"G\", evt => {\n          if (handledInCodeMirror(evt)) {\n            return; // code mirror does not stop it's propagation\n          }\n          lively.openComponentInWindow(\"graph-control\");\n        }],\n        // #KeyboardShortcut Ctrl-Alt-D open research diary        \n        [\"Open Research Diary\", ctrl && altKey && char == \"D\", evt => {\n          lively.openComponentInWindow(\"research-diary\");\n        }],\n        // #KeyboardShortcut Ctrl-Alt-F search graph\n        [\"Search Graph\", ctrl && altKey && char == \"F\", evt => {\n          GraphControl.fullTextSearch(this.getTextSelection());\n        }],\n        // #KeyboardShortcut Ctrl-Alt-V eval and open in vivide\n        [\"Eval & Script in Vivide\", ctrl && altKey && char == \"V\", async evt => {\n          if (handledInCodeMirror(evt)) {\n            return; // code mirror does not stop it's propagation\n          }\n          let str = window.getSelection().toLocaleString();\n          try {\n            const letsScript = await System.import('src/client/vivide/vivide.js')\n              .then(m => m.letsScript);\n\n            letsScript(await boundEval(str));\n          } catch(e) {\n            lively.handleError(e);\n          }\n        }],\n        // #KeyboardShortcut ESC hide search widget\n        [\"Hide Search Widget\", keyCode == 27, evt => {\n          lively.hideSearchWidget();\n        }], \n        // #KeyboardShortcut F8 open generic search widget\n        [\"Generic Search Widget\", keyCode === 119, async evt => {\n          const search = document.body.querySelector('lively-generic-search') || await lively.create('lively-generic-search');\n          document.body.appendChild(search);\n          search.setFocus();\n        }],\n        [\"Do It\", ctrl && !altKey && char == \"D\", evt => {\n          if (handledInCodeMirror(evt)) {\n            return; // code mirror does not stop it's propagation\n          }\n          let str = window.getSelection().toLocaleString();\n          lively.notify(\"eval: \" + str)\n          try {\n            boundEval(str);\n          } catch(e) {\n            lively.handleError(e);\n          }\n        }],\n      ];\n      \n      const [name, match, callback] = keyHandlers.find(([name, match]) => match) || [];\n      if(callback) {\n        callback(evt);\n        evt.preventDefault();\n      }\n    } catch (err) {\n      console.log(\"Error in handleKeyEvent\" +  err);\n    }\n  }\n  \n  static onKeyUp(evt) {\n    if (evt.key == \"Alt\") {\n      evt.stopPropagation()\n      evt.preventDefault()\n    }\n    \n  }\n}\n/*\nlively.keys = Keys\n*/"]}