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

6 lines (5 loc) 2.58 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 i=Object.defineProperty;var l=(n,t,e)=>t in n?i(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var o=(n,t,e)=>l(n,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */;/* empty css */const u=require("./services/LanguageManager.cjs"),g=require("./components/LanguageMenu.cjs"),s=require("../../icons/globe.svg.cjs"),c=require("../../core/services/LocaleManager.cjs");class h{constructor(){o(this,"name","language");o(this,"editor",null);o(this,"languageManager");o(this,"menu",null);o(this,"toolbarButton",null);this.languageManager=new u.LanguageManager}initialize(t){this.editor=t,this.menu=new g.LanguageMenu(t,this.languageManager),this.addToolbarButton(),this.setupLanguageManager()}addToolbarButton(){var e,a;const t=(e=this.editor)==null?void 0:e.getToolbar();t&&(this.toolbarButton=document.createElement("div"),this.toolbarButton.className="language-indicator flex items-center gap-2 py-1 bg-gray-100 rounded-lg text-sm font-medium text-gray-700 cursor-pointer hover:bg-gray-200 transition-colors",this.toolbarButton.title=((a=this.editor)==null?void 0:a.t("Current locale - Click to change"))||"Current locale - Click to change",this.updateLanguageIndicator(),this.toolbarButton.addEventListener("click",()=>{var r;(r=this.menu)==null||r.show(),this.updateLanguageIndicator()}),t.appendChild(this.toolbarButton))}updateLanguageIndicator(){var a;if(!this.toolbarButton)return;const t=((a=this.editor)==null?void 0:a.getLocale())||"en",e=c.LocaleManager.getLocaleLabel(t);this.toolbarButton.innerHTML=` <span class="language-icon">${s.default}</span> <span class="language-label">${e}</span> `}setupLanguageManager(){if(!this.editor)return;this.languageManager.initialize(this.editor);const t=localStorage.getItem("editor-language");t&&this.editor.setLocale(t).catch(console.error);const e=()=>{this.updateLanguageIndicator()},a=this.editor.setLocale.bind(this.editor);this.editor.setLocale=async r=>{await a(r),e()}}getLanguageManager(){return this.languageManager}destroy(){this.toolbarButton&&this.toolbarButton.parentElement&&this.toolbarButton.parentElement.removeChild(this.toolbarButton),this.menu&&this.menu.destroy(),this.editor=null,this.menu=null,this.toolbarButton=null}}exports.LanguagePlugin=h;