{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-drawio/src/client/keys.js"],"names":["boundEval","GraphControl","Keys","getChar","evt","String","fromCharCode","keyCode","charCode","logEvent","console","log","shiftKey","ctrlKey","altKey","metaKey","getTextSelection","window","getSelection","toLocaleString","handle","handledInCodeMirror","composedPath","find","node","tagName","lively","lastScrollTop","document","scrollingElement","scrollTop","lastScrollLeft","scrollLeft","char","ctrl","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"],"mappings":"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","file":"keys.js","sourcesContent":["'use strict';\n\n// Livel4 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\";\n\nexport default class Keys {\n\n  static getChar(evt) {\n    return String.fromCharCode(evt.keyCode || evt.charCode);\n  }\n\n  static logEvent(evt) {\n    console.log(`Pressed ${this.getChar(evt)} (shift=${evt.shiftKey}, ctrl=${evt.ctrlKey}, alt=${evt.altKey}, meta=${evt.metaKey})`);\n  }\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 = this.getChar(evt);\n      const ctrl = evt.ctrlKey || evt.metaKey;\n      const { shiftKey, altKey, keyCode, charCode } = 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          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/*\nlively.keys = Keys\n*/"]}