easy-forms-core 1.5.2 → 1.5.4

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.
package/dist/easy-form.js CHANGED
@@ -1,62 +1,62 @@
1
- var st=Object.defineProperty;var Zt=(l,t,e)=>t in l?st(l,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):l[t]=e;var Gt=(l,t)=>()=>(l&&(t=l(l=0)),t);var Xt=(l,t)=>{for(var e in t)st(l,e,{get:t[e],enumerable:!0})};var F=(l,t,e)=>Zt(l,typeof t!="symbol"?t+"":t,e);var Je={};Xt(Je,{Hooks:()=>O,Lexer:()=>M,Marked:()=>Ot,Parser:()=>z,Renderer:()=>X,TextRenderer:()=>Ie,Tokenizer:()=>G,defaults:()=>R,getDefaults:()=>Me,lexer:()=>ra,marked:()=>C,options:()=>Gr,parse:()=>ea,parseInline:()=>Jr,parser:()=>ta,setOptions:()=>Xr,use:()=>Kr,walkTokens:()=>Qr});function Me(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function zt(l){R=l}function k(l,t=""){let e=typeof l=="string"?l:l.source,a={replace:(r,s)=>{let o=typeof s=="string"?s:s.source;return o=o.replace(L.caret,"$1"),e=e.replace(r,o),a},getRegex:()=>new RegExp(e,t)};return a}function A(l,t){if(t){if(L.escapeTest.test(l))return l.replace(L.escapeReplace,Tt)}else if(L.escapeTestNoEncode.test(l))return l.replace(L.escapeReplaceNoEncode,Tt);return l}function Ft(l){try{l=encodeURI(l).replace(L.percentDecode,"%")}catch{return null}return l}function Lt(l,t){let e=l.replace(L.findPipe,(s,o,n)=>{let i=!1,d=o;for(;--d>=0&&n[d]==="\\";)i=!i;return i?"|":" |"}),a=e.split(L.splitPipe),r=0;if(a[0].trim()||a.shift(),a.length>0&&!a.at(-1)?.trim()&&a.pop(),t)if(a.length>t)a.splice(t);else for(;a.length<t;)a.push("");for(;r<a.length;r++)a[r]=a[r].trim().replace(L.slashPipe,"|");return a}function Z(l,t,e){let a=l.length;if(a===0)return"";let r=0;for(;r<a;){let s=l.charAt(a-r-1);if(s===t&&!e)r++;else if(s!==t&&e)r++;else break}return l.slice(0,a-r)}function Yr(l,t){if(l.indexOf(t[1])===-1)return-1;let e=0;for(let a=0;a<l.length;a++)if(l[a]==="\\")a++;else if(l[a]===t[0])e++;else if(l[a]===t[1]&&(e--,e<0))return a;return e>0?-2:-1}function Ur(l,t=0){let e=t,a="";for(let r of l)if(r===" "){let s=4-e%4;a+=" ".repeat(s),e+=s}else a+=r,e++;return a}function Mt(l,t,e,a,r){let s=t.href,o=t.title||null,n=l[1].replace(r.other.outputLinkReplace,"$1");a.state.inLink=!0;let i={type:l[0].charAt(0)==="!"?"image":"link",raw:e,href:s,title:o,text:n,tokens:a.inlineTokens(n)};return a.state.inLink=!1,i}function Zr(l,t,e){let a=l.match(e.other.indentCodeCompensation);if(a===null)return t;let r=a[1];return t.split(`
2
- `).map(s=>{let o=s.match(e.other.beginningSpace);if(o===null)return s;let[n]=o;return n.length>=r.length?s.slice(r.length):s}).join(`
3
- `)}function C(l,t){return H.parse(l,t)}var R,q,nr,L,lr,dr,cr,K,mr,Ye,At,It,pr,Ue,ur,Ze,fr,hr,ze,Ge,gr,Rt,br,Xe,Ct,yr,vr,xr,wr,Nt,kr,Ae,Ke,$t,Er,qt,Cr,Sr,Ht,Tr,Fr,Lr,Pt,Mr,zr,Dt,Ar,Ir,Rr,Nr,$r,qr,Hr,Pr,Dr,Vr,Le,Br,Vt,Bt,Or,St,Qe,_r,_e,jr,Te,U,Wr,Tt,G,M,X,Ie,z,Fe,O,Ot,H,Gr,Xr,Kr,Qr,Jr,ea,ta,ra,et=Gt(()=>{"use strict";R=Me();q={exec:()=>null};nr=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),L={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,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,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+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:l=>new RegExp(`^( {0,3}${l})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}#`),htmlBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}>`)},lr=/^(?:[ \t]*(?:\n|$))+/,dr=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,cr=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,K=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,mr=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Ye=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,At=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,It=k(At).replace(/bull/g,Ye).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(),pr=k(At).replace(/bull/g,Ye).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(),Ue=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,ur=/^[^\n]+/,Ze=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,fr=k(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Ze).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),hr=k(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Ye).getRegex(),ze="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",Ge=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,gr=k("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Ge).replace("tag",ze).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Rt=k(Ue).replace("hr",K).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[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",ze).getRegex(),br=k(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Rt).getRegex(),Xe={blockquote:br,code:dr,def:fr,fences:cr,heading:mr,hr:K,html:gr,lheading:It,list:hr,newline:lr,paragraph:Rt,table:q,text:ur},Ct=k("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",K).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",ze).getRegex(),yr={...Xe,lheading:pr,table:Ct,paragraph:k(Ue).replace("hr",K).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Ct).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",ze).getRegex()},vr={...Xe,html:k(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Ge).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:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:q,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:k(Ue).replace("hr",K).replace("heading",` *#{1,6} *[^
4
- ]`).replace("lheading",It).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},xr=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,wr=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Nt=/^( {2,}|\\)\n(?!\s*$)/,kr=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,Ae=/[\p{P}\p{S}]/u,Ke=/[\s\p{P}\p{S}]/u,$t=/[^\s\p{P}\p{S}]/u,Er=k(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,Ke).getRegex(),qt=/(?!~)[\p{P}\p{S}]/u,Cr=/(?!~)[\s\p{P}\p{S}]/u,Sr=/(?:[^\s\p{P}\p{S}]|~)/u,Ht=/(?![*_])[\p{P}\p{S}]/u,Tr=/(?![*_])[\s\p{P}\p{S}]/u,Fr=/(?:[^\s\p{P}\p{S}]|[*_])/u,Lr=k(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",nr?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Pt=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,Mr=k(Pt,"u").replace(/punct/g,Ae).getRegex(),zr=k(Pt,"u").replace(/punct/g,qt).getRegex(),Dt="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Ar=k(Dt,"gu").replace(/notPunctSpace/g,$t).replace(/punctSpace/g,Ke).replace(/punct/g,Ae).getRegex(),Ir=k(Dt,"gu").replace(/notPunctSpace/g,Sr).replace(/punctSpace/g,Cr).replace(/punct/g,qt).getRegex(),Rr=k("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,$t).replace(/punctSpace/g,Ke).replace(/punct/g,Ae).getRegex(),Nr=k(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,Ht).getRegex(),$r="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",qr=k($r,"gu").replace(/notPunctSpace/g,Fr).replace(/punctSpace/g,Tr).replace(/punct/g,Ht).getRegex(),Hr=k(/\\(punct)/,"gu").replace(/punct/g,Ae).getRegex(),Pr=k(/^<(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(),Dr=k(Ge).replace("(?:-->|$)","-->").getRegex(),Vr=k("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",Dr).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Le=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,Br=k(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",Le).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Vt=k(/^!?\[(label)\]\[(ref)\]/).replace("label",Le).replace("ref",Ze).getRegex(),Bt=k(/^!?\[(ref)\](?:\[\])?/).replace("ref",Ze).getRegex(),Or=k("reflink|nolink(?!\\()","g").replace("reflink",Vt).replace("nolink",Bt).getRegex(),St=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Qe={_backpedal:q,anyPunctuation:Hr,autolink:Pr,blockSkip:Lr,br:Nt,code:wr,del:q,delLDelim:q,delRDelim:q,emStrongLDelim:Mr,emStrongRDelimAst:Ar,emStrongRDelimUnd:Rr,escape:xr,link:Br,nolink:Bt,punctuation:Er,reflink:Vt,reflinkSearch:Or,tag:Vr,text:kr,url:q},_r={...Qe,link:k(/^!?\[(label)\]\((.*?)\)/).replace("label",Le).getRegex(),reflink:k(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Le).getRegex()},_e={...Qe,emStrongRDelimAst:Ir,emStrongLDelim:zr,delLDelim:Nr,delRDelim:qr,url:k(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",St).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:k(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",St).getRegex()},jr={..._e,br:k(Nt).replace("{2,}","*").getRegex(),text:k(_e.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Te={normal:Xe,gfm:yr,pedantic:vr},U={normal:Qe,gfm:_e,breaks:jr,pedantic:_r},Wr={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},Tt=l=>Wr[l];G=class{constructor(l){F(this,"options");F(this,"rules");F(this,"lexer");this.options=l||R}space(l){let t=this.rules.block.newline.exec(l);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(l){let t=this.rules.block.code.exec(l);if(t){let e=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?e:Z(e,`
5
- `)}}}fences(l){let t=this.rules.block.fences.exec(l);if(t){let e=t[0],a=Zr(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:a}}}heading(l){let t=this.rules.block.heading.exec(l);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let a=Z(e,"#");(this.options.pedantic||!a||this.rules.other.endingSpaceChar.test(a))&&(e=a.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(l){let t=this.rules.block.hr.exec(l);if(t)return{type:"hr",raw:Z(t[0],`
1
+ var ot=Object.defineProperty;var Xt=(l,t,e)=>t in l?ot(l,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):l[t]=e;var Kt=(l,t)=>()=>(l&&(t=l(l=0)),t);var Qt=(l,t)=>{for(var e in t)ot(l,e,{get:t[e],enumerable:!0})};var F=(l,t,e)=>Xt(l,typeof t!="symbol"?t+"":t,e);var Je={};Qt(Je,{Hooks:()=>O,Lexer:()=>M,Marked:()=>jt,Parser:()=>z,Renderer:()=>X,TextRenderer:()=>Ie,Tokenizer:()=>G,defaults:()=>R,getDefaults:()=>Me,lexer:()=>oa,marked:()=>C,options:()=>Kr,parse:()=>ra,parseInline:()=>ta,parser:()=>aa,setOptions:()=>Qr,use:()=>Jr,walkTokens:()=>ea});function Me(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function It(l){R=l}function w(l,t=""){let e=typeof l=="string"?l:l.source,a={replace:(r,o)=>{let s=typeof o=="string"?o:o.source;return s=s.replace(L.caret,"$1"),e=e.replace(r,s),a},getRegex:()=>new RegExp(e,t)};return a}function A(l,t){if(t){if(L.escapeTest.test(l))return l.replace(L.escapeReplace,Lt)}else if(L.escapeTestNoEncode.test(l))return l.replace(L.escapeReplaceNoEncode,Lt);return l}function Mt(l){try{l=encodeURI(l).replace(L.percentDecode,"%")}catch{return null}return l}function zt(l,t){let e=l.replace(L.findPipe,(o,s,n)=>{let i=!1,d=s;for(;--d>=0&&n[d]==="\\";)i=!i;return i?"|":" |"}),a=e.split(L.splitPipe),r=0;if(a[0].trim()||a.shift(),a.length>0&&!a.at(-1)?.trim()&&a.pop(),t)if(a.length>t)a.splice(t);else for(;a.length<t;)a.push("");for(;r<a.length;r++)a[r]=a[r].trim().replace(L.slashPipe,"|");return a}function Z(l,t,e){let a=l.length;if(a===0)return"";let r=0;for(;r<a;){let o=l.charAt(a-r-1);if(o===t&&!e)r++;else if(o!==t&&e)r++;else break}return l.slice(0,a-r)}function Zr(l,t){if(l.indexOf(t[1])===-1)return-1;let e=0;for(let a=0;a<l.length;a++)if(l[a]==="\\")a++;else if(l[a]===t[0])e++;else if(l[a]===t[1]&&(e--,e<0))return a;return e>0?-2:-1}function Gr(l,t=0){let e=t,a="";for(let r of l)if(r===" "){let o=4-e%4;a+=" ".repeat(o),e+=o}else a+=r,e++;return a}function At(l,t,e,a,r){let o=t.href,s=t.title||null,n=l[1].replace(r.other.outputLinkReplace,"$1");a.state.inLink=!0;let i={type:l[0].charAt(0)==="!"?"image":"link",raw:e,href:o,title:s,text:n,tokens:a.inlineTokens(n)};return a.state.inLink=!1,i}function Xr(l,t,e){let a=l.match(e.other.indentCodeCompensation);if(a===null)return t;let r=a[1];return t.split(`
2
+ `).map(o=>{let s=o.match(e.other.beginningSpace);if(s===null)return o;let[n]=s;return n.length>=r.length?o.slice(r.length):o}).join(`
3
+ `)}function C(l,t){return H.parse(l,t)}var R,q,dr,L,cr,mr,pr,K,ur,Ye,Rt,Nt,fr,Ue,hr,Ze,gr,br,ze,Ge,yr,$t,vr,Xe,Tt,xr,kr,wr,Er,qt,Cr,Ae,Ke,Ht,Sr,Pt,Tr,Fr,Dt,Lr,Mr,zr,Vt,Ar,Ir,Bt,Rr,Nr,$r,qr,Hr,Pr,Dr,Vr,Br,Or,Le,_r,Ot,_t,jr,Ft,Qe,Wr,_e,Yr,Te,U,Ur,Lt,G,M,X,Ie,z,Fe,O,jt,H,Kr,Qr,Jr,ea,ta,ra,aa,oa,et=Kt(()=>{"use strict";R=Me();q={exec:()=>null};dr=(()=>{try{return!!new RegExp("(?<=1)(?<!1)")}catch{return!1}})(),L={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,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,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+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:l=>new RegExp(`^( {0,3}${l})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}#`),htmlBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}>`)},cr=/^(?:[ \t]*(?:\n|$))+/,mr=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,pr=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,K=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,ur=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Ye=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Rt=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Nt=w(Rt).replace(/bull/g,Ye).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(),fr=w(Rt).replace(/bull/g,Ye).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(),Ue=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,hr=/^[^\n]+/,Ze=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,gr=w(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Ze).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),br=w(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Ye).getRegex(),ze="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",Ge=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,yr=w("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Ge).replace("tag",ze).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),$t=w(Ue).replace("hr",K).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[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",ze).getRegex(),vr=w(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",$t).getRegex(),Xe={blockquote:vr,code:mr,def:gr,fences:pr,heading:ur,hr:K,html:yr,lheading:Nt,list:br,newline:cr,paragraph:$t,table:q,text:hr},Tt=w("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",K).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",ze).getRegex(),xr={...Xe,lheading:fr,table:Tt,paragraph:w(Ue).replace("hr",K).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Tt).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",ze).getRegex()},kr={...Xe,html:w(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Ge).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:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:q,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:w(Ue).replace("hr",K).replace("heading",` *#{1,6} *[^
4
+ ]`).replace("lheading",Nt).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},wr=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Er=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,qt=/^( {2,}|\\)\n(?!\s*$)/,Cr=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,Ae=/[\p{P}\p{S}]/u,Ke=/[\s\p{P}\p{S}]/u,Ht=/[^\s\p{P}\p{S}]/u,Sr=w(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,Ke).getRegex(),Pt=/(?!~)[\p{P}\p{S}]/u,Tr=/(?!~)[\s\p{P}\p{S}]/u,Fr=/(?:[^\s\p{P}\p{S}]|~)/u,Dt=/(?![*_])[\p{P}\p{S}]/u,Lr=/(?![*_])[\s\p{P}\p{S}]/u,Mr=/(?:[^\s\p{P}\p{S}]|[*_])/u,zr=w(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",dr?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Vt=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,Ar=w(Vt,"u").replace(/punct/g,Ae).getRegex(),Ir=w(Vt,"u").replace(/punct/g,Pt).getRegex(),Bt="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Rr=w(Bt,"gu").replace(/notPunctSpace/g,Ht).replace(/punctSpace/g,Ke).replace(/punct/g,Ae).getRegex(),Nr=w(Bt,"gu").replace(/notPunctSpace/g,Fr).replace(/punctSpace/g,Tr).replace(/punct/g,Pt).getRegex(),$r=w("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Ht).replace(/punctSpace/g,Ke).replace(/punct/g,Ae).getRegex(),qr=w(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,Dt).getRegex(),Hr="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",Pr=w(Hr,"gu").replace(/notPunctSpace/g,Mr).replace(/punctSpace/g,Lr).replace(/punct/g,Dt).getRegex(),Dr=w(/\\(punct)/,"gu").replace(/punct/g,Ae).getRegex(),Vr=w(/^<(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(),Br=w(Ge).replace("(?:-->|$)","-->").getRegex(),Or=w("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",Br).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Le=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,_r=w(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",Le).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Ot=w(/^!?\[(label)\]\[(ref)\]/).replace("label",Le).replace("ref",Ze).getRegex(),_t=w(/^!?\[(ref)\](?:\[\])?/).replace("ref",Ze).getRegex(),jr=w("reflink|nolink(?!\\()","g").replace("reflink",Ot).replace("nolink",_t).getRegex(),Ft=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Qe={_backpedal:q,anyPunctuation:Dr,autolink:Vr,blockSkip:zr,br:qt,code:Er,del:q,delLDelim:q,delRDelim:q,emStrongLDelim:Ar,emStrongRDelimAst:Rr,emStrongRDelimUnd:$r,escape:wr,link:_r,nolink:_t,punctuation:Sr,reflink:Ot,reflinkSearch:jr,tag:Or,text:Cr,url:q},Wr={...Qe,link:w(/^!?\[(label)\]\((.*?)\)/).replace("label",Le).getRegex(),reflink:w(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Le).getRegex()},_e={...Qe,emStrongRDelimAst:Nr,emStrongLDelim:Ir,delLDelim:qr,delRDelim:Pr,url:w(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",Ft).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:w(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",Ft).getRegex()},Yr={..._e,br:w(qt).replace("{2,}","*").getRegex(),text:w(_e.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Te={normal:Xe,gfm:xr,pedantic:kr},U={normal:Qe,gfm:_e,breaks:Yr,pedantic:Wr},Ur={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},Lt=l=>Ur[l];G=class{constructor(l){F(this,"options");F(this,"rules");F(this,"lexer");this.options=l||R}space(l){let t=this.rules.block.newline.exec(l);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(l){let t=this.rules.block.code.exec(l);if(t){let e=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?e:Z(e,`
5
+ `)}}}fences(l){let t=this.rules.block.fences.exec(l);if(t){let e=t[0],a=Xr(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:a}}}heading(l){let t=this.rules.block.heading.exec(l);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let a=Z(e,"#");(this.options.pedantic||!a||this.rules.other.endingSpaceChar.test(a))&&(e=a.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(l){let t=this.rules.block.hr.exec(l);if(t)return{type:"hr",raw:Z(t[0],`
6
6
  `)}}blockquote(l){let t=this.rules.block.blockquote.exec(l);if(t){let e=Z(t[0],`
7
7
  `).split(`
8
- `),a="",r="",s=[];for(;e.length>0;){let o=!1,n=[],i;for(i=0;i<e.length;i++)if(this.rules.other.blockquoteStart.test(e[i]))n.push(e[i]),o=!0;else if(!o)n.push(e[i]);else break;e=e.slice(i);let d=n.join(`
8
+ `),a="",r="",o=[];for(;e.length>0;){let s=!1,n=[],i;for(i=0;i<e.length;i++)if(this.rules.other.blockquoteStart.test(e[i]))n.push(e[i]),s=!0;else if(!s)n.push(e[i]);else break;e=e.slice(i);let d=n.join(`
9
9
  `),c=d.replace(this.rules.other.blockquoteSetextReplace,`
10
10
  $1`).replace(this.rules.other.blockquoteSetextReplace2,"");a=a?`${a}
11
11
  ${d}`:d,r=r?`${r}
12
- ${c}`:c;let p=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,s,!0),this.lexer.state.top=p,e.length===0)break;let m=s.at(-1);if(m?.type==="code")break;if(m?.type==="blockquote"){let u=m,f=u.raw+`
12
+ ${c}`:c;let p=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,o,!0),this.lexer.state.top=p,e.length===0)break;let m=o.at(-1);if(m?.type==="code")break;if(m?.type==="blockquote"){let u=m,f=u.raw+`
13
13
  `+e.join(`
14
- `),b=this.blockquote(f);s[s.length-1]=b,a=a.substring(0,a.length-u.raw.length)+b.raw,r=r.substring(0,r.length-u.text.length)+b.text;break}else if(m?.type==="list"){let u=m,f=u.raw+`
14
+ `),b=this.blockquote(f);o[o.length-1]=b,a=a.substring(0,a.length-u.raw.length)+b.raw,r=r.substring(0,r.length-u.text.length)+b.text;break}else if(m?.type==="list"){let u=m,f=u.raw+`
15
15
  `+e.join(`
16
- `),b=this.list(f);s[s.length-1]=b,a=a.substring(0,a.length-m.raw.length)+b.raw,r=r.substring(0,r.length-u.raw.length)+b.raw,e=f.substring(s.at(-1).raw.length).split(`
17
- `);continue}}return{type:"blockquote",raw:a,tokens:s,text:r}}}list(l){let t=this.rules.block.list.exec(l);if(t){let e=t[1].trim(),a=e.length>1,r={type:"list",raw:"",ordered:a,start:a?+e.slice(0,-1):"",loose:!1,items:[]};e=a?`\\d{1,9}\\${e.slice(-1)}`:`\\${e}`,this.options.pedantic&&(e=a?e:"[*+-]");let s=this.rules.other.listItemRegex(e),o=!1;for(;l;){let i=!1,d="",c="";if(!(t=s.exec(l))||this.rules.block.hr.test(l))break;d=t[0],l=l.substring(d.length);let p=Ur(t[2].split(`
16
+ `),b=this.list(f);o[o.length-1]=b,a=a.substring(0,a.length-m.raw.length)+b.raw,r=r.substring(0,r.length-u.raw.length)+b.raw,e=f.substring(o.at(-1).raw.length).split(`
17
+ `);continue}}return{type:"blockquote",raw:a,tokens:o,text:r}}}list(l){let t=this.rules.block.list.exec(l);if(t){let e=t[1].trim(),a=e.length>1,r={type:"list",raw:"",ordered:a,start:a?+e.slice(0,-1):"",loose:!1,items:[]};e=a?`\\d{1,9}\\${e.slice(-1)}`:`\\${e}`,this.options.pedantic&&(e=a?e:"[*+-]");let o=this.rules.other.listItemRegex(e),s=!1;for(;l;){let i=!1,d="",c="";if(!(t=o.exec(l))||this.rules.block.hr.test(l))break;d=t[0],l=l.substring(d.length);let p=Gr(t[2].split(`
18
18
  `,1)[0],t[1].length),m=l.split(`
19
19
  `,1)[0],u=!p.trim(),f=0;if(this.options.pedantic?(f=2,c=p.trimStart()):u?f=t[1].length+1:(f=p.search(this.rules.other.nonSpaceChar),f=f>4?1:f,c=p.slice(f),f+=t[1].length),u&&this.rules.other.blankLine.test(m)&&(d+=m+`
20
20
  `,l=l.substring(m.length+1),i=!0),!i){let b=this.rules.other.nextBulletRegex(f),h=this.rules.other.hrRegex(f),g=this.rules.other.fencesBeginRegex(f),y=this.rules.other.headingBeginRegex(f),E=this.rules.other.htmlBeginRegex(f),S=this.rules.other.blockquoteBeginRegex(f);for(;l;){let x=l.split(`
21
- `,1)[0],w;if(m=x,this.options.pedantic?(m=m.replace(this.rules.other.listReplaceNesting," "),w=m):w=m.replace(this.rules.other.tabCharGlobal," "),g.test(m)||y.test(m)||E.test(m)||S.test(m)||b.test(m)||h.test(m))break;if(w.search(this.rules.other.nonSpaceChar)>=f||!m.trim())c+=`
22
- `+w.slice(f);else{if(u||p.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||g.test(p)||y.test(p)||h.test(p))break;c+=`
21
+ `,1)[0],k;if(m=x,this.options.pedantic?(m=m.replace(this.rules.other.listReplaceNesting," "),k=m):k=m.replace(this.rules.other.tabCharGlobal," "),g.test(m)||y.test(m)||E.test(m)||S.test(m)||b.test(m)||h.test(m))break;if(k.search(this.rules.other.nonSpaceChar)>=f||!m.trim())c+=`
22
+ `+k.slice(f);else{if(u||p.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||g.test(p)||y.test(p)||h.test(p))break;c+=`
23
23
  `+m}u=!m.trim(),d+=x+`
24
- `,l=l.substring(x.length+1),p=w.slice(f)}}r.loose||(o?r.loose=!0:this.rules.other.doubleBlankLine.test(d)&&(o=!0)),r.items.push({type:"list_item",raw:d,task:!!this.options.gfm&&this.rules.other.listIsTask.test(c),loose:!1,text:c,tokens:[]}),r.raw+=d}let n=r.items.at(-1);if(n)n.raw=n.raw.trimEnd(),n.text=n.text.trimEnd();else return;r.raw=r.raw.trimEnd();for(let i of r.items){if(this.lexer.state.top=!1,i.tokens=this.lexer.blockTokens(i.text,[]),i.task){if(i.text=i.text.replace(this.rules.other.listReplaceTask,""),i.tokens[0]?.type==="text"||i.tokens[0]?.type==="paragraph"){i.tokens[0].raw=i.tokens[0].raw.replace(this.rules.other.listReplaceTask,""),i.tokens[0].text=i.tokens[0].text.replace(this.rules.other.listReplaceTask,"");for(let c=this.lexer.inlineQueue.length-1;c>=0;c--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[c].src)){this.lexer.inlineQueue[c].src=this.lexer.inlineQueue[c].src.replace(this.rules.other.listReplaceTask,"");break}}let d=this.rules.other.listTaskCheckbox.exec(i.raw);if(d){let c={type:"checkbox",raw:d[0]+" ",checked:d[0]!=="[ ]"};i.checked=c.checked,r.loose?i.tokens[0]&&["paragraph","text"].includes(i.tokens[0].type)&&"tokens"in i.tokens[0]&&i.tokens[0].tokens?(i.tokens[0].raw=c.raw+i.tokens[0].raw,i.tokens[0].text=c.raw+i.tokens[0].text,i.tokens[0].tokens.unshift(c)):i.tokens.unshift({type:"paragraph",raw:c.raw,text:c.raw,tokens:[c]}):i.tokens.unshift(c)}}if(!r.loose){let d=i.tokens.filter(p=>p.type==="space"),c=d.length>0&&d.some(p=>this.rules.other.anyLine.test(p.raw));r.loose=c}}if(r.loose)for(let i of r.items){i.loose=!0;for(let d of i.tokens)d.type==="text"&&(d.type="paragraph")}return r}}html(l){let t=this.rules.block.html.exec(l);if(t)return{type:"html",block:!0,raw:t[0],pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:t[0]}}def(l){let t=this.rules.block.def.exec(l);if(t){let e=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),a=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:e,raw:t[0],href:a,title:r}}}table(l){let t=this.rules.block.table.exec(l);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let e=Lt(t[1]),a=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),r=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(`
25
- `):[],s={type:"table",raw:t[0],header:[],align:[],rows:[]};if(e.length===a.length){for(let o of a)this.rules.other.tableAlignRight.test(o)?s.align.push("right"):this.rules.other.tableAlignCenter.test(o)?s.align.push("center"):this.rules.other.tableAlignLeft.test(o)?s.align.push("left"):s.align.push(null);for(let o=0;o<e.length;o++)s.header.push({text:e[o],tokens:this.lexer.inline(e[o]),header:!0,align:s.align[o]});for(let o of r)s.rows.push(Lt(o,s.header.length).map((n,i)=>({text:n,tokens:this.lexer.inline(n),header:!1,align:s.align[i]})));return s}}lheading(l){let t=this.rules.block.lheading.exec(l);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(l){let t=this.rules.block.paragraph.exec(l);if(t){let e=t[1].charAt(t[1].length-1)===`
26
- `?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(l){let t=this.rules.block.text.exec(l);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(l){let t=this.rules.inline.escape.exec(l);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(l){let t=this.rules.inline.tag.exec(l);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(l){let t=this.rules.inline.link.exec(l);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 s=Z(e.slice(0,-1),"\\");if((e.length-s.length)%2===0)return}else{let s=Yr(t[2],"()");if(s===-2)return;if(s>-1){let o=(t[0].indexOf("!")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,o).trim(),t[3]=""}}let a=t[2],r="";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(a);s&&(a=s[1],r=s[3])}else r=t[3]?t[3].slice(1,-1):"";return a=a.trim(),this.rules.other.startAngleBracket.test(a)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?a=a.slice(1):a=a.slice(1,-1)),Mt(t,{href:a&&a.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(l,t){let e;if((e=this.rules.inline.reflink.exec(l))||(e=this.rules.inline.nolink.exec(l))){let a=(e[2]||e[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=t[a.toLowerCase()];if(!r){let s=e[0].charAt(0);return{type:"text",raw:s,text:s}}return Mt(e,r,e[0],this.lexer,this.rules)}}emStrong(l,t,e=""){let a=this.rules.inline.emStrongLDelim.exec(l);if(!(!a||a[3]&&e.match(this.rules.other.unicodeAlphaNumeric))&&(!(a[1]||a[2])||!e||this.rules.inline.punctuation.exec(e))){let r=[...a[0]].length-1,s,o,n=r,i=0,d=a[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(d.lastIndex=0,t=t.slice(-1*l.length+r);(a=d.exec(t))!=null;){if(s=a[1]||a[2]||a[3]||a[4]||a[5]||a[6],!s)continue;if(o=[...s].length,a[3]||a[4]){n+=o;continue}else if((a[5]||a[6])&&r%3&&!((r+o)%3)){i+=o;continue}if(n-=o,n>0)continue;o=Math.min(o,o+n+i);let c=[...a[0]][0].length,p=l.slice(0,r+a.index+c+o);if(Math.min(r,o)%2){let u=p.slice(1,-1);return{type:"em",raw:p,text:u,tokens:this.lexer.inlineTokens(u)}}let m=p.slice(2,-2);return{type:"strong",raw:p,text:m,tokens:this.lexer.inlineTokens(m)}}}}codespan(l){let t=this.rules.inline.code.exec(l);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal," "),a=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return a&&r&&(e=e.substring(1,e.length-1)),{type:"codespan",raw:t[0],text:e}}}br(l){let t=this.rules.inline.br.exec(l);if(t)return{type:"br",raw:t[0]}}del(l,t,e=""){let a=this.rules.inline.delLDelim.exec(l);if(a&&(!a[1]||!e||this.rules.inline.punctuation.exec(e))){let r=[...a[0]].length-1,s,o,n=r,i=this.rules.inline.delRDelim;for(i.lastIndex=0,t=t.slice(-1*l.length+r);(a=i.exec(t))!=null;){if(s=a[1]||a[2]||a[3]||a[4]||a[5]||a[6],!s||(o=[...s].length,o!==r))continue;if(a[3]||a[4]){n+=o;continue}if(n-=o,n>0)continue;o=Math.min(o,o+n);let d=[...a[0]][0].length,c=l.slice(0,r+a.index+d+o),p=c.slice(r,-r);return{type:"del",raw:c,text:p,tokens:this.lexer.inlineTokens(p)}}}}autolink(l){let t=this.rules.inline.autolink.exec(l);if(t){let e,a;return t[2]==="@"?(e=t[1],a="mailto:"+e):(e=t[1],a=e),{type:"link",raw:t[0],text:e,href:a,tokens:[{type:"text",raw:e,text:e}]}}}url(l){let t;if(t=this.rules.inline.url.exec(l)){let e,a;if(t[2]==="@")e=t[0],a="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],t[1]==="www."?a="http://"+t[0]:a=t[0]}return{type:"link",raw:t[0],text:e,href:a,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(l){let t=this.rules.inline.text.exec(l);if(t){let e=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:e}}}},M=class je{constructor(t){F(this,"tokens");F(this,"options");F(this,"state");F(this,"inlineQueue");F(this,"tokenizer");this.tokens=[],this.tokens.links=Object.create(null),this.options=t||R,this.options.tokenizer=this.options.tokenizer||new G,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 e={other:L,block:Te.normal,inline:U.normal};this.options.pedantic?(e.block=Te.pedantic,e.inline=U.pedantic):this.options.gfm&&(e.block=Te.gfm,this.options.breaks?e.inline=U.breaks:e.inline=U.gfm),this.tokenizer.rules=e}static get rules(){return{block:Te,inline:U}}static lex(t,e){return new je(e).lex(t)}static lexInline(t,e){return new je(e).inlineTokens(t)}lex(t){t=t.replace(L.carriageReturn,`
27
- `),this.blockTokens(t,this.tokens);for(let e=0;e<this.inlineQueue.length;e++){let a=this.inlineQueue[e];this.inlineTokens(a.src,a.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,e=[],a=!1){for(this.options.pedantic&&(t=t.replace(L.tabCharGlobal," ").replace(L.spaceLine,""));t;){let r;if(this.options.extensions?.block?.some(o=>(r=o.call({lexer:this},t,e))?(t=t.substring(r.raw.length),e.push(r),!0):!1))continue;if(r=this.tokenizer.space(t)){t=t.substring(r.raw.length);let o=e.at(-1);r.raw.length===1&&o!==void 0?o.raw+=`
28
- `:e.push(r);continue}if(r=this.tokenizer.code(t)){t=t.substring(r.raw.length);let o=e.at(-1);o?.type==="paragraph"||o?.type==="text"?(o.raw+=(o.raw.endsWith(`
24
+ `,l=l.substring(x.length+1),p=k.slice(f)}}r.loose||(s?r.loose=!0:this.rules.other.doubleBlankLine.test(d)&&(s=!0)),r.items.push({type:"list_item",raw:d,task:!!this.options.gfm&&this.rules.other.listIsTask.test(c),loose:!1,text:c,tokens:[]}),r.raw+=d}let n=r.items.at(-1);if(n)n.raw=n.raw.trimEnd(),n.text=n.text.trimEnd();else return;r.raw=r.raw.trimEnd();for(let i of r.items){if(this.lexer.state.top=!1,i.tokens=this.lexer.blockTokens(i.text,[]),i.task){if(i.text=i.text.replace(this.rules.other.listReplaceTask,""),i.tokens[0]?.type==="text"||i.tokens[0]?.type==="paragraph"){i.tokens[0].raw=i.tokens[0].raw.replace(this.rules.other.listReplaceTask,""),i.tokens[0].text=i.tokens[0].text.replace(this.rules.other.listReplaceTask,"");for(let c=this.lexer.inlineQueue.length-1;c>=0;c--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[c].src)){this.lexer.inlineQueue[c].src=this.lexer.inlineQueue[c].src.replace(this.rules.other.listReplaceTask,"");break}}let d=this.rules.other.listTaskCheckbox.exec(i.raw);if(d){let c={type:"checkbox",raw:d[0]+" ",checked:d[0]!=="[ ]"};i.checked=c.checked,r.loose?i.tokens[0]&&["paragraph","text"].includes(i.tokens[0].type)&&"tokens"in i.tokens[0]&&i.tokens[0].tokens?(i.tokens[0].raw=c.raw+i.tokens[0].raw,i.tokens[0].text=c.raw+i.tokens[0].text,i.tokens[0].tokens.unshift(c)):i.tokens.unshift({type:"paragraph",raw:c.raw,text:c.raw,tokens:[c]}):i.tokens.unshift(c)}}if(!r.loose){let d=i.tokens.filter(p=>p.type==="space"),c=d.length>0&&d.some(p=>this.rules.other.anyLine.test(p.raw));r.loose=c}}if(r.loose)for(let i of r.items){i.loose=!0;for(let d of i.tokens)d.type==="text"&&(d.type="paragraph")}return r}}html(l){let t=this.rules.block.html.exec(l);if(t)return{type:"html",block:!0,raw:t[0],pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:t[0]}}def(l){let t=this.rules.block.def.exec(l);if(t){let e=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),a=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:e,raw:t[0],href:a,title:r}}}table(l){let t=this.rules.block.table.exec(l);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let e=zt(t[1]),a=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),r=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(`
25
+ `):[],o={type:"table",raw:t[0],header:[],align:[],rows:[]};if(e.length===a.length){for(let s of a)this.rules.other.tableAlignRight.test(s)?o.align.push("right"):this.rules.other.tableAlignCenter.test(s)?o.align.push("center"):this.rules.other.tableAlignLeft.test(s)?o.align.push("left"):o.align.push(null);for(let s=0;s<e.length;s++)o.header.push({text:e[s],tokens:this.lexer.inline(e[s]),header:!0,align:o.align[s]});for(let s of r)o.rows.push(zt(s,o.header.length).map((n,i)=>({text:n,tokens:this.lexer.inline(n),header:!1,align:o.align[i]})));return o}}lheading(l){let t=this.rules.block.lheading.exec(l);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(l){let t=this.rules.block.paragraph.exec(l);if(t){let e=t[1].charAt(t[1].length-1)===`
26
+ `?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(l){let t=this.rules.block.text.exec(l);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(l){let t=this.rules.inline.escape.exec(l);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(l){let t=this.rules.inline.tag.exec(l);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(l){let t=this.rules.inline.link.exec(l);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 o=Z(e.slice(0,-1),"\\");if((e.length-o.length)%2===0)return}else{let o=Zr(t[2],"()");if(o===-2)return;if(o>-1){let s=(t[0].indexOf("!")===0?5:4)+t[1].length+o;t[2]=t[2].substring(0,o),t[0]=t[0].substring(0,s).trim(),t[3]=""}}let a=t[2],r="";if(this.options.pedantic){let o=this.rules.other.pedanticHrefTitle.exec(a);o&&(a=o[1],r=o[3])}else r=t[3]?t[3].slice(1,-1):"";return a=a.trim(),this.rules.other.startAngleBracket.test(a)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?a=a.slice(1):a=a.slice(1,-1)),At(t,{href:a&&a.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(l,t){let e;if((e=this.rules.inline.reflink.exec(l))||(e=this.rules.inline.nolink.exec(l))){let a=(e[2]||e[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=t[a.toLowerCase()];if(!r){let o=e[0].charAt(0);return{type:"text",raw:o,text:o}}return At(e,r,e[0],this.lexer,this.rules)}}emStrong(l,t,e=""){let a=this.rules.inline.emStrongLDelim.exec(l);if(!(!a||a[3]&&e.match(this.rules.other.unicodeAlphaNumeric))&&(!(a[1]||a[2])||!e||this.rules.inline.punctuation.exec(e))){let r=[...a[0]].length-1,o,s,n=r,i=0,d=a[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(d.lastIndex=0,t=t.slice(-1*l.length+r);(a=d.exec(t))!=null;){if(o=a[1]||a[2]||a[3]||a[4]||a[5]||a[6],!o)continue;if(s=[...o].length,a[3]||a[4]){n+=s;continue}else if((a[5]||a[6])&&r%3&&!((r+s)%3)){i+=s;continue}if(n-=s,n>0)continue;s=Math.min(s,s+n+i);let c=[...a[0]][0].length,p=l.slice(0,r+a.index+c+s);if(Math.min(r,s)%2){let u=p.slice(1,-1);return{type:"em",raw:p,text:u,tokens:this.lexer.inlineTokens(u)}}let m=p.slice(2,-2);return{type:"strong",raw:p,text:m,tokens:this.lexer.inlineTokens(m)}}}}codespan(l){let t=this.rules.inline.code.exec(l);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal," "),a=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return a&&r&&(e=e.substring(1,e.length-1)),{type:"codespan",raw:t[0],text:e}}}br(l){let t=this.rules.inline.br.exec(l);if(t)return{type:"br",raw:t[0]}}del(l,t,e=""){let a=this.rules.inline.delLDelim.exec(l);if(a&&(!a[1]||!e||this.rules.inline.punctuation.exec(e))){let r=[...a[0]].length-1,o,s,n=r,i=this.rules.inline.delRDelim;for(i.lastIndex=0,t=t.slice(-1*l.length+r);(a=i.exec(t))!=null;){if(o=a[1]||a[2]||a[3]||a[4]||a[5]||a[6],!o||(s=[...o].length,s!==r))continue;if(a[3]||a[4]){n+=s;continue}if(n-=s,n>0)continue;s=Math.min(s,s+n);let d=[...a[0]][0].length,c=l.slice(0,r+a.index+d+s),p=c.slice(r,-r);return{type:"del",raw:c,text:p,tokens:this.lexer.inlineTokens(p)}}}}autolink(l){let t=this.rules.inline.autolink.exec(l);if(t){let e,a;return t[2]==="@"?(e=t[1],a="mailto:"+e):(e=t[1],a=e),{type:"link",raw:t[0],text:e,href:a,tokens:[{type:"text",raw:e,text:e}]}}}url(l){let t;if(t=this.rules.inline.url.exec(l)){let e,a;if(t[2]==="@")e=t[0],a="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],t[1]==="www."?a="http://"+t[0]:a=t[0]}return{type:"link",raw:t[0],text:e,href:a,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(l){let t=this.rules.inline.text.exec(l);if(t){let e=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:e}}}},M=class je{constructor(t){F(this,"tokens");F(this,"options");F(this,"state");F(this,"inlineQueue");F(this,"tokenizer");this.tokens=[],this.tokens.links=Object.create(null),this.options=t||R,this.options.tokenizer=this.options.tokenizer||new G,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 e={other:L,block:Te.normal,inline:U.normal};this.options.pedantic?(e.block=Te.pedantic,e.inline=U.pedantic):this.options.gfm&&(e.block=Te.gfm,this.options.breaks?e.inline=U.breaks:e.inline=U.gfm),this.tokenizer.rules=e}static get rules(){return{block:Te,inline:U}}static lex(t,e){return new je(e).lex(t)}static lexInline(t,e){return new je(e).inlineTokens(t)}lex(t){t=t.replace(L.carriageReturn,`
27
+ `),this.blockTokens(t,this.tokens);for(let e=0;e<this.inlineQueue.length;e++){let a=this.inlineQueue[e];this.inlineTokens(a.src,a.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,e=[],a=!1){for(this.options.pedantic&&(t=t.replace(L.tabCharGlobal," ").replace(L.spaceLine,""));t;){let r;if(this.options.extensions?.block?.some(s=>(r=s.call({lexer:this},t,e))?(t=t.substring(r.raw.length),e.push(r),!0):!1))continue;if(r=this.tokenizer.space(t)){t=t.substring(r.raw.length);let s=e.at(-1);r.raw.length===1&&s!==void 0?s.raw+=`
28
+ `:e.push(r);continue}if(r=this.tokenizer.code(t)){t=t.substring(r.raw.length);let s=e.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(`
29
29
  `)?"":`
30
- `)+r.raw,o.text+=`
31
- `+r.text,this.inlineQueue.at(-1).src=o.text):e.push(r);continue}if(r=this.tokenizer.fences(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.heading(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.hr(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.blockquote(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.list(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.html(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.def(t)){t=t.substring(r.raw.length);let o=e.at(-1);o?.type==="paragraph"||o?.type==="text"?(o.raw+=(o.raw.endsWith(`
30
+ `)+r.raw,s.text+=`
31
+ `+r.text,this.inlineQueue.at(-1).src=s.text):e.push(r);continue}if(r=this.tokenizer.fences(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.heading(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.hr(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.blockquote(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.list(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.html(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.def(t)){t=t.substring(r.raw.length);let s=e.at(-1);s?.type==="paragraph"||s?.type==="text"?(s.raw+=(s.raw.endsWith(`
32
32
  `)?"":`
33
- `)+r.raw,o.text+=`
34
- `+r.raw,this.inlineQueue.at(-1).src=o.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},e.push(r));continue}if(r=this.tokenizer.table(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.lheading(t)){t=t.substring(r.raw.length),e.push(r);continue}let s=t;if(this.options.extensions?.startBlock){let o=1/0,n=t.slice(1),i;this.options.extensions.startBlock.forEach(d=>{i=d.call({lexer:this},n),typeof i=="number"&&i>=0&&(o=Math.min(o,i))}),o<1/0&&o>=0&&(s=t.substring(0,o+1))}if(this.state.top&&(r=this.tokenizer.paragraph(s))){let o=e.at(-1);a&&o?.type==="paragraph"?(o.raw+=(o.raw.endsWith(`
33
+ `)+r.raw,s.text+=`
34
+ `+r.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title},e.push(r));continue}if(r=this.tokenizer.table(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.lheading(t)){t=t.substring(r.raw.length),e.push(r);continue}let o=t;if(this.options.extensions?.startBlock){let s=1/0,n=t.slice(1),i;this.options.extensions.startBlock.forEach(d=>{i=d.call({lexer:this},n),typeof i=="number"&&i>=0&&(s=Math.min(s,i))}),s<1/0&&s>=0&&(o=t.substring(0,s+1))}if(this.state.top&&(r=this.tokenizer.paragraph(o))){let s=e.at(-1);a&&s?.type==="paragraph"?(s.raw+=(s.raw.endsWith(`
35
35
  `)?"":`
36
- `)+r.raw,o.text+=`
37
- `+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=o.text):e.push(r),a=s.length!==t.length,t=t.substring(r.raw.length);continue}if(r=this.tokenizer.text(t)){t=t.substring(r.raw.length);let o=e.at(-1);o?.type==="text"?(o.raw+=(o.raw.endsWith(`
36
+ `)+r.raw,s.text+=`
37
+ `+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):e.push(r),a=o.length!==t.length,t=t.substring(r.raw.length);continue}if(r=this.tokenizer.text(t)){t=t.substring(r.raw.length);let s=e.at(-1);s?.type==="text"?(s.raw+=(s.raw.endsWith(`
38
38
  `)?"":`
39
- `)+r.raw,o.text+=`
40
- `+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=o.text):e.push(r);continue}if(t){let o="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(o);break}else throw new Error(o)}}return this.state.top=!0,e}inline(t,e=[]){return this.inlineQueue.push({src:t,tokens:e}),e}inlineTokens(t,e=[]){let a=t,r=null;if(this.tokens.links){let i=Object.keys(this.tokens.links);if(i.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(a))!=null;)i.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(a=a.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(a))!=null;)a=a.slice(0,r.index)+"++"+a.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let s;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(a))!=null;)s=r[2]?r[2].length:0,a=a.slice(0,r.index+s)+"["+"a".repeat(r[0].length-s-2)+"]"+a.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);a=this.options.hooks?.emStrongMask?.call({lexer:this},a)??a;let o=!1,n="";for(;t;){o||(n=""),o=!1;let i;if(this.options.extensions?.inline?.some(c=>(i=c.call({lexer:this},t,e))?(t=t.substring(i.raw.length),e.push(i),!0):!1))continue;if(i=this.tokenizer.escape(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.tag(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.link(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(i.raw.length);let c=e.at(-1);i.type==="text"&&c?.type==="text"?(c.raw+=i.raw,c.text+=i.text):e.push(i);continue}if(i=this.tokenizer.emStrong(t,a,n)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.codespan(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.br(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.del(t,a,n)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.autolink(t)){t=t.substring(i.raw.length),e.push(i);continue}if(!this.state.inLink&&(i=this.tokenizer.url(t))){t=t.substring(i.raw.length),e.push(i);continue}let d=t;if(this.options.extensions?.startInline){let c=1/0,p=t.slice(1),m;this.options.extensions.startInline.forEach(u=>{m=u.call({lexer:this},p),typeof m=="number"&&m>=0&&(c=Math.min(c,m))}),c<1/0&&c>=0&&(d=t.substring(0,c+1))}if(i=this.tokenizer.inlineText(d)){t=t.substring(i.raw.length),i.raw.slice(-1)!=="_"&&(n=i.raw.slice(-1)),o=!0;let c=e.at(-1);c?.type==="text"?(c.raw+=i.raw,c.text+=i.text):e.push(i);continue}if(t){let c="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(c);break}else throw new Error(c)}}return e}},X=class{constructor(l){F(this,"options");F(this,"parser");this.options=l||R}space(l){return""}code({text:l,lang:t,escaped:e}){let a=(t||"").match(L.notSpaceStart)?.[0],r=l.replace(L.endingNewline,"")+`
39
+ `)+r.raw,s.text+=`
40
+ `+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):e.push(r);continue}if(t){let s="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,e}inline(t,e=[]){return this.inlineQueue.push({src:t,tokens:e}),e}inlineTokens(t,e=[]){let a=t,r=null;if(this.tokens.links){let i=Object.keys(this.tokens.links);if(i.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(a))!=null;)i.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(a=a.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(a))!=null;)a=a.slice(0,r.index)+"++"+a.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let o;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(a))!=null;)o=r[2]?r[2].length:0,a=a.slice(0,r.index+o)+"["+"a".repeat(r[0].length-o-2)+"]"+a.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);a=this.options.hooks?.emStrongMask?.call({lexer:this},a)??a;let s=!1,n="";for(;t;){s||(n=""),s=!1;let i;if(this.options.extensions?.inline?.some(c=>(i=c.call({lexer:this},t,e))?(t=t.substring(i.raw.length),e.push(i),!0):!1))continue;if(i=this.tokenizer.escape(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.tag(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.link(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(i.raw.length);let c=e.at(-1);i.type==="text"&&c?.type==="text"?(c.raw+=i.raw,c.text+=i.text):e.push(i);continue}if(i=this.tokenizer.emStrong(t,a,n)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.codespan(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.br(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.del(t,a,n)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.autolink(t)){t=t.substring(i.raw.length),e.push(i);continue}if(!this.state.inLink&&(i=this.tokenizer.url(t))){t=t.substring(i.raw.length),e.push(i);continue}let d=t;if(this.options.extensions?.startInline){let c=1/0,p=t.slice(1),m;this.options.extensions.startInline.forEach(u=>{m=u.call({lexer:this},p),typeof m=="number"&&m>=0&&(c=Math.min(c,m))}),c<1/0&&c>=0&&(d=t.substring(0,c+1))}if(i=this.tokenizer.inlineText(d)){t=t.substring(i.raw.length),i.raw.slice(-1)!=="_"&&(n=i.raw.slice(-1)),s=!0;let c=e.at(-1);c?.type==="text"?(c.raw+=i.raw,c.text+=i.text):e.push(i);continue}if(t){let c="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(c);break}else throw new Error(c)}}return e}},X=class{constructor(l){F(this,"options");F(this,"parser");this.options=l||R}space(l){return""}code({text:l,lang:t,escaped:e}){let a=(t||"").match(L.notSpaceStart)?.[0],r=l.replace(L.endingNewline,"")+`
41
41
  `;return a?'<pre><code class="language-'+A(a)+'">'+(e?r:A(r,!0))+`</code></pre>
42
42
  `:"<pre><code>"+(e?r:A(r,!0))+`</code></pre>
43
43
  `}blockquote({tokens:l}){return`<blockquote>
44
44
  ${this.parser.parse(l)}</blockquote>
45
45
  `}html({text:l}){return l}def(l){return""}heading({tokens:l,depth:t}){return`<h${t}>${this.parser.parseInline(l)}</h${t}>
46
46
  `}hr(l){return`<hr>
47
- `}list(l){let t=l.ordered,e=l.start,a="";for(let o=0;o<l.items.length;o++){let n=l.items[o];a+=this.listitem(n)}let r=t?"ol":"ul",s=t&&e!==1?' start="'+e+'"':"";return"<"+r+s+`>
47
+ `}list(l){let t=l.ordered,e=l.start,a="";for(let s=0;s<l.items.length;s++){let n=l.items[s];a+=this.listitem(n)}let r=t?"ol":"ul",o=t&&e!==1?' start="'+e+'"':"";return"<"+r+o+`>
48
48
  `+a+"</"+r+`>
49
49
  `}listitem(l){return`<li>${this.parser.parse(l.tokens)}</li>
50
50
  `}checkbox({checked:l}){return"<input "+(l?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:l}){return`<p>${this.parser.parseInline(l)}</p>
51
- `}table(l){let t="",e="";for(let r=0;r<l.header.length;r++)e+=this.tablecell(l.header[r]);t+=this.tablerow({text:e});let a="";for(let r=0;r<l.rows.length;r++){let s=l.rows[r];e="";for(let o=0;o<s.length;o++)e+=this.tablecell(s[o]);a+=this.tablerow({text:e})}return a&&(a=`<tbody>${a}</tbody>`),`<table>
51
+ `}table(l){let t="",e="";for(let r=0;r<l.header.length;r++)e+=this.tablecell(l.header[r]);t+=this.tablerow({text:e});let a="";for(let r=0;r<l.rows.length;r++){let o=l.rows[r];e="";for(let s=0;s<o.length;s++)e+=this.tablecell(o[s]);a+=this.tablerow({text:e})}return a&&(a=`<tbody>${a}</tbody>`),`<table>
52
52
  <thead>
53
53
  `+t+`</thead>
54
54
  `+a+`</table>
55
55
  `}tablerow({text:l}){return`<tr>
56
56
  ${l}</tr>
57
57
  `}tablecell(l){let t=this.parser.parseInline(l.tokens),e=l.header?"th":"td";return(l.align?`<${e} align="${l.align}">`:`<${e}>`)+t+`</${e}>
58
- `}strong({tokens:l}){return`<strong>${this.parser.parseInline(l)}</strong>`}em({tokens:l}){return`<em>${this.parser.parseInline(l)}</em>`}codespan({text:l}){return`<code>${A(l,!0)}</code>`}br(l){return"<br>"}del({tokens:l}){return`<del>${this.parser.parseInline(l)}</del>`}link({href:l,title:t,tokens:e}){let a=this.parser.parseInline(e),r=Ft(l);if(r===null)return a;l=r;let s='<a href="'+l+'"';return t&&(s+=' title="'+A(t)+'"'),s+=">"+a+"</a>",s}image({href:l,title:t,text:e,tokens:a}){a&&(e=this.parser.parseInline(a,this.parser.textRenderer));let r=Ft(l);if(r===null)return A(e);l=r;let s=`<img src="${l}" alt="${A(e)}"`;return t&&(s+=` title="${A(t)}"`),s+=">",s}text(l){return"tokens"in l&&l.tokens?this.parser.parseInline(l.tokens):"escaped"in l&&l.escaped?l.text:A(l.text)}},Ie=class{strong({text:l}){return l}em({text:l}){return l}codespan({text:l}){return l}del({text:l}){return l}html({text:l}){return l}text({text:l}){return l}link({text:l}){return""+l}image({text:l}){return""+l}br(){return""}checkbox({raw:l}){return l}},z=class We{constructor(t){F(this,"options");F(this,"renderer");F(this,"textRenderer");this.options=t||R,this.options.renderer=this.options.renderer||new X,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Ie}static parse(t,e){return new We(e).parse(t)}static parseInline(t,e){return new We(e).parseInline(t)}parse(t){let e="";for(let a=0;a<t.length;a++){let r=t[a];if(this.options.extensions?.renderers?.[r.type]){let o=r,n=this.options.extensions.renderers[o.type].call({parser:this},o);if(n!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(o.type)){e+=n||"";continue}}let s=r;switch(s.type){case"space":{e+=this.renderer.space(s);break}case"hr":{e+=this.renderer.hr(s);break}case"heading":{e+=this.renderer.heading(s);break}case"code":{e+=this.renderer.code(s);break}case"table":{e+=this.renderer.table(s);break}case"blockquote":{e+=this.renderer.blockquote(s);break}case"list":{e+=this.renderer.list(s);break}case"checkbox":{e+=this.renderer.checkbox(s);break}case"html":{e+=this.renderer.html(s);break}case"def":{e+=this.renderer.def(s);break}case"paragraph":{e+=this.renderer.paragraph(s);break}case"text":{e+=this.renderer.text(s);break}default:{let o='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error(o),"";throw new Error(o)}}}return e}parseInline(t,e=this.renderer){let a="";for(let r=0;r<t.length;r++){let s=t[r];if(this.options.extensions?.renderers?.[s.type]){let n=this.options.extensions.renderers[s.type].call({parser:this},s);if(n!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(s.type)){a+=n||"";continue}}let o=s;switch(o.type){case"escape":{a+=e.text(o);break}case"html":{a+=e.html(o);break}case"link":{a+=e.link(o);break}case"image":{a+=e.image(o);break}case"checkbox":{a+=e.checkbox(o);break}case"strong":{a+=e.strong(o);break}case"em":{a+=e.em(o);break}case"codespan":{a+=e.codespan(o);break}case"br":{a+=e.br(o);break}case"del":{a+=e.del(o);break}case"text":{a+=e.text(o);break}default:{let n='Token with "'+o.type+'" type was not found.';if(this.options.silent)return console.error(n),"";throw new Error(n)}}}return a}},O=(Fe=class{constructor(l){F(this,"options");F(this,"block");this.options=l||R}preprocess(l){return l}postprocess(l){return l}processAllTokens(l){return l}emStrongMask(l){return l}provideLexer(){return this.block?M.lex:M.lexInline}provideParser(){return this.block?z.parse:z.parseInline}},F(Fe,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),F(Fe,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),Fe),Ot=class{constructor(...l){F(this,"defaults",Me());F(this,"options",this.setOptions);F(this,"parse",this.parseMarkdown(!0));F(this,"parseInline",this.parseMarkdown(!1));F(this,"Parser",z);F(this,"Renderer",X);F(this,"TextRenderer",Ie);F(this,"Lexer",M);F(this,"Tokenizer",G);F(this,"Hooks",O);this.use(...l)}walkTokens(l,t){let e=[];for(let a of l)switch(e=e.concat(t.call(this,a)),a.type){case"table":{let r=a;for(let s of r.header)e=e.concat(this.walkTokens(s.tokens,t));for(let s of r.rows)for(let o of s)e=e.concat(this.walkTokens(o.tokens,t));break}case"list":{let r=a;e=e.concat(this.walkTokens(r.items,t));break}default:{let r=a;this.defaults.extensions?.childTokens?.[r.type]?this.defaults.extensions.childTokens[r.type].forEach(s=>{let o=r[s].flat(1/0);e=e.concat(this.walkTokens(o,t))}):r.tokens&&(e=e.concat(this.walkTokens(r.tokens,t)))}}return e}use(...l){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return l.forEach(e=>{let a={...e};if(a.async=this.defaults.async||a.async||!1,e.extensions&&(e.extensions.forEach(r=>{if(!r.name)throw new Error("extension name required");if("renderer"in r){let s=t.renderers[r.name];s?t.renderers[r.name]=function(...o){let n=r.renderer.apply(this,o);return n===!1&&(n=s.apply(this,o)),n}:t.renderers[r.name]=r.renderer}if("tokenizer"in r){if(!r.level||r.level!=="block"&&r.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let s=t[r.level];s?s.unshift(r.tokenizer):t[r.level]=[r.tokenizer],r.start&&(r.level==="block"?t.startBlock?t.startBlock.push(r.start):t.startBlock=[r.start]:r.level==="inline"&&(t.startInline?t.startInline.push(r.start):t.startInline=[r.start]))}"childTokens"in r&&r.childTokens&&(t.childTokens[r.name]=r.childTokens)}),a.extensions=t),e.renderer){let r=this.defaults.renderer||new X(this.defaults);for(let s in e.renderer){if(!(s in r))throw new Error(`renderer '${s}' does not exist`);if(["options","parser"].includes(s))continue;let o=s,n=e.renderer[o],i=r[o];r[o]=(...d)=>{let c=n.apply(r,d);return c===!1&&(c=i.apply(r,d)),c||""}}a.renderer=r}if(e.tokenizer){let r=this.defaults.tokenizer||new G(this.defaults);for(let s in e.tokenizer){if(!(s in r))throw new Error(`tokenizer '${s}' does not exist`);if(["options","rules","lexer"].includes(s))continue;let o=s,n=e.tokenizer[o],i=r[o];r[o]=(...d)=>{let c=n.apply(r,d);return c===!1&&(c=i.apply(r,d)),c}}a.tokenizer=r}if(e.hooks){let r=this.defaults.hooks||new O;for(let s in e.hooks){if(!(s in r))throw new Error(`hook '${s}' does not exist`);if(["options","block"].includes(s))continue;let o=s,n=e.hooks[o],i=r[o];O.passThroughHooks.has(s)?r[o]=d=>{if(this.defaults.async&&O.passThroughHooksRespectAsync.has(s))return(async()=>{let p=await n.call(r,d);return i.call(r,p)})();let c=n.call(r,d);return i.call(r,c)}:r[o]=(...d)=>{if(this.defaults.async)return(async()=>{let p=await n.apply(r,d);return p===!1&&(p=await i.apply(r,d)),p})();let c=n.apply(r,d);return c===!1&&(c=i.apply(r,d)),c}}a.hooks=r}if(e.walkTokens){let r=this.defaults.walkTokens,s=e.walkTokens;a.walkTokens=function(o){let n=[];return n.push(s.call(this,o)),r&&(n=n.concat(r.call(this,o))),n}}this.defaults={...this.defaults,...a}}),this}setOptions(l){return this.defaults={...this.defaults,...l},this}lexer(l,t){return M.lex(l,t??this.defaults)}parser(l,t){return z.parse(l,t??this.defaults)}parseMarkdown(l){return(t,e)=>{let a={...e},r={...this.defaults,...a},s=this.onError(!!r.silent,!!r.async);if(this.defaults.async===!0&&a.async===!1)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"||t===null)return s(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return s(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(r.hooks&&(r.hooks.options=r,r.hooks.block=l),r.async)return(async()=>{let o=r.hooks?await r.hooks.preprocess(t):t,n=await(r.hooks?await r.hooks.provideLexer():l?M.lex:M.lexInline)(o,r),i=r.hooks?await r.hooks.processAllTokens(n):n;r.walkTokens&&await Promise.all(this.walkTokens(i,r.walkTokens));let d=await(r.hooks?await r.hooks.provideParser():l?z.parse:z.parseInline)(i,r);return r.hooks?await r.hooks.postprocess(d):d})().catch(s);try{r.hooks&&(t=r.hooks.preprocess(t));let o=(r.hooks?r.hooks.provideLexer():l?M.lex:M.lexInline)(t,r);r.hooks&&(o=r.hooks.processAllTokens(o)),r.walkTokens&&this.walkTokens(o,r.walkTokens);let n=(r.hooks?r.hooks.provideParser():l?z.parse:z.parseInline)(o,r);return r.hooks&&(n=r.hooks.postprocess(n)),n}catch(o){return s(o)}}}onError(l,t){return e=>{if(e.message+=`
59
- Please report this to https://github.com/markedjs/marked.`,l){let a="<p>An error occurred:</p><pre>"+A(e.message+"",!0)+"</pre>";return t?Promise.resolve(a):a}if(t)return Promise.reject(e);throw e}}},H=new Ot;C.options=C.setOptions=function(l){return H.setOptions(l),C.defaults=H.defaults,zt(C.defaults),C};C.getDefaults=Me;C.defaults=R;C.use=function(...l){return H.use(...l),C.defaults=H.defaults,zt(C.defaults),C};C.walkTokens=function(l,t){return H.walkTokens(l,t)};C.parseInline=H.parseInline;C.Parser=z;C.parser=z.parse;C.Renderer=X;C.TextRenderer=Ie;C.Lexer=M;C.lexer=M.lex;C.Tokenizer=G;C.Hooks=O;C.parse=C;Gr=C.options,Xr=C.setOptions,Kr=C.use,Qr=C.walkTokens,Jr=C.parseInline,ea=C,ta=z.parse,ra=M.lex});var Q=class{parse(t){if(!t)throw new Error("Schema es requerido");if(!t.fields&&!t.steps)throw new Error("Schema debe tener fields o steps");if(t.steps){for(let r of t.steps)if(!r.fields||r.fields.length===0)throw new Error("Cada step debe tener al menos un field")}let e=t.fields?this.normalizeFields(t.fields):[],a=t.steps?t.steps.map(r=>({...r,fields:this.normalizeFields(r.fields)})):void 0;return{fields:e,steps:a,isWizard:!!(t.steps&&t.steps.length>0)}}normalizeFields(t){return t.map((e,a)=>{if(!e.type)throw new Error(`Field en \xEDndice ${a} debe tener un type`);if(!e.name)throw new Error(`Field en \xEDndice ${a} debe tener un name`);return this.validateFieldType(e,a),this.applyDefaults(e)})}validateFieldType(t,e){if(!["text","email","number","password","textarea","select","checkbox","radio","switch","date","file","file-drop","map","rating","slider","colorpicker","array","group","row","custom","quantity","accordion-select","image-grid-select","otp","markdown","autocomplete-tags","chip-select","image-file-crop","table"].includes(t.type))throw new Error(`Field en \xEDndice ${e} tiene un type inv\xE1lido: ${t.type}`);switch(t.type){case"select":case"radio":case"accordion-select":case"image-grid-select":case"autocomplete-tags":case"chip-select":if(!("options"in t)||!t.options||t.options.length===0)throw new Error(`Field "${t.name}" de tipo ${t.type} debe tener options`);break;case"array":if(!("itemSchema"in t)||!t.itemSchema)throw new Error(`Field "${t.name}" de tipo array debe tener itemSchema`);if("minItems"in t){let r=t.minItems;if(r<0)throw new Error(`Field "${t.name}" de tipo array: minItems debe ser >= 0`);if("maxItems"in t){let s=t.maxItems;if(r>s)throw new Error(`Field "${t.name}" de tipo array: minItems (${r}) no puede ser mayor que maxItems (${s})`)}}break;case"group":if(!("fields"in t)||!t.fields||t.fields.length===0)throw new Error(`Field "${t.name}" de tipo group debe tener fields`);break;case"row":if(!("fields"in t)||!t.fields||t.fields.length===0)throw new Error(`Field "${t.name}" de tipo row debe tener fields`);break;case"colorpicker":if("defaultValue"in t&&t.defaultValue!=null&&!/^#[0-9A-Fa-f]{6}$/.test(String(t.defaultValue)))throw new Error(`Field "${t.name}" de tipo colorpicker debe tener defaultValue en formato hex (#RRGGBB)`);break;case"table":if((!("columns"in t)||!Array.isArray(t.columns)||t.columns.length===0)&&"columns"in t)if(Array.isArray(t.columns)&&t.columns.length===0)t.columns=["Columna1"];else throw new Error(`Field "${t.name}" de tipo table debe tener un array de columns no vac\xEDo`);if(t.columns.some(r=>typeof r!="string"))throw new Error(`Field "${t.name}" de tipo table: todas las columns deben ser strings`);if("maxRows"in t&&t.maxRows!==void 0&&(typeof t.maxRows!="number"||t.maxRows<1))throw new Error(`Field "${t.name}" de tipo table: maxRows debe ser un n\xFAmero mayor a 0`);break}"leadingIcon"in t&&t.leadingIcon&&this.validateSlotContent(t.leadingIcon,t.name,"leadingIcon"),"trailingIcon"in t&&t.trailingIcon&&this.validateSlotContent(t.trailingIcon,t.name,"trailingIcon")}validateSlotContent(t,e,a){if(!t.type||!["image","html"].includes(t.type))throw new Error(`Field "${e}" ${a} debe tener type 'image' o 'html'`);if(t.type==="image"&&(!t.src||typeof t.src!="string"))throw new Error(`Field "${e}" ${a} con type 'image' debe tener src`);if(t.type==="html"&&(!t.html||typeof t.html!="string"))throw new Error(`Field "${e}" ${a} con type 'html' debe tener html`)}applyDefaults(t){let e={disabled:!1,hidden:!1};switch(t.type){case"checkbox":case"switch":"checked"in t||(e.checked=!1);break;case"select":case"accordion-select":case"image-grid-select":"multiple"in t||(e.multiple=!1),t.type==="image-grid-select"&&("columns"in t||(e.columns=3),"imageSize"in t||(e.imageSize="medium"));break;case"file":"multiple"in t||(e.multiple=!1);break;case"quantity":"min"in t||(e.min=0),"step"in t||(e.step=1);break;case"otp":"length"in t||(e.length=6),"numeric"in t||(e.numeric=!0);break;case"slider":"min"in t||(e.min=0),"max"in t||(e.max=100),"step"in t||(e.step=1);break;case"rating":"max"in t||(e.max=5);break;case"colorpicker":(!("defaultValue"in t)||t.defaultValue==null)&&(e.defaultValue="#000000");break;case"table":(!("columns"in t)||!Array.isArray(t.columns)||t.columns.length===0)&&(e.columns=["Columna1"]),(!("maxRows"in t)||t.maxRows==null)&&(e.maxRows=100),(!("maxHeight"in t)||t.maxHeight==null)&&(e.maxHeight="300px"),"allowUserColumns"in t||(e.allowUserColumns=!1);break}return{...e,...t}}getAllFields(t){let e=this.parse(t),a=[],r=s=>{for(let o of s)a.push(o),o.type==="group"&&"fields"in o&&r(o.fields),o.type==="row"&&"fields"in o&&r(o.fields),o.type==="array"&&"itemSchema"in o&&o.itemSchema.fields&&r(o.itemSchema.fields)};if(e.fields&&r(e.fields),e.steps)for(let s of e.steps)r(s.fields);return a}};function J(l){let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(l);if(!t){let e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i.exec(l);return e?[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)].join(", "):"0, 123, 255"}return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)].join(", ")}var Kt={primary:"#007bff",secondary:"#6c757d",error:"#dc3545",success:"#28a745",text:"#212529",labelColor:"#212529",border:"#ddd",background:"#ffffff",groupBackground:"var(--easy-form-group-background)",groupTitle:"#212529",groupBorder:"#ddd"};function _(l){return{...Kt,...l}}function ot(l){return`
58
+ `}strong({tokens:l}){return`<strong>${this.parser.parseInline(l)}</strong>`}em({tokens:l}){return`<em>${this.parser.parseInline(l)}</em>`}codespan({text:l}){return`<code>${A(l,!0)}</code>`}br(l){return"<br>"}del({tokens:l}){return`<del>${this.parser.parseInline(l)}</del>`}link({href:l,title:t,tokens:e}){let a=this.parser.parseInline(e),r=Mt(l);if(r===null)return a;l=r;let o='<a href="'+l+'"';return t&&(o+=' title="'+A(t)+'"'),o+=">"+a+"</a>",o}image({href:l,title:t,text:e,tokens:a}){a&&(e=this.parser.parseInline(a,this.parser.textRenderer));let r=Mt(l);if(r===null)return A(e);l=r;let o=`<img src="${l}" alt="${A(e)}"`;return t&&(o+=` title="${A(t)}"`),o+=">",o}text(l){return"tokens"in l&&l.tokens?this.parser.parseInline(l.tokens):"escaped"in l&&l.escaped?l.text:A(l.text)}},Ie=class{strong({text:l}){return l}em({text:l}){return l}codespan({text:l}){return l}del({text:l}){return l}html({text:l}){return l}text({text:l}){return l}link({text:l}){return""+l}image({text:l}){return""+l}br(){return""}checkbox({raw:l}){return l}},z=class We{constructor(t){F(this,"options");F(this,"renderer");F(this,"textRenderer");this.options=t||R,this.options.renderer=this.options.renderer||new X,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Ie}static parse(t,e){return new We(e).parse(t)}static parseInline(t,e){return new We(e).parseInline(t)}parse(t){let e="";for(let a=0;a<t.length;a++){let r=t[a];if(this.options.extensions?.renderers?.[r.type]){let s=r,n=this.options.extensions.renderers[s.type].call({parser:this},s);if(n!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(s.type)){e+=n||"";continue}}let o=r;switch(o.type){case"space":{e+=this.renderer.space(o);break}case"hr":{e+=this.renderer.hr(o);break}case"heading":{e+=this.renderer.heading(o);break}case"code":{e+=this.renderer.code(o);break}case"table":{e+=this.renderer.table(o);break}case"blockquote":{e+=this.renderer.blockquote(o);break}case"list":{e+=this.renderer.list(o);break}case"checkbox":{e+=this.renderer.checkbox(o);break}case"html":{e+=this.renderer.html(o);break}case"def":{e+=this.renderer.def(o);break}case"paragraph":{e+=this.renderer.paragraph(o);break}case"text":{e+=this.renderer.text(o);break}default:{let s='Token with "'+o.type+'" type was not found.';if(this.options.silent)return console.error(s),"";throw new Error(s)}}}return e}parseInline(t,e=this.renderer){let a="";for(let r=0;r<t.length;r++){let o=t[r];if(this.options.extensions?.renderers?.[o.type]){let n=this.options.extensions.renderers[o.type].call({parser:this},o);if(n!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(o.type)){a+=n||"";continue}}let s=o;switch(s.type){case"escape":{a+=e.text(s);break}case"html":{a+=e.html(s);break}case"link":{a+=e.link(s);break}case"image":{a+=e.image(s);break}case"checkbox":{a+=e.checkbox(s);break}case"strong":{a+=e.strong(s);break}case"em":{a+=e.em(s);break}case"codespan":{a+=e.codespan(s);break}case"br":{a+=e.br(s);break}case"del":{a+=e.del(s);break}case"text":{a+=e.text(s);break}default:{let n='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error(n),"";throw new Error(n)}}}return a}},O=(Fe=class{constructor(l){F(this,"options");F(this,"block");this.options=l||R}preprocess(l){return l}postprocess(l){return l}processAllTokens(l){return l}emStrongMask(l){return l}provideLexer(){return this.block?M.lex:M.lexInline}provideParser(){return this.block?z.parse:z.parseInline}},F(Fe,"passThroughHooks",new Set(["preprocess","postprocess","processAllTokens","emStrongMask"])),F(Fe,"passThroughHooksRespectAsync",new Set(["preprocess","postprocess","processAllTokens"])),Fe),jt=class{constructor(...l){F(this,"defaults",Me());F(this,"options",this.setOptions);F(this,"parse",this.parseMarkdown(!0));F(this,"parseInline",this.parseMarkdown(!1));F(this,"Parser",z);F(this,"Renderer",X);F(this,"TextRenderer",Ie);F(this,"Lexer",M);F(this,"Tokenizer",G);F(this,"Hooks",O);this.use(...l)}walkTokens(l,t){let e=[];for(let a of l)switch(e=e.concat(t.call(this,a)),a.type){case"table":{let r=a;for(let o of r.header)e=e.concat(this.walkTokens(o.tokens,t));for(let o of r.rows)for(let s of o)e=e.concat(this.walkTokens(s.tokens,t));break}case"list":{let r=a;e=e.concat(this.walkTokens(r.items,t));break}default:{let r=a;this.defaults.extensions?.childTokens?.[r.type]?this.defaults.extensions.childTokens[r.type].forEach(o=>{let s=r[o].flat(1/0);e=e.concat(this.walkTokens(s,t))}):r.tokens&&(e=e.concat(this.walkTokens(r.tokens,t)))}}return e}use(...l){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return l.forEach(e=>{let a={...e};if(a.async=this.defaults.async||a.async||!1,e.extensions&&(e.extensions.forEach(r=>{if(!r.name)throw new Error("extension name required");if("renderer"in r){let o=t.renderers[r.name];o?t.renderers[r.name]=function(...s){let n=r.renderer.apply(this,s);return n===!1&&(n=o.apply(this,s)),n}:t.renderers[r.name]=r.renderer}if("tokenizer"in r){if(!r.level||r.level!=="block"&&r.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let o=t[r.level];o?o.unshift(r.tokenizer):t[r.level]=[r.tokenizer],r.start&&(r.level==="block"?t.startBlock?t.startBlock.push(r.start):t.startBlock=[r.start]:r.level==="inline"&&(t.startInline?t.startInline.push(r.start):t.startInline=[r.start]))}"childTokens"in r&&r.childTokens&&(t.childTokens[r.name]=r.childTokens)}),a.extensions=t),e.renderer){let r=this.defaults.renderer||new X(this.defaults);for(let o in e.renderer){if(!(o in r))throw new Error(`renderer '${o}' does not exist`);if(["options","parser"].includes(o))continue;let s=o,n=e.renderer[s],i=r[s];r[s]=(...d)=>{let c=n.apply(r,d);return c===!1&&(c=i.apply(r,d)),c||""}}a.renderer=r}if(e.tokenizer){let r=this.defaults.tokenizer||new G(this.defaults);for(let o in e.tokenizer){if(!(o in r))throw new Error(`tokenizer '${o}' does not exist`);if(["options","rules","lexer"].includes(o))continue;let s=o,n=e.tokenizer[s],i=r[s];r[s]=(...d)=>{let c=n.apply(r,d);return c===!1&&(c=i.apply(r,d)),c}}a.tokenizer=r}if(e.hooks){let r=this.defaults.hooks||new O;for(let o in e.hooks){if(!(o in r))throw new Error(`hook '${o}' does not exist`);if(["options","block"].includes(o))continue;let s=o,n=e.hooks[s],i=r[s];O.passThroughHooks.has(o)?r[s]=d=>{if(this.defaults.async&&O.passThroughHooksRespectAsync.has(o))return(async()=>{let p=await n.call(r,d);return i.call(r,p)})();let c=n.call(r,d);return i.call(r,c)}:r[s]=(...d)=>{if(this.defaults.async)return(async()=>{let p=await n.apply(r,d);return p===!1&&(p=await i.apply(r,d)),p})();let c=n.apply(r,d);return c===!1&&(c=i.apply(r,d)),c}}a.hooks=r}if(e.walkTokens){let r=this.defaults.walkTokens,o=e.walkTokens;a.walkTokens=function(s){let n=[];return n.push(o.call(this,s)),r&&(n=n.concat(r.call(this,s))),n}}this.defaults={...this.defaults,...a}}),this}setOptions(l){return this.defaults={...this.defaults,...l},this}lexer(l,t){return M.lex(l,t??this.defaults)}parser(l,t){return z.parse(l,t??this.defaults)}parseMarkdown(l){return(t,e)=>{let a={...e},r={...this.defaults,...a},o=this.onError(!!r.silent,!!r.async);if(this.defaults.async===!0&&a.async===!1)return o(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"||t===null)return o(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return o(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(r.hooks&&(r.hooks.options=r,r.hooks.block=l),r.async)return(async()=>{let s=r.hooks?await r.hooks.preprocess(t):t,n=await(r.hooks?await r.hooks.provideLexer():l?M.lex:M.lexInline)(s,r),i=r.hooks?await r.hooks.processAllTokens(n):n;r.walkTokens&&await Promise.all(this.walkTokens(i,r.walkTokens));let d=await(r.hooks?await r.hooks.provideParser():l?z.parse:z.parseInline)(i,r);return r.hooks?await r.hooks.postprocess(d):d})().catch(o);try{r.hooks&&(t=r.hooks.preprocess(t));let s=(r.hooks?r.hooks.provideLexer():l?M.lex:M.lexInline)(t,r);r.hooks&&(s=r.hooks.processAllTokens(s)),r.walkTokens&&this.walkTokens(s,r.walkTokens);let n=(r.hooks?r.hooks.provideParser():l?z.parse:z.parseInline)(s,r);return r.hooks&&(n=r.hooks.postprocess(n)),n}catch(s){return o(s)}}}onError(l,t){return e=>{if(e.message+=`
59
+ Please report this to https://github.com/markedjs/marked.`,l){let a="<p>An error occurred:</p><pre>"+A(e.message+"",!0)+"</pre>";return t?Promise.resolve(a):a}if(t)return Promise.reject(e);throw e}}},H=new jt;C.options=C.setOptions=function(l){return H.setOptions(l),C.defaults=H.defaults,It(C.defaults),C};C.getDefaults=Me;C.defaults=R;C.use=function(...l){return H.use(...l),C.defaults=H.defaults,It(C.defaults),C};C.walkTokens=function(l,t){return H.walkTokens(l,t)};C.parseInline=H.parseInline;C.Parser=z;C.parser=z.parse;C.Renderer=X;C.TextRenderer=Ie;C.Lexer=M;C.lexer=M.lex;C.Tokenizer=G;C.Hooks=O;C.parse=C;Kr=C.options,Qr=C.setOptions,Jr=C.use,ea=C.walkTokens,ta=C.parseInline,ra=C,aa=z.parse,oa=M.lex});var Q=class{parse(t){if(!t)throw new Error("Schema es requerido");if(!t.fields&&!t.steps)throw new Error("Schema debe tener fields o steps");if(t.steps){for(let r of t.steps)if(!r.fields||r.fields.length===0)throw new Error("Cada step debe tener al menos un field")}let e=t.fields?this.normalizeFields(t.fields):[],a=t.steps?t.steps.map(r=>({...r,fields:this.normalizeFields(r.fields)})):void 0;return{fields:e,steps:a,isWizard:!!(t.steps&&t.steps.length>0)}}normalizeFields(t){return t.map((e,a)=>{if(!e.type)throw new Error(`Field en \xEDndice ${a} debe tener un type`);if(!e.name)throw new Error(`Field en \xEDndice ${a} debe tener un name`);return this.validateFieldType(e,a),this.applyDefaults(e)})}validateFieldType(t,e){if(!["text","email","number","password","textarea","select","checkbox","radio","switch","date","file","file-drop","map","rating","slider","colorpicker","array","group","row","custom","quantity","accordion-select","image-grid-select","otp","markdown","autocomplete-tags","chip-select","image-file-crop","table"].includes(t.type))throw new Error(`Field en \xEDndice ${e} tiene un type inv\xE1lido: ${t.type}`);switch(t.type){case"select":case"radio":case"accordion-select":case"image-grid-select":case"autocomplete-tags":case"chip-select":if(!("options"in t)||!t.options||t.options.length===0)throw new Error(`Field "${t.name}" de tipo ${t.type} debe tener options`);break;case"array":if(!("itemSchema"in t)||!t.itemSchema)throw new Error(`Field "${t.name}" de tipo array debe tener itemSchema`);if("minItems"in t){let r=t.minItems;if(r<0)throw new Error(`Field "${t.name}" de tipo array: minItems debe ser >= 0`);if("maxItems"in t){let o=t.maxItems;if(r>o)throw new Error(`Field "${t.name}" de tipo array: minItems (${r}) no puede ser mayor que maxItems (${o})`)}}break;case"group":if(!("fields"in t)||!t.fields||t.fields.length===0)throw new Error(`Field "${t.name}" de tipo group debe tener fields`);break;case"row":if(!("fields"in t)||!t.fields||t.fields.length===0)throw new Error(`Field "${t.name}" de tipo row debe tener fields`);break;case"colorpicker":if("defaultValue"in t&&t.defaultValue!=null&&!/^#[0-9A-Fa-f]{6}$/.test(String(t.defaultValue)))throw new Error(`Field "${t.name}" de tipo colorpicker debe tener defaultValue en formato hex (#RRGGBB)`);break;case"table":if((!("columns"in t)||!Array.isArray(t.columns)||t.columns.length===0)&&"columns"in t)if(Array.isArray(t.columns)&&t.columns.length===0)t.columns=["Columna1"];else throw new Error(`Field "${t.name}" de tipo table debe tener un array de columns no vac\xEDo`);if(t.columns.some(r=>typeof r!="string"))throw new Error(`Field "${t.name}" de tipo table: todas las columns deben ser strings`);if("maxRows"in t&&t.maxRows!==void 0&&(typeof t.maxRows!="number"||t.maxRows<1))throw new Error(`Field "${t.name}" de tipo table: maxRows debe ser un n\xFAmero mayor a 0`);break}"leadingIcon"in t&&t.leadingIcon&&this.validateSlotContent(t.leadingIcon,t.name,"leadingIcon"),"trailingIcon"in t&&t.trailingIcon&&this.validateSlotContent(t.trailingIcon,t.name,"trailingIcon")}validateSlotContent(t,e,a){if(!t.type||!["image","html"].includes(t.type))throw new Error(`Field "${e}" ${a} debe tener type 'image' o 'html'`);if(t.type==="image"&&(!t.src||typeof t.src!="string"))throw new Error(`Field "${e}" ${a} con type 'image' debe tener src`);if(t.type==="html"&&(!t.html||typeof t.html!="string"))throw new Error(`Field "${e}" ${a} con type 'html' debe tener html`)}applyDefaults(t){let e={disabled:!1,hidden:!1};switch(t.type){case"checkbox":case"switch":"checked"in t||(e.checked=!1);break;case"select":case"accordion-select":case"image-grid-select":"multiple"in t||(e.multiple=!1),t.type==="image-grid-select"&&("columns"in t||(e.columns=3),"imageSize"in t||(e.imageSize="medium"));break;case"file":"multiple"in t||(e.multiple=!1);break;case"quantity":"min"in t||(e.min=0),"step"in t||(e.step=1);break;case"otp":"length"in t||(e.length=6),"numeric"in t||(e.numeric=!0);break;case"slider":"min"in t||(e.min=0),"max"in t||(e.max=100),"step"in t||(e.step=1);break;case"rating":"max"in t||(e.max=5);break;case"colorpicker":(!("defaultValue"in t)||t.defaultValue==null)&&(e.defaultValue="#000000");break;case"table":(!("columns"in t)||!Array.isArray(t.columns)||t.columns.length===0)&&(e.columns=["Columna1"]),(!("maxRows"in t)||t.maxRows==null)&&(e.maxRows=100),(!("maxHeight"in t)||t.maxHeight==null)&&(e.maxHeight="300px"),"allowUserColumns"in t||(e.allowUserColumns=!1);break}return{...e,...t}}getAllFields(t){let e=this.parse(t),a=[],r=o=>{for(let s of o)a.push(s),s.type==="group"&&"fields"in s&&r(s.fields),s.type==="row"&&"fields"in s&&r(s.fields),s.type==="array"&&"itemSchema"in s&&s.itemSchema.fields&&r(s.itemSchema.fields)};if(e.fields&&r(e.fields),e.steps)for(let o of e.steps)r(o.fields);return a}};function J(l){let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(l);if(!t){let e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i.exec(l);return e?[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)].join(", "):"0, 123, 255"}return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)].join(", ")}var Jt={primary:"#007bff",secondary:"#6c757d",error:"#dc3545",success:"#28a745",text:"#212529",labelColor:"#212529",border:"#ddd",background:"#ffffff",groupBackground:"var(--easy-form-group-background)",groupTitle:"#212529",groupBorder:"#ddd"};function _(l){return{...Jt,...l}}function st(l){return`
60
60
  :host {
61
61
  display: block;
62
62
  --easy-form-primary: ${l.primary};
@@ -76,6 +76,9 @@ Please report this to https://github.com/markedjs/marked.`,l){let a="<p>An error
76
76
  --easy-form-group-border: ${l.groupBorder};
77
77
  --easy-form-on-primary: #ffffff;
78
78
  --easy-form-hover-overlay: rgba(0, 0, 0, 0.03);
79
+ /* Padding de controles nativos (inputs/select); los temas sobrescriben para alinear select con input */
80
+ --easy-form-control-padding-inline: 0.5rem;
81
+ --easy-form-control-padding-block: 0.5rem;
79
82
  }
80
83
  .easy-form-field {
81
84
  margin-bottom: 1rem;
@@ -163,13 +166,31 @@ Please report this to https://github.com/markedjs/marked.`,l){let a="<p>An error
163
166
  min-width: 0;
164
167
  }
165
168
  .easy-form-input-wrapper .easy-form-input-core input:not([type="checkbox"]):not([type="radio"]):not([type="color"]),
166
- .easy-form-input-wrapper .easy-form-input-core textarea,
167
- .easy-form-input-wrapper .easy-form-input-core select {
169
+ .easy-form-input-wrapper .easy-form-input-core textarea {
168
170
  width: 100%;
169
171
  border: none !important;
170
172
  background: transparent !important;
171
173
  box-shadow: none !important;
172
- padding: 0.5rem 0 !important;
174
+ padding-block: var(--easy-form-control-padding-block, 0.5rem) !important;
175
+ padding-inline: 0 !important;
176
+ }
177
+ /* select simple: sin background shorthand para no pisar el chevron (native-select-alignment) */
178
+ .easy-form-input-wrapper .easy-form-input-core select:not([multiple]) {
179
+ width: 100%;
180
+ border: none !important;
181
+ background-color: transparent !important;
182
+ box-shadow: none !important;
183
+ padding-block: var(--easy-form-control-padding-block, 0.5rem) !important;
184
+ padding-inline-start: 0 !important;
185
+ padding-inline-end: 0 !important;
186
+ }
187
+ .easy-form-input-wrapper .easy-form-input-core select[multiple] {
188
+ width: 100%;
189
+ border: none !important;
190
+ background: transparent !important;
191
+ box-shadow: none !important;
192
+ padding-block: var(--easy-form-control-padding-block, 0.5rem) !important;
193
+ padding-inline: 0 !important;
173
194
  }
174
195
  .easy-form-input-wrapper .easy-form-input-core input:focus,
175
196
  .easy-form-input-wrapper .easy-form-input-core textarea:focus,
@@ -612,12 +633,18 @@ Please report this to https://github.com/markedjs/marked.`,l){let a="<p>An error
612
633
  }
613
634
  input:not([type="checkbox"]):not([type="radio"]):not([type="color"]), textarea, select {
614
635
  width: 100%;
615
- padding: 0.5rem;
636
+ padding: var(--easy-form-control-padding-block) var(--easy-form-control-padding-inline);
616
637
  font-size: 1rem;
638
+ line-height: 1.5;
617
639
  color: var(--easy-form-text);
618
640
  transition: all 0.2s ease;
619
641
  box-sizing: border-box;
620
642
  }
643
+ /* Misma altura m\xEDnima en una l\xEDnea entre input y select (evita desfase 1\u20132px entre navegadores) */
644
+ input:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="file"]):not([type="hidden"]),
645
+ select:not([multiple]) {
646
+ min-height: calc(1.5em + 2 * var(--easy-form-control-padding-block));
647
+ }
621
648
  input[type="checkbox"],
622
649
  input[type="radio"] {
623
650
  width: 18px !important;
@@ -1852,7 +1879,9 @@ Please report this to https://github.com/markedjs/marked.`,l){let a="<p>An error
1852
1879
  border: none;
1853
1880
  border-bottom: 2px solid var(--easy-form-border);
1854
1881
  border-radius: 0;
1855
- padding: 0.75rem 0;
1882
+ --easy-form-control-padding-inline: 0;
1883
+ --easy-form-control-padding-block: 0.75rem;
1884
+ padding: var(--easy-form-control-padding-block) var(--easy-form-control-padding-inline);
1856
1885
  }
1857
1886
  input:not([type="checkbox"]):not([type="radio"]):focus, textarea:focus, select:focus {
1858
1887
  border-bottom-color: var(--easy-form-primary);
@@ -1899,7 +1928,9 @@ Please report this to https://github.com/markedjs/marked.`,l){let a="<p>An error
1899
1928
  input:not([type="checkbox"]):not([type="radio"]), textarea, select {
1900
1929
  border: 2px solid var(--easy-form-border);
1901
1930
  border-radius: 4px;
1902
- padding: 0.625rem;
1931
+ --easy-form-control-padding-inline: 0.625rem;
1932
+ --easy-form-control-padding-block: 0.625rem;
1933
+ padding: var(--easy-form-control-padding-block) var(--easy-form-control-padding-inline);
1903
1934
  }
1904
1935
  input:not([type="checkbox"]):not([type="radio"]):focus, textarea:focus, select:focus {
1905
1936
  border-color: var(--easy-form-primary);
@@ -1946,6 +1977,7 @@ Please report this to https://github.com/markedjs/marked.`,l){let a="<p>An error
1946
1977
  border: none;
1947
1978
  border-bottom: 1px solid color-mix(in srgb, var(--easy-form-text) 42%, transparent);
1948
1979
  border-radius: 4px 4px 0 0;
1980
+ --easy-form-control-padding-inline: 0.75rem;
1949
1981
  padding: 0.75rem 0.75rem 0.5rem 0.75rem;
1950
1982
  background: transparent;
1951
1983
  }
@@ -2049,7 +2081,9 @@ Please report this to https://github.com/markedjs/marked.`,l){let a="<p>An error
2049
2081
  input:not([type="checkbox"]):not([type="radio"]), textarea, select {
2050
2082
  border: 1px solid var(--easy-form-border);
2051
2083
  border-radius: 12px;
2052
- padding: 0.75rem 1rem;
2084
+ --easy-form-control-padding-inline: 1rem;
2085
+ --easy-form-control-padding-block: 0.75rem;
2086
+ padding: var(--easy-form-control-padding-block) var(--easy-form-control-padding-inline);
2053
2087
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
2054
2088
  }
2055
2089
  input:not([type="checkbox"]):not([type="radio"]):focus, textarea:focus, select:focus {
@@ -2106,7 +2140,9 @@ Please report this to https://github.com/markedjs/marked.`,l){let a="<p>An error
2106
2140
  input:not([type="checkbox"]):not([type="radio"]), textarea, select {
2107
2141
  border: none;
2108
2142
  border-radius: 0;
2109
- padding: 0.5rem 0;
2143
+ --easy-form-control-padding-inline: 0;
2144
+ --easy-form-control-padding-block: 0.5rem;
2145
+ padding: var(--easy-form-control-padding-block) var(--easy-form-control-padding-inline);
2110
2146
  background: transparent;
2111
2147
  }
2112
2148
  input:not([type="checkbox"]):not([type="radio"]):focus, textarea:focus, select:focus {
@@ -2238,7 +2274,9 @@ Please report this to https://github.com/markedjs/marked.`,l){let a="<p>An error
2238
2274
  input:not([type="checkbox"]):not([type="radio"]), textarea, select {
2239
2275
  border: 1.5px solid var(--easy-form-border);
2240
2276
  border-radius: 8px;
2241
- padding: 0.75rem 1rem;
2277
+ --easy-form-control-padding-inline: 1rem;
2278
+ --easy-form-control-padding-block: 0.75rem;
2279
+ padding: var(--easy-form-control-padding-block) var(--easy-form-control-padding-inline);
2242
2280
  background: linear-gradient(to bottom, var(--easy-form-background), var(--easy-form-group-background));
2243
2281
  color: var(--easy-form-text);
2244
2282
  font-size: 0.875rem;
@@ -2384,7 +2422,9 @@ Please report this to https://github.com/markedjs/marked.`,l){let a="<p>An error
2384
2422
  input:not([type="checkbox"]):not([type="radio"]), textarea, select {
2385
2423
  border: 2px solid var(--easy-form-border);
2386
2424
  border-radius: 6px;
2387
- padding: 0.625rem 0.875rem;
2425
+ --easy-form-control-padding-inline: 0.875rem;
2426
+ --easy-form-control-padding-block: 0.625rem;
2427
+ padding: var(--easy-form-control-padding-block) var(--easy-form-control-padding-inline);
2388
2428
  background: var(--easy-form-background);
2389
2429
  color: var(--easy-form-text);
2390
2430
  font-size: 0.875rem;
@@ -2484,7 +2524,9 @@ Please report this to https://github.com/markedjs/marked.`,l){let a="<p>An error
2484
2524
  input:not([type="checkbox"]):not([type="radio"]), textarea, select {
2485
2525
  border: 1px solid var(--easy-form-border);
2486
2526
  border-radius: 12px;
2487
- padding: 0.875rem 1.25rem;
2527
+ --easy-form-control-padding-inline: 1.25rem;
2528
+ --easy-form-control-padding-block: 0.875rem;
2529
+ padding: var(--easy-form-control-padding-block) var(--easy-form-control-padding-inline);
2488
2530
  background: var(--easy-form-background);
2489
2531
  color: var(--easy-form-text);
2490
2532
  font-size: 0.875rem;
@@ -2570,7 +2612,9 @@ Please report this to https://github.com/markedjs/marked.`,l){let a="<p>An error
2570
2612
  input:not([type="checkbox"]):not([type="radio"]), textarea, select {
2571
2613
  border: 2px solid rgba(255, 255, 255, 0.4);
2572
2614
  border-radius: 16px;
2573
- padding: 0.875rem 1.25rem;
2615
+ --easy-form-control-padding-inline: 1.25rem;
2616
+ --easy-form-control-padding-block: 0.875rem;
2617
+ padding: var(--easy-form-control-padding-block) var(--easy-form-control-padding-inline);
2574
2618
  background: rgba(255, 255, 255, 0.15);
2575
2619
  backdrop-filter: blur(20px) saturate(180%);
2576
2620
  -webkit-backdrop-filter: blur(20px) saturate(180%);
@@ -2736,7 +2780,9 @@ Please report this to https://github.com/markedjs/marked.`,l){let a="<p>An error
2736
2780
  input:not([type="checkbox"]):not([type="radio"]), textarea, select {
2737
2781
  border: 3px solid var(--easy-form-text);
2738
2782
  border-radius: 0;
2739
- padding: 0.875rem 1.25rem;
2783
+ --easy-form-control-padding-inline: 1.25rem;
2784
+ --easy-form-control-padding-block: 0.875rem;
2785
+ padding: var(--easy-form-control-padding-block) var(--easy-form-control-padding-inline);
2740
2786
  background: var(--easy-form-background);
2741
2787
  color: var(--easy-form-text);
2742
2788
  font-size: 0.875rem;
@@ -2836,7 +2882,9 @@ Please report this to https://github.com/markedjs/marked.`,l){let a="<p>An error
2836
2882
  border: none;
2837
2883
  border-bottom: 1px solid var(--easy-form-border);
2838
2884
  border-radius: 0;
2839
- padding: 0.625rem 0;
2885
+ --easy-form-control-padding-inline: 0;
2886
+ --easy-form-control-padding-block: 0.625rem;
2887
+ padding: var(--easy-form-control-padding-block) var(--easy-form-control-padding-inline);
2840
2888
  background: transparent;
2841
2889
  color: var(--easy-form-text);
2842
2890
  font-size: 0.9375rem;
@@ -3059,7 +3107,9 @@ Please report this to https://github.com/markedjs/marked.`,l){let a="<p>An error
3059
3107
  input:not([type="checkbox"]):not([type="radio"]), textarea, select {
3060
3108
  border: 1px solid rgba(var(--easy-form-primary-rgb), 0.2);
3061
3109
  border-radius: 12px;
3062
- padding: 0.875rem 1rem;
3110
+ --easy-form-control-padding-inline: 1rem;
3111
+ --easy-form-control-padding-block: 0.875rem;
3112
+ padding: var(--easy-form-control-padding-block) var(--easy-form-control-padding-inline);
3063
3113
  background: rgba(var(--easy-form-primary-rgb), 0.05);
3064
3114
  backdrop-filter: blur(10px);
3065
3115
  -webkit-backdrop-filter: blur(10px);
@@ -3238,13 +3288,6 @@ Please report this to https://github.com/markedjs/marked.`,l){let a="<p>An error
3238
3288
  width: 1.1rem;
3239
3289
  height: 1.1rem;
3240
3290
  }
3241
- select {
3242
- appearance: none;
3243
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236366f1' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
3244
- background-repeat: no-repeat;
3245
- background-position: right 1rem center;
3246
- padding-right: 2.5rem;
3247
- }
3248
3291
  /* Estilos espec\xEDficos para tabla - Tema EFC */
3249
3292
  .easy-form-table-wrapper {
3250
3293
  border: 1px solid rgba(var(--easy-form-primary-rgb), 0.2);
@@ -3361,7 +3404,30 @@ Please report this to https://github.com/markedjs/marked.`,l){let a="<p>An error
3361
3404
  background: var(--easy-form-error);
3362
3405
  color: white;
3363
3406
  }
3364
- `}function ee(l,t){let e=ot(t),a=Qt(l,t);return e+a}function Qt(l,t){switch(l){case"plano":return De(t);case"tradicional":return it(t);case"material":return nt(t);case"rounded-shadow":return lt(t);case"lines":return dt(t);case"shadcn":return ct(t);case"chakra":return mt(t);case"mantine":return pt(t);case"glass":return ut(t);case"bordered":return ft(t);case"minimal":return ht(t);case"efc":return gt(t);default:return De(t)}}var bt={phone:{pattern:"(999) 999-9999",placeholder:"_"},"phone-us":{pattern:"(999) 999-9999",placeholder:"_"},"phone-international":{pattern:"+99 999 999 9999",placeholder:"_"},date:{pattern:"99/99/9999",placeholder:"_"},"date-us":{pattern:"99/99/9999",placeholder:"_"},"date-eu":{pattern:"99-99-9999",placeholder:"_"},"credit-card":{pattern:"9999 9999 9999 9999",placeholder:"_"},ssn:{pattern:"999-99-9999",placeholder:"_"},"zip-code":{pattern:"99999",placeholder:"_"},currency:{pattern:"$999,999.99",placeholder:"_",transform:l=>{let t=l.replace(/[^\d.]/g,"");return(parseFloat(t)||0).toFixed(2)}},percentage:{pattern:"999%",placeholder:"_",transform:l=>l.replace(/[^\d]/g,"")},time:{pattern:"99:99",placeholder:"_"},datetime:{pattern:"99/99/9999 99:99",placeholder:"_"}};function Ve(l){return bt[l]}var te="El valor contiene caracteres o patrones no permitidos",Jt=[/\b(union|select|insert|update|delete|drop|exec|execute|declare)\s+(all\s+)?(select|from|into|table)/i,/\b(or|and)\s+['"]?\d+['"]?\s*=\s*['"]?\d+/i,/;\s*(drop|delete|truncate|alter)\s+/i,/--\s*$/,/\/\*[\s\S]*\*\//,/'\s*or\s+'1'\s*=\s*'1/i,/"\s*or\s+"1"\s*=\s*"1/i,/\bexec\s*\(/i,/\bxp_\w+/i,/<script\b[\s\S]*?>[\s\S]*?<\/script>/i,/<script\b/i,/javascript\s*:/i,/vbscript\s*:/i,/on\w+\s*=\s*["'][^"']*["']/i,/on\w+\s*=\s*[^\s>]+/i,/<iframe\b/i,/<object\b/i,/<embed\b/i,/\beval\s*\(/i,/document\.(cookie|write|location)/i,/window\.(location|open|eval)/i,/[;&|]\s*(ls|cat|rm|wget|curl|nc|bash|sh|python|perl)\s/i,/\$\s*\([^)]+\)/,/`[^`]+`/,/\|\s*\w+/,/\$\s*where\b/i,/\$\s*gt\b|\$\s*ne\b|\$\s*regex\b/i,/\{\{[^}]*\}\}/,/\$\{[^}]*\}/];function yt(l){if(typeof l!="string"||l.length===0||l.trim().length===0)return!1;for(let e of Jt)if(e.test(l))return!0;return!1}function j(l){return l==null?!0:typeof l=="string"?!yt(l):Array.isArray(l)?l.every(t=>j(t)):typeof l=="object"?Object.values(l).every(t=>j(t)):!0}var W=class{constructor(t){this.attempts=0;this.lockedUntil=null;this.unlockCheckInterval=null;this.maxAttempts=Math.max(1,t.maxAttempts),this.blockDurationMs=(t.blockDurationMinutes??5)*60*1e3,this.storageKey=t.storageKey,this.onLocked=t.onLocked,this.onUnlocked=t.onUnlocked,this.storageKey&&typeof sessionStorage<"u"&&this.loadFromStorage()}loadFromStorage(){if(!(!this.storageKey||typeof sessionStorage>"u"))try{let t=sessionStorage.getItem(this.storageKey);if(t){let e=JSON.parse(t);this.attempts=e.attempts??0,this.lockedUntil=e.lockedUntil??null,this.checkExpiration()}}catch{}}saveToStorage(){if(!(!this.storageKey||typeof sessionStorage>"u"))try{let t={attempts:this.attempts,lockedUntil:this.lockedUntil??void 0};sessionStorage.setItem(this.storageKey,JSON.stringify(t))}catch{}}checkExpiration(){return this.lockedUntil===null?!1:Date.now()>=this.lockedUntil?(this.reset(),this.onUnlocked?.(),!0):!1}startUnlockCheck(){this.unlockCheckInterval||(this.unlockCheckInterval=setInterval(()=>{this.checkExpiration()&&this.stopUnlockCheck()},1e3))}stopUnlockCheck(){this.unlockCheckInterval&&(clearInterval(this.unlockCheckInterval),this.unlockCheckInterval=null)}incrementAttempts(){this.attempts++,this.attempts>=this.maxAttempts?(this.lockedUntil=Date.now()+this.blockDurationMs,this.saveToStorage(),this.onLocked?.(this.blockDurationMs),this.startUnlockCheck()):this.saveToStorage()}isLocked(){return this.checkExpiration()?!1:this.lockedUntil!==null&&Date.now()<this.lockedUntil}getRemainingBlockTimeMs(){return this.checkExpiration()||this.lockedUntil===null?0:Math.max(0,this.lockedUntil-Date.now())}reset(){this.attempts=0,this.lockedUntil=null,this.stopUnlockCheck(),this.saveToStorage()}getAttempts(){return this.attempts}};function P(l){return l==null?"":typeof l=="boolean"?l?"true":"false":typeof l=="object"?JSON.stringify(l):String(l)}function $(l){if(!l)return null;try{return JSON.parse(l)}catch{return l}}function I(l,t){return t.split(".").reduce((e,a)=>e?.[a],l)}function D(l,t,e){let a=t.split("."),r=a.pop(),s=a.reduce((o,n)=>((!o[n]||typeof o[n]!="object")&&(o[n]={}),o[n]),l);s[r]=e}function vt(l){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(l)}var V=class{evaluateCondition(t,e){let a=this.getFieldValue(t.field,e);return this.compareValues(a,t.operator,t.value)}evaluateConditions(t,e,a="and"){let r=Array.isArray(t)?t:[t];return r.length===0?!0:a==="and"?r.every(s=>this.evaluateCondition(s,e)):r.some(s=>this.evaluateCondition(s,e))}evaluateDependencies(t,e){let a=!0,r=!0,s=!1;if(t.show&&(a=this.evaluateConditions(t.show,e)),t.hide){let o=this.evaluateConditions(t.hide,e);a=a&&!o}if(t.enable&&(r=this.evaluateConditions(t.enable,e)),t.disable){let o=this.evaluateConditions(t.disable,e);r=r&&!o}if(t.required&&(s=this.evaluateConditions(t.required,e)),t.optional){let o=this.evaluateConditions(t.optional,e);s=s&&!o}return{visible:a,enabled:r,required:s}}getFieldValue(t,e){if(t in e)return e[t];let a=t.split("."),r=e;for(let s of a){if(r==null)return null;r=r[s]}return r}compareValues(t,e,a){switch(e){case"equals":return this.deepEqual(t,a);case"notEquals":return!this.deepEqual(t,a);case"contains":return Array.isArray(t)?t.includes(a):typeof t=="string"?t.includes(String(a)):!1;case"notContains":return!this.compareValues(t,"contains",a);case"greaterThan":return this.toNumber(t)>this.toNumber(a);case"lessThan":return this.toNumber(t)<this.toNumber(a);case"greaterThanOrEqual":return this.toNumber(t)>=this.toNumber(a);case"lessThanOrEqual":return this.toNumber(t)<=this.toNumber(a);case"in":return Array.isArray(a)?a.includes(t):!1;case"notIn":return!this.compareValues(t,"in",a);case"isEmpty":return t==null||t===""||Array.isArray(t)&&t.length===0;case"isNotEmpty":return!this.compareValues(t,"isEmpty",a);case"regex":try{return(typeof a=="string"?new RegExp(a):a).test(String(t||""))}catch{return!1}default:return!1}}deepEqual(t,e){if(t===e)return!0;if(t===null||e===null||t===void 0||e===void 0)return t===e;if(typeof t!=typeof e)return!1;if(Array.isArray(t)&&Array.isArray(e))return t.length!==e.length?!1:t.every((a,r)=>this.deepEqual(a,e[r]));if(typeof t=="object"){let a=Object.keys(t),r=Object.keys(e);return a.length!==r.length?!1:a.every(s=>this.deepEqual(t[s],e[s]))}return!1}toNumber(t){if(typeof t=="number")return t;if(typeof t=="string"){let e=parseFloat(t);return isNaN(e)?0:e}return 0}};var re=class{constructor(){this.conditionEngine=new V}async validateField(t,e){return this.validateFieldWithValidations(t,e,t.validations||[])}async validateFieldWithValidations(t,e,a){let r=[];if(!a||a.length===0)return r;for(let s of a){let o=await this.validateValue(s,e);o.isValid||r.push(o.message||this.getDefaultMessage(s))}return r}async validateValue(t,e){switch(t.type){case"required":return this.validateRequired(e);case"email":return this.validateEmail(e);case"minLength":return this.validateMinLength(e,t.value);case"maxLength":return this.validateMaxLength(e,t.value);case"min":return this.validateMin(e,t.value);case"max":return this.validateMax(e,t.value);case"pattern":return this.validatePattern(e,t.value);case"custom":return await this.validateCustom(e,t);case"noInjection":return this.validateNoInjection(e,t);default:return{isValid:!0}}}validateRequired(t){let e=t!=null&&t!==""&&!(Array.isArray(t)&&t.length===0);return{isValid:e,message:e?void 0:"Este campo es requerido"}}validateEmail(t){if(!t)return{isValid:!0};let e=typeof t=="string"&&vt(t);return{isValid:e,message:e?void 0:"Debe ser un email v\xE1lido"}}validateMinLength(t,e){if(!t)return{isValid:!0};let r=String(t).length>=e;return{isValid:r,message:r?void 0:`Debe tener al menos ${e} caracteres`}}validateMaxLength(t,e){if(!t)return{isValid:!0};let r=String(t).length<=e;return{isValid:r,message:r?void 0:`Debe tener m\xE1ximo ${e} caracteres`}}validateMin(t,e){if(t==null||t==="")return{isValid:!0};let a=Number(t),r=!isNaN(a)&&a>=e;return{isValid:r,message:r?void 0:`Debe ser mayor o igual a ${e}`}}validateMax(t,e){if(t==null||t==="")return{isValid:!0};let a=Number(t),r=!isNaN(a)&&a<=e;return{isValid:r,message:r?void 0:`Debe ser menor o igual a ${e}`}}validatePattern(t,e){if(!t)return{isValid:!0};let a;if(e instanceof RegExp)a=e;else if(typeof e=="string")try{a=new RegExp(e)}catch{return console.warn("Invalid regex pattern:",e),{isValid:!0}}else return console.warn("Pattern validation expects string or RegExp, got:",typeof e,e),{isValid:!0};let r=a.test(String(t));return{isValid:r,message:r?void 0:"El formato no es v\xE1lido"}}validateNoInjection(t,e){if(t==null||t==="")return{isValid:!0};let a=j(t);return{isValid:a,message:a?void 0:e.message||te}}async validateCustom(t,e){try{let a=await e.validator(t);return{isValid:!!a,message:a?void 0:e.message||"Validaci\xF3n fallida"}}catch{return{isValid:!1,message:e.message||"Error en la validaci\xF3n"}}}getDefaultMessage(t){switch(t.type){case"required":return"Este campo es requerido";case"email":return"Debe ser un email v\xE1lido";case"minLength":return`Debe tener al menos ${t.value} caracteres`;case"maxLength":return`Debe tener m\xE1ximo ${t.value} caracteres`;case"min":return`Debe ser mayor o igual a ${t.value}`;case"max":return`Debe ser menor o igual a ${t.value}`;case"pattern":return"El formato no es v\xE1lido";case"custom":return"Validaci\xF3n fallida";case"noInjection":return te;default:return"Campo inv\xE1lido"}}shouldValidateField(t,e){if(t.hidden||t.disabled)return!1;if(t.dependencies){let a=this.conditionEngine.evaluateDependencies(t.dependencies,e);if(!a.visible||!a.enabled)return!1}return!0}async validateForm(t,e){let a={};for(let r of t)if(this.shouldValidateField(r,e))if(r.type==="array"&&"itemSchema"in r){let n=r.itemSchema?.fields||[],i=e[r.name];if(Array.isArray(i))for(let c=0;c<i.length;c++){let p=i[c];for(let m of n){let u=`${r.name}.${c}.${m.name}`,f=p?.[m.name];if(!this.shouldValidateField(m,e))continue;let b=await this.validateField(m,f);b.length>0&&(a[u]=b)}}let d=await this.validateArrayField(r,i);d.length>0&&(a[r.name]=d)}else{let s=e[r.name],o=await this.validateField(r,s);o.length>0&&(a[r.name]=o)}return a}async validateArrayField(t,e){let a=[],r=t;return r.minItems!==void 0&&(Array.isArray(e)&&e.length>=r.minItems||a.push(`Debe tener al menos ${r.minItems} elementos`)),r.maxItems!==void 0&&(Array.isArray(e)&&e.length<=r.maxItems||a.push(`Debe tener m\xE1ximo ${r.maxItems} elementos`)),a}};var ae=class{constructor(){this.wizardState=null;this.schema=null;this.dependencyCache=new Map;this.fieldDependencies=new Map;this.parser=new Q,this.validator=new re,this.conditionEngine=new V,this.state=this.createInitialState()}createInitialState(){return{values:{},errors:{},touched:{},isValid:!0,isSubmitting:!1}}initializeSchema(t,e){this.schema=this.parser.parse(t),this.initializeValues(e),this.initializeWizard(),this.buildDependencyMap()}extractAllFields(t){let e=[];for(let a of t)e.push(a),a.type==="group"&&"fields"in a&&e.push(...this.extractAllFields(a.fields)),a.type==="row"&&"fields"in a&&e.push(...this.extractAllFields(a.fields));return e}getArrayItemOnlyFieldNames(t){let e=new Set(t.map(r=>r.name)),a=new Set;for(let r of t)if(r.type==="array"&&"itemSchema"in r&&r.itemSchema?.fields)for(let s of r.itemSchema.fields)e.has(s.name)||a.add(s.name);return a}extractAllFieldsWithArrays(t,e="",a="root"){let r=[];for(let s of t){let o=e?`${e}.${s.name}`:s.name,n=e||"";r.push({field:s,fullPath:o,containerType:a,containerPath:n}),s.type==="group"&&"fields"in s&&r.push(...this.extractAllFieldsWithArrays(s.fields,o,"group")),s.type==="row"&&"fields"in s&&r.push(...this.extractAllFieldsWithArrays(s.fields,o,"row")),s.type==="array"&&"itemSchema"in s&&s.itemSchema?.fields&&r.push(...this.extractAllFieldsWithArrays(s.itemSchema.fields,s.name,"array"))}return r}buildDependencyMap(){if(this.fieldDependencies.clear(),this.dependencyCache.clear(),!this.schema)return;let t=this.schema.isWizard?this.schema.steps.flatMap(a=>a.fields):this.schema.fields||[],e=this.extractAllFieldsWithArrays(t);for(let{field:a,fullPath:r,containerType:s,containerPath:o}of e){if(!a.dependencies)continue;let n=this.extractObservedFields(a.dependencies);for(let i of n)this.fieldDependencies.has(i)||this.fieldDependencies.set(i,new Set),this.fieldDependencies.get(i).add(a.name),r!==a.name&&this.fieldDependencies.get(i).add(r),s==="array"&&o&&(this.fieldDependencies.has(o)||this.fieldDependencies.set(o,new Set),this.fieldDependencies.get(o).add(r))}}extractObservedFields(t){let e=new Set,a=s=>{s&&s.field&&e.add(s.field)},r=s=>{Array.isArray(s)?s.forEach(a):s&&a(s)};return t.show&&r(t.show),t.hide&&r(t.hide),t.enable&&r(t.enable),t.disable&&r(t.disable),t.required&&r(t.required),t.optional&&r(t.optional),e}initializeValues(t){if(!this.schema)return;let e=this.schema.isWizard?this.schema.steps.flatMap(n=>n.fields):this.schema.fields||[],a=this.extractAllFields(e),r={...this.state.values},s={};if(t)for(let n in t){let i=t[n];i!=null&&D(s,n,i)}for(let n of a){let i=I(s,n.name);if(i!=null)continue;let d=I(r,n.name);d!=null?D(s,n.name,d):this.initializeFieldValue(n,s)}let o=this.getArrayItemOnlyFieldNames(e);for(let n in r)o.has(n)||n in s||(s[n]=r[n]);for(let n of e)if(n.type==="array"&&"minItems"in n&&"itemSchema"in n){let i=n,d=i.minItems??0;if(d>=1&&i.itemSchema?.fields?.length){let c=I(s,n.name);if(Array.isArray(c)&&c.length<d){let p=[...c];for(let m=c.length;m<d;m++){let u={};for(let f of i.itemSchema.fields)this.initializeFieldValue(f,u);p.push(u)}D(s,n.name,p)}}}for(let n of o)n in s&&delete s[n];this.state.values=s}initializeFieldValue(t,e){if(t.defaultValue!==void 0)e[t.name]=t.defaultValue;else switch(t.type){case"checkbox":case"switch":e[t.name]=t.checked||!1;break;case"select":"multiple"in t&&t.multiple?e[t.name]=[]:e[t.name]=null;break;case"array":{let a=t,r=a.minItems??0,s=a.itemSchema?.fields;if(r>=1&&s?.length){let o=[];for(let n=0;n<r;n++){let i={};for(let d of s)this.initializeFieldValue(d,i);o.push(i)}e[t.name]=o}else e[t.name]=[];break}case"group":if(e[t.name]={},"fields"in t)for(let a of t.fields)this.initializeFieldValue(a,e[t.name]);break;case"colorpicker":e[t.name]=t.defaultValue??"#000000";break;default:e[t.name]=null}}initializeWizard(){if(!this.schema||!this.schema.isWizard){this.wizardState=null;return}this.wizardState={currentStep:0,totalSteps:this.schema.steps.length,completedSteps:[]}}getState(){return{...this.state}}getWizardState(){return this.wizardState?{...this.wizardState}:null}getValue(t){return I(this.state.values,t)}createDefaultArrayItem(t){let a=t.itemSchema?.fields;if(!a?.length)return{};let r={};for(let s of a)this.initializeFieldValue(s,r);return r}async setValue(t,e){D(this.state.values,t,e),this.state.touched[t]=!0,this.invalidateDependencyCache(t),this.state.touched[t]&&this.schema&&await this.validateField(t);let a=this.fieldDependencies.get(t);if(a)for(let r of a)await this.validateField(r);this.updateValidity()}invalidateDependencyCache(t){let e=this.fieldDependencies.get(t);if(e)for(let s of e){this.dependencyCache.delete(s);let o=this.addArrayIndexToPath(t,s);o&&this.dependencyCache.delete(o)}let a=t.replace(/\[\d+\]/g,"");if(a!==t){if(e=this.fieldDependencies.get(a),e)for(let o of e){this.dependencyCache.delete(o);let n=t.match(/\[(\d+)\]/);if(n){let i=o.includes("[")?o:`${o.split(".").slice(0,-1).join(".")}[${n[1]}].${o.split(".").pop()}`;this.dependencyCache.delete(i)}}let s=a.split(".").pop();if(s&&s!==a&&(e=this.fieldDependencies.get(s),e))for(let o of e){this.dependencyCache.delete(o);let n=t.match(/\[(\d+)\]/);if(n){let d=`${t.split(".")[0].replace(/\[\d+\]/,"")}[${n[1]}].${o}`;this.dependencyCache.delete(d)}}}let r=t.split(".");for(let s=1;s<r.length;s++){if(r[s].includes("["))continue;let o=r.slice(s).join(".");if(e=this.fieldDependencies.get(o),e)for(let n of e)this.dependencyCache.delete(n),this.dependencyCache.delete(`${r[0]}.${o}`)}this.dependencyCache.delete(t)}addArrayIndexToPath(t,e){let a=t.match(/\[(\d+)\]/);if(!a)return null;let r=a[1],s=t.split(".")[0];if(e.startsWith(s)){let o=e.split(".");if(o.length>1)return`${o[0]}[${r}].${o.slice(1).join(".")}`}return null}setValueWithoutValidation(t,e){D(this.state.values,t,e),this.invalidateDependencyCache(t)}async validateField(t){if(!this.schema)return;let e=this.schema.isWizard?this.schema.steps.flatMap(i=>i.fields):this.schema.fields||[],r=this.extractAllFields(e).find(i=>i.name===t);if(!r)return;if(!this.getFieldVisibility(t)){delete this.state.errors[t];return}let s=this.getValue(t),o=this.getActiveValidations(r),n=await this.validator.validateFieldWithValidations(r,s,o);n.length>0?this.state.errors[t]=n:delete this.state.errors[t]}getActiveValidations(t){let e=[...t.validations||[]],a=["text","email","password","textarea"],r=t.skipInjectionValidation??t.props?.skipInjectionValidation;a.includes(t.type)&&!r&&!e.some(n=>n.type==="noInjection")&&(e=[{type:"noInjection"},...e]);let s=this.getFieldRequired(t.name),o=e.some(n=>n.type==="required");if(s&&!o?e=[{type:"required"},...e]:!s&&o&&(e=e.filter(n=>n.type!=="required")),t.conditionalValidations)for(let n of t.conditionalValidations)this.conditionEngine.evaluateConditions(n.condition,this.state.values)&&(e=[...e,...n.validations]);return e}async validateForm(){if(!this.schema)return{};let t=this.schema.isWizard?this.schema.steps.flatMap(r=>r.fields):this.schema.fields||[],e=this.extractAllFields(t),a=await this.validator.validateForm(e,this.state.values);return this.state.errors=a,this.updateValidity(),a}updateValidity(){this.state.isValid=Object.keys(this.state.errors).length===0}setTouched(t){this.state.touched[t]=!0}getErrors(t){return this.state.errors[t]||[]}getAllErrors(){return{...this.state.errors}}reset(){this.state=this.createInitialState(),this.schema&&(this.initializeValues(),this.initializeWizard())}nextStep(){return this.wizardState&&this.wizardState.currentStep<this.wizardState.totalSteps-1?(this.wizardState.currentStep++,!0):!1}previousStep(){return this.wizardState&&this.wizardState.currentStep>0?(this.wizardState.currentStep--,!0):!1}goToStep(t){return this.wizardState&&t>=0&&t<this.wizardState.totalSteps?(this.wizardState.currentStep=t,!0):!1}completeStep(t){this.wizardState&&(this.wizardState.completedSteps.includes(t)||this.wizardState.completedSteps.push(t))}setSubmitting(t){this.state.isSubmitting=t}getCurrentStepFields(){return!this.schema||!this.schema.isWizard||!this.wizardState?this.schema?.fields||[]:this.schema.steps[this.wizardState.currentStep].fields}getFieldVisibility(t){let e=this.dependencyCache.get(t);if(e!==void 0)return e.visible;if(!this.schema)return!0;let a=this.schema.isWizard?this.schema.steps.flatMap(m=>m.fields):this.schema.fields||[],r=this.extractAllFieldsWithArrays(a),s=r.find(m=>m.fullPath===t||m.field.name===t);if(!s){let m=t.replace(/\[\d+\]/g,"");s=r.find(u=>u.field.name===m||u.fullPath===m)}if(!s){let m=t.split(".").pop();s=r.find(u=>u.field.name===m)}if(!s||!s.field.dependencies)return!s?.field.hidden;let{field:o,containerType:n,containerPath:i}=s,d=s.field.dependencies,c={...this.state.values};if(n==="array"&&i){let m=b=>{if(b)return Array.isArray(b)?b[0]?.field:b.field},u=m(d.show)||m(d.hide)||m(d.enable)||m(d.disable)||m(d.required)||m(d.optional);if(u&&u){let b=t.match(/\[(\d+)\]/),h=b?parseInt(b[1],10):null,g=null;if(h!==null){let y=I(this.state.values,i);if(Array.isArray(y)&&y[h]&&(g=y[h][u]),g==null){let E=`${i}[${h}]`,S=this.state.values[E];S&&typeof S=="object"&&(g=S[u])}}else{let y=I(this.state.values,i);if(Array.isArray(y)){for(let E of y)if(E&&E[u]!==void 0){g=E[u];break}}}if(g!=null){let y={...this.state.values};y[u]=g;let E=this.conditionEngine.evaluateDependencies(d,y);return this.dependencyCache.set(t,E),E.visible&&!o.hidden}}let f={visible:!0,enabled:!0,required:!1};return this.dependencyCache.set(t,f),f.visible&&!o.hidden}else if(i){let m=I(this.state.values,i);if(m&&typeof m=="object"){let u=(b,h="")=>{let g={},y=Object.entries(b);for(let[E,S]of y){let x=h?`${h}.${E}`:E;S&&typeof S=="object"&&!Array.isArray(S)&&S!==null&&Object.assign(g,u(S,x))}for(let[E,S]of y){let x=h?`${h}.${E}`:E;S&&typeof S=="object"&&!Array.isArray(S)&&S!==null||x in g||(g[x]=S)}return g},f=u(m);c={...this.state.values,...f}}}let p=this.conditionEngine.evaluateDependencies(d,c);return this.dependencyCache.set(t,p),p.visible&&!o.hidden}getFieldEnabled(t){let e=this.dependencyCache.get(t);if(e!==void 0)return e.enabled;if(!this.schema)return!0;let a=this.schema.isWizard?this.schema.steps.flatMap(n=>n.fields):this.schema.fields||[],s=this.extractAllFields(a).find(n=>n.name===t);if(!s)return!0;if(s.disabled)return!1;if(!s.dependencies)return!0;let o=this.conditionEngine.evaluateDependencies(s.dependencies,this.state.values);return this.dependencyCache.set(t,o),o.enabled}getFieldRequired(t){let e=this.dependencyCache.get(t);if(e!==void 0)return e.required;if(!this.schema)return!1;let a=this.schema.isWizard?this.schema.steps.flatMap(i=>i.fields):this.schema.fields||[],s=this.extractAllFields(a).find(i=>i.name===t);if(!s)return!1;let o=s.validations?.some(i=>i.type==="required")||!1;if(!s.dependencies)return o;let n=this.conditionEngine.evaluateDependencies(s.dependencies,this.state.values);return this.dependencyCache.set(t,n),n.required||o}getDependentFields(t){return Array.from(this.fieldDependencies.get(t)||[])}};var er=new Set(["p","br","b","i","em","strong","u","s","h1","h2","h3","h4","h5","h6","ul","ol","li","a","span","div","code","pre","blockquote","table","thead","tbody","tr","th","td","img","hr"]),tr=new Set(["href","src","alt","title","class","id","target","rel","width","height"]),rr=["javascript:","data:","vbscript:"];function se(l){let t=new DOMParser().parseFromString(l,"text/html");function e(r){if(r.nodeType===Node.TEXT_NODE)return r.textContent||"";if(r.nodeType!==Node.ELEMENT_NODE)return"";let s=r,o=s.tagName.toLowerCase();if(!er.has(o))return s.textContent||"";let n=`<${o}`;for(let i of Array.from(s.attributes)){let d=i.name.toLowerCase(),c=i.value;if(d==="href"||d==="src"){let p=c.toLowerCase().trim();if(rr.some(m=>p.startsWith(m)))continue}d.startsWith("on")||d==="style"||tr.has(d)&&(n+=` ${d}="${ar(c)}"`)}n+=">";for(let i of Array.from(s.childNodes))n+=e(i);return["img","br","hr","input"].includes(o)||(n+=`</${o}>`),n}let a="";for(let r of Array.from(t.body.childNodes))a+=e(r);return a}function ar(l){return l.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}var v=class{constructor(t,e,a,r,s){this.field=t,this.value=e,this.error=a,this.onChange=r,this.onBlur=s}cleanup(){}createInputWithSlots(t){let e=this.field.leadingIcon,a=this.field.trailingIcon;if(!e&&!a)return t;let r=document.createElement("div");if(r.className="easy-form-input-wrapper",e&&this.isSlotContentValid(e)){let o=this.renderSlotContent(e);o.className="easy-form-input-slot easy-form-input-slot-leading",r.appendChild(o)}let s=document.createElement("div");if(s.className="easy-form-input-core",s.appendChild(t),r.appendChild(s),a&&this.isSlotContentValid(a)){let o=this.renderSlotContent(a);o.className="easy-form-input-slot easy-form-input-slot-trailing",r.appendChild(o)}return r}isSlotContentValid(t){return t.type?t.type==="image"?!!t.src:t.type==="html"?!!t.html:!1:!1}renderSlotContent(t){let e=document.createElement("span");if(e.className="easy-form-input-slot-content",t.type==="image"&&t.src){let a=document.createElement("img");a.src=t.src,a.alt=t.alt??"",a.setAttribute("aria-hidden","true"),e.appendChild(a)}else t.type==="html"&&t.html&&(e.innerHTML=se(t.html));return e}createFieldContainer(t){let e=document.createElement("div"),r=Array.from(t.classList).filter(u=>u.startsWith("easy-form-")&&u!=="easy-form-field"&&(u.includes("-container")||u.includes("-wrapper"))),s=this.field.labelPosition??"up",o=this.createInputWithSlots(t);if(r.length>0?e.className=`easy-form-field easy-form-label-${s} ${r.join(" ")}`:e.className=`easy-form-field easy-form-label-${s}`,s==="none"&&this.field.label){let u=o.querySelector("input, textarea, select")||o;u instanceof HTMLElement&&u.setAttribute("aria-label",this.field.label)}let i=(()=>{if(!this.field.label||s==="none")return null;let u=document.createElement("label");if(u.className="easy-form-label",u.setAttribute("for",this.getFieldId()),u.textContent=this.field.label,this.field.validations?.some(f=>f.type==="required")){let f=document.createElement("span");f.className="easy-form-required",f.textContent=" *",u.appendChild(f)}return u})();if(s==="up")i&&e.appendChild(i),e.appendChild(o);else if(s==="down")e.appendChild(o),i&&e.appendChild(i);else if(s==="left"){let u=document.createElement("div");u.className="easy-form-field-inner easy-form-field-inner-horizontal",i&&u.appendChild(i),u.appendChild(o),e.appendChild(u)}else if(s==="right"){let u=document.createElement("div");u.className="easy-form-field-inner easy-form-field-inner-horizontal",u.appendChild(o),i&&u.appendChild(i),e.appendChild(u)}else e.appendChild(o);let d=this.getFieldId(),c=`${d}-description`,p=`${d}-error`,m=[];if(this.field.description){let u=document.createElement("p");u.className="easy-form-description",u.id=c,u.textContent=this.field.description,e.appendChild(u),m.push(c)}if(this.error){let u=document.createElement("p");u.className="easy-form-error",u.id=p,u.textContent=this.error,e.appendChild(u),m.push(p)}return o instanceof HTMLElement&&(this.error&&o.setAttribute("aria-invalid","true"),this.field.validations?.some(f=>f.type==="required")&&o.setAttribute("aria-required","true"),m.length>0&&o.setAttribute("aria-describedby",m.join(" "))),e}getFieldId(){return`easy-form-${this.field.name}`}applyCommonProps(t){if(t.id=this.getFieldId(),t.setAttribute("name",this.field.name),this.field.disabled&&(t.setAttribute("disabled","true"),t.classList.add("easy-form-input-disabled")),this.field.hidden&&(t.style.display="none",t.classList.add("easy-form-field-hidden")),this.error&&t.classList.add("easy-form-input-error"),this.field.props)for(let[e,a]of Object.entries(this.field.props))(e.startsWith("data-")||e.startsWith("aria-"))&&t.setAttribute(e,String(a))}};function xt(l){let t=[];for(let e=0;e<l.length;e++){let a=l[e];switch(a){case"9":t.push({type:"digit",char:"9",editable:!0});break;case"a":case"A":t.push({type:"letter",char:a,editable:!0});break;case"*":t.push({type:"any",char:"*",editable:!0});break;default:t.push({type:"literal",char:a,editable:!1});break}}return t}function Y(l,t){let e="",a=0;for(let r of t){if(!r.editable){e+=r.char;continue}if(a>=l.length)break;let s=l[a];if(!(r.type==="digit"&&!/\d/.test(s))){{if(r.type==="letter"&&!/[a-zA-Z]/.test(s))continue;if(r.type==="literal"&&s!==r.char)continue}e+=s,a++}}return e}function Be(l,t){if(!l)return"";let e="",a=0;for(let r=0;r<l.length&&a<t.length;r++){let s=l[r],o=t[a];if(o.editable)o.type==="digit"&&/\d/.test(s)||o.type==="letter"&&/[a-zA-Z]/.test(s)||o.type==="any"?(e+=s,a++):(a++,r--);else if(s===o.char)a++;else if(a<t.length-1){let n=t[a+1];n&&n.editable&&(n.type==="digit"&&/\d/.test(s)||n.type==="letter"&&/[a-zA-Z]/.test(s)||n.type==="any")?(e+=s,a+=2):a++}else break}return e}function oe(l,t,e="forward"){if(e==="forward"){for(let a=l+1;a<t.length;a++)if(t[a].editable)return a;return t.length}else{for(let a=l-1;a>=0;a--)if(t[a].editable)return a;return 0}}function wt(l,t="_"){return l.map(e=>e.editable?t:e.char).join("")}function kt(l,t,e,a){let r=0;for(let o=0;o<Math.min(e,l.length);o++){let n=o;n<a.length&&a[n].editable&&r++}let s=0;for(let o=0;o<t.length&&o<a.length;o++)if(a[o].editable&&(s++,s>r))return o+1;return oe(Math.min(e,t.length-1),a,"forward")}var B=class{constructor(){this.tokenCache=new Map}getCustomMask(t){return t.custom?t.custom:t.type?Ve(t.type):null}getTokens(t){let e=this.getCustomMask(t);if(!e)return null;let a=e.pattern;if(this.tokenCache.has(a))return this.tokenCache.get(a);let r=xt(e.pattern);return this.tokenCache.set(a,r),r}applyMask(t,e){let a=this.getTokens(e);if(!a)return t;let r=this.getCustomMask(e),s=a.filter(d=>d.editable),o=new Set(s.map(d=>d.type)),n="";for(let d of t)(o.has("any")||o.has("digit")&&/\d/.test(d)||o.has("letter")&&/[a-zA-Z]/.test(d))&&(n+=d);let i=Y(n,a);return r.transform&&(i=r.transform(i),i=Y(i,a)),i}removeMask(t,e){let a=this.getTokens(e);return a?Be(t,a):t}getMaskPlaceholder(t){let e=this.getTokens(t);if(!e)return"";let a=this.getCustomMask(t);return wt(e,a.placeholder||"_")}canInsertChar(t,e,a){let r=this.getTokens(a);if(!r||e>=r.length)return!1;let s=r[e];if(!s.editable)return!1;switch(s.type){case"digit":return/\d/.test(t);case"letter":return/[a-zA-Z]/.test(t);case"any":return!0;default:return!1}}processInput(t,e,a,r){let s=this.getTokens(a);if(!s)return{value:t,cursorPosition:t.length};let o=Be(t,s),n=Y(o,s),i=this.getCustomMask(a);i.transform&&(n=i.transform(n),n=Y(n,s));let d=kt(e,n,r,s);return{value:n,cursorPosition:Math.min(d,n.length)}}processKeyInput(t,e,a,r,s=!1){let o=this.getTokens(r);if(!o)return{value:e,cursorPosition:a};if(s){if(a===0)return{value:e,cursorPosition:0};let n=oe(a-1,o,"backward"),i=e.substring(0,n),d=e.substring(a),c=i+d,p=this.removeMask(c,r),m=this.applyMask(p,r),u=Math.max(0,n-1),f=oe(u,o,"forward");return{value:m,cursorPosition:f}}if(t.length===1&&this.canInsertChar(t,a,r)){let n=e.substring(0,a),i=e.substring(a),d=n+t+i;return this.processInput(d,e,r,a)}return{value:e,cursorPosition:a}}};var ie=class extends v{constructor(e,a,r,s,o){super(e,a,r,s,o);this.maskEngine=null;this.previousValue="";this.focusTimeout=null;e.mask&&(this.maskEngine=new B)}cleanup(){this.focusTimeout&&(clearTimeout(this.focusTimeout),this.focusTimeout=null)}render(){let e=document.createElement("input");e.type=this.field.type==="email"?"email":this.field.type==="password"?"password":"text";let a=this.value??"";if(this.maskEngine&&this.field.mask&&(a&&(a=this.maskEngine.applyMask(String(a),this.field.mask)),this.previousValue=a),e.value=a,this.applyCommonProps(e),this.field.placeholder)e.placeholder=this.field.placeholder;else if(this.maskEngine&&this.field.mask){let r=this.maskEngine.getMaskPlaceholder(this.field.mask);r&&(e.placeholder=r)}return this.maskEngine&&this.field.mask?(e.addEventListener("input",r=>{let s=r.target,o=s.selectionStart||0,n=s.value,i=this.maskEngine.processInput(n,this.previousValue,this.field.mask,o);s.value=i.value,this.previousValue=i.value,setTimeout(()=>{s.setSelectionRange(i.cursorPosition,i.cursorPosition)},0);let d=this.field.mask.keepFormat?i.value:this.maskEngine.removeMask(i.value,this.field.mask);this.onChange(d)}),e.addEventListener("keydown",r=>{let s=r.target,o=s.selectionStart||0;if(r.key==="Backspace"||r.key==="Delete"){r.preventDefault();let n=r.key==="Backspace",i=this.maskEngine.processKeyInput("",s.value,o,this.field.mask,n);s.value=i.value,this.previousValue=i.value,setTimeout(()=>{s.setSelectionRange(i.cursorPosition,i.cursorPosition)},0);let d=this.field.mask.keepFormat?i.value:this.maskEngine.removeMask(i.value,this.field.mask);this.onChange(d)}}),e.addEventListener("paste",r=>{r.preventDefault();let s=(r.clipboardData||window.clipboardData).getData("text");if(s){let o=r.target,n=o.selectionStart||0,i=o.value.substring(0,n),d=o.value.substring(n),c=i+s+d,p=this.maskEngine.processInput(c,this.previousValue,this.field.mask,n);o.value=p.value,this.previousValue=p.value,setTimeout(()=>{o.setSelectionRange(p.cursorPosition,p.cursorPosition)},0);let m=this.field.mask.keepFormat?p.value:this.maskEngine.removeMask(p.value,this.field.mask);this.onChange(m)}})):e.addEventListener("input",r=>{let s=r.target;this.onChange(s.value)}),e.addEventListener("blur",()=>{this.onBlur()}),this.createFieldContainer(e)}};var ne=class extends v{constructor(e,a,r,s,o){super(e,a,r,s,o);this.maskEngine=null;this.previousValue="";e.mask&&(this.maskEngine=new B)}cleanup(){}render(){let e=document.createElement("input");if(this.maskEngine&&this.field.mask){e.type="text";let r=this.value??"";r!==null&&r!==""&&(this.field.mask.type==="currency"?r=this.maskEngine.applyMask(String(r),this.field.mask):this.field.mask.type==="percentage"&&(r=this.maskEngine.applyMask(String(r),this.field.mask))),this.previousValue=r,e.value=r}else e.type="number",e.value=this.value??"";let a=this.field;if(!this.maskEngine&&e.type==="number"&&(a.min!==void 0&&(e.min=String(a.min)),a.max!==void 0&&(e.max=String(a.max)),a.step!==void 0&&(e.step=String(a.step))),this.applyCommonProps(e),this.field.placeholder)e.placeholder=this.field.placeholder;else if(this.maskEngine&&this.field.mask){let r=this.maskEngine.getMaskPlaceholder(this.field.mask);r&&(e.placeholder=r)}return this.maskEngine&&this.field.mask?(e.addEventListener("input",r=>{let s=r.target,o=s.selectionStart||0,n=s.value,i=this.maskEngine.processInput(n,this.previousValue,this.field.mask,o);s.value=i.value,this.previousValue=i.value,setTimeout(()=>{s.setSelectionRange(i.cursorPosition,i.cursorPosition)},0);let d=null;if(this.field.mask.type==="currency"){let c=this.maskEngine.removeMask(i.value,this.field.mask);d=c?parseFloat(c.replace(/[^\d.]/g,"")):null}else if(this.field.mask.type==="percentage"){let c=this.maskEngine.removeMask(i.value,this.field.mask);d=c?parseFloat(c):null}this.onChange(d)}),e.addEventListener("keydown",r=>{let s=r.target,o=s.selectionStart||0;if(r.key==="Backspace"||r.key==="Delete"){r.preventDefault();let n=r.key==="Backspace",i=this.maskEngine.processKeyInput("",s.value,o,this.field.mask,n);s.value=i.value,this.previousValue=i.value,setTimeout(()=>{s.setSelectionRange(i.cursorPosition,i.cursorPosition)},0);let d=null;if(this.field.mask.type==="currency"){let c=this.maskEngine.removeMask(i.value,this.field.mask);d=c?parseFloat(c.replace(/[^\d.]/g,"")):null}else if(this.field.mask.type==="percentage"){let c=this.maskEngine.removeMask(i.value,this.field.mask);d=c?parseFloat(c):null}this.onChange(d)}}),e.addEventListener("paste",r=>{r.preventDefault();let s=(r.clipboardData||window.clipboardData).getData("text");if(s){let o=r.target,n=o.selectionStart||0,i=o.value.substring(0,n),d=o.value.substring(n),c=i+s+d,p=this.maskEngine.processInput(c,this.previousValue,this.field.mask,n);o.value=p.value,this.previousValue=p.value,setTimeout(()=>{o.setSelectionRange(p.cursorPosition,p.cursorPosition)},0);let m=null;if(this.field.mask.type==="currency"){let u=this.maskEngine.removeMask(p.value,this.field.mask);m=u?parseFloat(u.replace(/[^\d.]/g,"")):null}else if(this.field.mask.type==="percentage"){let u=this.maskEngine.removeMask(p.value,this.field.mask);m=u?parseFloat(u):null}this.onChange(m)}})):e.addEventListener("input",r=>{let s=r.target,o=s.value===""?null:Number(s.value);this.onChange(o)}),e.addEventListener("blur",()=>{this.onBlur()}),this.createFieldContainer(e)}};var le=class extends v{render(){let t=document.createElement("textarea");t.value=this.value??"",t.placeholder=this.field.placeholder||"";let e=this.field;return e.rows&&(t.rows=e.rows),e.cols&&(t.cols=e.cols),this.applyCommonProps(t),t.addEventListener("input",a=>{let r=a.target;this.onChange(r.value)}),t.addEventListener("blur",()=>{this.onBlur()}),this.createFieldContainer(t)}};var de=class extends v{render(){let t=document.createElement("select"),e=this.field;if(e.multiple&&(t.multiple=!0),!e.multiple){let r=document.createElement("option");r.value="",r.textContent=e.placeholder||"Selecciona una opci\xF3n",r.setAttribute("data-placeholder",""),r.disabled=!0,t.appendChild(r)}for(let r of e.options){let s=document.createElement("option");typeof r=="string"?(s.value=r,s.textContent=r):(s.value=String(r.value),s.textContent=r.label),t.appendChild(s)}if(e.multiple&&Array.isArray(this.value))for(let r of t.options)r.selected=this.value.includes(r.value);else t.value=this.value??"";this.applyCommonProps(t);let a=()=>{!t.value?t.classList.add("easy-form-select-placeholder"):t.classList.remove("easy-form-select-placeholder")};return a(),t.addEventListener("change",r=>{let s=r.target;if(a(),e.multiple){let o=Array.from(s.selectedOptions).map(n=>n.value);this.onChange(o)}else this.onChange(s.value||null)}),t.addEventListener("blur",()=>{this.onBlur()}),this.createFieldContainer(t)}};var ce=class extends v{render(){let t=document.createElement("input");t.type="checkbox",t.checked=!!this.value,this.applyCommonProps(t),t.addEventListener("change",r=>{let s=r.target;this.onChange(s.checked)}),t.addEventListener("blur",()=>{this.onBlur()});let e=document.createElement("div");e.className="easy-form-field";let a=document.createElement("label");if(a.className="easy-form-label-checkbox",a.setAttribute("for",this.getFieldId()),a.appendChild(t),this.field.label){let r=document.createTextNode(this.field.label);a.appendChild(r)}if(e.appendChild(a),this.field.description){let r=document.createElement("p");r.className="easy-form-description",r.textContent=this.field.description,e.appendChild(r)}if(this.error){let r=document.createElement("p");r.className="easy-form-error",r.textContent=this.error,e.appendChild(r)}return e}};var me=class extends v{render(){let t=document.createElement("div");if(t.className="easy-form-field",this.field.label){let r=document.createElement("label");if(r.className="easy-form-label",r.textContent=this.field.label,this.field.validations?.some(s=>s.type==="required")){let s=document.createElement("span");s.className="easy-form-required",s.textContent=" *",r.appendChild(s)}t.appendChild(r)}let e=document.createElement("div");e.className="easy-form-radio-group";let a=this.field;for(let r of a.options){let s=typeof r=="string"?r:r.value,o=typeof r=="string"?r:r.label,n=document.createElement("div");n.className="easy-form-radio-option";let i=document.createElement("input");i.type="radio",i.name=this.field.name,i.id=`${this.getFieldId()}-${s}`,i.value=String(s),i.checked=String(this.value)===String(s),this.field.disabled&&(i.disabled=!0);let d=document.createElement("label");d.setAttribute("for",i.id),d.textContent=o,d.className="easy-form-radio-label",i.addEventListener("change",()=>{this.onChange(s)}),i.addEventListener("blur",()=>{this.onBlur()}),n.appendChild(i),n.appendChild(d),e.appendChild(n)}if(t.appendChild(e),this.field.description){let r=document.createElement("p");r.className="easy-form-description",r.textContent=this.field.description,t.appendChild(r)}if(this.error){let r=document.createElement("p");r.className="easy-form-error",r.textContent=this.error,t.appendChild(r)}return t}};var pe=class extends v{render(){let t=document.createElement("input");t.type="checkbox",t.className="easy-form-switch",t.checked=!!this.value,this.applyCommonProps(t),t.addEventListener("change",r=>{let s=r.target;this.onChange(s.checked)}),t.addEventListener("blur",()=>{this.onBlur()});let e=document.createElement("div");e.className="easy-form-field";let a=document.createElement("label");if(a.className="easy-form-label-switch",a.setAttribute("for",this.getFieldId()),this.field.label){let r=document.createTextNode(this.field.label);a.appendChild(r)}if(a.appendChild(t),e.appendChild(a),this.field.description){let r=document.createElement("p");r.className="easy-form-description",r.textContent=this.field.description,e.appendChild(r)}if(this.error){let r=document.createElement("p");r.className="easy-form-error",r.textContent=this.error,e.appendChild(r)}return e}};var ue=class extends v{render(){let t=document.createElement("input");t.type="date";let e=this.field;if(e.min&&(t.min=e.min),e.max&&(t.max=e.max),this.value){let a=this.value instanceof Date?this.value.toISOString().split("T")[0]:String(this.value);t.value=a}return this.applyCommonProps(t),t.addEventListener("change",a=>{let r=a.target;this.onChange(r.value||null)}),t.addEventListener("blur",()=>{this.onBlur()}),this.createFieldContainer(t)}};var fe=class extends v{render(){let t=document.createElement("input");t.type="file";let e=this.field;return e.accept&&(t.accept=e.accept),e.multiple&&(t.multiple=!0),this.applyCommonProps(t),t.addEventListener("change",a=>{let r=a.target;r.files&&(e.multiple?this.onChange(Array.from(r.files)):this.onChange(r.files[0]||null))}),t.addEventListener("blur",()=>{this.onBlur()}),this.createFieldContainer(t)}};var he=class extends v{render(){let t=document.createElement("div");t.className="easy-form-quantity-container";let e=this.field,a=e.min??0,r=e.max??void 0,s=e.step??1,o=this.value??a,n=document.createElement("div");n.className="easy-form-quantity-wrapper";let i=document.createElement("button");i.type="button",i.className="easy-form-quantity-btn easy-form-quantity-decrement",i.textContent="\u2212",i.setAttribute("aria-label","Decrementar"),o<=a&&(i.disabled=!0,i.classList.add("disabled"));let d=document.createElement("input");d.type="number",d.value=String(o),d.min=String(a),r!==void 0&&(d.max=String(r)),d.step=String(s),d.className="easy-form-quantity-input",this.applyCommonProps(d);let c=document.createElement("button");c.type="button",c.className="easy-form-quantity-btn easy-form-quantity-increment",c.textContent="+",c.setAttribute("aria-label","Incrementar"),r!==void 0&&o>=r&&(c.disabled=!0,c.classList.add("disabled")),i.addEventListener("click",()=>{let m=Math.max(a,Number(d.value)-s);d.value=String(m),this.onChange(m),p()}),c.addEventListener("click",()=>{let m=r!==void 0?Math.min(r,Number(d.value)+s):Number(d.value)+s;d.value=String(m),this.onChange(m),p()}),d.addEventListener("input",m=>{let u=m.target,f=Number(u.value);isNaN(f)&&(f=a),f<a&&(f=a),r!==void 0&&f>r&&(f=r),u.value=String(f),this.onChange(f),p()}),d.addEventListener("blur",()=>{this.onBlur()});let p=()=>{let m=Number(d.value);i.disabled=m<=a,i.classList.toggle("disabled",m<=a),r!==void 0?(c.disabled=m>=r,c.classList.toggle("disabled",m>=r)):(c.disabled=!1,c.classList.remove("disabled"))};return n.appendChild(i),n.appendChild(d),n.appendChild(c),t.appendChild(n),this.createFieldContainer(t)}};var ge=class extends v{render(){let t=document.createElement("div");t.className="easy-form-accordion-select-container";let e=this.field,a=this.value??null;return e.options.forEach(r=>{let s=typeof r=="string"?r:r.value,o=typeof r=="string"?r:r.label,n=typeof r=="object"&&"description"in r&&r.description?r.description:void 0,i=document.createElement("div");i.className="easy-form-accordion-item",i.setAttribute("data-value",String(s)),(a===s||Array.isArray(a)&&a.includes(s))&&i.classList.add("selected");let d=document.createElement("div");d.className="easy-form-accordion-header",d.setAttribute("role","button"),d.setAttribute("tabindex","0"),d.setAttribute("aria-expanded","false");let c=document.createElement("div");c.className="easy-form-accordion-header-content";let p=document.createElement("div");p.className="easy-form-accordion-indicator",e.multiple?(p.classList.add("checkbox"),Array.isArray(a)&&a.includes(s)&&p.classList.add("checked")):(p.classList.add("radio"),a===s&&p.classList.add("checked"));let m=document.createElement("span");m.className="easy-form-accordion-label",m.textContent=o;let u=document.createElement("span");u.className="easy-form-accordion-arrow",u.textContent="\u25BC",c.appendChild(p),c.appendChild(m),d.appendChild(c),d.appendChild(u);let f=document.createElement("div");if(f.className="easy-form-accordion-content",n){let g=document.createElement("p");g.className="easy-form-accordion-description",g.textContent=n,f.appendChild(g)}if(typeof r=="object"&&"content"in r&&r.content){let g=document.createElement("div");g.className="easy-form-accordion-custom-content",typeof r.content=="string"?g.textContent=r.content:r.content instanceof HTMLElement&&g.appendChild(r.content),f.appendChild(g)}i.appendChild(d),i.appendChild(f);let b=()=>{let g=i.classList.contains("open");e.multiple||t.querySelectorAll(".easy-form-accordion-item").forEach(y=>{if(y!==i){y.classList.remove("open");let E=y.querySelector(".easy-form-accordion-header"),S=y.querySelector(".easy-form-accordion-content"),x=y.querySelector(".easy-form-accordion-arrow");E&&E.setAttribute("aria-expanded","false"),S&&(S.style.maxHeight=""),x&&(x.style.transform="rotate(0deg)")}}),g?(i.classList.remove("open"),d.setAttribute("aria-expanded","false"),f.style.maxHeight="",u.style.transform="rotate(0deg)"):(i.classList.add("open"),d.setAttribute("aria-expanded","true"),f.style.maxHeight=f.scrollHeight+"px",u.style.transform="rotate(180deg)")},h=()=>{if(e.multiple){let g=Array.isArray(a)?[...a]:[],y=g.indexOf(s);y>-1?(g.splice(y,1),i.classList.remove("selected"),p.classList.remove("checked")):(g.push(s),i.classList.add("selected"),p.classList.add("checked")),this.onChange(g.length>0?g:null)}else t.querySelectorAll(".easy-form-accordion-item").forEach(g=>{g.classList.remove("selected");let y=g.querySelector(".easy-form-accordion-indicator");y&&y.classList.remove("checked")}),i.classList.add("selected"),p.classList.add("checked"),this.onChange(s)};d.addEventListener("click",g=>{g.stopPropagation(),h(),b()}),d.addEventListener("keydown",g=>{(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),h(),b())}),(a===s||Array.isArray(a)&&a.includes(s))&&(!e.multiple||e.autoExpand)&&setTimeout(()=>{i.classList.add("open"),d.setAttribute("aria-expanded","true"),f.style.maxHeight=f.scrollHeight+"px",u.style.transform="rotate(180deg)"},0),t.appendChild(i)}),this.createFieldContainer(t)}};var be=class extends v{render(){let t=document.createElement("div");t.className="easy-form-image-grid-container";let e=this.field,a=this.value??null,r=e.columns??3,s=e.imageSize??"medium";return t.style.gridTemplateColumns=`repeat(${r}, 1fr)`,t.style.gap=e.gap??"1rem",e.options.forEach(o=>{let n=typeof o=="string"?o:o.value,i=typeof o=="string"?o:o.label,d=typeof o=="object"&&"image"in o&&o.image?o.image:void 0,c=typeof o=="object"&&"description"in o&&o.description?o.description:void 0,p=document.createElement("div");p.className=`easy-form-image-grid-item easy-form-image-grid-${s}`,p.setAttribute("data-value",String(n)),p.setAttribute("role","button"),p.setAttribute("tabindex","0"),p.setAttribute("aria-label",i),(a===n||Array.isArray(a)&&a.includes(n))&&p.classList.add("selected");let m=document.createElement("div");if(m.className="easy-form-image-grid-image-container",d){let h=document.createElement("img");h.src=d,h.alt=i,h.className="easy-form-image-grid-image",m.appendChild(h)}else{let h=document.createElement("div");h.className="easy-form-image-grid-placeholder",h.textContent=i.charAt(0).toUpperCase(),m.appendChild(h)}let u=document.createElement("div");u.className="easy-form-image-grid-indicator",e.multiple?(u.classList.add("checkbox"),Array.isArray(a)&&a.includes(n)&&(u.classList.add("checked"),u.innerHTML="\u2713")):(u.classList.add("radio"),a===n&&(u.classList.add("checked"),u.innerHTML="\u25CF")),m.appendChild(u);let f=document.createElement("div");if(f.className="easy-form-image-grid-label",f.textContent=i,c){let h=document.createElement("div");h.className="easy-form-image-grid-description",h.textContent=c,p.appendChild(h)}p.appendChild(m),p.appendChild(f);let b=()=>{if(e.multiple){let h=Array.isArray(a)?[...a]:[],g=h.indexOf(n);g>-1?(h.splice(g,1),p.classList.remove("selected"),u.classList.remove("checked"),u.innerHTML=""):(h.push(n),p.classList.add("selected"),u.classList.add("checked"),u.innerHTML="\u2713"),this.onChange(h.length>0?h:null)}else t.querySelectorAll(".easy-form-image-grid-item").forEach(h=>{h.classList.remove("selected");let g=h.querySelector(".easy-form-image-grid-indicator");g&&(g.classList.remove("checked"),g.innerHTML="")}),p.classList.add("selected"),u.classList.add("checked"),u.innerHTML="\u25CF",this.onChange(n)};p.addEventListener("click",b),p.addEventListener("keydown",h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),b())}),p.addEventListener("blur",()=>{this.onBlur()}),t.appendChild(p)}),this.createFieldContainer(t)}};var ye=class extends v{constructor(){super(...arguments);this.inputs=[]}render(){let e=document.createElement("div");e.className="easy-form-otp-container";let r=this.field.length??6,s=this.value??"",o=String(s).padStart(r,"").slice(0,r);for(let n=0;n<r;n++){let i=document.createElement("input");i.type="text",i.inputMode="numeric",i.maxLength=1,i.className="easy-form-otp-input",i.setAttribute("aria-label",`C\xF3digo d\xEDgito ${n+1}`),o[n]&&(i.value=o[n]),this.applyCommonProps(i),i.id=`${this.getFieldId()}-${n}`;let d=n;i.addEventListener("input",c=>{let p=c.target,m=p.value.replace(/[^0-9]/g,"");p.value=m,m&&d<r-1&&this.inputs[d+1].focus(),this.updateOTPValue()}),i.addEventListener("keydown",c=>{let p=c.target;c.key==="Backspace"&&!p.value&&d>0&&(this.inputs[d-1].focus(),this.inputs[d-1].value="",this.updateOTPValue()),c.key==="ArrowLeft"&&d>0&&(c.preventDefault(),this.inputs[d-1].focus()),c.key==="ArrowRight"&&d<r-1&&(c.preventDefault(),this.inputs[d+1].focus())}),i.addEventListener("paste",c=>{c.preventDefault();let m=(c.clipboardData||window.clipboardData).getData("text").replace(/[^0-9]/g,"").slice(0,r);for(let f=0;f<m.length&&d+f<r;f++)this.inputs[d+f].value=m[f];let u=Math.min(d+m.length,r-1);this.inputs[u].focus(),this.updateOTPValue()}),i.addEventListener("focus",c=>{c.target.select()}),i.addEventListener("blur",()=>{this.onBlur()}),this.inputs.push(i),e.appendChild(i)}return this.createFieldContainer(e)}updateOTPValue(){let e=this.inputs.map(s=>s.value).join(""),a=this.field,r=e.length===this.inputs.length?e:null;a.numeric&&r?this.onChange(Number(r)):this.onChange(r)}};var sr=6;function ve(l){return l?'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"/><line x1="1" y1="1" x2="23" y2="23"/></svg>':'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>'}var xe=class extends v{constructor(){super(...arguments);this.inputs=[];this.visible=!1}get passwordField(){return this.field}render(){let e=this.passwordField,a=!!e.characterSeparated,r=a?typeof e.characterSeparated=="number"?e.characterSeparated:sr:0;return a?this.createFieldContainer(this.renderSeparated(r)):this.createFieldContainer(this.renderSingle())}renderSingle(){let a=!!this.passwordField.showToggle,r=document.createElement("input");if(r.type="password",r.value=this.value??"",r.id=this.getFieldId(),this.applyCommonProps(r),this.field.placeholder&&(r.placeholder=this.field.placeholder),r.addEventListener("input",n=>{this.onChange(n.target.value)}),r.addEventListener("blur",()=>this.onBlur()),!a)return r;let s=document.createElement("div");s.className="easy-form-password-inner",r.classList.add("easy-form-password-input"),s.appendChild(r);let o=document.createElement("button");return o.type="button",o.className="easy-form-password-toggle",o.setAttribute("aria-label","Mostrar contrase\xF1a"),o.innerHTML=ve(!1),o.addEventListener("click",()=>{this.visible=!this.visible,r.type=this.visible?"text":"password",o.setAttribute("aria-label",this.visible?"Ocultar contrase\xF1a":"Mostrar contrase\xF1a"),o.innerHTML=ve(this.visible)}),s.appendChild(o),s}renderSeparated(e){let r=!!this.passwordField.showToggle,s=this.value??"",o=String(s).slice(0,e),n=document.createElement("div");n.className="easy-form-password-separated";for(let i=0;i<e;i++){let d=document.createElement("input");d.type="password",d.maxLength=1,d.className="easy-form-password-separated-input",d.setAttribute("aria-label",`Car\xE1cter ${i+1} de ${e}`),o[i]&&(d.value=o[i]),this.applyCommonProps(d),d.id=i===0?this.getFieldId():`${this.getFieldId()}-${i}`,i>0&&d.removeAttribute("name");let c=i;d.addEventListener("input",p=>{p.target.value&&c<e-1&&this.inputs[c+1].focus(),this.updateSeparatedValue()}),d.addEventListener("keydown",p=>{p.key==="Backspace"&&!p.target.value&&c>0&&(this.inputs[c-1].focus(),this.inputs[c-1].value="",this.updateSeparatedValue()),p.key==="ArrowLeft"&&c>0&&(p.preventDefault(),this.inputs[c-1].focus()),p.key==="ArrowRight"&&c<e-1&&(p.preventDefault(),this.inputs[c+1].focus())}),d.addEventListener("paste",p=>{p.preventDefault();let u=((p.clipboardData||window.clipboardData)?.getData("text")||"").slice(0,e-c).split("");for(let b=0;b<u.length&&c+b<e;b++)this.inputs[c+b].value=u[b];let f=Math.min(c+u.length,e-1);this.inputs[f].focus(),this.updateSeparatedValue()}),d.addEventListener("focus",p=>p.target.select()),d.addEventListener("blur",()=>this.onBlur()),this.inputs.push(d),n.appendChild(d)}if(r){let i=document.createElement("div");i.className="easy-form-password-separated-toggle";let d=document.createElement("button");d.type="button",d.className="easy-form-password-toggle",d.setAttribute("aria-label","Mostrar contrase\xF1a"),d.innerHTML=ve(!1),d.addEventListener("click",()=>{this.visible=!this.visible;let c=this.visible?"text":"password";this.inputs.forEach(p=>{p.type=c}),d.setAttribute("aria-label",this.visible?"Ocultar contrase\xF1a":"Mostrar contrase\xF1a"),d.innerHTML=ve(this.visible)}),i.appendChild(d),n.appendChild(i)}return n}updateSeparatedValue(){let e=this.inputs.map(a=>a.value).join("");this.onChange(e||null)}};var we=class extends v{render(){let t=this.field,e=t.accept??"",a=t.multiple??!1,r=document.createElement("div");r.className="easy-form-file-drop",r.setAttribute("tabindex","0");let s=document.createElement("input");s.type="file",s.className="easy-form-file-drop-input",s.style.display="none",e&&(s.accept=e),a&&(s.multiple=!0);let o=document.createElement("span");o.className="easy-form-file-drop-label",o.textContent="Arrastra archivos aqu\xED o haz clic para seleccionar",r.appendChild(o),r.appendChild(s);let n=document.createElement("div");n.className="easy-form-file-drop-list";let i=c=>{let p=c?Array.isArray(c)?c.map(m=>m.name):[c.name]:[];if(n.innerHTML="",p.length===0){n.style.display="none";return}n.style.display="block",p.forEach(m=>{let u=document.createElement("div");u.className="easy-form-file-drop-item",u.textContent=m,n.appendChild(u)})};i(this.value);let d=c=>{if(!c||c.length===0)return;let p=a?Array.from(c):c[0];this.onChange(p),this.onBlur(),i(p)};return r.addEventListener("click",()=>{s.click()}),s.addEventListener("change",c=>{let p=c.target;d(p.files),p.value=""}),r.addEventListener("dragover",c=>{c.preventDefault(),c.stopPropagation(),r.classList.add("easy-form-file-drop-over")}),r.addEventListener("dragleave",c=>{c.preventDefault(),c.stopPropagation(),r.classList.remove("easy-form-file-drop-over")}),r.addEventListener("drop",c=>{c.preventDefault(),c.stopPropagation(),r.classList.remove("easy-form-file-drop-over"),d(c.dataTransfer?.files??null)}),r.appendChild(n),this.createFieldContainer(r)}};var or="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css",ke=class extends v{constructor(){super(...arguments);this.mapInstance=null;this.markerInstance=null;this.invalidateSizeTimeout=null}cleanup(){this.invalidateSizeTimeout&&(clearTimeout(this.invalidateSizeTimeout),this.invalidateSizeTimeout=null),this.mapInstance&&(this.mapInstance.remove(),this.mapInstance=null),this.markerInstance=null}render(){let e=this.field,a=e.center??{lat:0,lng:0},r=e.zoom??13,s=this.value,o=typeof s=="object"&&s?.lat!=null?s.lat:a.lat,n=typeof s=="object"&&s?.lng!=null?s.lng:a.lng,i=document.createElement("div");i.className="easy-form-map";let d=document.createElement("div");d.className="easy-form-map-inputs";let c=document.createElement("input");c.type="number",c.step="any",c.placeholder="Latitud",c.value=String(o),c.className="easy-form-map-lat";let p=document.createElement("input");p.type="number",p.step="any",p.placeholder="Longitud",p.value=String(n),p.className="easy-form-map-lng";let m=()=>{let y=parseFloat(c.value),E=parseFloat(p.value);!isNaN(y)&&!isNaN(E)&&(this.onChange({lat:y,lng:E}),this.syncMarkerPosition(y,E)),this.onBlur()};c.addEventListener("change",m),p.addEventListener("change",m),d.appendChild(c),d.appendChild(p),i.appendChild(d);let u=document.createElement("div");u.className="easy-form-map-container",i.appendChild(u);let f="easy-form-leaflet-css",b=!1,h=document.createElement("link");return h.id=f,h.rel="stylesheet",h.href=or,h.onload=()=>{b=!0},i.insertBefore(h,i.firstChild),(async()=>{if(typeof window>"u")return;u.style.height="300px",u.style.width="100%",u.style.position="relative",u.style.overflow="hidden",u.style.display="block",await new Promise(w=>{let T=()=>{b&&u.offsetWidth>0&&u.offsetHeight>0?w(void 0):requestAnimationFrame(T)};T()}),await new Promise(w=>setTimeout(w,50));let y;try{y=await import("leaflet")}catch{u.innerHTML=`
3407
+ `}var bt=`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")`;function yt(){return`
3408
+ select:not([multiple]) {
3409
+ -webkit-appearance: none;
3410
+ -moz-appearance: none;
3411
+ appearance: none;
3412
+ font: inherit;
3413
+ font-size: inherit;
3414
+ line-height: inherit;
3415
+ background-image: ${bt};
3416
+ background-repeat: no-repeat;
3417
+ /* Misma zona de padding horizontal que el input + hueco para el chevron (1.25em) */
3418
+ background-position: right max(0.5rem, var(--easy-form-control-padding-inline)) center;
3419
+ background-size: 1em 1em;
3420
+ padding-inline-end: calc(var(--easy-form-control-padding-inline) + 1.25em);
3421
+ }
3422
+ /* Dentro del wrapper con iconos: el shorthand background:transparent !important lo anulaba */
3423
+ .easy-form-input-wrapper .easy-form-input-core select:not([multiple]) {
3424
+ background-image: ${bt} !important;
3425
+ background-repeat: no-repeat !important;
3426
+ background-position: right 0.125rem center;
3427
+ background-size: 1em 1em !important;
3428
+ padding-inline-end: calc(1.25em + 0.25rem) !important;
3429
+ }
3430
+ `}function ee(l,t){let e=st(t),a=er(l,t);return e+a+yt()}function er(l,t){switch(l){case"plano":return De(t);case"tradicional":return it(t);case"material":return nt(t);case"rounded-shadow":return lt(t);case"lines":return dt(t);case"shadcn":return ct(t);case"chakra":return mt(t);case"mantine":return pt(t);case"glass":return ut(t);case"bordered":return ft(t);case"minimal":return ht(t);case"efc":return gt(t);default:return De(t)}}var vt={phone:{pattern:"(999) 999-9999",placeholder:"_"},"phone-us":{pattern:"(999) 999-9999",placeholder:"_"},"phone-international":{pattern:"+99 999 999 9999",placeholder:"_"},date:{pattern:"99/99/9999",placeholder:"_"},"date-us":{pattern:"99/99/9999",placeholder:"_"},"date-eu":{pattern:"99-99-9999",placeholder:"_"},"credit-card":{pattern:"9999 9999 9999 9999",placeholder:"_"},ssn:{pattern:"999-99-9999",placeholder:"_"},"zip-code":{pattern:"99999",placeholder:"_"},currency:{pattern:"$999,999.99",placeholder:"_",transform:l=>{let t=l.replace(/[^\d.]/g,"");return(parseFloat(t)||0).toFixed(2)}},percentage:{pattern:"999%",placeholder:"_",transform:l=>l.replace(/[^\d]/g,"")},time:{pattern:"99:99",placeholder:"_"},datetime:{pattern:"99/99/9999 99:99",placeholder:"_"}};function Ve(l){return vt[l]}var te="El valor contiene caracteres o patrones no permitidos",tr=[/\b(union|select|insert|update|delete|drop|exec|execute|declare)\s+(all\s+)?(select|from|into|table)/i,/\b(or|and)\s+['"]?\d+['"]?\s*=\s*['"]?\d+/i,/;\s*(drop|delete|truncate|alter)\s+/i,/--\s*$/,/\/\*[\s\S]*\*\//,/'\s*or\s+'1'\s*=\s*'1/i,/"\s*or\s+"1"\s*=\s*"1/i,/\bexec\s*\(/i,/\bxp_\w+/i,/<script\b[\s\S]*?>[\s\S]*?<\/script>/i,/<script\b/i,/javascript\s*:/i,/vbscript\s*:/i,/on\w+\s*=\s*["'][^"']*["']/i,/on\w+\s*=\s*[^\s>]+/i,/<iframe\b/i,/<object\b/i,/<embed\b/i,/\beval\s*\(/i,/document\.(cookie|write|location)/i,/window\.(location|open|eval)/i,/[;&|]\s*(ls|cat|rm|wget|curl|nc|bash|sh|python|perl)\s/i,/\$\s*\([^)]+\)/,/`[^`]+`/,/\|\s*\w+/,/\$\s*where\b/i,/\$\s*gt\b|\$\s*ne\b|\$\s*regex\b/i,/\{\{[^}]*\}\}/,/\$\{[^}]*\}/];function xt(l){if(typeof l!="string"||l.length===0||l.trim().length===0)return!1;for(let e of tr)if(e.test(l))return!0;return!1}function j(l){return l==null?!0:typeof l=="string"?!xt(l):Array.isArray(l)?l.every(t=>j(t)):typeof l=="object"?Object.values(l).every(t=>j(t)):!0}var W=class{constructor(t){this.attempts=0;this.lockedUntil=null;this.unlockCheckInterval=null;this.maxAttempts=Math.max(1,t.maxAttempts),this.blockDurationMs=(t.blockDurationMinutes??5)*60*1e3,this.storageKey=t.storageKey,this.onLocked=t.onLocked,this.onUnlocked=t.onUnlocked,this.storageKey&&typeof sessionStorage<"u"&&this.loadFromStorage()}loadFromStorage(){if(!(!this.storageKey||typeof sessionStorage>"u"))try{let t=sessionStorage.getItem(this.storageKey);if(t){let e=JSON.parse(t);this.attempts=e.attempts??0,this.lockedUntil=e.lockedUntil??null,this.checkExpiration()}}catch{}}saveToStorage(){if(!(!this.storageKey||typeof sessionStorage>"u"))try{let t={attempts:this.attempts,lockedUntil:this.lockedUntil??void 0};sessionStorage.setItem(this.storageKey,JSON.stringify(t))}catch{}}checkExpiration(){return this.lockedUntil===null?!1:Date.now()>=this.lockedUntil?(this.reset(),this.onUnlocked?.(),!0):!1}startUnlockCheck(){this.unlockCheckInterval||(this.unlockCheckInterval=setInterval(()=>{this.checkExpiration()&&this.stopUnlockCheck()},1e3))}stopUnlockCheck(){this.unlockCheckInterval&&(clearInterval(this.unlockCheckInterval),this.unlockCheckInterval=null)}incrementAttempts(){this.attempts++,this.attempts>=this.maxAttempts?(this.lockedUntil=Date.now()+this.blockDurationMs,this.saveToStorage(),this.onLocked?.(this.blockDurationMs),this.startUnlockCheck()):this.saveToStorage()}isLocked(){return this.checkExpiration()?!1:this.lockedUntil!==null&&Date.now()<this.lockedUntil}getRemainingBlockTimeMs(){return this.checkExpiration()||this.lockedUntil===null?0:Math.max(0,this.lockedUntil-Date.now())}reset(){this.attempts=0,this.lockedUntil=null,this.stopUnlockCheck(),this.saveToStorage()}getAttempts(){return this.attempts}};function P(l){return l==null?"":typeof l=="boolean"?l?"true":"false":typeof l=="object"?JSON.stringify(l):String(l)}function $(l){if(!l)return null;try{return JSON.parse(l)}catch{return l}}function I(l,t){return t.split(".").reduce((e,a)=>e?.[a],l)}function D(l,t,e){let a=t.split("."),r=a.pop(),o=a.reduce((s,n)=>((!s[n]||typeof s[n]!="object")&&(s[n]={}),s[n]),l);o[r]=e}function kt(l){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(l)}var V=class{evaluateCondition(t,e){let a=this.getFieldValue(t.field,e);return this.compareValues(a,t.operator,t.value)}evaluateConditions(t,e,a="and"){let r=Array.isArray(t)?t:[t];return r.length===0?!0:a==="and"?r.every(o=>this.evaluateCondition(o,e)):r.some(o=>this.evaluateCondition(o,e))}evaluateDependencies(t,e){let a=!0,r=!0,o=!1;if(t.show&&(a=this.evaluateConditions(t.show,e)),t.hide){let s=this.evaluateConditions(t.hide,e);a=a&&!s}if(t.enable&&(r=this.evaluateConditions(t.enable,e)),t.disable){let s=this.evaluateConditions(t.disable,e);r=r&&!s}if(t.required&&(o=this.evaluateConditions(t.required,e)),t.optional){let s=this.evaluateConditions(t.optional,e);o=o&&!s}return{visible:a,enabled:r,required:o}}getFieldValue(t,e){if(t in e)return e[t];let a=t.split("."),r=e;for(let o of a){if(r==null)return null;r=r[o]}return r}compareValues(t,e,a){switch(e){case"equals":return this.deepEqual(t,a);case"notEquals":return!this.deepEqual(t,a);case"contains":return Array.isArray(t)?t.includes(a):typeof t=="string"?t.includes(String(a)):!1;case"notContains":return!this.compareValues(t,"contains",a);case"greaterThan":return this.toNumber(t)>this.toNumber(a);case"lessThan":return this.toNumber(t)<this.toNumber(a);case"greaterThanOrEqual":return this.toNumber(t)>=this.toNumber(a);case"lessThanOrEqual":return this.toNumber(t)<=this.toNumber(a);case"in":return Array.isArray(a)?a.includes(t):!1;case"notIn":return!this.compareValues(t,"in",a);case"isEmpty":return t==null||t===""||Array.isArray(t)&&t.length===0;case"isNotEmpty":return!this.compareValues(t,"isEmpty",a);case"regex":try{return(typeof a=="string"?new RegExp(a):a).test(String(t||""))}catch{return!1}default:return!1}}deepEqual(t,e){if(t===e)return!0;if(t===null||e===null||t===void 0||e===void 0)return t===e;if(typeof t!=typeof e)return!1;if(Array.isArray(t)&&Array.isArray(e))return t.length!==e.length?!1:t.every((a,r)=>this.deepEqual(a,e[r]));if(typeof t=="object"){let a=Object.keys(t),r=Object.keys(e);return a.length!==r.length?!1:a.every(o=>this.deepEqual(t[o],e[o]))}return!1}toNumber(t){if(typeof t=="number")return t;if(typeof t=="string"){let e=parseFloat(t);return isNaN(e)?0:e}return 0}};var re=class{constructor(){this.conditionEngine=new V}async validateField(t,e){return this.validateFieldWithValidations(t,e,t.validations||[])}async validateFieldWithValidations(t,e,a){let r=[];if(!a||a.length===0)return r;for(let o of a){let s=await this.validateValue(o,e);s.isValid||r.push(s.message||this.getDefaultMessage(o))}return r}async validateValue(t,e){switch(t.type){case"required":return this.validateRequired(e);case"email":return this.validateEmail(e);case"minLength":return this.validateMinLength(e,t.value);case"maxLength":return this.validateMaxLength(e,t.value);case"min":return this.validateMin(e,t.value);case"max":return this.validateMax(e,t.value);case"pattern":return this.validatePattern(e,t.value);case"custom":return await this.validateCustom(e,t);case"noInjection":return this.validateNoInjection(e,t);default:return{isValid:!0}}}validateRequired(t){let e=t!=null&&t!==""&&!(Array.isArray(t)&&t.length===0);return{isValid:e,message:e?void 0:"Este campo es requerido"}}validateEmail(t){if(!t)return{isValid:!0};let e=typeof t=="string"&&kt(t);return{isValid:e,message:e?void 0:"Debe ser un email v\xE1lido"}}validateMinLength(t,e){if(!t)return{isValid:!0};let r=String(t).length>=e;return{isValid:r,message:r?void 0:`Debe tener al menos ${e} caracteres`}}validateMaxLength(t,e){if(!t)return{isValid:!0};let r=String(t).length<=e;return{isValid:r,message:r?void 0:`Debe tener m\xE1ximo ${e} caracteres`}}validateMin(t,e){if(t==null||t==="")return{isValid:!0};let a=Number(t),r=!isNaN(a)&&a>=e;return{isValid:r,message:r?void 0:`Debe ser mayor o igual a ${e}`}}validateMax(t,e){if(t==null||t==="")return{isValid:!0};let a=Number(t),r=!isNaN(a)&&a<=e;return{isValid:r,message:r?void 0:`Debe ser menor o igual a ${e}`}}validatePattern(t,e){if(!t)return{isValid:!0};let a;if(e instanceof RegExp)a=e;else if(typeof e=="string")try{a=new RegExp(e)}catch{return console.warn("Invalid regex pattern:",e),{isValid:!0}}else return console.warn("Pattern validation expects string or RegExp, got:",typeof e,e),{isValid:!0};let r=a.test(String(t));return{isValid:r,message:r?void 0:"El formato no es v\xE1lido"}}validateNoInjection(t,e){if(t==null||t==="")return{isValid:!0};let a=j(t);return{isValid:a,message:a?void 0:e.message||te}}async validateCustom(t,e){try{let a=await e.validator(t);return{isValid:!!a,message:a?void 0:e.message||"Validaci\xF3n fallida"}}catch{return{isValid:!1,message:e.message||"Error en la validaci\xF3n"}}}getDefaultMessage(t){switch(t.type){case"required":return"Este campo es requerido";case"email":return"Debe ser un email v\xE1lido";case"minLength":return`Debe tener al menos ${t.value} caracteres`;case"maxLength":return`Debe tener m\xE1ximo ${t.value} caracteres`;case"min":return`Debe ser mayor o igual a ${t.value}`;case"max":return`Debe ser menor o igual a ${t.value}`;case"pattern":return"El formato no es v\xE1lido";case"custom":return"Validaci\xF3n fallida";case"noInjection":return te;default:return"Campo inv\xE1lido"}}shouldValidateField(t,e){if(t.hidden||t.disabled)return!1;if(t.dependencies){let a=this.conditionEngine.evaluateDependencies(t.dependencies,e);if(!a.visible||!a.enabled)return!1}return!0}async validateForm(t,e){let a={};for(let r of t)if(this.shouldValidateField(r,e))if(r.type==="array"&&"itemSchema"in r){let n=r.itemSchema?.fields||[],i=e[r.name];if(Array.isArray(i))for(let c=0;c<i.length;c++){let p=i[c];for(let m of n){let u=`${r.name}.${c}.${m.name}`,f=p?.[m.name];if(!this.shouldValidateField(m,e))continue;let b=await this.validateField(m,f);b.length>0&&(a[u]=b)}}let d=await this.validateArrayField(r,i);d.length>0&&(a[r.name]=d)}else{let o=e[r.name],s=await this.validateField(r,o);s.length>0&&(a[r.name]=s)}return a}async validateArrayField(t,e){let a=[],r=t;return r.minItems!==void 0&&(Array.isArray(e)&&e.length>=r.minItems||a.push(`Debe tener al menos ${r.minItems} elementos`)),r.maxItems!==void 0&&(Array.isArray(e)&&e.length<=r.maxItems||a.push(`Debe tener m\xE1ximo ${r.maxItems} elementos`)),a}};var ae=class{constructor(){this.wizardState=null;this.schema=null;this.dependencyCache=new Map;this.fieldDependencies=new Map;this.parser=new Q,this.validator=new re,this.conditionEngine=new V,this.state=this.createInitialState()}createInitialState(){return{values:{},errors:{},touched:{},isValid:!0,isSubmitting:!1}}initializeSchema(t,e){this.schema=this.parser.parse(t),this.initializeValues(e),this.initializeWizard(),this.buildDependencyMap()}extractAllFields(t){let e=[];for(let a of t)e.push(a),a.type==="group"&&"fields"in a&&e.push(...this.extractAllFields(a.fields)),a.type==="row"&&"fields"in a&&e.push(...this.extractAllFields(a.fields));return e}getArrayItemOnlyFieldNames(t){let e=new Set(t.map(r=>r.name)),a=new Set;for(let r of t)if(r.type==="array"&&"itemSchema"in r&&r.itemSchema?.fields)for(let o of r.itemSchema.fields)e.has(o.name)||a.add(o.name);return a}extractAllFieldsWithArrays(t,e="",a="root"){let r=[];for(let o of t){let s=e?`${e}.${o.name}`:o.name,n=e||"";r.push({field:o,fullPath:s,containerType:a,containerPath:n}),o.type==="group"&&"fields"in o&&r.push(...this.extractAllFieldsWithArrays(o.fields,s,"group")),o.type==="row"&&"fields"in o&&r.push(...this.extractAllFieldsWithArrays(o.fields,s,"row")),o.type==="array"&&"itemSchema"in o&&o.itemSchema?.fields&&r.push(...this.extractAllFieldsWithArrays(o.itemSchema.fields,o.name,"array"))}return r}buildDependencyMap(){if(this.fieldDependencies.clear(),this.dependencyCache.clear(),!this.schema)return;let t=this.schema.isWizard?this.schema.steps.flatMap(a=>a.fields):this.schema.fields||[],e=this.extractAllFieldsWithArrays(t);for(let{field:a,fullPath:r,containerType:o,containerPath:s}of e){if(!a.dependencies)continue;let n=this.extractObservedFields(a.dependencies);for(let i of n)this.fieldDependencies.has(i)||this.fieldDependencies.set(i,new Set),this.fieldDependencies.get(i).add(a.name),r!==a.name&&this.fieldDependencies.get(i).add(r),o==="array"&&s&&(this.fieldDependencies.has(s)||this.fieldDependencies.set(s,new Set),this.fieldDependencies.get(s).add(r))}}extractObservedFields(t){let e=new Set,a=o=>{o&&o.field&&e.add(o.field)},r=o=>{Array.isArray(o)?o.forEach(a):o&&a(o)};return t.show&&r(t.show),t.hide&&r(t.hide),t.enable&&r(t.enable),t.disable&&r(t.disable),t.required&&r(t.required),t.optional&&r(t.optional),e}initializeValues(t){if(!this.schema)return;let e=this.schema.isWizard?this.schema.steps.flatMap(n=>n.fields):this.schema.fields||[],a=this.extractAllFields(e),r={...this.state.values},o={};if(t)for(let n in t){let i=t[n];i!=null&&D(o,n,i)}for(let n of a){let i=I(o,n.name);if(i!=null)continue;let d=I(r,n.name);d!=null?D(o,n.name,d):this.initializeFieldValue(n,o)}let s=this.getArrayItemOnlyFieldNames(e);for(let n in r)s.has(n)||n in o||(o[n]=r[n]);for(let n of e)if(n.type==="array"&&"minItems"in n&&"itemSchema"in n){let i=n,d=i.minItems??0;if(d>=1&&i.itemSchema?.fields?.length){let c=I(o,n.name);if(Array.isArray(c)&&c.length<d){let p=[...c];for(let m=c.length;m<d;m++){let u={};for(let f of i.itemSchema.fields)this.initializeFieldValue(f,u);p.push(u)}D(o,n.name,p)}}}for(let n of s)n in o&&delete o[n];this.state.values=o}initializeFieldValue(t,e){if(t.defaultValue!==void 0)e[t.name]=t.defaultValue;else switch(t.type){case"checkbox":case"switch":e[t.name]=t.checked||!1;break;case"select":"multiple"in t&&t.multiple?e[t.name]=[]:e[t.name]=null;break;case"array":{let a=t,r=a.minItems??0,o=a.itemSchema?.fields;if(r>=1&&o?.length){let s=[];for(let n=0;n<r;n++){let i={};for(let d of o)this.initializeFieldValue(d,i);s.push(i)}e[t.name]=s}else e[t.name]=[];break}case"group":if(e[t.name]={},"fields"in t)for(let a of t.fields)this.initializeFieldValue(a,e[t.name]);break;case"colorpicker":e[t.name]=t.defaultValue??"#000000";break;default:e[t.name]=null}}initializeWizard(){if(!this.schema||!this.schema.isWizard){this.wizardState=null;return}this.wizardState={currentStep:0,totalSteps:this.schema.steps.length,completedSteps:[]}}getState(){return{...this.state}}getWizardState(){return this.wizardState?{...this.wizardState}:null}getValue(t){return I(this.state.values,t)}createDefaultArrayItem(t){let a=t.itemSchema?.fields;if(!a?.length)return{};let r={};for(let o of a)this.initializeFieldValue(o,r);return r}async setValue(t,e){D(this.state.values,t,e),this.state.touched[t]=!0,this.invalidateDependencyCache(t),this.state.touched[t]&&this.schema&&await this.validateField(t);let a=this.fieldDependencies.get(t);if(a)for(let r of a)await this.validateField(r);this.updateValidity()}invalidateDependencyCache(t){let e=this.fieldDependencies.get(t);if(e)for(let o of e){this.dependencyCache.delete(o);let s=this.addArrayIndexToPath(t,o);s&&this.dependencyCache.delete(s)}let a=t.replace(/\[\d+\]/g,"");if(a!==t){if(e=this.fieldDependencies.get(a),e)for(let s of e){this.dependencyCache.delete(s);let n=t.match(/\[(\d+)\]/);if(n){let i=s.includes("[")?s:`${s.split(".").slice(0,-1).join(".")}[${n[1]}].${s.split(".").pop()}`;this.dependencyCache.delete(i)}}let o=a.split(".").pop();if(o&&o!==a&&(e=this.fieldDependencies.get(o),e))for(let s of e){this.dependencyCache.delete(s);let n=t.match(/\[(\d+)\]/);if(n){let d=`${t.split(".")[0].replace(/\[\d+\]/,"")}[${n[1]}].${s}`;this.dependencyCache.delete(d)}}}let r=t.split(".");for(let o=1;o<r.length;o++){if(r[o].includes("["))continue;let s=r.slice(o).join(".");if(e=this.fieldDependencies.get(s),e)for(let n of e)this.dependencyCache.delete(n),this.dependencyCache.delete(`${r[0]}.${s}`)}this.dependencyCache.delete(t)}addArrayIndexToPath(t,e){let a=t.match(/\[(\d+)\]/);if(!a)return null;let r=a[1],o=t.split(".")[0];if(e.startsWith(o)){let s=e.split(".");if(s.length>1)return`${s[0]}[${r}].${s.slice(1).join(".")}`}return null}setValueWithoutValidation(t,e){D(this.state.values,t,e),this.invalidateDependencyCache(t)}async validateField(t){if(!this.schema)return;let e=this.schema.isWizard?this.schema.steps.flatMap(i=>i.fields):this.schema.fields||[],r=this.extractAllFields(e).find(i=>i.name===t);if(!r)return;if(!this.getFieldVisibility(t)){delete this.state.errors[t];return}let o=this.getValue(t),s=this.getActiveValidations(r),n=await this.validator.validateFieldWithValidations(r,o,s);n.length>0?this.state.errors[t]=n:delete this.state.errors[t]}getActiveValidations(t){let e=[...t.validations||[]],a=["text","email","password","textarea"],r=t.skipInjectionValidation??t.props?.skipInjectionValidation;a.includes(t.type)&&!r&&!e.some(n=>n.type==="noInjection")&&(e=[{type:"noInjection"},...e]);let o=this.getFieldRequired(t.name),s=e.some(n=>n.type==="required");if(o&&!s?e=[{type:"required"},...e]:!o&&s&&(e=e.filter(n=>n.type!=="required")),t.conditionalValidations)for(let n of t.conditionalValidations)this.conditionEngine.evaluateConditions(n.condition,this.state.values)&&(e=[...e,...n.validations]);return e}async validateForm(){if(!this.schema)return{};let t=this.schema.isWizard?this.schema.steps.flatMap(r=>r.fields):this.schema.fields||[],e=this.extractAllFields(t),a=await this.validator.validateForm(e,this.state.values);return this.state.errors=a,this.updateValidity(),a}updateValidity(){this.state.isValid=Object.keys(this.state.errors).length===0}setTouched(t){this.state.touched[t]=!0}getErrors(t){return this.state.errors[t]||[]}getAllErrors(){return{...this.state.errors}}reset(){this.state=this.createInitialState(),this.schema&&(this.initializeValues(),this.initializeWizard())}nextStep(){return this.wizardState&&this.wizardState.currentStep<this.wizardState.totalSteps-1?(this.wizardState.currentStep++,!0):!1}previousStep(){return this.wizardState&&this.wizardState.currentStep>0?(this.wizardState.currentStep--,!0):!1}goToStep(t){return this.wizardState&&t>=0&&t<this.wizardState.totalSteps?(this.wizardState.currentStep=t,!0):!1}completeStep(t){this.wizardState&&(this.wizardState.completedSteps.includes(t)||this.wizardState.completedSteps.push(t))}setSubmitting(t){this.state.isSubmitting=t}getCurrentStepFields(){return!this.schema||!this.schema.isWizard||!this.wizardState?this.schema?.fields||[]:this.schema.steps[this.wizardState.currentStep].fields}getFieldVisibility(t){let e=this.dependencyCache.get(t);if(e!==void 0)return e.visible;if(!this.schema)return!0;let a=this.schema.isWizard?this.schema.steps.flatMap(m=>m.fields):this.schema.fields||[],r=this.extractAllFieldsWithArrays(a),o=r.find(m=>m.fullPath===t||m.field.name===t);if(!o){let m=t.replace(/\[\d+\]/g,"");o=r.find(u=>u.field.name===m||u.fullPath===m)}if(!o){let m=t.split(".").pop();o=r.find(u=>u.field.name===m)}if(!o||!o.field.dependencies)return!o?.field.hidden;let{field:s,containerType:n,containerPath:i}=o,d=o.field.dependencies,c={...this.state.values};if(n==="array"&&i){let m=b=>{if(b)return Array.isArray(b)?b[0]?.field:b.field},u=m(d.show)||m(d.hide)||m(d.enable)||m(d.disable)||m(d.required)||m(d.optional);if(u&&u){let b=t.match(/\[(\d+)\]/),h=b?parseInt(b[1],10):null,g=null;if(h!==null){let y=I(this.state.values,i);if(Array.isArray(y)&&y[h]&&(g=y[h][u]),g==null){let E=`${i}[${h}]`,S=this.state.values[E];S&&typeof S=="object"&&(g=S[u])}}else{let y=I(this.state.values,i);if(Array.isArray(y)){for(let E of y)if(E&&E[u]!==void 0){g=E[u];break}}}if(g!=null){let y={...this.state.values};y[u]=g;let E=this.conditionEngine.evaluateDependencies(d,y);return this.dependencyCache.set(t,E),E.visible&&!s.hidden}}let f={visible:!0,enabled:!0,required:!1};return this.dependencyCache.set(t,f),f.visible&&!s.hidden}else if(i){let m=I(this.state.values,i);if(m&&typeof m=="object"){let u=(b,h="")=>{let g={},y=Object.entries(b);for(let[E,S]of y){let x=h?`${h}.${E}`:E;S&&typeof S=="object"&&!Array.isArray(S)&&S!==null&&Object.assign(g,u(S,x))}for(let[E,S]of y){let x=h?`${h}.${E}`:E;S&&typeof S=="object"&&!Array.isArray(S)&&S!==null||x in g||(g[x]=S)}return g},f=u(m);c={...this.state.values,...f}}}let p=this.conditionEngine.evaluateDependencies(d,c);return this.dependencyCache.set(t,p),p.visible&&!s.hidden}getFieldEnabled(t){let e=this.dependencyCache.get(t);if(e!==void 0)return e.enabled;if(!this.schema)return!0;let a=this.schema.isWizard?this.schema.steps.flatMap(n=>n.fields):this.schema.fields||[],o=this.extractAllFields(a).find(n=>n.name===t);if(!o)return!0;if(o.disabled)return!1;if(!o.dependencies)return!0;let s=this.conditionEngine.evaluateDependencies(o.dependencies,this.state.values);return this.dependencyCache.set(t,s),s.enabled}getFieldRequired(t){let e=this.dependencyCache.get(t);if(e!==void 0)return e.required;if(!this.schema)return!1;let a=this.schema.isWizard?this.schema.steps.flatMap(i=>i.fields):this.schema.fields||[],o=this.extractAllFields(a).find(i=>i.name===t);if(!o)return!1;let s=o.validations?.some(i=>i.type==="required")||!1;if(!o.dependencies)return s;let n=this.conditionEngine.evaluateDependencies(o.dependencies,this.state.values);return this.dependencyCache.set(t,n),n.required||s}getDependentFields(t){return Array.from(this.fieldDependencies.get(t)||[])}};var rr=new Set(["p","br","b","i","em","strong","u","s","h1","h2","h3","h4","h5","h6","ul","ol","li","a","span","div","code","pre","blockquote","table","thead","tbody","tr","th","td","img","hr"]),ar=new Set(["href","src","alt","title","class","id","target","rel","width","height"]),or=["javascript:","data:","vbscript:"];function oe(l){let t=new DOMParser().parseFromString(l,"text/html");function e(r){if(r.nodeType===Node.TEXT_NODE)return r.textContent||"";if(r.nodeType!==Node.ELEMENT_NODE)return"";let o=r,s=o.tagName.toLowerCase();if(!rr.has(s))return o.textContent||"";let n=`<${s}`;for(let i of Array.from(o.attributes)){let d=i.name.toLowerCase(),c=i.value;if(d==="href"||d==="src"){let p=c.toLowerCase().trim();if(or.some(m=>p.startsWith(m)))continue}d.startsWith("on")||d==="style"||ar.has(d)&&(n+=` ${d}="${sr(c)}"`)}n+=">";for(let i of Array.from(o.childNodes))n+=e(i);return["img","br","hr","input"].includes(s)||(n+=`</${s}>`),n}let a="";for(let r of Array.from(t.body.childNodes))a+=e(r);return a}function sr(l){return l.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&#39;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}var v=class{constructor(t,e,a,r,o){this.field=t,this.value=e,this.error=a,this.onChange=r,this.onBlur=o}cleanup(){}createInputWithSlots(t){let e=this.field.leadingIcon,a=this.field.trailingIcon;if(!e&&!a)return t;let r=document.createElement("div");if(r.className="easy-form-input-wrapper",e&&this.isSlotContentValid(e)){let s=this.renderSlotContent(e);s.className="easy-form-input-slot easy-form-input-slot-leading",r.appendChild(s)}let o=document.createElement("div");if(o.className="easy-form-input-core",o.appendChild(t),r.appendChild(o),a&&this.isSlotContentValid(a)){let s=this.renderSlotContent(a);s.className="easy-form-input-slot easy-form-input-slot-trailing",r.appendChild(s)}return r}isSlotContentValid(t){return t.type?t.type==="image"?!!t.src:t.type==="html"?!!t.html:!1:!1}renderSlotContent(t){let e=document.createElement("span");if(e.className="easy-form-input-slot-content",t.type==="image"&&t.src){let a=document.createElement("img");a.src=t.src,a.alt=t.alt??"",a.setAttribute("aria-hidden","true"),e.appendChild(a)}else t.type==="html"&&t.html&&(e.innerHTML=oe(t.html));return e}createFieldContainer(t){let e=document.createElement("div"),r=Array.from(t.classList).filter(u=>u.startsWith("easy-form-")&&u!=="easy-form-field"&&(u.includes("-container")||u.includes("-wrapper"))),o=this.field.labelPosition??"up",s=this.createInputWithSlots(t);if(r.length>0?e.className=`easy-form-field easy-form-label-${o} ${r.join(" ")}`:e.className=`easy-form-field easy-form-label-${o}`,o==="none"&&this.field.label){let u=s.querySelector("input, textarea, select")||s;if(u instanceof HTMLElement&&u.setAttribute("aria-label",this.field.label),!this.field.placeholder){let f=b=>{(b instanceof HTMLInputElement||b instanceof HTMLTextAreaElement)&&!b.placeholder&&(b.placeholder=this.field.label)};(s instanceof HTMLInputElement||s instanceof HTMLTextAreaElement)&&f(s),s.querySelectorAll("input, textarea").forEach(f)}}let i=(()=>{if(!this.field.label||o==="none")return null;let u=document.createElement("label");if(u.className="easy-form-label",u.setAttribute("for",this.getFieldId()),u.textContent=this.field.label,this.field.validations?.some(f=>f.type==="required")){let f=document.createElement("span");f.className="easy-form-required",f.textContent=" *",u.appendChild(f)}return u})();if(o==="up")i&&e.appendChild(i),e.appendChild(s);else if(o==="down")e.appendChild(s),i&&e.appendChild(i);else if(o==="left"){let u=document.createElement("div");u.className="easy-form-field-inner easy-form-field-inner-horizontal",i&&u.appendChild(i),u.appendChild(s),e.appendChild(u)}else if(o==="right"){let u=document.createElement("div");u.className="easy-form-field-inner easy-form-field-inner-horizontal",u.appendChild(s),i&&u.appendChild(i),e.appendChild(u)}else e.appendChild(s);let d=this.getFieldId(),c=`${d}-description`,p=`${d}-error`,m=[];if(this.field.description){let u=document.createElement("p");u.className="easy-form-description",u.id=c,u.textContent=this.field.description,e.appendChild(u),m.push(c)}if(this.error){let u=document.createElement("p");u.className="easy-form-error",u.id=p,u.textContent=this.error,e.appendChild(u),m.push(p)}return s instanceof HTMLElement&&(this.error&&s.setAttribute("aria-invalid","true"),this.field.validations?.some(f=>f.type==="required")&&s.setAttribute("aria-required","true"),m.length>0&&s.setAttribute("aria-describedby",m.join(" "))),e}getFieldId(){return`easy-form-${this.field.name}`}applyCommonProps(t){if(t.id=this.getFieldId(),t.setAttribute("name",this.field.name),this.field.disabled&&(t.setAttribute("disabled","true"),t.classList.add("easy-form-input-disabled")),this.field.hidden&&(t.style.display="none",t.classList.add("easy-form-field-hidden")),this.error&&t.classList.add("easy-form-input-error"),this.field.props)for(let[e,a]of Object.entries(this.field.props))(e.startsWith("data-")||e.startsWith("aria-"))&&t.setAttribute(e,String(a))}};function wt(l){let t=[];for(let e=0;e<l.length;e++){let a=l[e];switch(a){case"9":t.push({type:"digit",char:"9",editable:!0});break;case"a":case"A":t.push({type:"letter",char:a,editable:!0});break;case"*":t.push({type:"any",char:"*",editable:!0});break;default:t.push({type:"literal",char:a,editable:!1});break}}return t}function Y(l,t){let e="",a=0;for(let r of t){if(!r.editable){e+=r.char;continue}if(a>=l.length)break;let o=l[a];if(!(r.type==="digit"&&!/\d/.test(o))){{if(r.type==="letter"&&!/[a-zA-Z]/.test(o))continue;if(r.type==="literal"&&o!==r.char)continue}e+=o,a++}}return e}function Be(l,t){if(!l)return"";let e="",a=0;for(let r=0;r<l.length&&a<t.length;r++){let o=l[r],s=t[a];if(s.editable)s.type==="digit"&&/\d/.test(o)||s.type==="letter"&&/[a-zA-Z]/.test(o)||s.type==="any"?(e+=o,a++):(a++,r--);else if(o===s.char)a++;else if(a<t.length-1){let n=t[a+1];n&&n.editable&&(n.type==="digit"&&/\d/.test(o)||n.type==="letter"&&/[a-zA-Z]/.test(o)||n.type==="any")?(e+=o,a+=2):a++}else break}return e}function se(l,t,e="forward"){if(e==="forward"){for(let a=l+1;a<t.length;a++)if(t[a].editable)return a;return t.length}else{for(let a=l-1;a>=0;a--)if(t[a].editable)return a;return 0}}function Et(l,t="_"){return l.map(e=>e.editable?t:e.char).join("")}function Ct(l,t,e,a){let r=0;for(let s=0;s<Math.min(e,l.length);s++){let n=s;n<a.length&&a[n].editable&&r++}let o=0;for(let s=0;s<t.length&&s<a.length;s++)if(a[s].editable&&(o++,o>r))return s+1;return se(Math.min(e,t.length-1),a,"forward")}var B=class{constructor(){this.tokenCache=new Map}getCustomMask(t){return t.custom?t.custom:t.type?Ve(t.type):null}getTokens(t){let e=this.getCustomMask(t);if(!e)return null;let a=e.pattern;if(this.tokenCache.has(a))return this.tokenCache.get(a);let r=wt(e.pattern);return this.tokenCache.set(a,r),r}applyMask(t,e){let a=this.getTokens(e);if(!a)return t;let r=this.getCustomMask(e),o=a.filter(d=>d.editable),s=new Set(o.map(d=>d.type)),n="";for(let d of t)(s.has("any")||s.has("digit")&&/\d/.test(d)||s.has("letter")&&/[a-zA-Z]/.test(d))&&(n+=d);let i=Y(n,a);return r.transform&&(i=r.transform(i),i=Y(i,a)),i}removeMask(t,e){let a=this.getTokens(e);return a?Be(t,a):t}getMaskPlaceholder(t){let e=this.getTokens(t);if(!e)return"";let a=this.getCustomMask(t);return Et(e,a.placeholder||"_")}canInsertChar(t,e,a){let r=this.getTokens(a);if(!r||e>=r.length)return!1;let o=r[e];if(!o.editable)return!1;switch(o.type){case"digit":return/\d/.test(t);case"letter":return/[a-zA-Z]/.test(t);case"any":return!0;default:return!1}}processInput(t,e,a,r){let o=this.getTokens(a);if(!o)return{value:t,cursorPosition:t.length};let s=Be(t,o),n=Y(s,o),i=this.getCustomMask(a);i.transform&&(n=i.transform(n),n=Y(n,o));let d=Ct(e,n,r,o);return{value:n,cursorPosition:Math.min(d,n.length)}}processKeyInput(t,e,a,r,o=!1){let s=this.getTokens(r);if(!s)return{value:e,cursorPosition:a};if(o){if(a===0)return{value:e,cursorPosition:0};let n=se(a-1,s,"backward"),i=e.substring(0,n),d=e.substring(a),c=i+d,p=this.removeMask(c,r),m=this.applyMask(p,r),u=Math.max(0,n-1),f=se(u,s,"forward");return{value:m,cursorPosition:f}}if(t.length===1&&this.canInsertChar(t,a,r)){let n=e.substring(0,a),i=e.substring(a),d=n+t+i;return this.processInput(d,e,r,a)}return{value:e,cursorPosition:a}}};var ie=class extends v{constructor(e,a,r,o,s){super(e,a,r,o,s);this.maskEngine=null;this.previousValue="";this.focusTimeout=null;e.mask&&(this.maskEngine=new B)}cleanup(){this.focusTimeout&&(clearTimeout(this.focusTimeout),this.focusTimeout=null)}render(){let e=document.createElement("input");e.type=this.field.type==="email"?"email":this.field.type==="password"?"password":"text";let a=this.value??"";if(this.maskEngine&&this.field.mask&&(a&&(a=this.maskEngine.applyMask(String(a),this.field.mask)),this.previousValue=a),e.value=a,this.applyCommonProps(e),this.field.placeholder)e.placeholder=this.field.placeholder;else if(this.maskEngine&&this.field.mask){let r=this.maskEngine.getMaskPlaceholder(this.field.mask);r&&(e.placeholder=r)}return this.maskEngine&&this.field.mask?(e.addEventListener("input",r=>{let o=r.target,s=o.selectionStart||0,n=o.value,i=this.maskEngine.processInput(n,this.previousValue,this.field.mask,s);o.value=i.value,this.previousValue=i.value,setTimeout(()=>{o.setSelectionRange(i.cursorPosition,i.cursorPosition)},0);let d=this.field.mask.keepFormat?i.value:this.maskEngine.removeMask(i.value,this.field.mask);this.onChange(d)}),e.addEventListener("keydown",r=>{let o=r.target,s=o.selectionStart||0;if(r.key==="Backspace"||r.key==="Delete"){r.preventDefault();let n=r.key==="Backspace",i=this.maskEngine.processKeyInput("",o.value,s,this.field.mask,n);o.value=i.value,this.previousValue=i.value,setTimeout(()=>{o.setSelectionRange(i.cursorPosition,i.cursorPosition)},0);let d=this.field.mask.keepFormat?i.value:this.maskEngine.removeMask(i.value,this.field.mask);this.onChange(d)}}),e.addEventListener("paste",r=>{r.preventDefault();let o=(r.clipboardData||window.clipboardData).getData("text");if(o){let s=r.target,n=s.selectionStart||0,i=s.value.substring(0,n),d=s.value.substring(n),c=i+o+d,p=this.maskEngine.processInput(c,this.previousValue,this.field.mask,n);s.value=p.value,this.previousValue=p.value,setTimeout(()=>{s.setSelectionRange(p.cursorPosition,p.cursorPosition)},0);let m=this.field.mask.keepFormat?p.value:this.maskEngine.removeMask(p.value,this.field.mask);this.onChange(m)}})):e.addEventListener("input",r=>{let o=r.target;this.onChange(o.value)}),e.addEventListener("blur",()=>{this.onBlur()}),this.createFieldContainer(e)}};var ne=class extends v{constructor(e,a,r,o,s){super(e,a,r,o,s);this.maskEngine=null;this.previousValue="";e.mask&&(this.maskEngine=new B)}cleanup(){}render(){let e=document.createElement("input");if(this.maskEngine&&this.field.mask){e.type="text";let r=this.value??"";r!==null&&r!==""&&(this.field.mask.type==="currency"?r=this.maskEngine.applyMask(String(r),this.field.mask):this.field.mask.type==="percentage"&&(r=this.maskEngine.applyMask(String(r),this.field.mask))),this.previousValue=r,e.value=r}else e.type="number",e.value=this.value??"";let a=this.field;if(!this.maskEngine&&e.type==="number"&&(a.min!==void 0&&(e.min=String(a.min)),a.max!==void 0&&(e.max=String(a.max)),a.step!==void 0&&(e.step=String(a.step))),this.applyCommonProps(e),this.field.placeholder)e.placeholder=this.field.placeholder;else if(this.maskEngine&&this.field.mask){let r=this.maskEngine.getMaskPlaceholder(this.field.mask);r&&(e.placeholder=r)}return this.maskEngine&&this.field.mask?(e.addEventListener("input",r=>{let o=r.target,s=o.selectionStart||0,n=o.value,i=this.maskEngine.processInput(n,this.previousValue,this.field.mask,s);o.value=i.value,this.previousValue=i.value,setTimeout(()=>{o.setSelectionRange(i.cursorPosition,i.cursorPosition)},0);let d=null;if(this.field.mask.type==="currency"){let c=this.maskEngine.removeMask(i.value,this.field.mask);d=c?parseFloat(c.replace(/[^\d.]/g,"")):null}else if(this.field.mask.type==="percentage"){let c=this.maskEngine.removeMask(i.value,this.field.mask);d=c?parseFloat(c):null}this.onChange(d)}),e.addEventListener("keydown",r=>{let o=r.target,s=o.selectionStart||0;if(r.key==="Backspace"||r.key==="Delete"){r.preventDefault();let n=r.key==="Backspace",i=this.maskEngine.processKeyInput("",o.value,s,this.field.mask,n);o.value=i.value,this.previousValue=i.value,setTimeout(()=>{o.setSelectionRange(i.cursorPosition,i.cursorPosition)},0);let d=null;if(this.field.mask.type==="currency"){let c=this.maskEngine.removeMask(i.value,this.field.mask);d=c?parseFloat(c.replace(/[^\d.]/g,"")):null}else if(this.field.mask.type==="percentage"){let c=this.maskEngine.removeMask(i.value,this.field.mask);d=c?parseFloat(c):null}this.onChange(d)}}),e.addEventListener("paste",r=>{r.preventDefault();let o=(r.clipboardData||window.clipboardData).getData("text");if(o){let s=r.target,n=s.selectionStart||0,i=s.value.substring(0,n),d=s.value.substring(n),c=i+o+d,p=this.maskEngine.processInput(c,this.previousValue,this.field.mask,n);s.value=p.value,this.previousValue=p.value,setTimeout(()=>{s.setSelectionRange(p.cursorPosition,p.cursorPosition)},0);let m=null;if(this.field.mask.type==="currency"){let u=this.maskEngine.removeMask(p.value,this.field.mask);m=u?parseFloat(u.replace(/[^\d.]/g,"")):null}else if(this.field.mask.type==="percentage"){let u=this.maskEngine.removeMask(p.value,this.field.mask);m=u?parseFloat(u):null}this.onChange(m)}})):e.addEventListener("input",r=>{let o=r.target,s=o.value===""?null:Number(o.value);this.onChange(s)}),e.addEventListener("blur",()=>{this.onBlur()}),this.createFieldContainer(e)}};var le=class extends v{render(){let t=document.createElement("textarea");t.value=this.value??"",t.placeholder=this.field.placeholder||"";let e=this.field;return e.rows&&(t.rows=e.rows),e.cols&&(t.cols=e.cols),this.applyCommonProps(t),t.addEventListener("input",a=>{let r=a.target;this.onChange(r.value)}),t.addEventListener("blur",()=>{this.onBlur()}),this.createFieldContainer(t)}};var de=class extends v{render(){let t=document.createElement("select"),e=this.field;if(e.multiple&&(t.multiple=!0),!e.multiple){let r=document.createElement("option");r.value="";let o=e.labelPosition==="none"&&e.label&&!e.placeholder?e.label:"";r.textContent=e.placeholder||o||"Selecciona una opci\xF3n",r.setAttribute("data-placeholder",""),r.disabled=!0,t.appendChild(r)}for(let r of e.options){let o=document.createElement("option");typeof r=="string"?(o.value=r,o.textContent=r):(o.value=String(r.value),o.textContent=r.label),t.appendChild(o)}if(e.multiple&&Array.isArray(this.value))for(let r of t.options)r.selected=this.value.includes(r.value);else t.value=this.value??"";this.applyCommonProps(t);let a=()=>{!t.value?t.classList.add("easy-form-select-placeholder"):t.classList.remove("easy-form-select-placeholder")};return a(),t.addEventListener("change",r=>{let o=r.target;if(a(),e.multiple){let s=Array.from(o.selectedOptions).map(n=>n.value);this.onChange(s)}else this.onChange(o.value||null)}),t.addEventListener("blur",()=>{this.onBlur()}),this.createFieldContainer(t)}};var ce=class extends v{render(){let t=document.createElement("input");t.type="checkbox",t.checked=!!this.value,this.applyCommonProps(t),t.addEventListener("change",r=>{let o=r.target;this.onChange(o.checked)}),t.addEventListener("blur",()=>{this.onBlur()});let e=document.createElement("div");e.className="easy-form-field";let a=document.createElement("label");if(a.className="easy-form-label-checkbox",a.setAttribute("for",this.getFieldId()),a.appendChild(t),this.field.label){let r=document.createTextNode(this.field.label);a.appendChild(r)}if(e.appendChild(a),this.field.description){let r=document.createElement("p");r.className="easy-form-description",r.textContent=this.field.description,e.appendChild(r)}if(this.error){let r=document.createElement("p");r.className="easy-form-error",r.textContent=this.error,e.appendChild(r)}return e}};var me=class extends v{render(){let t=document.createElement("div");if(t.className="easy-form-field",this.field.label){let r=document.createElement("label");if(r.className="easy-form-label",r.textContent=this.field.label,this.field.validations?.some(o=>o.type==="required")){let o=document.createElement("span");o.className="easy-form-required",o.textContent=" *",r.appendChild(o)}t.appendChild(r)}let e=document.createElement("div");e.className="easy-form-radio-group";let a=this.field;for(let r of a.options){let o=typeof r=="string"?r:r.value,s=typeof r=="string"?r:r.label,n=document.createElement("div");n.className="easy-form-radio-option";let i=document.createElement("input");i.type="radio",i.name=this.field.name,i.id=`${this.getFieldId()}-${o}`,i.value=String(o),i.checked=String(this.value)===String(o),this.field.disabled&&(i.disabled=!0);let d=document.createElement("label");d.setAttribute("for",i.id),d.textContent=s,d.className="easy-form-radio-label",i.addEventListener("change",()=>{this.onChange(o)}),i.addEventListener("blur",()=>{this.onBlur()}),n.appendChild(i),n.appendChild(d),e.appendChild(n)}if(t.appendChild(e),this.field.description){let r=document.createElement("p");r.className="easy-form-description",r.textContent=this.field.description,t.appendChild(r)}if(this.error){let r=document.createElement("p");r.className="easy-form-error",r.textContent=this.error,t.appendChild(r)}return t}};var pe=class extends v{render(){let t=document.createElement("input");t.type="checkbox",t.className="easy-form-switch",t.checked=!!this.value,this.applyCommonProps(t),t.addEventListener("change",r=>{let o=r.target;this.onChange(o.checked)}),t.addEventListener("blur",()=>{this.onBlur()});let e=document.createElement("div");e.className="easy-form-field";let a=document.createElement("label");if(a.className="easy-form-label-switch",a.setAttribute("for",this.getFieldId()),this.field.label){let r=document.createTextNode(this.field.label);a.appendChild(r)}if(a.appendChild(t),e.appendChild(a),this.field.description){let r=document.createElement("p");r.className="easy-form-description",r.textContent=this.field.description,e.appendChild(r)}if(this.error){let r=document.createElement("p");r.className="easy-form-error",r.textContent=this.error,e.appendChild(r)}return e}};var ue=class extends v{render(){let t=document.createElement("input");t.type="date";let e=this.field;if(e.min&&(t.min=e.min),e.max&&(t.max=e.max),this.value){let a=this.value instanceof Date?this.value.toISOString().split("T")[0]:String(this.value);t.value=a}return this.applyCommonProps(t),t.addEventListener("change",a=>{let r=a.target;this.onChange(r.value||null)}),t.addEventListener("blur",()=>{this.onBlur()}),this.createFieldContainer(t)}};var fe=class extends v{render(){let t=document.createElement("input");t.type="file";let e=this.field;return e.accept&&(t.accept=e.accept),e.multiple&&(t.multiple=!0),this.applyCommonProps(t),t.addEventListener("change",a=>{let r=a.target;r.files&&(e.multiple?this.onChange(Array.from(r.files)):this.onChange(r.files[0]||null))}),t.addEventListener("blur",()=>{this.onBlur()}),this.createFieldContainer(t)}};var he=class extends v{render(){let t=document.createElement("div");t.className="easy-form-quantity-container";let e=this.field,a=e.min??0,r=e.max??void 0,o=e.step??1,s=this.value??a,n=document.createElement("div");n.className="easy-form-quantity-wrapper";let i=document.createElement("button");i.type="button",i.className="easy-form-quantity-btn easy-form-quantity-decrement",i.textContent="\u2212",i.setAttribute("aria-label","Decrementar"),s<=a&&(i.disabled=!0,i.classList.add("disabled"));let d=document.createElement("input");d.type="number",d.value=String(s),d.min=String(a),r!==void 0&&(d.max=String(r)),d.step=String(o),d.className="easy-form-quantity-input",this.applyCommonProps(d);let c=document.createElement("button");c.type="button",c.className="easy-form-quantity-btn easy-form-quantity-increment",c.textContent="+",c.setAttribute("aria-label","Incrementar"),r!==void 0&&s>=r&&(c.disabled=!0,c.classList.add("disabled")),i.addEventListener("click",()=>{let m=Math.max(a,Number(d.value)-o);d.value=String(m),this.onChange(m),p()}),c.addEventListener("click",()=>{let m=r!==void 0?Math.min(r,Number(d.value)+o):Number(d.value)+o;d.value=String(m),this.onChange(m),p()}),d.addEventListener("input",m=>{let u=m.target,f=Number(u.value);isNaN(f)&&(f=a),f<a&&(f=a),r!==void 0&&f>r&&(f=r),u.value=String(f),this.onChange(f),p()}),d.addEventListener("blur",()=>{this.onBlur()});let p=()=>{let m=Number(d.value);i.disabled=m<=a,i.classList.toggle("disabled",m<=a),r!==void 0?(c.disabled=m>=r,c.classList.toggle("disabled",m>=r)):(c.disabled=!1,c.classList.remove("disabled"))};return n.appendChild(i),n.appendChild(d),n.appendChild(c),t.appendChild(n),this.createFieldContainer(t)}};var ge=class extends v{render(){let t=document.createElement("div");t.className="easy-form-accordion-select-container";let e=this.field,a=this.value??null;return e.options.forEach(r=>{let o=typeof r=="string"?r:r.value,s=typeof r=="string"?r:r.label,n=typeof r=="object"&&"description"in r&&r.description?r.description:void 0,i=document.createElement("div");i.className="easy-form-accordion-item",i.setAttribute("data-value",String(o)),(a===o||Array.isArray(a)&&a.includes(o))&&i.classList.add("selected");let d=document.createElement("div");d.className="easy-form-accordion-header",d.setAttribute("role","button"),d.setAttribute("tabindex","0"),d.setAttribute("aria-expanded","false");let c=document.createElement("div");c.className="easy-form-accordion-header-content";let p=document.createElement("div");p.className="easy-form-accordion-indicator",e.multiple?(p.classList.add("checkbox"),Array.isArray(a)&&a.includes(o)&&p.classList.add("checked")):(p.classList.add("radio"),a===o&&p.classList.add("checked"));let m=document.createElement("span");m.className="easy-form-accordion-label",m.textContent=s;let u=document.createElement("span");u.className="easy-form-accordion-arrow",u.textContent="\u25BC",c.appendChild(p),c.appendChild(m),d.appendChild(c),d.appendChild(u);let f=document.createElement("div");if(f.className="easy-form-accordion-content",n){let g=document.createElement("p");g.className="easy-form-accordion-description",g.textContent=n,f.appendChild(g)}if(typeof r=="object"&&"content"in r&&r.content){let g=document.createElement("div");g.className="easy-form-accordion-custom-content",typeof r.content=="string"?g.textContent=r.content:r.content instanceof HTMLElement&&g.appendChild(r.content),f.appendChild(g)}i.appendChild(d),i.appendChild(f);let b=()=>{let g=i.classList.contains("open");e.multiple||t.querySelectorAll(".easy-form-accordion-item").forEach(y=>{if(y!==i){y.classList.remove("open");let E=y.querySelector(".easy-form-accordion-header"),S=y.querySelector(".easy-form-accordion-content"),x=y.querySelector(".easy-form-accordion-arrow");E&&E.setAttribute("aria-expanded","false"),S&&(S.style.maxHeight=""),x&&(x.style.transform="rotate(0deg)")}}),g?(i.classList.remove("open"),d.setAttribute("aria-expanded","false"),f.style.maxHeight="",u.style.transform="rotate(0deg)"):(i.classList.add("open"),d.setAttribute("aria-expanded","true"),f.style.maxHeight=f.scrollHeight+"px",u.style.transform="rotate(180deg)")},h=()=>{if(e.multiple){let g=Array.isArray(a)?[...a]:[],y=g.indexOf(o);y>-1?(g.splice(y,1),i.classList.remove("selected"),p.classList.remove("checked")):(g.push(o),i.classList.add("selected"),p.classList.add("checked")),this.onChange(g.length>0?g:null)}else t.querySelectorAll(".easy-form-accordion-item").forEach(g=>{g.classList.remove("selected");let y=g.querySelector(".easy-form-accordion-indicator");y&&y.classList.remove("checked")}),i.classList.add("selected"),p.classList.add("checked"),this.onChange(o)};d.addEventListener("click",g=>{g.stopPropagation(),h(),b()}),d.addEventListener("keydown",g=>{(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),h(),b())}),(a===o||Array.isArray(a)&&a.includes(o))&&(!e.multiple||e.autoExpand)&&setTimeout(()=>{i.classList.add("open"),d.setAttribute("aria-expanded","true"),f.style.maxHeight=f.scrollHeight+"px",u.style.transform="rotate(180deg)"},0),t.appendChild(i)}),this.createFieldContainer(t)}};var be=class extends v{render(){let t=document.createElement("div");t.className="easy-form-image-grid-container";let e=this.field,a=this.value??null,r=e.columns??3,o=e.imageSize??"medium";return t.style.gridTemplateColumns=`repeat(${r}, 1fr)`,t.style.gap=e.gap??"1rem",e.options.forEach(s=>{let n=typeof s=="string"?s:s.value,i=typeof s=="string"?s:s.label,d=typeof s=="object"&&"image"in s&&s.image?s.image:void 0,c=typeof s=="object"&&"description"in s&&s.description?s.description:void 0,p=document.createElement("div");p.className=`easy-form-image-grid-item easy-form-image-grid-${o}`,p.setAttribute("data-value",String(n)),p.setAttribute("role","button"),p.setAttribute("tabindex","0"),p.setAttribute("aria-label",i),(a===n||Array.isArray(a)&&a.includes(n))&&p.classList.add("selected");let m=document.createElement("div");if(m.className="easy-form-image-grid-image-container",d){let h=document.createElement("img");h.src=d,h.alt=i,h.className="easy-form-image-grid-image",m.appendChild(h)}else{let h=document.createElement("div");h.className="easy-form-image-grid-placeholder",h.textContent=i.charAt(0).toUpperCase(),m.appendChild(h)}let u=document.createElement("div");u.className="easy-form-image-grid-indicator",e.multiple?(u.classList.add("checkbox"),Array.isArray(a)&&a.includes(n)&&(u.classList.add("checked"),u.innerHTML="\u2713")):(u.classList.add("radio"),a===n&&(u.classList.add("checked"),u.innerHTML="\u25CF")),m.appendChild(u);let f=document.createElement("div");if(f.className="easy-form-image-grid-label",f.textContent=i,c){let h=document.createElement("div");h.className="easy-form-image-grid-description",h.textContent=c,p.appendChild(h)}p.appendChild(m),p.appendChild(f);let b=()=>{if(e.multiple){let h=Array.isArray(a)?[...a]:[],g=h.indexOf(n);g>-1?(h.splice(g,1),p.classList.remove("selected"),u.classList.remove("checked"),u.innerHTML=""):(h.push(n),p.classList.add("selected"),u.classList.add("checked"),u.innerHTML="\u2713"),this.onChange(h.length>0?h:null)}else t.querySelectorAll(".easy-form-image-grid-item").forEach(h=>{h.classList.remove("selected");let g=h.querySelector(".easy-form-image-grid-indicator");g&&(g.classList.remove("checked"),g.innerHTML="")}),p.classList.add("selected"),u.classList.add("checked"),u.innerHTML="\u25CF",this.onChange(n)};p.addEventListener("click",b),p.addEventListener("keydown",h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),b())}),p.addEventListener("blur",()=>{this.onBlur()}),t.appendChild(p)}),this.createFieldContainer(t)}};var ye=class extends v{constructor(){super(...arguments);this.inputs=[]}render(){let e=document.createElement("div");e.className="easy-form-otp-container";let r=this.field.length??6,o=this.value??"",s=String(o).padStart(r,"").slice(0,r);for(let n=0;n<r;n++){let i=document.createElement("input");i.type="text",i.inputMode="numeric",i.maxLength=1,i.className="easy-form-otp-input",i.setAttribute("aria-label",`C\xF3digo d\xEDgito ${n+1}`),s[n]&&(i.value=s[n]),this.applyCommonProps(i),i.id=`${this.getFieldId()}-${n}`;let d=n;i.addEventListener("input",c=>{let p=c.target,m=p.value.replace(/[^0-9]/g,"");p.value=m,m&&d<r-1&&this.inputs[d+1].focus(),this.updateOTPValue()}),i.addEventListener("keydown",c=>{let p=c.target;c.key==="Backspace"&&!p.value&&d>0&&(this.inputs[d-1].focus(),this.inputs[d-1].value="",this.updateOTPValue()),c.key==="ArrowLeft"&&d>0&&(c.preventDefault(),this.inputs[d-1].focus()),c.key==="ArrowRight"&&d<r-1&&(c.preventDefault(),this.inputs[d+1].focus())}),i.addEventListener("paste",c=>{c.preventDefault();let m=(c.clipboardData||window.clipboardData).getData("text").replace(/[^0-9]/g,"").slice(0,r);for(let f=0;f<m.length&&d+f<r;f++)this.inputs[d+f].value=m[f];let u=Math.min(d+m.length,r-1);this.inputs[u].focus(),this.updateOTPValue()}),i.addEventListener("focus",c=>{c.target.select()}),i.addEventListener("blur",()=>{this.onBlur()}),this.inputs.push(i),e.appendChild(i)}return this.createFieldContainer(e)}updateOTPValue(){let e=this.inputs.map(o=>o.value).join(""),a=this.field,r=e.length===this.inputs.length?e:null;a.numeric&&r?this.onChange(Number(r)):this.onChange(r)}};var ir=6;function ve(l){return l?'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"/><line x1="1" y1="1" x2="23" y2="23"/></svg>':'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>'}var xe=class extends v{constructor(){super(...arguments);this.inputs=[];this.visible=!1}get passwordField(){return this.field}render(){let e=this.passwordField,a=!!e.characterSeparated,r=a?typeof e.characterSeparated=="number"?e.characterSeparated:ir:0;return a?this.createFieldContainer(this.renderSeparated(r)):this.createFieldContainer(this.renderSingle())}renderSingle(){let a=!!this.passwordField.showToggle,r=document.createElement("input");if(r.type="password",r.value=this.value??"",r.id=this.getFieldId(),this.applyCommonProps(r),this.field.placeholder&&(r.placeholder=this.field.placeholder),r.addEventListener("input",n=>{this.onChange(n.target.value)}),r.addEventListener("blur",()=>this.onBlur()),!a)return r;let o=document.createElement("div");o.className="easy-form-password-inner",r.classList.add("easy-form-password-input"),o.appendChild(r);let s=document.createElement("button");return s.type="button",s.className="easy-form-password-toggle",s.setAttribute("aria-label","Mostrar contrase\xF1a"),s.innerHTML=ve(!1),s.addEventListener("click",()=>{this.visible=!this.visible,r.type=this.visible?"text":"password",s.setAttribute("aria-label",this.visible?"Ocultar contrase\xF1a":"Mostrar contrase\xF1a"),s.innerHTML=ve(this.visible)}),o.appendChild(s),o}renderSeparated(e){let r=!!this.passwordField.showToggle,o=this.value??"",s=String(o).slice(0,e),n=document.createElement("div");n.className="easy-form-password-separated";for(let i=0;i<e;i++){let d=document.createElement("input");d.type="password",d.maxLength=1,d.className="easy-form-password-separated-input",d.setAttribute("aria-label",`Car\xE1cter ${i+1} de ${e}`),s[i]&&(d.value=s[i]),this.applyCommonProps(d),d.id=i===0?this.getFieldId():`${this.getFieldId()}-${i}`,i>0&&d.removeAttribute("name");let c=i;d.addEventListener("input",p=>{p.target.value&&c<e-1&&this.inputs[c+1].focus(),this.updateSeparatedValue()}),d.addEventListener("keydown",p=>{p.key==="Backspace"&&!p.target.value&&c>0&&(this.inputs[c-1].focus(),this.inputs[c-1].value="",this.updateSeparatedValue()),p.key==="ArrowLeft"&&c>0&&(p.preventDefault(),this.inputs[c-1].focus()),p.key==="ArrowRight"&&c<e-1&&(p.preventDefault(),this.inputs[c+1].focus())}),d.addEventListener("paste",p=>{p.preventDefault();let u=((p.clipboardData||window.clipboardData)?.getData("text")||"").slice(0,e-c).split("");for(let b=0;b<u.length&&c+b<e;b++)this.inputs[c+b].value=u[b];let f=Math.min(c+u.length,e-1);this.inputs[f].focus(),this.updateSeparatedValue()}),d.addEventListener("focus",p=>p.target.select()),d.addEventListener("blur",()=>this.onBlur()),this.inputs.push(d),n.appendChild(d)}if(r){let i=document.createElement("div");i.className="easy-form-password-separated-toggle";let d=document.createElement("button");d.type="button",d.className="easy-form-password-toggle",d.setAttribute("aria-label","Mostrar contrase\xF1a"),d.innerHTML=ve(!1),d.addEventListener("click",()=>{this.visible=!this.visible;let c=this.visible?"text":"password";this.inputs.forEach(p=>{p.type=c}),d.setAttribute("aria-label",this.visible?"Ocultar contrase\xF1a":"Mostrar contrase\xF1a"),d.innerHTML=ve(this.visible)}),i.appendChild(d),n.appendChild(i)}return n}updateSeparatedValue(){let e=this.inputs.map(a=>a.value).join("");this.onChange(e||null)}};var ke=class extends v{render(){let t=this.field,e=t.accept??"",a=t.multiple??!1,r=document.createElement("div");r.className="easy-form-file-drop",r.setAttribute("tabindex","0");let o=document.createElement("input");o.type="file",o.className="easy-form-file-drop-input",o.style.display="none",e&&(o.accept=e),a&&(o.multiple=!0);let s=document.createElement("span");s.className="easy-form-file-drop-label",s.textContent="Arrastra archivos aqu\xED o haz clic para seleccionar",r.appendChild(s),r.appendChild(o);let n=document.createElement("div");n.className="easy-form-file-drop-list";let i=c=>{let p=c?Array.isArray(c)?c.map(m=>m.name):[c.name]:[];if(n.innerHTML="",p.length===0){n.style.display="none";return}n.style.display="block",p.forEach(m=>{let u=document.createElement("div");u.className="easy-form-file-drop-item",u.textContent=m,n.appendChild(u)})};i(this.value);let d=c=>{if(!c||c.length===0)return;let p=a?Array.from(c):c[0];this.onChange(p),this.onBlur(),i(p)};return r.addEventListener("click",()=>{o.click()}),o.addEventListener("change",c=>{let p=c.target;d(p.files),p.value=""}),r.addEventListener("dragover",c=>{c.preventDefault(),c.stopPropagation(),r.classList.add("easy-form-file-drop-over")}),r.addEventListener("dragleave",c=>{c.preventDefault(),c.stopPropagation(),r.classList.remove("easy-form-file-drop-over")}),r.addEventListener("drop",c=>{c.preventDefault(),c.stopPropagation(),r.classList.remove("easy-form-file-drop-over"),d(c.dataTransfer?.files??null)}),r.appendChild(n),this.createFieldContainer(r)}};var nr="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css",we=class extends v{constructor(){super(...arguments);this.mapInstance=null;this.markerInstance=null;this.invalidateSizeTimeout=null}cleanup(){this.invalidateSizeTimeout&&(clearTimeout(this.invalidateSizeTimeout),this.invalidateSizeTimeout=null),this.mapInstance&&(this.mapInstance.remove(),this.mapInstance=null),this.markerInstance=null}render(){let e=this.field,a=e.center??{lat:0,lng:0},r=e.zoom??13,o=this.value,s=typeof o=="object"&&o?.lat!=null?o.lat:a.lat,n=typeof o=="object"&&o?.lng!=null?o.lng:a.lng,i=document.createElement("div");i.className="easy-form-map";let d=document.createElement("div");d.className="easy-form-map-inputs";let c=document.createElement("input");c.type="number",c.step="any",c.placeholder="Latitud",c.value=String(s),c.className="easy-form-map-lat";let p=document.createElement("input");p.type="number",p.step="any",p.placeholder="Longitud",p.value=String(n),p.className="easy-form-map-lng";let m=()=>{let y=parseFloat(c.value),E=parseFloat(p.value);!isNaN(y)&&!isNaN(E)&&(this.onChange({lat:y,lng:E}),this.syncMarkerPosition(y,E)),this.onBlur()};c.addEventListener("change",m),p.addEventListener("change",m),d.appendChild(c),d.appendChild(p),i.appendChild(d);let u=document.createElement("div");u.className="easy-form-map-container",i.appendChild(u);let f="easy-form-leaflet-css",b=!1,h=document.createElement("link");return h.id=f,h.rel="stylesheet",h.href=nr,h.onload=()=>{b=!0},i.insertBefore(h,i.firstChild),(async()=>{if(typeof window>"u")return;u.style.height="300px",u.style.width="100%",u.style.position="relative",u.style.overflow="hidden",u.style.display="block",await new Promise(k=>{let T=()=>{b&&u.offsetWidth>0&&u.offsetHeight>0?k(void 0):requestAnimationFrame(T)};T()}),await new Promise(k=>setTimeout(k,50));let y;try{y=await import("leaflet")}catch{u.innerHTML=`
3365
3431
  <div style="padding:2rem;text-align:center;color:#666;font-size:0.875rem;background:#f9f9f9;border-radius:4px;">
3366
3432
  <strong>Campo map requiere Leaflet</strong><br><br>
3367
3433
  Instala e importa Leaflet para usar el mapa interactivo:<br>
@@ -3369,16 +3435,16 @@ Please report this to https://github.com/markedjs/marked.`,l){let a="<p>An error
3369
3435
  En tu app: <code>import 'leaflet'</code> y <code>import 'leaflet/dist/leaflet.css'</code><br>
3370
3436
  <a href="https://easyforms.dev/docs/tipos-campos#map" target="_blank" rel="noopener" style="color:var(--easy-form-primary,#007bff);">Ver documentaci\xF3n</a>
3371
3437
  </div>
3372
- `;return}delete y.Icon.Default.prototype._getIconUrl,y.Icon.Default.mergeOptions({iconRetinaUrl:"https://unpkg.com/leaflet@1.9.4/dist/images/marker-icon-2x.png",iconUrl:"https://unpkg.com/leaflet@1.9.4/dist/images/marker-icon.png",shadowUrl:"https://unpkg.com/leaflet@1.9.4/dist/images/marker-shadow.png"}),this.mapInstance=y.map(u,{preferCanvas:!1,zoomControl:!0}).setView([o,n],r);let E=y.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",{attribution:'&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>',maxZoom:19}).addTo(this.mapInstance);this.mapInstance.invalidateSize(),E.on("load",()=>{this.mapInstance&&this.mapInstance.invalidateSize()});let S=()=>{this.mapInstance&&this.mapInstance.invalidateSize()};this.invalidateSizeTimeout=setTimeout(S,100),setTimeout(S,300),setTimeout(S,500),new IntersectionObserver(w=>{w.forEach(T=>{T.isIntersecting&&this.mapInstance&&setTimeout(()=>{this.mapInstance?.invalidateSize()},100)})}).observe(u),this.markerInstance=y.marker([o,n],{draggable:!0}).addTo(this.mapInstance).on("dragend",()=>{let w=this.markerInstance.getLatLng();c.value=String(Number(w.lat.toFixed(6))),p.value=String(Number(w.lng.toFixed(6))),this.onChange({lat:w.lat,lng:w.lng}),this.onBlur()}),this.mapInstance.on("click",w=>{let{lat:T,lng:N}=w.latlng;this.markerInstance.setLatLng([T,N]),c.value=String(Number(T.toFixed(6))),p.value=String(Number(N.toFixed(6))),this.onChange({lat:T,lng:N}),this.onBlur()})})(),this.createFieldContainer(i)}syncMarkerPosition(e,a){this.mapInstance&&this.markerInstance&&(this.markerInstance.setLatLng([e,a]),this.mapInstance.setView([e,a]),setTimeout(()=>{this.mapInstance?.invalidateSize()},50))}};var Et=l=>`<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="${l?"currentColor":"none"}" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" role="img" aria-hidden="true"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></svg>`,Ee=class extends v{render(){let t=this.field,e=t.max??5,a=t.half??!1,r=this.value!=null?Number(this.value):0,s=document.createElement("div");s.className="easy-form-rating",s.setAttribute("role","slider"),s.setAttribute("aria-valuemin","0"),s.setAttribute("aria-valuemax",String(e)),s.setAttribute("aria-valuenow",String(r)),s.setAttribute("aria-label",this.field.label||"Rating"),s.setAttribute("tabindex","0");let o=document.createElement("div");o.className="easy-form-rating-stars";for(let n=1;n<=e;n++){let i=document.createElement("button");i.type="button";let d=r>=n||a&&r>=n-.5;i.className=d?"easy-form-rating-star easy-form-rating-star-filled":"easy-form-rating-star",i.innerHTML=Et(d),i.setAttribute("aria-label",`${n} de ${e}`),i.addEventListener("click",c=>{c.preventDefault();let p=c.target.closest("button")?.getBoundingClientRect(),m=n;if(a&&p){let u=p.left+p.width/2;m=c.clientX<u?n-.5:n}this.onChange(m),this.onBlur(),this.rerenderStars(s,e,m,a),s.setAttribute("aria-valuenow",String(m))}),o.appendChild(i)}return s.appendChild(o),s.addEventListener("keydown",n=>{let i=Number(s.getAttribute("aria-valuenow"))||0,d=i;n.key==="ArrowRight"||n.key==="ArrowUp"?(n.preventDefault(),d=Math.min(e,a?i+.5:i+1),this.onChange(d)):(n.key==="ArrowLeft"||n.key==="ArrowDown")&&(n.preventDefault(),d=Math.max(0,a?i-.5:i-1),this.onChange(d)),d!==i&&(this.rerenderStars(s,e,d,a),s.setAttribute("aria-valuenow",String(d)))}),this.createFieldContainer(s)}rerenderStars(t,e,a,r){t.querySelectorAll(".easy-form-rating-star").forEach((o,n)=>{let i=n+1,d=a>=i||r&&a>=i-.5;o.className=d?"easy-form-rating-star easy-form-rating-star-filled":"easy-form-rating-star",o.innerHTML=Et(d)})}};var Ce=class extends v{render(){let t=this.field,e=t.min??0,a=t.max??100,r=t.step??1,s=t.showValue??!1,o=document.createElement("input");o.type="range",o.min=String(e),o.max=String(a),o.step=String(r),o.value=this.value!=null?String(this.value):String(e),o.setAttribute("aria-valuemin",String(e)),o.setAttribute("aria-valuemax",String(a)),o.setAttribute("aria-valuenow",o.value),this.applyCommonProps(o),o.addEventListener("input",i=>{let d=i.target,c=r>=1?parseInt(d.value,10):parseFloat(d.value);this.onChange(isNaN(c)?e:c),n&&(n.textContent=d.value),o.setAttribute("aria-valuenow",d.value)}),o.addEventListener("change",()=>{this.onBlur()});let n=null;if(s){n=document.createElement("span"),n.className="easy-form-slider-value",n.textContent=o.value;let i=document.createElement("div");return i.className="easy-form-slider-wrapper",i.appendChild(o),i.appendChild(n),this.createFieldContainer(i)}return this.createFieldContainer(o)}};var ir=/^#?([0-9A-Fa-f]{6})$/;function Oe(l){let t=l.match(ir);return t?`#${t[1].toLowerCase()}`:/^[0-9A-Fa-f]{6}$/.test(l)?`#${l.toLowerCase()}`:"#000000"}var Se=class extends v{render(){let e=this.field.defaultValue??"#000000",a=this.value!=null&&typeof this.value=="string"?Oe(this.value):e,r=document.createElement("div");r.className="easy-form-color-wrapper";let s=document.createElement("input");s.type="color",s.value=a,s.setAttribute("value",a),s.setAttribute("aria-label",this.field.label||"Color"),s.id=`${this.getFieldId()}-picker`,this.field.disabled&&s.setAttribute("disabled","true");let o=document.createElement("input");o.type="text",o.value=a,o.setAttribute("aria-label",`${this.field.label||"Color"} (hex)`),o.placeholder="#000000",o.className="easy-form-color-text",this.applyCommonProps(o);let n=()=>{let d=s.value||"#000000",c=Oe(d);o.value=c,this.onChange(c)},i=()=>{let d=o.value.trim(),c=d.startsWith("#")?d:`#${d}`;if(/^#[0-9A-Fa-f]{6}$/.test(c)){let p=Oe(c);s.value=p,this.onChange(p)}};return s.addEventListener("input",n),s.addEventListener("change",()=>{n(),this.onBlur()}),o.addEventListener("input",i),o.addEventListener("blur",()=>{i(),this.onBlur()}),r.appendChild(s),r.appendChild(o),this.createFieldContainer(r)}};var Re=class extends v{constructor(){super(...arguments);this.textareaEl=null;this.previewEl=null;this.previewModeEl=null}render(){let e=this.field,a=e.mode??"split",r=e.toolbar??!0,s=e.height??"300px",o=document.createElement("div");return o.className=`easy-form-markdown easy-form-markdown-mode-${a}`,a==="tabs"?this.renderTabsMode(o,e,r,s):a==="preview"?this.renderPreviewMode(o,e,r,s):this.renderSplitMode(o,e,r,s),this.checkAndShowDependenciesMessage(),this.createFieldContainer(o)}renderSplitMode(e,a,r,s){if(r){let d=this.createToolbar();e.appendChild(d)}let o=document.createElement("div");o.className="easy-form-markdown-editor-wrapper easy-form-markdown-split";let n=document.createElement("textarea");n.className="easy-form-markdown-textarea",n.value=this.value||"",n.placeholder=a.placeholder||"Escribe en Markdown...",n.style.height=s,this.textareaEl=n,n.addEventListener("input",()=>{this.onChange(n.value),this.updatePreview()}),n.addEventListener("blur",()=>{this.onBlur()}),o.appendChild(n),e.appendChild(o);let i=document.createElement("div");i.className="easy-form-markdown-preview",i.style.height=s,this.previewEl=i,this.value?this.renderPreview(this.value,i):i.innerHTML='<div class="easy-form-markdown-preview-placeholder">Vista previa</div>',o.appendChild(i)}renderTabsMode(e,a,r,s){let o=document.createElement("div");o.className="easy-form-markdown-tabs";let n=document.createElement("div");n.className="easy-form-markdown-tabs-header";let i=document.createElement("button");i.type="button",i.className="easy-form-markdown-tab active",i.textContent="Editor",i.addEventListener("click",()=>this.switchTab("editor"));let d=document.createElement("button");d.type="button",d.className="easy-form-markdown-tab",d.textContent="Vista previa",d.addEventListener("click",()=>this.switchTab("preview")),n.appendChild(i),n.appendChild(d),o.appendChild(n);let c=document.createElement("div");if(c.className="easy-form-markdown-tabs-content",r){let u=this.createToolbar();c.appendChild(u)}let p=document.createElement("textarea");p.className="easy-form-markdown-textarea",p.value=this.value||"",p.placeholder=a.placeholder||"Escribe en Markdown...",p.style.height=s,this.textareaEl=p,p.addEventListener("input",()=>{this.onChange(p.value),d.classList.contains("active")&&this.renderPreview(p.value,this.previewEl)}),p.addEventListener("blur",()=>{this.onBlur()}),c.appendChild(p);let m=document.createElement("div");m.className="easy-form-markdown-preview",m.style.height=s,m.style.display="none",this.previewEl=m,this.value?this.renderPreview(this.value,m):m.innerHTML='<div class="easy-form-markdown-preview-placeholder">Vista previa</div>',c.appendChild(m),o.appendChild(c),e.appendChild(o),o._editorTab=i,o._previewTab=d,o._textarea=p,o._preview=m}renderPreviewMode(e,a,r,s){if(r){let d=this.createToolbar();e.appendChild(d)}let o=document.createElement("div");o.className="easy-form-markdown-preview-mode",o.style.height=s,this.previewModeEl=o;let n=document.createElement("div");n.className="easy-form-markdown-preview-mode-content",this.renderPreview(this.value||"",n);let i=document.createElement("textarea");i.className="easy-form-markdown-textarea-invisible",i.value=this.value||"",i.placeholder=a.placeholder||"Escribe...",i.setAttribute("aria-label","Editor de markdown"),i.addEventListener("input",()=>{this.onChange(i.value),this.renderPreview(i.value,n)}),i.addEventListener("blur",()=>{this.onBlur()}),o.appendChild(i),o.appendChild(n),e.appendChild(o)}switchTab(e){let a=this.textareaEl?.closest(".easy-form-markdown-tabs");if(!a)return;let r=a._editorTab,s=a._previewTab,o=a._textarea,n=a._preview;e==="editor"?(r.classList.add("active"),s.classList.remove("active"),o.style.display="block",n.style.display="none"):(r.classList.remove("active"),s.classList.add("active"),o.style.display="none",n.style.display="block",o.value&&this.renderPreview(o.value,n))}createToolbar(){let e=document.createElement("div");return e.className="easy-form-markdown-toolbar",[{icon:"<strong>B</strong>",title:"Negrita",prefix:"**",suffix:"**",placeholder:"texto en negrita"},{icon:"<em>I</em>",title:"Cursiva",prefix:"_",suffix:"_",placeholder:"texto en cursiva"},{icon:"H1",title:"Encabezado 1",prefix:"# ",suffix:"",placeholder:"t\xEDtulo"},{icon:"H2",title:"Encabezado 2",prefix:"## ",suffix:"",placeholder:"t\xEDtulo"},{icon:"\u{1F517}",title:"Enlace",prefix:"[",suffix:"](url)",placeholder:"texto del enlace"},{icon:"<code>&lt;/&gt;</code>",title:"C\xF3digo",prefix:"`",suffix:"`",placeholder:"c\xF3digo"},{icon:"\u{1F4F7}",title:"Imagen",prefix:"![",suffix:"](url)",placeholder:"texto alternativo"},{icon:"\u2022",title:"Lista",prefix:"- ",suffix:"",placeholder:"elemento"},{icon:"1.",title:"Lista numerada",prefix:"1. ",suffix:"",placeholder:"elemento"},{icon:'"',title:"Cita",prefix:"> ",suffix:"",placeholder:"cita"}].forEach(r=>{let s=document.createElement("button");s.type="button",s.className="easy-form-markdown-toolbar-btn",s.title=r.title,s.innerHTML=r.icon,s.addEventListener("click",()=>this.insertMarkdown(r.prefix,r.suffix,r.placeholder)),e.appendChild(s)}),e}insertMarkdown(e,a,r){let s=this.textareaEl;if(!s){if(this.previewModeEl){let m=this.previewModeEl.querySelector(".easy-form-markdown-textarea-invisible");m&&this.insertMarkdownToPreviewMode(m,e,a,r)}return}let o=s.selectionStart,n=s.selectionEnd,i=s.value,d=i.substring(o,n)||(r??""),c=i.substring(0,o)+e+d+a+i.substring(n);s.value=c;let p=o+e.length+d.length;s.setSelectionRange(p,p),s.focus(),this.onChange(c),this.updatePreview()}insertMarkdownToPreviewMode(e,a,r,s){let o=e.selectionStart,n=e.selectionEnd,i=e.value,d=i.substring(o,n)||(s??""),c=i.substring(0,o)+a+d+r+i.substring(n);e.value=c;let p=o+a.length+d.length;if(e.setSelectionRange(p,p),e.focus(),this.onChange(c),this.previewModeEl){let m=this.previewModeEl.querySelector(".easy-form-markdown-preview-mode-content");m&&this.renderPreview(c,m)}}updatePreview(){if(!this.previewEl)return;let e=this.textareaEl?.value||"";if(!e){this.previewEl.innerHTML='<div class="easy-form-markdown-preview-placeholder">Vista previa</div>';return}this.renderPreview(e,this.previewEl)}async renderPreview(e,a){if(!e||!e.trim()){a.innerHTML='<div class="easy-form-markdown-preview-placeholder">Vista previa</div>';return}a.innerHTML='<div class="easy-form-markdown-preview-loading">Cargando...</div>';try{let r=await Promise.resolve().then(()=>(et(),Je)),o=await(r.default||r).parse(e);a.innerHTML=se(o)}catch{a.innerHTML=`
3438
+ `;return}delete y.Icon.Default.prototype._getIconUrl,y.Icon.Default.mergeOptions({iconRetinaUrl:"https://unpkg.com/leaflet@1.9.4/dist/images/marker-icon-2x.png",iconUrl:"https://unpkg.com/leaflet@1.9.4/dist/images/marker-icon.png",shadowUrl:"https://unpkg.com/leaflet@1.9.4/dist/images/marker-shadow.png"}),this.mapInstance=y.map(u,{preferCanvas:!1,zoomControl:!0}).setView([s,n],r);let E=y.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",{attribution:'&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>',maxZoom:19}).addTo(this.mapInstance);this.mapInstance.invalidateSize(),E.on("load",()=>{this.mapInstance&&this.mapInstance.invalidateSize()});let S=()=>{this.mapInstance&&this.mapInstance.invalidateSize()};this.invalidateSizeTimeout=setTimeout(S,100),setTimeout(S,300),setTimeout(S,500),new IntersectionObserver(k=>{k.forEach(T=>{T.isIntersecting&&this.mapInstance&&setTimeout(()=>{this.mapInstance?.invalidateSize()},100)})}).observe(u),this.markerInstance=y.marker([s,n],{draggable:!0}).addTo(this.mapInstance).on("dragend",()=>{let k=this.markerInstance.getLatLng();c.value=String(Number(k.lat.toFixed(6))),p.value=String(Number(k.lng.toFixed(6))),this.onChange({lat:k.lat,lng:k.lng}),this.onBlur()}),this.mapInstance.on("click",k=>{let{lat:T,lng:N}=k.latlng;this.markerInstance.setLatLng([T,N]),c.value=String(Number(T.toFixed(6))),p.value=String(Number(N.toFixed(6))),this.onChange({lat:T,lng:N}),this.onBlur()})})(),this.createFieldContainer(i)}syncMarkerPosition(e,a){this.mapInstance&&this.markerInstance&&(this.markerInstance.setLatLng([e,a]),this.mapInstance.setView([e,a]),setTimeout(()=>{this.mapInstance?.invalidateSize()},50))}};var St=l=>`<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="${l?"currentColor":"none"}" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" role="img" aria-hidden="true"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></svg>`,Ee=class extends v{render(){let t=this.field,e=t.max??5,a=t.half??!1,r=this.value!=null?Number(this.value):0,o=document.createElement("div");o.className="easy-form-rating",o.setAttribute("role","slider"),o.setAttribute("aria-valuemin","0"),o.setAttribute("aria-valuemax",String(e)),o.setAttribute("aria-valuenow",String(r)),o.setAttribute("aria-label",this.field.label||"Rating"),o.setAttribute("tabindex","0");let s=document.createElement("div");s.className="easy-form-rating-stars";for(let n=1;n<=e;n++){let i=document.createElement("button");i.type="button";let d=r>=n||a&&r>=n-.5;i.className=d?"easy-form-rating-star easy-form-rating-star-filled":"easy-form-rating-star",i.innerHTML=St(d),i.setAttribute("aria-label",`${n} de ${e}`),i.addEventListener("click",c=>{c.preventDefault();let p=c.target.closest("button")?.getBoundingClientRect(),m=n;if(a&&p){let u=p.left+p.width/2;m=c.clientX<u?n-.5:n}this.onChange(m),this.onBlur(),this.rerenderStars(o,e,m,a),o.setAttribute("aria-valuenow",String(m))}),s.appendChild(i)}return o.appendChild(s),o.addEventListener("keydown",n=>{let i=Number(o.getAttribute("aria-valuenow"))||0,d=i;n.key==="ArrowRight"||n.key==="ArrowUp"?(n.preventDefault(),d=Math.min(e,a?i+.5:i+1),this.onChange(d)):(n.key==="ArrowLeft"||n.key==="ArrowDown")&&(n.preventDefault(),d=Math.max(0,a?i-.5:i-1),this.onChange(d)),d!==i&&(this.rerenderStars(o,e,d,a),o.setAttribute("aria-valuenow",String(d)))}),this.createFieldContainer(o)}rerenderStars(t,e,a,r){t.querySelectorAll(".easy-form-rating-star").forEach((s,n)=>{let i=n+1,d=a>=i||r&&a>=i-.5;s.className=d?"easy-form-rating-star easy-form-rating-star-filled":"easy-form-rating-star",s.innerHTML=St(d)})}};var Ce=class extends v{render(){let t=this.field,e=t.min??0,a=t.max??100,r=t.step??1,o=t.showValue??!1,s=document.createElement("input");s.type="range",s.min=String(e),s.max=String(a),s.step=String(r),s.value=this.value!=null?String(this.value):String(e),s.setAttribute("aria-valuemin",String(e)),s.setAttribute("aria-valuemax",String(a)),s.setAttribute("aria-valuenow",s.value),this.applyCommonProps(s),s.addEventListener("input",i=>{let d=i.target,c=r>=1?parseInt(d.value,10):parseFloat(d.value);this.onChange(isNaN(c)?e:c),n&&(n.textContent=d.value),s.setAttribute("aria-valuenow",d.value)}),s.addEventListener("change",()=>{this.onBlur()});let n=null;if(o){n=document.createElement("span"),n.className="easy-form-slider-value",n.textContent=s.value;let i=document.createElement("div");return i.className="easy-form-slider-wrapper",i.appendChild(s),i.appendChild(n),this.createFieldContainer(i)}return this.createFieldContainer(s)}};var lr=/^#?([0-9A-Fa-f]{6})$/;function Oe(l){let t=l.match(lr);return t?`#${t[1].toLowerCase()}`:/^[0-9A-Fa-f]{6}$/.test(l)?`#${l.toLowerCase()}`:"#000000"}var Se=class extends v{render(){let e=this.field.defaultValue??"#000000",a=this.value!=null&&typeof this.value=="string"?Oe(this.value):e,r=document.createElement("div");r.className="easy-form-color-wrapper";let o=document.createElement("input");o.type="color",o.value=a,o.setAttribute("value",a),o.setAttribute("aria-label",this.field.label||"Color"),o.id=`${this.getFieldId()}-picker`,this.field.disabled&&o.setAttribute("disabled","true");let s=document.createElement("input");s.type="text",s.value=a,s.setAttribute("aria-label",`${this.field.label||"Color"} (hex)`),s.placeholder="#000000",s.className="easy-form-color-text",this.applyCommonProps(s);let n=()=>{let d=o.value||"#000000",c=Oe(d);s.value=c,this.onChange(c)},i=()=>{let d=s.value.trim(),c=d.startsWith("#")?d:`#${d}`;if(/^#[0-9A-Fa-f]{6}$/.test(c)){let p=Oe(c);o.value=p,this.onChange(p)}};return o.addEventListener("input",n),o.addEventListener("change",()=>{n(),this.onBlur()}),s.addEventListener("input",i),s.addEventListener("blur",()=>{i(),this.onBlur()}),r.appendChild(o),r.appendChild(s),this.createFieldContainer(r)}};var Re=class extends v{constructor(){super(...arguments);this.textareaEl=null;this.previewEl=null;this.previewModeEl=null}render(){let e=this.field,a=e.mode??"split",r=e.toolbar??!0,o=e.height??"300px",s=document.createElement("div");return s.className=`easy-form-markdown easy-form-markdown-mode-${a}`,a==="tabs"?this.renderTabsMode(s,e,r,o):a==="preview"?this.renderPreviewMode(s,e,r,o):this.renderSplitMode(s,e,r,o),this.checkAndShowDependenciesMessage(),this.createFieldContainer(s)}renderSplitMode(e,a,r,o){if(r){let d=this.createToolbar();e.appendChild(d)}let s=document.createElement("div");s.className="easy-form-markdown-editor-wrapper easy-form-markdown-split";let n=document.createElement("textarea");n.className="easy-form-markdown-textarea",n.value=this.value||"",n.placeholder=a.placeholder||"Escribe en Markdown...",n.style.height=o,this.textareaEl=n,n.addEventListener("input",()=>{this.onChange(n.value),this.updatePreview()}),n.addEventListener("blur",()=>{this.onBlur()}),s.appendChild(n),e.appendChild(s);let i=document.createElement("div");i.className="easy-form-markdown-preview",i.style.height=o,this.previewEl=i,this.value?this.renderPreview(this.value,i):i.innerHTML='<div class="easy-form-markdown-preview-placeholder">Vista previa</div>',s.appendChild(i)}renderTabsMode(e,a,r,o){let s=document.createElement("div");s.className="easy-form-markdown-tabs";let n=document.createElement("div");n.className="easy-form-markdown-tabs-header";let i=document.createElement("button");i.type="button",i.className="easy-form-markdown-tab active",i.textContent="Editor",i.addEventListener("click",()=>this.switchTab("editor"));let d=document.createElement("button");d.type="button",d.className="easy-form-markdown-tab",d.textContent="Vista previa",d.addEventListener("click",()=>this.switchTab("preview")),n.appendChild(i),n.appendChild(d),s.appendChild(n);let c=document.createElement("div");if(c.className="easy-form-markdown-tabs-content",r){let u=this.createToolbar();c.appendChild(u)}let p=document.createElement("textarea");p.className="easy-form-markdown-textarea",p.value=this.value||"",p.placeholder=a.placeholder||"Escribe en Markdown...",p.style.height=o,this.textareaEl=p,p.addEventListener("input",()=>{this.onChange(p.value),d.classList.contains("active")&&this.renderPreview(p.value,this.previewEl)}),p.addEventListener("blur",()=>{this.onBlur()}),c.appendChild(p);let m=document.createElement("div");m.className="easy-form-markdown-preview",m.style.height=o,m.style.display="none",this.previewEl=m,this.value?this.renderPreview(this.value,m):m.innerHTML='<div class="easy-form-markdown-preview-placeholder">Vista previa</div>',c.appendChild(m),s.appendChild(c),e.appendChild(s),s._editorTab=i,s._previewTab=d,s._textarea=p,s._preview=m}renderPreviewMode(e,a,r,o){if(r){let d=this.createToolbar();e.appendChild(d)}let s=document.createElement("div");s.className="easy-form-markdown-preview-mode",s.style.height=o,this.previewModeEl=s;let n=document.createElement("div");n.className="easy-form-markdown-preview-mode-content",this.renderPreview(this.value||"",n);let i=document.createElement("textarea");i.className="easy-form-markdown-textarea-invisible",i.value=this.value||"",i.placeholder=a.placeholder||"Escribe...",i.setAttribute("aria-label","Editor de markdown"),i.addEventListener("input",()=>{this.onChange(i.value),this.renderPreview(i.value,n)}),i.addEventListener("blur",()=>{this.onBlur()}),s.appendChild(i),s.appendChild(n),e.appendChild(s)}switchTab(e){let a=this.textareaEl?.closest(".easy-form-markdown-tabs");if(!a)return;let r=a._editorTab,o=a._previewTab,s=a._textarea,n=a._preview;e==="editor"?(r.classList.add("active"),o.classList.remove("active"),s.style.display="block",n.style.display="none"):(r.classList.remove("active"),o.classList.add("active"),s.style.display="none",n.style.display="block",s.value&&this.renderPreview(s.value,n))}createToolbar(){let e=document.createElement("div");return e.className="easy-form-markdown-toolbar",[{icon:"<strong>B</strong>",title:"Negrita",prefix:"**",suffix:"**",placeholder:"texto en negrita"},{icon:"<em>I</em>",title:"Cursiva",prefix:"_",suffix:"_",placeholder:"texto en cursiva"},{icon:"H1",title:"Encabezado 1",prefix:"# ",suffix:"",placeholder:"t\xEDtulo"},{icon:"H2",title:"Encabezado 2",prefix:"## ",suffix:"",placeholder:"t\xEDtulo"},{icon:"\u{1F517}",title:"Enlace",prefix:"[",suffix:"](url)",placeholder:"texto del enlace"},{icon:"<code>&lt;/&gt;</code>",title:"C\xF3digo",prefix:"`",suffix:"`",placeholder:"c\xF3digo"},{icon:"\u{1F4F7}",title:"Imagen",prefix:"![",suffix:"](url)",placeholder:"texto alternativo"},{icon:"\u2022",title:"Lista",prefix:"- ",suffix:"",placeholder:"elemento"},{icon:"1.",title:"Lista numerada",prefix:"1. ",suffix:"",placeholder:"elemento"},{icon:'"',title:"Cita",prefix:"> ",suffix:"",placeholder:"cita"}].forEach(r=>{let o=document.createElement("button");o.type="button",o.className="easy-form-markdown-toolbar-btn",o.title=r.title,o.innerHTML=r.icon,o.addEventListener("click",()=>this.insertMarkdown(r.prefix,r.suffix,r.placeholder)),e.appendChild(o)}),e}insertMarkdown(e,a,r){let o=this.textareaEl;if(!o){if(this.previewModeEl){let m=this.previewModeEl.querySelector(".easy-form-markdown-textarea-invisible");m&&this.insertMarkdownToPreviewMode(m,e,a,r)}return}let s=o.selectionStart,n=o.selectionEnd,i=o.value,d=i.substring(s,n)||(r??""),c=i.substring(0,s)+e+d+a+i.substring(n);o.value=c;let p=s+e.length+d.length;o.setSelectionRange(p,p),o.focus(),this.onChange(c),this.updatePreview()}insertMarkdownToPreviewMode(e,a,r,o){let s=e.selectionStart,n=e.selectionEnd,i=e.value,d=i.substring(s,n)||(o??""),c=i.substring(0,s)+a+d+r+i.substring(n);e.value=c;let p=s+a.length+d.length;if(e.setSelectionRange(p,p),e.focus(),this.onChange(c),this.previewModeEl){let m=this.previewModeEl.querySelector(".easy-form-markdown-preview-mode-content");m&&this.renderPreview(c,m)}}updatePreview(){if(!this.previewEl)return;let e=this.textareaEl?.value||"";if(!e){this.previewEl.innerHTML='<div class="easy-form-markdown-preview-placeholder">Vista previa</div>';return}this.renderPreview(e,this.previewEl)}async renderPreview(e,a){if(!e||!e.trim()){a.innerHTML='<div class="easy-form-markdown-preview-placeholder">Vista previa</div>';return}a.innerHTML='<div class="easy-form-markdown-preview-loading">Cargando...</div>';try{let r=await Promise.resolve().then(()=>(et(),Je)),s=await(r.default||r).parse(e);a.innerHTML=oe(s)}catch{a.innerHTML=`
3373
3439
  <div class="easy-form-markdown-error">
3374
3440
  <strong>Vista previa no disponible</strong><br><br>
3375
3441
  Instala <code>marked</code> para usar la vista previa:<br>
3376
3442
  <code>npm install marked</code><br><br>
3377
3443
  En tu app: <code>import 'marked'</code>
3378
3444
  </div>
3379
- `}}checkAndShowDependenciesMessage(){setTimeout(async()=>{try{await Promise.resolve().then(()=>(et(),Je))}catch{let e=this.textareaEl?.closest(".easy-form-markdown")||this.previewModeEl?.closest(".easy-form-markdown");if(!e)return;let a=e.querySelector(".easy-form-markdown-preview-placeholder");a&&(a.innerHTML+='<br><small style="color:#888">Instala <code>marked</code> para renderizar</small>')}},100)}};var Ne=class extends v{constructor(){super(...arguments);this.selectedTags=[];this.inputElement=null;this.dropdownElement=null;this.tagsContainer=null;this.documentClickHandler=null;this.blurTimeout=null}cleanup(){this.documentClickHandler&&(document.removeEventListener("click",this.documentClickHandler),this.documentClickHandler=null),this.blurTimeout&&(clearTimeout(this.blurTimeout),this.blurTimeout=null)}render(){let e=document.createElement("div");e.className="easy-form-autocomplete-tags-container";let a=this.field;return this.selectedTags=this.initializeSelectedTags(a),this.tagsContainer=document.createElement("div"),this.tagsContainer.className="easy-form-autocomplete-tags",this.renderTags(),e.appendChild(this.tagsContainer),this.inputElement=document.createElement("input"),this.inputElement.type="text",this.inputElement.className="easy-form-autocomplete-tags-input",this.inputElement.placeholder=a.placeholder||"Escribe para buscar...",this.inputElement.setAttribute("autocomplete","off"),a.disabled&&(this.inputElement.disabled=!0),e.appendChild(this.inputElement),this.dropdownElement=document.createElement("ul"),this.dropdownElement.className="easy-form-autocomplete-tags-dropdown",this.dropdownElement.style.display="none",e.appendChild(this.dropdownElement),this.setupEventListeners(a),this.applyCommonProps(e.querySelector("input")),this.createFieldContainer(e)}initializeSelectedTags(e){let a=this.value;if(!a||!Array.isArray(a)||a.length===0)return[];let r=[];for(let s of a){let o=e.options.find(n=>{let i=typeof n=="string"?n:n.value;return String(i)===String(s)});if(o){let n=typeof o=="string"?o:o.label,i=typeof o=="string"?o:String(o.value);r.push({label:n,value:i})}else r.push({label:String(s),value:String(s)})}return r}renderTags(){if(this.tagsContainer){this.tagsContainer.innerHTML="";for(let e=0;e<this.selectedTags.length;e++){let a=this.selectedTags[e],r=document.createElement("span");r.className="easy-form-tag",r.setAttribute("data-index",String(e));let s=document.createElement("span");s.className="easy-form-tag-label",s.textContent=a.label,r.appendChild(s);let o=document.createElement("button");o.className="easy-form-tag-remove",o.type="button",o.setAttribute("aria-label",`Eliminar ${a.label}`),o.innerHTML="&times;",o.addEventListener("click",n=>{n.stopPropagation(),this.removeTag(e)}),r.appendChild(o),this.tagsContainer.appendChild(r)}}}removeTag(e){this.selectedTags.splice(e,1),this.renderTags(),this.notifyChange()}setupEventListeners(e){if(!this.inputElement||!this.dropdownElement)return;let a=e.minChars??0;this.inputElement.addEventListener("input",()=>{let r=this.inputElement.value.toLowerCase();if(r.length<a){this.dropdownElement.style.display="none";return}let s=this.filterOptions(e.options,r);this.renderDropdown(s,e)}),this.inputElement.addEventListener("keydown",r=>{if(r.key==="Enter"){r.preventDefault();let s=this.inputElement.value.trim();s&&this.addTagFromInput(e,s)}else r.key==="Backspace"&&this.inputElement.value===""&&this.selectedTags.length>0&&this.removeTag(this.selectedTags.length-1)}),this.inputElement.addEventListener("focus",()=>{let r=this.inputElement.value.toLowerCase();if(r.length>=a){let s=this.filterOptions(e.options,r);this.renderDropdown(s,e)}}),this.inputElement.addEventListener("click",r=>{r.stopPropagation();let s=this.inputElement.value.toLowerCase();if(s.length>=a){let o=this.filterOptions(e.options,s);this.renderDropdown(o,e)}else if(s.length===0){let o=this.filterOptions(e.options,"");this.renderDropdown(o,e)}}),this.documentClickHandler=r=>{let s=r.target;!this.dropdownElement.contains(s)&&s!==this.inputElement&&!this.tagsContainer?.contains(s)&&(this.dropdownElement.style.display="none")},document.addEventListener("click",this.documentClickHandler),this.inputElement.addEventListener("blur",()=>{this.blurTimeout=setTimeout(()=>{this.dropdownElement.style.display="none",this.onBlur()},150)})}filterOptions(e,a){let r=[];for(let s of e){let o=typeof s=="string"?s:s.label,n=typeof s=="string"?s:String(s.value);o.toLowerCase().includes(a)&&(this.selectedTags.some(d=>d.value.toLowerCase()===n.toLowerCase())||r.push({label:o,value:n}))}return r}renderDropdown(e,a){if(!this.dropdownElement||!this.inputElement)return;if(this.dropdownElement.innerHTML="",e.length===0){this.dropdownElement.style.display="none";return}let r=a.maxTags??1/0;if(this.selectedTags.length>=r){this.dropdownElement.style.display="none";return}for(let s of e){let o=document.createElement("li");o.className="easy-form-autocomplete-tags-option",o.textContent=s.label,o.setAttribute("role","option"),o.addEventListener("click",()=>{this.addTag(s),this.inputElement.value="",this.dropdownElement.style.display="none"}),this.dropdownElement.appendChild(o)}this.dropdownElement.style.display="block"}addTag(e){let r=this.field.maxTags??1/0;this.selectedTags.length>=r||this.selectedTags.some(o=>o.value.toLowerCase()===e.value.toLowerCase())||(this.selectedTags.push(e),this.renderTags(),this.notifyChange())}addTagFromInput(e,a){let r=e.options.find(s=>(typeof s=="string"?s:s.label).toLowerCase()===a.toLowerCase());if(r){let s=typeof r=="string"?r:r.label,o=typeof r=="string"?r:String(r.value);this.addTag({label:s,value:o}),this.inputElement.value="",this.dropdownElement.style.display="none"}else{let s=this.filterOptions(e.options,a);if(s.length>0)this.addTag(s[0]),this.inputElement.value="",this.dropdownElement.style.display="none";else{let o=e.maxTags??1/0;this.selectedTags.length<o&&(this.addTag({label:a,value:a}),this.inputElement.value="",this.dropdownElement.style.display="none")}}}notifyChange(){let e=this.selectedTags.map(a=>a.value);this.onChange(e.length>0?e:null)}};var $e=class extends v{constructor(){super(...arguments);this.selectedValues=new Set;this.chipElements=new Map}render(){let e=document.createElement("div");e.className="easy-form-chip-select-container";let a=this.field;return this.selectedValues=this.initializeSelectedValues(a),this.renderChips(e,a),this.applyCommonProps(e),this.createFieldContainer(e)}initializeSelectedValues(e){let a=new Set,r=this.value;if(!r||!Array.isArray(r))return a;for(let s of r){let o=e.options.find(n=>{let i=typeof n=="string"?n:n.value;return String(i)===String(s)});if(o){let n=typeof o=="string"?o:String(o.value);a.add(n)}else a.add(String(s))}return a}renderChips(e,a){let r=document.createElement("div");r.className="easy-form-chip-select";let s=a.disabled??!1;for(let o of a.options){let n=typeof o=="string"?o:o.label,i=typeof o=="string"?o:String(o.value),d=this.selectedValues.has(i),c=this.createChip(n,i,d,s);r.appendChild(c),this.chipElements.set(i,c)}e.appendChild(r)}createChip(e,a,r,s){let o=document.createElement("button");return o.type="button",o.className="easy-form-chip",o.textContent=e,o.setAttribute("data-value",a),o.setAttribute("role","checkbox"),o.setAttribute("aria-checked",String(r)),s&&(o.disabled=!0),r&&o.classList.add("active"),s||(o.addEventListener("click",()=>{this.toggleChip(a)}),o.addEventListener("blur",()=>{this.onBlur()})),o}toggleChip(e){let r=this.field.max??1/0;if(this.selectedValues.has(e)){this.selectedValues.delete(e);let s=this.chipElements.get(e);s&&(s.classList.remove("active"),s.setAttribute("aria-checked","false"))}else if(this.selectedValues.size<r){this.selectedValues.add(e);let s=this.chipElements.get(e);s&&(s.classList.add("active"),s.setAttribute("aria-checked","true"))}this.notifyChange()}notifyChange(){let e=Array.from(this.selectedValues);this.onChange(e.length>0?e:null)}};var qe=class extends v{constructor(){super(...arguments);this.fileInput=null;this.previewContainer=null;this.imageElement=null;this.canvasElement=null;this.controlsContainer=null;this.zoomSlider=null;this.originalImage=null;this.currentZoom=1;this.isDragging=!1;this.dragStartX=0;this.dragStartY=0;this.imageOffsetX=0;this.imageOffsetY=0;this.currentFileName="";this.dragMoveHandler=null;this.dragEndHandler=null}cleanup(){this.dragMoveHandler&&(document.removeEventListener("mousemove",this.dragMoveHandler),document.removeEventListener("touchmove",this.dragMoveHandler)),this.dragEndHandler&&(document.removeEventListener("mouseup",this.dragEndHandler),document.removeEventListener("touchend",this.dragEndHandler)),this.dragMoveHandler=null,this.dragEndHandler=null}render(){let e=document.createElement("div");e.className="easy-form-image-file-crop-container";let a=this.field,r=a.ratio??1,s=a.rounded??0;a.maxWidth&&(e.style.maxWidth=a.maxWidth),this.fileInput=document.createElement("input"),this.fileInput.type="file",this.fileInput.accept=a.accept||"image/*",this.fileInput.className="easy-form-image-file-crop-input",this.fileInput.style.display="none",this.fileInput.addEventListener("change",()=>this.handleFileSelect()),e.appendChild(this.fileInput);let o=document.createElement("div");o.className="easy-form-image-file-crop-upload",o.style.borderRadius=`${s}%`,o.style.aspectRatio=String(r),a.maxWidth&&(o.style.maxWidth=a.maxWidth),s>0&&(o.style.overflow="hidden");let n=document.createElement("div");n.className="easy-form-image-file-crop-upload-icon",n.innerHTML=`<svg width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
3445
+ `}}checkAndShowDependenciesMessage(){setTimeout(async()=>{try{await Promise.resolve().then(()=>(et(),Je))}catch{let e=this.textareaEl?.closest(".easy-form-markdown")||this.previewModeEl?.closest(".easy-form-markdown");if(!e)return;let a=e.querySelector(".easy-form-markdown-preview-placeholder");a&&(a.innerHTML+='<br><small style="color:#888">Instala <code>marked</code> para renderizar</small>')}},100)}};var Ne=class extends v{constructor(){super(...arguments);this.selectedTags=[];this.inputElement=null;this.dropdownElement=null;this.tagsContainer=null;this.documentClickHandler=null;this.blurTimeout=null}cleanup(){this.documentClickHandler&&(document.removeEventListener("click",this.documentClickHandler),this.documentClickHandler=null),this.blurTimeout&&(clearTimeout(this.blurTimeout),this.blurTimeout=null)}render(){let e=document.createElement("div");e.className="easy-form-autocomplete-tags-container";let a=this.field;return this.selectedTags=this.initializeSelectedTags(a),this.tagsContainer=document.createElement("div"),this.tagsContainer.className="easy-form-autocomplete-tags",this.renderTags(),e.appendChild(this.tagsContainer),this.inputElement=document.createElement("input"),this.inputElement.type="text",this.inputElement.className="easy-form-autocomplete-tags-input",this.inputElement.placeholder=a.placeholder||"Escribe para buscar...",this.inputElement.setAttribute("autocomplete","off"),a.disabled&&(this.inputElement.disabled=!0),e.appendChild(this.inputElement),this.dropdownElement=document.createElement("ul"),this.dropdownElement.className="easy-form-autocomplete-tags-dropdown",this.dropdownElement.style.display="none",e.appendChild(this.dropdownElement),this.setupEventListeners(a),this.applyCommonProps(e.querySelector("input")),this.createFieldContainer(e)}initializeSelectedTags(e){let a=this.value;if(!a||!Array.isArray(a)||a.length===0)return[];let r=[];for(let o of a){let s=e.options.find(n=>{let i=typeof n=="string"?n:n.value;return String(i)===String(o)});if(s){let n=typeof s=="string"?s:s.label,i=typeof s=="string"?s:String(s.value);r.push({label:n,value:i})}else r.push({label:String(o),value:String(o)})}return r}renderTags(){if(this.tagsContainer){this.tagsContainer.innerHTML="";for(let e=0;e<this.selectedTags.length;e++){let a=this.selectedTags[e],r=document.createElement("span");r.className="easy-form-tag",r.setAttribute("data-index",String(e));let o=document.createElement("span");o.className="easy-form-tag-label",o.textContent=a.label,r.appendChild(o);let s=document.createElement("button");s.className="easy-form-tag-remove",s.type="button",s.setAttribute("aria-label",`Eliminar ${a.label}`),s.innerHTML="&times;",s.addEventListener("click",n=>{n.stopPropagation(),this.removeTag(e)}),r.appendChild(s),this.tagsContainer.appendChild(r)}}}removeTag(e){this.selectedTags.splice(e,1),this.renderTags(),this.notifyChange()}setupEventListeners(e){if(!this.inputElement||!this.dropdownElement)return;let a=e.minChars??0;this.inputElement.addEventListener("input",()=>{let r=this.inputElement.value.toLowerCase();if(r.length<a){this.dropdownElement.style.display="none";return}let o=this.filterOptions(e.options,r);this.renderDropdown(o,e)}),this.inputElement.addEventListener("keydown",r=>{if(r.key==="Enter"){r.preventDefault();let o=this.inputElement.value.trim();o&&this.addTagFromInput(e,o)}else r.key==="Backspace"&&this.inputElement.value===""&&this.selectedTags.length>0&&this.removeTag(this.selectedTags.length-1)}),this.inputElement.addEventListener("focus",()=>{let r=this.inputElement.value.toLowerCase();if(r.length>=a){let o=this.filterOptions(e.options,r);this.renderDropdown(o,e)}}),this.inputElement.addEventListener("click",r=>{r.stopPropagation();let o=this.inputElement.value.toLowerCase();if(o.length>=a){let s=this.filterOptions(e.options,o);this.renderDropdown(s,e)}else if(o.length===0){let s=this.filterOptions(e.options,"");this.renderDropdown(s,e)}}),this.documentClickHandler=r=>{let o=r.target;!this.dropdownElement.contains(o)&&o!==this.inputElement&&!this.tagsContainer?.contains(o)&&(this.dropdownElement.style.display="none")},document.addEventListener("click",this.documentClickHandler),this.inputElement.addEventListener("blur",()=>{this.blurTimeout=setTimeout(()=>{this.dropdownElement.style.display="none",this.onBlur()},150)})}filterOptions(e,a){let r=[];for(let o of e){let s=typeof o=="string"?o:o.label,n=typeof o=="string"?o:String(o.value);s.toLowerCase().includes(a)&&(this.selectedTags.some(d=>d.value.toLowerCase()===n.toLowerCase())||r.push({label:s,value:n}))}return r}renderDropdown(e,a){if(!this.dropdownElement||!this.inputElement)return;if(this.dropdownElement.innerHTML="",e.length===0){this.dropdownElement.style.display="none";return}let r=a.maxTags??1/0;if(this.selectedTags.length>=r){this.dropdownElement.style.display="none";return}for(let o of e){let s=document.createElement("li");s.className="easy-form-autocomplete-tags-option",s.textContent=o.label,s.setAttribute("role","option"),s.addEventListener("click",()=>{this.addTag(o),this.inputElement.value="",this.dropdownElement.style.display="none"}),this.dropdownElement.appendChild(s)}this.dropdownElement.style.display="block"}addTag(e){let r=this.field.maxTags??1/0;this.selectedTags.length>=r||this.selectedTags.some(s=>s.value.toLowerCase()===e.value.toLowerCase())||(this.selectedTags.push(e),this.renderTags(),this.notifyChange())}addTagFromInput(e,a){let r=e.options.find(o=>(typeof o=="string"?o:o.label).toLowerCase()===a.toLowerCase());if(r){let o=typeof r=="string"?r:r.label,s=typeof r=="string"?r:String(r.value);this.addTag({label:o,value:s}),this.inputElement.value="",this.dropdownElement.style.display="none"}else{let o=this.filterOptions(e.options,a);if(o.length>0)this.addTag(o[0]),this.inputElement.value="",this.dropdownElement.style.display="none";else{let s=e.maxTags??1/0;this.selectedTags.length<s&&(this.addTag({label:a,value:a}),this.inputElement.value="",this.dropdownElement.style.display="none")}}}notifyChange(){let e=this.selectedTags.map(a=>a.value);this.onChange(e.length>0?e:null)}};var $e=class extends v{constructor(){super(...arguments);this.selectedValues=new Set;this.chipElements=new Map}render(){let e=document.createElement("div");e.className="easy-form-chip-select-container";let a=this.field;return this.selectedValues=this.initializeSelectedValues(a),this.renderChips(e,a),this.applyCommonProps(e),this.createFieldContainer(e)}initializeSelectedValues(e){let a=new Set,r=this.value;if(!r||!Array.isArray(r))return a;for(let o of r){let s=e.options.find(n=>{let i=typeof n=="string"?n:n.value;return String(i)===String(o)});if(s){let n=typeof s=="string"?s:String(s.value);a.add(n)}else a.add(String(o))}return a}renderChips(e,a){let r=document.createElement("div");r.className="easy-form-chip-select";let o=a.disabled??!1;for(let s of a.options){let n=typeof s=="string"?s:s.label,i=typeof s=="string"?s:String(s.value),d=this.selectedValues.has(i),c=this.createChip(n,i,d,o);r.appendChild(c),this.chipElements.set(i,c)}e.appendChild(r)}createChip(e,a,r,o){let s=document.createElement("button");return s.type="button",s.className="easy-form-chip",s.textContent=e,s.setAttribute("data-value",a),s.setAttribute("role","checkbox"),s.setAttribute("aria-checked",String(r)),o&&(s.disabled=!0),r&&s.classList.add("active"),o||(s.addEventListener("click",()=>{this.toggleChip(a)}),s.addEventListener("blur",()=>{this.onBlur()})),s}toggleChip(e){let r=this.field.max??1/0;if(this.selectedValues.has(e)){this.selectedValues.delete(e);let o=this.chipElements.get(e);o&&(o.classList.remove("active"),o.setAttribute("aria-checked","false"))}else if(this.selectedValues.size<r){this.selectedValues.add(e);let o=this.chipElements.get(e);o&&(o.classList.add("active"),o.setAttribute("aria-checked","true"))}this.notifyChange()}notifyChange(){let e=Array.from(this.selectedValues);this.onChange(e.length>0?e:null)}};var qe=class extends v{constructor(){super(...arguments);this.fileInput=null;this.previewContainer=null;this.imageElement=null;this.canvasElement=null;this.controlsContainer=null;this.zoomSlider=null;this.originalImage=null;this.currentZoom=1;this.isDragging=!1;this.dragStartX=0;this.dragStartY=0;this.imageOffsetX=0;this.imageOffsetY=0;this.currentFileName="";this.dragMoveHandler=null;this.dragEndHandler=null}cleanup(){this.dragMoveHandler&&(document.removeEventListener("mousemove",this.dragMoveHandler),document.removeEventListener("touchmove",this.dragMoveHandler)),this.dragEndHandler&&(document.removeEventListener("mouseup",this.dragEndHandler),document.removeEventListener("touchend",this.dragEndHandler)),this.dragMoveHandler=null,this.dragEndHandler=null}render(){let e=document.createElement("div");e.className="easy-form-image-file-crop-container";let a=this.field,r=a.ratio??1,o=a.rounded??0;a.maxWidth&&(e.style.maxWidth=a.maxWidth),this.fileInput=document.createElement("input"),this.fileInput.type="file",this.fileInput.accept=a.accept||"image/*",this.fileInput.className="easy-form-image-file-crop-input",this.fileInput.style.display="none",this.fileInput.addEventListener("change",()=>this.handleFileSelect()),e.appendChild(this.fileInput);let s=document.createElement("div");s.className="easy-form-image-file-crop-upload",s.style.borderRadius=`${o}%`,s.style.aspectRatio=String(r),a.maxWidth&&(s.style.maxWidth=a.maxWidth),o>0&&(s.style.overflow="hidden");let n=document.createElement("div");n.className="easy-form-image-file-crop-upload-icon",n.innerHTML=`<svg width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
3380
3446
  <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/>
3381
3447
  <polyline points="17 8 12 3 7 8"/>
3382
3448
  <line x1="12" y1="3" x2="12" y2="15"/>
3383
- </svg>`;let i=document.createElement("span");i.className="easy-form-image-file-crop-upload-text",i.textContent="Click para seleccionar imagen",o.appendChild(n),o.appendChild(i),o.addEventListener("click",()=>this.fileInput?.click()),e.appendChild(o),this.previewContainer=document.createElement("div"),this.previewContainer.className="easy-form-image-file-crop-preview",this.previewContainer.style.display="none",this.previewContainer.style.borderRadius=`${s}%`,s>0&&(this.previewContainer.style.overflow="hidden");let d=document.createElement("div");d.className="easy-form-image-file-crop-area",d.style.aspectRatio=String(r),this.imageElement=document.createElement("img"),this.imageElement.className="easy-form-image-file-crop-image",this.imageElement.draggable=!1,this.imageElement.addEventListener("mousedown",f=>this.startDrag(f)),this.imageElement.addEventListener("touchstart",f=>this.startDrag(f)),d.appendChild(this.imageElement);let c=document.createElement("div");c.className="easy-form-image-file-crop-overlay",d.appendChild(c),this.previewContainer.appendChild(d),e.appendChild(this.previewContainer),this.controlsContainer=document.createElement("div"),this.controlsContainer.className="easy-form-image-file-crop-controls",this.controlsContainer.style.display="none";let p=document.createElement("div");p.className="easy-form-image-file-crop-zoom";let m=document.createElement("label");m.className="easy-form-image-file-crop-label",m.textContent="Zoom",this.zoomSlider=document.createElement("input"),this.zoomSlider.type="range",this.zoomSlider.className="easy-form-image-file-crop-slider",this.zoomSlider.min="0.5",this.zoomSlider.max="3",this.zoomSlider.step="0.1",this.zoomSlider.value="1",this.zoomSlider.addEventListener("input",()=>this.handleZoomChange()),p.appendChild(m),p.appendChild(this.zoomSlider),this.controlsContainer.appendChild(p);let u=document.createElement("button");return u.type="button",u.className="easy-form-image-file-crop-remove",u.textContent="Eliminar imagen",u.addEventListener("click",()=>this.removeImage()),this.controlsContainer.appendChild(u),e.appendChild(this.controlsContainer),this.canvasElement=document.createElement("canvas"),this.canvasElement.style.display="none",e.appendChild(this.canvasElement),this.applyCommonProps(e),this.createFieldContainer(e)}handleFileSelect(){let e=this.fileInput?.files;if(!e||e.length===0)return;let a=e[0];if(!a.type.startsWith("image/"))return;let r=this.field;if(r.maxSize){let o=r.maxSize*1024*1024;if(a.size>o)return}let s=new FileReader;s.onload=o=>{let n=o.target?.result;this.loadImage(n,a.name)},s.readAsDataURL(a)}loadImage(e,a){this.currentFileName=a||"cropped-image.png",this.originalImage=new Image,this.originalImage.onload=()=>{if(!this.imageElement||!this.previewContainer||!this.controlsContainer)return;this.imageElement.src=e,this.currentZoom=1,this.imageOffsetX=0,this.imageOffsetY=0,this.zoomSlider&&(this.zoomSlider.value="1"),this.updateImageTransform();let r=this.previewContainer.parentElement?.querySelector(".easy-form-image-file-crop-upload");r&&(r.style.display="none"),this.previewContainer.style.display="block",this.controlsContainer.style.display="flex",this.generateCroppedImage(this.currentFileName).then(s=>{s&&this.onChange(s)})},this.originalImage.src=e}async generateCroppedImage(e){if(!this.originalImage||!this.canvasElement)return null;let a=this.field,r=a.width||800,s=a.height||Math.round(r/(a.ratio||1)),o=a.quality||.9;this.canvasElement.width=r,this.canvasElement.height=s;let n=this.canvasElement.getContext("2d");if(!n)return null;let i=this.previewContainer?.querySelector(".easy-form-image-file-crop-area");if(!i)return null;let d=i.getBoundingClientRect(),c=this.originalImage.naturalWidth/d.width,p=this.originalImage.naturalHeight/d.height,m=d.width,u=d.height,f=this.originalImage.naturalWidth/2,b=this.originalImage.naturalHeight/2,h=-this.imageOffsetX*c,g=-this.imageOffsetY*p,y=f+h-m*c/2,E=b+g-u*p/2,S=m*c,x=u*p;return n.drawImage(this.originalImage,Math.max(0,y),Math.max(0,E),Math.min(this.originalImage.naturalWidth-Math.max(0,y),S),Math.min(this.originalImage.naturalHeight-Math.max(0,E),x),0,0,r,s),new Promise(w=>{this.canvasElement.toBlob(T=>{w(T?{blob:T,width:r,height:s,originalName:e||"cropped-image.png",dataUrl:this.canvasElement?.toDataURL("image/png",o)}:null)},"image/png",o)})}handleZoomChange(){this.zoomSlider&&(this.currentZoom=parseFloat(this.zoomSlider.value),this.updateImageTransform(),this.originalImage&&this.currentFileName&&this.generateCroppedImage(this.currentFileName).then(e=>{e&&this.onChange(e)}))}updateImageTransform(){if(!this.imageElement)return;let e=this.currentZoom;this.imageElement.style.transform=`translate(calc(-50% + ${this.imageOffsetX}px), calc(-50% + ${this.imageOffsetY}px)) scale(${e})`}startDrag(e){if(e.preventDefault(),this.isDragging=!0,e instanceof MouseEvent)this.dragStartX=e.clientX-this.imageOffsetX,this.dragStartY=e.clientY-this.imageOffsetY;else{let s=e.touches[0];this.dragStartX=s.clientX-this.imageOffsetX,this.dragStartY=s.clientY-this.imageOffsetY}let a=s=>{if(!this.isDragging)return;let o,n;if(s instanceof MouseEvent)o=s.clientX,n=s.clientY;else{let i=s.touches[0];o=i.clientX,n=i.clientY}this.imageOffsetX=o-this.dragStartX,this.imageOffsetY=n-this.dragStartY,this.updateImageTransform()},r=()=>{this.isDragging=!1,this.dragMoveHandler&&(document.removeEventListener("mousemove",this.dragMoveHandler),document.removeEventListener("touchmove",this.dragMoveHandler)),this.dragEndHandler&&(document.removeEventListener("mouseup",this.dragEndHandler),document.removeEventListener("touchend",this.dragEndHandler)),this.originalImage&&this.currentFileName&&this.generateCroppedImage(this.currentFileName).then(s=>{s&&this.onChange(s)})};this.dragMoveHandler=a,this.dragEndHandler=r,document.addEventListener("mousemove",a),document.addEventListener("mouseup",r),document.addEventListener("touchmove",a),document.addEventListener("touchend",r)}removeImage(){this.originalImage=null,this.currentZoom=1,this.imageOffsetX=0,this.imageOffsetY=0,this.imageElement&&(this.imageElement.src=""),this.fileInput&&(this.fileInput.value=""),this.previewContainer&&(this.previewContainer.style.display="none"),this.controlsContainer&&(this.controlsContainer.style.display="none");let e=this.previewContainer?.parentElement?.querySelector(".easy-form-image-file-crop-upload");e&&(e.style.display="flex"),this.onChange(null)}};var He=class extends v{constructor(){super(...arguments);this.tableContainer=null;this.data=[];this.allColumns=[];this.originalColumns=[]}render(){let e=this.field;this.originalColumns=[...e.columns],this.allColumns=[...e.columns],this.data=this.value||[];let a=document.createElement("div");a.className="easy-form-table-container";let r=document.createElement("div");r.className="easy-form-table-wrapper",r.style.maxHeight=e.maxHeight||"300px",r.style.overflow="auto",this.tableContainer=this.createTable(e),r.appendChild(this.tableContainer),a.appendChild(r);let s=document.createElement("div");s.className="easy-form-table-controls";let o=document.createElement("button");o.type="button",o.className="easy-form-table-add-row",o.textContent="Agregar Fila";let n=this.data.length>=(e.maxRows||100);if(this.field.disabled||n?o.disabled=!0:o.addEventListener("click",()=>this.addRow(e)),s.appendChild(o),e.allowUserColumns){let i=document.createElement("input");i.type="text",i.className="easy-form-table-col-input",i.placeholder="Nueva columna...";let d=document.createElement("button");d.type="button",d.className="easy-form-table-add-col",d.textContent="Agregar Columna",d.addEventListener("click",()=>{let c=i.value.trim();c&&!this.allColumns.includes(c)&&(this.addColumn(e,c),i.value="")}),i.addEventListener("keypress",c=>{c.key==="Enter"&&d.click()}),s.appendChild(i),s.appendChild(d)}return a.appendChild(s),this.field.label||this.field.description?this.createFieldContainerWithCustomContent(a):a}createFieldContainerWithCustomContent(e){let a=document.createElement("div");if(a.className="easy-form-field easy-form-label-up easy-form-table-container",this.field.label){let r=document.createElement("label");if(r.className="easy-form-label",r.setAttribute("for",this.getFieldId()),r.textContent=this.field.label,this.field.validations?.some(s=>s.type==="required")){let s=document.createElement("span");s.className="easy-form-required",s.textContent=" *",r.appendChild(s)}a.appendChild(r)}if(a.appendChild(e),this.field.description){let r=document.createElement("p");r.className="easy-form-description",r.textContent=this.field.description,a.appendChild(r)}if(this.error){let r=document.createElement("p");r.className="easy-form-error",r.textContent=this.error,a.appendChild(r)}return a}createTable(e){let a=document.createElement("table");a.className="easy-form-table",a.setAttribute("data-field-name",e.name);let r=document.createElement("thead"),s=document.createElement("tr"),o=e.allowDeleteUserColumns!==!1;for(let i of this.allColumns){let d=document.createElement("th");if(d.textContent=i,e.allowUserColumns&&o&&!this.originalColumns.includes(i)){let p=document.createElement("button");p.type="button",p.className="easy-form-table-remove-col",p.textContent="\xD7",p.title="Eliminar columna",p.addEventListener("click",()=>this.removeColumn(e,i)),d.appendChild(p)}s.appendChild(d)}r.appendChild(s),a.appendChild(r);let n=document.createElement("tbody");for(let i=0;i<this.data.length;i++){let d=this.createRow(e,i);n.appendChild(d)}return a.appendChild(n),a}createRow(e,a){let r=document.createElement("tr");r.setAttribute("data-row-index",String(a));for(let n of this.allColumns){let i=document.createElement("td"),d=document.createElement("input");d.type="text",d.className="easy-form-table-cell",d.value=this.data[a]?.[n]||"",d.addEventListener("input",()=>{this.updateCellValue(a,n,d.value)}),i.appendChild(d),r.appendChild(i)}let s=document.createElement("td");s.className="easy-form-table-row-actions";let o=document.createElement("button");return o.type="button",o.className="easy-form-table-remove-row",o.textContent="Eliminar",o.addEventListener("click",()=>this.removeRow(e,a)),s.appendChild(o),r.appendChild(s),r}addRow(e){let a={};for(let r of this.allColumns)a[r]="";this.data.push(a),this.refreshTable(e),this.emitChange()}removeRow(e,a){this.data.splice(a,1),this.refreshTable(e),this.emitChange()}addColumn(e,a){if(this.allColumns.push(a),this.data.length===0){let r={};r[a]="",this.data.push(r)}else for(let r of this.data)r[a]="";this.refreshTable(e),this.emitChange()}removeColumn(e,a){this.allColumns=this.allColumns.filter(r=>r!==a);for(let r of this.data)delete r[a];this.refreshTable(e),this.emitChange()}updateCellValue(e,a,r){this.data[e]||(this.data[e]={}),this.data[e][a]=r,this.emitChange()}refreshTable(e){if(!this.tableContainer)return;let a=this.tableContainer.parentElement;a&&(this.tableContainer=this.createTable(e),a.innerHTML="",a.appendChild(this.tableContainer))}emitChange(){this.onChange([...this.data])}};function _t(l,t,e,a,r){switch(l.type){case"text":case"email":return new ie(l,t,e,a,r).render();case"password":return new xe(l,t,e,a,r).render();case"number":return new ne(l,t,e,a,r).render();case"textarea":return new le(l,t,e,a,r).render();case"select":return new de(l,t,e,a,r).render();case"checkbox":return new ce(l,t,e,a,r).render();case"radio":return new me(l,t,e,a,r).render();case"switch":return new pe(l,t,e,a,r).render();case"date":return new ue(l,t,e,a,r).render();case"file":return new fe(l,t,e,a,r).render();case"file-drop":return new we(l,t,e,a,r).render();case"map":return new ke(l,t,e,a,r).render();case"rating":return new Ee(l,t,e,a,r).render();case"slider":return new Ce(l,t,e,a,r).render();case"colorpicker":return new Se(l,t,e,a,r).render();case"quantity":return new he(l,t,e,a,r).render();case"accordion-select":return new ge(l,t,e,a,r).render();case"image-grid-select":return new be(l,t,e,a,r).render();case"otp":return new ye(l,t,e,a,r).render();case"markdown":return new Re(l,t,e,a,r).render();case"autocomplete-tags":return new Ne(l,t,e,a,r).render();case"chip-select":return new $e(l,t,e,a,r).render();case"image-file-crop":return new qe(l,t,e,a,r).render();case"table":return new He(l,t,e,a,r).render();default:{let s=document.createElement("div");return s.textContent=`Tipo de campo no soportado: ${l.type}`,s}}}var jt=new Map;function aa(l,t){jt.set(l,t)}function Wt(l){for(let[t,e]of Object.entries(l))aa(t,e)}function tt(l){return jt.get(l)}var sa={fields:[{type:"email",name:"email",label:"Email",placeholder:"Enter your email",validations:[{type:"required",message:"Email is required"},{type:"email",message:"Please enter a valid email"}]},{type:"password",name:"password",label:"Password",placeholder:"Enter your password",validations:[{type:"required",message:"Password is required"},{type:"minLength",value:6,message:"Password must be at least 6 characters"}]},{type:"checkbox",name:"rememberMe",label:"Remember me",defaultValue:!1}]},oa={fields:[{type:"text",name:"name",label:"Full Name",placeholder:"Enter your full name",validations:[{type:"required",message:"Name is required"},{type:"minLength",value:2,message:"Name must be at least 2 characters"}]},{type:"email",name:"email",label:"Email",placeholder:"Enter your email",validations:[{type:"required",message:"Email is required"},{type:"email",message:"Please enter a valid email"}]},{type:"password",name:"password",label:"Password",placeholder:"Create a password",validations:[{type:"required",message:"Password is required"},{type:"minLength",value:8,message:"Password must be at least 8 characters"}]},{type:"password",name:"confirmPassword",label:"Confirm Password",placeholder:"Confirm your password",validations:[{type:"required",message:"Please confirm your password"},{type:"custom",validator:l=>typeof l=="string"&&l.length>=8,message:"Password must be at least 8 characters"}]}]},ia={fields:[{type:"otp",name:"code",label:"Verification Code",validations:[{type:"required",message:"Verification code is required"}]}]},na={fields:[{type:"text",name:"name",label:"Name",placeholder:"Enter your name",validations:[{type:"required",message:"Name is required"}]},{type:"email",name:"email",label:"Email",placeholder:"Enter your email",validations:[{type:"required",message:"Email is required"},{type:"email",message:"Please enter a valid email"}]},{type:"text",name:"subject",label:"Subject",placeholder:"Enter the subject",validations:[{type:"required",message:"Subject is required"}]},{type:"textarea",name:"message",label:"Message",placeholder:"Enter your message",rows:5,validations:[{type:"required",message:"Message is required"},{type:"minLength",value:10,message:"Message must be at least 10 characters"}]}]},la={fields:[{type:"email",name:"email",label:"Email",placeholder:"Enter your email address",validations:[{type:"required",message:"Email is required"},{type:"email",message:"Please enter a valid email"}]}]},da={fields:[{type:"password",name:"currentPassword",label:"Current Password",placeholder:"Enter your current password",validations:[{type:"required",message:"Current password is required"}]},{type:"password",name:"newPassword",label:"New Password",placeholder:"Enter your new password",validations:[{type:"required",message:"New password is required"},{type:"minLength",value:8,message:"Password must be at least 8 characters"}]},{type:"password",name:"confirmPassword",label:"Confirm New Password",placeholder:"Confirm your new password",validations:[{type:"required",message:"Please confirm your new password"},{type:"custom",validator:l=>typeof l=="string"&&l.length>=8,message:"Password must be at least 8 characters"}]}]},ca={fields:[{type:"text",name:"name",label:"Full Name",placeholder:"Enter your full name",validations:[{type:"required",message:"Name is required"}]},{type:"email",name:"email",label:"Email",placeholder:"Enter your email",validations:[{type:"required",message:"Email is required"},{type:"email",message:"Please enter a valid email"}]},{type:"text",name:"phone",label:"Phone",placeholder:"Enter your phone number",mask:{type:"phone"}},{type:"textarea",name:"bio",label:"Bio",placeholder:"Tell us about yourself",rows:4},{type:"file",name:"avatar",label:"Profile Picture",accept:"image/*"}]},ma={fields:[{type:"group",name:"billingAddress",label:"Billing Address",fields:[{type:"text",name:"street",label:"Street Address",placeholder:"Enter street address",validations:[{type:"required",message:"Street address is required"}]},{type:"row",name:"cityState",fields:[{type:"text",name:"city",label:"City",placeholder:"City",validations:[{type:"required",message:"City is required"}]},{type:"text",name:"state",label:"State",placeholder:"State",validations:[{type:"required",message:"State is required"}]}]},{type:"text",name:"zipCode",label:"ZIP Code",placeholder:"ZIP Code",validations:[{type:"required",message:"ZIP code is required"}]}]},{type:"select",name:"paymentMethod",label:"Payment Method",options:[{label:"Credit Card",value:"credit-card"},{label:"Debit Card",value:"debit-card"},{label:"PayPal",value:"paypal"},{label:"Bank Transfer",value:"bank-transfer"}],validations:[{type:"required",message:"Payment method is required"}]},{type:"select",name:"shipping",label:"Shipping Method",options:[{label:"Standard (5-7 days)",value:"standard"},{label:"Express (2-3 days)",value:"express"},{label:"Overnight",value:"overnight"}],validations:[{type:"required",message:"Shipping method is required"}]}]},pa={fields:[{type:"select",name:"rating",label:"Rating",options:[{label:"1 - Poor",value:1},{label:"2 - Fair",value:2},{label:"3 - Good",value:3},{label:"4 - Very Good",value:4},{label:"5 - Excellent",value:5}],validations:[{type:"required",message:"Rating is required"}]},{type:"textarea",name:"comment",label:"Comment",placeholder:"Share your feedback",rows:5,validations:[{type:"required",message:"Comment is required"}]},{type:"email",name:"email",label:"Email (optional)",placeholder:"Enter your email if you want a response"}]},ua={fields:[{type:"email",name:"email",label:"Email",placeholder:"Enter your email",validations:[{type:"required",message:"Email is required"},{type:"email",message:"Please enter a valid email"}]},{type:"checkbox",name:"weeklyNewsletter",label:"Weekly Newsletter",defaultValue:!0},{type:"checkbox",name:"productUpdates",label:"Product Updates",defaultValue:!1},{type:"checkbox",name:"promotions",label:"Promotions and Special Offers",defaultValue:!1}]},fa={fields:[{type:"date",name:"date",label:"Date",validations:[{type:"required",message:"Date is required"}]},{type:"text",name:"time",label:"Time",placeholder:"HH:MM",mask:{type:"time"},validations:[{type:"required",message:"Time is required"}]},{type:"number",name:"guests",label:"Number of Guests",placeholder:"Enter number of guests",min:1,max:20,validations:[{type:"required",message:"Number of guests is required"},{type:"min",value:1,message:"At least 1 guest is required"}]},{type:"textarea",name:"specialRequests",label:"Special Requests",placeholder:"Any special requests or dietary restrictions?",rows:4}]},ha={fields:[{type:"select",name:"rating",label:"Rating",options:[{label:"1 Star",value:1},{label:"2 Stars",value:2},{label:"3 Stars",value:3},{label:"4 Stars",value:4},{label:"5 Stars",value:5}],validations:[{type:"required",message:"Rating is required"}]},{type:"text",name:"title",label:"Review Title",placeholder:"Give your review a title",validations:[{type:"required",message:"Review title is required"},{type:"minLength",value:5,message:"Title must be at least 5 characters"}]},{type:"textarea",name:"comment",label:"Your Review",placeholder:"Share your experience",rows:6,validations:[{type:"required",message:"Review comment is required"},{type:"minLength",value:20,message:"Review must be at least 20 characters"}]}]},Yt={login:sa,register:oa,otp:ia,contact:na,"password-reset":la,"password-change":da,profile:ca,checkout:ma,feedback:pa,subscription:ua,booking:fa,review:ha};function rt(l){return l in Yt?Yt[l]:null}function Ut(l,t){let e=rt(l);if(!e)throw new Error(`Template "${l}" not found`);let a=e.fields||[],r=e.steps;if(r&&r.length>0){let s=r[r.length-1];return{...e,steps:[...r.slice(0,-1),{...s,fields:[...s.fields,...t]}]}}return{...e,fields:[...a,...t]}}var ga=typeof HTMLElement<"u"?HTMLElement:class{},at=class extends ga{constructor(){if(typeof HTMLElement>"u")throw new Error("EasyForm can only be used in a browser environment");super();this.customComponents={};this.isRendering=!1;this.attemptsLock=null;this.lockCountdownInterval=null;this.slotTemplates=null;this.skipPreserveValuesOnNextRender=!1;this.persistenceConfig=null;this.persistenceDebounceTimer=null;this.pendingRestoreValues=null;this.isRestoringValues=!1;this.completeTimeInterval=null;this.timeRemaining=0;this.timerStarted=!1;this.timerExpired=!1;this.dependencyRenderTimeout=null;this.stateManager=new ae,this.shadow=this.attachShadow({mode:"open"})}static get observedAttributes(){return["schema","template","template-extend","theme","colors","initialData","loading","disabled","max-attempts","block-duration-minutes","attempts-storage-key","submit-button","label-position","show-completed-indicator","form-direction","complete-time"]}get schema(){let e=this.getAttribute("schema");return e?this.getAttribute("template")?(console.warn('EasyForm: Cannot use both "schema" and "template" attributes. "template" will be ignored.'),$(e)):$(e):null}set schema(e){e&&this.getAttribute("template")&&(console.warn('EasyForm: Setting "schema" will remove "template" attribute.'),this.removeAttribute("template"),this.removeAttribute("template-extend")),e?(this.setAttribute("schema",P(e)),this.handleSchemaChange()):this.removeAttribute("schema")}get template(){let e=this.getAttribute("template");return e?(this.getAttribute("schema")&&console.warn('EasyForm: Cannot use both "template" and "schema" attributes. "schema" will be ignored.'),e):null}set template(e){e&&this.getAttribute("schema")&&(console.warn('EasyForm: Setting "template" will remove "schema" attribute.'),this.removeAttribute("schema")),e?this.setAttribute("template",e):(this.removeAttribute("template"),this.removeAttribute("template-extend"))}get templateExtend(){let e=this.getAttribute("template-extend");return e?$(e):null}set templateExtend(e){e?this.setAttribute("template-extend",P(e)):this.removeAttribute("template-extend")}get maxAttempts(){let e=this.getAttribute("max-attempts");if(!e)return null;let a=parseInt(e,10);return isNaN(a)?null:a}set maxAttempts(e){e!=null&&e>=1?this.setAttribute("max-attempts",String(e)):this.removeAttribute("max-attempts")}get blockDurationMinutes(){let e=this.getAttribute("block-duration-minutes");if(!e)return null;let a=parseInt(e,10);return isNaN(a)?null:a}set blockDurationMinutes(e){e!=null&&e>=1?this.setAttribute("block-duration-minutes",String(e)):this.removeAttribute("block-duration-minutes")}get attemptsStorageKey(){return this.getAttribute("attempts-storage-key")}set attemptsStorageKey(e){e?this.setAttribute("attempts-storage-key",e):this.removeAttribute("attempts-storage-key")}get submitButton(){let e=this.getAttribute("submit-button");if(e)try{return $(e)}catch{return null}return null}set submitButton(e){e&&typeof e=="object"?this.setAttribute("submit-button",P(e)):this.removeAttribute("submit-button")}getSubmitButtonConfig(e){let a=this.submitButton,s={...e?.submitButton,...a};return{visible:s.visible??!0,text:s.text??"Enviar",width:s.width??"auto",align:s.align??"left"}}connectedCallback(){this.setupAttemptsLock(),this.setupStyles(),(this.hasAttribute("schema")||this.schema)&&this.render()}disconnectedCallback(){this.lockCountdownInterval&&(clearInterval(this.lockCountdownInterval),this.lockCountdownInterval=null),this.completeTimeInterval&&(clearInterval(this.completeTimeInterval),this.completeTimeInterval=null),this.persistenceDebounceTimer&&(clearTimeout(this.persistenceDebounceTimer),this.persistenceDebounceTimer=null),this.dependencyRenderTimeout&&(clearTimeout(this.dependencyRenderTimeout),this.dependencyRenderTimeout=null),this.attemptsLock&&(this.attemptsLock=null)}attributeChangedCallback(e,a,r){if(e==="schema"&&r!==a&&(this.getAttribute("template")&&(console.warn('EasyForm: "schema" and "template" cannot be used together. Removing "template".'),this.removeAttribute("template"),this.removeAttribute("template-extend")),this.handleSchemaChange()),e==="template"&&r!==a&&(this.getAttribute("schema")&&(console.warn('EasyForm: "template" and "schema" cannot be used together. Removing "schema".'),this.removeAttribute("schema")),this.handleSchemaChange()),e==="template-extend"&&r!==a&&this.handleSchemaChange(),e==="initialData"&&r!==a&&this.handleSchemaChange(),(e==="theme"||e==="colors")&&r!==a&&this.setupStyles(),e==="loading"&&r!==a){let s=this.shadow.querySelector("form");this.updateLoadingOverlay(s||void 0),s&&s.querySelectorAll("input, textarea, select, button").forEach(n=>{n instanceof HTMLElement&&"disabled"in n&&(n.disabled=this.loading)})}e==="disabled"&&r!==a&&this.render(),(e==="label-position"||e==="form-direction"||e==="show-completed-indicator")&&r!==a&&this.render(),(e==="max-attempts"||e==="block-duration-minutes"||e==="attempts-storage-key")&&r!==a&&(this.setupAttemptsLock(),this.updateLockOverlay()),e==="submit-button"&&r!==a&&this.render(),e==="complete-time"&&r!==a&&(this.resetTimer(),this.completeTime&&(this.timeRemaining=this.completeTime,this.render()))}setupAttemptsLock(){let e=this.maxAttempts;if(e==null||e<1){this.attemptsLock=null;return}this.attemptsLock=new W({maxAttempts:e,blockDurationMinutes:this.blockDurationMinutes??5,storageKey:this.attemptsStorageKey??void 0,onLocked:()=>{this.updateLockOverlay()},onUnlocked:()=>{this.stopLockCountdown(),this.updateLockOverlay(),this.render()}})}handleSchemaChange(){let e=null,a=this.template;if(a?e=this.getSchemaFromTemplate(a):e=this.schema,e){let r=this.initialData;this.stateManager.initializeSchema(e,r||void 0),this.initPersistence(e),this.render()}}getSchemaFromTemplate(e){let a=rt(e);if(!a)return console.error(`EasyForm: Template "${e}" not found`),null;let r=this.templateExtend;return r&&r.length>0?Ut(e,r):a}async render(){if(!this.isRendering){this.isRendering=!0;try{let e=null,a=this.template;if(a?e=this.getSchemaFromTemplate(a):e=this.schema,!e){let x=this.shadow.querySelector("form");x&&x.parentNode===this.shadow&&x.remove();return}let r=this.skipPreserveValuesOnNextRender,s=r?{}:this.preserveCurrentValues();this.skipPreserveValuesOnNextRender=!1;let o=this.stateManager.getWizardState();if(s&&Object.keys(s).length>0)for(let[x,w]of Object.entries(s))this.stateManager.setValueWithoutValidation(x,w);let n=this.initialData,i=o!==null,d=e.steps&&e.steps.length>0;if(!r&&(!o||!i||!d||o&&e.steps&&o.totalSteps!==e.steps.length)&&(this.stateManager.initializeSchema(e,n||void 0),i&&d&&o)){let x=this.stateManager.getWizardState();if(x&&o.totalSteps===x.totalSteps){o.currentStep>=0&&o.currentStep<x.totalSteps&&this.stateManager.goToStep(o.currentStep);for(let w of o.completedSteps)w>=0&&w<x.totalSteps&&this.stateManager.completeStep(w)}}let p=this.stateManager.getWizardState(),m=document.createElement("form");m.addEventListener("submit",x=>this.handleSubmit(x)),(this.disabled||this.loading)&&m.classList.add("easy-form-disabled");let u=this.getAttribute("form-direction"),f=e.direction??(u==="vertical"||u==="horizontal"?u:"vertical");m.classList.add(`easy-form-direction-${f}`);let b=this.getAttribute("show-completed-indicator"),h=e.completedIndicator??(b!==null&&b!=="false"),g=typeof h=="object"&&h?.position?h.position:"top";if(p)this.renderWizard(m,e);else{this.renderFields(m,e.fields||[]);let x=this.getSubmitButtonConfig(e);if(x.visible){let w=document.createElement("div");w.className="easy-form-submit-wrapper",w.style.textAlign=x.align;let T=document.createElement("button");T.type="submit",T.textContent=x.text,T.className="easy-form-submit",T.style.width=x.width,(this.disabled||this.loading)&&(T.disabled=!0),w.appendChild(T),m.appendChild(w)}}let y=null;if(h){let{completed:x,total:w}=this.getCompletedRequiredProgress(e),T=document.createElement("div");T.className="easy-form-completed-indicator",T.setAttribute("role","progressbar"),T.setAttribute("aria-valuenow",String(x)),T.setAttribute("aria-valuemin","0"),T.setAttribute("aria-valuemax",String(w)),T.setAttribute("aria-label",`Campos obligatorios completados: ${x} de ${w}`);let N=document.createElement("div");N.className="easy-form-completed-track";let Pe=document.createElement("div");Pe.className="easy-form-completed-fill",Pe.style.width=w>0?`${x/w*100}%`:"0%",N.appendChild(Pe),T.appendChild(N),y=document.createElement("div"),y.className="easy-form-wrapper",g==="top"?(y.appendChild(T),y.appendChild(m)):(y.appendChild(m),y.appendChild(T))}let E=this.shadow.querySelector("form");if(E&&E.parentNode===this.shadow&&E!==m)try{E.remove()}catch(x){console.warn("Error al eliminar formulario anterior:",x)}let S=this.shadow.querySelector(".easy-form-wrapper");S&&S.remove(),this.shadow.appendChild(y||m),this.completeTime&&!this.timerExpired&&(this.renderTimerDisplay(),this.setupTimerInputListener()),this.loading&&this.updateLoadingOverlay(m),this.updateLockOverlay(m)}finally{this.isRendering=!1,this.pendingRestoreValues&&this.applyPendingRestoreValues()}}}updateLockOverlay(e){let a=this.shadow.querySelector(".easy-form-lock-overlay");if(a&&a.remove(),this.stopLockCountdown(),!this.attemptsLock?.isLocked())return;let r=e||this.shadow.querySelector("form");if(!r)return;let s=document.createElement("div");s.className="easy-form-lock-overlay";let o=document.createElement("div");o.className="easy-form-lock-message",o.setAttribute("role","alert");let n=()=>{let i=this.attemptsLock.getRemainingBlockTimeMs();if(i<=0){this.stopLockCountdown();return}let d=Math.floor(i/6e4),c=Math.floor(i%6e4/1e3),p=d>0?`${d} min ${c} s`:`${c} segundos`;o.textContent=`Demasiados intentos. Intenta de nuevo en ${p}.`};n(),s.appendChild(o),r.appendChild(s),this.lockCountdownInterval=setInterval(n,1e3)}stopLockCountdown(){this.lockCountdownInterval&&(clearInterval(this.lockCountdownInterval),this.lockCountdownInterval=null)}updateLoadingOverlay(e){let a=this.shadow.querySelector(".easy-form-loading-overlay");if(a&&a.remove(),this.loading){let r=e||this.shadow.querySelector("form");if(r){let s=document.createElement("div");s.className="easy-form-loading-overlay";let o=document.createElement("div");o.className="easy-form-loading-spinner",s.appendChild(o),r.appendChild(s)}}}preserveCurrentValues(){let e=null,a=this.template;if(a?e=this.getSchemaFromTemplate(a):e=this.schema,!e)return{};let r=this.shadow.querySelector("form"),s={};if(!r)return s;let o=r.querySelectorAll("input, textarea, select");for(let n of o){let i=n.getAttribute("name");if(!i||!(this.findFieldInSchema(e,i)!==null))continue;let c;if(n instanceof HTMLInputElement)if(n.type==="checkbox")c=n.checked;else if(n.type==="radio")if(n.checked)c=n.value;else continue;else n.type==="number"?c=n.value===""?null:Number(n.value):c=n.value;else n instanceof HTMLTextAreaElement?c=n.value:n instanceof HTMLSelectElement&&(n.multiple?c=Array.from(n.selectedOptions).map(p=>p.value):c=n.value||null);c!==void 0&&(s[i]=c===""?null:c)}return s}initializeSlotTemplates(){if(this.slotTemplates!==null)return;let e=[];for(let a of Array.from(this.children))a instanceof HTMLElement&&e.push(a);if(e.length===0){this.slotTemplates=[];return}this.slotTemplates=e.map(a=>{let r=a.hasAttribute("row")?a.getAttribute("row"):null,s=r!=null&&r!==""?Number(r):NaN,o=Number.isFinite(s)?s:null;return{template:a.cloneNode(!0),row:o}})}getSlotClonesByRow(e){this.initializeSlotTemplates();let a=new Map;if(!this.slotTemplates||this.slotTemplates.length===0)return a;for(let{template:r,row:s}of this.slotTemplates){let o=typeof s=="number"?s:-1;Number.isFinite(o)||(o=-1),(o<0||o>=e)&&(o=-1);let n=r.cloneNode(!0),i=a.get(o)??[];i.push(n),a.set(o,i)}return a}applySlotDisabledState(e){if(!this.disabled&&!this.loading)return;e.classList.add("easy-form-slot-disabled"),e.querySelectorAll("input, textarea, select, button").forEach(r=>{"disabled"in r&&(r.disabled=!0)})}renderFields(e,a){if(a.length===0){let i=this.getSlotClonesByRow(0).get(-1);if(i&&i.length>0)for(let d of i)this.applySlotDisabledState(d),e.appendChild(d);return}let r=a.length,s=this.getSlotClonesByRow(r);for(let n=0;n<a.length;n++){let i=s.get(n);if(i&&i.length>0){for(let p of i)this.applySlotDisabledState(p),e.appendChild(p);s.delete(n)}let d=a[n],c=this.renderField(d);c&&e.appendChild(c)}let o=s.get(-1);if(o&&o.length>0)for(let n of o)this.applySlotDisabledState(n),e.appendChild(n)}renderField(e){let a=this.stateManager.getFieldVisibility(e.name),r=this.stateManager.getFieldEnabled(e.name);if(e.type==="group"){let h=this.renderGroup(e);return a||(h.style.display="none",h.classList.add("easy-form-field-hidden")),r||h.classList.add("easy-form-field-disabled"),h}if(e.type==="row"){let h=this.renderRow(e);return a||(h.style.display="none",h.classList.add("easy-form-field-hidden")),r||h.classList.add("easy-form-field-disabled"),h}if(e.type==="array"){let h=this.renderArray(e);return a||(h.style.display="none",h.classList.add("easy-form-field-hidden")),r||h.classList.add("easy-form-field-disabled"),h}if(e.type==="custom"){let h=this.renderCustom(e);return h&&(a||(h.style.display="none",h.classList.add("easy-form-field-hidden")),r||h.classList.add("easy-form-field-disabled")),h}let s=this.stateManager.getValue(e.name),o=this.stateManager.getErrors(e.name),n=o.length>0?o[0]:void 0,i=this.disabled||this.loading,d=this.getAttribute("label-position"),c=["up","down","left","right","none"],p=e.labelPosition??(d&&c.includes(d)?d:"up"),m={...e,disabled:i||!r||e.disabled,labelPosition:p},u=tt(e.type);if(u){let h=u({field:m,value:s,error:n,onChange:g=>this.handleFieldChange(e.name,g),onBlur:()=>this.handleFieldBlur(e.name)});return h&&!a&&(h.style.display="none",h.classList.add("easy-form-field-hidden")),h}let f=_t(m,s,n,h=>this.handleFieldChange(e.name,h),()=>this.handleFieldBlur(e.name)),b=f.querySelector(".easy-form-field")||f;return b instanceof HTMLElement&&b.setAttribute("data-field-name",e.name),a||(f.style.display="none",f.classList.add("easy-form-field-hidden")),f}renderGroup(e){let a=e,r=a.direction??"vertical",s=a.collapsible===!0,o=a.defaultOpen!==!1,n=document.createElement("div");if(n.className=`easy-form-group easy-form-direction-${r}`,e.name&&n.setAttribute("data-field-name",e.name),s){n.classList.add("easy-form-group-collapsible"),o||n.classList.add("easy-form-group-collapsed");let i=document.createElement("button");i.type="button",i.className="easy-form-group-header",i.setAttribute("aria-expanded",String(o));let d=`easy-form-group-${(e.name||"group").replace(/[^a-z0-9]/gi,"-")}-content`;i.setAttribute("aria-controls",d);let c=document.createElement("span");c.textContent=e.label||"Grupo";let p=document.createElement("span");p.className="easy-form-group-chevron",p.setAttribute("aria-hidden","true"),p.textContent="\u25BC",i.appendChild(c),i.appendChild(p),n.appendChild(i);let m=document.createElement("div");if(m.id=d,m.className="easy-form-group-content","fields"in e&&e.fields)for(let f of e.fields){let b=f.name.startsWith(e.name+".")?f.name:`${e.name}.${f.name}`,h={...f,name:b},g=this.renderField(h);g&&m.appendChild(g)}n.appendChild(m);let u=f=>{f?m.style.maxHeight=m.scrollHeight+"px":m.style.maxHeight="0"};o?requestAnimationFrame(()=>u(!0)):m.style.maxHeight="0",i.addEventListener("click",()=>{n.classList.contains("easy-form-group-collapsed")?(n.classList.remove("easy-form-group-collapsed"),i.setAttribute("aria-expanded","true"),u(!0)):(m.style.maxHeight=m.scrollHeight+"px",requestAnimationFrame(()=>{n.classList.add("easy-form-group-collapsed"),i.setAttribute("aria-expanded","false"),u(!1)}))})}else{if(e.label){let i=document.createElement("h3");i.className="easy-form-group-label",i.textContent=e.label,n.appendChild(i)}if("fields"in e&&e.fields)for(let i of e.fields){let d=i.name.startsWith(e.name+".")?i.name:`${e.name}.${i.name}`,c={...i,name:d},p=this.renderField(c);p&&n.appendChild(p)}}return n}renderRow(e){let a=document.createElement("div");a.className="easy-form-row";let r=e;if(a.style.display="flex",a.style.flexWrap="wrap",a.style.alignItems=r.align||"stretch",r.gap!==void 0){let s=typeof r.gap=="number"?`${r.gap}px`:r.gap;a.style.gap=s}else a.style.gap="1rem";if("fields"in e&&e.fields)for(let s of e.fields){let o=this.renderField(s);if(o){let n=document.createElement("div");n.style.flex="1",n.style.minWidth="0",n.appendChild(o),a.appendChild(n)}}return a}renderArray(e){let a=document.createElement("div");if(a.className="easy-form-array",a.setAttribute("data-field-name",e.name),e.label){let p=document.createElement("label");p.className="easy-form-label",p.textContent=e.label,a.appendChild(p)}let r=this.stateManager.getValue(e.name)||[],s=e,o=s.minItems??0,n=s.maxItems??1/0,i=document.createElement("div");i.className="easy-form-array-items";for(let p=0;p<r.length;p++){let m=document.createElement("div");if(m.className="easy-form-array-item",s.itemSchema?.fields)for(let b of s.itemSchema.fields){let h={...b,name:`${e.name}.${p}.${b.name}`},g=this.renderField(h);g&&m.appendChild(g)}let u=document.createElement("button");u.type="button",u.textContent="Eliminar",u.className="easy-form-array-remove";let f=r.length<=o;this.disabled||this.loading||f?u.disabled=!0:u.addEventListener("click",()=>{let b=[...r];b.splice(p,1),this.handleFieldChange(e.name,b)}),m.appendChild(u),i.appendChild(m)}a.appendChild(i);let d=document.createElement("button");d.type="button",d.textContent="Agregar",d.className="easy-form-array-add";let c=r.length>=n;return this.disabled||this.loading||c?d.disabled=!0:d.addEventListener("click",()=>{let p=this.stateManager.createDefaultArrayItem(e),m=[...r,p];this.handleFieldChange(e.name,m)}),a.appendChild(d),a}renderCustom(e){let a=tt("custom");if(!a){let n=document.createElement("div");return n.textContent=`Componente custom no registrado para: ${e.name}`,n}let r=this.stateManager.getValue(e.name),s=this.stateManager.getErrors(e.name),o=s.length>0?s[0]:void 0;return a({field:e,value:r,error:o,onChange:n=>this.handleFieldChange(e.name,n),onBlur:()=>this.handleFieldBlur(e.name)})}getCompletedRequiredProgress(e){let a=c=>{let p=[];for(let m of c)if(m.type==="array"&&"itemSchema"in m&&m.itemSchema?.fields){let u=this.stateManager.getValue(m.name),f=Array.isArray(u)?u.length:0;for(let b=0;b<f;b++)for(let h of m.itemSchema.fields)p.push({...h,name:`${m.name}.${b}.${h.name}`})}else(m.type==="group"||m.type==="row")&&"fields"in m&&m.fields?p.push(...a(m.fields)):p.push(m);return p},r=e.steps?this.stateManager.getCurrentStepFields()||[]:e.fields||[],n=a(r).filter(c=>c.validations?.some(p=>p.type==="required")).filter(c=>this.stateManager.getFieldVisibility(c.name)),i=n.length;return{completed:n.filter(c=>{if(this.stateManager.getErrors(c.name).length>0)return!1;let m=this.stateManager.getValue(c.name);return!(m==null||typeof m=="string"&&m.trim()===""||Array.isArray(m)&&m.length===0&&c.type==="array")}).length,total:i}}renderWizard(e,a){let r=this.stateManager.getWizardState();if(!r)return;let s=document.createElement("div");s.className="easy-form-wizard";let o=document.createElement("div");o.className="easy-form-wizard-steps";let n=a?.stepStyle;if(n&&n!=="default"&&o.classList.add(`ef-stepper-${n}`),a?.steps)for(let m=0;m<a.steps.length;m++){let u=document.createElement("div");u.className="easy-form-wizard-step",m===r.currentStep&&u.classList.add("active"),r.completedSteps.includes(m)&&u.classList.add("completed"),u.textContent=a.steps[m].title,o.appendChild(u)}s.appendChild(o);let i=document.createElement("div");i.className="easy-form-wizard-fields";let d=this.stateManager.getCurrentStepFields();this.renderFields(i,d),s.appendChild(i);let c=document.createElement("div");if(c.className="easy-form-wizard-nav",r.currentStep>0){let m=document.createElement("button");m.type="button",m.textContent="Anterior",m.className="easy-form-wizard-prev",this.disabled||this.loading?m.disabled=!0:m.addEventListener("click",()=>{this.stateManager.getWizardState()&&this.stateManager.previousStep()&&(this.render(),this.emitStepChange())}),c.appendChild(m)}if(r.currentStep<r.totalSteps-1){let m=document.createElement("button");m.type="button",m.textContent="Siguiente",m.className="easy-form-wizard-next",this.disabled||this.loading?m.disabled=!0:m.addEventListener("click",async()=>{let u=this.stateManager.getWizardState();if(!u)return;let f=this.stateManager.getCurrentStepFields();for(let y of f)this.stateManager.getFieldVisibility(y.name)&&await this.stateManager.validateField(y.name);let b=this.stateManager.getAllErrors(),h={};for(let y of f)b[y.name]&&b[y.name].length>0&&(h[y.name]=b[y.name]);Object.keys(h).length>0?this.emitError(h):(this.stateManager.completeStep(u.currentStep),this.stateManager.nextStep()&&(this.render(),this.emitStepChange()))}),c.appendChild(m)}let p=this.getSubmitButtonConfig(a);if(r.currentStep===r.totalSteps-1&&p.visible){let m=document.createElement("button");m.type="button",m.textContent=p.text,m.className="easy-form-wizard-next",m.style.width=p.width,this.disabled||this.loading?m.disabled=!0:m.addEventListener("click",async()=>{let u=this.stateManager.getCurrentStepFields();for(let g of u)this.stateManager.getFieldVisibility(g.name)&&await this.stateManager.validateField(g.name);let f=this.stateManager.getAllErrors(),b={};for(let g of u)f[g.name]&&f[g.name].length>0&&(b[g.name]=f[g.name]);Object.keys(b).length>0?this.emitError(b):await this.handleSubmit(new Event("submit"))}),c.appendChild(m)}s.appendChild(c),e.appendChild(s)}async handleFieldChange(e,a){await this.stateManager.setValue(e,a),this.scheduleSave();let r=this.schema;if(r){let n=this.findFieldInSchema(r,e);n?.type==="array"&&(this.rerenderArrayField(n)||(this.skipPreserveValuesOnNextRender=!0,requestAnimationFrame(()=>this.render())))}let s=this.stateManager.getDependentFields(e);s.length>0&&(this.dependencyRenderTimeout&&clearTimeout(this.dependencyRenderTimeout),this.dependencyRenderTimeout=setTimeout(()=>{this.renderDependentFields(s),this.emitDependencyChange(e,s)},10));let o=new CustomEvent("change",{detail:{field:e,value:a,values:this.stateManager.getState().values},bubbles:!0,composed:!0});this.dispatchEvent(o)}rerenderArrayField(e){let a=this.shadow.querySelector(`[data-field-name="${e.name}"].easy-form-array`);if(!a?.parentNode)return!1;let r=this.renderArray(e);return a.parentNode.replaceChild(r,a),!0}renderDependentFields(e){let a=this.schema;if(!a)return;let r=this.shadow.querySelector("form");if(!r)return;let s=new Set;for(let o of e)s.add(o);for(let o of e)this.stateManager.getDependentFields(o).forEach(i=>s.add(i));for(let o of s){let n=r.querySelector(`[data-field-name="${o}"]`);if(n||(n=r.querySelector(`.easy-form-field[name="${o}"]`)),n||(n=r.querySelector(`[data-field-name="${o}"], [data-group-name="${o}"]`)),n){let i=this.findFieldInSchema(a,o);if(!i)continue;let d=n.parentElement;if(d){let c=this.renderField(i);c&&d.replaceChild(c,n)}}}}emitDependencyChange(e,a){let r=new CustomEvent("dependencyChange",{detail:{changedField:e,affectedFields:a},bubbles:!0,composed:!0});this.dispatchEvent(r)}async handleFieldBlur(e){this.stateManager.setTouched(e),await this.stateManager.validateField(e),this.updateSingleField(e)}updateSingleField(e){let a=this.schema;if(!a||!this.findFieldInSchema(a,e))return;let s=this.stateManager.getErrors(e),o=s.length>0?s[0]:void 0,n=this.shadow.querySelector(`[name="${e}"]`)?.closest(".easy-form-field");if(!n)return;let i=n.querySelector(".easy-form-error");if(o){if(i)i.textContent=o;else{let c=document.createElement("p");c.className="easy-form-error",c.textContent=o,n.appendChild(c)}n.querySelector("input, textarea, select")?.classList.add("easy-form-input-error")}else i?.remove(),n.querySelector("input, textarea, select")?.classList.remove("easy-form-input-error")}findFieldInSchema(e,a){let r=e.fields||[],s=a.indexOf(".");if(s>0){let o=a.slice(0,s),n=a.slice(s+1),i=r.find(d=>d.name===o);if(!i)return null;if((i.type==="group"||i.type==="row")&&"fields"in i&&i.fields){let d=this.findFieldInSchema({fields:i.fields},n);return d?{...d,name:a}:null}return null}for(let o of r){if(o.name===a)return o;if(o.type==="group"&&"fields"in o){let n=this.findFieldInSchema({fields:o.fields},a);if(n)return n}if(o.type==="row"&&"fields"in o){let n=this.findFieldInSchema({fields:o.fields},a);if(n)return n}}return null}async handleSubmit(e){if(e.preventDefault(),this.attemptsLock?.isLocked())return;if(this.timerExpired){this.emitError({form:["El tiempo ha expirado. No puedes enviar el formulario."]});return}let a=await this.stateManager.validateForm(),r=this.stateManager.getState();if(Object.keys(a).length>0){for(let n of Object.keys(a))this.updateSingleField(n);this.emitError(a);return}let s={values:r.values,isValid:!0,errors:{}};this.completeTime&&this.timerStarted&&(s.timeRemaining=this.timeRemaining);let o=new CustomEvent("submit",{detail:s,bubbles:!0,composed:!0});this.dispatchEvent(o),this.clearPersistence()}emitError(e){let a=new CustomEvent("error",{detail:{errors:e},bubbles:!0,composed:!0});this.dispatchEvent(a)}emitStepChange(){let e=this.stateManager.getWizardState();if(!e)return;let a=new CustomEvent("stepChange",{detail:{currentStep:e.currentStep,previousStep:e.currentStep>0?e.currentStep-1:e.currentStep,totalSteps:e.totalSteps},bubbles:!0,composed:!0});this.dispatchEvent(a)}registerComponents(e){this.customComponents={...this.customComponents,...e},Wt(e)}reset(){this.stateManager.reset(),this.render()}incrementAttempts(){this.attemptsLock?.incrementAttempts(),this.attemptsLock?.isLocked()&&this.updateLockOverlay()}resetAttempts(){this.attemptsLock?.reset(),this.stopLockCountdown(),this.updateLockOverlay(),this.render()}isLocked(){return this.attemptsLock?.isLocked()??!1}getRemainingBlockTimeMs(){return this.attemptsLock?.getRemainingBlockTimeMs()??0}requestSubmit(){let e=this.shadow.querySelector("form");e&&typeof e.requestSubmit=="function"&&e.requestSubmit()}clear(){let e=this.schema,a=this.template,r=null;a?r=this.getSchemaFromTemplate(a):r=e,r&&(this.stateManager.initializeSchema(r,{}),this.render())}getValues(){return this.stateManager.getState().values}getValue(e){return this.stateManager.getValue(e)}async setValue(e,a){await this.stateManager.setValue(e,a),this.render()}async setValues(e){for(let[a,r]of Object.entries(e))await this.stateManager.setValue(a,r);this.render()}async validate(){let e=await this.stateManager.validateForm();if(Object.keys(e).length>0){for(let a of Object.keys(e))this.updateSingleField(a);this.emitError(e)}else this.shadow.querySelectorAll(".easy-form-error").forEach(s=>s.remove()),this.shadow.querySelectorAll(".easy-form-input-error").forEach(s=>s.classList.remove("easy-form-input-error"));return e}async validateField(e){return await this.stateManager.validateField(e),this.updateSingleField(e),this.stateManager.getErrors(e)}getErrors(){return this.stateManager.getAllErrors()}getFieldErrors(e){return this.stateManager.getErrors(e)}isValid(){return this.stateManager.getState().isValid}get theme(){let e=this.getAttribute("theme");return e&&["plano","tradicional","material","rounded-shadow","lines","shadcn","chakra","mantine","glass","bordered","minimal","efc"].includes(e)?e:"plano"}set theme(e){e?this.setAttribute("theme",e):this.removeAttribute("theme")}get colors(){let e=this.getAttribute("colors");return e?$(e):null}set colors(e){e?this.setAttribute("colors",P(e)):this.removeAttribute("colors")}get initialData(){let e=this.getAttribute("initialData");return e?$(e):null}set initialData(e){e?this.setAttribute("initialData",P(e)):this.removeAttribute("initialData")}get loading(){return this.hasAttribute("loading")}set loading(e){e?this.setAttribute("loading",""):this.removeAttribute("loading")}get disabled(){return this.hasAttribute("disabled")}set disabled(e){e?this.setAttribute("disabled",""):this.removeAttribute("disabled")}get completeTime(){let e=this.getAttribute("complete-time");if(!e)return null;let a=parseInt(e,10);return isNaN(a)||a<=0?null:a}set completeTime(e){e!=null&&e>0?this.setAttribute("complete-time",String(e)):this.removeAttribute("complete-time")}setupStyles(){let e=this.shadow.querySelector("style");e&&e.remove();let a=this.theme,r=_(this.colors||void 0),s=ee(a,r),o=document.createElement("style");o.textContent=s,this.shadow.firstChild?this.shadow.insertBefore(o,this.shadow.firstChild):this.shadow.appendChild(o)}initPersistence(e){if(!e.persistence||!e.persistence.enabled){this.persistenceConfig=null;return}this.persistenceConfig={enabled:!0,key:e.persistence.key,autoSave:e.persistence.autoSave??!0,debounce:e.persistence.debounce??500,onRestore:e.persistence.onRestore},this.restoreFromStorage()}restoreFromStorage(){if(!(!this.persistenceConfig||!this.persistenceConfig.enabled)&&this.persistenceConfig.key)try{let e=localStorage.getItem(this.persistenceConfig.key);if(e){let a=JSON.parse(e);a&&typeof a=="object"&&(this.pendingRestoreValues=a,this.persistenceConfig.onRestore&&this.persistenceConfig.onRestore(a))}}catch(e){console.warn("EasyForm: Error restoring from localStorage:",e)}}applyPendingRestoreValues(){if(!this.pendingRestoreValues||this.isRestoringValues)return;this.isRestoringValues=!0;let e={...this.pendingRestoreValues};this.pendingRestoreValues=null;for(let[a,r]of Object.entries(e))this.stateManager.setValueWithoutValidation(a,r);this.updateInputsWithValues(e),this.isRestoringValues=!1}updateInputsWithValues(e){for(let a of Object.keys(e)){let r=this.shadow.querySelector(`[name="${a}"]`);r&&(r.value=e[a]??"")}}saveToStorage(){if(!(!this.persistenceConfig||!this.persistenceConfig.enabled)&&this.persistenceConfig.key)try{let e=this.stateManager.getState().values;localStorage.setItem(this.persistenceConfig.key,JSON.stringify(e))}catch(e){console.warn("EasyForm: Error saving to localStorage:",e)}}scheduleSave(){!this.persistenceConfig||!this.persistenceConfig.enabled||this.persistenceConfig.autoSave&&(this.persistenceDebounceTimer&&clearTimeout(this.persistenceDebounceTimer),this.persistenceDebounceTimer=setTimeout(()=>{this.saveToStorage()},this.persistenceConfig.debounce))}clearPersistence(){if(!(!this.persistenceConfig||!this.persistenceConfig.key))try{localStorage.removeItem(this.persistenceConfig.key)}catch(e){console.warn("EasyForm: Error clearing localStorage:",e)}}resetTimer(){this.completeTimeInterval&&(clearInterval(this.completeTimeInterval),this.completeTimeInterval=null),this.timerStarted=!1,this.timerExpired=!1,this.completeTime&&(this.timeRemaining=this.completeTime)}startTimer(){this.timerStarted||this.timerExpired||!this.completeTime||(this.timerStarted=!0,this.timeRemaining=this.completeTime,this.updateTimerDisplay(),this.completeTimeInterval=setInterval(()=>{this.timeRemaining--,this.updateTimerDisplay(),this.timeRemaining<=0&&this.handleTimerExpired()},1e3))}updateTimerDisplay(){let e=this.shadow.querySelector(".easy-form-timer");if(!e)return;let a=Math.floor(this.timeRemaining/60),r=this.timeRemaining%60,s=`${a}:${r.toString().padStart(2,"0")}`;e.textContent=s,this.timeRemaining<=30&&e.classList.add("easy-form-timer-warning"),this.timeRemaining<=10&&e.classList.add("easy-form-timer-danger")}handleTimerExpired(){this.completeTimeInterval&&(clearInterval(this.completeTimeInterval),this.completeTimeInterval=null),this.timerExpired=!0;let e=new CustomEvent("timeout",{detail:{originalTime:this.completeTime||0,expiredAt:new Date},bubbles:!0,composed:!0});this.dispatchEvent(e),this.disableAllFields()}disableAllFields(){let e=this.shadow.querySelector("form");if(!e)return;e.querySelectorAll("input, textarea, select, button").forEach(s=>{(s instanceof HTMLInputElement||s instanceof HTMLTextAreaElement||s instanceof HTMLSelectElement||s instanceof HTMLButtonElement&&s.type!=="submit")&&(s.disabled=!0)}),e.classList.add("easy-form-timer-expired");let r=this.shadow.querySelector(".easy-form-timer");r&&(r.classList.add("easy-form-timer-expired"),r.textContent="Tiempo agotado")}setupTimerInputListener(){if(!this.completeTime||this.timerStarted)return;let e=this.shadow.querySelector("form");if(!e)return;let a=()=>{!this.timerStarted&&!this.timerExpired&&this.startTimer()};e.addEventListener("input",a,{once:!0})}renderTimerDisplay(){let e=this.shadow.querySelector(".easy-form-timer");e&&e.remove();let a=this.shadow.querySelector("form");if(!a)return;let r=document.createElement("div");r.className="easy-form-timer";let s=this.completeTime||0,o=Math.floor(s/60),n=s%60;r.textContent=`${o}:${n.toString().padStart(2,"0")}`,a.insertBefore(r,a.firstChild)}};typeof window<"u"&&typeof customElements<"u"&&!customElements.get("easy-form")&&customElements.define("easy-form",at);export{at as EasyForm};
3449
+ </svg>`;let i=document.createElement("span");i.className="easy-form-image-file-crop-upload-text",i.textContent="Click para seleccionar imagen",s.appendChild(n),s.appendChild(i),s.addEventListener("click",()=>this.fileInput?.click()),e.appendChild(s),this.previewContainer=document.createElement("div"),this.previewContainer.className="easy-form-image-file-crop-preview",this.previewContainer.style.display="none",this.previewContainer.style.borderRadius=`${o}%`,o>0&&(this.previewContainer.style.overflow="hidden");let d=document.createElement("div");d.className="easy-form-image-file-crop-area",d.style.aspectRatio=String(r),this.imageElement=document.createElement("img"),this.imageElement.className="easy-form-image-file-crop-image",this.imageElement.draggable=!1,this.imageElement.addEventListener("mousedown",f=>this.startDrag(f)),this.imageElement.addEventListener("touchstart",f=>this.startDrag(f)),d.appendChild(this.imageElement);let c=document.createElement("div");c.className="easy-form-image-file-crop-overlay",d.appendChild(c),this.previewContainer.appendChild(d),e.appendChild(this.previewContainer),this.controlsContainer=document.createElement("div"),this.controlsContainer.className="easy-form-image-file-crop-controls",this.controlsContainer.style.display="none";let p=document.createElement("div");p.className="easy-form-image-file-crop-zoom";let m=document.createElement("label");m.className="easy-form-image-file-crop-label",m.textContent="Zoom",this.zoomSlider=document.createElement("input"),this.zoomSlider.type="range",this.zoomSlider.className="easy-form-image-file-crop-slider",this.zoomSlider.min="0.5",this.zoomSlider.max="3",this.zoomSlider.step="0.1",this.zoomSlider.value="1",this.zoomSlider.addEventListener("input",()=>this.handleZoomChange()),p.appendChild(m),p.appendChild(this.zoomSlider),this.controlsContainer.appendChild(p);let u=document.createElement("button");return u.type="button",u.className="easy-form-image-file-crop-remove",u.textContent="Eliminar imagen",u.addEventListener("click",()=>this.removeImage()),this.controlsContainer.appendChild(u),e.appendChild(this.controlsContainer),this.canvasElement=document.createElement("canvas"),this.canvasElement.style.display="none",e.appendChild(this.canvasElement),this.applyCommonProps(e),this.createFieldContainer(e)}handleFileSelect(){let e=this.fileInput?.files;if(!e||e.length===0)return;let a=e[0];if(!a.type.startsWith("image/"))return;let r=this.field;if(r.maxSize){let s=r.maxSize*1024*1024;if(a.size>s)return}let o=new FileReader;o.onload=s=>{let n=s.target?.result;this.loadImage(n,a.name)},o.readAsDataURL(a)}loadImage(e,a){this.currentFileName=a||"cropped-image.png",this.originalImage=new Image,this.originalImage.onload=()=>{if(!this.imageElement||!this.previewContainer||!this.controlsContainer)return;this.imageElement.src=e,this.currentZoom=1,this.imageOffsetX=0,this.imageOffsetY=0,this.zoomSlider&&(this.zoomSlider.value="1"),this.updateImageTransform();let r=this.previewContainer.parentElement?.querySelector(".easy-form-image-file-crop-upload");r&&(r.style.display="none"),this.previewContainer.style.display="block",this.controlsContainer.style.display="flex",this.generateCroppedImage(this.currentFileName).then(o=>{o&&this.onChange(o)})},this.originalImage.src=e}async generateCroppedImage(e){if(!this.originalImage||!this.canvasElement)return null;let a=this.field,r=a.width||800,o=a.height||Math.round(r/(a.ratio||1)),s=a.quality||.9;this.canvasElement.width=r,this.canvasElement.height=o;let n=this.canvasElement.getContext("2d");if(!n)return null;let i=this.previewContainer?.querySelector(".easy-form-image-file-crop-area");if(!i)return null;let d=i.getBoundingClientRect(),c=this.originalImage.naturalWidth/d.width,p=this.originalImage.naturalHeight/d.height,m=d.width,u=d.height,f=this.originalImage.naturalWidth/2,b=this.originalImage.naturalHeight/2,h=-this.imageOffsetX*c,g=-this.imageOffsetY*p,y=f+h-m*c/2,E=b+g-u*p/2,S=m*c,x=u*p;return n.drawImage(this.originalImage,Math.max(0,y),Math.max(0,E),Math.min(this.originalImage.naturalWidth-Math.max(0,y),S),Math.min(this.originalImage.naturalHeight-Math.max(0,E),x),0,0,r,o),new Promise(k=>{this.canvasElement.toBlob(T=>{k(T?{blob:T,width:r,height:o,originalName:e||"cropped-image.png",dataUrl:this.canvasElement?.toDataURL("image/png",s)}:null)},"image/png",s)})}handleZoomChange(){this.zoomSlider&&(this.currentZoom=parseFloat(this.zoomSlider.value),this.updateImageTransform(),this.originalImage&&this.currentFileName&&this.generateCroppedImage(this.currentFileName).then(e=>{e&&this.onChange(e)}))}updateImageTransform(){if(!this.imageElement)return;let e=this.currentZoom;this.imageElement.style.transform=`translate(calc(-50% + ${this.imageOffsetX}px), calc(-50% + ${this.imageOffsetY}px)) scale(${e})`}startDrag(e){if(e.preventDefault(),this.isDragging=!0,e instanceof MouseEvent)this.dragStartX=e.clientX-this.imageOffsetX,this.dragStartY=e.clientY-this.imageOffsetY;else{let o=e.touches[0];this.dragStartX=o.clientX-this.imageOffsetX,this.dragStartY=o.clientY-this.imageOffsetY}let a=o=>{if(!this.isDragging)return;let s,n;if(o instanceof MouseEvent)s=o.clientX,n=o.clientY;else{let i=o.touches[0];s=i.clientX,n=i.clientY}this.imageOffsetX=s-this.dragStartX,this.imageOffsetY=n-this.dragStartY,this.updateImageTransform()},r=()=>{this.isDragging=!1,this.dragMoveHandler&&(document.removeEventListener("mousemove",this.dragMoveHandler),document.removeEventListener("touchmove",this.dragMoveHandler)),this.dragEndHandler&&(document.removeEventListener("mouseup",this.dragEndHandler),document.removeEventListener("touchend",this.dragEndHandler)),this.originalImage&&this.currentFileName&&this.generateCroppedImage(this.currentFileName).then(o=>{o&&this.onChange(o)})};this.dragMoveHandler=a,this.dragEndHandler=r,document.addEventListener("mousemove",a),document.addEventListener("mouseup",r),document.addEventListener("touchmove",a),document.addEventListener("touchend",r)}removeImage(){this.originalImage=null,this.currentZoom=1,this.imageOffsetX=0,this.imageOffsetY=0,this.imageElement&&(this.imageElement.src=""),this.fileInput&&(this.fileInput.value=""),this.previewContainer&&(this.previewContainer.style.display="none"),this.controlsContainer&&(this.controlsContainer.style.display="none");let e=this.previewContainer?.parentElement?.querySelector(".easy-form-image-file-crop-upload");e&&(e.style.display="flex"),this.onChange(null)}};var He=class extends v{constructor(){super(...arguments);this.tableContainer=null;this.data=[];this.allColumns=[];this.originalColumns=[]}render(){let e=this.field;this.originalColumns=[...e.columns],this.allColumns=[...e.columns],this.data=this.value||[];let a=document.createElement("div");a.className="easy-form-table-container";let r=document.createElement("div");r.className="easy-form-table-wrapper",r.style.maxHeight=e.maxHeight||"300px",r.style.overflow="auto",this.tableContainer=this.createTable(e),r.appendChild(this.tableContainer),a.appendChild(r);let o=document.createElement("div");o.className="easy-form-table-controls";let s=document.createElement("button");s.type="button",s.className="easy-form-table-add-row",s.textContent="Agregar Fila";let n=this.data.length>=(e.maxRows||100);if(this.field.disabled||n?s.disabled=!0:s.addEventListener("click",()=>this.addRow(e)),o.appendChild(s),e.allowUserColumns){let i=document.createElement("input");i.type="text",i.className="easy-form-table-col-input",i.placeholder="Nueva columna...";let d=document.createElement("button");d.type="button",d.className="easy-form-table-add-col",d.textContent="Agregar Columna",d.addEventListener("click",()=>{let c=i.value.trim();c&&!this.allColumns.includes(c)&&(this.addColumn(e,c),i.value="")}),i.addEventListener("keypress",c=>{c.key==="Enter"&&d.click()}),o.appendChild(i),o.appendChild(d)}return a.appendChild(o),this.field.label||this.field.description?this.createFieldContainerWithCustomContent(a):a}createFieldContainerWithCustomContent(e){let a=document.createElement("div");if(a.className="easy-form-field easy-form-label-up easy-form-table-container",this.field.label){let r=document.createElement("label");if(r.className="easy-form-label",r.setAttribute("for",this.getFieldId()),r.textContent=this.field.label,this.field.validations?.some(o=>o.type==="required")){let o=document.createElement("span");o.className="easy-form-required",o.textContent=" *",r.appendChild(o)}a.appendChild(r)}if(a.appendChild(e),this.field.description){let r=document.createElement("p");r.className="easy-form-description",r.textContent=this.field.description,a.appendChild(r)}if(this.error){let r=document.createElement("p");r.className="easy-form-error",r.textContent=this.error,a.appendChild(r)}return a}createTable(e){let a=document.createElement("table");a.className="easy-form-table",a.setAttribute("data-field-name",e.name);let r=document.createElement("thead"),o=document.createElement("tr"),s=e.allowDeleteUserColumns!==!1;for(let i of this.allColumns){let d=document.createElement("th");if(d.textContent=i,e.allowUserColumns&&s&&!this.originalColumns.includes(i)){let p=document.createElement("button");p.type="button",p.className="easy-form-table-remove-col",p.textContent="\xD7",p.title="Eliminar columna",p.addEventListener("click",()=>this.removeColumn(e,i)),d.appendChild(p)}o.appendChild(d)}r.appendChild(o),a.appendChild(r);let n=document.createElement("tbody");for(let i=0;i<this.data.length;i++){let d=this.createRow(e,i);n.appendChild(d)}return a.appendChild(n),a}createRow(e,a){let r=document.createElement("tr");r.setAttribute("data-row-index",String(a));for(let n of this.allColumns){let i=document.createElement("td"),d=document.createElement("input");d.type="text",d.className="easy-form-table-cell",d.value=this.data[a]?.[n]||"",d.addEventListener("input",()=>{this.updateCellValue(a,n,d.value)}),i.appendChild(d),r.appendChild(i)}let o=document.createElement("td");o.className="easy-form-table-row-actions";let s=document.createElement("button");return s.type="button",s.className="easy-form-table-remove-row",s.textContent="Eliminar",s.addEventListener("click",()=>this.removeRow(e,a)),o.appendChild(s),r.appendChild(o),r}addRow(e){let a={};for(let r of this.allColumns)a[r]="";this.data.push(a),this.refreshTable(e),this.emitChange()}removeRow(e,a){this.data.splice(a,1),this.refreshTable(e),this.emitChange()}addColumn(e,a){if(this.allColumns.push(a),this.data.length===0){let r={};r[a]="",this.data.push(r)}else for(let r of this.data)r[a]="";this.refreshTable(e),this.emitChange()}removeColumn(e,a){this.allColumns=this.allColumns.filter(r=>r!==a);for(let r of this.data)delete r[a];this.refreshTable(e),this.emitChange()}updateCellValue(e,a,r){this.data[e]||(this.data[e]={}),this.data[e][a]=r,this.emitChange()}refreshTable(e){if(!this.tableContainer)return;let a=this.tableContainer.parentElement;a&&(this.tableContainer=this.createTable(e),a.innerHTML="",a.appendChild(this.tableContainer))}emitChange(){this.onChange([...this.data])}};function Wt(l,t,e,a,r){switch(l.type){case"text":case"email":return new ie(l,t,e,a,r).render();case"password":return new xe(l,t,e,a,r).render();case"number":return new ne(l,t,e,a,r).render();case"textarea":return new le(l,t,e,a,r).render();case"select":return new de(l,t,e,a,r).render();case"checkbox":return new ce(l,t,e,a,r).render();case"radio":return new me(l,t,e,a,r).render();case"switch":return new pe(l,t,e,a,r).render();case"date":return new ue(l,t,e,a,r).render();case"file":return new fe(l,t,e,a,r).render();case"file-drop":return new ke(l,t,e,a,r).render();case"map":return new we(l,t,e,a,r).render();case"rating":return new Ee(l,t,e,a,r).render();case"slider":return new Ce(l,t,e,a,r).render();case"colorpicker":return new Se(l,t,e,a,r).render();case"quantity":return new he(l,t,e,a,r).render();case"accordion-select":return new ge(l,t,e,a,r).render();case"image-grid-select":return new be(l,t,e,a,r).render();case"otp":return new ye(l,t,e,a,r).render();case"markdown":return new Re(l,t,e,a,r).render();case"autocomplete-tags":return new Ne(l,t,e,a,r).render();case"chip-select":return new $e(l,t,e,a,r).render();case"image-file-crop":return new qe(l,t,e,a,r).render();case"table":return new He(l,t,e,a,r).render();default:{let o=document.createElement("div");return o.textContent=`Tipo de campo no soportado: ${l.type}`,o}}}var Yt=new Map;function sa(l,t){Yt.set(l,t)}function Ut(l){for(let[t,e]of Object.entries(l))sa(t,e)}function tt(l){return Yt.get(l)}var ia={fields:[{type:"email",name:"email",label:"Email",placeholder:"Enter your email",validations:[{type:"required",message:"Email is required"},{type:"email",message:"Please enter a valid email"}]},{type:"password",name:"password",label:"Password",placeholder:"Enter your password",validations:[{type:"required",message:"Password is required"},{type:"minLength",value:6,message:"Password must be at least 6 characters"}]},{type:"checkbox",name:"rememberMe",label:"Remember me",defaultValue:!1}]},na={fields:[{type:"text",name:"name",label:"Full Name",placeholder:"Enter your full name",validations:[{type:"required",message:"Name is required"},{type:"minLength",value:2,message:"Name must be at least 2 characters"}]},{type:"email",name:"email",label:"Email",placeholder:"Enter your email",validations:[{type:"required",message:"Email is required"},{type:"email",message:"Please enter a valid email"}]},{type:"password",name:"password",label:"Password",placeholder:"Create a password",validations:[{type:"required",message:"Password is required"},{type:"minLength",value:8,message:"Password must be at least 8 characters"}]},{type:"password",name:"confirmPassword",label:"Confirm Password",placeholder:"Confirm your password",validations:[{type:"required",message:"Please confirm your password"},{type:"custom",validator:l=>typeof l=="string"&&l.length>=8,message:"Password must be at least 8 characters"}]}]},la={fields:[{type:"otp",name:"code",label:"Verification Code",validations:[{type:"required",message:"Verification code is required"}]}]},da={fields:[{type:"text",name:"name",label:"Name",placeholder:"Enter your name",validations:[{type:"required",message:"Name is required"}]},{type:"email",name:"email",label:"Email",placeholder:"Enter your email",validations:[{type:"required",message:"Email is required"},{type:"email",message:"Please enter a valid email"}]},{type:"text",name:"subject",label:"Subject",placeholder:"Enter the subject",validations:[{type:"required",message:"Subject is required"}]},{type:"textarea",name:"message",label:"Message",placeholder:"Enter your message",rows:5,validations:[{type:"required",message:"Message is required"},{type:"minLength",value:10,message:"Message must be at least 10 characters"}]}]},ca={fields:[{type:"email",name:"email",label:"Email",placeholder:"Enter your email address",validations:[{type:"required",message:"Email is required"},{type:"email",message:"Please enter a valid email"}]}]},ma={fields:[{type:"password",name:"currentPassword",label:"Current Password",placeholder:"Enter your current password",validations:[{type:"required",message:"Current password is required"}]},{type:"password",name:"newPassword",label:"New Password",placeholder:"Enter your new password",validations:[{type:"required",message:"New password is required"},{type:"minLength",value:8,message:"Password must be at least 8 characters"}]},{type:"password",name:"confirmPassword",label:"Confirm New Password",placeholder:"Confirm your new password",validations:[{type:"required",message:"Please confirm your new password"},{type:"custom",validator:l=>typeof l=="string"&&l.length>=8,message:"Password must be at least 8 characters"}]}]},pa={fields:[{type:"text",name:"name",label:"Full Name",placeholder:"Enter your full name",validations:[{type:"required",message:"Name is required"}]},{type:"email",name:"email",label:"Email",placeholder:"Enter your email",validations:[{type:"required",message:"Email is required"},{type:"email",message:"Please enter a valid email"}]},{type:"text",name:"phone",label:"Phone",placeholder:"Enter your phone number",mask:{type:"phone"}},{type:"textarea",name:"bio",label:"Bio",placeholder:"Tell us about yourself",rows:4},{type:"file",name:"avatar",label:"Profile Picture",accept:"image/*"}]},ua={fields:[{type:"group",name:"billingAddress",label:"Billing Address",fields:[{type:"text",name:"street",label:"Street Address",placeholder:"Enter street address",validations:[{type:"required",message:"Street address is required"}]},{type:"row",name:"cityState",fields:[{type:"text",name:"city",label:"City",placeholder:"City",validations:[{type:"required",message:"City is required"}]},{type:"text",name:"state",label:"State",placeholder:"State",validations:[{type:"required",message:"State is required"}]}]},{type:"text",name:"zipCode",label:"ZIP Code",placeholder:"ZIP Code",validations:[{type:"required",message:"ZIP code is required"}]}]},{type:"select",name:"paymentMethod",label:"Payment Method",options:[{label:"Credit Card",value:"credit-card"},{label:"Debit Card",value:"debit-card"},{label:"PayPal",value:"paypal"},{label:"Bank Transfer",value:"bank-transfer"}],validations:[{type:"required",message:"Payment method is required"}]},{type:"select",name:"shipping",label:"Shipping Method",options:[{label:"Standard (5-7 days)",value:"standard"},{label:"Express (2-3 days)",value:"express"},{label:"Overnight",value:"overnight"}],validations:[{type:"required",message:"Shipping method is required"}]}]},fa={fields:[{type:"select",name:"rating",label:"Rating",options:[{label:"1 - Poor",value:1},{label:"2 - Fair",value:2},{label:"3 - Good",value:3},{label:"4 - Very Good",value:4},{label:"5 - Excellent",value:5}],validations:[{type:"required",message:"Rating is required"}]},{type:"textarea",name:"comment",label:"Comment",placeholder:"Share your feedback",rows:5,validations:[{type:"required",message:"Comment is required"}]},{type:"email",name:"email",label:"Email (optional)",placeholder:"Enter your email if you want a response"}]},ha={fields:[{type:"email",name:"email",label:"Email",placeholder:"Enter your email",validations:[{type:"required",message:"Email is required"},{type:"email",message:"Please enter a valid email"}]},{type:"checkbox",name:"weeklyNewsletter",label:"Weekly Newsletter",defaultValue:!0},{type:"checkbox",name:"productUpdates",label:"Product Updates",defaultValue:!1},{type:"checkbox",name:"promotions",label:"Promotions and Special Offers",defaultValue:!1}]},ga={fields:[{type:"date",name:"date",label:"Date",validations:[{type:"required",message:"Date is required"}]},{type:"text",name:"time",label:"Time",placeholder:"HH:MM",mask:{type:"time"},validations:[{type:"required",message:"Time is required"}]},{type:"number",name:"guests",label:"Number of Guests",placeholder:"Enter number of guests",min:1,max:20,validations:[{type:"required",message:"Number of guests is required"},{type:"min",value:1,message:"At least 1 guest is required"}]},{type:"textarea",name:"specialRequests",label:"Special Requests",placeholder:"Any special requests or dietary restrictions?",rows:4}]},ba={fields:[{type:"select",name:"rating",label:"Rating",options:[{label:"1 Star",value:1},{label:"2 Stars",value:2},{label:"3 Stars",value:3},{label:"4 Stars",value:4},{label:"5 Stars",value:5}],validations:[{type:"required",message:"Rating is required"}]},{type:"text",name:"title",label:"Review Title",placeholder:"Give your review a title",validations:[{type:"required",message:"Review title is required"},{type:"minLength",value:5,message:"Title must be at least 5 characters"}]},{type:"textarea",name:"comment",label:"Your Review",placeholder:"Share your experience",rows:6,validations:[{type:"required",message:"Review comment is required"},{type:"minLength",value:20,message:"Review must be at least 20 characters"}]}]},Zt={login:ia,register:na,otp:la,contact:da,"password-reset":ca,"password-change":ma,profile:pa,checkout:ua,feedback:fa,subscription:ha,booking:ga,review:ba};function rt(l){return l in Zt?Zt[l]:null}function Gt(l,t){let e=rt(l);if(!e)throw new Error(`Template "${l}" not found`);let a=e.fields||[],r=e.steps;if(r&&r.length>0){let o=r[r.length-1];return{...e,steps:[...r.slice(0,-1),{...o,fields:[...o.fields,...t]}]}}return{...e,fields:[...a,...t]}}var ya=typeof HTMLElement<"u"?HTMLElement:class{},at=class extends ya{constructor(){if(typeof HTMLElement>"u")throw new Error("EasyForm can only be used in a browser environment");super();this.customComponents={};this.isRendering=!1;this.attemptsLock=null;this.lockCountdownInterval=null;this.slotTemplates=null;this.skipPreserveValuesOnNextRender=!1;this.persistenceConfig=null;this.persistenceDebounceTimer=null;this.pendingRestoreValues=null;this.isRestoringValues=!1;this.completeTimeInterval=null;this.timeRemaining=0;this.timerStarted=!1;this.timerExpired=!1;this.dependencyRenderTimeout=null;this.stateManager=new ae,this.shadow=this.attachShadow({mode:"open"})}static get observedAttributes(){return["schema","template","template-extend","theme","colors","initialData","loading","disabled","max-attempts","block-duration-minutes","attempts-storage-key","submit-button","label-position","show-completed-indicator","form-direction","complete-time"]}get schema(){let e=this.getAttribute("schema");return e?this.getAttribute("template")?(console.warn('EasyForm: Cannot use both "schema" and "template" attributes. "template" will be ignored.'),$(e)):$(e):null}set schema(e){e&&this.getAttribute("template")&&(console.warn('EasyForm: Setting "schema" will remove "template" attribute.'),this.removeAttribute("template"),this.removeAttribute("template-extend")),e?(this.setAttribute("schema",P(e)),this.handleSchemaChange()):this.removeAttribute("schema")}get template(){let e=this.getAttribute("template");return e?(this.getAttribute("schema")&&console.warn('EasyForm: Cannot use both "template" and "schema" attributes. "schema" will be ignored.'),e):null}set template(e){e&&this.getAttribute("schema")&&(console.warn('EasyForm: Setting "template" will remove "schema" attribute.'),this.removeAttribute("schema")),e?this.setAttribute("template",e):(this.removeAttribute("template"),this.removeAttribute("template-extend"))}get templateExtend(){let e=this.getAttribute("template-extend");return e?$(e):null}set templateExtend(e){e?this.setAttribute("template-extend",P(e)):this.removeAttribute("template-extend")}get maxAttempts(){let e=this.getAttribute("max-attempts");if(!e)return null;let a=parseInt(e,10);return isNaN(a)?null:a}set maxAttempts(e){e!=null&&e>=1?this.setAttribute("max-attempts",String(e)):this.removeAttribute("max-attempts")}get blockDurationMinutes(){let e=this.getAttribute("block-duration-minutes");if(!e)return null;let a=parseInt(e,10);return isNaN(a)?null:a}set blockDurationMinutes(e){e!=null&&e>=1?this.setAttribute("block-duration-minutes",String(e)):this.removeAttribute("block-duration-minutes")}get attemptsStorageKey(){return this.getAttribute("attempts-storage-key")}set attemptsStorageKey(e){e?this.setAttribute("attempts-storage-key",e):this.removeAttribute("attempts-storage-key")}get submitButton(){let e=this.getAttribute("submit-button");if(e)try{return $(e)}catch{return null}return null}set submitButton(e){e&&typeof e=="object"?this.setAttribute("submit-button",P(e)):this.removeAttribute("submit-button")}getSubmitButtonConfig(e){let a=this.submitButton,o={...e?.submitButton,...a};return{visible:o.visible??!0,text:o.text??"Enviar",width:o.width??"auto",align:o.align??"left"}}connectedCallback(){this.setupAttemptsLock(),this.setupStyles(),(this.hasAttribute("schema")||this.schema)&&this.render()}disconnectedCallback(){this.lockCountdownInterval&&(clearInterval(this.lockCountdownInterval),this.lockCountdownInterval=null),this.completeTimeInterval&&(clearInterval(this.completeTimeInterval),this.completeTimeInterval=null),this.persistenceDebounceTimer&&(clearTimeout(this.persistenceDebounceTimer),this.persistenceDebounceTimer=null),this.dependencyRenderTimeout&&(clearTimeout(this.dependencyRenderTimeout),this.dependencyRenderTimeout=null),this.attemptsLock&&(this.attemptsLock=null)}attributeChangedCallback(e,a,r){if(e==="schema"&&r!==a&&(this.getAttribute("template")&&(console.warn('EasyForm: "schema" and "template" cannot be used together. Removing "template".'),this.removeAttribute("template"),this.removeAttribute("template-extend")),this.handleSchemaChange()),e==="template"&&r!==a&&(this.getAttribute("schema")&&(console.warn('EasyForm: "template" and "schema" cannot be used together. Removing "schema".'),this.removeAttribute("schema")),this.handleSchemaChange()),e==="template-extend"&&r!==a&&this.handleSchemaChange(),e==="initialData"&&r!==a&&this.handleSchemaChange(),(e==="theme"||e==="colors")&&r!==a&&this.setupStyles(),e==="loading"&&r!==a){let o=this.shadow.querySelector("form");this.updateLoadingOverlay(o||void 0),o&&o.querySelectorAll("input, textarea, select, button").forEach(n=>{n instanceof HTMLElement&&"disabled"in n&&(n.disabled=this.loading)})}e==="disabled"&&r!==a&&this.render(),(e==="label-position"||e==="form-direction"||e==="show-completed-indicator")&&r!==a&&this.render(),(e==="max-attempts"||e==="block-duration-minutes"||e==="attempts-storage-key")&&r!==a&&(this.setupAttemptsLock(),this.updateLockOverlay()),e==="submit-button"&&r!==a&&this.render(),e==="complete-time"&&r!==a&&(this.resetTimer(),this.completeTime&&(this.timeRemaining=this.completeTime,this.render()))}setupAttemptsLock(){let e=this.maxAttempts;if(e==null||e<1){this.attemptsLock=null;return}this.attemptsLock=new W({maxAttempts:e,blockDurationMinutes:this.blockDurationMinutes??5,storageKey:this.attemptsStorageKey??void 0,onLocked:()=>{this.updateLockOverlay()},onUnlocked:()=>{this.stopLockCountdown(),this.updateLockOverlay(),this.render()}})}handleSchemaChange(){let e=null,a=this.template;if(a?e=this.getSchemaFromTemplate(a):e=this.schema,e){let r=this.initialData;this.stateManager.initializeSchema(e,r||void 0),this.initPersistence(e),this.render()}}getSchemaFromTemplate(e){let a=rt(e);if(!a)return console.error(`EasyForm: Template "${e}" not found`),null;let r=this.templateExtend;return r&&r.length>0?Gt(e,r):a}async render(){if(!this.isRendering){this.isRendering=!0;try{let e=null,a=this.template;if(a?e=this.getSchemaFromTemplate(a):e=this.schema,!e){let x=this.shadow.querySelector("form");x&&x.parentNode===this.shadow&&x.remove();return}let r=this.skipPreserveValuesOnNextRender,o=r?{}:this.preserveCurrentValues();this.skipPreserveValuesOnNextRender=!1;let s=this.stateManager.getWizardState();if(o&&Object.keys(o).length>0)for(let[x,k]of Object.entries(o))this.stateManager.setValueWithoutValidation(x,k);let n=this.initialData,i=s!==null,d=e.steps&&e.steps.length>0;if(!r&&(!s||!i||!d||s&&e.steps&&s.totalSteps!==e.steps.length)&&(this.stateManager.initializeSchema(e,n||void 0),i&&d&&s)){let x=this.stateManager.getWizardState();if(x&&s.totalSteps===x.totalSteps){s.currentStep>=0&&s.currentStep<x.totalSteps&&this.stateManager.goToStep(s.currentStep);for(let k of s.completedSteps)k>=0&&k<x.totalSteps&&this.stateManager.completeStep(k)}}let p=this.stateManager.getWizardState(),m=document.createElement("form");m.addEventListener("submit",x=>this.handleSubmit(x)),(this.disabled||this.loading)&&m.classList.add("easy-form-disabled");let u=this.getAttribute("form-direction"),f=e.direction??(u==="vertical"||u==="horizontal"?u:"vertical");m.classList.add(`easy-form-direction-${f}`);let b=this.getAttribute("show-completed-indicator"),h=e.completedIndicator??(b!==null&&b!=="false"),g=typeof h=="object"&&h?.position?h.position:"top";if(p)this.renderWizard(m,e);else{this.renderFields(m,e.fields||[]);let x=this.getSubmitButtonConfig(e);if(x.visible){let k=document.createElement("div");k.className="easy-form-submit-wrapper",k.style.textAlign=x.align;let T=document.createElement("button");T.type="submit",T.textContent=x.text,T.className="easy-form-submit",T.style.width=x.width,(this.disabled||this.loading)&&(T.disabled=!0),k.appendChild(T),m.appendChild(k)}}let y=null;if(h){let{completed:x,total:k}=this.getCompletedRequiredProgress(e),T=document.createElement("div");T.className="easy-form-completed-indicator",T.setAttribute("role","progressbar"),T.setAttribute("aria-valuenow",String(x)),T.setAttribute("aria-valuemin","0"),T.setAttribute("aria-valuemax",String(k)),T.setAttribute("aria-label",`Campos obligatorios completados: ${x} de ${k}`);let N=document.createElement("div");N.className="easy-form-completed-track";let Pe=document.createElement("div");Pe.className="easy-form-completed-fill",Pe.style.width=k>0?`${x/k*100}%`:"0%",N.appendChild(Pe),T.appendChild(N),y=document.createElement("div"),y.className="easy-form-wrapper",g==="top"?(y.appendChild(T),y.appendChild(m)):(y.appendChild(m),y.appendChild(T))}let E=this.shadow.querySelector("form");if(E&&E.parentNode===this.shadow&&E!==m)try{E.remove()}catch(x){console.warn("Error al eliminar formulario anterior:",x)}let S=this.shadow.querySelector(".easy-form-wrapper");S&&S.remove(),this.shadow.appendChild(y||m),this.completeTime&&!this.timerExpired&&(this.renderTimerDisplay(),this.setupTimerInputListener()),this.loading&&this.updateLoadingOverlay(m),this.updateLockOverlay(m)}finally{this.isRendering=!1,this.pendingRestoreValues&&this.applyPendingRestoreValues()}}}updateLockOverlay(e){let a=this.shadow.querySelector(".easy-form-lock-overlay");if(a&&a.remove(),this.stopLockCountdown(),!this.attemptsLock?.isLocked())return;let r=e||this.shadow.querySelector("form");if(!r)return;let o=document.createElement("div");o.className="easy-form-lock-overlay";let s=document.createElement("div");s.className="easy-form-lock-message",s.setAttribute("role","alert");let n=()=>{let i=this.attemptsLock.getRemainingBlockTimeMs();if(i<=0){this.stopLockCountdown();return}let d=Math.floor(i/6e4),c=Math.floor(i%6e4/1e3),p=d>0?`${d} min ${c} s`:`${c} segundos`;s.textContent=`Demasiados intentos. Intenta de nuevo en ${p}.`};n(),o.appendChild(s),r.appendChild(o),this.lockCountdownInterval=setInterval(n,1e3)}stopLockCountdown(){this.lockCountdownInterval&&(clearInterval(this.lockCountdownInterval),this.lockCountdownInterval=null)}updateLoadingOverlay(e){let a=this.shadow.querySelector(".easy-form-loading-overlay");if(a&&a.remove(),this.loading){let r=e||this.shadow.querySelector("form");if(r){let o=document.createElement("div");o.className="easy-form-loading-overlay";let s=document.createElement("div");s.className="easy-form-loading-spinner",o.appendChild(s),r.appendChild(o)}}}preserveCurrentValues(){let e=null,a=this.template;if(a?e=this.getSchemaFromTemplate(a):e=this.schema,!e)return{};let r=this.shadow.querySelector("form"),o={};if(!r)return o;let s=r.querySelectorAll("input, textarea, select");for(let n of s){let i=n.getAttribute("name");if(!i||!(this.findFieldInSchema(e,i)!==null))continue;let c;if(n instanceof HTMLInputElement)if(n.type==="checkbox")c=n.checked;else if(n.type==="radio")if(n.checked)c=n.value;else continue;else n.type==="number"?c=n.value===""?null:Number(n.value):c=n.value;else n instanceof HTMLTextAreaElement?c=n.value:n instanceof HTMLSelectElement&&(n.multiple?c=Array.from(n.selectedOptions).map(p=>p.value):c=n.value||null);c!==void 0&&(o[i]=c===""?null:c)}return o}initializeSlotTemplates(){if(this.slotTemplates!==null)return;let e=[];for(let a of Array.from(this.children))a instanceof HTMLElement&&e.push(a);if(e.length===0){this.slotTemplates=[];return}this.slotTemplates=e.map(a=>{let r=a.hasAttribute("row")?a.getAttribute("row"):null,o=r!=null&&r!==""?Number(r):NaN,s=Number.isFinite(o)?o:null;return{template:a.cloneNode(!0),row:s}})}getSlotClonesByRow(e){this.initializeSlotTemplates();let a=new Map;if(!this.slotTemplates||this.slotTemplates.length===0)return a;for(let{template:r,row:o}of this.slotTemplates){let s=typeof o=="number"?o:-1;Number.isFinite(s)||(s=-1),(s<0||s>=e)&&(s=-1);let n=r.cloneNode(!0),i=a.get(s)??[];i.push(n),a.set(s,i)}return a}applySlotDisabledState(e){if(!this.disabled&&!this.loading)return;e.classList.add("easy-form-slot-disabled"),e.querySelectorAll("input, textarea, select, button").forEach(r=>{"disabled"in r&&(r.disabled=!0)})}renderFields(e,a){if(a.length===0){let i=this.getSlotClonesByRow(0).get(-1);if(i&&i.length>0)for(let d of i)this.applySlotDisabledState(d),e.appendChild(d);return}let r=a.length,o=this.getSlotClonesByRow(r);for(let n=0;n<a.length;n++){let i=o.get(n);if(i&&i.length>0){for(let p of i)this.applySlotDisabledState(p),e.appendChild(p);o.delete(n)}let d=a[n],c=this.renderField(d);c&&e.appendChild(c)}let s=o.get(-1);if(s&&s.length>0)for(let n of s)this.applySlotDisabledState(n),e.appendChild(n)}renderField(e){let a=this.stateManager.getFieldVisibility(e.name),r=this.stateManager.getFieldEnabled(e.name);if(e.type==="group"){let h=this.renderGroup(e);return a||(h.style.display="none",h.classList.add("easy-form-field-hidden")),r||h.classList.add("easy-form-field-disabled"),h}if(e.type==="row"){let h=this.renderRow(e);return a||(h.style.display="none",h.classList.add("easy-form-field-hidden")),r||h.classList.add("easy-form-field-disabled"),h}if(e.type==="array"){let h=this.renderArray(e);return a||(h.style.display="none",h.classList.add("easy-form-field-hidden")),r||h.classList.add("easy-form-field-disabled"),h}if(e.type==="custom"){let h=this.renderCustom(e);return h&&(a||(h.style.display="none",h.classList.add("easy-form-field-hidden")),r||h.classList.add("easy-form-field-disabled")),h}let o=this.stateManager.getValue(e.name),s=this.stateManager.getErrors(e.name),n=s.length>0?s[0]:void 0,i=this.disabled||this.loading,d=this.getAttribute("label-position"),c=["up","down","left","right","none"],p=e.labelPosition??(d&&c.includes(d)?d:"up"),m={...e,disabled:i||!r||e.disabled,labelPosition:p},u=tt(e.type);if(u){let h=u({field:m,value:o,error:n,onChange:g=>this.handleFieldChange(e.name,g),onBlur:()=>this.handleFieldBlur(e.name)});return h&&!a&&(h.style.display="none",h.classList.add("easy-form-field-hidden")),h}let f=Wt(m,o,n,h=>this.handleFieldChange(e.name,h),()=>this.handleFieldBlur(e.name)),b=f.querySelector(".easy-form-field")||f;return b instanceof HTMLElement&&b.setAttribute("data-field-name",e.name),a||(f.style.display="none",f.classList.add("easy-form-field-hidden")),f}renderGroup(e){let a=e,r=a.direction??"vertical",o=a.collapsible===!0,s=a.defaultOpen!==!1,n=document.createElement("div");if(n.className=`easy-form-group easy-form-direction-${r}`,e.name&&n.setAttribute("data-field-name",e.name),o){n.classList.add("easy-form-group-collapsible"),s||n.classList.add("easy-form-group-collapsed");let i=document.createElement("button");i.type="button",i.className="easy-form-group-header",i.setAttribute("aria-expanded",String(s));let d=`easy-form-group-${(e.name||"group").replace(/[^a-z0-9]/gi,"-")}-content`;i.setAttribute("aria-controls",d);let c=document.createElement("span");c.textContent=e.label||"Grupo";let p=document.createElement("span");p.className="easy-form-group-chevron",p.setAttribute("aria-hidden","true"),p.textContent="\u25BC",i.appendChild(c),i.appendChild(p),n.appendChild(i);let m=document.createElement("div");if(m.id=d,m.className="easy-form-group-content","fields"in e&&e.fields)for(let f of e.fields){let b=f.name.startsWith(e.name+".")?f.name:`${e.name}.${f.name}`,h={...f,name:b},g=this.renderField(h);g&&m.appendChild(g)}n.appendChild(m);let u=f=>{f?m.style.maxHeight=m.scrollHeight+"px":m.style.maxHeight="0"};s?requestAnimationFrame(()=>u(!0)):m.style.maxHeight="0",i.addEventListener("click",()=>{n.classList.contains("easy-form-group-collapsed")?(n.classList.remove("easy-form-group-collapsed"),i.setAttribute("aria-expanded","true"),u(!0)):(m.style.maxHeight=m.scrollHeight+"px",requestAnimationFrame(()=>{n.classList.add("easy-form-group-collapsed"),i.setAttribute("aria-expanded","false"),u(!1)}))})}else{if(e.label){let i=document.createElement("h3");i.className="easy-form-group-label",i.textContent=e.label,n.appendChild(i)}if("fields"in e&&e.fields)for(let i of e.fields){let d=i.name.startsWith(e.name+".")?i.name:`${e.name}.${i.name}`,c={...i,name:d},p=this.renderField(c);p&&n.appendChild(p)}}return n}renderRow(e){let a=document.createElement("div");a.className="easy-form-row";let r=e;if(a.style.display="flex",a.style.flexWrap="wrap",a.style.alignItems=r.align||"stretch",r.gap!==void 0){let o=typeof r.gap=="number"?`${r.gap}px`:r.gap;a.style.gap=o}else a.style.gap="1rem";if("fields"in e&&e.fields)for(let o of e.fields){let s=this.renderField(o);if(s){let n=document.createElement("div");n.style.flex="1",n.style.minWidth="0",n.appendChild(s),a.appendChild(n)}}return a}renderArray(e){let a=document.createElement("div");if(a.className="easy-form-array",a.setAttribute("data-field-name",e.name),e.label){let p=document.createElement("label");p.className="easy-form-label",p.textContent=e.label,a.appendChild(p)}let r=this.stateManager.getValue(e.name)||[],o=e,s=o.minItems??0,n=o.maxItems??1/0,i=document.createElement("div");i.className="easy-form-array-items";for(let p=0;p<r.length;p++){let m=document.createElement("div");if(m.className="easy-form-array-item",o.itemSchema?.fields)for(let b of o.itemSchema.fields){let h={...b,name:`${e.name}.${p}.${b.name}`},g=this.renderField(h);g&&m.appendChild(g)}let u=document.createElement("button");u.type="button",u.textContent="Eliminar",u.className="easy-form-array-remove";let f=r.length<=s;this.disabled||this.loading||f?u.disabled=!0:u.addEventListener("click",()=>{let b=[...r];b.splice(p,1),this.handleFieldChange(e.name,b)}),m.appendChild(u),i.appendChild(m)}a.appendChild(i);let d=document.createElement("button");d.type="button",d.textContent="Agregar",d.className="easy-form-array-add";let c=r.length>=n;return this.disabled||this.loading||c?d.disabled=!0:d.addEventListener("click",()=>{let p=this.stateManager.createDefaultArrayItem(e),m=[...r,p];this.handleFieldChange(e.name,m)}),a.appendChild(d),a}renderCustom(e){let a=tt("custom");if(!a){let n=document.createElement("div");return n.textContent=`Componente custom no registrado para: ${e.name}`,n}let r=this.stateManager.getValue(e.name),o=this.stateManager.getErrors(e.name),s=o.length>0?o[0]:void 0;return a({field:e,value:r,error:s,onChange:n=>this.handleFieldChange(e.name,n),onBlur:()=>this.handleFieldBlur(e.name)})}getCompletedRequiredProgress(e){let a=c=>{let p=[];for(let m of c)if(m.type==="array"&&"itemSchema"in m&&m.itemSchema?.fields){let u=this.stateManager.getValue(m.name),f=Array.isArray(u)?u.length:0;for(let b=0;b<f;b++)for(let h of m.itemSchema.fields)p.push({...h,name:`${m.name}.${b}.${h.name}`})}else(m.type==="group"||m.type==="row")&&"fields"in m&&m.fields?p.push(...a(m.fields)):p.push(m);return p},r=e.steps?this.stateManager.getCurrentStepFields()||[]:e.fields||[],n=a(r).filter(c=>c.validations?.some(p=>p.type==="required")).filter(c=>this.stateManager.getFieldVisibility(c.name)),i=n.length;return{completed:n.filter(c=>{if(this.stateManager.getErrors(c.name).length>0)return!1;let m=this.stateManager.getValue(c.name);return!(m==null||typeof m=="string"&&m.trim()===""||Array.isArray(m)&&m.length===0&&c.type==="array")}).length,total:i}}renderWizard(e,a){let r=this.stateManager.getWizardState();if(!r)return;let o=document.createElement("div");o.className="easy-form-wizard";let s=document.createElement("div");s.className="easy-form-wizard-steps";let n=a?.stepStyle;if(n&&n!=="default"&&s.classList.add(`ef-stepper-${n}`),a?.steps)for(let m=0;m<a.steps.length;m++){let u=document.createElement("div");u.className="easy-form-wizard-step",m===r.currentStep&&u.classList.add("active"),r.completedSteps.includes(m)&&u.classList.add("completed"),u.textContent=a.steps[m].title,s.appendChild(u)}o.appendChild(s);let i=document.createElement("div");i.className="easy-form-wizard-fields";let d=this.stateManager.getCurrentStepFields();this.renderFields(i,d),o.appendChild(i);let c=document.createElement("div");if(c.className="easy-form-wizard-nav",r.currentStep>0){let m=document.createElement("button");m.type="button",m.textContent="Anterior",m.className="easy-form-wizard-prev",this.disabled||this.loading?m.disabled=!0:m.addEventListener("click",()=>{this.stateManager.getWizardState()&&this.stateManager.previousStep()&&(this.render(),this.emitStepChange())}),c.appendChild(m)}if(r.currentStep<r.totalSteps-1){let m=document.createElement("button");m.type="button",m.textContent="Siguiente",m.className="easy-form-wizard-next",this.disabled||this.loading?m.disabled=!0:m.addEventListener("click",async()=>{let u=this.stateManager.getWizardState();if(!u)return;let f=this.stateManager.getCurrentStepFields();for(let y of f)this.stateManager.getFieldVisibility(y.name)&&await this.stateManager.validateField(y.name);let b=this.stateManager.getAllErrors(),h={};for(let y of f)b[y.name]&&b[y.name].length>0&&(h[y.name]=b[y.name]);Object.keys(h).length>0?this.emitError(h):(this.stateManager.completeStep(u.currentStep),this.stateManager.nextStep()&&(this.render(),this.emitStepChange()))}),c.appendChild(m)}let p=this.getSubmitButtonConfig(a);if(r.currentStep===r.totalSteps-1&&p.visible){let m=document.createElement("button");m.type="button",m.textContent=p.text,m.className="easy-form-wizard-next",m.style.width=p.width,this.disabled||this.loading?m.disabled=!0:m.addEventListener("click",async()=>{let u=this.stateManager.getCurrentStepFields();for(let g of u)this.stateManager.getFieldVisibility(g.name)&&await this.stateManager.validateField(g.name);let f=this.stateManager.getAllErrors(),b={};for(let g of u)f[g.name]&&f[g.name].length>0&&(b[g.name]=f[g.name]);Object.keys(b).length>0?this.emitError(b):await this.handleSubmit(new Event("submit"))}),c.appendChild(m)}o.appendChild(c),e.appendChild(o)}async handleFieldChange(e,a){await this.stateManager.setValue(e,a),this.scheduleSave();let r=this.schema;if(r){let n=this.findFieldInSchema(r,e);n?.type==="array"&&(this.rerenderArrayField(n)||(this.skipPreserveValuesOnNextRender=!0,requestAnimationFrame(()=>this.render())))}let o=this.stateManager.getDependentFields(e);o.length>0&&(this.dependencyRenderTimeout&&clearTimeout(this.dependencyRenderTimeout),this.dependencyRenderTimeout=setTimeout(()=>{this.renderDependentFields(o),this.emitDependencyChange(e,o)},10));let s=new CustomEvent("change",{detail:{field:e,value:a,values:this.stateManager.getState().values},bubbles:!0,composed:!0});this.dispatchEvent(s)}rerenderArrayField(e){let a=this.shadow.querySelector(`[data-field-name="${e.name}"].easy-form-array`);if(!a?.parentNode)return!1;let r=this.renderArray(e);return a.parentNode.replaceChild(r,a),!0}renderDependentFields(e){let a=this.schema;if(!a)return;let r=this.shadow.querySelector("form");if(!r)return;let o=new Set;for(let s of e)o.add(s);for(let s of e)this.stateManager.getDependentFields(s).forEach(i=>o.add(i));for(let s of o){let n=r.querySelector(`[data-field-name="${s}"]`);if(n||(n=r.querySelector(`.easy-form-field[name="${s}"]`)),n||(n=r.querySelector(`[data-field-name="${s}"], [data-group-name="${s}"]`)),n){let i=this.findFieldInSchema(a,s);if(!i)continue;let d=n.parentElement;if(d){let c=this.renderField(i);c&&d.replaceChild(c,n)}}}}emitDependencyChange(e,a){let r=new CustomEvent("dependencyChange",{detail:{changedField:e,affectedFields:a},bubbles:!0,composed:!0});this.dispatchEvent(r)}async handleFieldBlur(e){this.stateManager.setTouched(e),await this.stateManager.validateField(e),this.updateSingleField(e)}updateSingleField(e){let a=this.schema;if(!a||!this.findFieldInSchema(a,e))return;let o=this.stateManager.getErrors(e),s=o.length>0?o[0]:void 0,n=this.shadow.querySelector(`[name="${e}"]`)?.closest(".easy-form-field");if(!n)return;let i=n.querySelector(".easy-form-error");if(s){if(i)i.textContent=s;else{let c=document.createElement("p");c.className="easy-form-error",c.textContent=s,n.appendChild(c)}n.querySelector("input, textarea, select")?.classList.add("easy-form-input-error")}else i?.remove(),n.querySelector("input, textarea, select")?.classList.remove("easy-form-input-error")}findFieldInSchema(e,a){let r=e.fields||[],o=a.indexOf(".");if(o>0){let s=a.slice(0,o),n=a.slice(o+1),i=r.find(d=>d.name===s);if(!i)return null;if((i.type==="group"||i.type==="row")&&"fields"in i&&i.fields){let d=this.findFieldInSchema({fields:i.fields},n);return d?{...d,name:a}:null}return null}for(let s of r){if(s.name===a)return s;if(s.type==="group"&&"fields"in s){let n=this.findFieldInSchema({fields:s.fields},a);if(n)return n}if(s.type==="row"&&"fields"in s){let n=this.findFieldInSchema({fields:s.fields},a);if(n)return n}}return null}async handleSubmit(e){if(e.preventDefault(),this.attemptsLock?.isLocked())return;if(this.timerExpired){this.emitError({form:["El tiempo ha expirado. No puedes enviar el formulario."]});return}let a=await this.stateManager.validateForm(),r=this.stateManager.getState();if(Object.keys(a).length>0){for(let n of Object.keys(a))this.updateSingleField(n);this.emitError(a);return}let o={values:r.values,isValid:!0,errors:{}};this.completeTime&&this.timerStarted&&(o.timeRemaining=this.timeRemaining);let s=new CustomEvent("submit",{detail:o,bubbles:!0,composed:!0});this.dispatchEvent(s),this.clearPersistence()}emitError(e){let a=new CustomEvent("error",{detail:{errors:e},bubbles:!0,composed:!0});this.dispatchEvent(a)}emitStepChange(){let e=this.stateManager.getWizardState();if(!e)return;let a=new CustomEvent("stepChange",{detail:{currentStep:e.currentStep,previousStep:e.currentStep>0?e.currentStep-1:e.currentStep,totalSteps:e.totalSteps},bubbles:!0,composed:!0});this.dispatchEvent(a)}registerComponents(e){this.customComponents={...this.customComponents,...e},Ut(e)}reset(){this.stateManager.reset(),this.render()}incrementAttempts(){this.attemptsLock?.incrementAttempts(),this.attemptsLock?.isLocked()&&this.updateLockOverlay()}resetAttempts(){this.attemptsLock?.reset(),this.stopLockCountdown(),this.updateLockOverlay(),this.render()}isLocked(){return this.attemptsLock?.isLocked()??!1}getRemainingBlockTimeMs(){return this.attemptsLock?.getRemainingBlockTimeMs()??0}requestSubmit(){let e=this.shadow.querySelector("form");e&&typeof e.requestSubmit=="function"&&e.requestSubmit()}clear(){let e=this.schema,a=this.template,r=null;a?r=this.getSchemaFromTemplate(a):r=e,r&&(this.stateManager.initializeSchema(r,{}),this.render())}getValues(){return this.stateManager.getState().values}getValue(e){return this.stateManager.getValue(e)}async setValue(e,a){await this.stateManager.setValue(e,a),this.render()}async setValues(e){for(let[a,r]of Object.entries(e))await this.stateManager.setValue(a,r);this.render()}async validate(){let e=await this.stateManager.validateForm();if(Object.keys(e).length>0){for(let a of Object.keys(e))this.updateSingleField(a);this.emitError(e)}else this.shadow.querySelectorAll(".easy-form-error").forEach(o=>o.remove()),this.shadow.querySelectorAll(".easy-form-input-error").forEach(o=>o.classList.remove("easy-form-input-error"));return e}async validateField(e){return await this.stateManager.validateField(e),this.updateSingleField(e),this.stateManager.getErrors(e)}getErrors(){return this.stateManager.getAllErrors()}getFieldErrors(e){return this.stateManager.getErrors(e)}isValid(){return this.stateManager.getState().isValid}get theme(){let e=this.getAttribute("theme");return e&&["plano","tradicional","material","rounded-shadow","lines","shadcn","chakra","mantine","glass","bordered","minimal","efc"].includes(e)?e:"plano"}set theme(e){e?this.setAttribute("theme",e):this.removeAttribute("theme")}get colors(){let e=this.getAttribute("colors");return e?$(e):null}set colors(e){e?this.setAttribute("colors",P(e)):this.removeAttribute("colors")}get initialData(){let e=this.getAttribute("initialData");return e?$(e):null}set initialData(e){e?this.setAttribute("initialData",P(e)):this.removeAttribute("initialData")}get loading(){return this.hasAttribute("loading")}set loading(e){e?this.setAttribute("loading",""):this.removeAttribute("loading")}get disabled(){return this.hasAttribute("disabled")}set disabled(e){e?this.setAttribute("disabled",""):this.removeAttribute("disabled")}get completeTime(){let e=this.getAttribute("complete-time");if(!e)return null;let a=parseInt(e,10);return isNaN(a)||a<=0?null:a}set completeTime(e){e!=null&&e>0?this.setAttribute("complete-time",String(e)):this.removeAttribute("complete-time")}setupStyles(){let e=this.shadow.querySelector("style");e&&e.remove();let a=this.theme,r=_(this.colors||void 0),o=ee(a,r),s=document.createElement("style");s.textContent=o,this.shadow.firstChild?this.shadow.insertBefore(s,this.shadow.firstChild):this.shadow.appendChild(s)}initPersistence(e){if(!e.persistence||!e.persistence.enabled){this.persistenceConfig=null;return}this.persistenceConfig={enabled:!0,key:e.persistence.key,autoSave:e.persistence.autoSave??!0,debounce:e.persistence.debounce??500,onRestore:e.persistence.onRestore},this.restoreFromStorage()}restoreFromStorage(){if(!(!this.persistenceConfig||!this.persistenceConfig.enabled)&&this.persistenceConfig.key)try{let e=localStorage.getItem(this.persistenceConfig.key);if(e){let a=JSON.parse(e);a&&typeof a=="object"&&(this.pendingRestoreValues=a,this.persistenceConfig.onRestore&&this.persistenceConfig.onRestore(a))}}catch(e){console.warn("EasyForm: Error restoring from localStorage:",e)}}applyPendingRestoreValues(){if(!this.pendingRestoreValues||this.isRestoringValues)return;this.isRestoringValues=!0;let e={...this.pendingRestoreValues};this.pendingRestoreValues=null;for(let[a,r]of Object.entries(e))this.stateManager.setValueWithoutValidation(a,r);this.updateInputsWithValues(e),this.isRestoringValues=!1}updateInputsWithValues(e){for(let a of Object.keys(e)){let r=this.shadow.querySelector(`[name="${a}"]`);r&&(r.value=e[a]??"")}}saveToStorage(){if(!(!this.persistenceConfig||!this.persistenceConfig.enabled)&&this.persistenceConfig.key)try{let e=this.stateManager.getState().values;localStorage.setItem(this.persistenceConfig.key,JSON.stringify(e))}catch(e){console.warn("EasyForm: Error saving to localStorage:",e)}}scheduleSave(){!this.persistenceConfig||!this.persistenceConfig.enabled||this.persistenceConfig.autoSave&&(this.persistenceDebounceTimer&&clearTimeout(this.persistenceDebounceTimer),this.persistenceDebounceTimer=setTimeout(()=>{this.saveToStorage()},this.persistenceConfig.debounce))}clearPersistence(){if(!(!this.persistenceConfig||!this.persistenceConfig.key))try{localStorage.removeItem(this.persistenceConfig.key)}catch(e){console.warn("EasyForm: Error clearing localStorage:",e)}}resetTimer(){this.completeTimeInterval&&(clearInterval(this.completeTimeInterval),this.completeTimeInterval=null),this.timerStarted=!1,this.timerExpired=!1,this.completeTime&&(this.timeRemaining=this.completeTime)}startTimer(){this.timerStarted||this.timerExpired||!this.completeTime||(this.timerStarted=!0,this.timeRemaining=this.completeTime,this.updateTimerDisplay(),this.completeTimeInterval=setInterval(()=>{this.timeRemaining--,this.updateTimerDisplay(),this.timeRemaining<=0&&this.handleTimerExpired()},1e3))}updateTimerDisplay(){let e=this.shadow.querySelector(".easy-form-timer");if(!e)return;let a=Math.floor(this.timeRemaining/60),r=this.timeRemaining%60,o=`${a}:${r.toString().padStart(2,"0")}`;e.textContent=o,this.timeRemaining<=30&&e.classList.add("easy-form-timer-warning"),this.timeRemaining<=10&&e.classList.add("easy-form-timer-danger")}handleTimerExpired(){this.completeTimeInterval&&(clearInterval(this.completeTimeInterval),this.completeTimeInterval=null),this.timerExpired=!0;let e=new CustomEvent("timeout",{detail:{originalTime:this.completeTime||0,expiredAt:new Date},bubbles:!0,composed:!0});this.dispatchEvent(e),this.disableAllFields()}disableAllFields(){let e=this.shadow.querySelector("form");if(!e)return;e.querySelectorAll("input, textarea, select, button").forEach(o=>{(o instanceof HTMLInputElement||o instanceof HTMLTextAreaElement||o instanceof HTMLSelectElement||o instanceof HTMLButtonElement&&o.type!=="submit")&&(o.disabled=!0)}),e.classList.add("easy-form-timer-expired");let r=this.shadow.querySelector(".easy-form-timer");r&&(r.classList.add("easy-form-timer-expired"),r.textContent="Tiempo agotado")}setupTimerInputListener(){if(!this.completeTime||this.timerStarted)return;let e=this.shadow.querySelector("form");if(!e)return;let a=()=>{!this.timerStarted&&!this.timerExpired&&this.startTimer()};e.addEventListener("input",a,{once:!0})}renderTimerDisplay(){let e=this.shadow.querySelector(".easy-form-timer");e&&e.remove();let a=this.shadow.querySelector("form");if(!a)return;let r=document.createElement("div");r.className="easy-form-timer";let o=this.completeTime||0,s=Math.floor(o/60),n=o%60;r.textContent=`${s}:${n.toString().padStart(2,"0")}`,a.insertBefore(r,a.firstChild)}};typeof window<"u"&&typeof customElements<"u"&&!customElements.get("easy-form")&&customElements.define("easy-form",at);export{at as EasyForm};
3384
3450
  //# sourceMappingURL=easy-form.js.map