var Insertr=function(){"use strict";class e{constructor(e={}){this.options={apiEndpoint:e.apiEndpoint||"/api/content",siteId:e.siteId||"default",...e}}findEnhancedElements(){const e=document.querySelectorAll(".insertr"),t=[];return e.forEach(e=>{if(this.isContainer(e)&&!e.classList.contains("insertr-group")){const n=this.findViableChildren(e);t.push(...n)}else t.push(e)}),t}isContainer(e){return new Set(["div","section","article","header","footer","main","aside","nav"]).has(e.tagName.toLowerCase())}findViableChildren(e){const t=[];for(const n of e.children)n.classList.contains("insertr")||this.isSelfClosing(n)||this.hasOnlyTextContent(n)&&t.push(n);return t}hasOnlyTextContent(e){const t=new Set(["strong","b","em","i","a","span","code"]);for(const n of e.children){const e=n.tagName.toLowerCase();if(!t.has(e))return!1;if(n.children.length>0)for(const e of n.children){const n=e.tagName.toLowerCase();if(!t.has(n))return!1}}return e.textContent.trim().length>0}isSelfClosing(e){return new Set(["img","input","br","hr","meta","link","area","base","col","embed","source","track","wbr"]).has(e.tagName.toLowerCase())}getElementMetadata(e){return{contentId:e.getAttribute("data-content-id")||this.generateTempId(e),contentType:e.getAttribute("data-content-type")||this.detectContentType(e),element:e}}generateTempId(e){return`${e.tagName.toLowerCase()}-${e.textContent.trim().substring(0,20).replace(/\s+/g,"-").toLowerCase()}-${Date.now()}`}detectContentType(e){const t=e.tagName.toLowerCase();if(e.classList.contains("insertr-group"))return"markdown";switch(t){case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":default:return"text";case"p":return"textarea";case"a":case"button":return"link";case"div":case"section":return"markdown"}}getAllElements(){const e=document.querySelectorAll(".insertr, .insertr-group"),t=[];return e.forEach(e=>{if(e.classList.contains("insertr-group"))t.push(e);else if(this.isContainer(e)){const n=this.findViableChildren(e);t.push(...n)}else t.push(e)}),Array.from(t).map(e=>this.getElementMetadata(e))}}function t(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var n={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};function r(e){n=e}var i={exec:()=>null};function s(e,t=""){let n="string"==typeof e?e:e.source,r={replace:(e,t)=>{let i="string"==typeof t?t:t.source;return i=i.replace(o.caret,"$1"),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var o={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[\t ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),hrRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i")},a=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,l=/(?:[*+-]|\d{1,9}[.)])/,c=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,h=s(c).replace(/bull/g,l).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),u=s(c).replace(/bull/g,l).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),d=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,p=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,g=s(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",p).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),m=s(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,l).getRegex(),f="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",k=/|$))/,b=s("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))","i").replace("comment",k).replace("tag",f).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),x=s(d).replace("hr",a).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",f).getRegex(),w={blockquote:s(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",x).getRegex(),code:/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,def:g,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,hr:a,html:b,lheading:h,list:m,newline:/^(?:[ \t]*(?:\n|$))+/,paragraph:x,table:i,text:/^[^\n]+/},y=s("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",a).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}\t)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",f).getRegex(),v={...w,lheading:u,table:y,paragraph:s(d).replace("hr",a).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",y).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",f).getRegex()},C={...w,html:s("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",k).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:i,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:s(d).replace("hr",a).replace("heading"," *#{1,6} *[^\n]").replace("lheading",h).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},E=/^( {2,}|\\)\n(?!\s*$)/,S=/[\p{P}\p{S}]/u,A=/[\s\p{P}\p{S}]/u,T=/[^\s\p{P}\p{S}]/u,$=s(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,A).getRegex(),R=/(?!~)[\p{P}\p{S}]/u,M=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,L=s(M,"u").replace(/punct/g,S).getRegex(),z=s(M,"u").replace(/punct/g,R).getRegex(),I="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",O=s(I,"gu").replace(/notPunctSpace/g,T).replace(/punctSpace/g,A).replace(/punct/g,S).getRegex(),P=s(I,"gu").replace(/notPunctSpace/g,/(?:[^\s\p{P}\p{S}]|~)/u).replace(/punctSpace/g,/(?!~)[\s\p{P}\p{S}]/u).replace(/punct/g,R).getRegex(),B=s("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,T).replace(/punctSpace/g,A).replace(/punct/g,S).getRegex(),N=s(/\\(punct)/,"gu").replace(/punct/g,S).getRegex(),H=s(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),F=s(k).replace("(?:--\x3e|$)","--\x3e").getRegex(),_=s("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",F).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),q=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`[^`]*`|[^\[\]\\`])*?/,D=s(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",q).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),U=s(/^!?\[(label)\]\[(ref)\]/).replace("label",q).replace("ref",p).getRegex(),G=s(/^!?\[(ref)\](?:\[\])?/).replace("ref",p).getRegex(),j={_backpedal:i,anyPunctuation:N,autolink:H,blockSkip:/\[[^\[\]]*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)|`[^`]*?`|<(?! )[^<>]*?>/g,br:E,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,del:i,emStrongLDelim:L,emStrongRDelimAst:O,emStrongRDelimUnd:B,escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,link:D,nolink:G,punctuation:$,reflink:U,reflinkSearch:s("reflink|nolink(?!\\()","g").replace("reflink",U).replace("nolink",G).getRegex(),tag:_,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},K=e=>X[e];function J(e,t){if(t){if(o.escapeTest.test(e))return e.replace(o.escapeReplace,K)}else if(o.escapeTestNoEncode.test(e))return e.replace(o.escapeReplaceNoEncode,K);return e}function ee(e){try{e=encodeURI(e).replace(o.percentDecode,"%")}catch{return null}return e}function te(e,t){let n=e.replace(o.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&"\\"===n[i];)r=!r;return r?"|":" |"}).split(o.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?e:ne(e,"\n")}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],n=function(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(null===r)return t;let i=r[1];return t.split("\n").map(e=>{let t=e.match(n.other.beginningSpace);if(null===t)return e;let[r]=t;return r.length>=i.length?e.slice(i.length):e}).join("\n")}(e,t[3]||"",this.rules);return{type:"code",raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let t=ne(e,"#");(this.options.pedantic||!t||this.rules.other.endingSpaceChar.test(t))&&(e=t.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:ne(t[0],"\n")}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=ne(t[0],"\n").split("\n"),n="",r="",i=[];for(;e.length>0;){let t,s=!1,o=[];for(t=0;t1,i={type:"list",raw:"",ordered:r,start:r?+n.slice(0,-1):"",loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:"[*+-]");let s=this.rules.other.listItemRegex(n),o=!1;for(;e;){let n=!1,r="",a="";if(!(t=s.exec(e))||this.rules.block.hr.test(e))break;r=t[0],e=e.substring(r.length);let l=t[2].split("\n",1)[0].replace(this.rules.other.listReplaceTabs,e=>" ".repeat(3*e.length)),c=e.split("\n",1)[0],h=!l.trim(),u=0;if(this.options.pedantic?(u=2,a=l.trimStart()):h?u=t[1].length+1:(u=t[2].search(this.rules.other.nonSpaceChar),u=u>4?1:u,a=l.slice(u),u+=t[1].length),h&&this.rules.other.blankLine.test(c)&&(r+=c+"\n",e=e.substring(c.length+1),n=!0),!n){let t=this.rules.other.nextBulletRegex(u),n=this.rules.other.hrRegex(u),i=this.rules.other.fencesBeginRegex(u),s=this.rules.other.headingBeginRegex(u),o=this.rules.other.htmlBeginRegex(u);for(;e;){let d,p=e.split("\n",1)[0];if(c=p,this.options.pedantic?(c=c.replace(this.rules.other.listReplaceNesting," "),d=c):d=c.replace(this.rules.other.tabCharGlobal," "),i.test(c)||s.test(c)||o.test(c)||t.test(c)||n.test(c))break;if(d.search(this.rules.other.nonSpaceChar)>=u||!c.trim())a+="\n"+d.slice(u);else{if(h||l.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||i.test(l)||s.test(l)||n.test(l))break;a+="\n"+c}!h&&!c.trim()&&(h=!0),r+=p+"\n",e=e.substring(p.length+1),l=d.slice(u)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(r)&&(o=!0));let d,p=null;this.options.gfm&&(p=this.rules.other.listIsTask.exec(a),p&&(d="[ ] "!==p[0],a=a.replace(this.rules.other.listReplaceTask,""))),i.items.push({type:"list_item",raw:r,task:!!p,checked:d,loose:!1,text:a,tokens:[]}),i.raw+=r}let a=i.items.at(-1);if(!a)return;a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd(),i.raw=i.raw.trimEnd();for(let e=0;e"space"===e.type),n=t.length>0&&t.some(e=>this.rules.other.anyLine.test(e.raw));i.loose=n}if(i.loose)for(let e=0;e({text:e,tokens:this.lexer.inline(e),header:!1,align:s.align[t]})));return s}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let e="\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let t=ne(e.slice(0,-1),"\\");if((e.length-t.length)%2==0)return}else{let e=function(e,t){if(-1===e.indexOf(t[1]))return-1;let n=0;for(let r=0;r0?-2:-1}(t[2],"()");if(-2===e)return;if(e>-1){let n=(0===t[0].indexOf("!")?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=""}}let n=t[2],r="";if(this.options.pedantic){let e=this.rules.other.pedanticHrefTitle.exec(n);e&&(n=e[1],r=e[3])}else r=t[3]?t[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(n=this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?n.slice(1):n.slice(1,-1)),re(t,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=t[(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," ").toLowerCase()];if(!e){let e=n[0].charAt(0);return{type:"text",raw:e,text:e}}return re(n,e,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||r[3]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!r[1]&&!r[2]||!n||this.rules.inline.punctuation.exec(n))){let n,i,s=[...r[0]].length-1,o=s,a=0,l="*"===r[0][0]?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(l.lastIndex=0,t=t.slice(-1*e.length+s);null!=(r=l.exec(t));){if(n=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!n)continue;if(i=[...n].length,r[3]||r[4]){o+=i;continue}if((r[5]||r[6])&&s%3&&!((s+i)%3)){a+=i;continue}if(o-=i,o>0)continue;i=Math.min(i,i+o+a);let t=[...r[0]][0].length,l=e.slice(0,s+r.index+t+i);if(Math.min(s,i)%2){let e=l.slice(1,-1);return{type:"em",raw:l,text:e,tokens:this.lexer.inlineTokens(e)}}let c=l.slice(2,-2);return{type:"strong",raw:l,text:c,tokens:this.lexer.inlineTokens(c)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal," "),n=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&r&&(e=e.substring(1,e.length-1)),{type:"codespan",raw:t[0],text:e}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let e,n;return"@"===t[2]?(e=t[1],n="mailto:"+e):(e=t[1],n=e),{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if("@"===t[2])e=t[0],n="mailto:"+e;else{let r;do{r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??""}while(r!==t[0]);e=t[0],n="www."===t[1]?"http://"+t[0]:t[0]}return{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let e=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:e}}}},se=class e{tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||n,this.options.tokenizer=this.options.tokenizer||new ie,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:o,block:W.normal,inline:Y.normal};this.options.pedantic?(t.block=W.pedantic,t.inline=Y.pedantic):this.options.gfm&&(t.block=W.gfm,this.options.breaks?t.inline=Y.breaks:t.inline=Y.gfm),this.tokenizer.rules=t}static get rules(){return{block:W,inline:Y}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(e){e=e.replace(o.carriageReturn,"\n"),this.blockTokens(e,this.tokens);for(let e=0;e!!(r=n.call({lexer:this},e,t))&&(e=e.substring(r.raw.length),t.push(r),!0)))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let n=t.at(-1);1===r.raw.length&&void 0!==n?n.raw+="\n":t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let n=t.at(-1);"paragraph"===n?.type||"text"===n?.type?(n.raw+=(n.raw.endsWith("\n")?"":"\n")+r.raw,n.text+="\n"+r.text,this.inlineQueue.at(-1).src=n.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let n=t.at(-1);"paragraph"===n?.type||"text"===n?.type?(n.raw+=(n.raw.endsWith("\n")?"":"\n")+r.raw,n.text+="\n"+r.raw,this.inlineQueue.at(-1).src=n.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},t.push(r));continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let t,n=1/0,r=e.slice(1);this.options.extensions.startBlock.forEach(e=>{t=e.call({lexer:this},r),"number"==typeof t&&t>=0&&(n=Math.min(n,t))}),n<1/0&&n>=0&&(i=e.substring(0,n+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let s=t.at(-1);n&&"paragraph"===s?.type?(s.raw+=(s.raw.endsWith("\n")?"":"\n")+r.raw,s.text+="\n"+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let n=t.at(-1);"text"===n?.type?(n.raw+=(n.raw.endsWith("\n")?"":"\n")+r.raw,n.text+="\n"+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(r);continue}if(e){let t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n=e,r=null;if(this.tokens.links){let e=Object.keys(this.tokens.links);if(e.length>0)for(;null!=(r=this.tokenizer.rules.inline.reflinkSearch.exec(n));)e.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(r=this.tokenizer.rules.inline.anyPunctuation.exec(n));)n=n.slice(0,r.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;null!=(r=this.tokenizer.rules.inline.blockSkip.exec(n));)n=n.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);let i=!1,s="";for(;e;){let r;if(i||(s=""),i=!1,this.options.extensions?.inline?.some(n=>!!(r=n.call({lexer:this},e,t))&&(e=e.substring(r.raw.length),t.push(r),!0)))continue;if(r=this.tokenizer.escape(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.tag(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.link(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(r.raw.length);let n=t.at(-1);"text"===r.type&&"text"===n?.type?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(r=this.tokenizer.emStrong(e,n,s)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.codespan(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.br(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.del(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.autolink(e)){e=e.substring(r.raw.length),t.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(e))){e=e.substring(r.raw.length),t.push(r);continue}let o=e;if(this.options.extensions?.startInline){let t,n=1/0,r=e.slice(1);this.options.extensions.startInline.forEach(e=>{t=e.call({lexer:this},r),"number"==typeof t&&t>=0&&(n=Math.min(n,t))}),n<1/0&&n>=0&&(o=e.substring(0,n+1))}if(r=this.tokenizer.inlineText(o)){e=e.substring(r.raw.length),"_"!==r.raw.slice(-1)&&(s=r.raw.slice(-1)),i=!0;let n=t.at(-1);"text"===n?.type?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(e){let t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw new Error(t)}}return t}},oe=class{options;parser;constructor(e){this.options=e||n}space(e){return""}code({text:e,lang:t,escaped:n}){let r=(t||"").match(o.notSpaceStart)?.[0],i=e.replace(o.endingNewline,"")+"\n";return r?'
'+(n?i:J(i,!0))+"
\n":"
"+(n?i:J(i,!0))+"
\n"}blockquote({tokens:e}){return`
\n${this.parser.parse(e)}
\n`}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:t}){return`${this.parser.parseInline(e)}\n`}hr(e){return"
\n"}list(e){let t=e.ordered,n=e.start,r="";for(let t=0;t\n"+r+"\n"}listitem(e){let t="";if(e.task){let n=this.checkbox({checked:!!e.checked});e.loose?"paragraph"===e.tokens[0]?.type?(e.tokens[0].text=n+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&"text"===e.tokens[0].tokens[0].type&&(e.tokens[0].tokens[0].text=n+" "+J(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:"text",raw:n+" ",text:n+" ",escaped:!0}):t+=n+" "}return t+=this.parser.parse(e.tokens,!!e.loose),`
  • ${t}
  • \n`}checkbox({checked:e}){return"'}paragraph({tokens:e}){return`

    ${this.parser.parseInline(e)}

    \n`}table(e){let t="",n="";for(let t=0;t${r}`),"\n\n"+t+"\n"+r+"
    \n"}tablerow({text:e}){return`\n${e}\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`\n`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${J(e,!0)}`}br(e){return"
    "}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=ee(e);if(null===i)return r;let s='
    ",s}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=ee(e);if(null===i)return J(n);let s=`${n}{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw new Error("extension name required");if("renderer"in e){let n=t.renderers[e.name];t.renderers[e.name]=n?function(...t){let r=e.renderer.apply(this,t);return!1===r&&(r=n.apply(this,t)),r}:e.renderer}if("tokenizer"in e){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw new Error("extension level must be 'block' or 'inline'");let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&("block"===e.level?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:"inline"===e.level&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}"childTokens"in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new oe(this.defaults);for(let n in e.renderer){if(!(n in t))throw new Error(`renderer '${n}' does not exist`);if(["options","parser"].includes(n))continue;let r=n,i=e.renderer[r],s=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return!1===n&&(n=s.apply(t,e)),n||""}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new ie(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw new Error(`tokenizer '${n}' does not exist`);if(["options","rules","lexer"].includes(n))continue;let r=n,i=e.tokenizer[r],s=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return!1===n&&(n=s.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new ce;for(let n in e.hooks){if(!(n in t))throw new Error(`hook '${n}' does not exist`);if(["options","block"].includes(n))continue;let r=n,i=e.hooks[r],s=t[r];ce.passThroughHooks.has(n)?t[r]=e=>{if(this.defaults.async)return Promise.resolve(i.call(t,e)).then(e=>s.call(t,e));let n=i.call(t,e);return s.call(t,n)}:t[r]=(...e)=>{let n=i.apply(t,e);return!1===n&&(n=s.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return se.lex(e,t??this.defaults)}parser(e,t){return le.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},s=this.onError(!!i.silent,!!i.async);if(!0===this.defaults.async&&!1===r.async)return s(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||null===t)return s(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof t)return s(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));i.hooks&&(i.hooks.options=i,i.hooks.block=e);let o=i.hooks?i.hooks.provideLexer():e?se.lex:se.lexInline,a=i.hooks?i.hooks.provideParser():e?le.parse:le.parseInline;if(i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(t):t).then(e=>o(e,i)).then(e=>i.hooks?i.hooks.processAllTokens(e):e).then(e=>i.walkTokens?Promise.all(this.walkTokens(e,i.walkTokens)).then(()=>e):e).then(e=>a(e,i)).then(e=>i.hooks?i.hooks.postprocess(e):e).catch(s);try{i.hooks&&(t=i.hooks.preprocess(t));let e=o(t,i);i.hooks&&(e=i.hooks.processAllTokens(e)),i.walkTokens&&this.walkTokens(e,i.walkTokens);let n=a(e,i);return i.hooks&&(n=i.hooks.postprocess(n)),n}catch(e){return s(e)}}}onError(e,t){return n=>{if(n.message+="\nPlease report this to https://github.com/markedjs/marked.",e){let e="

    An error occurred:

    "+J(n.message+"",!0)+"
    ";return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}};function ue(e,t){return he.parse(e,t)}function de(e,t){return Array(t+1).join(e)}ue.options=ue.setOptions=function(e){return he.setOptions(e),ue.defaults=he.defaults,r(ue.defaults),ue},ue.getDefaults=t,ue.defaults=n,ue.use=function(...e){return he.use(...e),ue.defaults=he.defaults,r(ue.defaults),ue},ue.walkTokens=function(e,t){return he.walkTokens(e,t)},ue.parseInline=he.parseInline,ue.Parser=le,ue.parser=le.parse,ue.Renderer=oe,ue.TextRenderer=ae,ue.Lexer=se,ue.lexer=se.lex,ue.Tokenizer=ie,ue.Hooks=ce,ue.parse=ue,ue.options,ue.setOptions,ue.use,ue.walkTokens,ue.parseInline,le.parse,se.lex;var pe=["ADDRESS","ARTICLE","ASIDE","AUDIO","BLOCKQUOTE","BODY","CANVAS","CENTER","DD","DIR","DIV","DL","DT","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","FRAMESET","H1","H2","H3","H4","H5","H6","HEADER","HGROUP","HR","HTML","ISINDEX","LI","MAIN","MENU","NAV","NOFRAMES","NOSCRIPT","OL","OUTPUT","P","PRE","SECTION","TABLE","TBODY","TD","TFOOT","TH","THEAD","TR","UL"];function ge(e){return be(e,pe)}var me=["AREA","BASE","BR","COL","COMMAND","EMBED","HR","IMG","INPUT","KEYGEN","LINK","META","PARAM","SOURCE","TRACK","WBR"];function fe(e){return be(e,me)}var ke=["A","TABLE","THEAD","TBODY","TFOOT","TH","TD","IFRAME","SCRIPT","AUDIO","VIDEO"];function be(e,t){return t.indexOf(e.nodeName)>=0}function xe(e,t){return e.getElementsByTagName&&t.some(function(t){return e.getElementsByTagName(t).length})}var we={};function ye(e){return e?e.replace(/(\n+\s*)+/g,"\n"):""}function ve(e){for(var t in this.options=e,this._keep=[],this._remove=[],this.blankRule={replacement:e.blankReplacement},this.keepReplacement=e.keepReplacement,this.defaultRule={replacement:e.defaultReplacement},this.array=[],e.rules)this.array.push(e.rules[t])}function Ce(e,t,n){for(var r=0;r-1)return!0}else{if("function"!=typeof r)throw new TypeError("`filter` needs to be a string, array, or function");if(r.call(e,t,n))return!0}}function Se(e){var t=e.nextSibling||e.parentNode;return e.parentNode.removeChild(e),t}function Ae(e,t,n){return e&&e.parentNode===t||n(t)?t.nextSibling||t.parentNode:t.firstChild||t.nextSibling||t.parentNode}we.paragraph={filter:"p",replacement:function(e){return"\n\n"+e+"\n\n"}},we.lineBreak={filter:"br",replacement:function(e,t,n){return n.br+"\n"}},we.heading={filter:["h1","h2","h3","h4","h5","h6"],replacement:function(e,t,n){var r=Number(t.nodeName.charAt(1));return"setext"===n.headingStyle&&r<3?"\n\n"+e+"\n"+de(1===r?"=":"-",e.length)+"\n\n":"\n\n"+de("#",r)+" "+e+"\n\n"}},we.blockquote={filter:"blockquote",replacement:function(e){return"\n\n"+(e=(e=e.replace(/^\n+|\n+$/g,"")).replace(/^/gm,"> "))+"\n\n"}},we.list={filter:["ul","ol"],replacement:function(e,t){var n=t.parentNode;return"LI"===n.nodeName&&n.lastElementChild===t?"\n"+e:"\n\n"+e+"\n\n"}},we.listItem={filter:"li",replacement:function(e,t,n){var r=n.bulletListMarker+" ",i=t.parentNode;if("OL"===i.nodeName){var s=i.getAttribute("start"),o=Array.prototype.indexOf.call(i.children,t);r=(s?Number(s)+o:o+1)+". "}return r+(e=e.replace(/^\n+/,"").replace(/\n+$/,"\n").replace(/\n/gm,"\n"+" ".repeat(r.length)))+(t.nextSibling&&!/\n$/.test(e)?"\n":"")}},we.indentedCodeBlock={filter:function(e,t){return"indented"===t.codeBlockStyle&&"PRE"===e.nodeName&&e.firstChild&&"CODE"===e.firstChild.nodeName},replacement:function(e,t,n){return"\n\n "+t.firstChild.textContent.replace(/\n/g,"\n ")+"\n\n"}},we.fencedCodeBlock={filter:function(e,t){return"fenced"===t.codeBlockStyle&&"PRE"===e.nodeName&&e.firstChild&&"CODE"===e.firstChild.nodeName},replacement:function(e,t,n){for(var r,i=((t.firstChild.getAttribute("class")||"").match(/language-(\S+)/)||[null,""])[1],s=t.firstChild.textContent,o=n.fence.charAt(0),a=3,l=new RegExp("^"+o+"{3,}","gm");r=l.exec(s);)r[0].length>=a&&(a=r[0].length+1);var c=de(o,a);return"\n\n"+c+i+"\n"+s.replace(/\n$/,"")+"\n"+c+"\n\n"}},we.horizontalRule={filter:"hr",replacement:function(e,t,n){return"\n\n"+n.hr+"\n\n"}},we.inlineLink={filter:function(e,t){return"inlined"===t.linkStyle&&"A"===e.nodeName&&e.getAttribute("href")},replacement:function(e,t){var n=t.getAttribute("href");n&&(n=n.replace(/([()])/g,"\\$1"));var r=ye(t.getAttribute("title"));return r&&(r=' "'+r.replace(/"/g,'\\"')+'"'),"["+e+"]("+n+r+")"}},we.referenceLink={filter:function(e,t){return"referenced"===t.linkStyle&&"A"===e.nodeName&&e.getAttribute("href")},replacement:function(e,t,n){var r,i,s=t.getAttribute("href"),o=ye(t.getAttribute("title"));switch(o&&(o=' "'+o+'"'),n.linkReferenceStyle){case"collapsed":r="["+e+"][]",i="["+e+"]: "+s+o;break;case"shortcut":r="["+e+"]",i="["+e+"]: "+s+o;break;default:var a=this.references.length+1;r="["+e+"]["+a+"]",i="["+a+"]: "+s+o}return this.references.push(i),r},references:[],append:function(e){var t="";return this.references.length&&(t="\n\n"+this.references.join("\n")+"\n\n",this.references=[]),t}},we.emphasis={filter:["em","i"],replacement:function(e,t,n){return e.trim()?n.emDelimiter+e+n.emDelimiter:""}},we.strong={filter:["strong","b"],replacement:function(e,t,n){return e.trim()?n.strongDelimiter+e+n.strongDelimiter:""}},we.code={filter:function(e){var t=e.previousSibling||e.nextSibling,n="PRE"===e.parentNode.nodeName&&!t;return"CODE"===e.nodeName&&!n},replacement:function(e){if(!e)return"";e=e.replace(/\r?\n|\r/g," ");for(var t=/^`|^ .*?[^ ].* $|`$/.test(e)?" ":"",n="`",r=e.match(/`+/gm)||[];-1!==r.indexOf(n);)n+="`";return n+t+e+t+n}},we.image={filter:"img",replacement:function(e,t){var n=ye(t.getAttribute("alt")),r=t.getAttribute("src")||"",i=ye(t.getAttribute("title"));return r?"!["+n+"]("+r+(i?' "'+i+'"':"")+")":""}},ve.prototype={add:function(e,t){this.array.unshift(t)},keep:function(e){this._keep.unshift({filter:e,replacement:this.keepReplacement})},remove:function(e){this._remove.unshift({filter:e,replacement:function(){return""}})},forNode:function(e){return e.isBlank?this.blankRule:(t=Ce(this.array,e,this.options))||(t=Ce(this._keep,e,this.options))||(t=Ce(this._remove,e,this.options))?t:this.defaultRule;var t},forEach:function(e){for(var t=0;t'+e+"","text/html").getElementById("turndown-root"):n=e.cloneNode(!0);return function(e){var t=e.element,n=e.isBlock,r=e.isVoid,i=e.isPre||function(e){return"PRE"===e.nodeName};if(t.firstChild&&!i(t)){for(var s=null,o=!1,a=null,l=Ae(a,t,i);l!==t;){if(3===l.nodeType||4===l.nodeType){var c=l.data.replace(/[ \r\n\t]+/g," ");if(s&&!/ $/.test(s.data)||o||" "!==c[0]||(c=c.substr(1)),!c){l=Se(l);continue}l.data=c,s=l}else{if(1!==l.nodeType){l=Se(l);continue}n(l)||"BR"===l.nodeName?(s&&(s.data=s.data.replace(/ $/,"")),s=null,o=!1):r(l)||i(l)?(s=null,o=!0):s&&(o=!1)}var h=Ae(a,l,i);a=l,l=h}s&&(s.data=s.data.replace(/ $/,""),s.data||Se(s))}}({element:n,isBlock:ge,isVoid:fe,isPre:t.preformattedCode?Ie:null}),n}function Ie(e){return"PRE"===e.nodeName||"CODE"===e.nodeName}function Oe(e,t){return e.isBlock=ge(e),e.isCode="CODE"===e.nodeName||e.parentNode.isCode,e.isBlank=function(e){return!fe(e)&&!function(e){return be(e,ke)}(e)&&/^\s*$/i.test(e.textContent)&&!function(e){return xe(e,me)}(e)&&!function(e){return xe(e,ke)}(e)}(e),e.flankingWhitespace=function(e,t){if(e.isBlock||t.preformattedCode&&e.isCode)return{leading:"",trailing:""};var n=function(e){var t=e.match(/^(([ \t\r\n]*)(\s*))(?:(?=\S)[\s\S]*\S)?((\s*?)([ \t\r\n]*))$/);return{leading:t[1],leadingAscii:t[2],leadingNonAscii:t[3],trailing:t[4],trailingNonAscii:t[5],trailingAscii:t[6]}}(e.textContent);n.leadingAscii&&Pe("left",e,t)&&(n.leading=n.leadingNonAscii);n.trailingAscii&&Pe("right",e,t)&&(n.trailing=n.trailingNonAscii);return{leading:n.leading,trailing:n.trailing}}(e,t),e}function Pe(e,t,n){var r,i,s;return"left"===e?(r=t.previousSibling,i=/ $/):(r=t.nextSibling,i=/^ /),r&&(3===r.nodeType?s=i.test(r.nodeValue):n.preformattedCode&&"CODE"===r.nodeName?s=!1:1!==r.nodeType||ge(r)||(s=i.test(r.textContent))),s}var Be=Array.prototype.reduce,Ne=[[/\\/g,"\\\\"],[/\*/g,"\\*"],[/^-/g,"\\-"],[/^\+ /g,"\\+ "],[/^(=+)/g,"\\$1"],[/^(#{1,6}) /g,"\\$1 "],[/`/g,"\\`"],[/^~~~/g,"\\~~~"],[/\[/g,"\\["],[/\]/g,"\\]"],[/^>/g,"\\>"],[/_/g,"\\_"],[/^(\d+)\. /g,"$1\\. "]];function He(e){if(!(this instanceof He))return new He(e);var t={rules:we,headingStyle:"setext",hr:"* * *",bulletListMarker:"*",codeBlockStyle:"indented",fence:"```",emDelimiter:"_",strongDelimiter:"**",linkStyle:"inlined",linkReferenceStyle:"full",br:" ",preformattedCode:!1,blankReplacement:function(e,t){return t.isBlock?"\n\n":""},keepReplacement:function(e,t){return t.isBlock?"\n\n"+t.outerHTML+"\n\n":t.outerHTML},defaultReplacement:function(e,t){return t.isBlock?"\n\n"+e+"\n\n":e}};this.options=function(e){for(var t=1;t0&&"\n"===e[t-1];)t--;return e.substring(0,t)}(e),r=t.replace(/^\n*/,""),i=Math.max(e.length-n.length,t.length-r.length);return n+"\n\n".substring(0,i)+r}He.prototype={turndown:function(e){if(!function(e){return null!=e&&("string"==typeof e||e.nodeType&&(1===e.nodeType||9===e.nodeType||11===e.nodeType))}(e))throw new TypeError(e+" is not a string, or an element/document/fragment node.");if(""===e)return"";var t=Fe.call(this,new ze(e,this.options));return _e.call(this,t)},use:function(e){if(Array.isArray(e))for(var t=0;te.trim()).map(e=>`

    ${e.trim()}

    `).join("")}}extractGroupHTML(e){const t=[];return e.forEach(e=>{const n=e.innerHTML.trim();n&&("p"===e.tagName.toLowerCase()?t.push(e.outerHTML):t.push(`

    ${n}

    `))}),t.join("\n")}extractGroupMarkdown(e){const t=this.extractGroupHTML(e);return this.htmlToMarkdown(t)}updateGroupElements(e,t){const n=this.markdownToHtml(t),r=document.createElement("div");r.innerHTML=n;const i=Array.from(r.querySelectorAll("p, div, h1, h2, h3, h4, h5, h6")),s=Math.max(e.length,i.length);for(let t=0;ta.focus(),100),o}createMarkdownForm(e){const t=this.getMarkdownConfig(e),n=e.extractMarkdown(),r=document.createElement("div");return r.className="insertr-edit-form",r.innerHTML=`\n
    ${t.label}
    \n
    \n \n
    \n Supports Markdown formatting (bold, italic, links, etc.)\n
    \n
    \n
    \n \n \n
    \n `,r}getMarkdownConfig(e){const t=e.elements.length;if(1!==t)return{label:`Group Content (${t} elements)`,rows:Math.max(8,2*t),placeholder:"Edit all content together using markdown..."};switch(e.elements[0].tagName.toLowerCase()){case"h3":case"h4":case"h5":case"h6":return{label:"Title (Markdown)",rows:2,placeholder:"Enter title using markdown..."};case"p":return{label:"Content (Markdown)",rows:4,placeholder:"Enter content using markdown..."};case"span":return{label:"Text (Markdown)",rows:2,placeholder:"Enter text using markdown..."};default:return{label:"Content (Markdown)",rows:3,placeholder:"Enter content using markdown..."}}}setupEventHandlers(e,t,n,{onSave:r,onCancel:i}){const s=e.querySelector("textarea"),o=e.querySelector(".insertr-btn-save"),a=e.querySelector(".insertr-btn-cancel");this.previewManager.setActiveContext(n),s&&s.addEventListener("input",()=>{const e=s.value;this.previewManager.schedulePreview(n,e)}),o&&o.addEventListener("click",()=>{const e=s.value;n.applyMarkdown(e),this.previewManager.clearPreview(),r({text:e}),this.close()}),a&&a.addEventListener("click",()=>{this.previewManager.clearPreview(),i(),this.close()});const l=e=>{"Escape"===e.key&&(this.previewManager.clearPreview(),i(),this.close(),document.removeEventListener("keydown",l))};document.addEventListener("keydown",l),t.addEventListener("click",e=>{e.target===t&&(this.previewManager.clearPreview(),i(),this.close())})}createOverlay(e){const t=document.createElement("div");return t.className="insertr-form-overlay",t.appendChild(e),t}positionForm(e,t){const n=e.getBoundingClientRect(),r=t.querySelector(".insertr-edit-form"),i=window.innerWidth;let s;if(i<768)s=Math.min(i-40,500);else{const e=600,t=Math.min(.9*i,800);s=Math.max(e,Math.min(1.5*n.width,t))}r.style.width=`${s}px`;const o=n.bottom+window.scrollY+10,a=n.left+window.scrollX+n.width/2-s/2,l=window.innerWidth-s-20,c=Math.max(20,Math.min(a,l));t.style.position="absolute",t.style.top=`${o}px`,t.style.left=`${c}px`,t.style.zIndex="10000",this.ensureModalVisible(e,t)}ensureModalVisible(e,t){requestAnimationFrame(()=>{const e=t.querySelector(".insertr-edit-form").getBoundingClientRect(),n=window.innerHeight;if(e.bottom>n){const t=e.bottom-n+20;window.scrollBy({top:t,behavior:"smooth"})}})}close(){this.previewManager&&this.previewManager.clearPreview(),this.currentOverlay&&(this.currentOverlay.remove(),this.currentOverlay=null)}escapeHtml(e){if("string"!=typeof e)return"";const t=document.createElement("div");return t.textContent=e,t.innerHTML}}class je{constructor(e){this.elements=e,this.primaryElement=e[0],this.originalContent=null}extractMarkdown(){return 1===this.elements.length?Ue.htmlToMarkdown(this.elements[0].innerHTML):Ue.extractGroupMarkdown(this.elements)}applyMarkdown(e){if(1===this.elements.length){const t=Ue.markdownToHtml(e);this.elements[0].innerHTML=t}else Ue.updateGroupElements(this.elements,e)}storeOriginalContent(){this.originalContent=this.elements.map(e=>e.innerHTML)}restoreOriginalContent(){this.originalContent&&this.elements.forEach((e,t)=>{void 0!==this.originalContent[t]&&(e.innerHTML=this.originalContent[t])})}applyPreviewStyling(){this.elements.forEach(e=>{e.classList.add("insertr-preview-active")}),this.primaryElement.classList.contains("insertr-group")&&this.primaryElement.classList.add("insertr-preview-active")}removePreviewStyling(){this.elements.forEach(e=>{e.classList.remove("insertr-preview-active")}),this.primaryElement.classList.contains("insertr-group")&&this.primaryElement.classList.remove("insertr-preview-active")}}class Ze{constructor(){this.previewTimeout=null,this.activeContext=null,this.resizeObserver=null}setActiveContext(e){this.clearPreview(),this.activeContext=e,this.startResizeObserver()}schedulePreview(e,t){this.previewTimeout&&clearTimeout(this.previewTimeout),this.previewTimeout=setTimeout(()=>{this.updatePreview(e,t)},500)}updatePreview(e,t){e.originalContent||e.storeOriginalContent(),e.applyMarkdown(t),e.applyPreviewStyling()}clearPreview(){this.activeContext&&(this.activeContext.restoreOriginalContent(),this.activeContext.removePreviewStyling(),this.activeContext=null),this.previewTimeout&&(clearTimeout(this.previewTimeout),this.previewTimeout=null),this.stopResizeObserver()}startResizeObserver(){this.stopResizeObserver(),this.activeContext&&(this.resizeObserver=new ResizeObserver(()=>{this.onHeightChange&&this.onHeightChange(this.activeContext.primaryElement)}),this.activeContext.elements.forEach(e=>{this.resizeObserver.observe(e)}))}stopResizeObserver(){this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null)}setHeightChangeCallback(e){this.onHeightChange=e}}class Ve{constructor(){this.previewTimeouts=new Map,this.activeElement=null,this.originalContent=null,this.originalStyles=null,this.resizeObserver=null,this.onHeightChangeCallback=null}schedulePreview(e,t,n){const r=this.getElementId(e);this.previewTimeouts.has(r)&&clearTimeout(this.previewTimeouts.get(r));const i=setTimeout(()=>{this.updatePreview(e,t,n)},500);this.previewTimeouts.set(r,i)}updatePreview(e,t,n){this.originalContent||this.activeElement!==e||(this.originalContent=this.extractOriginalContent(e,n)),this.applyPreviewContent(e,t,n)}extractOriginalContent(e,t){return"link"===t?{text:e.textContent,url:e.href}:e.textContent}applyPreviewContent(e,t,n){switch(e.classList.add("insertr-preview-active"),n){case"text":case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":case"span":case"button":case"textarea":case"p":t&&t.trim()&&(e.textContent=t);break;case"link":"object"==typeof t?(void 0!==t.text&&t.text.trim()&&(e.textContent=t.text),void 0!==t.url&&t.url.trim()&&(e.href=t.url)):t&&t.trim()&&(e.textContent=t)}}clearPreview(e){if(!e)return;const t=this.getElementId(e);this.previewTimeouts.has(t)&&(clearTimeout(this.previewTimeouts.get(t)),this.previewTimeouts.delete(t)),this.stopResizeObserver(),this.originalContent&&e===this.activeElement&&this.restoreOriginalContent(e),e.classList.remove("insertr-preview-active"),this.activeElement=null,this.originalContent=null}restoreOriginalContent(e){this.originalContent&&("object"==typeof this.originalContent?(e.textContent=this.originalContent.text,this.originalContent.url&&(e.href=this.originalContent.url)):e.textContent=this.originalContent)}getElementId(e){return e._insertrId||(e._insertrId="insertr_"+Date.now()+"_"+Math.random().toString(36).substr(2,9)),e._insertrId}setActiveElement(e){this.activeElement=e,this.originalContent=null,this.startResizeObserver(e)}setHeightChangeCallback(e){this.onHeightChangeCallback=e}startResizeObserver(e){this.stopResizeObserver(),this.resizeObserver=new ResizeObserver(t=>{requestAnimationFrame(()=>{this.onHeightChangeCallback&&e===this.activeElement&&this.onHeightChangeCallback(e)})}),this.resizeObserver.observe(e)}stopResizeObserver(){this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null)}}class Qe{constructor(){this.currentOverlay=null,this.previewManager=new Ve,this.markdownEditor=new Ge,this.setupStyles()}showEditForm(e,t,n,r){this.closeForm();const{element:i,contentId:s,contentType:o}=e;if("markdown"===this.getFieldConfig(i,o).type)return this.markdownEditor.edit(i,n,r);if(i.classList.contains("insertr-group")){const e=this.getGroupChildren(i);return this.markdownEditor.edit(e,n,r)}return this.showLegacyEditForm(e,t,n,r)}showLegacyEditForm(e,t,n,r){const{element:i,contentId:s,contentType:o}=e,a=this.getFieldConfig(i,o);this.previewManager.setActiveElement(i),this.previewManager.setHeightChangeCallback(e=>{this.repositionModal(e,c)});const l=this.createEditForm(s,a,t),c=this.createOverlay(l);this.positionForm(i,c),this.setupFormHandlers(l,c,i,a,{onSave:n,onCancel:r}),document.body.appendChild(c),this.currentOverlay=c;const h=l.querySelector("input, textarea");return h&&setTimeout(()=>h.focus(),100),c}getGroupChildren(e){const t=[];for(const n of e.children)n.textContent.trim().length>0&&t.push(n);return t}closeForm(){this.markdownEditor.close(),this.previewManager.activeElement&&this.previewManager.clearPreview(this.previewManager.activeElement),this.currentOverlay&&(this.currentOverlay.remove(),this.currentOverlay=null)}getFieldConfig(e,t){const n=e.tagName.toLowerCase(),r=Array.from(e.classList);let i={h1:{type:"text",label:"Headline",maxLength:60,placeholder:"Enter headline..."},h2:{type:"text",label:"Subheading",maxLength:80,placeholder:"Enter subheading..."},h3:{type:"markdown",label:"Section Title",rows:2,placeholder:"Enter title (markdown supported)..."},h4:{type:"markdown",label:"Title",rows:2,placeholder:"Enter title (markdown supported)..."},h5:{type:"markdown",label:"Title",rows:2,placeholder:"Enter title (markdown supported)..."},h6:{type:"markdown",label:"Title",rows:2,placeholder:"Enter title (markdown supported)..."},p:{type:"markdown",label:"Content",rows:4,placeholder:"Enter content using markdown..."},a:{type:"link",label:"Link",placeholder:"Enter link text...",includeUrl:!0},span:{type:"markdown",label:"Text",rows:2,placeholder:"Enter text (markdown supported)..."},button:{type:"text",label:"Button Text",placeholder:"Enter button text..."}}[n]||{type:"text",label:"Text",placeholder:"Enter text..."};return r.includes("lead")&&(i={...i,label:"Lead Paragraph",rows:4,placeholder:"Enter lead paragraph..."}),"markdown"===t&&(i={...i,type:"markdown",label:"Markdown Content",rows:8}),i}createEditForm(e,t,n){const r=document.createElement("div");r.className="insertr-edit-form";let i=`
    ${t.label}
    `;return"markdown"===t.type?i+=this.createMarkdownField(t,n):"link"===t.type&&t.includeUrl?i+=this.createLinkField(t,n):"textarea"===t.type?i+=this.createTextareaField(t,n):i+=this.createTextField(t,n),i+='\n
    \n \n \n
    \n ',r.innerHTML=i,r}createMarkdownField(e,t){return`\n
    \n \n
    \n Supports Markdown formatting (bold, italic, links, etc.)\n
    \n
    \n `}createLinkField(e,t){const n="object"==typeof t?t.text||"":t,r="object"==typeof t&&t.url||"";return`\n
    \n \n \n
    \n
    \n \n \n
    \n `}createTextareaField(e,t){const n="object"==typeof t?t.text||"":t;return`\n
    \n \n
    \n `}createTextField(e,t){const n="object"==typeof t?t.text||"":t;return`\n
    \n \n
    \n `}createOverlay(e){const t=document.createElement("div");return t.className="insertr-form-overlay",t.appendChild(e),t}positionForm(e,t){const n=e.getBoundingClientRect(),r=t.querySelector(".insertr-edit-form"),i=window.innerWidth;let s;if(i<768)s=Math.min(i-40,500);else{const e=600,t=Math.min(.9*i,800),r=n.width;s=Math.max(e,Math.min(1.5*r,t))}r.style.width=`${s}px`;const o=n.bottom+window.scrollY+10,a=n.left+window.scrollX+n.width/2-s/2,l=window.innerWidth-s-20,c=Math.max(20,Math.min(a,l));t.style.position="absolute",t.style.top=`${o}px`,t.style.left=`${c}px`,t.style.zIndex="10000",this.ensureModalVisible(e,t)}repositionModal(e,t){requestAnimationFrame(()=>{const n=e.getBoundingClientRect();t.querySelector(".insertr-edit-form");const r=n.bottom+window.scrollY+10;t.style.top=`${r}px`,this.ensureModalVisible(e,t)})}ensureModalVisible(e,t){requestAnimationFrame(()=>{const e=t.querySelector(".insertr-edit-form").getBoundingClientRect(),n=window.innerHeight,r=e.bottom;if(r>n){const e=r-n+20;window.scrollBy({top:e,behavior:"smooth"})}})}setupFormHandlers(e,t,n,r,{onSave:i,onCancel:s}){const o=e.querySelector(".insertr-btn-save"),a=e.querySelector(".insertr-btn-cancel"),l=this.getElementType(n,r);this.setupLivePreview(e,n,l),o&&o.addEventListener("click",()=>{this.previewManager.clearPreview(n);const t=this.extractFormData(e);i(t),this.closeForm()}),a&&a.addEventListener("click",()=>{this.previewManager.clearPreview(n),s(),this.closeForm()});const c=e=>{"Escape"===e.key&&(this.previewManager.clearPreview(n),s(),this.closeForm(),document.removeEventListener("keydown",c))};document.addEventListener("keydown",c),t.addEventListener("click",e=>{e.target===t&&(this.previewManager.clearPreview(n),s(),this.closeForm())})}setupLivePreview(e,t,n){e.querySelectorAll("input, textarea").forEach(r=>{r.addEventListener("input",()=>{const r=this.extractInputValue(e,n);this.previewManager.schedulePreview(t,r,n)})})}extractInputValue(e,t){const n=e.querySelector('input[name="text"]'),r=e.querySelector('input[name="url"]'),i=e.querySelector('input[name="content"], textarea[name="content"]');return n&&r?{text:n.value,url:r.value}:i?i.value:""}getElementType(e,t){if("link"===t.type)return"link";if("markdown"===t.type)return"markdown";if("textarea"===t.type)return"textarea";return"p"===e.tagName.toLowerCase()?"p":"text"}extractFormData(e){const t={},n=e.querySelector('input[name="text"]'),r=e.querySelector('input[name="url"]'),i=e.querySelector('input[name="content"], textarea[name="content"]');return n&&r?(t.text=n.value,t.url=r.value):i&&(t.text=i.value),t}escapeHtml(e){if("string"!=typeof e)return"";const t=document.createElement("div");return t.textContent=e,t.innerHTML}setupStyles(){const e=document.createElement("style");e.type="text/css",e.innerHTML="\n .insertr-form-overlay {\n position: absolute;\n z-index: 10000;\n }\n\n .insertr-edit-form {\n background: white;\n border: 2px solid #007cba;\n border-radius: 8px;\n padding: 1rem;\n box-shadow: 0 8px 25px rgba(0,0,0,0.15);\n width: 100%;\n box-sizing: border-box;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n\n .insertr-form-header {\n font-weight: 600;\n color: #1f2937;\n margin-bottom: 1rem;\n padding-bottom: 0.5rem;\n border-bottom: 1px solid #e5e7eb;\n font-size: 0.875rem;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n .insertr-form-group {\n margin-bottom: 1rem;\n }\n\n .insertr-form-group:last-child {\n margin-bottom: 0;\n }\n\n .insertr-form-label {\n display: block;\n font-weight: 600;\n color: #374151;\n margin-bottom: 0.5rem;\n font-size: 0.875rem;\n }\n\n .insertr-form-input, \n .insertr-form-textarea {\n width: 100%;\n padding: 0.75rem;\n border: 1px solid #d1d5db;\n border-radius: 6px;\n font-family: inherit;\n font-size: 1rem;\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n }\n\n .insertr-form-input:focus,\n .insertr-form-textarea:focus {\n outline: none;\n border-color: #007cba;\n box-shadow: 0 0 0 3px rgba(0, 124, 186, 0.1);\n }\n\n .insertr-form-textarea {\n min-height: 120px;\n resize: vertical;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n }\n\n .insertr-markdown-editor {\n min-height: 200px;\n font-family: 'SF Mono', Monaco, 'Cascadia Code', monospace;\n font-size: 0.9rem;\n line-height: 1.5;\n background-color: #f8fafc;\n }\n\n .insertr-form-actions {\n display: flex;\n gap: 0.5rem;\n justify-content: flex-end;\n margin-top: 1rem;\n padding-top: 1rem;\n border-top: 1px solid #e5e7eb;\n }\n\n .insertr-btn-save {\n background: #10b981;\n color: white;\n border: none;\n padding: 0.5rem 1rem;\n border-radius: 6px;\n font-weight: 500;\n cursor: pointer;\n transition: background-color 0.2s;\n font-size: 0.875rem;\n }\n\n .insertr-btn-save:hover {\n background: #059669;\n }\n\n .insertr-btn-cancel {\n background: #6b7280;\n color: white;\n border: none;\n padding: 0.5rem 1rem;\n border-radius: 6px;\n font-weight: 500;\n cursor: pointer;\n transition: background-color 0.2s;\n font-size: 0.875rem;\n }\n\n .insertr-btn-cancel:hover {\n background: #4b5563;\n }\n\n .insertr-form-help {\n font-size: 0.75rem;\n color: #6b7280;\n margin-top: 0.25rem;\n }\n\n /* Live Preview Styles */\n .insertr-preview-active {\n position: relative;\n background: rgba(0, 124, 186, 0.05) !important;\n outline: 2px solid #007cba !important;\n outline-offset: 2px;\n transition: all 0.3s ease;\n }\n\n .insertr-preview-active::after {\n content: \"Preview\";\n position: absolute;\n top: -25px;\n left: 0;\n background: #007cba;\n color: white;\n padding: 2px 8px;\n border-radius: 3px;\n font-size: 0.75rem;\n font-weight: 500;\n z-index: 10001;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n\n /* Enhanced modal sizing for comfortable editing */\n .insertr-edit-form {\n min-width: 600px; /* Ensures ~70 character width */\n max-width: 800px;\n }\n\n @media (max-width: 768px) {\n .insertr-edit-form {\n min-width: 90vw;\n max-width: 90vw;\n }\n \n .insertr-preview-active::after {\n top: -20px;\n font-size: 0.7rem;\n padding: 1px 6px;\n }\n }\n\n /* Enhanced input styling for comfortable editing */\n .insertr-form-input {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, monospace;\n letter-spacing: 0.02em;\n }\n ",document.head.appendChild(e)}}class We{constructor(e,t,n,r={}){this.core=e,this.auth=t,this.apiClient=n,this.options=r,this.isActive=!1,this.formRenderer=new Qe}start(){if(this.isActive)return;console.log("🚀 Starting Insertr Editor"),this.isActive=!0,this.addEditorStyles();const e=this.core.getAllElements();console.log(`📝 Found ${e.length} editable elements`),e.forEach(e=>this.initializeElement(e))}initializeElement(e){const{element:t,contentId:n,contentType:r}=e;t.style.cursor="pointer",t.style.position="relative",this.addHoverEffects(t),this.addClickHandler(t,e)}addHoverEffects(e){e.addEventListener("mouseenter",()=>{e.classList.add("insertr-editing-hover")}),e.addEventListener("mouseleave",()=>{e.classList.remove("insertr-editing-hover")})}addClickHandler(e,t){e.addEventListener("click",e=>{this.auth.isAuthenticated()&&this.auth.isEditMode()&&(e.preventDefault(),this.openEditor(t))})}openEditor(e){const{element:t}=e,n=this.extractCurrentContent(t);this.formRenderer.showEditForm(e,n,t=>this.handleSave(e,t),()=>this.handleCancel(e))}extractCurrentContent(e){return"a"===e.tagName.toLowerCase()?{text:e.textContent.trim(),url:e.getAttribute("href")||""}:e.textContent.trim()}async handleSave(e,t){console.log("💾 Saving content:",e.contentId,t);try{let n;n=(e.element.tagName.toLowerCase(),t.text||t);if(!await this.apiClient.updateContent(e.contentId,n)){const t=this.determineContentType(e.element);await this.apiClient.createContent(e.contentId,n,t)||console.error("❌ Failed to save content to server:",e.contentId)}this.updateElementContent(e.element,t),this.formRenderer.closeForm(),console.log("✅ Content saved:",e.contentId,n)}catch(n){console.error("❌ Error saving content:",n),this.updateElementContent(e.element,t),this.formRenderer.closeForm()}}determineContentType(e){const t=e.tagName.toLowerCase();return"a"===t||"button"===t?"link":"p"===t||"div"===t?"markdown":"text"}handleCancel(e){console.log("❌ Edit cancelled:",e.contentId)}updateElementContent(e,t){e.classList.contains("insertr-group")||this.isMarkdownElement(e)?console.log("🔄 Skipping element update - handled by unified markdown editor"):"a"===e.tagName.toLowerCase()?(void 0!==t.text&&(e.textContent=t.text),void 0!==t.url&&e.setAttribute("href",t.url)):e.textContent=t.text||""}isMarkdownElement(e){return new Set(["p","h3","h4","h5","h6","span"]).has(e.tagName.toLowerCase())}addEditorStyles(){const e=document.createElement("style");e.type="text/css",e.innerHTML='\n .insertr-editing-hover {\n outline: 2px dashed #007cba !important;\n outline-offset: 2px !important;\n background-color: rgba(0, 124, 186, 0.05) !important;\n }\n \n .insertr:hover::after {\n content: "âœī¸ " attr(data-content-type);\n position: absolute;\n top: -25px;\n left: 0;\n background: #007cba;\n color: white;\n padding: 2px 6px;\n font-size: 11px;\n border-radius: 3px;\n white-space: nowrap;\n z-index: 1000;\n font-family: monospace;\n }\n ',document.head.appendChild(e)}}class Ye{constructor(e={}){this.options={mockAuth:!1!==e.mockAuth,hideGatesAfterAuth:!0===e.hideGatesAfterAuth,...e},this.state={isAuthenticated:!1,editMode:!1,currentUser:null,activeEditor:null,isInitialized:!1,isAuthenticating:!1},this.statusIndicator=null}init(){console.log("🔧 Insertr: Scanning for editor gates"),this.setupEditorGates()}initializeFullSystem(){this.state.isInitialized||(console.log("🔐 Initializing Insertr Editing System"),this.createAuthControls(),this.setupAuthenticationControls(),this.createStatusIndicator(),this.updateBodyClasses(),this.state.editMode=!0,this.state.isInitialized=!0,window.Insertr&&window.Insertr.startEditor&&window.Insertr.startEditor(),this.updateButtonStates(),this.updateStatusIndicator(),console.log("📱 Editing system active - Controls in bottom-right corner"),console.log("âœī¸ Edit mode enabled - Click elements to edit"))}setupEditorGates(){const e=document.querySelectorAll(".insertr-gate");0!==e.length?(console.log(`đŸšĒ Found ${e.length} editor gate(s)`),this.addGateStyles(),e.forEach((e,t)=>{e.hasAttribute("data-original-text")||e.setAttribute("data-original-text",e.textContent),e.addEventListener("click",n=>{n.preventDefault(),this.handleGateClick(e,t)}),e.style.cursor="pointer"})):console.log("â„šī¸ No .insertr-gate elements found - editor access disabled")}async handleGateClick(e,t){if(this.state.isAuthenticating)return void console.log("âŗ Authentication already in progress...");console.log(`🚀 Editor gate activated (gate ${t+1})`),this.state.isAuthenticating=!0;const n=e.textContent;e.setAttribute("data-original-text",n),e.textContent="âŗ Signing in...",e.style.pointerEvents="none";try{await this.performOAuthFlow(),this.initializeFullSystem(),this.options.hideGatesAfterAuth?this.hideAllGates():this.updateGateState()}catch(t){console.error("❌ Authentication failed:",t);const n=e.getAttribute("data-original-text");n&&(e.textContent=n),e.style.pointerEvents=""}finally{this.state.isAuthenticating=!1}}async performOAuthFlow(){if(this.options.mockAuth)return console.log("🔐 Mock OAuth: Simulating authentication..."),await new Promise(e=>setTimeout(e,1e3)),this.state.isAuthenticated=!0,this.state.currentUser={name:"Site Owner",email:"owner@example.com",role:"admin"},void console.log("✅ Mock OAuth: Authentication successful");throw new Error("Production OAuth not implemented yet")}hideAllGates(){document.body.classList.add("insertr-hide-gates"),console.log("đŸšĒ Editor gates hidden (hideGatesAfterAuth enabled)")}updateGateState(){document.querySelectorAll(".insertr-gate").forEach(e=>{const t=e.getAttribute("data-original-text");t&&(e.textContent=t),e.style.pointerEvents="",e.style.opacity=""}),console.log("đŸšĒ Editor gates restored to original state")}createAuthControls(){if(document.getElementById("insertr-auth-controls"))return;document.body.insertAdjacentHTML("beforeend",'\n
    \n \n \n
    \n '),this.addControlStyles()}setupAuthenticationControls(){const e=document.getElementById("insertr-auth-toggle"),t=document.getElementById("insertr-edit-toggle");e&&e.addEventListener("click",()=>this.toggleAuthentication()),t&&t.addEventListener("click",()=>this.toggleEditMode())}toggleAuthentication(){this.state.isAuthenticated=!this.state.isAuthenticated,this.state.currentUser=this.state.isAuthenticated?{name:"Demo User",email:"demo@example.com",role:"editor"}:null,this.state.isAuthenticated||(this.state.editMode=!1),this.updateBodyClasses(),this.updateButtonStates(),this.updateStatusIndicator(),console.log(this.state.isAuthenticated?"✅ Authenticated as Demo User":"❌ Logged out")}toggleEditMode(){this.state.isAuthenticated?(this.state.editMode=!this.state.editMode,!this.state.editMode&&this.state.activeEditor&&(this.state.activeEditor=null),this.updateBodyClasses(),this.updateButtonStates(),this.updateStatusIndicator(),console.log(this.state.editMode?"âœī¸ Edit mode ON - Click elements to edit":"👀 Edit mode OFF - Read-only view")):console.warn("❌ Cannot enable edit mode - not authenticated")}updateBodyClasses(){document.body.classList.toggle("insertr-authenticated",this.state.isAuthenticated),document.body.classList.toggle("insertr-edit-mode",this.state.editMode)}updateButtonStates(){const e=document.getElementById("insertr-auth-toggle"),t=document.getElementById("insertr-edit-toggle");e&&(e.textContent=this.state.isAuthenticated?"Logout":"Login as Client",e.className="insertr-auth-btn "+(this.state.isAuthenticated?"insertr-authenticated":"")),t&&(t.style.display=this.state.isAuthenticated?"inline-block":"none",t.textContent="Edit Mode: "+(this.state.editMode?"On":"Off"),t.className="insertr-auth-btn "+(this.state.editMode?"insertr-edit-active":""))}createStatusIndicator(){if(document.getElementById("insertr-status"))return;document.body.insertAdjacentHTML("beforeend",'\n
    \n
    \n Visitor Mode\n \n
    \n
    \n '),this.statusIndicator=document.getElementById("insertr-status"),this.updateStatusIndicator()}updateStatusIndicator(){const e=document.querySelector(".insertr-status-text"),t=document.querySelector(".insertr-status-dot");e&&t&&(this.state.isAuthenticated?this.state.editMode?(e.textContent="Editing",t.className="insertr-status-dot insertr-status-editing"):(e.textContent="Authenticated",t.className="insertr-status-dot insertr-status-authenticated"):(e.textContent="Visitor Mode",t.className="insertr-status-dot insertr-status-visitor"))}isAuthenticated(){return this.state.isAuthenticated}isEditMode(){return this.state.editMode}getCurrentUser(){return this.state.currentUser}addGateStyles(){const e=document.createElement("style");e.type="text/css",e.innerHTML="\n .insertr-gate {\n transition: opacity 0.2s ease;\n user-select: none;\n }\n\n .insertr-gate:hover {\n opacity: 0.7;\n }\n\n /* Optional: Hide gates when authenticated (only if hideGatesAfterAuth option is true) */\n body.insertr-hide-gates .insertr-gate {\n display: none !important;\n }\n ",document.head.appendChild(e)}addControlStyles(){const e=document.createElement("style");e.type="text/css",e.innerHTML="\n .insertr-auth-controls {\n position: fixed;\n bottom: 20px;\n right: 20px;\n z-index: 9999;\n display: flex;\n flex-direction: column;\n gap: 8px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n }\n\n .insertr-auth-btn {\n background: #4f46e5;\n color: white;\n border: none;\n padding: 8px 16px;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n }\n\n .insertr-auth-btn:hover {\n background: #4338ca;\n transform: translateY(-1px);\n box-shadow: 0 4px 8px rgba(0,0,0,0.15);\n }\n\n .insertr-auth-btn.insertr-authenticated {\n background: #059669;\n }\n\n .insertr-auth-btn.insertr-authenticated:hover {\n background: #047857;\n }\n\n .insertr-auth-btn.insertr-edit-active {\n background: #dc2626;\n }\n\n .insertr-auth-btn.insertr-edit-active:hover {\n background: #b91c1c;\n }\n\n .insertr-status {\n position: fixed;\n bottom: 20px;\n left: 20px;\n z-index: 9999;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n padding: 8px 12px;\n box-shadow: 0 4px 12px rgba(0,0,0,0.1);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n max-width: 200px;\n }\n\n .insertr-status-content {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .insertr-status-text {\n font-size: 12px;\n font-weight: 500;\n color: #374151;\n }\n\n .insertr-status-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: #9ca3af;\n }\n\n .insertr-status-dot.insertr-status-visitor {\n background: #9ca3af;\n }\n\n .insertr-status-dot.insertr-status-authenticated {\n background: #059669;\n }\n\n .insertr-status-dot.insertr-status-editing {\n background: #dc2626;\n animation: insertr-pulse 2s infinite;\n }\n\n @keyframes insertr-pulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n }\n\n /* Hide editing interface when not in edit mode */\n body:not(.insertr-edit-mode) .insertr:hover::after {\n display: none !important;\n }\n\n /* Only show editing features when in edit mode */\n .insertr-authenticated.insertr-edit-mode .insertr {\n cursor: pointer;\n }\n\n .insertr-authenticated.insertr-edit-mode .insertr:hover {\n outline: 2px dashed #007cba !important;\n outline-offset: 2px !important;\n background-color: rgba(0, 124, 186, 0.05) !important;\n }\n ",document.head.appendChild(e)}async authenticateWithOAuth(e="google"){console.log(`🔐 Mock OAuth login with ${e}`),setTimeout(()=>{this.state.isAuthenticated=!0,this.state.currentUser={name:"OAuth User",email:"user@example.com",provider:e,role:"editor"},this.updateBodyClasses(),this.updateButtonStates(),this.updateStatusIndicator(),console.log("✅ OAuth authentication successful")},1e3)}}class Xe{constructor(e={}){const t="localhost"===window.location.hostname||"127.0.0.1"===window.location.hostname,n=t?"http://localhost:8080/api/content":"/api/content";this.baseUrl=e.apiEndpoint||n,this.siteId=e.siteId||"demo",t&&!e.apiEndpoint&&console.log(`🔌 API Client: Using development server at ${this.baseUrl}`)}async getContent(e){try{const t=await fetch(`${this.baseUrl}/${e}?site_id=${this.siteId}`);return t.ok?await t.json():null}catch(t){return console.warn("Failed to fetch content:",e,t),null}}async updateContent(e,t){try{const n=await fetch(`${this.baseUrl}/${e}?site_id=${this.siteId}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:t})});return n.ok?(console.log(`✅ Content updated: ${e}`),!0):(console.warn(`âš ī¸ Update failed (${n.status}): ${e}`),!1)}catch(t){return"TypeError"===t.name&&t.message.includes("fetch")?(console.warn(`🔌 API Server not reachable at ${this.baseUrl}`),console.warn("💡 Start full-stack development: just dev")):console.error("Failed to update content:",e,t),!1}}async createContent(e,t,n){try{const r=await fetch(`${this.baseUrl}?site_id=${this.siteId}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:e,value:t,type:n})});return r.ok?(console.log(`✅ Content created: ${e} (${n})`),!0):(console.warn(`âš ī¸ Create failed (${r.status}): ${e}`),!1)}catch(t){return"TypeError"===t.name&&t.message.includes("fetch")?(console.warn(`🔌 API Server not reachable at ${this.baseUrl}`),console.warn("💡 Start full-stack development: just dev")):console.error("Failed to create content:",e,t),!1}}}function Ke(){document.querySelector(".insertr")&&window.Insertr.init()}return window.Insertr={core:null,editor:null,auth:null,apiClient:null,init(t={}){return console.log("🔧 Insertr v1.0.0 initializing... (Hot Reload Ready)"),this.core=new e(t),this.auth=new Ye(t),this.apiClient=new Xe(t),this.editor=new We(this.core,this.auth,this.apiClient,t),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>this.start()):this.start(),this},start(){this.auth&&this.auth.init()},startEditor(){this.editor&&!this.editor.isActive&&this.editor.start()},login(){return this.auth?this.auth.toggleAuthentication():null},logout(){this.auth&&this.auth.isAuthenticated()&&this.auth.toggleAuthentication()},toggleEditMode(){return this.auth?this.auth.toggleEditMode():null},isAuthenticated(){return!!this.auth&&this.auth.isAuthenticated()},isEditMode(){return!!this.auth&&this.auth.isEditMode()}},"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ke):Ke(),window.Insertr}();