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
3 lines (2 loc) • 2.17 kB
JavaScript
/*! on-codemerge v1.3.1 @author Pavel Kuzmin @license MIT @homepage https://s00d.github.io/on-codemerge/ @repository git+https://github.com/s00d/on-codemerge.git Copyright (c) 2026 Pavel Kuzmin - Built on 2026-07-02T13:39:17.947Z */
"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 n=(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"),b=require("../../icons/shortcuts.svg.cjs");class m{constructor(){n(this,"name","shortcuts");n(this,"editor",null);n(this,"shortcutManager");n(this,"menu",null);n(this,"toolbarButton",null);this.shortcutManager=new c.ShortcutManager}initialize(t){this.editor=t,this.menu=new d.ShortcutsMenu(t),this.addToolbarButton(),setTimeout(()=>{this.setupShortcuts()},1e3)}addToolbarButton(){var e,i;const t=(e=this.editor)==null?void 0:e.getToolbar();t&&(this.toolbarButton=g.createToolbarButton({icon:b.default,title:(i=this.editor)==null?void 0:i.t("Keyboard Shortcuts"),onClick:()=>{var r;return(r=this.menu)==null?void 0:r.show()}}),t.appendChild(this.toolbarButton))}setupShortcuts(){var e,i;const t=(e=this.editor)==null?void 0:e.getHotkeys();t&&(Object.entries(t).forEach(([r,a])=>{a.forEach(s=>{this.shortcutManager.register(s.command,s.keys,()=>{var u;return(u=this.editor)==null?void 0:u.triggerEvent(s.command)},s.description,r,s.keysMac)})}),(i=this.editor)==null||i.getContainer().addEventListener("keydown",r=>{this.shortcutManager.handleKeyDown(r)}))}getShortcutManager(){return this.shortcutManager}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.shortcutManager.clear(),this.editor=null,this.menu=null,this.toolbarButton=null}}exports.ShortcutsPlugin=m;