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) 2.52 kB
"use strict";var m=Object.defineProperty;var S=(s,e,t)=>e in s?m(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var u=(s,e,t)=>S(s,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("../../../core/ui/PopupManager.cjs"),r=require("../../../utils/helpers.cjs");class w{constructor(e){u(this,"popup",null);u(this,"editor");u(this,"container",null);this.editor=e}initialize(e){this.popup=new f.PopupManager(e,{title:e.t("Keyboard Shortcuts"),className:"shortcuts-menu",closeOnClickOutside:!0,items:[{type:"custom",id:"shortcuts-content",content:()=>this.createContent()}]})}createContent(){var n,a;(n=this.container)==null||n.remove(),this.container=r.createContainer("p-4");const e=document.createElement("input");e.type="text",e.placeholder="Search by category or shortcut...",e.className="w-full p-2 mb-4 border border-gray-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-500",this.container.appendChild(e);const t=r.createContainer("shortcuts-grid");this.container.appendChild(t);const o=(a=this.editor)==null?void 0:a.getHotkeys(),i=(c="")=>{t.innerHTML="",o&&Object.entries(o).forEach(([p,d])=>{const l=d.filter(h=>{const C=p.toLowerCase().includes(c),y=h.description.toLowerCase().includes(c),g=this.formatShortcut(h.keys).toLowerCase().includes(c);return C||y||g});if(l.length>0){const h=this.renderCategory(p,l);t.appendChild(h)}})};return i(),e.addEventListener("input",c=>{const p=c.target.value.toLowerCase();i(p)}),this.container}renderCategory(e,t){const o=r.createContainer(),i=r.createSpan("shortcuts-category",e),n=r.createUl("shortcuts-group");return t.forEach(a=>{const c=this.renderShortcut(a);n.appendChild(c)}),o.appendChild(i),o.appendChild(n),o.appendChild(r.createHr()),o}renderShortcut(e){const t=r.createLi("shortcut"),o=r.createSpan("shortcut-icon",e.icon),i=r.createSpan("shortcut-description",e.description),n=r.createKbd("shortcut-key",this.formatShortcut(e.keys));return t.appendChild(o),t.appendChild(i),t.appendChild(n),t}formatShortcut(e){return e.replace("Ctrl","⌃").replace("Shift","⇧").replace("Alt","⌥").replace("Enter","↵").replace("Backspace","⌫").replace("Delete","⌦").replace("ArrowUp","↑").replace("ArrowDown","↓").replace("ArrowLeft","←").replace("ArrowRight","→")}show(){var e;this.initialize(this.editor),(e=this.popup)==null||e.show()}destroy(){var e;this.popup&&(this.popup.destroy(),this.popup=null),(e=this.container)==null||e.remove()}}exports.ShortcutsMenu=w;