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) 2.48 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 a=Object.defineProperty;var d=(n,t,e)=>t in n?a(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var o=(n,t,e)=>d(n,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../../../utils/helpers.cjs");class k{constructor(t){o(this,"name","splitBlock");o(this,"editor");o(this,"originalBlock",null);o(this,"splitContainer",null);o(this,"direction","horizontal");o(this,"block",null);this.editor=t}setData(t){this.direction=t.direction,this.block=t.block}execute(){var t;!this.block||!this.isValidBlock(this.block)||(this.originalBlock=this.block,this.splitContainer=this.createSplitContainer(this.direction,this.block),(t=this.block.parentNode)==null||t.replaceChild(this.splitContainer,this.block),setTimeout(()=>{var i;const e=(i=this.splitContainer)==null?void 0:i.querySelector(".editor-block");e&&this.focusBlock(e)},10))}undo(){var t;this.originalBlock&&this.splitContainer&&((t=this.splitContainer.parentNode)==null||t.replaceChild(this.originalBlock,this.splitContainer))}redo(){var t;this.originalBlock&&this.splitContainer&&((t=this.originalBlock.parentNode)==null||t.replaceChild(this.splitContainer,this.originalBlock))}isValidBlock(t){return t.classList.contains("editor-block")&&!t.classList.contains("split-container")}createSplitContainer(t,e){const i=r.createContainer(`editor-block split-container ${t}`);i.setAttribute("contenteditable","false"),i.setAttribute("data-block-type","split"),i.setAttribute("data-direction",t);const l=this.createBlockFromOriginal(e,"Block 1"),c=this.createBlockFromOriginal(e,"Block 2");return i.appendChild(l),i.appendChild(c),i}createBlockFromOriginal(t,e){var s;const i=r.createContainer("editor-block text-block");i.setAttribute("contenteditable","false"),i.setAttribute("data-block-type","text");const l=r.createContainer("block-content");l.contentEditable="true";const c=t.querySelector(".block-content");return c&&((s=c.textContent)!=null&&s.trim())?l.textContent=c.textContent:l.textContent=this.editor.t(e),i.appendChild(l),i}focusBlock(t){const e=t.querySelector(".block-content");e&&e.contentEditable==="true"&&(e.contentEditable="true",t.classList.add("active"))}}exports.SplitBlockCommand=k;