UNPKG

on-codemerge

Version:

A WYSIWYG editor for on-codemerge is a user-friendly interface that allows users to edit and view their code in real time, exactly as it will appear in the final product

2 lines (1 loc) 1.93 kB
"use strict";var h=Object.defineProperty;var l=(o,t,e)=>t in o?h(o,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[t]=e;var r=(o,t,e)=>l(o,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */;/* empty css */const c=require("./services/ShortcutManager.cjs"),d=require("./components/ShortcutsMenu.cjs"),g=require("../ToolbarPlugin/utils.cjs"),m=require("../../icons/shortcuts.svg.cjs");class b{constructor(){r(this,"name","shortcuts");r(this,"editor",null);r(this,"shortcutManager");r(this,"menu",null);r(this,"toolbarButton",null);this.shortcutManager=new c.ShortcutManager}initialize(t){this.menu=new d.ShortcutsMenu(t),this.editor=t,this.addToolbarButton(),setTimeout(()=>{this.setupShortcuts()},1e3)}addToolbarButton(){var e;const t=document.querySelector(".editor-toolbar");t&&(this.toolbarButton=g.createToolbarButton({icon:m.default,title:(e=this.editor)==null?void 0:e.t("Keyboard Shortcuts"),onClick:()=>{var n;return(n=this.menu)==null?void 0:n.show()}}),t.appendChild(this.toolbarButton))}setupShortcuts(){var e,n;const t=(e=this.editor)==null?void 0:e.getHotkeys();t&&(Object.entries(t).map(([u,a])=>{a.map(i=>{this.shortcutManager.register(i.keys,()=>{var s;return(s=this.editor)==null?void 0:s.triggerEvent(i.command)}),i.keysMac&&this.shortcutManager.register(i.keysMac,()=>{var s;return(s=this.editor)==null?void 0:s.triggerEvent(i.command)})})}),(n=this.editor)==null||n.getContainer().addEventListener("keydown",u=>{this.shortcutManager.handleKeyDown(u)}))}destroy(){var t;this.toolbarButton&&this.toolbarButton.parentElement&&this.toolbarButton.parentElement.removeChild(this.toolbarButton),(t=this.editor)==null||t.getContainer().removeEventListener("keydown",e=>{this.shortcutManager.handleKeyDown(e)}),this.menu&&this.menu.destroy(),this.editor=null,this.menu=null,this.toolbarButton=null}}exports.ShortcutsPlugin=b;