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

3 lines (2 loc) 3.06 kB
/*! 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 u=(r,e,t)=>e in r?h(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var l=(r,e,t)=>u(r,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */;/* empty css */const f=require("../ToolbarPlugin/utils.cjs"),m=require("../../icons/align-center.svg.cjs"),y=require("../../icons/align-left.svg.cjs"),b=require("../../icons/align-right.svg.cjs"),C=require("../../icons/align-justify.svg.cjs");class S{constructor(){l(this,"name","alignment");l(this,"hotkeys",[{keys:"Ctrl+B",description:"Bold text",command:"bold",icon:"𝐁"},{keys:"Ctrl+I",description:"Italic text",command:"italic",icon:"𝐼"},{keys:"Ctrl+U",description:"Underline text",command:"underline",icon:"U̲"},{keys:"Ctrl+Shift+D",description:"Strikethrough text",command:"strikethrough",icon:"S̶"}]);l(this,"editor",null);l(this,"toolbarButtons",new Map)}initialize(e){this.editor=e,this.addToolbarButtons(),this.editor.on("align_left",()=>{var t,i;(i=(t=this.editor)==null?void 0:t.getTextFormatter())==null||i.toggleStyle("alignLeft")}),this.editor.on("align_center",()=>{var t,i;(i=(t=this.editor)==null?void 0:t.getTextFormatter())==null||i.toggleStyle("alignCenter")}),this.editor.on("align_right",()=>{var t,i;(i=(t=this.editor)==null?void 0:t.getTextFormatter())==null||i.toggleStyle("alignRight")}),this.editor.on("align_justify",()=>{var t,i;(i=(t=this.editor)==null?void 0:t.getTextFormatter())==null||i.toggleStyle("alignJustify")}),this.editor.on("selectionchange",()=>{this.handleSelectionChange()})}addToolbarButtons(){var i;const e=(i=this.editor)==null?void 0:i.getToolbar();if(!e)return;[{icon:y.default,title:"Align Left",command:"alignLeft"},{icon:m.default,title:"Align Center",command:"alignCenter"},{icon:b.default,title:"Align Right",command:"alignRight"},{icon:C.default,title:"Align Justify",command:"alignJustify"}].forEach(({icon:n,title:o,command:s})=>{var g;const a=f.createToolbarButton({icon:n,title:((g=this.editor)==null?void 0:g.t(o))||o,onClick:()=>{var c,d;(d=(c=this.editor)==null?void 0:c.getTextFormatter())==null||d.toggleStyle(s),this.handleSelectionChange()}});e.appendChild(a),this.toolbarButtons.set(s,a)})}handleSelectionChange(){this.toolbarButtons.forEach((e,t)=>{var n,o;((o=(n=this.editor)==null?void 0:n.getTextFormatter())==null?void 0:o.hasClass(t))?e.classList.add("active"):e.classList.remove("active")})}destroy(){var e,t,i,n,o;this.toolbarButtons.forEach(s=>s.remove()),this.toolbarButtons.clear(),(e=this.editor)==null||e.off("selectionchange"),(t=this.editor)==null||t.off("align_left"),(i=this.editor)==null||i.off("align_center"),(n=this.editor)==null||n.off("align_right"),(o=this.editor)==null||o.off("align_justify"),this.editor=null}}exports.AlignmentPlugin=S;