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
4 lines (3 loc) • 1.71 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 */
;var n=Object.defineProperty;var o=(r,e,s)=>e in r?n(r,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):r[e]=s;var i=(r,e,s)=>o(r,typeof e!="symbol"?e+"":e,s);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class l{constructor(e={}){i(this,"defaultOptions",{indentSize:2,maxLineLength:80});this.options=e,this.options={...this.defaultOptions,...e}}format(e){let s="",t=0;const{indentSize:c}={...this.defaultOptions,...this.options};return e=e.replace(/<[^>]*class="[^"]*\bresize-handle\b[^"]*"[^>]*>.*?<\/[^>]*>/g,""),e=e.replace(/<[^>]*class="[^"]*\bresize-handle\b[^"]*"[^>]*\/?>/g,""),e=e.replace(/\s*draggable="true"\s*/g," "),e=e.replace(/\s*contenteditable="true"\s*/g," "),e=e.replace(/\sselected\s*/g," "),e=e.replace(/\shover\s*/g," "),e=e.replace(/\bdragging\b/g,""),e=e.replace(/class="\s+([^"]*)\s+"/g,'class="$1"'),e=e.replace(/class="\s+([^"]*)"/g,'class="$1"'),e=e.replace(/class="([^"]*)\s+"/g,'class="$1"'),e=e.replace(/(<[^>]*)\s*style="position:\s*relative;"\s*/g,"$1"),e.split(/(<[^>]+>)/g).filter(Boolean).forEach(a=>{a.trim()&&(a.match(/^<\//)&&(t=Math.max(0,t-1)),a.startsWith("<")?s+=`
`+" ".repeat(t*c)+a:s+=a,a.match(/^<[^/][^>]*[^/]>$/)&&!this.isVoidElement(a)&&(t=Math.max(0,t+1)))}),s.trim()}isVoidElement(e){const s=e.match(/<([a-zA-Z0-9-]+)/);return s?["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"].includes(s[1].toLowerCase()):!1}}exports.HTMLFormatter=l;