overtype 2.3.7 → 2.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,19 +1,19 @@
1
1
  /**
2
- * OverType v2.3.7
2
+ * OverType v2.3.8
3
3
  * A lightweight markdown editor library with perfect WYSIWYG alignment
4
4
  * @license MIT
5
5
  * @author David Miranda
6
6
  * https://github.com/panphora/overtype
7
7
  */
8
- var OverTypeEditor=(()=>{var ve=Object.defineProperty;var di=Object.getOwnPropertyDescriptor;var hi=Object.getOwnPropertyNames;var ui=Object.prototype.hasOwnProperty;var fi=(i,e,t)=>e in i?ve(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var mi=(i,e)=>{for(var t in e)ve(i,t,{get:e[t],enumerable:!0})},gi=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of hi(e))!ui.call(i,o)&&o!==t&&ve(i,o,{get:()=>e[o],enumerable:!(n=di(e,o))||n.enumerable});return i};var vi=i=>gi(ve({},"__esModule",{value:!0}),i);var _=(i,e,t)=>(fi(i,typeof e!="symbol"?e+"":e,t),t);var hn={};mi(hn,{default:()=>dn});var C=class{static resetLinkIndex(){this.linkIndex=0}static setCodeHighlighter(e){this.codeHighlighter=e}static setCustomSyntax(e){this.customSyntax=e}static applyCustomSyntax(e){return this.customSyntax?this.customSyntax(e):e}static escapeHtml(e){let t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};return e.replace(/[&<>"']/g,n=>t[n])}static preserveIndentation(e,t){let o=t.match(/^(\s*)/)[1].replace(/ /g,"&nbsp;");return e.replace(/^\s*/,o)}static parseHeader(e){return e.replace(/^(#{1,3})\s(.+)$/,(t,n,o)=>{let r=n.length;return o=this.parseInlineElements(o),`<h${r}><span class="syntax-marker">${n} </span>${o}</h${r}>`})}static parseHorizontalRule(e){return e.match(/^(-{3,}|\*{3,}|_{3,})$/)?`<div><span class="hr-marker">${e}</span></div>`:null}static parseBlockquote(e){return e.replace(/^&gt; (.+)$/,(t,n)=>`<span class="blockquote"><span class="syntax-marker">&gt;</span> ${n}</span>`)}static parseBulletList(e){return e.replace(/^((?:&nbsp;)*)([-*+])\s(.+)$/,(t,n,o,r)=>(r=this.parseInlineElements(r),`${n}<li class="bullet-list"><span class="syntax-marker">${o} </span>${r}</li>`))}static parseTaskList(e,t=!1){return e.replace(/^((?:&nbsp;)*)-(\s+)\[([ xX])\](\s*)(.*)$/,(n,o,r,s,a,l)=>{if(l=this.parseInlineElements(l),t){let p=s.toLowerCase()==="x";return`${o}<li class="task-list"><input type="checkbox" ${p?"checked":""}> ${l}</li>`}else return`${o}<li class="task-list"><span class="syntax-marker">-${r}[${s}]${a}</span>${l}</li>`})}static parseNumberedList(e){return e.replace(/^((?:&nbsp;)*)(\d+\.)\s(.+)$/,(t,n,o,r)=>(r=this.parseInlineElements(r),`${n}<li class="ordered-list"><span class="syntax-marker">${o} </span>${r}</li>`))}static parseCodeBlock(e){return/^`{3}[^`]*$/.test(e)?`<div><span class="code-fence">${e}</span></div>`:null}static parseBold(e){return e=e.replace(/\*\*(.+?)\*\*/g,'<strong><span class="syntax-marker">**</span>$1<span class="syntax-marker">**</span></strong>'),e=e.replace(/__(.+?)__/g,'<strong><span class="syntax-marker">__</span>$1<span class="syntax-marker">__</span></strong>'),e}static parseItalic(e){return e=e.replace(new RegExp("(?<![\\*>])\\*(?!\\*)(.+?)(?<!\\*)\\*(?!\\*)","g"),'<em><span class="syntax-marker">*</span>$1<span class="syntax-marker">*</span></em>'),e=e.replace(new RegExp("(?<=^|\\s)_(?!_)(.+?)(?<!_)_(?!_)(?=\\s|$)","g"),'<em><span class="syntax-marker">_</span>$1<span class="syntax-marker">_</span></em>'),e}static parseStrikethrough(e){return e=e.replace(new RegExp("(?<!~)~~(?!~)(.+?)(?<!~)~~(?!~)","g"),'<del><span class="syntax-marker">~~</span>$1<span class="syntax-marker">~~</span></del>'),e=e.replace(new RegExp("(?<!~)~(?!~)(.+?)(?<!~)~(?!~)","g"),'<del><span class="syntax-marker">~</span>$1<span class="syntax-marker">~</span></del>'),e}static parseInlineCode(e){return e.replace(new RegExp("(?<!`)(`+)(?!`)((?:(?!\\1).)+?)(\\1)(?!`)","g"),'<code><span class="syntax-marker">$1</span>$2<span class="syntax-marker">$3</span></code>')}static sanitizeUrl(e){let t=e.trim(),n=t.toLowerCase(),r=["http://","https://","mailto:","ftp://","ftps://"].some(a=>n.startsWith(a)),s=t.startsWith("/")||t.startsWith("#")||t.startsWith("?")||t.startsWith(".")||!t.includes(":")&&!t.includes("//");return r||s?e:"#"}static parseLinks(e){return e.replace(/\[(.+?)\]\((.+?)\)/g,(t,n,o)=>{let r=`--link-${this.linkIndex++}`;return`<a href="${this.sanitizeUrl(o)}" style="anchor-name: ${r}"><span class="syntax-marker">[</span>${n}<span class="syntax-marker url-part">](${o})</span></a>`})}static identifyAndProtectSanctuaries(e){let t=new Map,n=0,o=e,r=[],s=/\[([^\]]+)\]\(([^)]+)\)/g,a;for(;(a=s.exec(e))!==null;){let u=a.index+a[0].indexOf("](")+2,h=u+a[2].length;r.push({start:u,end:h})}let l=new RegExp("(?<!`)(`+)(?!`)((?:(?!\\1).)+?)(\\1)(?!`)","g"),p,c=[];for(;(p=l.exec(e))!==null;){let d=p.index,u=p.index+p[0].length;r.some(f=>d>=f.start&&u<=f.end)||c.push({match:p[0],index:p.index,openTicks:p[1],content:p[2],closeTicks:p[3]})}return c.sort((d,u)=>u.index-d.index),c.forEach(d=>{let u=`\uE000${n++}\uE001`;t.set(u,{type:"code",original:d.match,openTicks:d.openTicks,content:d.content,closeTicks:d.closeTicks}),o=o.substring(0,d.index)+u+o.substring(d.index+d.match.length)}),o=o.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(d,u,h)=>{let f=`\uE000${n++}\uE001`;return t.set(f,{type:"link",original:d,linkText:u,url:h}),f}),{protectedText:o,sanctuaries:t}}static restoreAndTransformSanctuaries(e,t){return Array.from(t.keys()).sort((o,r)=>{let s=e.indexOf(o),a=e.indexOf(r);return s-a}).forEach(o=>{let r=t.get(o),s;if(r.type==="code")s=`<code><span class="syntax-marker">${r.openTicks}</span>${r.content}<span class="syntax-marker">${r.closeTicks}</span></code>`;else if(r.type==="link"){let a=r.linkText;t.forEach((c,d)=>{if(a.includes(d)&&c.type==="code"){let u=`<code><span class="syntax-marker">${c.openTicks}</span>${c.content}<span class="syntax-marker">${c.closeTicks}</span></code>`;a=a.replace(d,u)}}),a=this.parseStrikethrough(a),a=this.parseBold(a),a=this.parseItalic(a);let l=`--link-${this.linkIndex++}`;s=`<a href="${this.sanitizeUrl(r.url)}" style="anchor-name: ${l}"><span class="syntax-marker">[</span>${a}<span class="syntax-marker url-part">](${r.url})</span></a>`}e=e.replace(o,s)}),e}static parseInlineElements(e){let{protectedText:t,sanctuaries:n}=this.identifyAndProtectSanctuaries(e),o=t;return o=this.parseStrikethrough(o),o=this.parseBold(o),o=this.parseItalic(o),o=this.restoreAndTransformSanctuaries(o,n),o}static parseLine(e,t=!1){let n=this.escapeHtml(e);n=this.preserveIndentation(n,e);let o=this.parseHorizontalRule(n);if(o)return o;let r=this.parseCodeBlock(n);return r||(n=this.parseHeader(n),n=this.parseBlockquote(n),n=this.parseTaskList(n,t),n=this.parseBulletList(n),n=this.parseNumberedList(n),!n.includes("<li")&&!n.includes("<h")&&(n=this.parseInlineElements(n)),n.trim()===""?"<div>&nbsp;</div>":`<div>${n}</div>`)}static parse(e,t=-1,n=!1,o,r=!1){this.resetLinkIndex();let s=e.split(`
9
- `),a=!1,p=s.map((c,d)=>{if(n&&d===t)return`<div class="raw-line">${this.escapeHtml(c)||"&nbsp;"}</div>`;if(/^```[^`]*$/.test(c))return a=!a,this.applyCustomSyntax(this.parseLine(c,r));if(a){let h=this.escapeHtml(c);return`<div>${this.preserveIndentation(h,c)||"&nbsp;"}</div>`}return this.applyCustomSyntax(this.parseLine(c,r))}).join("");return this.postProcessHTML(p,o)}static postProcessHTML(e,t){if(typeof document>"u"||!document)return this.postProcessHTMLManual(e,t);let n=document.createElement("div");n.innerHTML=e;let o=null,r=null,s=null,a=!1,l=Array.from(n.children);for(let p=0;p<l.length;p++){let c=l[p];if(!c.parentNode)continue;let d=c.querySelector(".code-fence");if(d){let h=d.textContent;if(h.startsWith("```"))if(a){let f=t||this.codeHighlighter;if(s&&f&&s._codeContent)try{let m=f(s._codeContent,s._language||"");m&&typeof m.then=="function"?console.warn("Async highlighters are not supported in parse() because it returns an HTML string. The caller creates new DOM elements from that string, breaking references to the elements we would update. Use synchronous highlighters only."):m&&typeof m=="string"&&m.trim()&&(s._codeElement.innerHTML=m)}catch(m){console.warn("Code highlighting failed:",m)}a=!1,s=null;continue}else{a=!0,s=document.createElement("pre");let f=document.createElement("code");s.appendChild(f),s.className="code-block";let m=h.slice(3).trim();m&&(f.className=`language-${m}`),n.insertBefore(s,c.nextSibling),s._codeElement=f,s._language=m,s._codeContent="";continue}}if(a&&s&&c.tagName==="DIV"&&!c.querySelector(".code-fence")){let h=s._codeElement||s.querySelector("code");s._codeContent.length>0&&(s._codeContent+=`
10
- `);let f=c.textContent.replace(/\u00A0/g," ");s._codeContent+=f,h.textContent.length>0&&(h.textContent+=`
11
- `),h.textContent+=f,c.remove();continue}let u=null;if(c.tagName==="DIV"&&(u=c.querySelector("li")),u){let h=u.classList.contains("bullet-list"),f=u.classList.contains("ordered-list");if(!h&&!f){o=null,r=null;continue}let m=h?"ul":"ol";(!o||r!==m)&&(o=document.createElement(m),n.insertBefore(o,c),r=m);let g=[];for(let y of c.childNodes)if(y.nodeType===3&&y.textContent.match(/^\u00A0+$/))g.push(y.cloneNode(!0));else if(y===u)break;g.forEach(y=>{u.insertBefore(y,u.firstChild)}),o.appendChild(u),c.remove()}else o=null,r=null}return n.innerHTML}static postProcessHTMLManual(e,t){let n=e;n=n.replace(/((?:<div>(?:&nbsp;)*<li class="bullet-list">.*?<\/li><\/div>\s*)+)/gs,r=>{let s=r.match(/<div>(?:&nbsp;)*<li class="bullet-list">.*?<\/li><\/div>/gs)||[];return s.length>0?"<ul>"+s.map(l=>{let p=l.match(/<div>((?:&nbsp;)*)<li/),c=l.match(/<li class="bullet-list">.*?<\/li>/);if(p&&c){let d=p[1];return c[0].replace(/<li class="bullet-list">/,`<li class="bullet-list">${d}`)}return c?c[0]:""}).filter(Boolean).join("")+"</ul>":r}),n=n.replace(/((?:<div>(?:&nbsp;)*<li class="ordered-list">.*?<\/li><\/div>\s*)+)/gs,r=>{let s=r.match(/<div>(?:&nbsp;)*<li class="ordered-list">.*?<\/li><\/div>/gs)||[];return s.length>0?"<ol>"+s.map(l=>{let p=l.match(/<div>((?:&nbsp;)*)<li/),c=l.match(/<li class="ordered-list">.*?<\/li>/);if(p&&c){let d=p[1];return c[0].replace(/<li class="ordered-list">/,`<li class="ordered-list">${d}`)}return c?c[0]:""}).filter(Boolean).join("")+"</ol>":r});let o=/<div><span class="code-fence">(```[^<]*)<\/span><\/div>(.*?)<div><span class="code-fence">(```)<\/span><\/div>/gs;return n=n.replace(o,(r,s,a,l)=>{let c=(a.match(/<div>(.*?)<\/div>/gs)||[]).map(g=>g.replace(/<div>(.*?)<\/div>/s,"$1").replace(/&nbsp;/g," ")).join(`
12
- `),d=s.slice(3).trim(),u=d?` class="language-${d}"`:"",h=c,f=t||this.codeHighlighter;if(f)try{let g=c.replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&"),y=f(g,d);y&&typeof y.then=="function"?console.warn("Async highlighters are not supported in Node.js (non-DOM) context. Use synchronous highlighters for server-side rendering."):y&&typeof y=="string"&&y.trim()&&(h=y)}catch(g){console.warn("Code highlighting failed:",g)}let m=`<div><span class="code-fence">${s}</span></div>`;return m+=`<pre class="code-block"><code${u}>${h}</code></pre>`,m+=`<div><span class="code-fence">${l}</span></div>`,m}),n}static getListContext(e,t){let n=e.split(`
13
- `),o=0,r=0,s=0;for(let u=0;u<n.length;u++){let h=n[u].length;if(o+h>=t){r=u,s=o;break}o+=h+1}let a=n[r],l=s+a.length,p=a.match(this.LIST_PATTERNS.checkbox);if(p)return{inList:!0,listType:"checkbox",indent:p[1],marker:"-",checked:p[2]==="x",content:p[3],lineStart:s,lineEnd:l,markerEndPos:s+p[1].length+p[2].length+5};let c=a.match(this.LIST_PATTERNS.bullet);if(c)return{inList:!0,listType:"bullet",indent:c[1],marker:c[2],content:c[3],lineStart:s,lineEnd:l,markerEndPos:s+c[1].length+c[2].length+1};let d=a.match(this.LIST_PATTERNS.numbered);return d?{inList:!0,listType:"numbered",indent:d[1],marker:parseInt(d[2]),content:d[3],lineStart:s,lineEnd:l,markerEndPos:s+d[1].length+d[2].length+2}:{inList:!1,listType:null,indent:"",marker:null,content:a,lineStart:s,lineEnd:l,markerEndPos:s}}static createNewListItem(e){switch(e.listType){case"bullet":return`${e.indent}${e.marker} `;case"numbered":return`${e.indent}${e.marker+1}. `;case"checkbox":return`${e.indent}- [ ] `;default:return""}}static renumberLists(e){let t=e.split(`
14
- `),n=new Map,o=!1;return t.map(s=>{let a=s.match(this.LIST_PATTERNS.numbered);if(a){let l=a[1],p=l.length,c=a[3];o||n.clear();let d=(n.get(p)||0)+1;n.set(p,d);for(let[u]of n)u>p&&n.delete(u);return o=!0,`${l}${d}. ${c}`}else return(s.trim()===""||!s.match(/^\s/))&&(o=!1,n.clear()),s}).join(`
15
- `)}};_(C,"linkIndex",0),_(C,"codeHighlighter",null),_(C,"customSyntax",null),_(C,"LIST_PATTERNS",{bullet:/^(\s*)([-*+])\s+(.*)$/,numbered:/^(\s*)(\d+)\.\s+(.*)$/,checkbox:/^(\s*)-\s+\[([ x])\]\s+(.*)$/});var oe=class{constructor(e){this.editor=e}handleKeydown(e){if(!(navigator.platform.toLowerCase().includes("mac")?e.metaKey:e.ctrlKey))return!1;let o=null;switch(e.key.toLowerCase()){case"b":e.shiftKey||(o="toggleBold");break;case"i":e.shiftKey||(o="toggleItalic");break;case"k":e.shiftKey||(o="insertLink");break;case"7":e.shiftKey&&(o="toggleNumberedList");break;case"8":e.shiftKey&&(o="toggleBulletList");break}return o?(e.preventDefault(),this.editor.performAction(o,e),!0):!1}destroy(){}};var B={name:"solar",colors:{bgPrimary:"#faf0ca",bgSecondary:"#ffffff",text:"#0d3b66",textPrimary:"#0d3b66",textSecondary:"#5a7a9b",h1:"#f95738",h2:"#ee964b",h3:"#3d8a51",strong:"#ee964b",em:"#f95738",del:"#ee964b",link:"#0d3b66",code:"#0d3b66",codeBg:"rgba(244, 211, 94, 0.4)",blockquote:"#5a7a9b",hr:"#5a7a9b",syntaxMarker:"rgba(13, 59, 102, 0.52)",syntax:"#999999",cursor:"#f95738",selection:"rgba(244, 211, 94, 0.4)",listMarker:"#ee964b",rawLine:"#5a7a9b",border:"#e0e0e0",hoverBg:"#f0f0f0",primary:"#0d3b66",toolbarBg:"#ffffff",toolbarIcon:"#0d3b66",toolbarHover:"#f5f5f5",toolbarActive:"#faf0ca",placeholder:"#999999"},previewColors:{text:"#0d3b66",h1:"inherit",h2:"inherit",h3:"inherit",strong:"inherit",em:"inherit",link:"#0d3b66",code:"#0d3b66",codeBg:"rgba(244, 211, 94, 0.4)",blockquote:"#5a7a9b",hr:"#5a7a9b",bg:"transparent"}},Ke={name:"cave",colors:{bgPrimary:"#141E26",bgSecondary:"#1D2D3E",text:"#c5dde8",textPrimary:"#c5dde8",textSecondary:"#9fcfec",h1:"#d4a5ff",h2:"#f6ae2d",h3:"#9fcfec",strong:"#f6ae2d",em:"#9fcfec",del:"#f6ae2d",link:"#9fcfec",code:"#c5dde8",codeBg:"#1a232b",blockquote:"#9fcfec",hr:"#c5dde8",syntaxMarker:"rgba(159, 207, 236, 0.73)",syntax:"#7a8c98",cursor:"#f26419",selection:"rgba(51, 101, 138, 0.4)",listMarker:"#f6ae2d",rawLine:"#9fcfec",border:"#2a3f52",hoverBg:"#243546",primary:"#9fcfec",toolbarBg:"#1D2D3E",toolbarIcon:"#c5dde8",toolbarHover:"#243546",toolbarActive:"#2a3f52",placeholder:"#6a7a88"},previewColors:{text:"#c5dde8",h1:"inherit",h2:"inherit",h3:"inherit",strong:"inherit",em:"inherit",link:"#9fcfec",code:"#c5dde8",codeBg:"#1a232b",blockquote:"#9fcfec",hr:"#c5dde8",bg:"transparent"}},Ze={solar:B,cave:Ke,auto:B,light:B,dark:Ke};function $(i){return typeof i=="string"?{...Ze[i]||Ze.solar,name:i}:i}function $e(i){if(i!=="auto")return i;let e=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)");return e!=null&&e.matches?"cave":"solar"}function Q(i,e){let t=[];for(let[n,o]of Object.entries(i)){let r=n.replace(/([A-Z])/g,"-$1").toLowerCase();t.push(`--${r}: ${o};`)}if(e)for(let[n,o]of Object.entries(e)){let r=n.replace(/([A-Z])/g,"-$1").toLowerCase();t.push(`--preview-${r}-default: ${o};`)}return t.join(`
16
- `)}function Qe(i,e={},t={}){return{...i,colors:{...i.colors,...e},previewColors:{...i.previewColors,...t}}}function ye(i={}){let{fontSize:e="14px",lineHeight:t=1.6,fontFamily:n='"SF Mono", SFMono-Regular, Menlo, Monaco, "Cascadia Code", Consolas, "Roboto Mono", "Noto Sans Mono", "Droid Sans Mono", "Ubuntu Mono", "DejaVu Sans Mono", "Liberation Mono", "Courier New", Courier, monospace',padding:o="20px",theme:r=null,mobile:s={}}=i,a=Object.keys(s).length>0?`
8
+ var OverTypeEditor=(()=>{var ke=Object.defineProperty;var xn=Object.getOwnPropertyDescriptor;var kn=Object.getOwnPropertyNames;var Ln=Object.prototype.hasOwnProperty;var Sn=(n,e,t)=>e in n?ke(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var lt=(n,e)=>{for(var t in e)ke(n,t,{get:e[t],enumerable:!0})},En=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of kn(e))!Ln.call(n,o)&&o!==t&&ke(n,o,{get:()=>e[o],enumerable:!(i=xn(e,o))||i.enumerable});return n};var _n=n=>En(ke({},"__esModule",{value:!0}),n);var C=(n,e,t)=>(Sn(n,typeof e!="symbol"?e+"":e,t),t);var xi={};lt(xi,{default:()=>bi});var _=class{static resetLinkIndex(){this.linkIndex=0}static setCodeHighlighter(e){this.codeHighlighter=e}static setCustomSyntax(e){this.customSyntax=e}static applyCustomSyntax(e){return this.customSyntax?this.customSyntax(e):e}static escapeHtml(e){let t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};return e.replace(/[&<>"']/g,i=>t[i])}static preserveIndentation(e,t){let o=t.match(/^(\s*)/)[1].replace(/ /g,"&nbsp;");return e.replace(/^\s*/,o)}static parseHeader(e){return e.replace(/^(#{1,3})\s(.+)$/,(t,i,o)=>{let r=i.length;return o=this.parseInlineElements(o),`<h${r}><span class="syntax-marker">${i} </span>${o}</h${r}>`})}static parseHorizontalRule(e){return e.match(/^(-{3,}|\*{3,}|_{3,})$/)?`<div><span class="hr-marker">${e}</span></div>`:null}static parseBlockquote(e){return e.replace(/^&gt; (.+)$/,(t,i)=>`<span class="blockquote"><span class="syntax-marker">&gt;</span> ${i}</span>`)}static parseBulletList(e){return e.replace(/^((?:&nbsp;)*)([-*+])\s(.+)$/,(t,i,o,r)=>(r=this.parseInlineElements(r),`${i}<li class="bullet-list"><span class="syntax-marker">${o} </span>${r}</li>`))}static parseTaskList(e,t=!1){return e.replace(/^((?:&nbsp;)*)-(\s+)\[([ xX])\](\s*)(.*)$/,(i,o,r,s,a,l)=>{if(l=this.parseInlineElements(l),t){let p=s.toLowerCase()==="x";return`${o}<li class="task-list"><input type="checkbox" ${p?"checked":""}> ${l}</li>`}else return`${o}<li class="task-list"><span class="syntax-marker">-${r}[${s}]${a}</span>${l}</li>`})}static parseNumberedList(e){return e.replace(/^((?:&nbsp;)*)(\d+\.)\s(.+)$/,(t,i,o,r)=>(r=this.parseInlineElements(r),`${i}<li class="ordered-list"><span class="syntax-marker">${o} </span>${r}</li>`))}static parseCodeBlock(e){return/^`{3}[^`]*$/.test(e)?`<div><span class="code-fence">${e}</span></div>`:null}static parseBold(e){return e=e.replace(/\*\*(.+?)\*\*/g,'<strong><span class="syntax-marker">**</span>$1<span class="syntax-marker">**</span></strong>'),e=e.replace(/__(.+?)__/g,'<strong><span class="syntax-marker">__</span>$1<span class="syntax-marker">__</span></strong>'),e}static parseItalic(e){return e=e.replace(new RegExp("(?<![\\*>])\\*(?!\\*)(.+?)(?<!\\*)\\*(?!\\*)","g"),'<em><span class="syntax-marker">*</span>$1<span class="syntax-marker">*</span></em>'),e=e.replace(new RegExp("(?<=^|\\s)_(?!_)(.+?)(?<!_)_(?!_)(?=\\s|$)","g"),'<em><span class="syntax-marker">_</span>$1<span class="syntax-marker">_</span></em>'),e}static parseStrikethrough(e){return e=e.replace(new RegExp("(?<!~)~~(?!~)(.+?)(?<!~)~~(?!~)","g"),'<del><span class="syntax-marker">~~</span>$1<span class="syntax-marker">~~</span></del>'),e=e.replace(new RegExp("(?<!~)~(?!~)(.+?)(?<!~)~(?!~)","g"),'<del><span class="syntax-marker">~</span>$1<span class="syntax-marker">~</span></del>'),e}static parseInlineCode(e){return e.replace(new RegExp("(?<!`)(`+)(?!`)((?:(?!\\1).)+?)(\\1)(?!`)","g"),'<code><span class="syntax-marker">$1</span>$2<span class="syntax-marker">$3</span></code>')}static sanitizeUrl(e){let t=e.trim(),i=t.toLowerCase(),r=["http://","https://","mailto:","ftp://","ftps://"].some(a=>i.startsWith(a)),s=t.startsWith("/")||t.startsWith("#")||t.startsWith("?")||t.startsWith(".")||!t.includes(":")&&!t.includes("//");return r||s?e:"#"}static parseLinks(e){return e.replace(/\[(.+?)\]\((.+?)\)/g,(t,i,o)=>{let r=`--link-${this.linkIndex++}`;return`<a href="${this.sanitizeUrl(o)}" style="anchor-name: ${r}"><span class="syntax-marker">[</span>${i}<span class="syntax-marker url-part">](${o})</span></a>`})}static identifyAndProtectSanctuaries(e){let t=new Map,i=0,o=e,r=[],s=/\[([^\]]+)\]\(([^)]+)\)/g,a;for(;(a=s.exec(e))!==null;){let h=a.index+a[0].indexOf("](")+2,u=h+a[2].length;r.push({start:h,end:u})}let l=new RegExp("(?<!`)(`+)(?!`)((?:(?!\\1).)+?)(\\1)(?!`)","g"),p,c=[];for(;(p=l.exec(e))!==null;){let d=p.index,h=p.index+p[0].length;r.some(f=>d>=f.start&&h<=f.end)||c.push({match:p[0],index:p.index,openTicks:p[1],content:p[2],closeTicks:p[3]})}return c.sort((d,h)=>h.index-d.index),c.forEach(d=>{let h=`\uE000${i++}\uE001`;t.set(h,{type:"code",original:d.match,openTicks:d.openTicks,content:d.content,closeTicks:d.closeTicks}),o=o.substring(0,d.index)+h+o.substring(d.index+d.match.length)}),o=o.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(d,h,u)=>{let f=`\uE000${i++}\uE001`;return t.set(f,{type:"link",original:d,linkText:h,url:u}),f}),{protectedText:o,sanctuaries:t}}static restoreAndTransformSanctuaries(e,t){return Array.from(t.keys()).sort((o,r)=>{let s=e.indexOf(o),a=e.indexOf(r);return s-a}).forEach(o=>{let r=t.get(o),s;if(r.type==="code")s=`<code><span class="syntax-marker">${r.openTicks}</span>${r.content}<span class="syntax-marker">${r.closeTicks}</span></code>`;else if(r.type==="link"){let a=r.linkText;t.forEach((c,d)=>{if(a.includes(d)&&c.type==="code"){let h=`<code><span class="syntax-marker">${c.openTicks}</span>${c.content}<span class="syntax-marker">${c.closeTicks}</span></code>`;a=a.replace(d,h)}}),a=this.parseStrikethrough(a),a=this.parseBold(a),a=this.parseItalic(a);let l=`--link-${this.linkIndex++}`;s=`<a href="${this.sanitizeUrl(r.url)}" style="anchor-name: ${l}"><span class="syntax-marker">[</span>${a}<span class="syntax-marker url-part">](${r.url})</span></a>`}e=e.replace(o,s)}),e}static parseInlineElements(e){let{protectedText:t,sanctuaries:i}=this.identifyAndProtectSanctuaries(e),o=t;return o=this.parseStrikethrough(o),o=this.parseBold(o),o=this.parseItalic(o),o=this.restoreAndTransformSanctuaries(o,i),o}static parseLine(e,t=!1){let i=this.escapeHtml(e);i=this.preserveIndentation(i,e);let o=this.parseHorizontalRule(i);if(o)return o;let r=this.parseCodeBlock(i);return r||(i=this.parseHeader(i),i=this.parseBlockquote(i),i=this.parseTaskList(i,t),i=this.parseBulletList(i),i=this.parseNumberedList(i),!i.includes("<li")&&!i.includes("<h")&&(i=this.parseInlineElements(i)),i.trim()===""?"<div>&nbsp;</div>":`<div>${i}</div>`)}static parse(e,t=-1,i=!1,o,r=!1){this.resetLinkIndex();let s=e.split(`
9
+ `),a=!1,p=s.map((c,d)=>{if(i&&d===t)return`<div class="raw-line">${this.escapeHtml(c)||"&nbsp;"}</div>`;if(/^```[^`]*$/.test(c))return a=!a,this.applyCustomSyntax(this.parseLine(c,r));if(a){let u=this.escapeHtml(c);return`<div>${this.preserveIndentation(u,c)||"&nbsp;"}</div>`}return this.applyCustomSyntax(this.parseLine(c,r))}).join("");return this.postProcessHTML(p,o)}static postProcessHTML(e,t){if(typeof document>"u"||!document)return this.postProcessHTMLManual(e,t);let i=document.createElement("div");i.innerHTML=e;let o=null,r=null,s=null,a=!1,l=Array.from(i.children);for(let p=0;p<l.length;p++){let c=l[p];if(!c.parentNode)continue;let d=c.querySelector(".code-fence");if(d){let u=d.textContent;if(u.startsWith("```"))if(a){let f=t||this.codeHighlighter;if(s&&f&&s._codeContent)try{let m=f(s._codeContent,s._language||"");m&&typeof m.then=="function"?console.warn("Async highlighters are not supported in parse() because it returns an HTML string. The caller creates new DOM elements from that string, breaking references to the elements we would update. Use synchronous highlighters only."):m&&typeof m=="string"&&m.trim()&&(s._codeElement.innerHTML=m)}catch(m){console.warn("Code highlighting failed:",m)}a=!1,s=null;continue}else{a=!0,s=document.createElement("pre");let f=document.createElement("code");s.appendChild(f),s.className="code-block";let m=u.slice(3).trim();m&&(f.className=`language-${m}`),i.insertBefore(s,c.nextSibling),s._codeElement=f,s._language=m,s._codeContent="";continue}}if(a&&s&&c.tagName==="DIV"&&!c.querySelector(".code-fence")){let u=s._codeElement||s.querySelector("code");s._codeContent.length>0&&(s._codeContent+=`
10
+ `);let f=c.textContent.replace(/\u00A0/g," ");s._codeContent+=f,u.textContent.length>0&&(u.textContent+=`
11
+ `),u.textContent+=f,c.remove();continue}let h=null;if(c.tagName==="DIV"&&(h=c.querySelector("li")),h){let u=h.classList.contains("bullet-list"),f=h.classList.contains("ordered-list");if(!u&&!f){o=null,r=null;continue}let m=u?"ul":"ol";(!o||r!==m)&&(o=document.createElement(m),i.insertBefore(o,c),r=m);let g=[];for(let y of c.childNodes)if(y.nodeType===3&&y.textContent.match(/^\u00A0+$/))g.push(y.cloneNode(!0));else if(y===h)break;g.forEach(y=>{h.insertBefore(y,h.firstChild)}),o.appendChild(h),c.remove()}else o=null,r=null}return i.innerHTML}static postProcessHTMLManual(e,t){let i=e;i=i.replace(/((?:<div>(?:&nbsp;)*<li class="bullet-list">.*?<\/li><\/div>\s*)+)/gs,r=>{let s=r.match(/<div>(?:&nbsp;)*<li class="bullet-list">.*?<\/li><\/div>/gs)||[];return s.length>0?"<ul>"+s.map(l=>{let p=l.match(/<div>((?:&nbsp;)*)<li/),c=l.match(/<li class="bullet-list">.*?<\/li>/);if(p&&c){let d=p[1];return c[0].replace(/<li class="bullet-list">/,`<li class="bullet-list">${d}`)}return c?c[0]:""}).filter(Boolean).join("")+"</ul>":r}),i=i.replace(/((?:<div>(?:&nbsp;)*<li class="ordered-list">.*?<\/li><\/div>\s*)+)/gs,r=>{let s=r.match(/<div>(?:&nbsp;)*<li class="ordered-list">.*?<\/li><\/div>/gs)||[];return s.length>0?"<ol>"+s.map(l=>{let p=l.match(/<div>((?:&nbsp;)*)<li/),c=l.match(/<li class="ordered-list">.*?<\/li>/);if(p&&c){let d=p[1];return c[0].replace(/<li class="ordered-list">/,`<li class="ordered-list">${d}`)}return c?c[0]:""}).filter(Boolean).join("")+"</ol>":r});let o=/<div><span class="code-fence">(```[^<]*)<\/span><\/div>(.*?)<div><span class="code-fence">(```)<\/span><\/div>/gs;return i=i.replace(o,(r,s,a,l)=>{let c=(a.match(/<div>(.*?)<\/div>/gs)||[]).map(g=>g.replace(/<div>(.*?)<\/div>/s,"$1").replace(/&nbsp;/g," ")).join(`
12
+ `),d=s.slice(3).trim(),h=d?` class="language-${d}"`:"",u=c,f=t||this.codeHighlighter;if(f)try{let g=c.replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&"),y=f(g,d);y&&typeof y.then=="function"?console.warn("Async highlighters are not supported in Node.js (non-DOM) context. Use synchronous highlighters for server-side rendering."):y&&typeof y=="string"&&y.trim()&&(u=y)}catch(g){console.warn("Code highlighting failed:",g)}let m=`<div><span class="code-fence">${s}</span></div>`;return m+=`<pre class="code-block"><code${h}>${u}</code></pre>`,m+=`<div><span class="code-fence">${l}</span></div>`,m}),i}static getListContext(e,t){let i=e.split(`
13
+ `),o=0,r=0,s=0;for(let h=0;h<i.length;h++){let u=i[h].length;if(o+u>=t){r=h,s=o;break}o+=u+1}let a=i[r],l=s+a.length,p=a.match(this.LIST_PATTERNS.checkbox);if(p)return{inList:!0,listType:"checkbox",indent:p[1],marker:"-",checked:p[2]==="x",content:p[3],lineStart:s,lineEnd:l,markerEndPos:s+p[1].length+p[2].length+5};let c=a.match(this.LIST_PATTERNS.bullet);if(c)return{inList:!0,listType:"bullet",indent:c[1],marker:c[2],content:c[3],lineStart:s,lineEnd:l,markerEndPos:s+c[1].length+c[2].length+1};let d=a.match(this.LIST_PATTERNS.numbered);return d?{inList:!0,listType:"numbered",indent:d[1],marker:parseInt(d[2]),content:d[3],lineStart:s,lineEnd:l,markerEndPos:s+d[1].length+d[2].length+2}:{inList:!1,listType:null,indent:"",marker:null,content:a,lineStart:s,lineEnd:l,markerEndPos:s}}static createNewListItem(e){switch(e.listType){case"bullet":return`${e.indent}${e.marker} `;case"numbered":return`${e.indent}${e.marker+1}. `;case"checkbox":return`${e.indent}- [ ] `;default:return""}}static renumberLists(e){let t=e.split(`
14
+ `),i=new Map,o=!1;return t.map(s=>{let a=s.match(this.LIST_PATTERNS.numbered);if(a){let l=a[1],p=l.length,c=a[3];o||i.clear();let d=(i.get(p)||0)+1;i.set(p,d);for(let[h]of i)h>p&&i.delete(h);return o=!0,`${l}${d}. ${c}`}else return(s.trim()===""||!s.match(/^\s/))&&(o=!1,i.clear()),s}).join(`
15
+ `)}};C(_,"linkIndex",0),C(_,"codeHighlighter",null),C(_,"customSyntax",null),C(_,"LIST_PATTERNS",{bullet:/^(\s*)([-*+])\s+(.*)$/,numbered:/^(\s*)(\d+)\.\s+(.*)$/,checkbox:/^(\s*)-\s+\[([ x])\]\s+(.*)$/});var re=class{constructor(e){this.editor=e}handleKeydown(e){if(!(navigator.platform.toLowerCase().includes("mac")?e.metaKey:e.ctrlKey))return!1;let o=null;switch(e.key.toLowerCase()){case"b":e.shiftKey||(o="toggleBold");break;case"i":e.shiftKey||(o="toggleItalic");break;case"k":e.shiftKey||(o="insertLink");break;case"7":e.shiftKey&&(o="toggleNumberedList");break;case"8":e.shiftKey&&(o="toggleBulletList");break}return o?(e.preventDefault(),this.editor.performAction(o,e),!0):!1}destroy(){}};var z={name:"solar",colors:{bgPrimary:"#faf0ca",bgSecondary:"#ffffff",text:"#0d3b66",textPrimary:"#0d3b66",textSecondary:"#5a7a9b",h1:"#f95738",h2:"#ee964b",h3:"#3d8a51",strong:"#ee964b",em:"#f95738",del:"#ee964b",link:"#0d3b66",code:"#0d3b66",codeBg:"rgba(244, 211, 94, 0.4)",blockquote:"#5a7a9b",hr:"#5a7a9b",syntaxMarker:"rgba(13, 59, 102, 0.52)",syntax:"#999999",cursor:"#f95738",selection:"rgba(244, 211, 94, 0.4)",listMarker:"#ee964b",rawLine:"#5a7a9b",border:"#e0e0e0",hoverBg:"#f0f0f0",primary:"#0d3b66",toolbarBg:"#ffffff",toolbarIcon:"#0d3b66",toolbarHover:"#f5f5f5",toolbarActive:"#faf0ca",placeholder:"#999999"},previewColors:{text:"#0d3b66",h1:"inherit",h2:"inherit",h3:"inherit",strong:"inherit",em:"inherit",link:"#0d3b66",code:"#0d3b66",codeBg:"rgba(244, 211, 94, 0.4)",blockquote:"#5a7a9b",hr:"#5a7a9b",bg:"transparent"}},ct={name:"cave",colors:{bgPrimary:"#141E26",bgSecondary:"#1D2D3E",text:"#c5dde8",textPrimary:"#c5dde8",textSecondary:"#9fcfec",h1:"#d4a5ff",h2:"#f6ae2d",h3:"#9fcfec",strong:"#f6ae2d",em:"#9fcfec",del:"#f6ae2d",link:"#9fcfec",code:"#c5dde8",codeBg:"#1a232b",blockquote:"#9fcfec",hr:"#c5dde8",syntaxMarker:"rgba(159, 207, 236, 0.73)",syntax:"#7a8c98",cursor:"#f26419",selection:"rgba(51, 101, 138, 0.4)",listMarker:"#f6ae2d",rawLine:"#9fcfec",border:"#2a3f52",hoverBg:"#243546",primary:"#9fcfec",toolbarBg:"#1D2D3E",toolbarIcon:"#c5dde8",toolbarHover:"#243546",toolbarActive:"#2a3f52",placeholder:"#6a7a88"},previewColors:{text:"#c5dde8",h1:"inherit",h2:"inherit",h3:"inherit",strong:"inherit",em:"inherit",link:"#9fcfec",code:"#c5dde8",codeBg:"#1a232b",blockquote:"#9fcfec",hr:"#c5dde8",bg:"transparent"}},pt={solar:z,cave:ct,auto:z,light:z,dark:ct};function R(n){return typeof n=="string"?{...pt[n]||pt.solar,name:n}:n}function Ze(n){if(n!=="auto")return n;let e=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)");return e!=null&&e.matches?"cave":"solar"}function Q(n,e){let t=[];for(let[i,o]of Object.entries(n)){let r=i.replace(/([A-Z])/g,"-$1").toLowerCase();t.push(`--${r}: ${o};`)}if(e)for(let[i,o]of Object.entries(e)){let r=i.replace(/([A-Z])/g,"-$1").toLowerCase();t.push(`--preview-${r}-default: ${o};`)}return t.join(`
16
+ `)}function dt(n,e={},t={}){return{...n,colors:{...n.colors,...e},previewColors:{...n.previewColors,...t}}}function Le(n={}){let{fontSize:e="14px",lineHeight:t=1.6,fontFamily:i='"SF Mono", SFMono-Regular, Menlo, Monaco, "Cascadia Code", Consolas, "Roboto Mono", "Noto Sans Mono", "Droid Sans Mono", "Ubuntu Mono", "DejaVu Sans Mono", "Liberation Mono", "Courier New", Courier, monospace',padding:o="20px",theme:r=null,mobile:s={}}=n,a=Object.keys(s).length>0?`
17
17
  @media (max-width: 640px) {
18
18
  .overtype-wrapper .overtype-input,
19
19
  .overtype-wrapper .overtype-preview {
@@ -21,91 +21,9 @@ var OverTypeEditor=(()=>{var ve=Object.defineProperty;var di=Object.getOwnProper
21
21
  `)}
22
22
  }
23
23
  }
24
- `:"",l=r&&r.colors?Q(r.colors,r.previewColors):"";return`
25
- /* OverType Editor Styles */
26
-
27
- /* Middle-ground CSS Reset - Prevent parent styles from leaking in */
28
- .overtype-container * {
29
- /* Box model - these commonly leak */
30
- margin: 0 !important;
31
- padding: 0 !important;
32
- border: 0 !important;
33
-
34
- /* Layout - these can break our layout */
35
- /* Don't reset position - it breaks dropdowns */
36
- float: none !important;
37
- clear: none !important;
38
-
39
- /* Typography - only reset decorative aspects */
40
- text-decoration: none !important;
41
- text-transform: none !important;
42
- letter-spacing: normal !important;
43
-
44
- /* Visual effects that can interfere */
45
- box-shadow: none !important;
46
- text-shadow: none !important;
47
-
48
- /* Ensure box-sizing is consistent */
49
- box-sizing: border-box !important;
50
-
51
- /* Keep inheritance for these */
52
- /* font-family, color, line-height, font-size - inherit */
53
- }
54
-
55
- /* Container base styles after reset */
56
- .overtype-container {
57
- display: flex !important;
58
- flex-direction: column !important;
59
- width: 100% !important;
60
- height: 100% !important;
61
- position: relative !important; /* Override reset - needed for absolute children */
62
- overflow: visible !important; /* Allow dropdown to overflow container */
63
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important;
64
- text-align: left !important;
65
- ${l?`
24
+ `:"",l=r&&r.colors?Q(r.colors,r.previewColors):"";return`.overtype-container *{margin: 0 !important;padding: 0 !important;border: 0 !important;float: none !important;clear: none !important;text-decoration: none !important;text-transform: none !important;letter-spacing: normal !important;box-shadow: none !important;text-shadow: none !important;box-sizing: border-box !important}.overtype-container{display: flex !important;flex-direction: column !important;width: 100% !important;height: 100% !important;position: relative !important;overflow: visible !important;font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif !important;text-align: left !important;${l?`
66
25
  /* Theme Variables */
67
- ${l}`:""}
68
- }
69
-
70
- /* Force left alignment for all elements in the editor */
71
- .overtype-container .overtype-wrapper * {
72
- text-align: left !important;
73
- }
74
-
75
- /* Auto-resize mode styles */
76
- .overtype-container.overtype-auto-resize {
77
- height: auto !important;
78
- }
79
-
80
- .overtype-container.overtype-auto-resize .overtype-wrapper {
81
- flex: 0 0 auto !important; /* Don't grow/shrink, use explicit height */
82
- height: auto !important;
83
- min-height: 60px !important;
84
- overflow: visible !important;
85
- }
86
-
87
- .overtype-wrapper {
88
- position: relative !important; /* Override reset - needed for absolute children */
89
- width: 100% !important;
90
- flex: 1 1 0 !important; /* Grow to fill remaining space, with flex-basis: 0 */
91
- min-height: 60px !important; /* Minimum usable height */
92
- overflow: hidden !important;
93
- background: var(--bg-secondary, #ffffff) !important;
94
- z-index: 1; /* Below toolbar and dropdown */
95
- }
96
-
97
- /* Critical alignment styles - must be identical for both layers */
98
- .overtype-wrapper .overtype-input,
99
- .overtype-wrapper .overtype-preview {
100
- /* Positioning - must be identical */
101
- position: absolute !important; /* Override reset - required for overlay */
102
- top: 0 !important;
103
- left: 0 !important;
104
- width: 100% !important;
105
- height: 100% !important;
106
-
107
- /* Font properties - any difference breaks alignment */
108
- font-family: var(--instance-font-family, ${n}) !important;
26
+ ${l}`:""}}.overtype-container .overtype-wrapper *{text-align: left !important}.overtype-container.overtype-auto-resize{height: auto !important}.overtype-container.overtype-auto-resize .overtype-wrapper{flex: 0 0 auto !important;height: auto !important;min-height: 60px !important;overflow: visible !important}.overtype-wrapper{position: relative !important;width: 100% !important;flex: 1 1 0 !important;min-height: 60px !important;overflow: hidden !important;background: var(--bg-secondary,#ffffff) !important;z-index: 1}.overtype-wrapper .overtype-input,.overtype-wrapper .overtype-preview{position: absolute !important;top: 0 !important;left: 0 !important;width: 100% !important;height: 100% !important;font-family: var(--instance-font-family,${i}) !important;
109
27
  font-variant-ligatures: none !important; /* keep metrics stable for code */
110
28
  font-size: var(--instance-font-size, ${e}) !important;
111
29
  line-height: var(--instance-line-height, ${t}) !important;
@@ -117,791 +35,33 @@ var OverTypeEditor=(()=>{var ve=Object.defineProperty;var di=Object.getOwnProper
117
35
  font-feature-settings: normal !important;
118
36
 
119
37
  /* Box model - must match exactly */
120
- padding: var(--instance-padding, ${o}) !important;
121
- margin: 0 !important;
122
- border: none !important;
123
- outline: none !important;
124
- box-sizing: border-box !important;
125
-
126
- /* Text layout - critical for character positioning */
127
- white-space: pre-wrap !important;
128
- word-wrap: break-word !important;
129
- word-break: normal !important;
130
- overflow-wrap: break-word !important;
131
- tab-size: 2 !important;
132
- -moz-tab-size: 2 !important;
133
- text-align: left !important;
134
- text-indent: 0 !important;
135
- letter-spacing: normal !important;
136
- word-spacing: normal !important;
137
-
138
- /* Text rendering */
139
- text-transform: none !important;
140
- text-rendering: auto !important;
141
- -webkit-font-smoothing: auto !important;
142
- -webkit-text-size-adjust: 100% !important;
143
-
144
- /* Direction and writing */
145
- direction: ltr !important;
146
- writing-mode: horizontal-tb !important;
147
- unicode-bidi: normal !important;
148
- text-orientation: mixed !important;
149
-
150
- /* Visual effects that could shift perception */
151
- text-shadow: none !important;
152
- filter: none !important;
153
- transform: none !important;
154
- zoom: 1 !important;
155
-
156
- /* Vertical alignment */
157
- vertical-align: baseline !important;
158
-
159
- /* Size constraints */
160
- min-width: 0 !important;
161
- min-height: 0 !important;
162
- max-width: none !important;
163
- max-height: none !important;
164
-
165
- /* Overflow */
166
- overflow-y: auto !important;
167
- overflow-x: auto !important;
168
- /* overscroll-behavior removed to allow scroll-through to parent */
169
- scrollbar-width: auto !important;
170
- scrollbar-gutter: auto !important;
171
-
172
- /* Animation/transition - disabled to prevent movement */
173
- animation: none !important;
174
- transition: none !important;
175
- }
176
-
177
- /* Input layer styles */
178
- .overtype-wrapper .overtype-input {
179
- /* Layer positioning */
180
- z-index: 1 !important;
181
-
182
- /* Text visibility */
183
- color: transparent !important;
184
- caret-color: var(--cursor, #f95738) !important;
185
- background-color: transparent !important;
186
-
187
- /* Textarea-specific */
188
- resize: none !important;
189
- appearance: none !important;
190
- -webkit-appearance: none !important;
191
- -moz-appearance: none !important;
192
-
193
- /* Prevent mobile zoom on focus */
194
- touch-action: manipulation !important;
195
-
196
- /* Disable autofill */
197
- autocomplete: off !important;
198
- autocorrect: off !important;
199
- autocapitalize: off !important;
200
- }
201
-
202
- .overtype-wrapper .overtype-input::selection {
203
- background-color: var(--selection, rgba(244, 211, 94, 0.4));
204
- }
205
-
206
- /* Placeholder shim - visible when textarea is empty */
207
- .overtype-wrapper .overtype-placeholder {
208
- position: absolute !important;
209
- top: 0 !important;
210
- left: 0 !important;
211
- width: 100% !important;
212
- z-index: 0 !important;
213
- pointer-events: none !important;
214
- user-select: none !important;
215
- font-family: var(--instance-font-family, ${n}) !important;
38
+ padding: var(--instance-padding, ${o}) !important;margin: 0 !important;border: none !important;outline: none !important;box-sizing: border-box !important;white-space: pre-wrap !important;word-wrap: break-word !important;word-break: normal !important;overflow-wrap: break-word !important;tab-size: 2 !important;-moz-tab-size: 2 !important;text-align: left !important;text-indent: 0 !important;letter-spacing: normal !important;word-spacing: normal !important;text-transform: none !important;text-rendering: auto !important;-webkit-font-smoothing: auto !important;-webkit-text-size-adjust: 100% !important;direction: ltr !important;writing-mode: horizontal-tb !important;unicode-bidi: normal !important;text-orientation: mixed !important;text-shadow: none !important;filter: none !important;transform: none !important;zoom: 1 !important;vertical-align: baseline !important;min-width: 0 !important;min-height: 0 !important;max-width: none !important;max-height: none !important;overflow-y: auto !important;overflow-x: auto !important;scrollbar-width: auto !important;scrollbar-gutter: auto !important;animation: none !important;transition: none !important}.overtype-wrapper .overtype-input{z-index: 1 !important;color: transparent !important;caret-color: var(--cursor,#f95738) !important;background-color: transparent !important;resize: none !important;appearance: none !important;-webkit-appearance: none !important;-moz-appearance: none !important;touch-action: manipulation !important;autocomplete: off !important;autocorrect: off !important;autocapitalize: off !important}.overtype-wrapper .overtype-input::selection{background-color: var(--selection,rgba(244,211,94,0.4))}.overtype-wrapper .overtype-placeholder{position: absolute !important;top: 0 !important;left: 0 !important;width: 100% !important;z-index: 0 !important;pointer-events: none !important;user-select: none !important;font-family: var(--instance-font-family,${i}) !important;
216
39
  font-size: var(--instance-font-size, ${e}) !important;
217
40
  line-height: var(--instance-line-height, ${t}) !important;
218
- padding: var(--instance-padding, ${o}) !important;
219
- box-sizing: border-box !important;
220
- color: var(--placeholder, #999) !important;
221
- }
222
-
223
- /* Preview layer styles */
224
- .overtype-wrapper .overtype-preview {
225
- /* Layer positioning */
226
- z-index: 0 !important;
227
- pointer-events: none !important;
228
- color: var(--text, #0d3b66) !important;
229
- background-color: transparent !important;
230
-
231
- /* Prevent text selection */
232
- user-select: none !important;
233
- -webkit-user-select: none !important;
234
- -moz-user-select: none !important;
235
- -ms-user-select: none !important;
236
- }
237
-
238
- /* Prevent external resets (Tailwind, Bootstrap, etc.) from breaking alignment.
239
- Any element whose font metrics differ from the textarea causes the CSS "strut"
240
- to inflate line boxes, drifting the overlay. Force inheritance so every element
241
- inside the preview matches the textarea exactly. */
242
- .overtype-wrapper .overtype-preview * {
243
- font-family: inherit !important;
244
- font-size: inherit !important;
245
- line-height: inherit !important;
246
- }
247
-
248
- /* Defensive styles for preview child divs */
249
- .overtype-wrapper .overtype-preview div {
250
- /* Reset any inherited styles */
251
- margin: 0 !important;
252
- padding: 0 !important;
253
- border: none !important;
254
- text-align: left !important;
255
- text-indent: 0 !important;
256
- display: block !important;
257
- position: static !important;
258
- transform: none !important;
259
- min-height: 0 !important;
260
- max-height: none !important;
261
- line-height: inherit !important;
262
- font-size: inherit !important;
263
- font-family: inherit !important;
264
- }
265
-
266
- /* Markdown element styling - NO SIZE CHANGES */
267
- .overtype-wrapper .overtype-preview .header {
268
- font-weight: bold !important;
269
- }
270
-
271
- /* Header colors */
272
- .overtype-wrapper .overtype-preview .h1 {
273
- color: var(--h1, #f95738) !important;
274
- }
275
- .overtype-wrapper .overtype-preview .h2 {
276
- color: var(--h2, #ee964b) !important;
277
- }
278
- .overtype-wrapper .overtype-preview .h3 {
279
- color: var(--h3, #3d8a51) !important;
280
- }
281
-
282
- /* Semantic headers - flatten in edit mode */
283
- .overtype-wrapper .overtype-preview h1,
284
- .overtype-wrapper .overtype-preview h2,
285
- .overtype-wrapper .overtype-preview h3 {
286
- font-size: inherit !important;
287
- font-weight: bold !important;
288
- margin: 0 !important;
289
- padding: 0 !important;
290
- display: inline !important;
291
- line-height: inherit !important;
292
- }
293
-
294
- /* Header colors for semantic headers */
295
- .overtype-wrapper .overtype-preview h1 {
296
- color: var(--h1, #f95738) !important;
297
- }
298
- .overtype-wrapper .overtype-preview h2 {
299
- color: var(--h2, #ee964b) !important;
300
- }
301
- .overtype-wrapper .overtype-preview h3 {
302
- color: var(--h3, #3d8a51) !important;
303
- }
304
-
305
- /* Lists - remove styling in edit mode */
306
- .overtype-wrapper .overtype-preview ul,
307
- .overtype-wrapper .overtype-preview ol {
308
- list-style: none !important;
309
- margin: 0 !important;
310
- padding: 0 !important;
311
- display: block !important; /* Lists need to be block for line breaks */
312
- }
313
-
314
- .overtype-wrapper .overtype-preview li {
315
- display: block !important; /* Each item on its own line */
316
- margin: 0 !important;
317
- padding: 0 !important;
318
- /* Don't set list-style here - let ul/ol control it */
319
- }
320
-
321
- /* Bold text */
322
- .overtype-wrapper .overtype-preview strong {
323
- color: var(--strong, #ee964b) !important;
324
- font-weight: bold !important;
325
- }
326
-
327
- /* Italic text */
328
- .overtype-wrapper .overtype-preview em {
329
- color: var(--em, #f95738) !important;
330
- text-decoration-color: var(--em, #f95738) !important;
331
- text-decoration-thickness: 1px !important;
332
- font-style: italic !important;
333
- }
334
-
335
- /* Strikethrough text */
336
- .overtype-wrapper .overtype-preview del {
337
- color: var(--del, #ee964b) !important;
338
- text-decoration: line-through !important;
339
- text-decoration-color: var(--del, #ee964b) !important;
340
- text-decoration-thickness: 1px !important;
341
- }
342
-
343
- /* Inline code */
344
- .overtype-wrapper .overtype-preview code {
345
- background: var(--code-bg, rgba(244, 211, 94, 0.4)) !important;
346
- color: var(--code, #0d3b66) !important;
347
- padding: 0 !important;
348
- border-radius: 2px !important;
349
- font-family: inherit !important;
350
- font-size: inherit !important;
351
- line-height: inherit !important;
352
- font-weight: normal !important;
353
- }
354
-
355
- /* Code blocks - consolidated pre blocks */
356
- .overtype-wrapper .overtype-preview pre {
357
- padding: 0 !important;
358
- margin: 0 !important;
359
- border-radius: 4px !important;
360
- overflow-x: auto !important;
361
- }
362
-
363
- /* Code block styling in normal mode - yellow background */
364
- .overtype-wrapper .overtype-preview pre.code-block {
365
- background: var(--code-bg, rgba(244, 211, 94, 0.4)) !important;
366
- white-space: break-spaces !important; /* Prevent horizontal scrollbar that breaks alignment */
367
- }
368
-
369
- /* Code inside pre blocks - remove background */
370
- .overtype-wrapper .overtype-preview pre code {
371
- background: transparent !important;
372
- color: var(--code, #0d3b66) !important;
373
- font-family: var(--instance-font-family, ${n}) !important; /* Match textarea font exactly for alignment */
374
- }
375
-
376
- /* Blockquotes */
377
- .overtype-wrapper .overtype-preview .blockquote {
378
- color: var(--blockquote, #5a7a9b) !important;
379
- padding: 0 !important;
380
- margin: 0 !important;
381
- border: none !important;
382
- }
383
-
384
- /* Links */
385
- .overtype-wrapper .overtype-preview a {
386
- color: var(--link, #0d3b66) !important;
387
- text-decoration: underline !important;
388
- font-weight: normal !important;
389
- }
390
-
391
- .overtype-wrapper .overtype-preview a:hover {
392
- text-decoration: underline !important;
393
- color: var(--link, #0d3b66) !important;
394
- }
395
-
396
- /* Lists - no list styling */
397
- .overtype-wrapper .overtype-preview ul,
398
- .overtype-wrapper .overtype-preview ol {
399
- list-style: none !important;
400
- margin: 0 !important;
401
- padding: 0 !important;
402
- }
403
-
404
-
405
- /* Horizontal rules */
406
- .overtype-wrapper .overtype-preview hr {
407
- border: none !important;
408
- color: var(--hr, #5a7a9b) !important;
409
- margin: 0 !important;
410
- padding: 0 !important;
411
- }
412
-
413
- .overtype-wrapper .overtype-preview .hr-marker {
414
- color: var(--hr, #5a7a9b) !important;
415
- opacity: 0.6 !important;
416
- }
417
-
418
- /* Code fence markers - with background when not in code block */
419
- .overtype-wrapper .overtype-preview .code-fence {
420
- color: var(--code, #0d3b66) !important;
421
- background: var(--code-bg, rgba(244, 211, 94, 0.4)) !important;
422
- }
423
-
424
- /* Code block lines - background for entire code block */
425
- .overtype-wrapper .overtype-preview .code-block-line {
426
- background: var(--code-bg, rgba(244, 211, 94, 0.4)) !important;
427
- }
428
-
429
- /* Remove background from code fence when inside code block line */
430
- .overtype-wrapper .overtype-preview .code-block-line .code-fence {
431
- background: transparent !important;
432
- }
433
-
434
- /* Raw markdown line */
435
- .overtype-wrapper .overtype-preview .raw-line {
436
- color: var(--raw-line, #5a7a9b) !important;
437
- font-style: normal !important;
438
- font-weight: normal !important;
439
- }
440
-
441
- /* Syntax markers */
442
- .overtype-wrapper .overtype-preview .syntax-marker {
443
- color: var(--syntax-marker, rgba(13, 59, 102, 0.52)) !important;
444
- opacity: 0.7 !important;
445
- }
446
-
447
- /* List markers */
448
- .overtype-wrapper .overtype-preview .list-marker {
449
- color: var(--list-marker, #ee964b) !important;
450
- }
451
-
452
- /* Stats bar */
453
-
454
- /* Stats bar - positioned by flexbox */
455
- .overtype-stats {
456
- height: 40px !important;
457
- padding: 0 20px !important;
458
- background: var(--bg-secondary, #f8f9fa) !important;
459
- border-top: 1px solid var(--border, #e0e0e0) !important;
460
- display: flex !important;
461
- justify-content: space-between !important;
462
- align-items: center !important;
463
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;
464
- font-size: 0.85rem !important;
465
- color: var(--text-secondary, #666) !important;
466
- flex-shrink: 0 !important; /* Don't shrink */
467
- z-index: 10001 !important; /* Above link tooltip */
468
- position: relative !important; /* Enable z-index */
469
- }
470
-
471
-
472
- .overtype-stats .overtype-stat {
473
- display: flex !important;
474
- align-items: center !important;
475
- gap: 5px !important;
476
- white-space: nowrap !important;
477
- }
478
-
479
- .overtype-stats .live-dot {
480
- width: 8px !important;
481
- height: 8px !important;
482
- background: #4caf50 !important;
483
- border-radius: 50% !important;
484
- animation: overtype-pulse 2s infinite !important;
485
- }
486
-
487
- @keyframes overtype-pulse {
488
- 0%, 100% { opacity: 1; transform: scale(1); }
489
- 50% { opacity: 0.6; transform: scale(1.2); }
490
- }
491
-
492
-
493
- /* Toolbar Styles */
494
- .overtype-toolbar.overtype-toolbar-hidden {
495
- display: none !important;
496
- }
497
-
498
- .overtype-toolbar {
499
- display: flex !important;
500
- align-items: center !important;
501
- gap: 4px !important;
502
- padding: 8px !important; /* Override reset */
503
- background: var(--toolbar-bg, var(--bg-primary, #f8f9fa)) !important; /* Override reset */
504
- border-bottom: 1px solid var(--toolbar-border, transparent) !important; /* Override reset */
505
- overflow-x: auto !important; /* Allow horizontal scrolling */
506
- overflow-y: hidden !important; /* Hide vertical overflow */
507
- -webkit-overflow-scrolling: touch !important;
508
- flex-shrink: 0 !important;
509
- height: auto !important;
510
- position: relative !important; /* Override reset */
511
- z-index: 100 !important; /* Ensure toolbar is above wrapper */
512
- scrollbar-width: thin; /* Thin scrollbar on Firefox */
513
- }
514
-
515
- /* Thin scrollbar styling */
516
- .overtype-toolbar::-webkit-scrollbar {
517
- height: 4px;
518
- }
519
-
520
- .overtype-toolbar::-webkit-scrollbar-track {
521
- background: transparent;
522
- }
523
-
524
- .overtype-toolbar::-webkit-scrollbar-thumb {
525
- background: rgba(0, 0, 0, 0.2);
526
- border-radius: 2px;
527
- }
528
-
529
- .overtype-toolbar-button {
530
- display: flex;
531
- align-items: center;
532
- justify-content: center;
533
- width: 32px;
534
- height: 32px;
535
- padding: 0;
536
- border: none;
537
- border-radius: 6px;
538
- background: transparent;
539
- color: var(--toolbar-icon, var(--text-secondary, #666));
540
- cursor: pointer;
541
- transition: all 0.2s ease;
542
- flex-shrink: 0;
543
- }
544
-
545
- .overtype-toolbar-button svg {
546
- width: 20px;
547
- height: 20px;
548
- fill: currentColor;
549
- }
550
-
551
- .overtype-toolbar-button:hover {
552
- background: var(--toolbar-hover, var(--bg-secondary, #e9ecef));
553
- color: var(--toolbar-icon, var(--text-primary, #333));
554
- }
555
-
556
- .overtype-toolbar-button:active {
557
- transform: scale(0.95);
558
- }
559
-
560
- .overtype-toolbar-button.active {
561
- background: var(--toolbar-active, var(--primary, #007bff));
562
- color: var(--toolbar-icon, var(--text-primary, #333));
563
- }
564
-
565
- .overtype-toolbar-button:disabled {
566
- opacity: 0.5;
567
- cursor: not-allowed;
568
- }
569
-
570
- .overtype-toolbar-separator {
571
- width: 1px;
572
- height: 24px;
573
- background: var(--border, #e0e0e0);
574
- margin: 0 4px;
575
- flex-shrink: 0;
576
- }
577
-
578
- /* Adjust wrapper when toolbar is present */
579
- /* Mobile toolbar adjustments */
580
- @media (max-width: 640px) {
581
- .overtype-toolbar {
582
- padding: 6px;
583
- gap: 2px;
584
- }
585
-
586
- .overtype-toolbar-button {
587
- width: 36px;
588
- height: 36px;
589
- }
590
-
591
- .overtype-toolbar-separator {
592
- margin: 0 2px;
593
- }
594
- }
595
-
596
- /* Plain mode - hide preview and show textarea text */
597
- .overtype-container[data-mode="plain"] .overtype-preview {
598
- display: none !important;
599
- }
600
-
601
- .overtype-container[data-mode="plain"] .overtype-input {
602
- color: var(--text, #0d3b66) !important;
603
- /* Use system font stack for better plain text readability */
604
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
605
- "Helvetica Neue", Arial, sans-serif !important;
606
- }
607
-
608
- /* Ensure textarea remains transparent in overlay mode */
609
- .overtype-container:not([data-mode="plain"]) .overtype-input {
610
- color: transparent !important;
611
- }
612
-
613
- /* Dropdown menu styles */
614
- .overtype-toolbar-button {
615
- position: relative !important; /* Override reset - needed for dropdown */
616
- }
617
-
618
- .overtype-toolbar-button.dropdown-active {
619
- background: var(--toolbar-active, var(--hover-bg, #f0f0f0));
620
- }
621
-
622
- .overtype-dropdown-menu {
623
- position: fixed !important; /* Fixed positioning relative to viewport */
624
- background: var(--bg-secondary, white) !important; /* Override reset */
625
- border: 1px solid var(--border, #e0e0e0) !important; /* Override reset */
626
- border-radius: 6px;
627
- box-shadow: 0 2px 8px rgba(0,0,0,0.1) !important; /* Override reset */
628
- z-index: 10000; /* Very high z-index to ensure visibility */
629
- min-width: 150px;
630
- padding: 4px 0 !important; /* Override reset */
631
- /* Position will be set via JavaScript based on button position */
632
- }
633
-
634
- .overtype-dropdown-item {
635
- display: flex;
636
- align-items: center;
637
- width: 100%;
638
- padding: 8px 12px;
639
- border: none;
640
- background: none;
641
- text-align: left;
642
- cursor: pointer;
643
- font-size: 14px;
644
- color: var(--text, #333);
645
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
646
- }
647
-
648
- .overtype-dropdown-item:hover {
649
- background: var(--hover-bg, #f0f0f0);
650
- }
651
-
652
- .overtype-dropdown-item.active {
653
- font-weight: 600;
654
- }
655
-
656
- .overtype-dropdown-check {
657
- width: 16px;
658
- margin-right: 8px;
659
- color: var(--h1, #007bff);
660
- }
661
-
662
- .overtype-dropdown-icon {
663
- width: 20px;
664
- margin-right: 8px;
665
- text-align: center;
666
- }
667
-
668
- /* Preview mode styles */
669
- .overtype-container[data-mode="preview"] .overtype-input {
670
- display: none !important;
671
- }
672
-
673
- .overtype-container[data-mode="preview"] .overtype-preview {
674
- pointer-events: auto !important;
675
- user-select: text !important;
676
- cursor: text !important;
677
- }
678
-
679
- .overtype-container.overtype-auto-resize[data-mode="preview"] .overtype-preview {
680
- position: static !important;
681
- height: auto !important;
682
- }
683
-
684
- /* Hide syntax markers in preview mode */
685
- .overtype-container[data-mode="preview"] .syntax-marker {
686
- display: none !important;
687
- }
688
-
689
- /* Hide URL part of links in preview mode - extra specificity */
690
- .overtype-container[data-mode="preview"] .syntax-marker.url-part,
691
- .overtype-container[data-mode="preview"] .url-part {
692
- display: none !important;
693
- }
694
-
695
- /* Hide all syntax markers inside links too */
696
- .overtype-container[data-mode="preview"] a .syntax-marker {
697
- display: none !important;
698
- }
699
-
700
- /* Headers - restore proper sizing in preview mode */
701
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h1,
702
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h2,
703
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h3 {
704
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important;
705
- font-weight: 600 !important;
706
- margin: 0 !important;
707
- display: block !important;
708
- line-height: 1 !important;
709
- }
710
-
711
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h1 {
712
- font-size: 2em !important;
713
- color: var(--preview-h1, var(--preview-h1-default)) !important;
714
- }
715
-
716
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h2 {
717
- font-size: 1.5em !important;
718
- color: var(--preview-h2, var(--preview-h2-default)) !important;
719
- }
720
-
721
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h3 {
722
- font-size: 1.17em !important;
723
- color: var(--preview-h3, var(--preview-h3-default)) !important;
724
- }
725
-
726
- /* Lists - restore list styling in preview mode */
727
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview ul {
728
- display: block !important;
729
- list-style: disc !important;
730
- padding-left: 2em !important;
731
- margin: 1em 0 !important;
732
- }
733
-
734
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview ol {
735
- display: block !important;
736
- list-style: decimal !important;
737
- padding-left: 2em !important;
738
- margin: 1em 0 !important;
739
- }
740
-
741
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview li {
742
- display: list-item !important;
743
- margin: 0 !important;
744
- padding: 0 !important;
745
- }
746
-
747
- /* Task list checkboxes - only in preview mode */
748
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview li.task-list {
749
- list-style: none !important;
750
- position: relative !important;
751
- }
752
-
753
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview li.task-list input[type="checkbox"] {
754
- margin-right: 0.5em !important;
755
- cursor: default !important;
756
- vertical-align: middle !important;
757
- }
758
-
759
- /* Task list in normal mode - keep syntax visible */
760
- .overtype-container:not([data-mode="preview"]) .overtype-wrapper .overtype-preview li.task-list {
761
- list-style: none !important;
762
- }
763
-
764
- .overtype-container:not([data-mode="preview"]) .overtype-wrapper .overtype-preview li.task-list .syntax-marker {
765
- color: var(--syntax, #999999) !important;
766
- font-weight: normal !important;
767
- }
768
-
769
- /* Links - make clickable in preview mode */
770
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview a {
771
- pointer-events: auto !important;
772
- cursor: pointer !important;
773
- color: var(--preview-link, var(--preview-link-default)) !important;
774
- text-decoration: underline !important;
775
- }
776
-
777
- /* Code blocks - proper pre/code styling in preview mode */
778
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview pre.code-block {
779
- background: var(--preview-code-bg, var(--preview-code-bg-default)) !important;
780
- color: var(--preview-code, var(--preview-code-default)) !important;
781
- padding: 1.2em !important;
782
- border-radius: 3px !important;
783
- overflow-x: auto !important;
784
- margin: 0 !important;
785
- display: block !important;
786
- }
787
-
788
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview pre.code-block code {
789
- background: transparent !important;
790
- color: inherit !important;
791
- padding: 0 !important;
792
- font-family: ${n} !important;
793
- font-size: 0.9em !important;
794
- line-height: 1.4 !important;
795
- }
796
-
797
- /* Hide old code block lines and fences in preview mode */
798
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview .code-block-line {
799
- display: none !important;
800
- }
801
-
802
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview .code-fence {
803
- display: none !important;
804
- }
805
-
806
- /* Blockquotes - enhanced styling in preview mode */
807
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview .blockquote {
808
- display: block !important;
809
- border-left: 4px solid var(--preview-blockquote, var(--preview-blockquote-default)) !important;
810
- color: var(--preview-blockquote, var(--preview-blockquote-default)) !important;
811
- padding-left: 1em !important;
812
- margin: 1em 0 !important;
813
- font-style: italic !important;
814
- }
815
-
816
- /* Typography improvements in preview mode */
817
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview {
818
- font-family: Georgia, 'Times New Roman', serif !important;
819
- font-size: 16px !important;
820
- line-height: 1.8 !important;
821
- color: var(--preview-text, var(--preview-text-default)) !important;
822
- background: var(--preview-bg, var(--preview-bg-default)) !important;
823
- }
824
-
825
- /* Inline code in preview mode - keep monospace */
826
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview code {
827
- font-family: ${n} !important;
828
- font-size: 0.9em !important;
829
- background: var(--preview-code-bg, var(--preview-code-bg-default)) !important;
830
- color: var(--preview-code, var(--preview-code-default)) !important;
831
- padding: 0.2em 0.4em !important;
832
- border-radius: 3px !important;
833
- }
834
-
835
- /* Strong and em elements in preview mode */
836
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview strong {
837
- font-weight: 700 !important;
838
- color: var(--preview-strong, var(--preview-strong-default)) !important;
839
- }
840
-
841
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview em {
842
- font-style: italic !important;
843
- color: var(--preview-em, var(--preview-em-default)) !important;
844
- }
845
-
846
- /* HR in preview mode */
847
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview .hr-marker {
848
- display: block !important;
849
- border-top: 2px solid var(--preview-hr, var(--preview-hr-default)) !important;
850
- text-indent: -9999px !important;
851
- height: 2px !important;
852
- }
853
-
854
- /* Link Tooltip */
855
- .overtype-link-tooltip {
856
- background: #333 !important;
857
- color: white !important;
858
- padding: 6px 10px !important;
859
- border-radius: 16px !important;
860
- font-size: 12px !important;
861
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important;
862
- display: flex !important;
863
- visibility: hidden !important;
864
- pointer-events: none !important;
865
- z-index: 10000 !important;
866
- cursor: pointer !important;
867
- box-shadow: 0 2px 8px rgba(0,0,0,0.3) !important;
868
- max-width: 300px !important;
869
- white-space: nowrap !important;
870
- overflow: hidden !important;
871
- text-overflow: ellipsis !important;
872
- position: fixed;
873
- top: 0;
874
- left: 0;
875
- }
876
-
877
- .overtype-link-tooltip.visible {
878
- visibility: visible !important;
879
- pointer-events: auto !important;
880
- }
881
-
882
- ${a}
883
- `}var yi=Object.defineProperty,Ge=Object.getOwnPropertySymbols,bi=Object.prototype.hasOwnProperty,wi=Object.prototype.propertyIsEnumerable,Je=(i,e,t)=>e in i?yi(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,Xe=(i,e)=>{for(var t in e||(e={}))bi.call(e,t)&&Je(i,t,e[t]);if(Ge)for(var t of Ge(e))wi.call(e,t)&&Je(i,t,e[t]);return i},R={bold:{prefix:"**",suffix:"**",trimFirst:!0},italic:{prefix:"_",suffix:"_",trimFirst:!0},code:{prefix:"`",suffix:"`",blockPrefix:"```",blockSuffix:"```"},link:{prefix:"[",suffix:"](url)",replaceNext:"url",scanFor:"https?://"},bulletList:{prefix:"- ",multiline:!0,unorderedList:!0},numberedList:{prefix:"1. ",multiline:!0,orderedList:!0},quote:{prefix:"> ",multiline:!0,surroundWithNewlines:!0},taskList:{prefix:"- [ ] ",multiline:!0,surroundWithNewlines:!0},header1:{prefix:"# "},header2:{prefix:"## "},header3:{prefix:"### "},header4:{prefix:"#### "},header5:{prefix:"##### "},header6:{prefix:"###### "}};function xi(){return{prefix:"",suffix:"",blockPrefix:"",blockSuffix:"",multiline:!1,replaceNext:"",prefixSpace:!1,scanFor:"",surroundWithNewlines:!1,orderedList:!1,unorderedList:!1,trimFirst:!1}}function F(i){return Xe(Xe({},xi()),i)}var we=!1;function ki(){return we}function x(i,e,t){we&&(console.group(`\u{1F50D} ${i}`),console.log(e),t&&console.log("Data:",t),console.groupEnd())}function be(i,e){if(!we)return;let t=i.value.slice(i.selectionStart,i.selectionEnd);console.group(`\u{1F4CD} Selection: ${e}`),console.log("Position:",`${i.selectionStart}-${i.selectionEnd}`),console.log("Selected text:",JSON.stringify(t)),console.log("Length:",t.length);let n=i.value.slice(Math.max(0,i.selectionStart-10),i.selectionStart),o=i.value.slice(i.selectionEnd,Math.min(i.value.length,i.selectionEnd+10));console.log("Context:",JSON.stringify(n)+"[SELECTION]"+JSON.stringify(o)),console.groupEnd()}function it(i){we&&(console.group("\u{1F4DD} Result"),console.log("Text to insert:",JSON.stringify(i.text)),console.log("New selection:",`${i.selectionStart}-${i.selectionEnd}`),console.groupEnd())}var z=null;function j(i,{text:e,selectionStart:t,selectionEnd:n}){let o=ki();o&&(console.group("\u{1F527} insertText"),console.log("Current selection:",`${i.selectionStart}-${i.selectionEnd}`),console.log("Text to insert:",JSON.stringify(e)),console.log("New selection to set:",t,"-",n)),i.focus();let r=i.selectionStart,s=i.selectionEnd,a=i.value.slice(0,r),l=i.value.slice(s);o&&(console.log("Before text (last 20):",JSON.stringify(a.slice(-20))),console.log("After text (first 20):",JSON.stringify(l.slice(0,20))),console.log("Selected text being replaced:",JSON.stringify(i.value.slice(r,s))));let p=i.value,c=r!==s;if(z===null||z===!0){i.contentEditable="true";try{z=document.execCommand("insertText",!1,e),o&&console.log("execCommand returned:",z,"for text with",e.split(`
884
- `).length,"lines")}catch(d){z=!1,o&&console.log("execCommand threw error:",d)}i.contentEditable="false"}if(o&&(console.log("canInsertText before:",z),console.log("execCommand result:",z)),z){let d=a+e+l,u=i.value;o&&(console.log("Expected length:",d.length),console.log("Actual length:",u.length)),u!==d&&o&&(console.log("execCommand changed the value but not as expected"),console.log("Expected:",JSON.stringify(d.slice(0,100))),console.log("Actual:",JSON.stringify(u.slice(0,100))))}if(!z)if(o&&console.log("Using manual insertion"),i.value===p){o&&console.log("Value unchanged, doing manual replacement");try{document.execCommand("ms-beginUndoUnit")}catch(d){}i.value=a+e+l;try{document.execCommand("ms-endUndoUnit")}catch(d){}i.dispatchEvent(new CustomEvent("input",{bubbles:!0,cancelable:!0}))}else o&&console.log("Value was changed by execCommand, skipping manual insertion");o&&console.log("Setting selection range:",t,n),t!=null&&n!=null?i.setSelectionRange(t,n):i.setSelectionRange(r,i.selectionEnd),o&&(console.log("Final value length:",i.value.length),console.groupEnd())}function Ye(i){return i.trim().split(`
885
- `).length>1}function Si(i,e){let t=e;for(;i[t]&&i[t-1]!=null&&!i[t-1].match(/\s/);)t--;return t}function Li(i,e,t){let n=e,o=t?/\n/:/\s/;for(;i[n]&&!i[n].match(o);)n++;return n}function nt(i){let e=i.value.split(`
886
- `),t=0;for(let n=0;n<e.length;n++){let o=e[n].length+1;i.selectionStart>=t&&i.selectionStart<t+o&&(i.selectionStart=t),i.selectionEnd>=t&&i.selectionEnd<t+o&&(n===e.length-1?i.selectionEnd=Math.min(t+e[n].length,i.value.length):i.selectionEnd=t+o-1),t+=o}}function Ei(i,e,t,n=!1){if(i.selectionStart===i.selectionEnd)i.selectionStart=Si(i.value,i.selectionStart),i.selectionEnd=Li(i.value,i.selectionEnd,n);else{let o=i.selectionStart-e.length,r=i.selectionEnd+t.length,s=i.value.slice(o,i.selectionStart)===e,a=i.value.slice(i.selectionEnd,r)===t;s&&a&&(i.selectionStart=o,i.selectionEnd=r)}return i.value.slice(i.selectionStart,i.selectionEnd)}function Re(i){let e=i.value.slice(0,i.selectionStart),t=i.value.slice(i.selectionEnd),n=e.match(/\n*$/),o=t.match(/^\n*/),r=n?n[0].length:0,s=o?o[0].length:0,a="",l="";return e.match(/\S/)&&r<2&&(a=`
41
+ padding: var(--instance-padding, ${o}) !important;box-sizing: border-box !important;color: var(--placeholder,#999) !important}.overtype-wrapper .overtype-preview{z-index: 0 !important;pointer-events: none !important;color: var(--text,#0d3b66) !important;background-color: transparent !important;user-select: none !important;-webkit-user-select: none !important;-moz-user-select: none !important;-ms-user-select: none !important}.overtype-wrapper .overtype-preview *{font-family: inherit !important;font-size: inherit !important;line-height: inherit !important}.overtype-wrapper .overtype-preview div{margin: 0 !important;padding: 0 !important;border: none !important;text-align: left !important;text-indent: 0 !important;display: block !important;position: static !important;transform: none !important;min-height: 0 !important;max-height: none !important;line-height: inherit !important;font-size: inherit !important;font-family: inherit !important}.overtype-wrapper .overtype-preview .header{font-weight: bold !important}.overtype-wrapper .overtype-preview .h1{color: var(--h1,#f95738) !important}.overtype-wrapper .overtype-preview .h2{color: var(--h2,#ee964b) !important}.overtype-wrapper .overtype-preview .h3{color: var(--h3,#3d8a51) !important}.overtype-wrapper .overtype-preview h1,.overtype-wrapper .overtype-preview h2,.overtype-wrapper .overtype-preview h3{font-size: inherit !important;font-weight: bold !important;margin: 0 !important;padding: 0 !important;display: inline !important;line-height: inherit !important}.overtype-wrapper .overtype-preview h1{color: var(--h1,#f95738) !important}.overtype-wrapper .overtype-preview h2{color: var(--h2,#ee964b) !important}.overtype-wrapper .overtype-preview h3{color: var(--h3,#3d8a51) !important}.overtype-wrapper .overtype-preview ul,.overtype-wrapper .overtype-preview ol{list-style: none !important;margin: 0 !important;padding: 0 !important;display: block !important}.overtype-wrapper .overtype-preview li{display: block !important;margin: 0 !important;padding: 0 !important}.overtype-wrapper .overtype-preview strong{color: var(--strong,#ee964b) !important;font-weight: bold !important}.overtype-wrapper .overtype-preview em{color: var(--em,#f95738) !important;text-decoration-color: var(--em,#f95738) !important;text-decoration-thickness: 1px !important;font-style: italic !important}.overtype-wrapper .overtype-preview del{color: var(--del,#ee964b) !important;text-decoration: line-through !important;text-decoration-color: var(--del,#ee964b) !important;text-decoration-thickness: 1px !important}.overtype-wrapper .overtype-preview code{background: var(--code-bg,rgba(244,211,94,0.4)) !important;color: var(--code,#0d3b66) !important;padding: 0 !important;border-radius: 2px !important;font-family: inherit !important;font-size: inherit !important;line-height: inherit !important;font-weight: normal !important}.overtype-wrapper .overtype-preview pre{padding: 0 !important;margin: 0 !important;border-radius: 4px !important;overflow-x: auto !important}.overtype-wrapper .overtype-preview pre.code-block{background: var(--code-bg,rgba(244,211,94,0.4)) !important;white-space: break-spaces !important}.overtype-wrapper .overtype-preview pre code{background: transparent !important;color: var(--code,#0d3b66) !important;font-family: var(--instance-font-family,${i}) !important}.overtype-wrapper .overtype-preview .blockquote{color: var(--blockquote,#5a7a9b) !important;padding: 0 !important;margin: 0 !important;border: none !important}.overtype-wrapper .overtype-preview a{color: var(--link,#0d3b66) !important;text-decoration: underline !important;font-weight: normal !important}.overtype-wrapper .overtype-preview a:hover{text-decoration: underline !important;color: var(--link,#0d3b66) !important}.overtype-wrapper .overtype-preview ul,.overtype-wrapper .overtype-preview ol{list-style: none !important;margin: 0 !important;padding: 0 !important}.overtype-wrapper .overtype-preview hr{border: none !important;color: var(--hr,#5a7a9b) !important;margin: 0 !important;padding: 0 !important}.overtype-wrapper .overtype-preview .hr-marker{color: var(--hr,#5a7a9b) !important;opacity: 0.6 !important}.overtype-wrapper .overtype-preview .code-fence{color: var(--code,#0d3b66) !important;background: var(--code-bg,rgba(244,211,94,0.4)) !important}.overtype-wrapper .overtype-preview .code-block-line{background: var(--code-bg,rgba(244,211,94,0.4)) !important}.overtype-wrapper .overtype-preview .code-block-line .code-fence{background: transparent !important}.overtype-wrapper .overtype-preview .raw-line{color: var(--raw-line,#5a7a9b) !important;font-style: normal !important;font-weight: normal !important}.overtype-wrapper .overtype-preview .syntax-marker{color: var(--syntax-marker,rgba(13,59,102,0.52)) !important;opacity: 0.7 !important}.overtype-wrapper .overtype-preview .list-marker{color: var(--list-marker,#ee964b) !important}.overtype-stats{height: 40px !important;padding: 0 20px !important;background: var(--bg-secondary,#f8f9fa) !important;border-top: 1px solid var(--border,#e0e0e0) !important;display: flex !important;justify-content: space-between !important;align-items: center !important;font-family: -apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif !important;font-size: 0.85rem !important;color: var(--text-secondary,#666) !important;flex-shrink: 0 !important;z-index: 10001 !important;position: relative !important}.overtype-stats .overtype-stat{display: flex !important;align-items: center !important;gap: 5px !important;white-space: nowrap !important}.overtype-stats .live-dot{width: 8px !important;height: 8px !important;background: #4caf50 !important;border-radius: 50% !important;animation: overtype-pulse 2s infinite !important}@keyframes overtype-pulse{0%,100%{opacity: 1;transform: scale(1)}50%{opacity: 0.6;transform: scale(1.2)}}.overtype-toolbar.overtype-toolbar-hidden{display: none !important}.overtype-toolbar{display: flex !important;align-items: center !important;gap: 4px !important;padding: 8px !important;background: var(--toolbar-bg,var(--bg-primary,#f8f9fa)) !important;border-bottom: 1px solid var(--toolbar-border,transparent) !important;overflow-x: auto !important;overflow-y: hidden !important;-webkit-overflow-scrolling: touch !important;flex-shrink: 0 !important;height: auto !important;position: relative !important;z-index: 100 !important;scrollbar-width: thin}.overtype-toolbar::-webkit-scrollbar{height: 4px}.overtype-toolbar::-webkit-scrollbar-track{background: transparent}.overtype-toolbar::-webkit-scrollbar-thumb{background: rgba(0,0,0,0.2);border-radius: 2px}.overtype-toolbar-button{display: flex;align-items: center;justify-content: center;width: 32px;height: 32px;padding: 0;border: none;border-radius: 6px;background: transparent;color: var(--toolbar-icon,var(--text-secondary,#666));cursor: pointer;transition: all 0.2s ease;flex-shrink: 0}.overtype-toolbar-button svg{width: 20px;height: 20px;fill: currentColor}.overtype-toolbar-button:hover{background: var(--toolbar-hover,var(--bg-secondary,#e9ecef));color: var(--toolbar-icon,var(--text-primary,#333))}.overtype-toolbar-button:active{transform: scale(0.95)}.overtype-toolbar-button.active{background: var(--toolbar-active,var(--primary,#007bff));color: var(--toolbar-icon,var(--text-primary,#333))}.overtype-toolbar-button:disabled{opacity: 0.5;cursor: not-allowed}.overtype-toolbar-separator{width: 1px;height: 24px;background: var(--border,#e0e0e0);margin: 0 4px;flex-shrink: 0}@media (max-width: 640px){.overtype-toolbar{padding: 6px;gap: 2px}.overtype-toolbar-button{width: 36px;height: 36px}.overtype-toolbar-separator{margin: 0 2px}}.overtype-container[data-mode="plain"] .overtype-preview{display: none !important}.overtype-container[data-mode="plain"] .overtype-input{color: var(--text,#0d3b66) !important;font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif !important}.overtype-container:not([data-mode="plain"]) .overtype-input{color: transparent !important}.overtype-toolbar-button{position: relative !important}.overtype-toolbar-button.dropdown-active{background: var(--toolbar-active,var(--hover-bg,#f0f0f0))}.overtype-dropdown-menu{position: fixed !important;background: var(--bg-secondary,white) !important;border: 1px solid var(--border,#e0e0e0) !important;border-radius: 6px;box-shadow: 0 2px 8px rgba(0,0,0,0.1) !important;z-index: 10000;min-width: 150px;padding: 4px 0 !important}.overtype-dropdown-item{display: flex;align-items: center;width: 100%;padding: 8px 12px;border: none;background: none;text-align: left;cursor: pointer;font-size: 14px;color: var(--text,#333);font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}.overtype-dropdown-item:hover{background: var(--hover-bg,#f0f0f0)}.overtype-dropdown-item.active{font-weight: 600}.overtype-dropdown-check{width: 16px;margin-right: 8px;color: var(--h1,#007bff)}.overtype-dropdown-icon{width: 20px;margin-right: 8px;text-align: center}.overtype-container[data-mode="preview"] .overtype-input{display: none !important}.overtype-container[data-mode="preview"] .overtype-preview{pointer-events: auto !important;user-select: text !important;cursor: text !important}.overtype-container.overtype-auto-resize[data-mode="preview"] .overtype-preview{position: static !important;height: auto !important}.overtype-container[data-mode="preview"] .syntax-marker{display: none !important}.overtype-container[data-mode="preview"] .syntax-marker.url-part,.overtype-container[data-mode="preview"] .url-part{display: none !important}.overtype-container[data-mode="preview"] a .syntax-marker{display: none !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h1,.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h2,.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h3{font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif !important;font-weight: 600 !important;margin: 0 !important;display: block !important;line-height: 1 !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h1{font-size: 2em !important;color: var(--preview-h1,var(--preview-h1-default)) !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h2{font-size: 1.5em !important;color: var(--preview-h2,var(--preview-h2-default)) !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h3{font-size: 1.17em !important;color: var(--preview-h3,var(--preview-h3-default)) !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview ul{display: block !important;list-style: disc !important;padding-left: 2em !important;margin: 1em 0 !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview ol{display: block !important;list-style: decimal !important;padding-left: 2em !important;margin: 1em 0 !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview li{display: list-item !important;margin: 0 !important;padding: 0 !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview li.task-list{list-style: none !important;position: relative !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview li.task-list input[type="checkbox"]{margin-right: 0.5em !important;cursor: default !important;vertical-align: middle !important}.overtype-container:not([data-mode="preview"]) .overtype-wrapper .overtype-preview li.task-list{list-style: none !important}.overtype-container:not([data-mode="preview"]) .overtype-wrapper .overtype-preview li.task-list .syntax-marker{color: var(--syntax,#999999) !important;font-weight: normal !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview a{pointer-events: auto !important;cursor: pointer !important;color: var(--preview-link,var(--preview-link-default)) !important;text-decoration: underline !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview pre.code-block{background: var(--preview-code-bg,var(--preview-code-bg-default)) !important;color: var(--preview-code,var(--preview-code-default)) !important;padding: 1.2em !important;border-radius: 3px !important;overflow-x: auto !important;margin: 0 !important;display: block !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview pre.code-block code{background: transparent !important;color: inherit !important;padding: 0 !important;font-family:${i}!important;font-size: 0.9em !important;line-height: 1.4 !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview .code-block-line{display: none !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview .code-fence{display: none !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview .blockquote{display: block !important;border-left: 4px solid var(--preview-blockquote,var(--preview-blockquote-default)) !important;color: var(--preview-blockquote,var(--preview-blockquote-default)) !important;padding-left: 1em !important;margin: 1em 0 !important;font-style: italic !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview{font-family: Georgia,'Times New Roman',serif !important;font-size: 16px !important;line-height: 1.8 !important;color: var(--preview-text,var(--preview-text-default)) !important;background: var(--preview-bg,var(--preview-bg-default)) !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview code{font-family:${i}!important;font-size: 0.9em !important;background: var(--preview-code-bg,var(--preview-code-bg-default)) !important;color: var(--preview-code,var(--preview-code-default)) !important;padding: 0.2em 0.4em !important;border-radius: 3px !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview strong{font-weight: 700 !important;color: var(--preview-strong,var(--preview-strong-default)) !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview em{font-style: italic !important;color: var(--preview-em,var(--preview-em-default)) !important}.overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview .hr-marker{display: block !important;border-top: 2px solid var(--preview-hr,var(--preview-hr-default)) !important;text-indent: -9999px !important;height: 2px !important}.overtype-link-tooltip{background: #333 !important;color: white !important;padding: 6px 10px !important;border-radius: 16px !important;font-size: 12px !important;font-family: -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif !important;display: flex !important;visibility: hidden !important;pointer-events: none !important;z-index: 10000 !important;cursor: pointer !important;box-shadow: 0 2px 8px rgba(0,0,0,0.3) !important;max-width: 300px !important;white-space: nowrap !important;overflow: hidden !important;text-overflow: ellipsis !important;position: fixed;top: 0;left: 0}.overtype-link-tooltip.visible{visibility: visible !important;pointer-events: auto !important}${a}
42
+ `}var pe={};lt(pe,{applyCustomFormat:()=>_t,default:()=>Fn,expandSelection:()=>Et,getActiveFormats:()=>Ie,getDebugMode:()=>Je,hasFormat:()=>St,insertHeader:()=>ce,insertLink:()=>Te,preserveSelection:()=>xt,setDebugMode:()=>vt,setUndoMethod:()=>wt,toggleBold:()=>_e,toggleBulletList:()=>He,toggleCode:()=>Ae,toggleH1:()=>Pe,toggleH2:()=>$e,toggleH3:()=>Re,toggleItalic:()=>Ce,toggleNumberedList:()=>Me,toggleQuote:()=>Oe,toggleTaskList:()=>le});var Cn=Object.defineProperty,ht=Object.getOwnPropertySymbols,An=Object.prototype.hasOwnProperty,Tn=Object.prototype.propertyIsEnumerable,ut=(n,e,t)=>e in n?Cn(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,ft=(n,e)=>{for(var t in e||(e={}))An.call(e,t)&&ut(n,t,e[t]);if(ht)for(var t of ht(e))Tn.call(e,t)&&ut(n,t,e[t]);return n},I={bold:{prefix:"**",suffix:"**",trimFirst:!0},italic:{prefix:"_",suffix:"_",trimFirst:!0},code:{prefix:"`",suffix:"`",blockPrefix:"```",blockSuffix:"```"},link:{prefix:"[",suffix:"](url)",replaceNext:"url",scanFor:"https?://"},bulletList:{prefix:"- ",multiline:!0,unorderedList:!0},numberedList:{prefix:"1. ",multiline:!0,orderedList:!0},quote:{prefix:"> ",multiline:!0,surroundWithNewlines:!0},taskList:{prefix:"- [ ] ",multiline:!0,surroundWithNewlines:!0},header1:{prefix:"# "},header2:{prefix:"## "},header3:{prefix:"### "},header4:{prefix:"#### "},header5:{prefix:"##### "},header6:{prefix:"###### "}};function Hn(){return{prefix:"",suffix:"",blockPrefix:"",blockSuffix:"",multiline:!1,replaceNext:"",prefixSpace:!1,scanFor:"",surroundWithNewlines:!1,orderedList:!1,unorderedList:!1,trimFirst:!1}}function B(n){return ft(ft({},Hn()),n)}var ae=!1;function vt(n){ae=n}function Je(){return ae}function x(n,e,t){ae&&(console.group(`\u{1F50D} ${n}`),console.log(e),t&&console.log("Data:",t),console.groupEnd())}function Se(n,e){if(!ae)return;let t=n.value.slice(n.selectionStart,n.selectionEnd);console.group(`\u{1F4CD} Selection: ${e}`),console.log("Position:",`${n.selectionStart}-${n.selectionEnd}`),console.log("Selected text:",JSON.stringify(t)),console.log("Length:",t.length);let i=n.value.slice(Math.max(0,n.selectionStart-10),n.selectionStart),o=n.value.slice(n.selectionEnd,Math.min(n.value.length,n.selectionEnd+10));console.log("Context:",JSON.stringify(i)+"[SELECTION]"+JSON.stringify(o)),console.groupEnd()}function yt(n){ae&&(console.group("\u{1F4DD} Result"),console.log("Text to insert:",JSON.stringify(n.text)),console.log("New selection:",`${n.selectionStart}-${n.selectionEnd}`),console.groupEnd())}var T=null;function N(n,{text:e,selectionStart:t,selectionEnd:i}){let o=Je();o&&(console.group("\u{1F527} insertText"),console.log("Current selection:",`${n.selectionStart}-${n.selectionEnd}`),console.log("Text to insert:",JSON.stringify(e)),console.log("New selection to set:",t,"-",i)),n.focus();let r=n.selectionStart,s=n.selectionEnd,a=n.value.slice(0,r),l=n.value.slice(s);o&&(console.log("Before text (last 20):",JSON.stringify(a.slice(-20))),console.log("After text (first 20):",JSON.stringify(l.slice(0,20))),console.log("Selected text being replaced:",JSON.stringify(n.value.slice(r,s))));let p=n.value,c=r!==s;if(T===null||T===!0){n.contentEditable="true";try{T=document.execCommand("insertText",!1,e),o&&console.log("execCommand returned:",T,"for text with",e.split(`
43
+ `).length,"lines")}catch(d){T=!1,o&&console.log("execCommand threw error:",d)}n.contentEditable="false"}if(o&&(console.log("canInsertText before:",T),console.log("execCommand result:",T)),T){let d=a+e+l,h=n.value;o&&(console.log("Expected length:",d.length),console.log("Actual length:",h.length)),h!==d&&o&&(console.log("execCommand changed the value but not as expected"),console.log("Expected:",JSON.stringify(d.slice(0,100))),console.log("Actual:",JSON.stringify(h.slice(0,100))))}if(!T)if(o&&console.log("Using manual insertion"),n.value===p){o&&console.log("Value unchanged, doing manual replacement");try{document.execCommand("ms-beginUndoUnit")}catch(d){}n.value=a+e+l;try{document.execCommand("ms-endUndoUnit")}catch(d){}n.dispatchEvent(new CustomEvent("input",{bubbles:!0,cancelable:!0}))}else o&&console.log("Value was changed by execCommand, skipping manual insertion");o&&console.log("Setting selection range:",t,i),t!=null&&i!=null?n.setSelectionRange(t,i):n.setSelectionRange(r,n.selectionEnd),o&&(console.log("Final value length:",n.value.length),console.groupEnd())}function wt(n){switch(n){case"native":T=!0;break;case"manual":T=!1;break;case"auto":T=null;break}}function Qe(n){return n.trim().split(`
44
+ `).length>1}function Mn(n,e){let t=e;for(;n[t]&&n[t-1]!=null&&!n[t-1].match(/\s/);)t--;return t}function On(n,e,t){let i=e,o=t?/\n/:/\s/;for(;n[i]&&!n[i].match(o);)i++;return i}function bt(n){let e=n.value.split(`
45
+ `),t=0;for(let i=0;i<e.length;i++){let o=e[i].length+1;n.selectionStart>=t&&n.selectionStart<t+o&&(n.selectionStart=t),n.selectionEnd>=t&&n.selectionEnd<t+o&&(i===e.length-1?n.selectionEnd=Math.min(t+e[i].length,n.value.length):n.selectionEnd=t+o-1),t+=o}}function Pn(n,e,t,i=!1){if(n.selectionStart===n.selectionEnd)n.selectionStart=Mn(n.value,n.selectionStart),n.selectionEnd=On(n.value,n.selectionEnd,i);else{let o=n.selectionStart-e.length,r=n.selectionEnd+t.length,s=n.value.slice(o,n.selectionStart)===e,a=n.value.slice(n.selectionEnd,r)===t;s&&a&&(n.selectionStart=o,n.selectionEnd=r)}return n.value.slice(n.selectionStart,n.selectionEnd)}function Xe(n){let e=n.value.slice(0,n.selectionStart),t=n.value.slice(n.selectionEnd),i=e.match(/\n*$/),o=t.match(/^\n*/),r=i?i[0].length:0,s=o?o[0].length:0,a="",l="";return e.match(/\S/)&&r<2&&(a=`
887
46
  `.repeat(2-r)),t.match(/\S/)&&s<2&&(l=`
888
- `.repeat(2-s)),{newlinesToAppend:a,newlinesToPrepend:l}}function xe(i,e,t={}){let n=i.selectionStart,o=i.selectionEnd,r=n===o,s=i.value,a=n;for(;a>0&&s[a-1]!==`
889
- `;)a--;if(r){let p=n;for(;p<s.length&&s[p]!==`
890
- `;)p++;i.selectionStart=a,i.selectionEnd=p}else nt(i);let l=e(i);if(t.adjustSelection){let c=i.value.slice(i.selectionStart,i.selectionEnd).startsWith(t.prefix),d=t.adjustSelection(c,n,o,a);l.selectionStart=d.start,l.selectionEnd=d.end}else if(t.prefix){let c=i.value.slice(i.selectionStart,i.selectionEnd).startsWith(t.prefix);r?c?(l.selectionStart=Math.max(n-t.prefix.length,a),l.selectionEnd=l.selectionStart):(l.selectionStart=n+t.prefix.length,l.selectionEnd=l.selectionStart):c?(l.selectionStart=Math.max(n-t.prefix.length,a),l.selectionEnd=Math.max(o-t.prefix.length,a)):(l.selectionStart=n+t.prefix.length,l.selectionEnd=o+t.prefix.length)}return l}function ke(i,e){let t,n,{prefix:o,suffix:r,blockPrefix:s,blockSuffix:a,replaceNext:l,prefixSpace:p,scanFor:c,surroundWithNewlines:d,trimFirst:u}=e,h=i.selectionStart,f=i.selectionEnd,m=i.value.slice(i.selectionStart,i.selectionEnd),g=Ye(m)&&s&&s.length>0?`${s}
891
- `:o,y=Ye(m)&&a&&a.length>0?`
892
- ${a}`:r;if(p){let k=i.value[i.selectionStart-1];i.selectionStart!==0&&k!=null&&!k.match(/\s/)&&(g=` ${g}`)}m=Ei(i,g,y,e.multiline);let b=i.selectionStart,w=i.selectionEnd,S=l&&l.length>0&&y.indexOf(l)>-1&&m.length>0;if(d){let k=Re(i);t=k.newlinesToAppend,n=k.newlinesToPrepend,g=t+o,y+=n}if(m.startsWith(g)&&m.endsWith(y)){let k=m.slice(g.length,m.length-y.length);if(h===f){let E=h-g.length;E=Math.max(E,b),E=Math.min(E,b+k.length),b=w=E}else w=b+k.length;return{text:k,selectionStart:b,selectionEnd:w}}else if(S)if(c&&c.length>0&&m.match(c)){y=y.replace(l,m);let k=g+y;return b=w=b+g.length,{text:k,selectionStart:b,selectionEnd:w}}else{let k=g+m+y;return b=b+g.length+m.length+y.indexOf(l),w=b+l.length,{text:k,selectionStart:b,selectionEnd:w}}else{let k=g+m+y;b=h+g.length,w=f+g.length;let E=m.match(/^\s*|\s*$/g);if(u&&E){let me=E[0]||"",Y=E[1]||"";k=me+g+m.trim()+y+Y,b+=me.length,w-=Y.length}return{text:k,selectionStart:b,selectionEnd:w}}}function ot(i,e){let{prefix:t,suffix:n,surroundWithNewlines:o}=e,r=i.value.slice(i.selectionStart,i.selectionEnd),s=i.selectionStart,a=i.selectionEnd,l=r.split(`
893
- `);if(l.every(c=>c.startsWith(t)&&(!n||c.endsWith(n))))r=l.map(c=>{let d=c.slice(t.length);return n&&(d=d.slice(0,d.length-n.length)),d}).join(`
894
- `),a=s+r.length;else if(r=l.map(c=>t+c+(n||"")).join(`
895
- `),o){let{newlinesToAppend:c,newlinesToPrepend:d}=Re(i);s+=c.length,a=s+r.length,r=c+r+d}return{text:r,selectionStart:s,selectionEnd:a}}function et(i){let e=i.split(`
896
- `),t=/^\d+\.\s+/,n=e.every(r=>t.test(r)),o=e;return n&&(o=e.map(r=>r.replace(t,""))),{text:o.join(`
897
- `),processed:n}}function tt(i){let e=i.split(`
898
- `),t="- ",n=e.every(r=>r.startsWith(t)),o=e;return n&&(o=e.map(r=>r.slice(t.length))),{text:o.join(`
899
- `),processed:n}}function re(i,e){return e?"- ":`${i+1}. `}function Ci(i,e){let t,n,o;return i.orderedList?(t=et(e),n=tt(t.text),o=n.text):(t=tt(e),n=et(t.text),o=n.text),[t,n,o]}function _i(i,e){let t=i.selectionStart===i.selectionEnd,n=i.selectionStart,o=i.selectionEnd;nt(i);let r=i.value.slice(i.selectionStart,i.selectionEnd),[s,a,l]=Ci(e,r),p=l.split(`
900
- `).map((m,g)=>`${re(g,e.unorderedList)}${m}`),c=p.reduce((m,g,y)=>m+re(y,e.unorderedList).length,0),d=p.reduce((m,g,y)=>m+re(y,!e.unorderedList).length,0);if(s.processed)return t?(n=Math.max(n-re(0,e.unorderedList).length,0),o=n):(n=i.selectionStart,o=i.selectionEnd-c),{text:l,selectionStart:n,selectionEnd:o};let{newlinesToAppend:u,newlinesToPrepend:h}=Re(i),f=u+p.join(`
901
- `)+h;return t?(n=Math.max(n+re(0,e.unorderedList).length+u.length,0),o=n):a.processed?(n=Math.max(i.selectionStart+u.length,0),o=i.selectionEnd+u.length+c-d):(n=Math.max(i.selectionStart+u.length,0),o=i.selectionEnd+u.length+c),{text:f,selectionStart:n,selectionEnd:o}}function rt(i,e){let t=xe(i,n=>_i(n,e),{adjustSelection:(n,o,r,s)=>{let a=i.value.slice(s,i.selectionEnd),l=/^\d+\.\s+/,p=/^- /,c=l.test(a),d=p.test(a),u=e.orderedList&&c||e.unorderedList&&d;if(o===r)if(u){let h=a.match(e.orderedList?l:p),f=h?h[0].length:0;return{start:Math.max(o-f,s),end:Math.max(o-f,s)}}else if(c||d){let h=a.match(c?l:p),f=h?h[0].length:0,g=(e.unorderedList?2:3)-f;return{start:o+g,end:o+g}}else{let h=e.unorderedList?2:3;return{start:o+h,end:o+h}}else if(u){let h=a.match(e.orderedList?l:p),f=h?h[0].length:0;return{start:Math.max(o-f,s),end:Math.max(r-f,s)}}else if(c||d){let h=a.match(c?l:p),f=h?h[0].length:0,g=(e.unorderedList?2:3)-f;return{start:o+g,end:r+g}}else{let h=e.unorderedList?2:3;return{start:o+h,end:r+h}}}});j(i,t)}function Ai(i){if(!i)return[];let e=[],{selectionStart:t,selectionEnd:n,value:o}=i,r=o.split(`
902
- `),s=0,a="";for(let d of r){if(t>=s&&t<=s+d.length){a=d;break}s+=d.length+1}a.startsWith("- ")&&(a.startsWith("- [ ] ")||a.startsWith("- [x] ")?e.push("task-list"):e.push("bullet-list")),/^\d+\.\s/.test(a)&&e.push("numbered-list"),a.startsWith("> ")&&e.push("quote"),a.startsWith("# ")&&e.push("header"),a.startsWith("## ")&&e.push("header-2"),a.startsWith("### ")&&e.push("header-3");let l=Math.max(0,t-10),p=Math.min(o.length,n+10),c=o.slice(l,p);if(c.includes("**")){let d=o.slice(Math.max(0,t-100),t),u=o.slice(n,Math.min(o.length,n+100)),h=d.lastIndexOf("**"),f=u.indexOf("**");h!==-1&&f!==-1&&e.push("bold")}if(c.includes("_")){let d=o.slice(Math.max(0,t-100),t),u=o.slice(n,Math.min(o.length,n+100)),h=d.lastIndexOf("_"),f=u.indexOf("_");h!==-1&&f!==-1&&e.push("italic")}if(c.includes("`")){let d=o.slice(Math.max(0,t-100),t),u=o.slice(n,Math.min(o.length,n+100));d.includes("`")&&u.includes("`")&&e.push("code")}if(c.includes("[")&&c.includes("]")){let d=o.slice(Math.max(0,t-100),t),u=o.slice(n,Math.min(o.length,n+100)),h=d.lastIndexOf("["),f=u.indexOf("]");h!==-1&&f!==-1&&o.slice(n+f+1,n+f+10).startsWith("(")&&e.push("link")}return e}function st(i){if(!i||i.disabled||i.readOnly)return;x("toggleBold","Starting"),be(i,"Before");let e=F(R.bold),t=ke(i,e);it(t),j(i,t),be(i,"After")}function at(i){if(!i||i.disabled||i.readOnly)return;let e=F(R.italic),t=ke(i,e);j(i,t)}function lt(i){if(!i||i.disabled||i.readOnly)return;let e=F(R.code),t=ke(i,e);j(i,t)}function ct(i,e={}){if(!i||i.disabled||i.readOnly)return;let t=i.value.slice(i.selectionStart,i.selectionEnd),n=F(R.link);if(t&&t.match(/^https?:\/\//)&&!e.url?(n.suffix=`](${t})`,n.replaceNext=""):e.url&&(n.suffix=`](${e.url})`,n.replaceNext=""),e.text&&!t){let s=i.selectionStart;i.value=i.value.slice(0,s)+e.text+i.value.slice(s),i.selectionStart=s,i.selectionEnd=s+e.text.length}let r=ke(i,n);j(i,r)}function pt(i){if(!i||i.disabled||i.readOnly)return;let e=F(R.bulletList);rt(i,e)}function dt(i){if(!i||i.disabled||i.readOnly)return;let e=F(R.numberedList);rt(i,e)}function ht(i){if(!i||i.disabled||i.readOnly)return;x("toggleQuote","Starting"),be(i,"Initial");let e=F(R.quote),t=xe(i,n=>ot(n,e),{prefix:e.prefix});it(t),j(i,t),be(i,"Final")}function Ie(i){if(!i||i.disabled||i.readOnly)return;let e=F(R.taskList),t=xe(i,n=>ot(n,e),{prefix:e.prefix});j(i,t)}function Be(i,e=1,t=!1){if(!i||i.disabled||i.readOnly)return;(e<1||e>6)&&(e=1),x("insertHeader","============ START ============"),x("insertHeader",`Level: ${e}, Toggle: ${t}`),x("insertHeader",`Initial cursor: ${i.selectionStart}-${i.selectionEnd}`);let n=`header${e===1?"1":e}`,o=F(R[n]||R.header1);x("insertHeader",`Style prefix: "${o.prefix}"`);let r=i.value,s=i.selectionStart,a=i.selectionEnd,l=s;for(;l>0&&r[l-1]!==`
47
+ `.repeat(2-s)),{newlinesToAppend:a,newlinesToPrepend:l}}function xt(n,e){let t=n.selectionStart,i=n.selectionEnd,o=n.scrollTop;e(),n.selectionStart=t,n.selectionEnd=i,n.scrollTop=o}function Ee(n,e,t={}){let i=n.selectionStart,o=n.selectionEnd,r=i===o,s=n.value,a=i;for(;a>0&&s[a-1]!==`
48
+ `;)a--;if(r){let p=i;for(;p<s.length&&s[p]!==`
49
+ `;)p++;n.selectionStart=a,n.selectionEnd=p}else bt(n);let l=e(n);if(t.adjustSelection){let c=n.value.slice(n.selectionStart,n.selectionEnd).startsWith(t.prefix),d=t.adjustSelection(c,i,o,a);l.selectionStart=d.start,l.selectionEnd=d.end}else if(t.prefix){let c=n.value.slice(n.selectionStart,n.selectionEnd).startsWith(t.prefix);r?c?(l.selectionStart=Math.max(i-t.prefix.length,a),l.selectionEnd=l.selectionStart):(l.selectionStart=i+t.prefix.length,l.selectionEnd=l.selectionStart):c?(l.selectionStart=Math.max(i-t.prefix.length,a),l.selectionEnd=Math.max(o-t.prefix.length,a)):(l.selectionStart=i+t.prefix.length,l.selectionEnd=o+t.prefix.length)}return l}function te(n,e){let t,i,{prefix:o,suffix:r,blockPrefix:s,blockSuffix:a,replaceNext:l,prefixSpace:p,scanFor:c,surroundWithNewlines:d,trimFirst:h}=e,u=n.selectionStart,f=n.selectionEnd,m=n.value.slice(n.selectionStart,n.selectionEnd),g=Qe(m)&&s&&s.length>0?`${s}
50
+ `:o,y=Qe(m)&&a&&a.length>0?`
51
+ ${a}`:r;if(p){let k=n.value[n.selectionStart-1];n.selectionStart!==0&&k!=null&&!k.match(/\s/)&&(g=` ${g}`)}m=Pn(n,g,y,e.multiline);let w=n.selectionStart,b=n.selectionEnd,L=l&&l.length>0&&y.indexOf(l)>-1&&m.length>0;if(d){let k=Xe(n);t=k.newlinesToAppend,i=k.newlinesToPrepend,g=t+o,y+=i}if(m.startsWith(g)&&m.endsWith(y)){let k=m.slice(g.length,m.length-y.length);if(u===f){let E=u-g.length;E=Math.max(E,w),E=Math.min(E,w+k.length),w=b=E}else b=w+k.length;return{text:k,selectionStart:w,selectionEnd:b}}else if(L)if(c&&c.length>0&&m.match(c)){y=y.replace(l,m);let k=g+y;return w=b=w+g.length,{text:k,selectionStart:w,selectionEnd:b}}else{let k=g+m+y;return w=w+g.length+m.length+y.indexOf(l),b=w+l.length,{text:k,selectionStart:w,selectionEnd:b}}else{let k=g+m+y;w=u+g.length,b=f+g.length;let E=m.match(/^\s*|\s*$/g);if(h&&E){let be=E[0]||"",Y=E[1]||"";k=be+g+m.trim()+y+Y,w+=be.length,b-=Y.length}return{text:k,selectionStart:w,selectionEnd:b}}}function Ge(n,e){let{prefix:t,suffix:i,surroundWithNewlines:o}=e,r=n.value.slice(n.selectionStart,n.selectionEnd),s=n.selectionStart,a=n.selectionEnd,l=r.split(`
52
+ `);if(l.every(c=>c.startsWith(t)&&(!i||c.endsWith(i))))r=l.map(c=>{let d=c.slice(t.length);return i&&(d=d.slice(0,d.length-i.length)),d}).join(`
53
+ `),a=s+r.length;else if(r=l.map(c=>t+c+(i||"")).join(`
54
+ `),o){let{newlinesToAppend:c,newlinesToPrepend:d}=Xe(n);s+=c.length,a=s+r.length,r=c+r+d}return{text:r,selectionStart:s,selectionEnd:a}}function mt(n){let e=n.split(`
55
+ `),t=/^\d+\.\s+/,i=e.every(r=>t.test(r)),o=e;return i&&(o=e.map(r=>r.replace(t,""))),{text:o.join(`
56
+ `),processed:i}}function gt(n){let e=n.split(`
57
+ `),t="- ",i=e.every(r=>r.startsWith(t)),o=e;return i&&(o=e.map(r=>r.slice(t.length))),{text:o.join(`
58
+ `),processed:i}}function se(n,e){return e?"- ":`${n+1}. `}function $n(n,e){let t,i,o;return n.orderedList?(t=mt(e),i=gt(t.text),o=i.text):(t=gt(e),i=mt(t.text),o=i.text),[t,i,o]}function Rn(n,e){let t=n.selectionStart===n.selectionEnd,i=n.selectionStart,o=n.selectionEnd;bt(n);let r=n.value.slice(n.selectionStart,n.selectionEnd),[s,a,l]=$n(e,r),p=l.split(`
59
+ `).map((m,g)=>`${se(g,e.unorderedList)}${m}`),c=p.reduce((m,g,y)=>m+se(y,e.unorderedList).length,0),d=p.reduce((m,g,y)=>m+se(y,!e.unorderedList).length,0);if(s.processed)return t?(i=Math.max(i-se(0,e.unorderedList).length,0),o=i):(i=n.selectionStart,o=n.selectionEnd-c),{text:l,selectionStart:i,selectionEnd:o};let{newlinesToAppend:h,newlinesToPrepend:u}=Xe(n),f=h+p.join(`
60
+ `)+u;return t?(i=Math.max(i+se(0,e.unorderedList).length+h.length,0),o=i):a.processed?(i=Math.max(n.selectionStart+h.length,0),o=n.selectionEnd+h.length+c-d):(i=Math.max(n.selectionStart+h.length,0),o=n.selectionEnd+h.length+c),{text:f,selectionStart:i,selectionEnd:o}}function kt(n,e){let t=Ee(n,i=>Rn(i,e),{adjustSelection:(i,o,r,s)=>{let a=n.value.slice(s,n.selectionEnd),l=/^\d+\.\s+/,p=/^- /,c=l.test(a),d=p.test(a),h=e.orderedList&&c||e.unorderedList&&d;if(o===r)if(h){let u=a.match(e.orderedList?l:p),f=u?u[0].length:0;return{start:Math.max(o-f,s),end:Math.max(o-f,s)}}else if(c||d){let u=a.match(c?l:p),f=u?u[0].length:0,g=(e.unorderedList?2:3)-f;return{start:o+g,end:o+g}}else{let u=e.unorderedList?2:3;return{start:o+u,end:o+u}}else if(h){let u=a.match(e.orderedList?l:p),f=u?u[0].length:0;return{start:Math.max(o-f,s),end:Math.max(r-f,s)}}else if(c||d){let u=a.match(c?l:p),f=u?u[0].length:0,g=(e.unorderedList?2:3)-f;return{start:o+g,end:r+g}}else{let u=e.unorderedList?2:3;return{start:o+u,end:r+u}}}});N(n,t)}function Lt(n){if(!n)return[];let e=[],{selectionStart:t,selectionEnd:i,value:o}=n,r=o.split(`
61
+ `),s=0,a="";for(let d of r){if(t>=s&&t<=s+d.length){a=d;break}s+=d.length+1}a.startsWith("- ")&&(a.startsWith("- [ ] ")||a.startsWith("- [x] ")?e.push("task-list"):e.push("bullet-list")),/^\d+\.\s/.test(a)&&e.push("numbered-list"),a.startsWith("> ")&&e.push("quote"),a.startsWith("# ")&&e.push("header"),a.startsWith("## ")&&e.push("header-2"),a.startsWith("### ")&&e.push("header-3");let l=Math.max(0,t-10),p=Math.min(o.length,i+10),c=o.slice(l,p);if(c.includes("**")){let d=o.slice(Math.max(0,t-100),t),h=o.slice(i,Math.min(o.length,i+100)),u=d.lastIndexOf("**"),f=h.indexOf("**");u!==-1&&f!==-1&&e.push("bold")}if(c.includes("_")){let d=o.slice(Math.max(0,t-100),t),h=o.slice(i,Math.min(o.length,i+100)),u=d.lastIndexOf("_"),f=h.indexOf("_");u!==-1&&f!==-1&&e.push("italic")}if(c.includes("`")){let d=o.slice(Math.max(0,t-100),t),h=o.slice(i,Math.min(o.length,i+100));d.includes("`")&&h.includes("`")&&e.push("code")}if(c.includes("[")&&c.includes("]")){let d=o.slice(Math.max(0,t-100),t),h=o.slice(i,Math.min(o.length,i+100)),u=d.lastIndexOf("["),f=h.indexOf("]");u!==-1&&f!==-1&&o.slice(i+f+1,i+f+10).startsWith("(")&&e.push("link")}return e}function In(n,e){return Lt(n).includes(e)}function Bn(n,e={}){if(!n)return;let{toWord:t,toLine:i,toFormat:o}=e,{selectionStart:r,selectionEnd:s,value:a}=n;if(i){let l=a.split(`
62
+ `),p=0,c=0,d=0;for(let h of l){if(r>=d&&r<=d+h.length){p=d,c=d+h.length;break}d+=h.length+1}n.selectionStart=p,n.selectionEnd=c}else if(t&&r===s){let l=r,p=s;for(;l>0&&!/\s/.test(a[l-1]);)l--;for(;p<a.length&&!/\s/.test(a[p]);)p++;n.selectionStart=l,n.selectionEnd=p}}function _e(n){if(!n||n.disabled||n.readOnly)return;x("toggleBold","Starting"),Se(n,"Before");let e=B(I.bold),t=te(n,e);yt(t),N(n,t),Se(n,"After")}function Ce(n){if(!n||n.disabled||n.readOnly)return;let e=B(I.italic),t=te(n,e);N(n,t)}function Ae(n){if(!n||n.disabled||n.readOnly)return;let e=B(I.code),t=te(n,e);N(n,t)}function Te(n,e={}){if(!n||n.disabled||n.readOnly)return;let t=n.value.slice(n.selectionStart,n.selectionEnd),i=B(I.link);if(t&&t.match(/^https?:\/\//)&&!e.url?(i.suffix=`](${t})`,i.replaceNext=""):e.url&&(i.suffix=`](${e.url})`,i.replaceNext=""),e.text&&!t){let s=n.selectionStart;n.value=n.value.slice(0,s)+e.text+n.value.slice(s),n.selectionStart=s,n.selectionEnd=s+e.text.length}let r=te(n,i);N(n,r)}function He(n){if(!n||n.disabled||n.readOnly)return;let e=B(I.bulletList);kt(n,e)}function Me(n){if(!n||n.disabled||n.readOnly)return;let e=B(I.numberedList);kt(n,e)}function Oe(n){if(!n||n.disabled||n.readOnly)return;x("toggleQuote","Starting"),Se(n,"Initial");let e=B(I.quote),t=Ee(n,i=>Ge(i,e),{prefix:e.prefix});yt(t),N(n,t),Se(n,"Final")}function le(n){if(!n||n.disabled||n.readOnly)return;let e=B(I.taskList),t=Ee(n,i=>Ge(i,e),{prefix:e.prefix});N(n,t)}function ce(n,e=1,t=!1){if(!n||n.disabled||n.readOnly)return;(e<1||e>6)&&(e=1),x("insertHeader","============ START ============"),x("insertHeader",`Level: ${e}, Toggle: ${t}`),x("insertHeader",`Initial cursor: ${n.selectionStart}-${n.selectionEnd}`);let i=`header${e===1?"1":e}`,o=B(I[i]||I.header1);x("insertHeader",`Style prefix: "${o.prefix}"`);let r=n.value,s=n.selectionStart,a=n.selectionEnd,l=s;for(;l>0&&r[l-1]!==`
903
63
  `;)l--;let p=a;for(;p<r.length&&r[p]!==`
904
- `;)p++;let c=r.slice(l,p);x("insertHeader",`Current line (before): "${c}"`);let d=c.match(/^(#{1,6})\s*/),u=d?d[1].length:0,h=d?d[0].length:0;x("insertHeader","Existing header check:"),x("insertHeader",` - Match: ${d?`"${d[0]}"`:"none"}`),x("insertHeader",` - Existing level: ${u}`),x("insertHeader",` - Existing prefix length: ${h}`),x("insertHeader",` - Target level: ${e}`);let f=t&&u===e;x("insertHeader",`Should toggle OFF: ${f} (toggle=${t}, existingLevel=${u}, level=${e})`);let m=xe(i,g=>{let y=g.value.slice(g.selectionStart,g.selectionEnd);x("insertHeader",`Line in operation: "${y}"`);let b=y.replace(/^#{1,6}\s*/,"");x("insertHeader",`Cleaned line: "${b}"`);let w;return f?(x("insertHeader","ACTION: Toggling OFF - removing header"),w=b):u>0?(x("insertHeader",`ACTION: Replacing H${u} with H${e}`),w=o.prefix+b):(x("insertHeader","ACTION: Adding new header"),w=o.prefix+b),x("insertHeader",`New line: "${w}"`),{text:w,selectionStart:g.selectionStart,selectionEnd:g.selectionEnd}},{prefix:o.prefix,adjustSelection:(g,y,b,w)=>{if(x("insertHeader","Adjusting selection:"),x("insertHeader",` - isRemoving param: ${g}`),x("insertHeader",` - shouldToggleOff: ${f}`),x("insertHeader",` - selStart: ${y}, selEnd: ${b}`),x("insertHeader",` - lineStartPos: ${w}`),f){let S=Math.max(y-h,w);return x("insertHeader",` - Removing header, adjusting by -${h}`),{start:S,end:y===b?S:Math.max(b-h,w)}}else if(h>0){let S=o.prefix.length-h;return x("insertHeader",` - Replacing header, adjusting by ${S}`),{start:y+S,end:b+S}}else return x("insertHeader",` - Adding header, adjusting by +${o.prefix.length}`),{start:y+o.prefix.length,end:b+o.prefix.length}}});x("insertHeader",`Final result: text="${m.text}", cursor=${m.selectionStart}-${m.selectionEnd}`),x("insertHeader","============ END ============"),j(i,m)}function ut(i){Be(i,1,!0)}function ft(i){Be(i,2,!0)}function mt(i){Be(i,3,!0)}function gt(i){return Ai(i)}var Se=class{constructor(e,t={}){this.editor=e,this.container=null,this.buttons={},this.toolbarButtons=t.toolbarButtons||[]}create(){this.container=document.createElement("div"),this.container.className="overtype-toolbar",this.container.setAttribute("role","toolbar"),this.container.setAttribute("aria-label","Formatting toolbar"),this.toolbarButtons.forEach(e=>{if(e.name==="separator"){let t=this.createSeparator();this.container.appendChild(t)}else{let t=this.createButton(e);this.buttons[e.name]=t,this.container.appendChild(t)}}),this.editor.container.insertBefore(this.container,this.editor.wrapper)}createSeparator(){let e=document.createElement("div");return e.className="overtype-toolbar-separator",e.setAttribute("role","separator"),e}createButton(e){let t=document.createElement("button");return t.className="overtype-toolbar-button",t.type="button",t.setAttribute("data-button",e.name),t.title=e.title||"",t.setAttribute("aria-label",e.title||e.name),t.innerHTML=this.sanitizeSVG(e.icon||""),e.name==="viewMode"?(t.classList.add("has-dropdown"),t.dataset.dropdown="true",t.addEventListener("click",n=>{n.preventDefault(),this.toggleViewModeDropdown(t)}),t):(t._clickHandler=n=>{n.preventDefault();let o=e.actionId||e.name;this.editor.performAction(o,n)},t.addEventListener("click",t._clickHandler),t)}async handleAction(e){if(e&&typeof e=="object"&&typeof e.action=="function"){this.editor.textarea.focus();try{return await e.action({editor:this.editor,getValue:()=>this.editor.getValue(),setValue:t=>this.editor.setValue(t),event:null}),!0}catch(t){return console.error(`Action "${e.name}" error:`,t),this.editor.wrapper.dispatchEvent(new CustomEvent("button-error",{detail:{buttonName:e.name,error:t}})),!1}}return typeof e=="string"?this.editor.performAction(e,null):!1}sanitizeSVG(e){return typeof e!="string"?"":e.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").replace(/\son\w+\s*=\s*["'][^"']*["']/gi,"").replace(/\son\w+\s*=\s*[^\s>]*/gi,"")}toggleViewModeDropdown(e){let t=document.querySelector(".overtype-dropdown-menu");if(t){t.remove(),e.classList.remove("dropdown-active");return}e.classList.add("dropdown-active");let n=this.createViewModeDropdown(e),o=e.getBoundingClientRect();n.style.position="absolute",n.style.top=`${o.bottom+5}px`,n.style.left=`${o.left}px`,document.body.appendChild(n),this.handleDocumentClick=r=>{!n.contains(r.target)&&!e.contains(r.target)&&(n.remove(),e.classList.remove("dropdown-active"),document.removeEventListener("click",this.handleDocumentClick))},setTimeout(()=>{document.addEventListener("click",this.handleDocumentClick)},0)}createViewModeDropdown(e){let t=document.createElement("div");t.className="overtype-dropdown-menu";let n=[{id:"normal",label:"Normal Edit",icon:"\u2713"},{id:"plain",label:"Plain Textarea",icon:"\u2713"},{id:"preview",label:"Preview Mode",icon:"\u2713"}],o=this.editor.container.dataset.mode||"normal";return n.forEach(r=>{let s=document.createElement("button");if(s.className="overtype-dropdown-item",s.type="button",s.textContent=r.label,r.id===o){s.classList.add("active"),s.setAttribute("aria-current","true");let a=document.createElement("span");a.className="overtype-dropdown-icon",a.textContent=r.icon,s.prepend(a)}s.addEventListener("click",a=>{switch(a.preventDefault(),r.id){case"plain":this.editor.showPlainTextarea();break;case"preview":this.editor.showPreviewMode();break;case"normal":default:this.editor.showNormalEditMode();break}t.remove(),e.classList.remove("dropdown-active"),document.removeEventListener("click",this.handleDocumentClick)}),t.appendChild(s)}),t}updateButtonStates(){var e;try{let t=((e=gt)==null?void 0:e(this.editor.textarea,this.editor.textarea.selectionStart))||[];Object.entries(this.buttons).forEach(([n,o])=>{if(n==="viewMode")return;let r=!1;switch(n){case"bold":r=t.includes("bold");break;case"italic":r=t.includes("italic");break;case"code":r=!1;break;case"bulletList":r=t.includes("bullet-list");break;case"orderedList":r=t.includes("numbered-list");break;case"taskList":r=t.includes("task-list");break;case"quote":r=t.includes("quote");break;case"h1":r=t.includes("header");break;case"h2":r=t.includes("header-2");break;case"h3":r=t.includes("header-3");break}o.classList.toggle("active",r),o.setAttribute("aria-pressed",r.toString())})}catch(t){}}show(){this.container&&this.container.classList.remove("overtype-toolbar-hidden")}hide(){this.container&&this.container.classList.add("overtype-toolbar-hidden")}destroy(){this.container&&(this.handleDocumentClick&&document.removeEventListener("click",this.handleDocumentClick),Object.values(this.buttons).forEach(e=>{e._clickHandler&&(e.removeEventListener("click",e._clickHandler),delete e._clickHandler)}),this.container.remove(),this.container=null,this.buttons={})}};var ae=Math.min,U=Math.max,le=Math.round;var O=i=>({x:i,y:i}),Ti={left:"right",right:"left",bottom:"top",top:"bottom"},Hi={start:"end",end:"start"};function ze(i,e,t){return U(i,ae(e,t))}function ce(i,e){return typeof i=="function"?i(e):i}function W(i){return i.split("-")[0]}function pe(i){return i.split("-")[1]}function Fe(i){return i==="x"?"y":"x"}function Ne(i){return i==="y"?"height":"width"}var Mi=new Set(["top","bottom"]);function N(i){return Mi.has(W(i))?"y":"x"}function De(i){return Fe(N(i))}function wt(i,e,t){t===void 0&&(t=!1);let n=pe(i),o=De(i),r=Ne(o),s=o==="x"?n===(t?"end":"start")?"right":"left":n==="start"?"bottom":"top";return e.reference[r]>e.floating[r]&&(s=se(s)),[s,se(s)]}function xt(i){let e=se(i);return[Le(i),e,Le(e)]}function Le(i){return i.replace(/start|end/g,e=>Hi[e])}var yt=["left","right"],bt=["right","left"],Oi=["top","bottom"],Pi=["bottom","top"];function $i(i,e,t){switch(i){case"top":case"bottom":return t?e?bt:yt:e?yt:bt;case"left":case"right":return e?Oi:Pi;default:return[]}}function kt(i,e,t,n){let o=pe(i),r=$i(W(i),t==="start",n);return o&&(r=r.map(s=>s+"-"+o),e&&(r=r.concat(r.map(Le)))),r}function se(i){return i.replace(/left|right|bottom|top/g,e=>Ti[e])}function Ri(i){return{top:0,right:0,bottom:0,left:0,...i}}function St(i){return typeof i!="number"?Ri(i):{top:i,right:i,bottom:i,left:i}}function G(i){let{x:e,y:t,width:n,height:o}=i;return{width:n,height:o,top:t,left:e,right:e+n,bottom:t+o,x:e,y:t}}function Lt(i,e,t){let{reference:n,floating:o}=i,r=N(e),s=De(e),a=Ne(s),l=W(e),p=r==="y",c=n.x+n.width/2-o.width/2,d=n.y+n.height/2-o.height/2,u=n[a]/2-o[a]/2,h;switch(l){case"top":h={x:c,y:n.y-o.height};break;case"bottom":h={x:c,y:n.y+n.height};break;case"right":h={x:n.x+n.width,y:d};break;case"left":h={x:n.x-o.width,y:d};break;default:h={x:n.x,y:n.y}}switch(pe(e)){case"start":h[s]-=u*(t&&p?-1:1);break;case"end":h[s]+=u*(t&&p?-1:1);break}return h}async function Et(i,e){var t;e===void 0&&(e={});let{x:n,y:o,platform:r,rects:s,elements:a,strategy:l}=i,{boundary:p="clippingAncestors",rootBoundary:c="viewport",elementContext:d="floating",altBoundary:u=!1,padding:h=0}=ce(e,i),f=St(h),g=a[u?d==="floating"?"reference":"floating":d],y=G(await r.getClippingRect({element:(t=await(r.isElement==null?void 0:r.isElement(g)))==null||t?g:g.contextElement||await(r.getDocumentElement==null?void 0:r.getDocumentElement(a.floating)),boundary:p,rootBoundary:c,strategy:l})),b=d==="floating"?{x:n,y:o,width:s.floating.width,height:s.floating.height}:s.reference,w=await(r.getOffsetParent==null?void 0:r.getOffsetParent(a.floating)),S=await(r.isElement==null?void 0:r.isElement(w))?await(r.getScale==null?void 0:r.getScale(w))||{x:1,y:1}:{x:1,y:1},k=G(r.convertOffsetParentRelativeRectToViewportRelativeRect?await r.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:b,offsetParent:w,strategy:l}):b);return{top:(y.top-k.top+f.top)/S.y,bottom:(k.bottom-y.bottom+f.bottom)/S.y,left:(y.left-k.left+f.left)/S.x,right:(k.right-y.right+f.right)/S.x}}var Ct=async(i,e,t)=>{let{placement:n="bottom",strategy:o="absolute",middleware:r=[],platform:s}=t,a=r.filter(Boolean),l=await(s.isRTL==null?void 0:s.isRTL(e)),p=await s.getElementRects({reference:i,floating:e,strategy:o}),{x:c,y:d}=Lt(p,n,l),u=n,h={},f=0;for(let g=0;g<a.length;g++){var m;let{name:y,fn:b}=a[g],{x:w,y:S,data:k,reset:E}=await b({x:c,y:d,initialPlacement:n,placement:u,strategy:o,middlewareData:h,rects:p,platform:{...s,detectOverflow:(m=s.detectOverflow)!=null?m:Et},elements:{reference:i,floating:e}});c=w!=null?w:c,d=S!=null?S:d,h={...h,[y]:{...h[y],...k}},E&&f<=50&&(f++,typeof E=="object"&&(E.placement&&(u=E.placement),E.rects&&(p=E.rects===!0?await s.getElementRects({reference:i,floating:e,strategy:o}):E.rects),{x:c,y:d}=Lt(p,u,l)),g=-1)}return{x:c,y:d,placement:u,strategy:o,middlewareData:h}};var _t=function(i){return i===void 0&&(i={}),{name:"flip",options:i,async fn(e){var t,n;let{placement:o,middlewareData:r,rects:s,initialPlacement:a,platform:l,elements:p}=e,{mainAxis:c=!0,crossAxis:d=!0,fallbackPlacements:u,fallbackStrategy:h="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:m=!0,...g}=ce(i,e);if((t=r.arrow)!=null&&t.alignmentOffset)return{};let y=W(o),b=N(a),w=W(a)===a,S=await(l.isRTL==null?void 0:l.isRTL(p.floating)),k=u||(w||!m?[se(a)]:xt(a)),E=f!=="none";!u&&E&&k.push(...kt(a,m,f,S));let me=[a,...k],Y=await l.detectOverflow(e,g),ge=[],ee=((n=r.flip)==null?void 0:n.overflows)||[];if(c&&ge.push(Y[y]),d){let K=wt(o,s,S);ge.push(Y[K[0]],Y[K[1]])}if(ee=[...ee,{placement:o,overflows:ge}],!ge.every(K=>K<=0)){var Ue,We;let K=(((Ue=r.flip)==null?void 0:Ue.index)||0)+1,Pe=me[K];if(Pe&&(!(d==="alignment"?b!==N(Pe):!1)||ee.every(M=>N(M.placement)===b?M.overflows[0]>0:!0)))return{data:{index:K,overflows:ee},reset:{placement:Pe}};let ne=(We=ee.filter(Z=>Z.overflows[0]<=0).sort((Z,M)=>Z.overflows[1]-M.overflows[1])[0])==null?void 0:We.placement;if(!ne)switch(h){case"bestFit":{var qe;let Z=(qe=ee.filter(M=>{if(E){let V=N(M.placement);return V===b||V==="y"}return!0}).map(M=>[M.placement,M.overflows.filter(V=>V>0).reduce((V,pi)=>V+pi,0)]).sort((M,V)=>M[1]-V[1])[0])==null?void 0:qe[0];Z&&(ne=Z);break}case"initialPlacement":ne=a;break}if(o!==ne)return{reset:{placement:ne}}}return{}}}};var Ii=new Set(["left","top"]);async function Bi(i,e){let{placement:t,platform:n,elements:o}=i,r=await(n.isRTL==null?void 0:n.isRTL(o.floating)),s=W(t),a=pe(t),l=N(t)==="y",p=Ii.has(s)?-1:1,c=r&&l?-1:1,d=ce(e,i),{mainAxis:u,crossAxis:h,alignmentAxis:f}=typeof d=="number"?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return a&&typeof f=="number"&&(h=a==="end"?f*-1:f),l?{x:h*c,y:u*p}:{x:u*p,y:h*c}}var At=function(i){return i===void 0&&(i=0),{name:"offset",options:i,async fn(e){var t,n;let{x:o,y:r,placement:s,middlewareData:a}=e,l=await Bi(e,i);return s===((t=a.offset)==null?void 0:t.placement)&&(n=a.arrow)!=null&&n.alignmentOffset?{}:{x:o+l.x,y:r+l.y,data:{...l,placement:s}}}}},Tt=function(i){return i===void 0&&(i={}),{name:"shift",options:i,async fn(e){let{x:t,y:n,placement:o,platform:r}=e,{mainAxis:s=!0,crossAxis:a=!1,limiter:l={fn:y=>{let{x:b,y:w}=y;return{x:b,y:w}}},...p}=ce(i,e),c={x:t,y:n},d=await r.detectOverflow(e,p),u=N(W(o)),h=Fe(u),f=c[h],m=c[u];if(s){let y=h==="y"?"top":"left",b=h==="y"?"bottom":"right",w=f+d[y],S=f-d[b];f=ze(w,f,S)}if(a){let y=u==="y"?"top":"left",b=u==="y"?"bottom":"right",w=m+d[y],S=m-d[b];m=ze(w,m,S)}let g=l.fn({...e,[h]:f,[u]:m});return{...g,data:{x:g.x-t,y:g.y-n,enabled:{[h]:s,[u]:a}}}}}};function Ce(){return typeof window<"u"}function J(i){return Mt(i)?(i.nodeName||"").toLowerCase():"#document"}function A(i){var e;return(i==null||(e=i.ownerDocument)==null?void 0:e.defaultView)||window}function I(i){var e;return(e=(Mt(i)?i.ownerDocument:i.document)||window.document)==null?void 0:e.documentElement}function Mt(i){return Ce()?i instanceof Node||i instanceof A(i).Node:!1}function T(i){return Ce()?i instanceof Element||i instanceof A(i).Element:!1}function P(i){return Ce()?i instanceof HTMLElement||i instanceof A(i).HTMLElement:!1}function Ht(i){return!Ce()||typeof ShadowRoot>"u"?!1:i instanceof ShadowRoot||i instanceof A(i).ShadowRoot}var zi=new Set(["inline","contents"]);function te(i){let{overflow:e,overflowX:t,overflowY:n,display:o}=H(i);return/auto|scroll|overlay|hidden|clip/.test(e+n+t)&&!zi.has(o)}var Fi=new Set(["table","td","th"]);function Ot(i){return Fi.has(J(i))}var Ni=[":popover-open",":modal"];function de(i){return Ni.some(e=>{try{return i.matches(e)}catch(t){return!1}})}var Di=["transform","translate","scale","rotate","perspective"],Vi=["transform","translate","scale","rotate","perspective","filter"],ji=["paint","layout","strict","content"];function _e(i){let e=Ae(),t=T(i)?H(i):i;return Di.some(n=>t[n]?t[n]!=="none":!1)||(t.containerType?t.containerType!=="normal":!1)||!e&&(t.backdropFilter?t.backdropFilter!=="none":!1)||!e&&(t.filter?t.filter!=="none":!1)||Vi.some(n=>(t.willChange||"").includes(n))||ji.some(n=>(t.contain||"").includes(n))}function Pt(i){let e=D(i);for(;P(e)&&!X(e);){if(_e(e))return e;if(de(e))return null;e=D(e)}return null}function Ae(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}var Ui=new Set(["html","body","#document"]);function X(i){return Ui.has(J(i))}function H(i){return A(i).getComputedStyle(i)}function he(i){return T(i)?{scrollLeft:i.scrollLeft,scrollTop:i.scrollTop}:{scrollLeft:i.scrollX,scrollTop:i.scrollY}}function D(i){if(J(i)==="html")return i;let e=i.assignedSlot||i.parentNode||Ht(i)&&i.host||I(i);return Ht(e)?e.host:e}function $t(i){let e=D(i);return X(e)?i.ownerDocument?i.ownerDocument.body:i.body:P(e)&&te(e)?e:$t(e)}function Ee(i,e,t){var n;e===void 0&&(e=[]),t===void 0&&(t=!0);let o=$t(i),r=o===((n=i.ownerDocument)==null?void 0:n.body),s=A(o);if(r){let a=Te(s);return e.concat(s,s.visualViewport||[],te(o)?o:[],a&&t?Ee(a):[])}return e.concat(o,Ee(o,[],t))}function Te(i){return i.parent&&Object.getPrototypeOf(i.parent)?i.frameElement:null}function zt(i){let e=H(i),t=parseFloat(e.width)||0,n=parseFloat(e.height)||0,o=P(i),r=o?i.offsetWidth:t,s=o?i.offsetHeight:n,a=le(t)!==r||le(n)!==s;return a&&(t=r,n=s),{width:t,height:n,$:a}}function Ft(i){return T(i)?i:i.contextElement}function ie(i){let e=Ft(i);if(!P(e))return O(1);let t=e.getBoundingClientRect(),{width:n,height:o,$:r}=zt(e),s=(r?le(t.width):t.width)/n,a=(r?le(t.height):t.height)/o;return(!s||!Number.isFinite(s))&&(s=1),(!a||!Number.isFinite(a))&&(a=1),{x:s,y:a}}var Wi=O(0);function Nt(i){let e=A(i);return!Ae()||!e.visualViewport?Wi:{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}}function qi(i,e,t){return e===void 0&&(e=!1),!t||e&&t!==A(i)?!1:e}function ue(i,e,t,n){e===void 0&&(e=!1),t===void 0&&(t=!1);let o=i.getBoundingClientRect(),r=Ft(i),s=O(1);e&&(n?T(n)&&(s=ie(n)):s=ie(i));let a=qi(r,t,n)?Nt(r):O(0),l=(o.left+a.x)/s.x,p=(o.top+a.y)/s.y,c=o.width/s.x,d=o.height/s.y;if(r){let u=A(r),h=n&&T(n)?A(n):n,f=u,m=Te(f);for(;m&&n&&h!==f;){let g=ie(m),y=m.getBoundingClientRect(),b=H(m),w=y.left+(m.clientLeft+parseFloat(b.paddingLeft))*g.x,S=y.top+(m.clientTop+parseFloat(b.paddingTop))*g.y;l*=g.x,p*=g.y,c*=g.x,d*=g.y,l+=w,p+=S,f=A(m),m=Te(f)}}return G({width:c,height:d,x:l,y:p})}function He(i,e){let t=he(i).scrollLeft;return e?e.left+t:ue(I(i)).left+t}function Dt(i,e){let t=i.getBoundingClientRect(),n=t.left+e.scrollLeft-He(i,t),o=t.top+e.scrollTop;return{x:n,y:o}}function Ki(i){let{elements:e,rect:t,offsetParent:n,strategy:o}=i,r=o==="fixed",s=I(n),a=e?de(e.floating):!1;if(n===s||a&&r)return t;let l={scrollLeft:0,scrollTop:0},p=O(1),c=O(0),d=P(n);if((d||!d&&!r)&&((J(n)!=="body"||te(s))&&(l=he(n)),P(n))){let h=ue(n);p=ie(n),c.x=h.x+n.clientLeft,c.y=h.y+n.clientTop}let u=s&&!d&&!r?Dt(s,l):O(0);return{width:t.width*p.x,height:t.height*p.y,x:t.x*p.x-l.scrollLeft*p.x+c.x+u.x,y:t.y*p.y-l.scrollTop*p.y+c.y+u.y}}function Zi(i){return Array.from(i.getClientRects())}function Qi(i){let e=I(i),t=he(i),n=i.ownerDocument.body,o=U(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),r=U(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight),s=-t.scrollLeft+He(i),a=-t.scrollTop;return H(n).direction==="rtl"&&(s+=U(e.clientWidth,n.clientWidth)-o),{width:o,height:r,x:s,y:a}}var Rt=25;function Gi(i,e){let t=A(i),n=I(i),o=t.visualViewport,r=n.clientWidth,s=n.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;let c=Ae();(!c||c&&e==="fixed")&&(a=o.offsetLeft,l=o.offsetTop)}let p=He(n);if(p<=0){let c=n.ownerDocument,d=c.body,u=getComputedStyle(d),h=c.compatMode==="CSS1Compat"&&parseFloat(u.marginLeft)+parseFloat(u.marginRight)||0,f=Math.abs(n.clientWidth-d.clientWidth-h);f<=Rt&&(r-=f)}else p<=Rt&&(r+=p);return{width:r,height:s,x:a,y:l}}var Ji=new Set(["absolute","fixed"]);function Xi(i,e){let t=ue(i,!0,e==="fixed"),n=t.top+i.clientTop,o=t.left+i.clientLeft,r=P(i)?ie(i):O(1),s=i.clientWidth*r.x,a=i.clientHeight*r.y,l=o*r.x,p=n*r.y;return{width:s,height:a,x:l,y:p}}function It(i,e,t){let n;if(e==="viewport")n=Gi(i,t);else if(e==="document")n=Qi(I(i));else if(T(e))n=Xi(e,t);else{let o=Nt(i);n={x:e.x-o.x,y:e.y-o.y,width:e.width,height:e.height}}return G(n)}function Vt(i,e){let t=D(i);return t===e||!T(t)||X(t)?!1:H(t).position==="fixed"||Vt(t,e)}function Yi(i,e){let t=e.get(i);if(t)return t;let n=Ee(i,[],!1).filter(a=>T(a)&&J(a)!=="body"),o=null,r=H(i).position==="fixed",s=r?D(i):i;for(;T(s)&&!X(s);){let a=H(s),l=_e(s);!l&&a.position==="fixed"&&(o=null),(r?!l&&!o:!l&&a.position==="static"&&!!o&&Ji.has(o.position)||te(s)&&!l&&Vt(i,s))?n=n.filter(c=>c!==s):o=a,s=D(s)}return e.set(i,n),n}function en(i){let{element:e,boundary:t,rootBoundary:n,strategy:o}=i,s=[...t==="clippingAncestors"?de(e)?[]:Yi(e,this._c):[].concat(t),n],a=s[0],l=s.reduce((p,c)=>{let d=It(e,c,o);return p.top=U(d.top,p.top),p.right=ae(d.right,p.right),p.bottom=ae(d.bottom,p.bottom),p.left=U(d.left,p.left),p},It(e,a,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function tn(i){let{width:e,height:t}=zt(i);return{width:e,height:t}}function nn(i,e,t){let n=P(e),o=I(e),r=t==="fixed",s=ue(i,!0,r,e),a={scrollLeft:0,scrollTop:0},l=O(0);function p(){l.x=He(o)}if(n||!n&&!r)if((J(e)!=="body"||te(o))&&(a=he(e)),n){let h=ue(e,!0,r,e);l.x=h.x+e.clientLeft,l.y=h.y+e.clientTop}else o&&p();r&&!n&&o&&p();let c=o&&!n&&!r?Dt(o,a):O(0),d=s.left+a.scrollLeft-l.x-c.x,u=s.top+a.scrollTop-l.y-c.y;return{x:d,y:u,width:s.width,height:s.height}}function Ve(i){return H(i).position==="static"}function Bt(i,e){if(!P(i)||H(i).position==="fixed")return null;if(e)return e(i);let t=i.offsetParent;return I(i)===t&&(t=t.ownerDocument.body),t}function jt(i,e){let t=A(i);if(de(i))return t;if(!P(i)){let o=D(i);for(;o&&!X(o);){if(T(o)&&!Ve(o))return o;o=D(o)}return t}let n=Bt(i,e);for(;n&&Ot(n)&&Ve(n);)n=Bt(n,e);return n&&X(n)&&Ve(n)&&!_e(n)?t:n||Pt(i)||t}var on=async function(i){let e=this.getOffsetParent||jt,t=this.getDimensions,n=await t(i.floating);return{reference:nn(i.reference,await e(i.floating),i.strategy),floating:{x:0,y:0,width:n.width,height:n.height}}};function rn(i){return H(i).direction==="rtl"}var sn={convertOffsetParentRelativeRectToViewportRelativeRect:Ki,getDocumentElement:I,getClippingRect:en,getOffsetParent:jt,getElementRects:on,getClientRects:Zi,getDimensions:tn,getScale:ie,isElement:T,isRTL:rn};var Ut=At;var Wt=Tt,qt=_t;var Kt=(i,e,t)=>{let n=new Map,o={platform:sn,...t},r={...o.platform,_c:n};return Ct(i,e,{...o,platform:r})};var Me=class{constructor(e){this.editor=e,this.tooltip=null,this.currentLink=null,this.hideTimeout=null,this.visibilityChangeHandler=null,this.isTooltipHovered=!1,this.init()}init(){this.createTooltip(),this.editor.textarea.addEventListener("selectionchange",()=>this.checkCursorPosition()),this.editor.textarea.addEventListener("keyup",e=>{(e.key.includes("Arrow")||e.key==="Home"||e.key==="End")&&this.checkCursorPosition()}),this.editor.textarea.addEventListener("input",()=>this.hide()),this.editor.textarea.addEventListener("scroll",()=>{this.currentLink&&this.positionTooltip(this.currentLink)}),this.editor.textarea.addEventListener("blur",()=>{this.isTooltipHovered||this.hide()}),this.visibilityChangeHandler=()=>{document.hidden&&this.hide()},document.addEventListener("visibilitychange",this.visibilityChangeHandler),this.tooltip.addEventListener("mouseenter",()=>{this.isTooltipHovered=!0,this.cancelHide()}),this.tooltip.addEventListener("mouseleave",()=>{this.isTooltipHovered=!1,this.scheduleHide()})}createTooltip(){this.tooltip=document.createElement("div"),this.tooltip.className="overtype-link-tooltip",this.tooltip.innerHTML=`
64
+ `;)p++;let c=r.slice(l,p);x("insertHeader",`Current line (before): "${c}"`);let d=c.match(/^(#{1,6})\s*/),h=d?d[1].length:0,u=d?d[0].length:0;x("insertHeader","Existing header check:"),x("insertHeader",` - Match: ${d?`"${d[0]}"`:"none"}`),x("insertHeader",` - Existing level: ${h}`),x("insertHeader",` - Existing prefix length: ${u}`),x("insertHeader",` - Target level: ${e}`);let f=t&&h===e;x("insertHeader",`Should toggle OFF: ${f} (toggle=${t}, existingLevel=${h}, level=${e})`);let m=Ee(n,g=>{let y=g.value.slice(g.selectionStart,g.selectionEnd);x("insertHeader",`Line in operation: "${y}"`);let w=y.replace(/^#{1,6}\s*/,"");x("insertHeader",`Cleaned line: "${w}"`);let b;return f?(x("insertHeader","ACTION: Toggling OFF - removing header"),b=w):h>0?(x("insertHeader",`ACTION: Replacing H${h} with H${e}`),b=o.prefix+w):(x("insertHeader","ACTION: Adding new header"),b=o.prefix+w),x("insertHeader",`New line: "${b}"`),{text:b,selectionStart:g.selectionStart,selectionEnd:g.selectionEnd}},{prefix:o.prefix,adjustSelection:(g,y,w,b)=>{if(x("insertHeader","Adjusting selection:"),x("insertHeader",` - isRemoving param: ${g}`),x("insertHeader",` - shouldToggleOff: ${f}`),x("insertHeader",` - selStart: ${y}, selEnd: ${w}`),x("insertHeader",` - lineStartPos: ${b}`),f){let L=Math.max(y-u,b);return x("insertHeader",` - Removing header, adjusting by -${u}`),{start:L,end:y===w?L:Math.max(w-u,b)}}else if(u>0){let L=o.prefix.length-u;return x("insertHeader",` - Replacing header, adjusting by ${L}`),{start:y+L,end:w+L}}else return x("insertHeader",` - Adding header, adjusting by +${o.prefix.length}`),{start:y+o.prefix.length,end:w+o.prefix.length}}});x("insertHeader",`Final result: text="${m.text}", cursor=${m.selectionStart}-${m.selectionEnd}`),x("insertHeader","============ END ============"),N(n,m)}function Pe(n){ce(n,1,!0)}function $e(n){ce(n,2,!0)}function Re(n){ce(n,3,!0)}function Ie(n){return Lt(n)}function St(n,e){return In(n,e)}function Et(n,e={}){Bn(n,e)}function _t(n,e){if(!n||n.disabled||n.readOnly)return;let t=B(e),i;if(t.multiline){let o=n.value.slice(n.selectionStart,n.selectionEnd);Qe(o)?i=Ge(n,t):i=te(n,t)}else i=te(n,t);N(n,i)}var Fn={toggleBold:_e,toggleItalic:Ce,toggleCode:Ae,insertLink:Te,toggleBulletList:He,toggleNumberedList:Me,toggleQuote:Oe,toggleTaskList:le,insertHeader:ce,toggleH1:Pe,toggleH2:$e,toggleH3:Re,getActiveFormats:Ie,hasFormat:St,expandSelection:Et,applyCustomFormat:_t,preserveSelection:xt,setUndoMethod:wt,setDebugMode:vt,getDebugMode:Je};var Be=class{constructor(e,t={}){this.editor=e,this.container=null,this.buttons={},this.toolbarButtons=t.toolbarButtons||[]}create(){this.container=document.createElement("div"),this.container.className="overtype-toolbar",this.container.setAttribute("role","toolbar"),this.container.setAttribute("aria-label","Formatting toolbar"),this.toolbarButtons.forEach(e=>{if(e.name==="separator"){let t=this.createSeparator();this.container.appendChild(t)}else{let t=this.createButton(e);this.buttons[e.name]=t,this.container.appendChild(t)}}),this.editor.container.insertBefore(this.container,this.editor.wrapper)}createSeparator(){let e=document.createElement("div");return e.className="overtype-toolbar-separator",e.setAttribute("role","separator"),e}createButton(e){let t=document.createElement("button");return t.className="overtype-toolbar-button",t.type="button",t.setAttribute("data-button",e.name),t.title=e.title||"",t.setAttribute("aria-label",e.title||e.name),t.innerHTML=this.sanitizeSVG(e.icon||""),e.name==="viewMode"?(t.classList.add("has-dropdown"),t.dataset.dropdown="true",t.addEventListener("click",i=>{i.preventDefault(),this.toggleViewModeDropdown(t)}),t):(t._clickHandler=i=>{i.preventDefault();let o=e.actionId||e.name;this.editor.performAction(o,i)},t.addEventListener("click",t._clickHandler),t)}async handleAction(e){if(e&&typeof e=="object"&&typeof e.action=="function"){this.editor.textarea.focus();try{return await e.action({editor:this.editor,getValue:()=>this.editor.getValue(),setValue:t=>this.editor.setValue(t),event:null}),!0}catch(t){return console.error(`Action "${e.name}" error:`,t),this.editor.wrapper.dispatchEvent(new CustomEvent("button-error",{detail:{buttonName:e.name,error:t}})),!1}}return typeof e=="string"?this.editor.performAction(e,null):!1}sanitizeSVG(e){return typeof e!="string"?"":e.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"").replace(/\son\w+\s*=\s*["'][^"']*["']/gi,"").replace(/\son\w+\s*=\s*[^\s>]*/gi,"")}toggleViewModeDropdown(e){let t=document.querySelector(".overtype-dropdown-menu");if(t){t.remove(),e.classList.remove("dropdown-active");return}e.classList.add("dropdown-active");let i=this.createViewModeDropdown(e),o=e.getBoundingClientRect();i.style.position="absolute",i.style.top=`${o.bottom+5}px`,i.style.left=`${o.left}px`,document.body.appendChild(i),this.handleDocumentClick=r=>{!i.contains(r.target)&&!e.contains(r.target)&&(i.remove(),e.classList.remove("dropdown-active"),document.removeEventListener("click",this.handleDocumentClick))},setTimeout(()=>{document.addEventListener("click",this.handleDocumentClick)},0)}createViewModeDropdown(e){let t=document.createElement("div");t.className="overtype-dropdown-menu";let i=[{id:"normal",label:"Normal Edit",icon:"\u2713"},{id:"plain",label:"Plain Textarea",icon:"\u2713"},{id:"preview",label:"Preview Mode",icon:"\u2713"}],o=this.editor.container.dataset.mode||"normal";return i.forEach(r=>{let s=document.createElement("button");if(s.className="overtype-dropdown-item",s.type="button",s.textContent=r.label,r.id===o){s.classList.add("active"),s.setAttribute("aria-current","true");let a=document.createElement("span");a.className="overtype-dropdown-icon",a.textContent=r.icon,s.prepend(a)}s.addEventListener("click",a=>{switch(a.preventDefault(),r.id){case"plain":this.editor.showPlainTextarea();break;case"preview":this.editor.showPreviewMode();break;case"normal":default:this.editor.showNormalEditMode();break}t.remove(),e.classList.remove("dropdown-active"),document.removeEventListener("click",this.handleDocumentClick)}),t.appendChild(s)}),t}updateButtonStates(){var e;try{let t=((e=Ie)==null?void 0:e(this.editor.textarea,this.editor.textarea.selectionStart))||[];Object.entries(this.buttons).forEach(([i,o])=>{if(i==="viewMode")return;let r=!1;switch(i){case"bold":r=t.includes("bold");break;case"italic":r=t.includes("italic");break;case"code":r=!1;break;case"bulletList":r=t.includes("bullet-list");break;case"orderedList":r=t.includes("numbered-list");break;case"taskList":r=t.includes("task-list");break;case"quote":r=t.includes("quote");break;case"h1":r=t.includes("header");break;case"h2":r=t.includes("header-2");break;case"h3":r=t.includes("header-3");break}o.classList.toggle("active",r),o.setAttribute("aria-pressed",r.toString())})}catch(t){}}show(){this.container&&this.container.classList.remove("overtype-toolbar-hidden")}hide(){this.container&&this.container.classList.add("overtype-toolbar-hidden")}destroy(){this.container&&(this.handleDocumentClick&&document.removeEventListener("click",this.handleDocumentClick),Object.values(this.buttons).forEach(e=>{e._clickHandler&&(e.removeEventListener("click",e._clickHandler),delete e._clickHandler)}),this.container.remove(),this.container=null,this.buttons={})}};var he=Math.min,U=Math.max,ue=Math.round;var P=n=>({x:n,y:n}),zn={left:"right",right:"left",bottom:"top",top:"bottom"},Nn={start:"end",end:"start"};function Ye(n,e,t){return U(n,he(e,t))}function fe(n,e){return typeof n=="function"?n(e):n}function W(n){return n.split("-")[0]}function me(n){return n.split("-")[1]}function et(n){return n==="x"?"y":"x"}function tt(n){return n==="y"?"height":"width"}var Dn=new Set(["top","bottom"]);function D(n){return Dn.has(W(n))?"y":"x"}function nt(n){return et(D(n))}function Tt(n,e,t){t===void 0&&(t=!1);let i=me(n),o=nt(n),r=tt(o),s=o==="x"?i===(t?"end":"start")?"right":"left":i==="start"?"bottom":"top";return e.reference[r]>e.floating[r]&&(s=de(s)),[s,de(s)]}function Ht(n){let e=de(n);return[Fe(n),e,Fe(e)]}function Fe(n){return n.replace(/start|end/g,e=>Nn[e])}var Ct=["left","right"],At=["right","left"],jn=["top","bottom"],Vn=["bottom","top"];function Un(n,e,t){switch(n){case"top":case"bottom":return t?e?At:Ct:e?Ct:At;case"left":case"right":return e?jn:Vn;default:return[]}}function Mt(n,e,t,i){let o=me(n),r=Un(W(n),t==="start",i);return o&&(r=r.map(s=>s+"-"+o),e&&(r=r.concat(r.map(Fe)))),r}function de(n){return n.replace(/left|right|bottom|top/g,e=>zn[e])}function Wn(n){return{top:0,right:0,bottom:0,left:0,...n}}function Ot(n){return typeof n!="number"?Wn(n):{top:n,right:n,bottom:n,left:n}}function J(n){let{x:e,y:t,width:i,height:o}=n;return{width:i,height:o,top:t,left:e,right:e+i,bottom:t+o,x:e,y:t}}function Pt(n,e,t){let{reference:i,floating:o}=n,r=D(e),s=nt(e),a=tt(s),l=W(e),p=r==="y",c=i.x+i.width/2-o.width/2,d=i.y+i.height/2-o.height/2,h=i[a]/2-o[a]/2,u;switch(l){case"top":u={x:c,y:i.y-o.height};break;case"bottom":u={x:c,y:i.y+i.height};break;case"right":u={x:i.x+i.width,y:d};break;case"left":u={x:i.x-o.width,y:d};break;default:u={x:i.x,y:i.y}}switch(me(e)){case"start":u[s]-=h*(t&&p?-1:1);break;case"end":u[s]+=h*(t&&p?-1:1);break}return u}async function $t(n,e){var t;e===void 0&&(e={});let{x:i,y:o,platform:r,rects:s,elements:a,strategy:l}=n,{boundary:p="clippingAncestors",rootBoundary:c="viewport",elementContext:d="floating",altBoundary:h=!1,padding:u=0}=fe(e,n),f=Ot(u),g=a[h?d==="floating"?"reference":"floating":d],y=J(await r.getClippingRect({element:(t=await(r.isElement==null?void 0:r.isElement(g)))==null||t?g:g.contextElement||await(r.getDocumentElement==null?void 0:r.getDocumentElement(a.floating)),boundary:p,rootBoundary:c,strategy:l})),w=d==="floating"?{x:i,y:o,width:s.floating.width,height:s.floating.height}:s.reference,b=await(r.getOffsetParent==null?void 0:r.getOffsetParent(a.floating)),L=await(r.isElement==null?void 0:r.isElement(b))?await(r.getScale==null?void 0:r.getScale(b))||{x:1,y:1}:{x:1,y:1},k=J(r.convertOffsetParentRelativeRectToViewportRelativeRect?await r.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:w,offsetParent:b,strategy:l}):w);return{top:(y.top-k.top+f.top)/L.y,bottom:(k.bottom-y.bottom+f.bottom)/L.y,left:(y.left-k.left+f.left)/L.x,right:(k.right-y.right+f.right)/L.x}}var Rt=async(n,e,t)=>{let{placement:i="bottom",strategy:o="absolute",middleware:r=[],platform:s}=t,a=r.filter(Boolean),l=await(s.isRTL==null?void 0:s.isRTL(e)),p=await s.getElementRects({reference:n,floating:e,strategy:o}),{x:c,y:d}=Pt(p,i,l),h=i,u={},f=0;for(let g=0;g<a.length;g++){var m;let{name:y,fn:w}=a[g],{x:b,y:L,data:k,reset:E}=await w({x:c,y:d,initialPlacement:i,placement:h,strategy:o,middlewareData:u,rects:p,platform:{...s,detectOverflow:(m=s.detectOverflow)!=null?m:$t},elements:{reference:n,floating:e}});c=b!=null?b:c,d=L!=null?L:d,u={...u,[y]:{...u[y],...k}},E&&f<=50&&(f++,typeof E=="object"&&(E.placement&&(h=E.placement),E.rects&&(p=E.rects===!0?await s.getElementRects({reference:n,floating:e,strategy:o}):E.rects),{x:c,y:d}=Pt(p,h,l)),g=-1)}return{x:c,y:d,placement:h,strategy:o,middlewareData:u}};var It=function(n){return n===void 0&&(n={}),{name:"flip",options:n,async fn(e){var t,i;let{placement:o,middlewareData:r,rects:s,initialPlacement:a,platform:l,elements:p}=e,{mainAxis:c=!0,crossAxis:d=!0,fallbackPlacements:h,fallbackStrategy:u="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:m=!0,...g}=fe(n,e);if((t=r.arrow)!=null&&t.alignmentOffset)return{};let y=W(o),w=D(a),b=W(a)===a,L=await(l.isRTL==null?void 0:l.isRTL(p.floating)),k=h||(b||!m?[de(a)]:Ht(a)),E=f!=="none";!h&&E&&k.push(...Mt(a,m,f,L));let be=[a,...k],Y=await l.detectOverflow(e,g),xe=[],ee=((i=r.flip)==null?void 0:i.overflows)||[];if(c&&xe.push(Y[y]),d){let K=Tt(o,s,L);xe.push(Y[K[0]],Y[K[1]])}if(ee=[...ee,{placement:o,overflows:xe}],!xe.every(K=>K<=0)){var rt,st;let K=(((rt=r.flip)==null?void 0:rt.index)||0)+1,Ke=be[K];if(Ke&&(!(d==="alignment"?w!==D(Ke):!1)||ee.every(O=>D(O.placement)===w?O.overflows[0]>0:!0)))return{data:{index:K,overflows:ee},reset:{placement:Ke}};let oe=(st=ee.filter(Z=>Z.overflows[0]<=0).sort((Z,O)=>Z.overflows[1]-O.overflows[1])[0])==null?void 0:st.placement;if(!oe)switch(u){case"bestFit":{var at;let Z=(at=ee.filter(O=>{if(E){let V=D(O.placement);return V===w||V==="y"}return!0}).map(O=>[O.placement,O.overflows.filter(V=>V>0).reduce((V,bn)=>V+bn,0)]).sort((O,V)=>O[1]-V[1])[0])==null?void 0:at[0];Z&&(oe=Z);break}case"initialPlacement":oe=a;break}if(o!==oe)return{reset:{placement:oe}}}return{}}}};var qn=new Set(["left","top"]);async function Kn(n,e){let{placement:t,platform:i,elements:o}=n,r=await(i.isRTL==null?void 0:i.isRTL(o.floating)),s=W(t),a=me(t),l=D(t)==="y",p=qn.has(s)?-1:1,c=r&&l?-1:1,d=fe(e,n),{mainAxis:h,crossAxis:u,alignmentAxis:f}=typeof d=="number"?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return a&&typeof f=="number"&&(u=a==="end"?f*-1:f),l?{x:u*c,y:h*p}:{x:h*p,y:u*c}}var Bt=function(n){return n===void 0&&(n=0),{name:"offset",options:n,async fn(e){var t,i;let{x:o,y:r,placement:s,middlewareData:a}=e,l=await Kn(e,n);return s===((t=a.offset)==null?void 0:t.placement)&&(i=a.arrow)!=null&&i.alignmentOffset?{}:{x:o+l.x,y:r+l.y,data:{...l,placement:s}}}}},Ft=function(n){return n===void 0&&(n={}),{name:"shift",options:n,async fn(e){let{x:t,y:i,placement:o,platform:r}=e,{mainAxis:s=!0,crossAxis:a=!1,limiter:l={fn:y=>{let{x:w,y:b}=y;return{x:w,y:b}}},...p}=fe(n,e),c={x:t,y:i},d=await r.detectOverflow(e,p),h=D(W(o)),u=et(h),f=c[u],m=c[h];if(s){let y=u==="y"?"top":"left",w=u==="y"?"bottom":"right",b=f+d[y],L=f-d[w];f=Ye(b,f,L)}if(a){let y=h==="y"?"top":"left",w=h==="y"?"bottom":"right",b=m+d[y],L=m-d[w];m=Ye(b,m,L)}let g=l.fn({...e,[u]:f,[h]:m});return{...g,data:{x:g.x-t,y:g.y-i,enabled:{[u]:s,[h]:a}}}}}};function Ne(){return typeof window<"u"}function X(n){return Nt(n)?(n.nodeName||"").toLowerCase():"#document"}function A(n){var e;return(n==null||(e=n.ownerDocument)==null?void 0:e.defaultView)||window}function F(n){var e;return(e=(Nt(n)?n.ownerDocument:n.document)||window.document)==null?void 0:e.documentElement}function Nt(n){return Ne()?n instanceof Node||n instanceof A(n).Node:!1}function H(n){return Ne()?n instanceof Element||n instanceof A(n).Element:!1}function $(n){return Ne()?n instanceof HTMLElement||n instanceof A(n).HTMLElement:!1}function zt(n){return!Ne()||typeof ShadowRoot>"u"?!1:n instanceof ShadowRoot||n instanceof A(n).ShadowRoot}var Zn=new Set(["inline","contents"]);function ne(n){let{overflow:e,overflowX:t,overflowY:i,display:o}=M(n);return/auto|scroll|overlay|hidden|clip/.test(e+i+t)&&!Zn.has(o)}var Qn=new Set(["table","td","th"]);function Dt(n){return Qn.has(X(n))}var Jn=[":popover-open",":modal"];function ge(n){return Jn.some(e=>{try{return n.matches(e)}catch(t){return!1}})}var Xn=["transform","translate","scale","rotate","perspective"],Gn=["transform","translate","scale","rotate","perspective","filter"],Yn=["paint","layout","strict","content"];function De(n){let e=je(),t=H(n)?M(n):n;return Xn.some(i=>t[i]?t[i]!=="none":!1)||(t.containerType?t.containerType!=="normal":!1)||!e&&(t.backdropFilter?t.backdropFilter!=="none":!1)||!e&&(t.filter?t.filter!=="none":!1)||Gn.some(i=>(t.willChange||"").includes(i))||Yn.some(i=>(t.contain||"").includes(i))}function jt(n){let e=j(n);for(;$(e)&&!G(e);){if(De(e))return e;if(ge(e))return null;e=j(e)}return null}function je(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}var ei=new Set(["html","body","#document"]);function G(n){return ei.has(X(n))}function M(n){return A(n).getComputedStyle(n)}function ve(n){return H(n)?{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}:{scrollLeft:n.scrollX,scrollTop:n.scrollY}}function j(n){if(X(n)==="html")return n;let e=n.assignedSlot||n.parentNode||zt(n)&&n.host||F(n);return zt(e)?e.host:e}function Vt(n){let e=j(n);return G(e)?n.ownerDocument?n.ownerDocument.body:n.body:$(e)&&ne(e)?e:Vt(e)}function ze(n,e,t){var i;e===void 0&&(e=[]),t===void 0&&(t=!0);let o=Vt(n),r=o===((i=n.ownerDocument)==null?void 0:i.body),s=A(o);if(r){let a=Ve(s);return e.concat(s,s.visualViewport||[],ne(o)?o:[],a&&t?ze(a):[])}return e.concat(o,ze(o,[],t))}function Ve(n){return n.parent&&Object.getPrototypeOf(n.parent)?n.frameElement:null}function Kt(n){let e=M(n),t=parseFloat(e.width)||0,i=parseFloat(e.height)||0,o=$(n),r=o?n.offsetWidth:t,s=o?n.offsetHeight:i,a=ue(t)!==r||ue(i)!==s;return a&&(t=r,i=s),{width:t,height:i,$:a}}function Zt(n){return H(n)?n:n.contextElement}function ie(n){let e=Zt(n);if(!$(e))return P(1);let t=e.getBoundingClientRect(),{width:i,height:o,$:r}=Kt(e),s=(r?ue(t.width):t.width)/i,a=(r?ue(t.height):t.height)/o;return(!s||!Number.isFinite(s))&&(s=1),(!a||!Number.isFinite(a))&&(a=1),{x:s,y:a}}var ti=P(0);function Qt(n){let e=A(n);return!je()||!e.visualViewport?ti:{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}}function ni(n,e,t){return e===void 0&&(e=!1),!t||e&&t!==A(n)?!1:e}function ye(n,e,t,i){e===void 0&&(e=!1),t===void 0&&(t=!1);let o=n.getBoundingClientRect(),r=Zt(n),s=P(1);e&&(i?H(i)&&(s=ie(i)):s=ie(n));let a=ni(r,t,i)?Qt(r):P(0),l=(o.left+a.x)/s.x,p=(o.top+a.y)/s.y,c=o.width/s.x,d=o.height/s.y;if(r){let h=A(r),u=i&&H(i)?A(i):i,f=h,m=Ve(f);for(;m&&i&&u!==f;){let g=ie(m),y=m.getBoundingClientRect(),w=M(m),b=y.left+(m.clientLeft+parseFloat(w.paddingLeft))*g.x,L=y.top+(m.clientTop+parseFloat(w.paddingTop))*g.y;l*=g.x,p*=g.y,c*=g.x,d*=g.y,l+=b,p+=L,f=A(m),m=Ve(f)}}return J({width:c,height:d,x:l,y:p})}function Ue(n,e){let t=ve(n).scrollLeft;return e?e.left+t:ye(F(n)).left+t}function Jt(n,e){let t=n.getBoundingClientRect(),i=t.left+e.scrollLeft-Ue(n,t),o=t.top+e.scrollTop;return{x:i,y:o}}function ii(n){let{elements:e,rect:t,offsetParent:i,strategy:o}=n,r=o==="fixed",s=F(i),a=e?ge(e.floating):!1;if(i===s||a&&r)return t;let l={scrollLeft:0,scrollTop:0},p=P(1),c=P(0),d=$(i);if((d||!d&&!r)&&((X(i)!=="body"||ne(s))&&(l=ve(i)),$(i))){let u=ye(i);p=ie(i),c.x=u.x+i.clientLeft,c.y=u.y+i.clientTop}let h=s&&!d&&!r?Jt(s,l):P(0);return{width:t.width*p.x,height:t.height*p.y,x:t.x*p.x-l.scrollLeft*p.x+c.x+h.x,y:t.y*p.y-l.scrollTop*p.y+c.y+h.y}}function oi(n){return Array.from(n.getClientRects())}function ri(n){let e=F(n),t=ve(n),i=n.ownerDocument.body,o=U(e.scrollWidth,e.clientWidth,i.scrollWidth,i.clientWidth),r=U(e.scrollHeight,e.clientHeight,i.scrollHeight,i.clientHeight),s=-t.scrollLeft+Ue(n),a=-t.scrollTop;return M(i).direction==="rtl"&&(s+=U(e.clientWidth,i.clientWidth)-o),{width:o,height:r,x:s,y:a}}var Ut=25;function si(n,e){let t=A(n),i=F(n),o=t.visualViewport,r=i.clientWidth,s=i.clientHeight,a=0,l=0;if(o){r=o.width,s=o.height;let c=je();(!c||c&&e==="fixed")&&(a=o.offsetLeft,l=o.offsetTop)}let p=Ue(i);if(p<=0){let c=i.ownerDocument,d=c.body,h=getComputedStyle(d),u=c.compatMode==="CSS1Compat"&&parseFloat(h.marginLeft)+parseFloat(h.marginRight)||0,f=Math.abs(i.clientWidth-d.clientWidth-u);f<=Ut&&(r-=f)}else p<=Ut&&(r+=p);return{width:r,height:s,x:a,y:l}}var ai=new Set(["absolute","fixed"]);function li(n,e){let t=ye(n,!0,e==="fixed"),i=t.top+n.clientTop,o=t.left+n.clientLeft,r=$(n)?ie(n):P(1),s=n.clientWidth*r.x,a=n.clientHeight*r.y,l=o*r.x,p=i*r.y;return{width:s,height:a,x:l,y:p}}function Wt(n,e,t){let i;if(e==="viewport")i=si(n,t);else if(e==="document")i=ri(F(n));else if(H(e))i=li(e,t);else{let o=Qt(n);i={x:e.x-o.x,y:e.y-o.y,width:e.width,height:e.height}}return J(i)}function Xt(n,e){let t=j(n);return t===e||!H(t)||G(t)?!1:M(t).position==="fixed"||Xt(t,e)}function ci(n,e){let t=e.get(n);if(t)return t;let i=ze(n,[],!1).filter(a=>H(a)&&X(a)!=="body"),o=null,r=M(n).position==="fixed",s=r?j(n):n;for(;H(s)&&!G(s);){let a=M(s),l=De(s);!l&&a.position==="fixed"&&(o=null),(r?!l&&!o:!l&&a.position==="static"&&!!o&&ai.has(o.position)||ne(s)&&!l&&Xt(n,s))?i=i.filter(c=>c!==s):o=a,s=j(s)}return e.set(n,i),i}function pi(n){let{element:e,boundary:t,rootBoundary:i,strategy:o}=n,s=[...t==="clippingAncestors"?ge(e)?[]:ci(e,this._c):[].concat(t),i],a=s[0],l=s.reduce((p,c)=>{let d=Wt(e,c,o);return p.top=U(d.top,p.top),p.right=he(d.right,p.right),p.bottom=he(d.bottom,p.bottom),p.left=U(d.left,p.left),p},Wt(e,a,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function di(n){let{width:e,height:t}=Kt(n);return{width:e,height:t}}function hi(n,e,t){let i=$(e),o=F(e),r=t==="fixed",s=ye(n,!0,r,e),a={scrollLeft:0,scrollTop:0},l=P(0);function p(){l.x=Ue(o)}if(i||!i&&!r)if((X(e)!=="body"||ne(o))&&(a=ve(e)),i){let u=ye(e,!0,r,e);l.x=u.x+e.clientLeft,l.y=u.y+e.clientTop}else o&&p();r&&!i&&o&&p();let c=o&&!i&&!r?Jt(o,a):P(0),d=s.left+a.scrollLeft-l.x-c.x,h=s.top+a.scrollTop-l.y-c.y;return{x:d,y:h,width:s.width,height:s.height}}function it(n){return M(n).position==="static"}function qt(n,e){if(!$(n)||M(n).position==="fixed")return null;if(e)return e(n);let t=n.offsetParent;return F(n)===t&&(t=t.ownerDocument.body),t}function Gt(n,e){let t=A(n);if(ge(n))return t;if(!$(n)){let o=j(n);for(;o&&!G(o);){if(H(o)&&!it(o))return o;o=j(o)}return t}let i=qt(n,e);for(;i&&Dt(i)&&it(i);)i=qt(i,e);return i&&G(i)&&it(i)&&!De(i)?t:i||jt(n)||t}var ui=async function(n){let e=this.getOffsetParent||Gt,t=this.getDimensions,i=await t(n.floating);return{reference:hi(n.reference,await e(n.floating),n.strategy),floating:{x:0,y:0,width:i.width,height:i.height}}};function fi(n){return M(n).direction==="rtl"}var mi={convertOffsetParentRelativeRectToViewportRelativeRect:ii,getDocumentElement:F,getClippingRect:pi,getOffsetParent:Gt,getElementRects:ui,getClientRects:oi,getDimensions:di,getScale:ie,isElement:H,isRTL:fi};var Yt=Bt;var en=Ft,tn=It;var nn=(n,e,t)=>{let i=new Map,o={platform:mi,...t},r={...o.platform,_c:i};return Rt(n,e,{...o,platform:r})};var We=class{constructor(e){this.editor=e,this.tooltip=null,this.currentLink=null,this.hideTimeout=null,this.visibilityChangeHandler=null,this.isTooltipHovered=!1,this.init()}init(){this.createTooltip(),this.editor.textarea.addEventListener("selectionchange",()=>this.checkCursorPosition()),this.editor.textarea.addEventListener("keyup",e=>{(e.key.includes("Arrow")||e.key==="Home"||e.key==="End")&&this.checkCursorPosition()}),this.editor.textarea.addEventListener("input",()=>this.hide()),this.editor.textarea.addEventListener("scroll",()=>{this.currentLink&&this.positionTooltip(this.currentLink)}),this.editor.textarea.addEventListener("blur",()=>{this.isTooltipHovered||this.hide()}),this.visibilityChangeHandler=()=>{document.hidden&&this.hide()},document.addEventListener("visibilitychange",this.visibilityChangeHandler),this.tooltip.addEventListener("mouseenter",()=>{this.isTooltipHovered=!0,this.cancelHide()}),this.tooltip.addEventListener("mouseleave",()=>{this.isTooltipHovered=!1,this.scheduleHide()})}createTooltip(){this.tooltip=document.createElement("div"),this.tooltip.className="overtype-link-tooltip",this.tooltip.innerHTML=`
905
65
  <span style="display: flex; align-items: center; gap: 6px;">
906
66
  <svg width="12" height="12" viewBox="0 0 20 20" fill="currentColor" style="flex-shrink: 0;">
907
67
  <path d="M11 3a1 1 0 100 2h2.586l-6.293 6.293a1 1 0 101.414 1.414L15 6.414V9a1 1 0 102 0V4a1 1 0 00-1-1h-5z"></path>
@@ -909,79 +69,26 @@ ${a}`:r;if(p){let k=i.value[i.selectionStart-1];i.selectionStart!==0&&k!=null&&!
909
69
  </svg>
910
70
  <span class="overtype-link-tooltip-url"></span>
911
71
  </span>
912
- `,this.tooltip.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),this.currentLink&&(window.open(this.currentLink.url,"_blank"),this.hide())}),this.editor.container.appendChild(this.tooltip)}checkCursorPosition(){let e=this.editor.textarea.selectionStart,t=this.editor.textarea.value,n=this.findLinkAtPosition(t,e);n?(!this.currentLink||this.currentLink.url!==n.url||this.currentLink.index!==n.index)&&this.show(n):this.scheduleHide()}findLinkAtPosition(e,t){let n=/\[([^\]]+)\]\(([^)]+)\)/g,o,r=0;for(;(o=n.exec(e))!==null;){let s=o.index,a=o.index+o[0].length;if(t>=s&&t<=a)return{text:o[1],url:o[2],index:r,start:s,end:a};r++}return null}async show(e){this.currentLink=e,this.cancelHide();let t=this.tooltip.querySelector(".overtype-link-tooltip-url");t.textContent=e.url,await this.positionTooltip(e),this.currentLink===e&&this.tooltip.classList.add("visible")}async positionTooltip(e){let t=this.findAnchorElement(e.index);if(!t)return;let n=t.getBoundingClientRect();if(!(n.width===0||n.height===0))try{let{x:o,y:r}=await Kt(t,this.tooltip,{strategy:"fixed",placement:"bottom",middleware:[Ut(8),Wt({padding:8}),qt()]});Object.assign(this.tooltip.style,{left:`${o}px`,top:`${r}px`,position:"fixed"})}catch(o){console.warn("Floating UI positioning failed:",o)}}findAnchorElement(e){return this.editor.preview.querySelector(`a[style*="--link-${e}"]`)}hide(){this.tooltip.classList.remove("visible"),this.currentLink=null,this.isTooltipHovered=!1}scheduleHide(){this.cancelHide(),this.hideTimeout=setTimeout(()=>this.hide(),300)}cancelHide(){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=null)}destroy(){this.cancelHide(),this.visibilityChangeHandler&&(document.removeEventListener("visibilitychange",this.visibilityChangeHandler),this.visibilityChangeHandler=null),this.tooltip&&this.tooltip.parentNode&&this.tooltip.parentNode.removeChild(this.tooltip),this.tooltip=null,this.currentLink=null,this.isTooltipHovered=!1}};var Zt=`<svg viewBox="0 0 18 18">
913
- <path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5,4H9.5A2.5,2.5,0,0,1,12,6.5v0A2.5,2.5,0,0,1,9.5,9H5A0,0,0,0,1,5,9V4A0,0,0,0,1,5,4Z"></path>
914
- <path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5,9h5.5A2.5,2.5,0,0,1,13,11.5v0A2.5,2.5,0,0,1,10.5,14H5a0,0,0,0,1,0,0V9A0,0,0,0,1,5,9Z"></path>
915
- </svg>`,Qt=`<svg viewBox="0 0 18 18">
916
- <line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="7" x2="13" y1="4" y2="4"></line>
917
- <line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="5" x2="11" y1="14" y2="14"></line>
918
- <line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="8" x2="10" y1="14" y2="4"></line>
919
- </svg>`,Gt=`<svg viewBox="0 0 18 18">
920
- <path fill="currentColor" d="M10,4V14a1,1,0,0,1-2,0V10H3v4a1,1,0,0,1-2,0V4A1,1,0,0,1,3,4V8H8V4a1,1,0,0,1,2,0Zm6.06787,9.209H14.98975V7.59863a.54085.54085,0,0,0-.605-.60547h-.62744a1.01119,1.01119,0,0,0-.748.29688L11.645,8.56641a.5435.5435,0,0,0-.022.8584l.28613.30762a.53861.53861,0,0,0,.84717.0332l.09912-.08789a1.2137,1.2137,0,0,0,.2417-.35254h.02246s-.01123.30859-.01123.60547V13.209H12.041a.54085.54085,0,0,0-.605.60547v.43945a.54085.54085,0,0,0,.605.60547h4.02686a.54085.54085,0,0,0,.605-.60547v-.43945A.54085.54085,0,0,0,16.06787,13.209Z"></path>
921
- </svg>`,Jt=`<svg viewBox="0 0 18 18">
922
- <path fill="currentColor" d="M16.73975,13.81445v.43945a.54085.54085,0,0,1-.605.60547H11.855a.58392.58392,0,0,1-.64893-.60547V14.0127c0-2.90527,3.39941-3.42187,3.39941-4.55469a.77675.77675,0,0,0-.84717-.78125,1.17684,1.17684,0,0,0-.83594.38477c-.2749.26367-.561.374-.85791.13184l-.4292-.34082c-.30811-.24219-.38525-.51758-.1543-.81445a2.97155,2.97155,0,0,1,2.45361-1.17676,2.45393,2.45393,0,0,1,2.68408,2.40918c0,2.45312-3.1792,2.92676-3.27832,3.93848h2.79443A.54085.54085,0,0,1,16.73975,13.81445ZM9,3A.99974.99974,0,0,0,8,4V8H3V4A1,1,0,0,0,1,4V14a1,1,0,0,0,2,0V10H8v4a1,1,0,0,0,2,0V4A.99974.99974,0,0,0,9,3Z"></path>
923
- </svg>`,Xt=`<svg viewBox="0 0 18 18">
924
- <path fill="currentColor" d="M16.65186,12.30664a2.6742,2.6742,0,0,1-2.915,2.68457,3.96592,3.96592,0,0,1-2.25537-.6709.56007.56007,0,0,1-.13232-.83594L11.64648,13c.209-.34082.48389-.36328.82471-.1543a2.32654,2.32654,0,0,0,1.12256.33008c.71484,0,1.12207-.35156,1.12207-.78125,0-.61523-.61621-.86816-1.46338-.86816H13.2085a.65159.65159,0,0,1-.68213-.41895l-.05518-.10937a.67114.67114,0,0,1,.14307-.78125l.71533-.86914a8.55289,8.55289,0,0,1,.68213-.7373V8.58887a3.93913,3.93913,0,0,1-.748.05469H11.9873a.54085.54085,0,0,1-.605-.60547V7.59863a.54085.54085,0,0,1,.605-.60547h3.75146a.53773.53773,0,0,1,.60547.59375v.17676a1.03723,1.03723,0,0,1-.27539.748L14.74854,10.0293A2.31132,2.31132,0,0,1,16.65186,12.30664ZM9,3A.99974.99974,0,0,0,8,4V8H3V4A1,1,0,0,0,1,4V14a1,1,0,0,0,2,0V10H8v4a1,1,0,0,0,2,0V4A.99974.99974,0,0,0,9,3Z"></path>
925
- </svg>`,Yt=`<svg viewBox="0 0 18 18">
926
- <line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="7" x2="11" y1="7" y2="11"></line>
927
- <path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8.9,4.577a3.476,3.476,0,0,1,.36,4.679A3.476,3.476,0,0,1,4.577,8.9C3.185,7.5,2.035,6.4,4.217,4.217S7.5,3.185,8.9,4.577Z"></path>
928
- <path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13.423,9.1a3.476,3.476,0,0,0-4.679-.36,3.476,3.476,0,0,0,.36,4.679c1.392,1.392,2.5,2.542,4.679.36S14.815,10.5,13.423,9.1Z"></path>
929
- </svg>`,ei=`<svg viewBox="0 0 18 18">
930
- <polyline stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" points="5 7 3 9 5 11"></polyline>
931
- <polyline stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" points="13 7 15 9 13 11"></polyline>
932
- <line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="10" x2="8" y1="5" y2="13"></line>
933
- </svg>`,ti=`<svg viewBox="0 0 18 18">
934
- <line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="6" x2="15" y1="4" y2="4"></line>
935
- <line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="6" x2="15" y1="9" y2="9"></line>
936
- <line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="6" x2="15" y1="14" y2="14"></line>
937
- <line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="3" x2="3" y1="4" y2="4"></line>
938
- <line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="3" x2="3" y1="9" y2="9"></line>
939
- <line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="3" x2="3" y1="14" y2="14"></line>
940
- </svg>`,ii=`<svg viewBox="0 0 18 18">
941
- <line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="7" x2="15" y1="4" y2="4"></line>
942
- <line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="7" x2="15" y1="9" y2="9"></line>
943
- <line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="7" x2="15" y1="14" y2="14"></line>
944
- <line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" x1="2.5" x2="4.5" y1="5.5" y2="5.5"></line>
945
- <path fill="currentColor" d="M3.5,6A0.5,0.5,0,0,1,3,5.5V3.085l-0.276.138A0.5,0.5,0,0,1,2.053,3c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,4,2.5v3A0.5,0.5,0,0,1,3.5,6Z"></path>
946
- <path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="M4.5,10.5h-2c0-.234,1.85-1.076,1.85-2.234A0.959,0.959,0,0,0,2.5,8.156"></path>
947
- <path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="M2.5,14.846a0.959,0.959,0,0,0,1.85-.109A0.7,0.7,0,0,0,3.75,14a0.688,0.688,0,0,0,.6-0.736,0.959,0.959,0,0,0-1.85-.109"></path>
948
- </svg>`,ni=`<svg viewBox="2 2 20 20">
949
- <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 10.8182L9 10.8182C8.80222 10.8182 8.60888 10.7649 8.44443 10.665C8.27998 10.5651 8.15181 10.4231 8.07612 10.257C8.00043 10.0909 7.98063 9.90808 8.01922 9.73174C8.0578 9.55539 8.15304 9.39341 8.29289 9.26627C8.43275 9.13913 8.61093 9.05255 8.80491 9.01747C8.99889 8.98239 9.19996 9.00039 9.38268 9.0692C9.56541 9.13801 9.72159 9.25453 9.83147 9.40403C9.94135 9.55353 10 9.72929 10 9.90909L10 12.1818C10 12.664 9.78929 13.1265 9.41421 13.4675C9.03914 13.8084 8.53043 14 8 14"></path>
950
- <path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M16 10.8182L15 10.8182C14.8022 10.8182 14.6089 10.7649 14.4444 10.665C14.28 10.5651 14.1518 10.4231 14.0761 10.257C14.0004 10.0909 13.9806 9.90808 14.0192 9.73174C14.0578 9.55539 14.153 9.39341 14.2929 9.26627C14.4327 9.13913 14.6109 9.05255 14.8049 9.01747C14.9989 8.98239 15.2 9.00039 15.3827 9.0692C15.5654 9.13801 15.7216 9.25453 15.8315 9.40403C15.9414 9.55353 16 9.72929 16 9.90909L16 12.1818C16 12.664 15.7893 13.1265 15.4142 13.4675C15.0391 13.8084 14.5304 14 14 14"></path>
951
- </svg>`,oi=`<svg viewBox="0 0 18 18">
952
- <line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="8" x2="16" y1="4" y2="4"></line>
953
- <line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="8" x2="16" y1="9" y2="9"></line>
954
- <line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="8" x2="16" y1="14" y2="14"></line>
955
- <rect stroke="currentColor" fill="none" stroke-width="1.5" x="2" y="3" width="3" height="3" rx="0.5"></rect>
956
- <rect stroke="currentColor" fill="none" stroke-width="1.5" x="2" y="13" width="3" height="3" rx="0.5"></rect>
957
- <polyline stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" points="2.65 9.5 3.5 10.5 5 8.5"></polyline>
958
- </svg>`,ri=`<svg viewBox="0 0 18 18">
959
- <path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2.25 12.375v1.688A1.688 1.688 0 0 0 3.938 15.75h10.124a1.688 1.688 0 0 0 1.688-1.688V12.375"></path>
960
- <path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5.063 6.188L9 2.25l3.938 3.938"></path>
961
- <path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 2.25v10.125"></path>
962
- </svg>`,si=`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
963
- <path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" fill="none"></path>
964
- <circle cx="12" cy="12" r="3" fill="none"></circle>
965
- </svg>`;var L={bold:{name:"bold",actionId:"toggleBold",icon:Zt,title:"Bold (Ctrl+B)",action:({editor:i})=>{st(i.textarea),i.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},italic:{name:"italic",actionId:"toggleItalic",icon:Qt,title:"Italic (Ctrl+I)",action:({editor:i})=>{at(i.textarea),i.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},code:{name:"code",actionId:"toggleCode",icon:ei,title:"Inline Code",action:({editor:i})=>{lt(i.textarea),i.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},separator:{name:"separator"},link:{name:"link",actionId:"insertLink",icon:Yt,title:"Insert Link",action:({editor:i})=>{ct(i.textarea),i.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},h1:{name:"h1",actionId:"toggleH1",icon:Gt,title:"Heading 1",action:({editor:i})=>{ut(i.textarea),i.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},h2:{name:"h2",actionId:"toggleH2",icon:Jt,title:"Heading 2",action:({editor:i})=>{ft(i.textarea),i.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},h3:{name:"h3",actionId:"toggleH3",icon:Xt,title:"Heading 3",action:({editor:i})=>{mt(i.textarea),i.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},bulletList:{name:"bulletList",actionId:"toggleBulletList",icon:ti,title:"Bullet List",action:({editor:i})=>{pt(i.textarea),i.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},orderedList:{name:"orderedList",actionId:"toggleNumberedList",icon:ii,title:"Numbered List",action:({editor:i})=>{dt(i.textarea),i.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},taskList:{name:"taskList",actionId:"toggleTaskList",icon:oi,title:"Task List",action:({editor:i})=>{Ie&&(Ie(i.textarea),i.textarea.dispatchEvent(new Event("input",{bubbles:!0})))}},quote:{name:"quote",actionId:"toggleQuote",icon:ni,title:"Quote",action:({editor:i})=>{ht(i.textarea),i.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},upload:{name:"upload",actionId:"uploadFile",icon:ri,title:"Upload File",action:({editor:i})=>{var t,n;if(!((t=i.options.fileUpload)!=null&&t.enabled))return;let e=document.createElement("input");e.type="file",e.multiple=!0,((n=i.options.fileUpload.mimeTypes)==null?void 0:n.length)>0&&(e.accept=i.options.fileUpload.mimeTypes.join(",")),e.onchange=()=>{var r;if(!((r=e.files)!=null&&r.length))return;let o=new DataTransfer;for(let s of e.files)o.items.add(s);i._handleDataTransfer(o)},e.click()}},viewMode:{name:"viewMode",icon:si,title:"View mode"}},fe=[L.bold,L.italic,L.code,L.separator,L.link,L.separator,L.h1,L.h2,L.h3,L.separator,L.bulletList,L.orderedList,L.taskList,L.separator,L.quote,L.separator,L.viewMode];function je(i){let e={};return(i||[]).forEach(t=>{if(!t||t.name==="separator")return;let n=t.actionId||t.name;t.action&&(e[n]=t.action)}),e}function ai(i){let e=i||fe;return Array.isArray(e)?e.map(t=>({name:(t==null?void 0:t.name)||null,actionId:(t==null?void 0:t.actionId)||(t==null?void 0:t.name)||null,icon:(t==null?void 0:t.icon)||null,title:(t==null?void 0:t.title)||null})):null}function ln(i,e){let t=ai(i),n=ai(e);if(t===null||n===null)return t!==n;if(t.length!==n.length)return!0;for(let o=0;o<t.length;o++){let r=t[o],s=n[o];if(r.name!==s.name||r.actionId!==s.actionId||r.icon!==s.icon||r.title!==s.title)return!0}return!1}var v=class v{constructor(e,t={}){let n;if(typeof e=="string"){if(n=document.querySelectorAll(e),n.length===0)throw new Error(`No elements found for selector: ${e}`);n=Array.from(n)}else if(e instanceof Element)n=[e];else if(e instanceof NodeList)n=Array.from(e);else if(Array.isArray(e))n=e;else throw new Error("Invalid target: must be selector string, Element, NodeList, or Array");return n.map(r=>{if(r.overTypeInstance)return r.overTypeInstance.reinit(t),r.overTypeInstance;let s=Object.create(v.prototype);return s._init(r,t),r.overTypeInstance=s,v.instances.set(r,s),s})}_init(e,t={}){this.element=e,this.instanceTheme=t.theme||null,this.options=this._mergeOptions(t),this.instanceId=++v.instanceCount,this.initialized=!1,v.injectStyles(),v.initGlobalListeners();let n=e.querySelector(".overtype-container"),o=e.querySelector(".overtype-wrapper");n||o?this._recoverFromDOM(n,o):this._buildFromScratch(),this.instanceTheme==="auto"&&this.setTheme("auto"),this.shortcuts=new oe(this),this._rebuildActionsMap(),this.linkTooltip=new Me(this),requestAnimationFrame(()=>{requestAnimationFrame(()=>{this.textarea.scrollTop=this.preview.scrollTop,this.textarea.scrollLeft=this.preview.scrollLeft})}),this.initialized=!0,this.options.onChange&&this._notifyChange()}_mergeOptions(e){let t={fontSize:"14px",lineHeight:1.6,fontFamily:'"SF Mono", SFMono-Regular, Menlo, Monaco, "Cascadia Code", Consolas, "Roboto Mono", "Noto Sans Mono", "Droid Sans Mono", "Ubuntu Mono", "DejaVu Sans Mono", "Liberation Mono", "Courier New", Courier, monospace',padding:"16px",mobile:{fontSize:"16px",padding:"12px",lineHeight:1.5},textareaProps:{},autofocus:!1,autoResize:!1,minHeight:"100px",maxHeight:null,placeholder:"Start typing...",value:"",onChange:null,onKeydown:null,onRender:null,showActiveLineRaw:!1,showStats:!1,toolbar:!1,toolbarButtons:null,statsFormatter:null,smartLists:!0,codeHighlighter:null,spellcheck:!1},{theme:n,colors:o,...r}=e;return{...t,...r}}_recoverFromDOM(e,t){if(e&&e.classList.contains("overtype-container"))this.container=e,this.wrapper=e.querySelector(".overtype-wrapper");else if(t){this.wrapper=t,this.container=document.createElement("div"),this.container.className="overtype-container";let n=this.instanceTheme||v.currentTheme||B,o=typeof n=="string"?n:n.name;if(o&&this.container.setAttribute("data-theme",o),this.instanceTheme){let r=typeof this.instanceTheme=="string"?$(this.instanceTheme):this.instanceTheme;if(r&&r.colors){let s=Q(r.colors);this.container.style.cssText+=s}}t.parentNode.insertBefore(this.container,t),this.container.appendChild(t)}if(!this.wrapper){e&&e.remove(),t&&t.remove(),this._buildFromScratch();return}if(this.textarea=this.wrapper.querySelector(".overtype-input"),this.preview=this.wrapper.querySelector(".overtype-preview"),!this.textarea||!this.preview){this.container.remove(),this._buildFromScratch();return}this.wrapper._instance=this,this._applyInstanceCSSVars(),this._configureTextarea(),this._applyOptions()}_buildFromScratch(){let e=this._extractContent();this.element.innerHTML="",this._createDOM(),(e||this.options.value)&&this.setValue(e||this.options.value),this._applyOptions()}_extractContent(){let e=this.element.querySelector(".overtype-input");return e?e.value:this.element.textContent||""}_createDOM(){this.container=document.createElement("div"),this.container.className="overtype-container";let e=this.instanceTheme||v.currentTheme||B,t=typeof e=="string"?e:e.name;if(t&&this.container.setAttribute("data-theme",t),this.instanceTheme){let n=typeof this.instanceTheme=="string"?$(this.instanceTheme):this.instanceTheme;if(n&&n.colors){let o=Q(n.colors);this.container.style.cssText+=o}}this.wrapper=document.createElement("div"),this.wrapper.className="overtype-wrapper",this._applyInstanceCSSVars(),this.wrapper._instance=this,this.textarea=document.createElement("textarea"),this.textarea.className="overtype-input",this.textarea.placeholder=this.options.placeholder,this._configureTextarea(),this.options.textareaProps&&Object.entries(this.options.textareaProps).forEach(([n,o])=>{n==="className"||n==="class"?this.textarea.className+=" "+o:n==="style"&&typeof o=="object"?Object.assign(this.textarea.style,o):this.textarea.setAttribute(n,o)}),this.preview=document.createElement("div"),this.preview.className="overtype-preview",this.preview.setAttribute("aria-hidden","true"),this.placeholderEl=document.createElement("div"),this.placeholderEl.className="overtype-placeholder",this.placeholderEl.setAttribute("aria-hidden","true"),this.placeholderEl.textContent=this.options.placeholder,this.wrapper.appendChild(this.textarea),this.wrapper.appendChild(this.preview),this.wrapper.appendChild(this.placeholderEl),this.container.appendChild(this.wrapper),this.options.showStats&&(this.statsBar=document.createElement("div"),this.statsBar.className="overtype-stats",this.container.appendChild(this.statsBar),this._updateStats()),this.element.appendChild(this.container),this.options.autoResize?this._setupAutoResize():this.container.classList.remove("overtype-auto-resize")}_configureTextarea(){this.textarea.setAttribute("autocomplete","off"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("spellcheck",String(this.options.spellcheck)),this.textarea.setAttribute("data-gramm","false"),this.textarea.setAttribute("data-gramm_editor","false"),this.textarea.setAttribute("data-enable-grammarly","false")}_createToolbar(){var t;let e=this.options.toolbarButtons||fe;if((t=this.options.fileUpload)!=null&&t.enabled&&!e.some(n=>(n==null?void 0:n.name)==="upload")){let n=e.findIndex(o=>(o==null?void 0:o.name)==="viewMode");n!==-1?(e=[...e],e.splice(n,0,L.separator,L.upload)):e=[...e,L.separator,L.upload]}this.toolbar=new Se(this,{toolbarButtons:e}),this.toolbar.create(),this._toolbarSelectionListener=()=>{this.toolbar&&this.toolbar.updateButtonStates()},this._toolbarInputListener=()=>{this.toolbar&&this.toolbar.updateButtonStates()},this.textarea.addEventListener("selectionchange",this._toolbarSelectionListener),this.textarea.addEventListener("input",this._toolbarInputListener)}_cleanupToolbarListeners(){this._toolbarSelectionListener&&(this.textarea.removeEventListener("selectionchange",this._toolbarSelectionListener),this._toolbarSelectionListener=null),this._toolbarInputListener&&(this.textarea.removeEventListener("input",this._toolbarInputListener),this._toolbarInputListener=null)}_rebuildActionsMap(){var e;this.actionsById=je(fe),this.options.toolbarButtons&&Object.assign(this.actionsById,je(this.options.toolbarButtons)),(e=this.options.fileUpload)!=null&&e.enabled&&Object.assign(this.actionsById,je([L.upload]))}_applyInstanceCSSVars(){this.wrapper&&(this.options.fontSize&&this.wrapper.style.setProperty("--instance-font-size",this.options.fontSize),this.options.lineHeight&&this.wrapper.style.setProperty("--instance-line-height",String(this.options.lineHeight)),this.options.padding&&this.wrapper.style.setProperty("--instance-padding",this.options.padding),this.options.fontFamily&&this.wrapper.style.setProperty("--instance-font-family",this.options.fontFamily))}_applyOptions(){this._applyInstanceCSSVars(),this.options.autofocus&&this.textarea.focus(),this.options.autoResize?this.container.classList.contains("overtype-auto-resize")?this._updateAutoHeight():this._setupAutoResize():this.container.classList.remove("overtype-auto-resize"),this.options.toolbar&&!this.toolbar?this._createToolbar():!this.options.toolbar&&this.toolbar&&(this._cleanupToolbarListeners(),this.toolbar.destroy(),this.toolbar=null),this.placeholderEl&&(this.placeholderEl.textContent=this.options.placeholder),this.options.fileUpload&&!this.fileUploadInitialized?this._initFileUpload():!this.options.fileUpload&&this.fileUploadInitialized&&this._destroyFileUpload(),this.updatePreview()}_initFileUpload(){let e=this.options.fileUpload;if(!(!e||!e.enabled)){if(e.maxSize=e.maxSize||10*1024*1024,e.mimeTypes=e.mimeTypes||[],e.batch=e.batch||!1,!e.onInsertFile||typeof e.onInsertFile!="function"){console.warn("OverType: fileUpload.onInsertFile callback is required for file uploads.");return}this._fileUploadCounter=0,this._boundHandleFilePaste=this._handleFilePaste.bind(this),this._boundHandleFileDrop=this._handleFileDrop.bind(this),this._boundHandleDragOver=this._handleDragOver.bind(this),this.textarea.addEventListener("paste",this._boundHandleFilePaste),this.textarea.addEventListener("drop",this._boundHandleFileDrop),this.textarea.addEventListener("dragover",this._boundHandleDragOver),this.fileUploadInitialized=!0}}_handleFilePaste(e){var t,n;(n=(t=e==null?void 0:e.clipboardData)==null?void 0:t.files)!=null&&n.length&&(e.preventDefault(),this._handleDataTransfer(e.clipboardData))}_handleFileDrop(e){var t,n;(n=(t=e==null?void 0:e.dataTransfer)==null?void 0:t.files)!=null&&n.length&&(e.preventDefault(),this._handleDataTransfer(e.dataTransfer))}_handleDataTransfer(e){let t=[];for(let n of e.files){if(n.size>this.options.fileUpload.maxSize||this.options.fileUpload.mimeTypes.length>0&&!this.options.fileUpload.mimeTypes.includes(n.type))continue;let o=++this._fileUploadCounter,s=`${n.type.startsWith("image/")?"!":""}[Uploading ${n.name} (#${o})...]()`;if(this.insertAtCursor(`${s}
966
- `),this.options.fileUpload.batch){t.push({file:n,placeholder:s});continue}this.options.fileUpload.onInsertFile(n).then(a=>{this.textarea.value=this.textarea.value.replace(s,a),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))},a=>{console.error("OverType: File upload failed",a),this.textarea.value=this.textarea.value.replace(s,"[Upload failed]()"),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))})}this.options.fileUpload.batch&&t.length>0&&this.options.fileUpload.onInsertFile(t.map(n=>n.file)).then(n=>{(Array.isArray(n)?n:[n]).forEach((r,s)=>{this.textarea.value=this.textarea.value.replace(t[s].placeholder,r)}),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))},n=>{console.error("OverType: File upload failed",n),t.forEach(({placeholder:o})=>{this.textarea.value=this.textarea.value.replace(o,"[Upload failed]()")}),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))})}_handleDragOver(e){e.preventDefault()}_destroyFileUpload(){this.textarea.removeEventListener("paste",this._boundHandleFilePaste),this.textarea.removeEventListener("drop",this._boundHandleFileDrop),this.textarea.removeEventListener("dragover",this._boundHandleDragOver),this._boundHandleFilePaste=null,this._boundHandleFileDrop=null,this._boundHandleDragOver=null,this.fileUploadInitialized=!1}insertAtCursor(e){let t=this.textarea.selectionStart,n=this.textarea.selectionEnd,o=!1;try{o=document.execCommand("insertText",!1,e)}catch(r){}if(!o){let r=this.textarea.value.slice(0,t),s=this.textarea.value.slice(n);this.textarea.value=r+e+s,this.textarea.setSelectionRange(t+e.length,t+e.length)}this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}updatePreview(){let e=this.textarea.value,t=this.textarea.selectionStart,n=this._getCurrentLine(e,t),o=this.container.dataset.mode==="preview",r=C.parse(e,n,this.options.showActiveLineRaw,this.options.codeHighlighter,o);this.preview.innerHTML=r,this.placeholderEl&&(this.placeholderEl.style.display=e?"none":""),this._applyCodeBlockBackgrounds(),this.options.showStats&&this.statsBar&&this._updateStats(),this.options.onRender&&this.options.onRender(this.preview,o?"preview":"normal",this)}_notifyChange(){!this.options.onChange||!this.initialized||this.options.onChange(this.textarea.value,this)}_applyCodeBlockBackgrounds(){let e=this.preview.querySelectorAll(".code-fence");for(let t=0;t<e.length-1;t+=2){let n=e[t],o=e[t+1],r=n.parentElement,s=o.parentElement;!r||!s||(n.style.display="block",o.style.display="block",r.classList.add("code-block-line"),s.classList.add("code-block-line"))}}_getCurrentLine(e,t){return e.substring(0,t).split(`
967
- `).length-1}handleInput(e){this.updatePreview(),this._notifyChange()}handleKeydown(e){if(e.key==="Tab"){let n=this.textarea.selectionStart,o=this.textarea.selectionEnd,r=this.textarea.value;if(e.shiftKey&&n===o)return;if(e.preventDefault(),n!==o&&e.shiftKey){let s=r.substring(0,n),a=r.substring(n,o),l=r.substring(o),c=a.split(`
72
+ `,this.tooltip.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation(),this.currentLink&&(window.open(this.currentLink.url,"_blank"),this.hide())}),this.editor.container.appendChild(this.tooltip)}checkCursorPosition(){let e=this.editor.textarea.selectionStart,t=this.editor.textarea.value,i=this.findLinkAtPosition(t,e);i?(!this.currentLink||this.currentLink.url!==i.url||this.currentLink.index!==i.index)&&this.show(i):this.scheduleHide()}findLinkAtPosition(e,t){let i=/\[([^\]]+)\]\(([^)]+)\)/g,o,r=0;for(;(o=i.exec(e))!==null;){let s=o.index,a=o.index+o[0].length;if(t>=s&&t<=a)return{text:o[1],url:o[2],index:r,start:s,end:a};r++}return null}async show(e){this.currentLink=e,this.cancelHide();let t=this.tooltip.querySelector(".overtype-link-tooltip-url");t.textContent=e.url,await this.positionTooltip(e),this.currentLink===e&&this.tooltip.classList.add("visible")}async positionTooltip(e){let t=this.findAnchorElement(e.index);if(!t)return;let i=t.getBoundingClientRect();if(!(i.width===0||i.height===0))try{let{x:o,y:r}=await nn(t,this.tooltip,{strategy:"fixed",placement:"bottom",middleware:[Yt(8),en({padding:8}),tn()]});Object.assign(this.tooltip.style,{left:`${o}px`,top:`${r}px`,position:"fixed"})}catch(o){console.warn("Floating UI positioning failed:",o)}}findAnchorElement(e){return this.editor.preview.querySelector(`a[style*="--link-${e}"]`)}hide(){this.tooltip.classList.remove("visible"),this.currentLink=null,this.isTooltipHovered=!1}scheduleHide(){this.cancelHide(),this.hideTimeout=setTimeout(()=>this.hide(),300)}cancelHide(){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=null)}destroy(){this.cancelHide(),this.visibilityChangeHandler&&(document.removeEventListener("visibilitychange",this.visibilityChangeHandler),this.visibilityChangeHandler=null),this.tooltip&&this.tooltip.parentNode&&this.tooltip.parentNode.removeChild(this.tooltip),this.tooltip=null,this.currentLink=null,this.isTooltipHovered=!1}};var on='<svg viewBox="0 0 18 18"><path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5,4H9.5A2.5,2.5,0,0,1,12,6.5v0A2.5,2.5,0,0,1,9.5,9H5A0,0,0,0,1,5,9V4A0,0,0,0,1,5,4Z"></path><path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5,9h5.5A2.5,2.5,0,0,1,13,11.5v0A2.5,2.5,0,0,1,10.5,14H5a0,0,0,0,1,0,0V9A0,0,0,0,1,5,9Z"></path></svg>',rn='<svg viewBox="0 0 18 18"><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="7" x2="13" y1="4" y2="4"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="5" x2="11" y1="14" y2="14"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="8" x2="10" y1="14" y2="4"></line></svg>',sn='<svg viewBox="0 0 18 18"><path fill="currentColor" d="M10,4V14a1,1,0,0,1-2,0V10H3v4a1,1,0,0,1-2,0V4A1,1,0,0,1,3,4V8H8V4a1,1,0,0,1,2,0Zm6.06787,9.209H14.98975V7.59863a.54085.54085,0,0,0-.605-.60547h-.62744a1.01119,1.01119,0,0,0-.748.29688L11.645,8.56641a.5435.5435,0,0,0-.022.8584l.28613.30762a.53861.53861,0,0,0,.84717.0332l.09912-.08789a1.2137,1.2137,0,0,0,.2417-.35254h.02246s-.01123.30859-.01123.60547V13.209H12.041a.54085.54085,0,0,0-.605.60547v.43945a.54085.54085,0,0,0,.605.60547h4.02686a.54085.54085,0,0,0,.605-.60547v-.43945A.54085.54085,0,0,0,16.06787,13.209Z"></path></svg>',an='<svg viewBox="0 0 18 18"><path fill="currentColor" d="M16.73975,13.81445v.43945a.54085.54085,0,0,1-.605.60547H11.855a.58392.58392,0,0,1-.64893-.60547V14.0127c0-2.90527,3.39941-3.42187,3.39941-4.55469a.77675.77675,0,0,0-.84717-.78125,1.17684,1.17684,0,0,0-.83594.38477c-.2749.26367-.561.374-.85791.13184l-.4292-.34082c-.30811-.24219-.38525-.51758-.1543-.81445a2.97155,2.97155,0,0,1,2.45361-1.17676,2.45393,2.45393,0,0,1,2.68408,2.40918c0,2.45312-3.1792,2.92676-3.27832,3.93848h2.79443A.54085.54085,0,0,1,16.73975,13.81445ZM9,3A.99974.99974,0,0,0,8,4V8H3V4A1,1,0,0,0,1,4V14a1,1,0,0,0,2,0V10H8v4a1,1,0,0,0,2,0V4A.99974.99974,0,0,0,9,3Z"></path></svg>',ln='<svg viewBox="0 0 18 18"><path fill="currentColor" d="M16.65186,12.30664a2.6742,2.6742,0,0,1-2.915,2.68457,3.96592,3.96592,0,0,1-2.25537-.6709.56007.56007,0,0,1-.13232-.83594L11.64648,13c.209-.34082.48389-.36328.82471-.1543a2.32654,2.32654,0,0,0,1.12256.33008c.71484,0,1.12207-.35156,1.12207-.78125,0-.61523-.61621-.86816-1.46338-.86816H13.2085a.65159.65159,0,0,1-.68213-.41895l-.05518-.10937a.67114.67114,0,0,1,.14307-.78125l.71533-.86914a8.55289,8.55289,0,0,1,.68213-.7373V8.58887a3.93913,3.93913,0,0,1-.748.05469H11.9873a.54085.54085,0,0,1-.605-.60547V7.59863a.54085.54085,0,0,1,.605-.60547h3.75146a.53773.53773,0,0,1,.60547.59375v.17676a1.03723,1.03723,0,0,1-.27539.748L14.74854,10.0293A2.31132,2.31132,0,0,1,16.65186,12.30664ZM9,3A.99974.99974,0,0,0,8,4V8H3V4A1,1,0,0,0,1,4V14a1,1,0,0,0,2,0V10H8v4a1,1,0,0,0,2,0V4A.99974.99974,0,0,0,9,3Z"></path></svg>',cn='<svg viewBox="0 0 18 18"><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="7" x2="11" y1="7" y2="11"></line><path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8.9,4.577a3.476,3.476,0,0,1,.36,4.679A3.476,3.476,0,0,1,4.577,8.9C3.185,7.5,2.035,6.4,4.217,4.217S7.5,3.185,8.9,4.577Z"></path><path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13.423,9.1a3.476,3.476,0,0,0-4.679-.36,3.476,3.476,0,0,0,.36,4.679c1.392,1.392,2.5,2.542,4.679.36S14.815,10.5,13.423,9.1Z"></path></svg>',pn='<svg viewBox="0 0 18 18"><polyline stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" points="5 7 3 9 5 11"></polyline><polyline stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" points="13 7 15 9 13 11"></polyline><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="10" x2="8" y1="5" y2="13"></line></svg>',dn='<svg viewBox="0 0 18 18"><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="6" x2="15" y1="4" y2="4"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="6" x2="15" y1="9" y2="9"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="6" x2="15" y1="14" y2="14"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="3" x2="3" y1="4" y2="4"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="3" x2="3" y1="9" y2="9"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="3" x2="3" y1="14" y2="14"></line></svg>',hn='<svg viewBox="0 0 18 18"><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="7" x2="15" y1="4" y2="4"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="7" x2="15" y1="9" y2="9"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="7" x2="15" y1="14" y2="14"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" x1="2.5" x2="4.5" y1="5.5" y2="5.5"></line><path fill="currentColor" d="M3.5,6A0.5,0.5,0,0,1,3,5.5V3.085l-0.276.138A0.5,0.5,0,0,1,2.053,3c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,4,2.5v3A0.5,0.5,0,0,1,3.5,6Z"></path><path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="M4.5,10.5h-2c0-.234,1.85-1.076,1.85-2.234A0.959,0.959,0,0,0,2.5,8.156"></path><path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" d="M2.5,14.846a0.959,0.959,0,0,0,1.85-.109A0.7,0.7,0,0,0,3.75,14a0.688,0.688,0,0,0,.6-0.736,0.959,0.959,0,0,0-1.85-.109"></path></svg>',un='<svg viewBox="2 2 20 20"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 10.8182L9 10.8182C8.80222 10.8182 8.60888 10.7649 8.44443 10.665C8.27998 10.5651 8.15181 10.4231 8.07612 10.257C8.00043 10.0909 7.98063 9.90808 8.01922 9.73174C8.0578 9.55539 8.15304 9.39341 8.29289 9.26627C8.43275 9.13913 8.61093 9.05255 8.80491 9.01747C8.99889 8.98239 9.19996 9.00039 9.38268 9.0692C9.56541 9.13801 9.72159 9.25453 9.83147 9.40403C9.94135 9.55353 10 9.72929 10 9.90909L10 12.1818C10 12.664 9.78929 13.1265 9.41421 13.4675C9.03914 13.8084 8.53043 14 8 14"></path><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M16 10.8182L15 10.8182C14.8022 10.8182 14.6089 10.7649 14.4444 10.665C14.28 10.5651 14.1518 10.4231 14.0761 10.257C14.0004 10.0909 13.9806 9.90808 14.0192 9.73174C14.0578 9.55539 14.153 9.39341 14.2929 9.26627C14.4327 9.13913 14.6109 9.05255 14.8049 9.01747C14.9989 8.98239 15.2 9.00039 15.3827 9.0692C15.5654 9.13801 15.7216 9.25453 15.8315 9.40403C15.9414 9.55353 16 9.72929 16 9.90909L16 12.1818C16 12.664 15.7893 13.1265 15.4142 13.4675C15.0391 13.8084 14.5304 14 14 14"></path></svg>',fn='<svg viewBox="0 0 18 18"><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="8" x2="16" y1="4" y2="4"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="8" x2="16" y1="9" y2="9"></line><line stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" x1="8" x2="16" y1="14" y2="14"></line><rect stroke="currentColor" fill="none" stroke-width="1.5" x="2" y="3" width="3" height="3" rx="0.5"></rect><rect stroke="currentColor" fill="none" stroke-width="1.5" x="2" y="13" width="3" height="3" rx="0.5"></rect><polyline stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" points="2.65 9.5 3.5 10.5 5 8.5"></polyline></svg>',mn='<svg viewBox="0 0 18 18"><path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2.25 12.375v1.688A1.688 1.688 0 0 0 3.938 15.75h10.124a1.688 1.688 0 0 0 1.688-1.688V12.375"></path><path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5.063 6.188L9 2.25l3.938 3.938"></path><path stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 2.25v10.125"></path></svg>',gn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" fill="none"></path><circle cx="12" cy="12" r="3" fill="none"></circle></svg>';var S={bold:{name:"bold",actionId:"toggleBold",icon:on,title:"Bold (Ctrl+B)",action:({editor:n})=>{_e(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},italic:{name:"italic",actionId:"toggleItalic",icon:rn,title:"Italic (Ctrl+I)",action:({editor:n})=>{Ce(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},code:{name:"code",actionId:"toggleCode",icon:pn,title:"Inline Code",action:({editor:n})=>{Ae(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},separator:{name:"separator"},link:{name:"link",actionId:"insertLink",icon:cn,title:"Insert Link",action:({editor:n})=>{Te(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},h1:{name:"h1",actionId:"toggleH1",icon:sn,title:"Heading 1",action:({editor:n})=>{Pe(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},h2:{name:"h2",actionId:"toggleH2",icon:an,title:"Heading 2",action:({editor:n})=>{$e(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},h3:{name:"h3",actionId:"toggleH3",icon:ln,title:"Heading 3",action:({editor:n})=>{Re(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},bulletList:{name:"bulletList",actionId:"toggleBulletList",icon:dn,title:"Bullet List",action:({editor:n})=>{He(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},orderedList:{name:"orderedList",actionId:"toggleNumberedList",icon:hn,title:"Numbered List",action:({editor:n})=>{Me(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},taskList:{name:"taskList",actionId:"toggleTaskList",icon:fn,title:"Task List",action:({editor:n})=>{le&&(le(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0})))}},quote:{name:"quote",actionId:"toggleQuote",icon:un,title:"Quote",action:({editor:n})=>{Oe(n.textarea),n.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}},upload:{name:"upload",actionId:"uploadFile",icon:mn,title:"Upload File",action:({editor:n})=>{var t,i;if(!((t=n.options.fileUpload)!=null&&t.enabled))return;let e=document.createElement("input");e.type="file",e.multiple=!0,((i=n.options.fileUpload.mimeTypes)==null?void 0:i.length)>0&&(e.accept=n.options.fileUpload.mimeTypes.join(",")),e.onchange=()=>{var r;if(!((r=e.files)!=null&&r.length))return;let o=new DataTransfer;for(let s of e.files)o.items.add(s);n._handleDataTransfer(o)},e.click()}},viewMode:{name:"viewMode",icon:gn,title:"View mode"}},we=[S.bold,S.italic,S.code,S.separator,S.link,S.separator,S.h1,S.h2,S.h3,S.separator,S.bulletList,S.orderedList,S.taskList,S.separator,S.quote,S.separator,S.viewMode];function ot(n){let e={};return(n||[]).forEach(t=>{if(!t||t.name==="separator")return;let i=t.actionId||t.name;t.action&&(e[i]=t.action)}),e}function vn(n){let e=n||we;return Array.isArray(e)?e.map(t=>({name:(t==null?void 0:t.name)||null,actionId:(t==null?void 0:t.actionId)||(t==null?void 0:t.name)||null,icon:(t==null?void 0:t.icon)||null,title:(t==null?void 0:t.title)||null})):null}function vi(n,e){let t=vn(n),i=vn(e);if(t===null||i===null)return t!==i;if(t.length!==i.length)return!0;for(let o=0;o<t.length;o++){let r=t[o],s=i[o];if(r.name!==s.name||r.actionId!==s.actionId||r.icon!==s.icon||r.title!==s.title)return!0}return!1}var v=class v{constructor(e,t={}){let i=v._resolveTargets(e);if(typeof e=="string"&&i.length===0)throw new Error(`No elements found for selector: ${e}`);return i.map(r=>{if(r.overTypeInstance)return r.overTypeInstance.reinit(t),r.overTypeInstance;let s=Object.create(v.prototype);return s._init(r,t),r.overTypeInstance=s,v.instances.set(r,s),s})}_init(e,t={}){this.element=e,this.instanceTheme=t.theme||null,this.options=this._mergeOptions(t),this.instanceId=++v.instanceCount,this.initialized=!1,v.injectStyles(),v.initGlobalListeners();let i=e.querySelector(".overtype-container"),o=e.querySelector(".overtype-wrapper");i||o?this._recoverFromDOM(i,o):this._buildFromScratch(),this.instanceTheme==="auto"&&this.setTheme("auto"),this.shortcuts=new re(this),this._rebuildActionsMap(),this.linkTooltip=new We(this),requestAnimationFrame(()=>{requestAnimationFrame(()=>{this.textarea.scrollTop=this.preview.scrollTop,this.textarea.scrollLeft=this.preview.scrollLeft})}),this.initialized=!0,this.options.onChange&&this._notifyChange()}_mergeOptions(e){let t={fontSize:"14px",lineHeight:1.6,fontFamily:'"SF Mono", SFMono-Regular, Menlo, Monaco, "Cascadia Code", Consolas, "Roboto Mono", "Noto Sans Mono", "Droid Sans Mono", "Ubuntu Mono", "DejaVu Sans Mono", "Liberation Mono", "Courier New", Courier, monospace',padding:"16px",mobile:{fontSize:"16px",padding:"12px",lineHeight:1.5},textareaProps:{},autofocus:!1,autoResize:!1,minHeight:"100px",maxHeight:null,placeholder:"Start typing...",value:"",onChange:null,onKeydown:null,onRender:null,onFocus:null,onBlur:null,showActiveLineRaw:!1,showStats:!1,toolbar:!1,toolbarButtons:null,statsFormatter:null,smartLists:!0,codeHighlighter:null,spellcheck:!1},{theme:i,colors:o,...r}=e;return{...t,...r}}_recoverFromDOM(e,t){if(e&&e.classList.contains("overtype-container"))this.container=e,this.wrapper=e.querySelector(".overtype-wrapper");else if(t){this.wrapper=t,this.container=document.createElement("div"),this.container.className="overtype-container";let i=this.instanceTheme||v.currentTheme||z,o=typeof i=="string"?i:i.name;if(o&&this.container.setAttribute("data-theme",o),this.instanceTheme){let r=typeof this.instanceTheme=="string"?R(this.instanceTheme):this.instanceTheme;if(r&&r.colors){let s=Q(r.colors);this.container.style.cssText+=s}}t.parentNode.insertBefore(this.container,t),this.container.appendChild(t)}if(!this.wrapper){e&&e.remove(),t&&t.remove(),this._buildFromScratch();return}if(this.textarea=this.wrapper.querySelector(".overtype-input"),this.preview=this.wrapper.querySelector(".overtype-preview"),!this.textarea||!this.preview){this.container.remove(),this._buildFromScratch();return}this.wrapper._instance=this,this._applyInstanceCSSVars(),this._configureTextarea(),this._applyOptions()}_buildFromScratch(){let e=this._extractContent();this.element.innerHTML="",this._createDOM(),(e||this.options.value)&&this.setValue(e||this.options.value),this._applyOptions()}_extractContent(){let e=this.element.querySelector(".overtype-input");return e?e.value:this.element.textContent||""}_createDOM(){this.container=document.createElement("div"),this.container.className="overtype-container";let e=this.instanceTheme||v.currentTheme||z,t=typeof e=="string"?e:e.name;if(t&&this.container.setAttribute("data-theme",t),this.instanceTheme){let i=typeof this.instanceTheme=="string"?R(this.instanceTheme):this.instanceTheme;if(i&&i.colors){let o=Q(i.colors);this.container.style.cssText+=o}}this.wrapper=document.createElement("div"),this.wrapper.className="overtype-wrapper",this._applyInstanceCSSVars(),this.wrapper._instance=this,this.textarea=document.createElement("textarea"),this.textarea.className="overtype-input",this.textarea.placeholder=this.options.placeholder,this._configureTextarea(),this.options.textareaProps&&Object.entries(this.options.textareaProps).forEach(([i,o])=>{i==="className"||i==="class"?this.textarea.className+=" "+o:i==="style"&&typeof o=="object"?Object.assign(this.textarea.style,o):this.textarea.setAttribute(i,o)}),this.preview=document.createElement("div"),this.preview.className="overtype-preview",this.preview.setAttribute("aria-hidden","true"),this.placeholderEl=document.createElement("div"),this.placeholderEl.className="overtype-placeholder",this.placeholderEl.setAttribute("aria-hidden","true"),this.placeholderEl.textContent=this.options.placeholder,this.wrapper.appendChild(this.textarea),this.wrapper.appendChild(this.preview),this.wrapper.appendChild(this.placeholderEl),this.container.appendChild(this.wrapper),this.options.showStats&&(this.statsBar=document.createElement("div"),this.statsBar.className="overtype-stats",this.container.appendChild(this.statsBar),this._updateStats()),this.element.appendChild(this.container),this.options.autoResize?this._setupAutoResize():this.container.classList.remove("overtype-auto-resize")}_configureTextarea(){this.textarea.setAttribute("autocomplete","off"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("spellcheck",String(this.options.spellcheck)),this.textarea.setAttribute("data-gramm","false"),this.textarea.setAttribute("data-gramm_editor","false"),this.textarea.setAttribute("data-enable-grammarly","false")}_createToolbar(){var t;let e=this.options.toolbarButtons||we;if((t=this.options.fileUpload)!=null&&t.enabled&&!e.some(i=>(i==null?void 0:i.name)==="upload")){let i=e.findIndex(o=>(o==null?void 0:o.name)==="viewMode");i!==-1?(e=[...e],e.splice(i,0,S.separator,S.upload)):e=[...e,S.separator,S.upload]}this.toolbar=new Be(this,{toolbarButtons:e}),this.toolbar.create(),this._toolbarSelectionListener=()=>{this.toolbar&&this.toolbar.updateButtonStates()},this._toolbarInputListener=()=>{this.toolbar&&this.toolbar.updateButtonStates()},this.textarea.addEventListener("selectionchange",this._toolbarSelectionListener),this.textarea.addEventListener("input",this._toolbarInputListener)}_cleanupToolbarListeners(){this._toolbarSelectionListener&&(this.textarea.removeEventListener("selectionchange",this._toolbarSelectionListener),this._toolbarSelectionListener=null),this._toolbarInputListener&&(this.textarea.removeEventListener("input",this._toolbarInputListener),this._toolbarInputListener=null)}_rebuildActionsMap(){var e;this.actionsById=ot(we),this.options.toolbarButtons&&Object.assign(this.actionsById,ot(this.options.toolbarButtons)),(e=this.options.fileUpload)!=null&&e.enabled&&Object.assign(this.actionsById,ot([S.upload]))}_applyInstanceCSSVars(){this.wrapper&&(this.options.fontSize&&this.wrapper.style.setProperty("--instance-font-size",this.options.fontSize),this.options.lineHeight&&this.wrapper.style.setProperty("--instance-line-height",String(this.options.lineHeight)),this.options.padding&&this.wrapper.style.setProperty("--instance-padding",this.options.padding),this.options.fontFamily&&this.wrapper.style.setProperty("--instance-font-family",this.options.fontFamily))}_applyOptions(){this._applyInstanceCSSVars(),this.options.autofocus&&this.textarea.focus(),this.options.autoResize?this.container.classList.contains("overtype-auto-resize")?this._updateAutoHeight():this._setupAutoResize():this.container.classList.remove("overtype-auto-resize"),this.options.toolbar&&!this.toolbar?this._createToolbar():!this.options.toolbar&&this.toolbar&&(this._cleanupToolbarListeners(),this.toolbar.destroy(),this.toolbar=null),this.placeholderEl&&(this.placeholderEl.textContent=this.options.placeholder),this.options.fileUpload&&!this.fileUploadInitialized?this._initFileUpload():!this.options.fileUpload&&this.fileUploadInitialized&&this._destroyFileUpload(),this.updatePreview()}_initFileUpload(){let e=this.options.fileUpload;if(!(!e||!e.enabled)){if(e.maxSize=e.maxSize||10*1024*1024,e.mimeTypes=e.mimeTypes||[],e.batch=e.batch||!1,!e.onInsertFile||typeof e.onInsertFile!="function"){console.warn("OverType: fileUpload.onInsertFile callback is required for file uploads.");return}this._fileUploadCounter=0,this._boundHandleFilePaste=this._handleFilePaste.bind(this),this._boundHandleFileDrop=this._handleFileDrop.bind(this),this._boundHandleDragOver=this._handleDragOver.bind(this),this.textarea.addEventListener("paste",this._boundHandleFilePaste),this.textarea.addEventListener("drop",this._boundHandleFileDrop),this.textarea.addEventListener("dragover",this._boundHandleDragOver),this.fileUploadInitialized=!0}}_handleFilePaste(e){var t,i;(i=(t=e==null?void 0:e.clipboardData)==null?void 0:t.files)!=null&&i.length&&(e.preventDefault(),this._handleDataTransfer(e.clipboardData))}_handleFileDrop(e){var t,i;(i=(t=e==null?void 0:e.dataTransfer)==null?void 0:t.files)!=null&&i.length&&(e.preventDefault(),this._handleDataTransfer(e.dataTransfer))}_handleDataTransfer(e){let t=[];for(let i of e.files){if(i.size>this.options.fileUpload.maxSize||this.options.fileUpload.mimeTypes.length>0&&!this.options.fileUpload.mimeTypes.includes(i.type))continue;let o=++this._fileUploadCounter,s=`${i.type.startsWith("image/")?"!":""}[Uploading ${i.name} (#${o})...]()`;if(this.insertAtCursor(`${s}
73
+ `),this.options.fileUpload.batch){t.push({file:i,placeholder:s});continue}this.options.fileUpload.onInsertFile(i).then(a=>{this.textarea.value=this.textarea.value.replace(s,a),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))},a=>{console.error("OverType: File upload failed",a),this.textarea.value=this.textarea.value.replace(s,"[Upload failed]()"),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))})}this.options.fileUpload.batch&&t.length>0&&this.options.fileUpload.onInsertFile(t.map(i=>i.file)).then(i=>{(Array.isArray(i)?i:[i]).forEach((r,s)=>{this.textarea.value=this.textarea.value.replace(t[s].placeholder,r)}),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))},i=>{console.error("OverType: File upload failed",i),t.forEach(({placeholder:o})=>{this.textarea.value=this.textarea.value.replace(o,"[Upload failed]()")}),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))})}_handleDragOver(e){e.preventDefault()}_destroyFileUpload(){this.textarea.removeEventListener("paste",this._boundHandleFilePaste),this.textarea.removeEventListener("drop",this._boundHandleFileDrop),this.textarea.removeEventListener("dragover",this._boundHandleDragOver),this._boundHandleFilePaste=null,this._boundHandleFileDrop=null,this._boundHandleDragOver=null,this.fileUploadInitialized=!1}insertAtCursor(e){let t=this.textarea.selectionStart,i=this.textarea.selectionEnd,o=!1;try{o=document.execCommand("insertText",!1,e)}catch(r){}if(!o){let r=this.textarea.value.slice(0,t),s=this.textarea.value.slice(i);this.textarea.value=r+e+s,this.textarea.setSelectionRange(t+e.length,t+e.length)}this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}updatePreview(){let e=this.textarea.value,t=this.textarea.selectionStart,i=this._getCurrentLine(e,t),o=this.container.dataset.mode==="preview",r=_.parse(e,i,this.options.showActiveLineRaw,this.options.codeHighlighter,o);this.preview.innerHTML=r,this.placeholderEl&&(this.placeholderEl.style.display=e?"none":""),this._applyCodeBlockBackgrounds(),this.options.showStats&&this.statsBar&&this._updateStats(),this.options.onRender&&this.options.onRender(this.preview,o?"preview":"normal",this)}_notifyChange(){!this.options.onChange||!this.initialized||this.options.onChange(this.textarea.value,this)}_applyCodeBlockBackgrounds(){let e=this.preview.querySelectorAll(".code-fence");for(let t=0;t<e.length-1;t+=2){let i=e[t],o=e[t+1],r=i.parentElement,s=o.parentElement;!r||!s||(i.style.display="block",o.style.display="block",r.classList.add("code-block-line"),s.classList.add("code-block-line"))}}_getCurrentLine(e,t){return e.substring(0,t).split(`
74
+ `).length-1}handleInput(e){this.updatePreview(),this._notifyChange()}handleFocus(e){this.options.onFocus&&this.options.onFocus(e,this)}handleBlur(e){this.options.onBlur&&this.options.onBlur(e,this)}handleKeydown(e){if(e.key==="Tab"){let i=this.textarea.selectionStart,o=this.textarea.selectionEnd,r=this.textarea.value;if(e.shiftKey&&i===o)return;if(e.preventDefault(),i!==o&&e.shiftKey){let s=r.substring(0,i),a=r.substring(i,o),l=r.substring(o),c=a.split(`
968
75
  `).map(d=>d.replace(/^ /,"")).join(`
969
- `);document.execCommand?(this.textarea.setSelectionRange(n,o),document.execCommand("insertText",!1,c)):(this.textarea.value=s+c+l,this.textarea.selectionStart=n,this.textarea.selectionEnd=n+c.length)}else if(n!==o){let s=r.substring(0,n),a=r.substring(n,o),l=r.substring(o),c=a.split(`
76
+ `);document.execCommand?(this.textarea.setSelectionRange(i,o),document.execCommand("insertText",!1,c)):(this.textarea.value=s+c+l,this.textarea.selectionStart=i,this.textarea.selectionEnd=i+c.length)}else if(i!==o){let s=r.substring(0,i),a=r.substring(i,o),l=r.substring(o),c=a.split(`
970
77
  `).map(d=>" "+d).join(`
971
- `);document.execCommand?(this.textarea.setSelectionRange(n,o),document.execCommand("insertText",!1,c)):(this.textarea.value=s+c+l,this.textarea.selectionStart=n,this.textarea.selectionEnd=n+c.length)}else document.execCommand?document.execCommand("insertText",!1," "):(this.textarea.value=r.substring(0,n)+" "+r.substring(o),this.textarea.selectionStart=this.textarea.selectionEnd=n+2);this.textarea.dispatchEvent(new Event("input",{bubbles:!0}));return}if(e.key==="Enter"&&!e.shiftKey&&!e.metaKey&&!e.ctrlKey&&this.options.smartLists&&this.handleSmartListContinuation()){e.preventDefault();return}!this.shortcuts.handleKeydown(e)&&this.options.onKeydown&&this.options.onKeydown(e,this)}handleSmartListContinuation(){let e=this.textarea,t=e.selectionStart,n=C.getListContext(e.value,t);return!n||!n.inList?!1:n.content.trim()===""&&t>=n.markerEndPos?(this.deleteListMarker(n),!0):(t>n.markerEndPos&&t<n.lineEnd?this.splitListItem(n,t):this.insertNewListItem(n),n.listType==="numbered"&&this.scheduleNumberedListUpdate(),!0)}deleteListMarker(e){this.textarea.setSelectionRange(e.lineStart,e.markerEndPos),document.execCommand("delete"),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}insertNewListItem(e){let t=C.createNewListItem(e);document.execCommand("insertText",!1,`
972
- `+t),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}splitListItem(e,t){let n=e.content.substring(t-e.markerEndPos);this.textarea.setSelectionRange(t,e.lineEnd),document.execCommand("delete");let o=C.createNewListItem(e);document.execCommand("insertText",!1,`
973
- `+o+n);let r=this.textarea.selectionStart-n.length;this.textarea.setSelectionRange(r,r),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}scheduleNumberedListUpdate(){this.numberUpdateTimeout&&clearTimeout(this.numberUpdateTimeout),this.numberUpdateTimeout=setTimeout(()=>{this.updateNumberedLists()},10)}updateNumberedLists(){let e=this.textarea.value,t=this.textarea.selectionStart,n=C.renumberLists(e);if(n!==e){let o=0,r=e.split(`
974
- `),s=n.split(`
975
- `),a=0;for(let p=0;p<r.length&&a<t;p++){if(r[p]!==s[p]){let c=s[p].length-r[p].length;a+r[p].length<t&&(o+=c)}a+=r[p].length+1}this.textarea.value=n;let l=t+o;this.textarea.setSelectionRange(l,l),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}}handleScroll(e){this.preview.scrollTop=this.textarea.scrollTop,this.preview.scrollLeft=this.textarea.scrollLeft}getValue(){return this.textarea.value}setValue(e){let t=this.textarea.value!==e;this.textarea.value=e,this.updatePreview(),this.options.autoResize&&this._updateAutoHeight(),t&&this._notifyChange()}async performAction(e,t=null){var r;let n=this.textarea;if(!n)return!1;let o=(r=this.actionsById)==null?void 0:r[e];if(!o)return console.warn(`OverType: Unknown action "${e}"`),!1;n.focus();try{return await o({editor:this,getValue:()=>this.getValue(),setValue:s=>this.setValue(s),event:t}),!0}catch(s){return console.error(`OverType: Action "${e}" error:`,s),this.wrapper.dispatchEvent(new CustomEvent("button-error",{detail:{actionId:e,error:s}})),!1}}getRenderedHTML(e={}){let t=this.getValue(),n=C.parse(t,-1,!1,this.options.codeHighlighter);return e.cleanHTML&&(n=n.replace(/<span class="syntax-marker[^"]*">.*?<\/span>/g,""),n=n.replace(/\sclass="(bullet-list|ordered-list|code-fence|hr-marker|blockquote|url-part)"/g,""),n=n.replace(/\sclass=""/g,"")),n}getPreviewHTML(){return this.preview.innerHTML}getCleanHTML(){return this.getRenderedHTML({cleanHTML:!0})}focus(){this.textarea.focus()}blur(){this.textarea.blur()}isInitialized(){return this.initialized}reinit(e={}){var o;let t=(o=this.options)==null?void 0:o.toolbarButtons;this.options=this._mergeOptions({...this.options,...e});let n=this.toolbar&&this.options.toolbar&&ln(t,this.options.toolbarButtons);this._rebuildActionsMap(),n&&(this._cleanupToolbarListeners(),this.toolbar.destroy(),this.toolbar=null,this._createToolbar()),this.fileUploadInitialized&&this._destroyFileUpload(),this.options.fileUpload&&this._initFileUpload(),this._applyOptions(),this.updatePreview()}showToolbar(){this.toolbar?this.toolbar.show():this._createToolbar()}hideToolbar(){this.toolbar&&this.toolbar.hide()}setTheme(e){if(v._autoInstances.delete(this),this.instanceTheme=e,e==="auto")v._autoInstances.add(this),v._startAutoListener(),this._applyResolvedTheme($e("auto"));else{let t=typeof e=="string"?$(e):e,n=typeof t=="string"?t:t.name;if(n&&this.container.setAttribute("data-theme",n),t&&t.colors){let o=Q(t.colors,t.previewColors);this.container.style.cssText+=o}this.updatePreview()}return v._stopAutoListener(),this}_applyResolvedTheme(e){let t=$(e);this.container.setAttribute("data-theme",e),t&&t.colors&&(this.container.style.cssText=Q(t.colors,t.previewColors)),this.updatePreview()}setCodeHighlighter(e){this.options.codeHighlighter=e,this.updatePreview()}_updateStats(){if(!this.statsBar)return;let e=this.textarea.value,t=e.split(`
976
- `),n=e.length,o=e.split(/\s+/).filter(c=>c.length>0).length,r=this.textarea.selectionStart,a=e.substring(0,r).split(`
977
- `),l=a.length,p=a[a.length-1].length+1;this.options.statsFormatter?this.statsBar.innerHTML=this.options.statsFormatter({chars:n,words:o,lines:t.length,line:l,column:p}):this.statsBar.innerHTML=`
78
+ `);document.execCommand?(this.textarea.setSelectionRange(i,o),document.execCommand("insertText",!1,c)):(this.textarea.value=s+c+l,this.textarea.selectionStart=i,this.textarea.selectionEnd=i+c.length)}else document.execCommand?document.execCommand("insertText",!1," "):(this.textarea.value=r.substring(0,i)+" "+r.substring(o),this.textarea.selectionStart=this.textarea.selectionEnd=i+2);this.textarea.dispatchEvent(new Event("input",{bubbles:!0}));return}if(e.key==="Enter"&&!e.shiftKey&&!e.metaKey&&!e.ctrlKey&&this.options.smartLists&&this.handleSmartListContinuation()){e.preventDefault();return}!this.shortcuts.handleKeydown(e)&&this.options.onKeydown&&this.options.onKeydown(e,this)}handleSmartListContinuation(){let e=this.textarea,t=e.selectionStart,i=_.getListContext(e.value,t);return!i||!i.inList?!1:i.content.trim()===""&&t>=i.markerEndPos?(this.deleteListMarker(i),!0):(t>i.markerEndPos&&t<i.lineEnd?this.splitListItem(i,t):this.insertNewListItem(i),i.listType==="numbered"&&this.scheduleNumberedListUpdate(),!0)}deleteListMarker(e){this.textarea.setSelectionRange(e.lineStart,e.markerEndPos),document.execCommand("delete"),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}insertNewListItem(e){let t=_.createNewListItem(e);document.execCommand("insertText",!1,`
79
+ `+t),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}splitListItem(e,t){let i=e.content.substring(t-e.markerEndPos);this.textarea.setSelectionRange(t,e.lineEnd),document.execCommand("delete");let o=_.createNewListItem(e);document.execCommand("insertText",!1,`
80
+ `+o+i);let r=this.textarea.selectionStart-i.length;this.textarea.setSelectionRange(r,r),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}scheduleNumberedListUpdate(){this.numberUpdateTimeout&&clearTimeout(this.numberUpdateTimeout),this.numberUpdateTimeout=setTimeout(()=>{this.updateNumberedLists()},10)}updateNumberedLists(){let e=this.textarea.value,t=this.textarea.selectionStart,i=_.renumberLists(e);if(i!==e){let o=0,r=e.split(`
81
+ `),s=i.split(`
82
+ `),a=0;for(let p=0;p<r.length&&a<t;p++){if(r[p]!==s[p]){let c=s[p].length-r[p].length;a+r[p].length<t&&(o+=c)}a+=r[p].length+1}this.textarea.value=i;let l=t+o;this.textarea.setSelectionRange(l,l),this.textarea.dispatchEvent(new Event("input",{bubbles:!0}))}}handleScroll(e){this.preview.scrollTop=this.textarea.scrollTop,this.preview.scrollLeft=this.textarea.scrollLeft}getValue(){return this.textarea.value}setValue(e){let t=this.textarea.value!==e;this.textarea.value=e,this.updatePreview(),this.options.autoResize&&this._updateAutoHeight(),t&&this._notifyChange()}async performAction(e,t=null){var r;let i=this.textarea;if(!i)return!1;let o=(r=this.actionsById)==null?void 0:r[e];if(!o)return console.warn(`OverType: Unknown action "${e}"`),!1;i.focus();try{return await o({editor:this,getValue:()=>this.getValue(),setValue:s=>this.setValue(s),event:t}),!0}catch(s){return console.error(`OverType: Action "${e}" error:`,s),this.wrapper.dispatchEvent(new CustomEvent("button-error",{detail:{actionId:e,error:s}})),!1}}getRenderedHTML(e={}){let t=this.getValue(),i=_.parse(t,-1,!1,this.options.codeHighlighter);return e.cleanHTML&&(i=i.replace(/<span class="syntax-marker[^"]*">.*?<\/span>/g,""),i=i.replace(/\sclass="(bullet-list|ordered-list|code-fence|hr-marker|blockquote|url-part)"/g,""),i=i.replace(/\sclass=""/g,"")),i}getPreviewHTML(){return this.preview.innerHTML}getCleanHTML(){return this.getRenderedHTML({cleanHTML:!0})}focus(){this.textarea.focus()}blur(){this.textarea.blur()}isInitialized(){return this.initialized}reinit(e={}){var o;let t=(o=this.options)==null?void 0:o.toolbarButtons;this.options=this._mergeOptions({...this.options,...e});let i=this.toolbar&&this.options.toolbar&&vi(t,this.options.toolbarButtons);this._rebuildActionsMap(),i&&(this._cleanupToolbarListeners(),this.toolbar.destroy(),this.toolbar=null,this._createToolbar()),this.fileUploadInitialized&&this._destroyFileUpload(),this.options.fileUpload&&this._initFileUpload(),this._applyOptions(),this.updatePreview()}showToolbar(){this.toolbar?this.toolbar.show():this._createToolbar()}hideToolbar(){this.toolbar&&this.toolbar.hide()}setTheme(e){if(v._autoInstances.delete(this),this.instanceTheme=e,e==="auto")v._autoInstances.add(this),v._startAutoListener(),this._applyResolvedTheme(Ze("auto"));else{let t=typeof e=="string"?R(e):e,i=typeof t=="string"?t:t.name;if(i&&this.container.setAttribute("data-theme",i),t&&t.colors){let o=Q(t.colors,t.previewColors);this.container.style.cssText+=o}this.updatePreview()}return v._stopAutoListener(),this}_applyResolvedTheme(e){let t=R(e);this.container.setAttribute("data-theme",e),t&&t.colors&&(this.container.style.cssText=Q(t.colors,t.previewColors)),this.updatePreview()}setCodeHighlighter(e){this.options.codeHighlighter=e,this.updatePreview()}_updateStats(){if(!this.statsBar)return;let e=this.textarea.value,t=e.split(`
83
+ `),i=e.length,o=e.split(/\s+/).filter(c=>c.length>0).length,r=this.textarea.selectionStart,a=e.substring(0,r).split(`
84
+ `),l=a.length,p=a[a.length-1].length+1;this.options.statsFormatter?this.statsBar.innerHTML=this.options.statsFormatter({chars:i,words:o,lines:t.length,line:l,column:p}):this.statsBar.innerHTML=`
978
85
  <div class="overtype-stat">
979
86
  <span class="live-dot"></span>
980
- <span>${n} chars, ${o} words, ${t.length} lines</span>
87
+ <span>${i} chars, ${o} words, ${t.length} lines</span>
981
88
  </div>
982
89
  <div class="overtype-stat">Line ${l}, Col ${p}</div>
983
- `}_setupAutoResize(){this.container.classList.add("overtype-auto-resize"),this.previousHeight=null,this._updateAutoHeight(),this.textarea.addEventListener("input",()=>this._updateAutoHeight()),window.addEventListener("resize",()=>this._updateAutoHeight())}_updateAutoHeight(){if(!this.options.autoResize)return;let e=this.textarea,t=this.preview,n=this.wrapper;if(this.container.dataset.mode==="preview"){n.style.removeProperty("height"),t.style.removeProperty("height"),t.style.removeProperty("overflow-y"),e.style.removeProperty("height"),e.style.removeProperty("overflow-y");return}let r=e.scrollTop;n.style.setProperty("height","auto","important"),e.style.setProperty("height","auto","important");let s=e.scrollHeight;if(this.options.minHeight){let p=parseInt(this.options.minHeight);s=Math.max(s,p)}let a="hidden";if(this.options.maxHeight){let p=parseInt(this.options.maxHeight);s>p&&(s=p,a="auto")}let l=s+"px";e.style.setProperty("height",l,"important"),e.style.setProperty("overflow-y",a,"important"),t.style.setProperty("height",l,"important"),t.style.setProperty("overflow-y",a,"important"),n.style.setProperty("height",l,"important"),e.scrollTop=r,t.scrollTop=r,this.previousHeight!==s&&(this.previousHeight=s)}showStats(e){this.options.showStats=e,e&&!this.statsBar?(this.statsBar=document.createElement("div"),this.statsBar.className="overtype-stats",this.container.appendChild(this.statsBar),this._updateStats()):e&&this.statsBar?this._updateStats():!e&&this.statsBar&&(this.statsBar.remove(),this.statsBar=null)}showNormalEditMode(){return this.container.dataset.mode="normal",this.updatePreview(),this._updateAutoHeight(),requestAnimationFrame(()=>{this.textarea.scrollTop=this.preview.scrollTop,this.textarea.scrollLeft=this.preview.scrollLeft}),this}showPlainTextarea(){if(this.container.dataset.mode="plain",this._updateAutoHeight(),this.toolbar){let e=this.container.querySelector('[data-action="toggle-plain"]');e&&(e.classList.remove("active"),e.title="Show markdown preview")}return this}showPreviewMode(){return this.container.dataset.mode="preview",this.updatePreview(),this._updateAutoHeight(),this}destroy(){if(v._autoInstances.delete(this),v._stopAutoListener(),this.fileUploadInitialized&&this._destroyFileUpload(),this.element.overTypeInstance=null,v.instances.delete(this.element),this.shortcuts&&this.shortcuts.destroy(),this.wrapper){let e=this.getValue();this.wrapper.remove(),this.element.textContent=e}this.initialized=!1}static init(e,t={}){return new v(e,t)}static initFromData(e,t={}){let n=document.querySelectorAll(e);return Array.from(n).map(o=>{let r={...t};for(let s of o.attributes)if(s.name.startsWith("data-ot-")){let l=s.name.slice(8).replace(/-([a-z])/g,(p,c)=>c.toUpperCase());r[l]=v._parseDataValue(s.value)}return new v(o,r)[0]})}static _parseDataValue(e){return e==="true"?!0:e==="false"?!1:e==="null"?null:e!==""&&!isNaN(Number(e))?Number(e):e}static getInstance(e){return e.overTypeInstance||v.instances.get(e)||null}static destroyAll(){document.querySelectorAll("[data-overtype-instance]").forEach(t=>{let n=v.getInstance(t);n&&n.destroy()})}static injectStyles(e=!1){if(v.stylesInjected&&!e)return;let t=document.querySelector("style.overtype-styles");t&&t.remove();let n=v.currentTheme||B,o=ye({theme:n}),r=document.createElement("style");r.className="overtype-styles",r.textContent=o,document.head.appendChild(r),v.stylesInjected=!0}static setTheme(e,t=null){if(v._globalAutoTheme=!1,v._globalAutoCustomColors=null,e==="auto"){v._globalAutoTheme=!0,v._globalAutoCustomColors=t,v._startAutoListener(),v._applyGlobalTheme($e("auto"),t);return}v._stopAutoListener(),v._applyGlobalTheme(e,t)}static _applyGlobalTheme(e,t=null){let n=typeof e=="string"?$(e):e;t&&(n=Qe(n,t)),v.currentTheme=n,v.injectStyles(!0);let o=typeof n=="string"?n:n.name;document.querySelectorAll(".overtype-container").forEach(r=>{o&&r.setAttribute("data-theme",o)}),document.querySelectorAll(".overtype-wrapper").forEach(r=>{r.closest(".overtype-container")||o&&r.setAttribute("data-theme",o);let s=r._instance;s&&s.updatePreview()}),document.querySelectorAll("overtype-editor").forEach(r=>{o&&typeof r.setAttribute=="function"&&r.setAttribute("theme",o),typeof r.refreshTheme=="function"&&r.refreshTheme()})}static _startAutoListener(){v._autoMediaQuery||window.matchMedia&&(v._autoMediaQuery=window.matchMedia("(prefers-color-scheme: dark)"),v._autoMediaListener=e=>{let t=e.matches?"cave":"solar";v._globalAutoTheme&&v._applyGlobalTheme(t,v._globalAutoCustomColors),v._autoInstances.forEach(n=>n._applyResolvedTheme(t))},v._autoMediaQuery.addEventListener("change",v._autoMediaListener))}static _stopAutoListener(){v._autoInstances.size>0||v._globalAutoTheme||v._autoMediaQuery&&(v._autoMediaQuery.removeEventListener("change",v._autoMediaListener),v._autoMediaQuery=null,v._autoMediaListener=null)}static setCodeHighlighter(e){C.setCodeHighlighter(e),document.querySelectorAll(".overtype-wrapper").forEach(t=>{let n=t._instance;n&&n.updatePreview&&n.updatePreview()}),document.querySelectorAll("overtype-editor").forEach(t=>{if(typeof t.getEditor=="function"){let n=t.getEditor();n&&n.updatePreview&&n.updatePreview()}})}static setCustomSyntax(e){C.setCustomSyntax(e),document.querySelectorAll(".overtype-wrapper").forEach(t=>{let n=t._instance;n&&n.updatePreview&&n.updatePreview()}),document.querySelectorAll("overtype-editor").forEach(t=>{if(typeof t.getEditor=="function"){let n=t.getEditor();n&&n.updatePreview&&n.updatePreview()}})}static initGlobalListeners(){v.globalListenersInitialized||(document.addEventListener("input",e=>{if(e.target&&e.target.classList&&e.target.classList.contains("overtype-input")){let t=e.target.closest(".overtype-wrapper"),n=t==null?void 0:t._instance;n&&n.handleInput(e)}}),document.addEventListener("keydown",e=>{if(e.target&&e.target.classList&&e.target.classList.contains("overtype-input")){let t=e.target.closest(".overtype-wrapper"),n=t==null?void 0:t._instance;n&&n.handleKeydown(e)}}),document.addEventListener("scroll",e=>{if(e.target&&e.target.classList&&e.target.classList.contains("overtype-input")){let t=e.target.closest(".overtype-wrapper"),n=t==null?void 0:t._instance;n&&n.handleScroll(e)}},!0),document.addEventListener("selectionchange",e=>{let t=document.activeElement;if(t&&t.classList.contains("overtype-input")){let n=t.closest(".overtype-wrapper"),o=n==null?void 0:n._instance;o&&(o.options.showStats&&o.statsBar&&o._updateStats(),clearTimeout(o._selectionTimeout),o._selectionTimeout=setTimeout(()=>{o.updatePreview()},50))}}),v.globalListenersInitialized=!0)}};_(v,"instances",new WeakMap),_(v,"stylesInjected",!1),_(v,"globalListenersInitialized",!1),_(v,"instanceCount",0),_(v,"_autoMediaQuery",null),_(v,"_autoMediaListener",null),_(v,"_autoInstances",new Set),_(v,"_globalAutoTheme",!1),_(v,"_globalAutoCustomColors",null);var q=v;q.MarkdownParser=C;q.ShortcutsManager=oe;q.themes={solar:B,cave:$("cave")};q.getTheme=$;q.currentTheme=B;var li=q;var ci="overtype-webcomponent-container",cn="Start typing...",pn=["value","theme","toolbar","height","min-height","max-height","placeholder","font-size","line-height","padding","auto-resize","autofocus","show-stats","smart-lists","readonly","spellcheck"],Oe=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this._editor=null,this._initialized=!1,this._pendingOptions={},this._styleVersion=0,this._baseStyleElement=null,this._selectionChangeHandler=null,this._isConnected=!1,this._handleChange=this._handleChange.bind(this),this._handleKeydown=this._handleKeydown.bind(this),this._handleRender=this._handleRender.bind(this)}_decodeValue(e){return typeof e!="string"?"":e.replace(/\\r/g,"\r").replace(/\\n/g,`
984
- `).replace(/\\t/g," ")}static get observedAttributes(){return pn}connectedCallback(){this._isConnected=!0,this._initializeEditor()}disconnectedCallback(){this._isConnected=!1,this._cleanup()}attributeChangedCallback(e,t,n){if(t!==n&&!this._silentUpdate){if(!this._initialized){this._pendingOptions[e]=n;return}this._updateOption(e,n)}}_initializeEditor(){if(!(this._initialized||!this._isConnected))try{let e=document.createElement("div");e.className=ci;let t=this.getAttribute("height"),n=this.getAttribute("min-height"),o=this.getAttribute("max-height");t&&(e.style.height=t),n&&(e.style.minHeight=n),o&&(e.style.maxHeight=o),this._injectStyles(),this.shadowRoot.appendChild(e);let r=this._getOptionsFromAttributes(),s=new li(e,r);this._editor=s[0],this._initialized=!0,this._editor&&this._editor.textarea&&(this._editor.textarea.addEventListener("scroll",()=>{this._editor&&this._editor.preview&&this._editor.textarea&&(this._editor.preview.scrollTop=this._editor.textarea.scrollTop,this._editor.preview.scrollLeft=this._editor.textarea.scrollLeft)}),this._editor.textarea.addEventListener("input",a=>{this._editor&&this._editor.handleInput&&this._editor.handleInput(a)}),this._editor.textarea.addEventListener("keydown",a=>{this._editor&&this._editor.handleKeydown&&this._editor.handleKeydown(a)}),this._selectionChangeHandler=()=>{if(document.activeElement===this){let a=this.shadowRoot.activeElement;a&&a===this._editor.textarea&&(this._editor.options.showStats&&this._editor.statsBar&&this._editor._updateStats(),this._editor.linkTooltip&&this._editor.linkTooltip.checkCursorPosition&&this._editor.linkTooltip.checkCursorPosition())}},document.addEventListener("selectionchange",this._selectionChangeHandler)),this._applyPendingOptions(),this._dispatchEvent("ready",{editor:this._editor})}catch(e){let t=e&&e.message?e.message:String(e);console.warn("OverType Web Component initialization failed:",t),this._dispatchEvent("error",{error:{message:t}})}}_injectStyles(){let e=document.createElement("style"),t=this.getAttribute("theme")||"solar",n=$(t),o=this._getOptionsFromAttributes(),r=ye({...o,theme:n}),s=`
90
+ `}_setupAutoResize(){this.container.classList.add("overtype-auto-resize"),this.previousHeight=null,this._updateAutoHeight(),this.textarea.addEventListener("input",()=>this._updateAutoHeight()),window.addEventListener("resize",()=>this._updateAutoHeight())}_updateAutoHeight(){if(!this.options.autoResize)return;let e=this.textarea,t=this.preview,i=this.wrapper;if(this.container.dataset.mode==="preview"){i.style.removeProperty("height"),t.style.removeProperty("height"),t.style.removeProperty("overflow-y"),e.style.removeProperty("height"),e.style.removeProperty("overflow-y");return}let r=e.scrollTop;i.style.setProperty("height","auto","important"),e.style.setProperty("height","auto","important");let s=e.scrollHeight;if(this.options.minHeight){let p=parseInt(this.options.minHeight);s=Math.max(s,p)}let a="hidden";if(this.options.maxHeight){let p=parseInt(this.options.maxHeight);s>p&&(s=p,a="auto")}let l=s+"px";e.style.setProperty("height",l,"important"),e.style.setProperty("overflow-y",a,"important"),t.style.setProperty("height",l,"important"),t.style.setProperty("overflow-y",a,"important"),i.style.setProperty("height",l,"important"),e.scrollTop=r,t.scrollTop=r,this.previousHeight!==s&&(this.previousHeight=s)}showStats(e){this.options.showStats=e,e&&!this.statsBar?(this.statsBar=document.createElement("div"),this.statsBar.className="overtype-stats",this.container.appendChild(this.statsBar),this._updateStats()):e&&this.statsBar?this._updateStats():!e&&this.statsBar&&(this.statsBar.remove(),this.statsBar=null)}showNormalEditMode(){return this.container.dataset.mode="normal",this.updatePreview(),this._updateAutoHeight(),requestAnimationFrame(()=>{this.textarea.scrollTop=this.preview.scrollTop,this.textarea.scrollLeft=this.preview.scrollLeft}),this}showPlainTextarea(){if(this.container.dataset.mode="plain",this._updateAutoHeight(),this.toolbar){let e=this.container.querySelector('[data-action="toggle-plain"]');e&&(e.classList.remove("active"),e.title="Show markdown preview")}return this}showPreviewMode(){return this.container.dataset.mode="preview",this.updatePreview(),this._updateAutoHeight(),this}destroy(){if(v._autoInstances.delete(this),v._stopAutoListener(),this.fileUploadInitialized&&this._destroyFileUpload(),this.element.overTypeInstance=null,v.instances.delete(this.element),this.shortcuts&&this.shortcuts.destroy(),this.wrapper){let e=this.getValue();this.wrapper.remove(),this.element.textContent=e}this.initialized=!1}static init(e,t={}){return new v(e,t)}static initFromData(e,t={}){return v._resolveTargets(e).map(o=>{let r={...t};for(let s of o.attributes)if(s.name.startsWith("data-ot-")){let l=s.name.slice(8).replace(/-([a-z])/g,(p,c)=>c.toUpperCase());r[l]=v._parseDataValue(s.value)}return new v(o,r)[0]})}static _resolveTargets(e){if(e==null)throw new Error("Invalid target: must be selector string, Element, NodeList, or Array");if(typeof e=="string")return Array.from(document.querySelectorAll(e));if(e instanceof Element)return[e];if(e instanceof NodeList)return Array.from(e);if(Array.isArray(e))return e;if(typeof e.length=="number")return Array.from(e);throw new Error("Invalid target: must be selector string, Element, NodeList, or Array")}static _parseDataValue(e){return e==="true"?!0:e==="false"?!1:e==="null"?null:e!==""&&!isNaN(Number(e))?Number(e):e}static getInstance(e){let t;return e instanceof Element?t=e:t=v._resolveTargets(e)[0],t&&(t.overTypeInstance||v.instances.get(t))||null}static destroyAll(){document.querySelectorAll("[data-overtype-instance]").forEach(t=>{let i=v.getInstance(t);i&&i.destroy()})}static injectStyles(e=!1){if(v.stylesInjected&&!e)return;let t=document.querySelector("style.overtype-styles");t&&t.remove();let i=v.currentTheme||z,o=Le({theme:i}),r=document.createElement("style");r.className="overtype-styles",r.textContent=o,document.head.appendChild(r),v.stylesInjected=!0}static setTheme(e,t=null){if(v._globalAutoTheme=!1,v._globalAutoCustomColors=null,e==="auto"){v._globalAutoTheme=!0,v._globalAutoCustomColors=t,v._startAutoListener(),v._applyGlobalTheme(Ze("auto"),t);return}v._stopAutoListener(),v._applyGlobalTheme(e,t)}static _applyGlobalTheme(e,t=null){let i=typeof e=="string"?R(e):e;t&&(i=dt(i,t)),v.currentTheme=i,v.injectStyles(!0);let o=typeof i=="string"?i:i.name;document.querySelectorAll(".overtype-container").forEach(r=>{o&&r.setAttribute("data-theme",o)}),document.querySelectorAll(".overtype-wrapper").forEach(r=>{r.closest(".overtype-container")||o&&r.setAttribute("data-theme",o);let s=r._instance;s&&s.updatePreview()}),document.querySelectorAll("overtype-editor").forEach(r=>{o&&typeof r.setAttribute=="function"&&r.setAttribute("theme",o),typeof r.refreshTheme=="function"&&r.refreshTheme()})}static _startAutoListener(){v._autoMediaQuery||window.matchMedia&&(v._autoMediaQuery=window.matchMedia("(prefers-color-scheme: dark)"),v._autoMediaListener=e=>{let t=e.matches?"cave":"solar";v._globalAutoTheme&&v._applyGlobalTheme(t,v._globalAutoCustomColors),v._autoInstances.forEach(i=>i._applyResolvedTheme(t))},v._autoMediaQuery.addEventListener("change",v._autoMediaListener))}static _stopAutoListener(){v._autoInstances.size>0||v._globalAutoTheme||v._autoMediaQuery&&(v._autoMediaQuery.removeEventListener("change",v._autoMediaListener),v._autoMediaQuery=null,v._autoMediaListener=null)}static setCodeHighlighter(e){_.setCodeHighlighter(e),document.querySelectorAll(".overtype-wrapper").forEach(t=>{let i=t._instance;i&&i.updatePreview&&i.updatePreview()}),document.querySelectorAll("overtype-editor").forEach(t=>{if(typeof t.getEditor=="function"){let i=t.getEditor();i&&i.updatePreview&&i.updatePreview()}})}static setCustomSyntax(e){_.setCustomSyntax(e),document.querySelectorAll(".overtype-wrapper").forEach(t=>{let i=t._instance;i&&i.updatePreview&&i.updatePreview()}),document.querySelectorAll("overtype-editor").forEach(t=>{if(typeof t.getEditor=="function"){let i=t.getEditor();i&&i.updatePreview&&i.updatePreview()}})}static initGlobalListeners(){v.globalListenersInitialized||(document.addEventListener("input",e=>{if(e.target&&e.target.classList&&e.target.classList.contains("overtype-input")){let t=e.target.closest(".overtype-wrapper"),i=t==null?void 0:t._instance;i&&i.handleInput(e)}}),document.addEventListener("keydown",e=>{if(e.target&&e.target.classList&&e.target.classList.contains("overtype-input")){let t=e.target.closest(".overtype-wrapper"),i=t==null?void 0:t._instance;i&&i.handleKeydown(e)}}),document.addEventListener("focus",e=>{if(e.target&&e.target.classList&&e.target.classList.contains("overtype-input")){let t=e.target.closest(".overtype-wrapper"),i=t==null?void 0:t._instance;i&&i.handleFocus(e)}},!0),document.addEventListener("blur",e=>{if(e.target&&e.target.classList&&e.target.classList.contains("overtype-input")){let t=e.target.closest(".overtype-wrapper"),i=t==null?void 0:t._instance;i&&i.handleBlur(e)}},!0),document.addEventListener("scroll",e=>{if(e.target&&e.target.classList&&e.target.classList.contains("overtype-input")){let t=e.target.closest(".overtype-wrapper"),i=t==null?void 0:t._instance;i&&i.handleScroll(e)}},!0),document.addEventListener("selectionchange",e=>{let t=document.activeElement;if(t&&t.classList.contains("overtype-input")){let i=t.closest(".overtype-wrapper"),o=i==null?void 0:i._instance;o&&(o.options.showStats&&o.statsBar&&o._updateStats(),clearTimeout(o._selectionTimeout),o._selectionTimeout=setTimeout(()=>{o.updatePreview()},50))}}),v.globalListenersInitialized=!0)}};C(v,"instances",new WeakMap),C(v,"stylesInjected",!1),C(v,"globalListenersInitialized",!1),C(v,"instanceCount",0),C(v,"_autoMediaQuery",null),C(v,"_autoMediaListener",null),C(v,"_autoInstances",new Set),C(v,"_globalAutoTheme",!1),C(v,"_globalAutoCustomColors",null);var q=v;q.MarkdownParser=_;q.ShortcutsManager=re;q.themes={solar:z,cave:R("cave")};q.getTheme=R;q.currentTheme=z;var yn=q;var wn="overtype-webcomponent-container",yi="Start typing...",wi=["value","theme","toolbar","height","min-height","max-height","placeholder","font-size","line-height","padding","auto-resize","autofocus","show-stats","smart-lists","readonly","spellcheck"],qe=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"}),this._editor=null,this._initialized=!1,this._pendingOptions={},this._styleVersion=0,this._baseStyleElement=null,this._selectionChangeHandler=null,this._isConnected=!1,this._handleChange=this._handleChange.bind(this),this._handleKeydown=this._handleKeydown.bind(this),this._handleRender=this._handleRender.bind(this)}_decodeValue(e){return typeof e!="string"?"":e.replace(/\\r/g,"\r").replace(/\\n/g,`
91
+ `).replace(/\\t/g," ")}static get observedAttributes(){return wi}connectedCallback(){this._isConnected=!0,this._initializeEditor()}disconnectedCallback(){this._isConnected=!1,this._cleanup()}attributeChangedCallback(e,t,i){if(t!==i&&!this._silentUpdate){if(!this._initialized){this._pendingOptions[e]=i;return}this._updateOption(e,i)}}_initializeEditor(){if(!(this._initialized||!this._isConnected))try{let e=document.createElement("div");e.className=wn;let t=this.getAttribute("height"),i=this.getAttribute("min-height"),o=this.getAttribute("max-height");t&&(e.style.height=t),i&&(e.style.minHeight=i),o&&(e.style.maxHeight=o),this._injectStyles(),this.shadowRoot.appendChild(e);let r=this._getOptionsFromAttributes(),s=new yn(e,r);this._editor=s[0],this._initialized=!0,this._editor&&this._editor.textarea&&(this._editor.textarea.addEventListener("scroll",()=>{this._editor&&this._editor.preview&&this._editor.textarea&&(this._editor.preview.scrollTop=this._editor.textarea.scrollTop,this._editor.preview.scrollLeft=this._editor.textarea.scrollLeft)}),this._editor.textarea.addEventListener("input",a=>{this._editor&&this._editor.handleInput&&this._editor.handleInput(a)}),this._editor.textarea.addEventListener("keydown",a=>{this._editor&&this._editor.handleKeydown&&this._editor.handleKeydown(a)}),this._selectionChangeHandler=()=>{if(document.activeElement===this){let a=this.shadowRoot.activeElement;a&&a===this._editor.textarea&&(this._editor.options.showStats&&this._editor.statsBar&&this._editor._updateStats(),this._editor.linkTooltip&&this._editor.linkTooltip.checkCursorPosition&&this._editor.linkTooltip.checkCursorPosition())}},document.addEventListener("selectionchange",this._selectionChangeHandler)),this._applyPendingOptions(),this._dispatchEvent("ready",{editor:this._editor})}catch(e){let t=e&&e.message?e.message:String(e);console.warn("OverType Web Component initialization failed:",t),this._dispatchEvent("error",{error:{message:t}})}}_injectStyles(){let e=document.createElement("style"),t=this.getAttribute("theme")||"solar",i=R(t),o=this._getOptionsFromAttributes(),r=Le({...o,theme:i}),s=`
985
92
  /* Web Component Host Styles */
986
93
  :host {
987
94
  display: block;
@@ -1003,9 +110,9 @@ ${a}`:r;if(p){let k=i.value[i.selectionStart-1];i.selectionStart!==0&&k!=null&&!
1003
110
  }
1004
111
  `;this._styleVersion+=1;let a=`
1005
112
  /* overtype-webcomponent styles v${this._styleVersion} */
1006
- `;e.textContent=a+r+s,this._baseStyleElement=e,this.shadowRoot.appendChild(e)}_getOptionsFromAttributes(){let e={value:this.getAttribute("value")!==null?this._decodeValue(this.getAttribute("value")):(this.textContent||"").trim(),placeholder:this.getAttribute("placeholder")||cn,toolbar:this.hasAttribute("toolbar"),autofocus:this.hasAttribute("autofocus"),autoResize:this.hasAttribute("auto-resize"),showStats:this.hasAttribute("show-stats"),smartLists:!this.hasAttribute("smart-lists")||this.getAttribute("smart-lists")!=="false",spellcheck:this.hasAttribute("spellcheck")&&this.getAttribute("spellcheck")!=="false",onChange:this._handleChange,onKeydown:this._handleKeydown,onRender:this._handleRender},t=this.getAttribute("font-size");t&&(e.fontSize=t);let n=this.getAttribute("line-height");n&&(e.lineHeight=parseFloat(n)||1.6);let o=this.getAttribute("padding");o&&(e.padding=o);let r=this.getAttribute("min-height");r&&(e.minHeight=r);let s=this.getAttribute("max-height");return s&&(e.maxHeight=s),e}_applyPendingOptions(){for(let[e,t]of Object.entries(this._pendingOptions))this._updateOption(e,t);this._pendingOptions={}}_updateOption(e,t){if(this._editor)switch(e){case"value":{let n=this._decodeValue(t);this._editor.getValue()!==n&&this._editor.setValue(n||"")}break;case"theme":this._reinjectStyles(),this._editor&&this._editor.setTheme&&this._editor.setTheme(t||"solar");break;case"placeholder":this._editor&&(this._editor.options.placeholder=t||"",this._editor.textarea&&(this._editor.textarea.placeholder=t||""),this._editor.placeholderEl&&(this._editor.placeholderEl.textContent=t||""));break;case"readonly":this._editor.textarea&&(this._editor.textarea.readOnly=this.hasAttribute("readonly"));break;case"height":case"min-height":case"max-height":this._updateContainerHeight();break;case"toolbar":if(!!this.hasAttribute("toolbar")==!!this._editor.options.toolbar)return;this._reinitializeEditor();break;case"auto-resize":if(!!this.hasAttribute("auto-resize")==!!this._editor.options.autoResize)return;this._reinitializeEditor();break;case"show-stats":if(!!this.hasAttribute("show-stats")==!!this._editor.options.showStats)return;this._reinitializeEditor();break;case"font-size":{this._updateFontSize(t)&&this._reinjectStyles();break}case"line-height":{this._updateLineHeight(t)&&this._reinjectStyles();break}case"padding":this._reinjectStyles();break;case"smart-lists":{let n=!this.hasAttribute("smart-lists")||this.getAttribute("smart-lists")!=="false";if(!!this._editor.options.smartLists==!!n)return;this._reinitializeEditor();break}case"spellcheck":if(this._editor){let n=this.hasAttribute("spellcheck")&&this.getAttribute("spellcheck")!=="false";this._editor.options.spellcheck=n,this._editor.textarea&&this._editor.textarea.setAttribute("spellcheck",String(n))}break}}_updateContainerHeight(){let e=this.shadowRoot.querySelector(`.${ci}`);if(!e)return;let t=this.getAttribute("height"),n=this.getAttribute("min-height"),o=this.getAttribute("max-height");e.style.height=t||"",e.style.minHeight=n||"",e.style.maxHeight=o||""}_updateFontSize(e){return this._editor&&this._editor.wrapper?(this._editor.options.fontSize=e||"",this._editor.wrapper.style.setProperty("--instance-font-size",this._editor.options.fontSize),this._editor.updatePreview(),!0):!1}_updateLineHeight(e){if(this._editor&&this._editor.wrapper){let t=parseFloat(e),n=Number.isFinite(t)?t:this._editor.options.lineHeight;return this._editor.options.lineHeight=n,this._editor.wrapper.style.setProperty("--instance-line-height",String(n)),this._editor.updatePreview(),!0}return!1}_reinjectStyles(){this._baseStyleElement&&this._baseStyleElement.parentNode&&this._baseStyleElement.remove(),this._injectStyles()}_reinitializeEditor(){let e=this._editor?this._editor.getValue():"";this._cleanup(),this._initialized=!1,this.shadowRoot.innerHTML="",e&&!this.getAttribute("value")&&this.setAttribute("value",e),this._initializeEditor()}_handleChange(e){this._updateValueAttribute(e),!(!this._initialized||!this._editor)&&this._dispatchEvent("change",{value:e,editor:this._editor})}_handleKeydown(e){this._dispatchEvent("keydown",{event:e,editor:this._editor})}_handleRender(e,t){this._dispatchEvent("render",{preview:e,mode:t,editor:this._editor})}_updateValueAttribute(e){this.getAttribute("value")!==e&&(this._silentUpdate=!0,this.setAttribute("value",e),this._silentUpdate=!1)}_dispatchEvent(e,t={}){let n=new CustomEvent(e,{detail:t,bubbles:!0,composed:!0});this.dispatchEvent(n)}_cleanup(){this._selectionChangeHandler&&(document.removeEventListener("selectionchange",this._selectionChangeHandler),this._selectionChangeHandler=null),this._editor&&typeof this._editor.destroy=="function"&&this._editor.destroy(),this._editor=null,this._initialized=!1,this.shadowRoot&&(this.shadowRoot.innerHTML="")}refreshTheme(){this._initialized&&this._reinjectStyles()}getValue(){return this._editor?this._editor.getValue():this.getAttribute("value")||""}setValue(e){this._editor?this._editor.setValue(e):this.setAttribute("value",e)}getHTML(){return this._editor?this._editor.getRenderedHTML(!1):""}insertText(e){!this._editor||typeof e!="string"||this._editor.insertText(e)}focus(){this._editor&&this._editor.textarea&&this._editor.textarea.focus()}blur(){this._editor&&this._editor.textarea&&this._editor.textarea.blur()}getStats(){if(!this._editor||!this._editor.textarea)return null;let e=this._editor.textarea.value,t=e.split(`
1007
- `),n=e.length,o=e.split(/\s+/).filter(c=>c.length>0).length,r=this._editor.textarea.selectionStart,a=e.substring(0,r).split(`
1008
- `),l=a.length,p=a[a.length-1].length+1;return{characters:n,words:o,lines:t.length,line:l,column:p}}isReady(){return this._initialized&&this._editor!==null}getEditor(){return this._editor}showToolbar(){this._editor&&this._editor.showToolbar()}hideToolbar(){this._editor&&this._editor.hideToolbar()}};customElements.get("overtype-editor")||customElements.define("overtype-editor",Oe);var dn=Oe;return vi(hn);})();
113
+ `;e.textContent=a+r+s,this._baseStyleElement=e,this.shadowRoot.appendChild(e)}_getOptionsFromAttributes(){let e={value:this.getAttribute("value")!==null?this._decodeValue(this.getAttribute("value")):(this.textContent||"").trim(),placeholder:this.getAttribute("placeholder")||yi,toolbar:this.hasAttribute("toolbar"),autofocus:this.hasAttribute("autofocus"),autoResize:this.hasAttribute("auto-resize"),showStats:this.hasAttribute("show-stats"),smartLists:!this.hasAttribute("smart-lists")||this.getAttribute("smart-lists")!=="false",spellcheck:this.hasAttribute("spellcheck")&&this.getAttribute("spellcheck")!=="false",onChange:this._handleChange,onKeydown:this._handleKeydown,onRender:this._handleRender},t=this.getAttribute("font-size");t&&(e.fontSize=t);let i=this.getAttribute("line-height");i&&(e.lineHeight=parseFloat(i)||1.6);let o=this.getAttribute("padding");o&&(e.padding=o);let r=this.getAttribute("min-height");r&&(e.minHeight=r);let s=this.getAttribute("max-height");return s&&(e.maxHeight=s),e}_applyPendingOptions(){for(let[e,t]of Object.entries(this._pendingOptions))this._updateOption(e,t);this._pendingOptions={}}_updateOption(e,t){if(this._editor)switch(e){case"value":{let i=this._decodeValue(t);this._editor.getValue()!==i&&this._editor.setValue(i||"")}break;case"theme":this._reinjectStyles(),this._editor&&this._editor.setTheme&&this._editor.setTheme(t||"solar");break;case"placeholder":this._editor&&(this._editor.options.placeholder=t||"",this._editor.textarea&&(this._editor.textarea.placeholder=t||""),this._editor.placeholderEl&&(this._editor.placeholderEl.textContent=t||""));break;case"readonly":this._editor.textarea&&(this._editor.textarea.readOnly=this.hasAttribute("readonly"));break;case"height":case"min-height":case"max-height":this._updateContainerHeight();break;case"toolbar":if(!!this.hasAttribute("toolbar")==!!this._editor.options.toolbar)return;this._reinitializeEditor();break;case"auto-resize":if(!!this.hasAttribute("auto-resize")==!!this._editor.options.autoResize)return;this._reinitializeEditor();break;case"show-stats":if(!!this.hasAttribute("show-stats")==!!this._editor.options.showStats)return;this._reinitializeEditor();break;case"font-size":{this._updateFontSize(t)&&this._reinjectStyles();break}case"line-height":{this._updateLineHeight(t)&&this._reinjectStyles();break}case"padding":this._reinjectStyles();break;case"smart-lists":{let i=!this.hasAttribute("smart-lists")||this.getAttribute("smart-lists")!=="false";if(!!this._editor.options.smartLists==!!i)return;this._reinitializeEditor();break}case"spellcheck":if(this._editor){let i=this.hasAttribute("spellcheck")&&this.getAttribute("spellcheck")!=="false";this._editor.options.spellcheck=i,this._editor.textarea&&this._editor.textarea.setAttribute("spellcheck",String(i))}break}}_updateContainerHeight(){let e=this.shadowRoot.querySelector(`.${wn}`);if(!e)return;let t=this.getAttribute("height"),i=this.getAttribute("min-height"),o=this.getAttribute("max-height");e.style.height=t||"",e.style.minHeight=i||"",e.style.maxHeight=o||""}_updateFontSize(e){return this._editor&&this._editor.wrapper?(this._editor.options.fontSize=e||"",this._editor.wrapper.style.setProperty("--instance-font-size",this._editor.options.fontSize),this._editor.updatePreview(),!0):!1}_updateLineHeight(e){if(this._editor&&this._editor.wrapper){let t=parseFloat(e),i=Number.isFinite(t)?t:this._editor.options.lineHeight;return this._editor.options.lineHeight=i,this._editor.wrapper.style.setProperty("--instance-line-height",String(i)),this._editor.updatePreview(),!0}return!1}_reinjectStyles(){this._baseStyleElement&&this._baseStyleElement.parentNode&&this._baseStyleElement.remove(),this._injectStyles()}_reinitializeEditor(){let e=this._editor?this._editor.getValue():"";this._cleanup(),this._initialized=!1,this.shadowRoot.innerHTML="",e&&!this.getAttribute("value")&&this.setAttribute("value",e),this._initializeEditor()}_handleChange(e){this._updateValueAttribute(e),!(!this._initialized||!this._editor)&&this._dispatchEvent("change",{value:e,editor:this._editor})}_handleKeydown(e){this._dispatchEvent("keydown",{event:e,editor:this._editor})}_handleRender(e,t){this._dispatchEvent("render",{preview:e,mode:t,editor:this._editor})}_updateValueAttribute(e){this.getAttribute("value")!==e&&(this._silentUpdate=!0,this.setAttribute("value",e),this._silentUpdate=!1)}_dispatchEvent(e,t={}){let i=new CustomEvent(e,{detail:t,bubbles:!0,composed:!0});this.dispatchEvent(i)}_cleanup(){this._selectionChangeHandler&&(document.removeEventListener("selectionchange",this._selectionChangeHandler),this._selectionChangeHandler=null),this._editor&&typeof this._editor.destroy=="function"&&this._editor.destroy(),this._editor=null,this._initialized=!1,this.shadowRoot&&(this.shadowRoot.innerHTML="")}refreshTheme(){this._initialized&&this._reinjectStyles()}getValue(){return this._editor?this._editor.getValue():this.getAttribute("value")||""}setValue(e){this._editor?this._editor.setValue(e):this.setAttribute("value",e)}getHTML(){return this._editor?this._editor.getRenderedHTML(!1):""}insertText(e){!this._editor||typeof e!="string"||this._editor.insertText(e)}focus(){this._editor&&this._editor.textarea&&this._editor.textarea.focus()}blur(){this._editor&&this._editor.textarea&&this._editor.textarea.blur()}getStats(){if(!this._editor||!this._editor.textarea)return null;let e=this._editor.textarea.value,t=e.split(`
114
+ `),i=e.length,o=e.split(/\s+/).filter(c=>c.length>0).length,r=this._editor.textarea.selectionStart,a=e.substring(0,r).split(`
115
+ `),l=a.length,p=a[a.length-1].length+1;return{characters:i,words:o,lines:t.length,line:l,column:p}}isReady(){return this._initialized&&this._editor!==null}getEditor(){return this._editor}showToolbar(){this._editor&&this._editor.showToolbar()}hideToolbar(){this._editor&&this._editor.hideToolbar()}};customElements.get("overtype-editor")||customElements.define("overtype-editor",qe);var bi=qe;return _n(xi);})();
1009
116
  /**
1010
117
  * OverType - A lightweight markdown editor library with perfect WYSIWYG alignment
1011
118
  * @version 1.0.0