overtype 2.2.0 → 2.3.0

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.2.0
2
+ * OverType v2.3.0
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 C=(i,e,t)=>(fi(i,typeof e!="symbol"?e+"":e,t),t);var hn={};mi(hn,{default:()=>dn});var T=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)=>{if(s=this.parseInlineElements(s),t){let a=r.toLowerCase()==="x";return`${o}<li class="task-list"><input type="checkbox" ${a?"checked":""}> ${s}</li>`}else return`${o}<li class="task-list"><span class="syntax-marker">- [${r}] </span>${s}</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 c=new RegExp("(?<!`)(`+)(?!`)((?:(?!\\1).)+?)(\\1)(?!`)","g"),d,l=[];for(;(d=c.exec(e))!==null;){let p=d.index,u=d.index+d[0].length;r.some(f=>p>=f.start&&u<=f.end)||l.push({match:d[0],index:d.index,openTicks:d[1],content:d[2],closeTicks:d[3]})}return l.sort((p,u)=>u.index-p.index),l.forEach(p=>{let u=`\uE000${n++}\uE001`;t.set(u,{type:"code",original:p.match,openTicks:p.openTicks,content:p.content,closeTicks:p.closeTicks}),o=o.substring(0,p.index)+u+o.substring(p.index+p.match.length)}),o=o.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(p,u,h)=>{let f=`\uE000${n++}\uE001`;return t.set(f,{type:"link",original:p,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((l,p)=>{if(a.includes(p)&&l.type==="code"){let u=`<code><span class="syntax-marker">${l.openTicks}</span>${l.content}<span class="syntax-marker">${l.closeTicks}</span></code>`;a=a.replace(p,u)}}),a=this.parseStrikethrough(a),a=this.parseBold(a),a=this.parseItalic(a);let c=`--link-${this.linkIndex++}`;s=`<a href="${this.sanitizeUrl(r.url)}" style="anchor-name: ${c}"><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(`
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 T=(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)=>{if(s=this.parseInlineElements(s),t){let a=r.toLowerCase()==="x";return`${o}<li class="task-list"><input type="checkbox" ${a?"checked":""}> ${s}</li>`}else return`${o}<li class="task-list"><span class="syntax-marker">- [${r}] </span>${s}</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 c=new RegExp("(?<!`)(`+)(?!`)((?:(?!\\1).)+?)(\\1)(?!`)","g"),d,l=[];for(;(d=c.exec(e))!==null;){let p=d.index,u=d.index+d[0].length;r.some(f=>p>=f.start&&u<=f.end)||l.push({match:d[0],index:d.index,openTicks:d[1],content:d[2],closeTicks:d[3]})}return l.sort((p,u)=>u.index-p.index),l.forEach(p=>{let u=`\uE000${n++}\uE001`;t.set(u,{type:"code",original:p.match,openTicks:p.openTicks,content:p.content,closeTicks:p.closeTicks}),o=o.substring(0,p.index)+u+o.substring(p.index+p.match.length)}),o=o.replace(/\[([^\]]+)\]\(([^)]+)\)/g,(p,u,h)=>{let f=`\uE000${n++}\uE001`;return t.set(f,{type:"link",original:p,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((l,p)=>{if(a.includes(p)&&l.type==="code"){let u=`<code><span class="syntax-marker">${l.openTicks}</span>${l.content}<span class="syntax-marker">${l.closeTicks}</span></code>`;a=a.replace(p,u)}}),a=this.parseStrikethrough(a),a=this.parseBold(a),a=this.parseItalic(a);let c=`--link-${this.linkIndex++}`;s=`<a href="${this.sanitizeUrl(r.url)}" style="anchor-name: ${c}"><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
9
  `),a=!1,d=s.map((l,p)=>{if(n&&p===t)return`<div class="raw-line">${this.escapeHtml(l)||"&nbsp;"}</div>`;if(/^```[^`]*$/.test(l))return a=!a,this.applyCustomSyntax(this.parseLine(l,r));if(a){let h=this.escapeHtml(l);return`<div>${this.preserveIndentation(h,l)||"&nbsp;"}</div>`}return this.applyCustomSyntax(this.parseLine(l,r))}).join("");return this.postProcessHTML(d,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,c=Array.from(n.children);for(let d=0;d<c.length;d++){let l=c[d];if(!l.parentNode)continue;let p=l.querySelector(".code-fence");if(p){let h=p.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,l.nextSibling),s._codeElement=f,s._language=m,s._codeContent="";continue}}if(a&&s&&l.tagName==="DIV"&&!l.querySelector(".code-fence")){let h=s._codeElement||s.querySelector("code");s._codeContent.length>0&&(s._codeContent+=`
10
10
  `);let f=l.textContent.replace(/\u00A0/g," ");s._codeContent+=f,h.textContent.length>0&&(h.textContent+=`
11
11
  `),h.textContent+=f,l.remove();continue}let u=null;if(l.tagName==="DIV"&&(u=l.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,l),r=m);let g=[];for(let y of l.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),l.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(c=>{let d=c.match(/<div>((?:&nbsp;)*)<li/),l=c.match(/<li class="bullet-list">.*?<\/li>/);if(d&&l){let p=d[1];return l[0].replace(/<li class="bullet-list">/,`<li class="bullet-list">${p}`)}return l?l[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(c=>{let d=c.match(/<div>((?:&nbsp;)*)<li/),l=c.match(/<li class="ordered-list">.*?<\/li>/);if(d&&l){let p=d[1];return l[0].replace(/<li class="ordered-list">/,`<li class="ordered-list">${p}`)}return l?l[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,c)=>{let l=(a.match(/<div>(.*?)<\/div>/gs)||[]).map(g=>g.replace(/<div>(.*?)<\/div>/s,"$1").replace(/&nbsp;/g," ")).join(`
12
12
  `),p=s.slice(3).trim(),u=p?` class="language-${p}"`:"",h=l,f=t||this.codeHighlighter;if(f)try{let g=l.replace(/&quot;/g,'"').replace(/&#39;/g,"'").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&amp;/g,"&"),y=f(g,p);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">${c}</span></div>`,m}),n}static getListContext(e,t){let n=e.split(`
13
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],c=s+a.length,d=a.match(this.LIST_PATTERNS.checkbox);if(d)return{inList:!0,listType:"checkbox",indent:d[1],marker:"-",checked:d[2]==="x",content:d[3],lineStart:s,lineEnd:c,markerEndPos:s+d[1].length+d[2].length+5};let l=a.match(this.LIST_PATTERNS.bullet);if(l)return{inList:!0,listType:"bullet",indent:l[1],marker:l[2],content:l[3],lineStart:s,lineEnd:c,markerEndPos:s+l[1].length+l[2].length+1};let p=a.match(this.LIST_PATTERNS.numbered);return p?{inList:!0,listType:"numbered",indent:p[1],marker:parseInt(p[2]),content:p[3],lineStart:s,lineEnd:c,markerEndPos:s+p[1].length+p[2].length+2}:{inList:!1,listType:null,indent:"",marker:null,content:a,lineStart:s,lineEnd:c,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
14
  `),n=new Map,o=!1;return t.map(s=>{let a=s.match(this.LIST_PATTERNS.numbered);if(a){let c=a[1],d=c.length,l=a[3];o||n.clear();let p=(n.get(d)||0)+1;n.set(d,p);for(let[u]of n)u>d&&n.delete(u);return o=!0,`${c}${p}. ${l}`}else return(s.trim()===""||!s.match(/^\s/))&&(o=!1,n.clear()),s}).join(`
15
- `)}};C(T,"linkIndex",0),C(T,"codeHighlighter",null),C(T,"customSyntax",null),C(T,"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"}},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"}},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){let e=[];for(let[t,n]of Object.entries(i)){let o=t.replace(/([A-Z])/g,"-$1").toLowerCase();e.push(`--${o}: ${n};`)}return e.join(`
16
- `)}function Qe(i,e={}){return{...i,colors:{...i.colors,...e}}}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?`
15
+ `)}};T(C,"linkIndex",0),T(C,"codeHighlighter",null),T(C,"customSyntax",null),T(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:"#1a1a1a",h1:"#1a1a1a",h2:"#2a2a2a",h3:"#3a3a3a",strong:"inherit",em:"inherit",link:"#0066cc",code:"#1a1a1a",codeBg:"rgba(135, 131, 120, 0.15)",blockquote:"#555",hr:"#ddd",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:"#e0e0e0",h2:"#d0d0d0",h3:"#c0c0c0",strong:"inherit",em:"inherit",link:"#6cb6e0",code:"#c5dde8",codeBg:"rgba(255, 255, 255, 0.08)",blockquote:"#9aa8b4",hr:"rgba(255, 255, 255, 0.15)",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}: ${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?`
17
17
  @media (max-width: 640px) {
18
18
  .overtype-wrapper .overtype-input,
19
19
  .overtype-wrapper .overtype-preview {
@@ -21,7 +21,7 @@ var OverTypeEditor=(()=>{var ve=Object.defineProperty;var di=Object.getOwnProper
21
21
  `)}
22
22
  }
23
23
  }
24
- `:"",c=r&&r.colors?Q(r.colors):"";return`
24
+ `:"",c=r&&r.colors?Q(r.colors,r.previewColors):"";return`
25
25
  /* OverType Editor Styles */
26
26
 
27
27
  /* Middle-ground CSS Reset - Prevent parent styles from leaking in */
@@ -692,27 +692,29 @@ var OverTypeEditor=(()=>{var ve=Object.defineProperty;var di=Object.getOwnProper
692
692
  }
693
693
 
694
694
  /* Headers - restore proper sizing in preview mode */
695
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h1,
696
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h2,
695
+ .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h1,
696
+ .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h2,
697
697
  .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h3 {
698
698
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif !important;
699
699
  font-weight: 600 !important;
700
700
  margin: 0 !important;
701
701
  display: block !important;
702
- color: inherit !important; /* Use parent text color */
703
- line-height: 1 !important; /* Tight line height for headings */
702
+ line-height: 1 !important;
704
703
  }
705
-
706
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h1 {
707
- font-size: 2em !important;
704
+
705
+ .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h1 {
706
+ font-size: 2em !important;
707
+ color: var(--preview-h1, #222) !important;
708
708
  }
709
-
710
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h2 {
711
- font-size: 1.5em !important;
709
+
710
+ .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h2 {
711
+ font-size: 1.5em !important;
712
+ color: var(--preview-h2, #333) !important;
712
713
  }
713
-
714
- .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h3 {
715
- font-size: 1.17em !important;
714
+
715
+ .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview h3 {
716
+ font-size: 1.17em !important;
717
+ color: var(--preview-h3, #444) !important;
716
718
  }
717
719
 
718
720
  /* Lists - restore list styling in preview mode */
@@ -762,14 +764,14 @@ var OverTypeEditor=(()=>{var ve=Object.defineProperty;var di=Object.getOwnProper
762
764
  .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview a {
763
765
  pointer-events: auto !important;
764
766
  cursor: pointer !important;
765
- color: var(--link, #0066cc) !important;
767
+ color: var(--preview-link, #0066cc) !important;
766
768
  text-decoration: underline !important;
767
769
  }
768
770
 
769
771
  /* Code blocks - proper pre/code styling in preview mode */
770
772
  .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview pre.code-block {
771
- background: var(--code-bg, rgba(244, 211, 94, 0.4)) !important;
772
- color: var(--code, #0d3b66) !important;
773
+ background: var(--preview-code-bg, rgba(135, 131, 120, 0.15)) !important;
774
+ color: var(--preview-code, #333) !important;
773
775
  padding: 1.2em !important;
774
776
  border-radius: 3px !important;
775
777
  overflow-x: auto !important;
@@ -798,7 +800,8 @@ var OverTypeEditor=(()=>{var ve=Object.defineProperty;var di=Object.getOwnProper
798
800
  /* Blockquotes - enhanced styling in preview mode */
799
801
  .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview .blockquote {
800
802
  display: block !important;
801
- border-left: 4px solid var(--blockquote, #ddd) !important;
803
+ border-left: 4px solid var(--preview-blockquote, #666) !important;
804
+ color: var(--preview-blockquote, #666) !important;
802
805
  padding-left: 1em !important;
803
806
  margin: 1em 0 !important;
804
807
  font-style: italic !important;
@@ -809,14 +812,16 @@ var OverTypeEditor=(()=>{var ve=Object.defineProperty;var di=Object.getOwnProper
809
812
  font-family: Georgia, 'Times New Roman', serif !important;
810
813
  font-size: 16px !important;
811
814
  line-height: 1.8 !important;
812
- color: var(--text, #333) !important; /* Consistent text color */
815
+ color: var(--preview-text, #333) !important;
816
+ background: var(--preview-bg, transparent) !important;
813
817
  }
814
818
 
815
819
  /* Inline code in preview mode - keep monospace */
816
820
  .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview code {
817
821
  font-family: ${n} !important;
818
822
  font-size: 0.9em !important;
819
- background: rgba(135, 131, 120, 0.15) !important;
823
+ background: var(--preview-code-bg, rgba(135, 131, 120, 0.15)) !important;
824
+ color: var(--preview-code, #333) !important;
820
825
  padding: 0.2em 0.4em !important;
821
826
  border-radius: 3px !important;
822
827
  }
@@ -824,18 +829,18 @@ var OverTypeEditor=(()=>{var ve=Object.defineProperty;var di=Object.getOwnProper
824
829
  /* Strong and em elements in preview mode */
825
830
  .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview strong {
826
831
  font-weight: 700 !important;
827
- color: inherit !important; /* Use parent text color */
832
+ color: var(--preview-strong, inherit) !important;
828
833
  }
829
834
 
830
835
  .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview em {
831
836
  font-style: italic !important;
832
- color: inherit !important; /* Use parent text color */
837
+ color: var(--preview-em, inherit) !important;
833
838
  }
834
839
 
835
840
  /* HR in preview mode */
836
841
  .overtype-container[data-mode="preview"] .overtype-wrapper .overtype-preview .hr-marker {
837
842
  display: block !important;
838
- border-top: 2px solid var(--hr, #ddd) !important;
843
+ border-top: 2px solid var(--preview-hr, #ddd) !important;
839
844
  text-indent: -9999px !important;
840
845
  height: 2px !important;
841
846
  }
@@ -885,12 +890,12 @@ ${a}`:r;if(d){let k=i.value[i.selectionStart-1];i.selectionStart!==0&&k!=null&&!
885
890
  `),t=/^\d+\.\s+/,n=e.every(r=>t.test(r)),o=e;return n&&(o=e.map(r=>r.replace(t,""))),{text:o.join(`
886
891
  `),processed:n}}function tt(i){let e=i.split(`
887
892
  `),t="- ",n=e.every(r=>r.startsWith(t)),o=e;return n&&(o=e.map(r=>r.slice(t.length))),{text:o.join(`
888
- `),processed:n}}function re(i,e){return e?"- ":`${i+1}. `}function Ti(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 Ci(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,c]=Ti(e,r),d=c.split(`
893
+ `),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 Ti(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,c]=Ci(e,r),d=c.split(`
889
894
  `).map((m,g)=>`${re(g,e.unorderedList)}${m}`),l=d.reduce((m,g,y)=>m+re(y,e.unorderedList).length,0),p=d.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-l),{text:c,selectionStart:n,selectionEnd:o};let{newlinesToAppend:u,newlinesToPrepend:h}=Re(i),f=u+d.join(`
890
- `)+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+l-p):(n=Math.max(i.selectionStart+u.length,0),o=i.selectionEnd+u.length+l),{text:f,selectionStart:n,selectionEnd:o}}function rt(i,e){let t=xe(i,n=>Ci(n,e),{adjustSelection:(n,o,r,s)=>{let a=i.value.slice(s,i.selectionEnd),c=/^\d+\.\s+/,d=/^- /,l=c.test(a),p=d.test(a),u=e.orderedList&&l||e.unorderedList&&p;if(o===r)if(u){let h=a.match(e.orderedList?c:d),f=h?h[0].length:0;return{start:Math.max(o-f,s),end:Math.max(o-f,s)}}else if(l||p){let h=a.match(l?c:d),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?c:d),f=h?h[0].length:0;return{start:Math.max(o-f,s),end:Math.max(r-f,s)}}else if(l||p){let h=a.match(l?c:d),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}}}});V(i,t)}function Ai(i){if(!i)return[];let e=[],{selectionStart:t,selectionEnd:n,value:o}=i,r=o.split(`
895
+ `)+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+l-p):(n=Math.max(i.selectionStart+u.length,0),o=i.selectionEnd+u.length+l),{text:f,selectionStart:n,selectionEnd:o}}function rt(i,e){let t=xe(i,n=>Ti(n,e),{adjustSelection:(n,o,r,s)=>{let a=i.value.slice(s,i.selectionEnd),c=/^\d+\.\s+/,d=/^- /,l=c.test(a),p=d.test(a),u=e.orderedList&&l||e.unorderedList&&p;if(o===r)if(u){let h=a.match(e.orderedList?c:d),f=h?h[0].length:0;return{start:Math.max(o-f,s),end:Math.max(o-f,s)}}else if(l||p){let h=a.match(l?c:d),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?c:d),f=h?h[0].length:0;return{start:Math.max(o-f,s),end:Math.max(r-f,s)}}else if(l||p){let h=a.match(l?c:d),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}}}});V(i,t)}function Ai(i){if(!i)return[];let e=[],{selectionStart:t,selectionEnd:n,value:o}=i,r=o.split(`
891
896
  `),s=0,a="";for(let p of r){if(t>=s&&t<=s+p.length){a=p;break}s+=p.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 c=Math.max(0,t-10),d=Math.min(o.length,n+10),l=o.slice(c,d);if(l.includes("**")){let p=o.slice(Math.max(0,t-100),t),u=o.slice(n,Math.min(o.length,n+100)),h=p.lastIndexOf("**"),f=u.indexOf("**");h!==-1&&f!==-1&&e.push("bold")}if(l.includes("_")){let p=o.slice(Math.max(0,t-100),t),u=o.slice(n,Math.min(o.length,n+100)),h=p.lastIndexOf("_"),f=u.indexOf("_");h!==-1&&f!==-1&&e.push("italic")}if(l.includes("`")){let p=o.slice(Math.max(0,t-100),t),u=o.slice(n,Math.min(o.length,n+100));p.includes("`")&&u.includes("`")&&e.push("code")}if(l.includes("[")&&l.includes("]")){let p=o.slice(Math.max(0,t-100),t),u=o.slice(n,Math.min(o.length,n+100)),h=p.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),V(i,t),be(i,"After")}function at(i){if(!i||i.disabled||i.readOnly)return;let e=F(R.italic),t=ke(i,e);V(i,t)}function lt(i){if(!i||i.disabled||i.readOnly)return;let e=F(R.code),t=ke(i,e);V(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);V(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),V(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});V(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,c=s;for(;c>0&&r[c-1]!==`
892
897
  `;)c--;let d=a;for(;d<r.length&&r[d]!==`
893
- `;)d++;let l=r.slice(c,d);x("insertHeader",`Current line (before): "${l}"`);let p=l.match(/^(#{1,6})\s*/),u=p?p[1].length:0,h=p?p[0].length:0;x("insertHeader","Existing header check:"),x("insertHeader",` - Match: ${p?`"${p[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 ============"),V(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}),_i={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=>_i[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),c=W(e),d=r==="y",l=n.x+n.width/2-o.width/2,p=n.y+n.height/2-o.height/2,u=n[a]/2-o[a]/2,h;switch(c){case"top":h={x:l,y:n.y-o.height};break;case"bottom":h={x:l,y:n.y+n.height};break;case"right":h={x:n.x+n.width,y:p};break;case"left":h={x:n.x-o.width,y:p};break;default:h={x:n.x,y:n.y}}switch(pe(e)){case"start":h[s]-=u*(t&&d?-1:1);break;case"end":h[s]+=u*(t&&d?-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:c}=i,{boundary:d="clippingAncestors",rootBoundary:l="viewport",elementContext:p="floating",altBoundary:u=!1,padding:h=0}=ce(e,i),f=St(h),g=a[u?p==="floating"?"reference":"floating":p],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:d,rootBoundary:l,strategy:c})),b=p==="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:c}):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 Tt=async(i,e,t)=>{let{placement:n="bottom",strategy:o="absolute",middleware:r=[],platform:s}=t,a=r.filter(Boolean),c=await(s.isRTL==null?void 0:s.isRTL(e)),d=await s.getElementRects({reference:i,floating:e,strategy:o}),{x:l,y:p}=Lt(d,n,c),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:l,y:p,initialPlacement:n,placement:u,strategy:o,middlewareData:h,rects:d,platform:{...s,detectOverflow:(m=s.detectOverflow)!=null?m:Et},elements:{reference:i,floating:e}});l=w!=null?w:l,p=S!=null?S:p,h={...h,[y]:{...h[y],...k}},E&&f<=50&&(f++,typeof E=="object"&&(E.placement&&(u=E.placement),E.rects&&(d=E.rects===!0?await s.getElementRects({reference:i,floating:e,strategy:o}):E.rects),{x:l,y:p}=Lt(d,u,c)),g=-1)}return{x:l,y:p,placement:u,strategy:o,middlewareData:h}};var Ct=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:c,elements:d}=e,{mainAxis:l=!0,crossAxis:p=!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(c.isRTL==null?void 0:c.isRTL(d.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 c.detectOverflow(e,g),ge=[],ee=((n=r.flip)==null?void 0:n.overflows)||[];if(l&&ge.push(Y[y]),p){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&&(!(p==="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 j=N(M.placement);return j===b||j==="y"}return!0}).map(M=>[M.placement,M.overflows.filter(j=>j>0).reduce((j,pi)=>j+pi,0)]).sort((M,j)=>M[1]-j[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),c=N(t)==="y",d=Ii.has(s)?-1:1,l=r&&c?-1:1,p=ce(e,i),{mainAxis:u,crossAxis:h,alignmentAxis:f}=typeof p=="number"?{mainAxis:p,crossAxis:0,alignmentAxis:null}:{mainAxis:p.mainAxis||0,crossAxis:p.crossAxis||0,alignmentAxis:p.alignmentAxis};return a&&typeof f=="number"&&(h=a==="end"?f*-1:f),c?{x:h*l,y:u*d}:{x:u*d,y:h*l}}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,c=await Bi(e,i);return s===((t=a.offset)==null?void 0:t.placement)&&(n=a.arrow)!=null&&n.alignmentOffset?{}:{x:o+c.x,y:r+c.y,data:{...c,placement:s}}}}},_t=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:c={fn:y=>{let{x:b,y:w}=y;return{x:b,y:w}}},...d}=ce(i,e),l={x:t,y:n},p=await r.detectOverflow(e,d),u=N(W(o)),h=Fe(u),f=l[h],m=l[u];if(s){let y=h==="y"?"top":"left",b=h==="y"?"bottom":"right",w=f+p[y],S=f-p[b];f=ze(w,f,S)}if(a){let y=u==="y"?"top":"left",b=u==="y"?"bottom":"right",w=m+p[y],S=m-p[b];m=ze(w,m,S)}let g=c.fn({...e,[h]:f,[u]:m});return{...g,data:{x:g.x-t,y:g.y-n,enabled:{[h]:s,[u]:a}}}}}};function Te(){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 Te()?i instanceof Node||i instanceof A(i).Node:!1}function _(i){return Te()?i instanceof Element||i instanceof A(i).Element:!1}function P(i){return Te()?i instanceof HTMLElement||i instanceof A(i).HTMLElement:!1}function Ht(i){return!Te()||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"],ji=["transform","translate","scale","rotate","perspective","filter"],Vi=["paint","layout","strict","content"];function Ce(i){let e=Ae(),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)||ji.some(n=>(t.willChange||"").includes(n))||Vi.some(n=>(t.contain||"").includes(n))}function Pt(i){let e=D(i);for(;P(e)&&!X(e);){if(Ce(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 _(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=_e(s);return e.concat(s,s.visualViewport||[],te(o)?o:[],a&&t?Ee(a):[])}return e.concat(o,Ee(o,[],t))}function _e(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 _(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?_(n)&&(s=ie(n)):s=ie(i));let a=qi(r,t,n)?Nt(r):O(0),c=(o.left+a.x)/s.x,d=(o.top+a.y)/s.y,l=o.width/s.x,p=o.height/s.y;if(r){let u=A(r),h=n&&_(n)?A(n):n,f=u,m=_e(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;c*=g.x,d*=g.y,l*=g.x,p*=g.y,c+=w,d+=S,f=A(m),m=_e(f)}}return G({width:l,height:p,x:c,y:d})}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 c={scrollLeft:0,scrollTop:0},d=O(1),l=O(0),p=P(n);if((p||!p&&!r)&&((J(n)!=="body"||te(s))&&(c=he(n)),P(n))){let h=ue(n);d=ie(n),l.x=h.x+n.clientLeft,l.y=h.y+n.clientTop}let u=s&&!p&&!r?Dt(s,c):O(0);return{width:t.width*d.x,height:t.height*d.y,x:t.x*d.x-c.scrollLeft*d.x+l.x+u.x,y:t.y*d.y-c.scrollTop*d.y+l.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,c=0;if(o){r=o.width,s=o.height;let l=Ae();(!l||l&&e==="fixed")&&(a=o.offsetLeft,c=o.offsetTop)}let d=He(n);if(d<=0){let l=n.ownerDocument,p=l.body,u=getComputedStyle(p),h=l.compatMode==="CSS1Compat"&&parseFloat(u.marginLeft)+parseFloat(u.marginRight)||0,f=Math.abs(n.clientWidth-p.clientWidth-h);f<=Rt&&(r-=f)}else d<=Rt&&(r+=d);return{width:r,height:s,x:a,y:c}}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,c=o*r.x,d=n*r.y;return{width:s,height:a,x:c,y:d}}function It(i,e,t){let n;if(e==="viewport")n=Gi(i,t);else if(e==="document")n=Qi(I(i));else if(_(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 jt(i,e){let t=D(i);return t===e||!_(t)||X(t)?!1:H(t).position==="fixed"||jt(t,e)}function Yi(i,e){let t=e.get(i);if(t)return t;let n=Ee(i,[],!1).filter(a=>_(a)&&J(a)!=="body"),o=null,r=H(i).position==="fixed",s=r?D(i):i;for(;_(s)&&!X(s);){let a=H(s),c=Ce(s);!c&&a.position==="fixed"&&(o=null),(r?!c&&!o:!c&&a.position==="static"&&!!o&&Ji.has(o.position)||te(s)&&!c&&jt(i,s))?n=n.filter(l=>l!==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],c=s.reduce((d,l)=>{let p=It(e,l,o);return d.top=U(p.top,d.top),d.right=ae(p.right,d.right),d.bottom=ae(p.bottom,d.bottom),d.left=U(p.left,d.left),d},It(e,a,o));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.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},c=O(0);function d(){c.x=He(o)}if(n||!n&&!r)if((J(e)!=="body"||te(o))&&(a=he(e)),n){let h=ue(e,!0,r,e);c.x=h.x+e.clientLeft,c.y=h.y+e.clientTop}else o&&d();r&&!n&&o&&d();let l=o&&!n&&!r?Dt(o,a):O(0),p=s.left+a.scrollLeft-c.x-l.x,u=s.top+a.scrollTop-c.y-l.y;return{x:p,y:u,width:s.width,height:s.height}}function je(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 Vt(i,e){let t=A(i);if(de(i))return t;if(!P(i)){let o=D(i);for(;o&&!X(o);){if(_(o)&&!je(o))return o;o=D(o)}return t}let n=Bt(i,e);for(;n&&Ot(n)&&je(n);)n=Bt(n,e);return n&&X(n)&&je(n)&&!Ce(n)?t:n||Pt(i)||t}var on=async function(i){let e=this.getOffsetParent||Vt,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:Vt,getElementRects:on,getClientRects:Zi,getDimensions:tn,getScale:ie,isElement:_,isRTL:rn};var Ut=At;var Wt=_t,qt=Ct;var Kt=(i,e,t)=>{let n=new Map,o={platform:sn,...t},r={...o.platform,_c:n};return Tt(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=`
898
+ `;)d++;let l=r.slice(c,d);x("insertHeader",`Current line (before): "${l}"`);let p=l.match(/^(#{1,6})\s*/),u=p?p[1].length:0,h=p?p[0].length:0;x("insertHeader","Existing header check:"),x("insertHeader",` - Match: ${p?`"${p[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 ============"),V(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}),_i={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=>_i[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),c=W(e),d=r==="y",l=n.x+n.width/2-o.width/2,p=n.y+n.height/2-o.height/2,u=n[a]/2-o[a]/2,h;switch(c){case"top":h={x:l,y:n.y-o.height};break;case"bottom":h={x:l,y:n.y+n.height};break;case"right":h={x:n.x+n.width,y:p};break;case"left":h={x:n.x-o.width,y:p};break;default:h={x:n.x,y:n.y}}switch(pe(e)){case"start":h[s]-=u*(t&&d?-1:1);break;case"end":h[s]+=u*(t&&d?-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:c}=i,{boundary:d="clippingAncestors",rootBoundary:l="viewport",elementContext:p="floating",altBoundary:u=!1,padding:h=0}=ce(e,i),f=St(h),g=a[u?p==="floating"?"reference":"floating":p],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:d,rootBoundary:l,strategy:c})),b=p==="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:c}):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),c=await(s.isRTL==null?void 0:s.isRTL(e)),d=await s.getElementRects({reference:i,floating:e,strategy:o}),{x:l,y:p}=Lt(d,n,c),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:l,y:p,initialPlacement:n,placement:u,strategy:o,middlewareData:h,rects:d,platform:{...s,detectOverflow:(m=s.detectOverflow)!=null?m:Et},elements:{reference:i,floating:e}});l=w!=null?w:l,p=S!=null?S:p,h={...h,[y]:{...h[y],...k}},E&&f<=50&&(f++,typeof E=="object"&&(E.placement&&(u=E.placement),E.rects&&(d=E.rects===!0?await s.getElementRects({reference:i,floating:e,strategy:o}):E.rects),{x:l,y:p}=Lt(d,u,c)),g=-1)}return{x:l,y:p,placement:u,strategy:o,middlewareData:h}};var Tt=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:c,elements:d}=e,{mainAxis:l=!0,crossAxis:p=!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(c.isRTL==null?void 0:c.isRTL(d.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 c.detectOverflow(e,g),ge=[],ee=((n=r.flip)==null?void 0:n.overflows)||[];if(l&&ge.push(Y[y]),p){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&&(!(p==="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 j=N(M.placement);return j===b||j==="y"}return!0}).map(M=>[M.placement,M.overflows.filter(j=>j>0).reduce((j,pi)=>j+pi,0)]).sort((M,j)=>M[1]-j[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),c=N(t)==="y",d=Ii.has(s)?-1:1,l=r&&c?-1:1,p=ce(e,i),{mainAxis:u,crossAxis:h,alignmentAxis:f}=typeof p=="number"?{mainAxis:p,crossAxis:0,alignmentAxis:null}:{mainAxis:p.mainAxis||0,crossAxis:p.crossAxis||0,alignmentAxis:p.alignmentAxis};return a&&typeof f=="number"&&(h=a==="end"?f*-1:f),c?{x:h*l,y:u*d}:{x:u*d,y:h*l}}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,c=await Bi(e,i);return s===((t=a.offset)==null?void 0:t.placement)&&(n=a.arrow)!=null&&n.alignmentOffset?{}:{x:o+c.x,y:r+c.y,data:{...c,placement:s}}}}},_t=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:c={fn:y=>{let{x:b,y:w}=y;return{x:b,y:w}}},...d}=ce(i,e),l={x:t,y:n},p=await r.detectOverflow(e,d),u=N(W(o)),h=Fe(u),f=l[h],m=l[u];if(s){let y=h==="y"?"top":"left",b=h==="y"?"bottom":"right",w=f+p[y],S=f-p[b];f=ze(w,f,S)}if(a){let y=u==="y"?"top":"left",b=u==="y"?"bottom":"right",w=m+p[y],S=m-p[b];m=ze(w,m,S)}let g=c.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 _(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"],ji=["transform","translate","scale","rotate","perspective","filter"],Vi=["paint","layout","strict","content"];function Te(i){let e=Ae(),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)||ji.some(n=>(t.willChange||"").includes(n))||Vi.some(n=>(t.contain||"").includes(n))}function Pt(i){let e=D(i);for(;P(e)&&!X(e);){if(Te(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 _(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=_e(s);return e.concat(s,s.visualViewport||[],te(o)?o:[],a&&t?Ee(a):[])}return e.concat(o,Ee(o,[],t))}function _e(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 _(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?_(n)&&(s=ie(n)):s=ie(i));let a=qi(r,t,n)?Nt(r):O(0),c=(o.left+a.x)/s.x,d=(o.top+a.y)/s.y,l=o.width/s.x,p=o.height/s.y;if(r){let u=A(r),h=n&&_(n)?A(n):n,f=u,m=_e(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;c*=g.x,d*=g.y,l*=g.x,p*=g.y,c+=w,d+=S,f=A(m),m=_e(f)}}return G({width:l,height:p,x:c,y:d})}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 c={scrollLeft:0,scrollTop:0},d=O(1),l=O(0),p=P(n);if((p||!p&&!r)&&((J(n)!=="body"||te(s))&&(c=he(n)),P(n))){let h=ue(n);d=ie(n),l.x=h.x+n.clientLeft,l.y=h.y+n.clientTop}let u=s&&!p&&!r?Dt(s,c):O(0);return{width:t.width*d.x,height:t.height*d.y,x:t.x*d.x-c.scrollLeft*d.x+l.x+u.x,y:t.y*d.y-c.scrollTop*d.y+l.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,c=0;if(o){r=o.width,s=o.height;let l=Ae();(!l||l&&e==="fixed")&&(a=o.offsetLeft,c=o.offsetTop)}let d=He(n);if(d<=0){let l=n.ownerDocument,p=l.body,u=getComputedStyle(p),h=l.compatMode==="CSS1Compat"&&parseFloat(u.marginLeft)+parseFloat(u.marginRight)||0,f=Math.abs(n.clientWidth-p.clientWidth-h);f<=Rt&&(r-=f)}else d<=Rt&&(r+=d);return{width:r,height:s,x:a,y:c}}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,c=o*r.x,d=n*r.y;return{width:s,height:a,x:c,y:d}}function It(i,e,t){let n;if(e==="viewport")n=Gi(i,t);else if(e==="document")n=Qi(I(i));else if(_(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 jt(i,e){let t=D(i);return t===e||!_(t)||X(t)?!1:H(t).position==="fixed"||jt(t,e)}function Yi(i,e){let t=e.get(i);if(t)return t;let n=Ee(i,[],!1).filter(a=>_(a)&&J(a)!=="body"),o=null,r=H(i).position==="fixed",s=r?D(i):i;for(;_(s)&&!X(s);){let a=H(s),c=Te(s);!c&&a.position==="fixed"&&(o=null),(r?!c&&!o:!c&&a.position==="static"&&!!o&&Ji.has(o.position)||te(s)&&!c&&jt(i,s))?n=n.filter(l=>l!==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],c=s.reduce((d,l)=>{let p=It(e,l,o);return d.top=U(p.top,d.top),d.right=ae(p.right,d.right),d.bottom=ae(p.bottom,d.bottom),d.left=U(p.left,d.left),d},It(e,a,o));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.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},c=O(0);function d(){c.x=He(o)}if(n||!n&&!r)if((J(e)!=="body"||te(o))&&(a=he(e)),n){let h=ue(e,!0,r,e);c.x=h.x+e.clientLeft,c.y=h.y+e.clientTop}else o&&d();r&&!n&&o&&d();let l=o&&!n&&!r?Dt(o,a):O(0),p=s.left+a.scrollLeft-c.x-l.x,u=s.top+a.scrollTop-c.y-l.y;return{x:p,y:u,width:s.width,height:s.height}}function je(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 Vt(i,e){let t=A(i);if(de(i))return t;if(!P(i)){let o=D(i);for(;o&&!X(o);){if(_(o)&&!je(o))return o;o=D(o)}return t}let n=Bt(i,e);for(;n&&Ot(n)&&je(n);)n=Bt(n,e);return n&&X(n)&&je(n)&&!Te(n)?t:n||Pt(i)||t}var on=async function(i){let e=this.getOffsetParent||Vt,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:Vt,getElementRects:on,getClientRects:Zi,getDimensions:tn,getScale:ie,isElement:_,isRTL:rn};var Ut=At;var Wt=_t,qt=Tt;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=`
894
899
  <span style="display: flex; align-items: center; gap: 6px;">
895
900
  <svg width="12" height="12" viewBox="0 0 20 20" fill="currentColor" style="flex-shrink: 0;">
896
901
  <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>
@@ -952,16 +957,16 @@ ${a}`:r;if(d){let k=i.value[i.selectionStart-1];i.selectionStart!==0&&k!=null&&!
952
957
  <path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" fill="none"></path>
953
958
  <circle cx="12" cy="12" r="3" fill="none"></circle>
954
959
  </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 Ve(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.options.onChange(this.getValue(),this)}_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,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.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._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.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.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=Ve(fe),this.options.toolbarButtons&&Object.assign(this.actionsById,Ve(this.options.toolbarButtons)),(e=this.options.fileUpload)!=null&&e.enabled&&Object.assign(this.actionsById,Ve([L.upload]))}_applyOptions(){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}
955
- `),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=T.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.onChange&&this.initialized&&this.options.onChange(e,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(`
960
+ `),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.onChange&&this.initialized&&this.options.onChange(e,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(`
956
961
  `).length-1}handleInput(e){this.updatePreview()}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),c=r.substring(o),l=a.split(`
957
962
  `).map(p=>p.replace(/^ /,"")).join(`
958
963
  `);document.execCommand?(this.textarea.setSelectionRange(n,o),document.execCommand("insertText",!1,l)):(this.textarea.value=s+l+c,this.textarea.selectionStart=n,this.textarea.selectionEnd=n+l.length)}else if(n!==o){let s=r.substring(0,n),a=r.substring(n,o),c=r.substring(o),l=a.split(`
959
964
  `).map(p=>" "+p).join(`
960
- `);document.execCommand?(this.textarea.setSelectionRange(n,o),document.execCommand("insertText",!1,l)):(this.textarea.value=s+l+c,this.textarea.selectionStart=n,this.textarea.selectionEnd=n+l.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=T.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=T.createNewListItem(e);document.execCommand("insertText",!1,`
961
- `+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=T.createNewListItem(e);document.execCommand("insertText",!1,`
962
- `+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=T.renumberLists(e);if(n!==e){let o=0,r=e.split(`
965
+ `);document.execCommand?(this.textarea.setSelectionRange(n,o),document.execCommand("insertText",!1,l)):(this.textarea.value=s+l+c,this.textarea.selectionStart=n,this.textarea.selectionEnd=n+l.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,`
966
+ `+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,`
967
+ `+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(`
963
968
  `),s=n.split(`
964
- `),a=0;for(let d=0;d<r.length&&a<t;d++){if(r[d]!==s[d]){let l=s[d].length-r[d].length;a+r[d].length<t&&(o+=l)}a+=r[d].length+1}this.textarea.value=n;let c=t+o;this.textarea.setSelectionRange(c,c),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){this.textarea.value=e,this.updatePreview(),this.options.autoResize&&this._updateAutoHeight()}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=T.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);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)),this.updatePreview()}setCodeHighlighter(e){this.options.codeHighlighter=e,this.updatePreview()}_updateStats(){if(!this.statsBar)return;let e=this.textarea.value,t=e.split(`
969
+ `),a=0;for(let d=0;d<r.length&&a<t;d++){if(r[d]!==s[d]){let l=s[d].length-r[d].length;a+r[d].length<t&&(o+=l)}a+=r[d].length+1}this.textarea.value=n;let c=t+o;this.textarea.setSelectionRange(c,c),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){this.textarea.value=e,this.updatePreview(),this.options.autoResize&&this._updateAutoHeight()}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(`
965
970
  `),n=e.length,o=e.split(/\s+/).filter(l=>l.length>0).length,r=this.textarea.selectionStart,a=e.substring(0,r).split(`
966
971
  `),c=a.length,d=a[a.length-1].length+1;this.options.statsFormatter?this.statsBar.innerHTML=this.options.statsFormatter({chars:n,words:o,lines:t.length,line:c,column:d}):this.statsBar.innerHTML=`
967
972
  <div class="overtype-stat">
@@ -969,7 +974,7 @@ ${a}`:r;if(d){let k=i.value[i.selectionStart-1];i.selectionStart!==0&&k!=null&&!
969
974
  <span>${n} chars, ${o} words, ${t.length} lines</span>
970
975
  </div>
971
976
  <div class="overtype-stat">Line ${c}, Col ${d}</div>
972
- `}_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,o=window.getComputedStyle(e),r=parseFloat(o.paddingTop),s=parseFloat(o.paddingBottom),a=e.scrollTop;e.style.setProperty("height","auto","important");let c=e.scrollHeight;if(this.options.minHeight){let p=parseInt(this.options.minHeight);c=Math.max(c,p)}let d="hidden";if(this.options.maxHeight){let p=parseInt(this.options.maxHeight);c>p&&(c=p,d="auto")}let l=c+"px";e.style.setProperty("height",l,"important"),e.style.setProperty("overflow-y",d,"important"),t.style.setProperty("height",l,"important"),t.style.setProperty("overflow-y",d,"important"),n.style.setProperty("height",l,"important"),e.scrollTop=a,t.scrollTop=a,this.previousHeight!==c&&(this.previousHeight=c)}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(),requestAnimationFrame(()=>{this.textarea.scrollTop=this.preview.scrollTop,this.textarea.scrollLeft=this.preview.scrollLeft}),this}showPlainTextarea(){if(this.container.dataset.mode="plain",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}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 c=s.name.slice(8).replace(/-([a-z])/g,(d,l)=>l.toUpperCase());r[c]=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){T.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){T.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)}};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=T;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)}_decodeValue(e){return typeof e!="string"?"":e.replace(/\\r/g,"\r").replace(/\\n/g,`
977
+ `}_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,o=window.getComputedStyle(e),r=parseFloat(o.paddingTop),s=parseFloat(o.paddingBottom),a=e.scrollTop;e.style.setProperty("height","auto","important");let c=e.scrollHeight;if(this.options.minHeight){let p=parseInt(this.options.minHeight);c=Math.max(c,p)}let d="hidden";if(this.options.maxHeight){let p=parseInt(this.options.maxHeight);c>p&&(c=p,d="auto")}let l=c+"px";e.style.setProperty("height",l,"important"),e.style.setProperty("overflow-y",d,"important"),t.style.setProperty("height",l,"important"),t.style.setProperty("overflow-y",d,"important"),n.style.setProperty("height",l,"important"),e.scrollTop=a,t.scrollTop=a,this.previousHeight!==c&&(this.previousHeight=c)}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(),requestAnimationFrame(()=>{this.textarea.scrollTop=this.preview.scrollTop,this.textarea.scrollLeft=this.preview.scrollLeft}),this}showPlainTextarea(){if(this.container.dataset.mode="plain",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}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 c=s.name.slice(8).replace(/-([a-z])/g,(d,l)=>l.toUpperCase());r[c]=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)}};T(v,"instances",new WeakMap),T(v,"stylesInjected",!1),T(v,"globalListenersInitialized",!1),T(v,"instanceCount",0),T(v,"_autoMediaQuery",null),T(v,"_autoMediaListener",null),T(v,"_autoInstances",new Set),T(v,"_globalAutoTheme",!1),T(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)}_decodeValue(e){return typeof e!="string"?"":e.replace(/\\r/g,"\r").replace(/\\n/g,`
973
978
  `).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=`
974
979
  /* Web Component Host Styles */
975
980
  :host {