@forms.expert/sdk 0.1.11 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- "use strict";var FormsExpert=(()=>{var S=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var P=Object.prototype.hasOwnProperty;var U=(t,e)=>{for(var n in e)S(t,n,{get:e[n],enumerable:!0})},A=(t,e,n,m)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of L(e))!P.call(t,s)&&s!==n&&S(t,s,{get:()=>e[s],enumerable:!(m=T(e,s))||m.enumerable});return t};var z=t=>A(S({},"__esModule",{value:!0}),t);var j={};U(j,{FormWidget:()=>C,autoInit:()=>$,errorsToRecord:()=>k,generateFormStyles:()=>E,renderField:()=>N,renderForm:()=>v,renderSuccess:()=>w});var R={theme:"light",primaryColor:"#3b82f6",backgroundColor:"#ffffff",textColor:"#1f2937",borderRadius:"md",fontSize:"md",buttonStyle:"filled",labelPosition:"top"};function I(t){switch(t){case"none":return"0";case"sm":return"0.125rem";case"md":return"0.375rem";case"lg":return"0.5rem";default:return"0.375rem"}}function M(t){switch(t){case"none":return"0";case"small":return"4px";case"medium":return"8px";case"large":return"12px";case"full":return"9999px";default:return"8px"}}function O(t){switch(t){case"sm":return"0.875rem";case"md":return"1rem";case"lg":return"1.125rem";default:return"1rem"}}function H(t){switch(t){case"small":return"0.75rem";case"large":return"1rem";default:return"0.875rem"}}function V(t){switch(t){case"compact":return"0.5rem";case"relaxed":return"1.5rem";case"spacious":return"2rem";default:return"1rem"}}function q(t){switch(t){case"none":return"0";case"compact":return"1rem";case"relaxed":return"2.5rem";case"spacious":return"3.5rem";default:return"1.5rem"}}function B(t){switch(t){case"compact":return"0.125rem";case"relaxed":return"0.75rem";default:return"0.25rem"}}function K(t){switch(t){case"narrow":return"28rem";case"wide":return"48rem";case"full":return"100%";default:return"36rem"}}function W(t){switch(t){case"left":return"flex-start";case"right":return"flex-end";default:return"center"}}function E(t=R){let e={...R,...t},n=I(e.borderRadius),m=M(e.buttonRadius),s=O(e.fontSize),u=H(e.placeholderFontSize),c=V(e.fieldSpacing),o=q(e.formPadding),r=B(e.labelSpacing),l=K(e.formWidth),p=e.primaryColor,i=e.buttonColor,a=e.fontFamily||"system-ui, -apple-system, sans-serif",d=W(e.buttonAlign);return`
1
+ "use strict";var FormsExpert=(()=>{var C=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var P=Object.prototype.hasOwnProperty;var U=(t,e)=>{for(var n in e)C(t,n,{get:e[n],enumerable:!0})},A=(t,e,n,m)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of L(e))!P.call(t,s)&&s!==n&&C(t,s,{get:()=>e[s],enumerable:!(m=T(e,s))||m.enumerable});return t};var z=t=>A(C({},"__esModule",{value:!0}),t);var j={};U(j,{FormWidget:()=>S,autoInit:()=>$,errorsToRecord:()=>k,generateFormStyles:()=>E,renderField:()=>N,renderForm:()=>v,renderSuccess:()=>w});var R={theme:"light",primaryColor:"#3b82f6",backgroundColor:"#ffffff",textColor:"#1f2937",borderRadius:"md",fontSize:"md",buttonStyle:"filled",labelPosition:"top"};function I(t){switch(t){case"none":return"0";case"sm":return"0.125rem";case"md":return"0.375rem";case"lg":return"0.5rem";default:return"0.375rem"}}function M(t){switch(t){case"none":return"0";case"small":return"4px";case"medium":return"8px";case"large":return"12px";case"full":return"9999px";default:return"8px"}}function O(t){switch(t){case"sm":return"0.875rem";case"md":return"1rem";case"lg":return"1.125rem";default:return"1rem"}}function H(t){switch(t){case"small":return"0.75rem";case"large":return"1rem";default:return"0.875rem"}}function V(t){switch(t){case"compact":return"0.5rem";case"relaxed":return"1.5rem";case"spacious":return"2rem";default:return"1rem"}}function q(t){switch(t){case"none":return"0";case"compact":return"1rem";case"relaxed":return"2.5rem";case"spacious":return"3.5rem";default:return"1.5rem"}}function B(t){switch(t){case"compact":return"0.125rem";case"relaxed":return"0.75rem";default:return"0.25rem"}}function K(t){switch(t){case"narrow":return"28rem";case"wide":return"48rem";case"full":return"100%";default:return"36rem"}}function W(t){switch(t){case"left":return"flex-start";case"right":return"flex-end";default:return"center"}}function E(t=R){let e={...R,...t},n=I(e.borderRadius),m=M(e.buttonRadius),s=O(e.fontSize),u=H(e.placeholderFontSize),c=V(e.fieldSpacing),o=q(e.formPadding),r=B(e.labelSpacing),l=K(e.formWidth),d=e.primaryColor,i=e.buttonColor,a=e.fontFamily||"system-ui, -apple-system, sans-serif",p=W(e.buttonAlign);return`
2
2
  .forms-expert-wrapper {
3
3
  ${e.backgroundImageUrl?`background-image: url(${e.backgroundImageUrl}); background-size: cover; background-position: center;`:""}
4
4
  ${e.backgroundImageUrl?"":`background-color: ${e.backgroundColor};`}
@@ -74,8 +74,9 @@
74
74
  .forms-expert-select {
75
75
  width: 100%;
76
76
  padding: 0.5rem 0.75rem;
77
- border: 1px solid ${e.theme==="dark"?"#4b5563":"#d1d5db"};
78
- border-radius: ${n};
77
+ border: ${e.fieldBorderStyle==="bottom"?"none":`1px solid ${e.theme==="dark"?"#4b5563":"#d1d5db"}`};
78
+ ${e.fieldBorderStyle==="bottom"?`border-bottom: 1px solid ${e.theme==="dark"?"#4b5563":"#d1d5db"};`:""}
79
+ border-radius: ${e.fieldBorderStyle==="bottom"?"0":n};
79
80
  font-size: ${s};
80
81
  font-family: inherit;
81
82
  background-color: ${e.theme==="dark"?"#374151":"#ffffff"};
@@ -128,8 +129,9 @@
128
129
  .forms-expert-file {
129
130
  width: 100%;
130
131
  padding: 0.5rem 0.75rem;
131
- border: 1px solid ${e.theme==="dark"?"#4b5563":"#d1d5db"};
132
- border-radius: ${n};
132
+ border: ${e.fieldBorderStyle==="bottom"?"none":`1px solid ${e.theme==="dark"?"#4b5563":"#d1d5db"}`};
133
+ ${e.fieldBorderStyle==="bottom"?`border-bottom: 1px solid ${e.theme==="dark"?"#4b5563":"#d1d5db"};`:""}
134
+ border-radius: ${e.fieldBorderStyle==="bottom"?"0":n};
133
135
  font-size: ${s};
134
136
  background-color: ${e.theme==="dark"?"#374151":"#ffffff"};
135
137
  cursor: pointer;
@@ -143,7 +145,7 @@
143
145
 
144
146
  .forms-expert-button-wrapper {
145
147
  display: flex;
146
- justify-content: ${d};
148
+ justify-content: ${p};
147
149
  margin-top: 1rem;
148
150
  }
149
151
 
@@ -156,7 +158,7 @@
156
158
  border-radius: ${m};
157
159
  cursor: pointer;
158
160
  transition: opacity 0.2s, transform 0.1s;
159
- ${e.buttonStyle==="filled"?`background: ${p}; color: ${i||"white"}; border: none;`:`background: transparent; color: ${p}; border: 2px solid ${p};`}
161
+ ${e.buttonStyle==="filled"?`background: ${d}; color: ${i||"white"}; border: none;`:`background: transparent; color: ${d}; border: 2px solid ${d};`}
160
162
  }
161
163
 
162
164
  .forms-expert-button:hover {
@@ -279,17 +281,17 @@
279
281
  .forms-expert-image-choice-item img { max-width: 80px; max-height: 80px; object-fit: cover; border-radius: ${n}; }
280
282
 
281
283
  ${e.customCss||""}
282
- `.trim()}function x(t){let e=document.createElement("div");return e.textContent=t,e.innerHTML}function D(t){switch(t){case"small":return"18px";case"large":return"30px";case"extra-large":return"36px";default:return"24px"}}function _(t){switch(t){case"small":return"14px";case"large":return"18px";default:return"16px"}}function N(t,e,n,m){let s=document.createElement("div");if(t.type==="heading"){s.className="forms-expert-group";let r=document.createElement("h3");if(r.className="forms-expert-heading",r.style.fontSize=D(m?.headingSize),r.textContent=t.label||"",s.appendChild(r),t.content){let l=document.createElement("p");l.className="forms-expert-heading-subtitle",l.textContent=t.content,s.appendChild(l)}return s}if(t.type==="divider"){let r=document.createElement("hr");return r.className="forms-expert-divider",r}if(t.type==="paragraph"){s.className="forms-expert-group";let r=t.paragraphFontSize?`${t.paragraphFontSize}px`:_(m?.paragraphSize);if(t.label){let l=document.createElement("p");l.className="forms-expert-paragraph-label",l.style.fontSize=r,l.textContent=t.label,s.appendChild(l)}if(t.content){let l=document.createElement("div");l.className="forms-expert-paragraph",l.style.fontSize=r,l.innerHTML=t.content,s.appendChild(l)}return s}if(t.type==="hidden"){let r=document.createElement("input");return r.type="hidden",r.name=t.name,r.value=String(t.defaultValue??e??""),s.appendChild(r),s.style.display="none",s}if(t.type==="checkbox"||t.type==="toggle"||t.type==="consent"){s.className="forms-expert-checkbox-group";let r=document.createElement("input");r.type="checkbox",r.id=`mira-field-${t.name}`,r.name=t.name,r.className="forms-expert-checkbox",r.checked=!!e,t.required&&(r.required=!0);let l=document.createElement("label");l.htmlFor=r.id;let p=t.type==="consent"?t.consentText||t.label||t.name:t.label||t.name;if(l.innerHTML=`${x(p)}${t.required?'<span class="forms-expert-required">*</span>':""}`,s.appendChild(r),s.appendChild(l),t.type==="consent"&&t.consentUrl){let i=document.createElement("a");i.href=t.consentUrl,i.target="_blank",i.rel="noopener noreferrer",i.textContent="View policy",i.className="forms-expert-consent-link",s.appendChild(i)}if(n){let i=document.createElement("div");i.className="forms-expert-error-message",i.textContent=n,s.appendChild(i)}return s}s.className="forms-expert-group";let u=document.createElement("label");u.className="forms-expert-label",u.htmlFor=`mira-field-${t.name}`,u.innerHTML=`${x(t.label||t.name)}${t.required?'<span class="forms-expert-required">*</span>':""}`,s.appendChild(u);let c=document.createElement("div");c.className="forms-expert-input-wrapper";let o;switch(t.type){case"textarea":case"richText":o=document.createElement("textarea"),o.className="forms-expert-textarea",o.value=String(e||""),t.maxLength&&(o.maxLength=t.maxLength);break;case"select":case"dropdown":{o=document.createElement("select"),o.className="forms-expert-select";let r=document.createElement("option");r.value="",r.textContent=t.placeholder||"Select an option...",o.appendChild(r),(t.options||[]).forEach(p=>{let i=document.createElement("option");i.value=p,i.textContent=p,e===p&&(i.selected=!0),o.appendChild(i)});break}case"radio":{let r=document.createElement("div");if(r.className="forms-expert-radio-group",(t.options||[]).forEach(p=>{let i=document.createElement("label");i.className="forms-expert-radio-item";let a=document.createElement("input");a.type="radio",a.name=t.name,a.value=p,a.checked=e===p,i.appendChild(a),i.appendChild(document.createTextNode(` ${p}`)),r.appendChild(i)}),c.appendChild(r),n){let p=document.createElement("div");p.className="forms-expert-error-message",p.textContent=n,c.appendChild(p)}return s.appendChild(c),s}case"multiselect":{let r=document.createElement("div");r.className="forms-expert-multiselect-group";let l=e||[];if((t.options||[]).forEach(i=>{let a=document.createElement("label");a.className="forms-expert-checkbox-item";let d=document.createElement("input");d.type="checkbox",d.name=t.name,d.value=i,d.checked=l.includes(i),a.appendChild(d),a.appendChild(document.createTextNode(` ${i}`)),r.appendChild(a)}),c.appendChild(r),n){let i=document.createElement("div");i.className="forms-expert-error-message",i.textContent=n,c.appendChild(i)}return s.appendChild(c),s}case"rating":{let r=document.createElement("div");r.className="forms-expert-rating";let l=t.ratingMax||5,p=e||0;for(let i=1;i<=l;i++){let a=document.createElement("button");a.type="button",a.className=`forms-expert-rating-star ${i<=p?"active":""}`,a.textContent="\u2605",a.dataset.value=String(i),r.appendChild(a)}if(c.appendChild(r),n){let i=document.createElement("div");i.className="forms-expert-error-message",i.textContent=n,c.appendChild(i)}return s.appendChild(c),s}case"scale":case"opinionScale":{let r=document.createElement("div");r.className="forms-expert-scale";let l=t.min??(t.type==="opinionScale"?0:1),p=t.max??(t.type==="opinionScale"?10:5),i=e;for(let a=l;a<=p;a++){let d=document.createElement("button");d.type="button",d.className=`forms-expert-scale-btn ${i===a?"active":""}`,d.textContent=String(a),d.dataset.value=String(a),r.appendChild(d)}if(c.appendChild(r),t.lowLabel||t.highLabel){let a=document.createElement("div");a.className="forms-expert-scale-labels",a.innerHTML=`<span>${x(t.lowLabel||"")}</span><span>${x(t.highLabel||"")}</span>`,c.appendChild(a)}if(n){let a=document.createElement("div");a.className="forms-expert-error-message",a.textContent=n,c.appendChild(a)}return s.appendChild(c),s}case"slider":{o=document.createElement("input"),o.type="range",o.className="forms-expert-slider",o.min=String(t.min??0),o.max=String(t.max??100),o.step=String(t.step??1),o.value=String(e??t.min??0);break}case"file":o=document.createElement("input"),o.type="file",o.className="forms-expert-file",t.allowedMimeTypes?.length&&(o.accept=t.allowedMimeTypes.join(",")),t.multiple&&(o.multiple=!0);break;case"currency":{o=document.createElement("input"),o.type="number",o.className="forms-expert-input",o.value=String(e??""),t.min!==void 0&&(o.min=String(t.min)),t.max!==void 0&&(o.max=String(t.max)),o.step=String(t.step||.01);break}case"phone":o=document.createElement("input"),o.type="tel",o.className="forms-expert-input",o.value=String(e||"");break;case"url":o=document.createElement("input"),o.type="url",o.className="forms-expert-input",o.value=String(e||"");break;case"password":o=document.createElement("input"),o.type="password",o.className="forms-expert-input",o.value=String(e||"");break;case"time":o=document.createElement("input"),o.type="time",o.className="forms-expert-input",o.value=String(e||"");break;case"datetime":o=document.createElement("input"),o.type="datetime-local",o.className="forms-expert-input",o.value=String(e||"");break;case"colorPicker":o=document.createElement("input"),o.type="color",o.className="forms-expert-color",o.value=String(e||"#000000");break;case"dateRange":{let r=document.createElement("div");r.className="forms-expert-date-range";let l=e||{},p=document.createElement("input");p.type="date",p.className="forms-expert-input",p.name=`${t.name}.start`,p.value=l.start||"";let i=document.createElement("input");if(i.type="date",i.className="forms-expert-input",i.name=`${t.name}.end`,i.value=l.end||"",r.appendChild(p),r.appendChild(i),c.appendChild(r),n){let a=document.createElement("div");a.className="forms-expert-error-message",a.textContent=n,c.appendChild(a)}return s.appendChild(c),s}case"address":{let r=document.createElement("div");r.className="forms-expert-address";let l=t.addressFields||["street","city","state","zip","country"],p=e||{},i={street:"Street",street2:"Street Line 2",city:"City",state:"State",zip:"ZIP",country:"Country"};if(l.forEach(a=>{let d=document.createElement("input");d.type="text",d.className="forms-expert-input",d.name=`${t.name}.${a}`,d.placeholder=i[a]||a,d.value=p[a]||"",r.appendChild(d)}),c.appendChild(r),n){let a=document.createElement("div");a.className="forms-expert-error-message",a.textContent=n,c.appendChild(a)}return s.appendChild(c),s}case"name":{let r=document.createElement("div");r.className="forms-expert-name";let l=t.nameFields||["first","last"],p=e||{},i={prefix:"Prefix",first:"First Name",middle:"Middle",last:"Last Name",suffix:"Suffix"};if(l.forEach(a=>{let d=document.createElement("input");d.type="text",d.className="forms-expert-input",d.name=`${t.name}.${a}`,d.placeholder=i[a]||a,d.value=p[a]||"",r.appendChild(d)}),c.appendChild(r),n){let a=document.createElement("div");a.className="forms-expert-error-message",a.textContent=n,c.appendChild(a)}return s.appendChild(c),s}case"imageChoice":{let r=document.createElement("div");r.className="forms-expert-image-choice";let l=t.options||[],p=e;if(l.forEach(i=>{let a=document.createElement("button");if(a.type="button",a.className=`forms-expert-image-choice-item ${p===i.value?"active":""}`,a.dataset.value=i.value,i.imageUrl){let f=document.createElement("img");f.src=i.imageUrl,f.alt=i.label,a.appendChild(f)}let d=document.createElement("span");d.textContent=i.label,a.appendChild(d),r.appendChild(a)}),c.appendChild(r),n){let i=document.createElement("div");i.className="forms-expert-error-message",i.textContent=n,c.appendChild(i)}return s.appendChild(c),s}case"ranking":{let r=document.createElement("div");r.className="forms-expert-ranking";let l=t.options||[];if((e||[...l]).forEach((i,a)=>{let d=document.createElement("div");d.className="forms-expert-ranking-item",d.textContent=`${a+1}. ${i}`,d.dataset.value=i,r.appendChild(d)}),c.appendChild(r),n){let i=document.createElement("div");i.className="forms-expert-error-message",i.textContent=n,c.appendChild(i)}return s.appendChild(c),s}case"location":{let r=document.createElement("div");r.className="forms-expert-location";let l=e||{},p=document.createElement("input");p.type="text",p.className="forms-expert-input",p.name=`${t.name}.address`,p.placeholder="Address",p.value=l.address||"",r.appendChild(p);let i=document.createElement("div");i.className="forms-expert-location-coords";let a=document.createElement("input");a.type="number",a.className="forms-expert-input",a.name=`${t.name}.lat`,a.placeholder="Latitude",a.step="any",a.value=l.lat!==void 0?String(l.lat):"";let d=document.createElement("input");if(d.type="number",d.className="forms-expert-input",d.name=`${t.name}.lng`,d.placeholder="Longitude",d.step="any",d.value=l.lng!==void 0?String(l.lng):"",i.appendChild(a),i.appendChild(d),r.appendChild(i),c.appendChild(r),n){let f=document.createElement("div");f.className="forms-expert-error-message",f.textContent=n,c.appendChild(f)}return s.appendChild(c),s}default:o=document.createElement("input"),o.type=t.type==="email"?"email":t.type==="number"?"number":t.type==="date"?"date":"text",o.className="forms-expert-input",o.value=String(e||""),t.type==="number"&&(t.min!==void 0&&(o.min=String(t.min)),t.max!==void 0&&(o.max=String(t.max)),t.step!==void 0&&(o.step=String(t.step)));break}if(o.id=`mira-field-${t.name}`,o.name=t.name,t.placeholder&&"placeholder"in o&&(o.placeholder=t.placeholder),t.required&&(o.required=!0),n&&o.classList.add("forms-expert-error"),c.appendChild(o),n){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=n,c.appendChild(r)}return s.appendChild(c),s}function v(t,e={},n={},m={}){let s=document.createElement("form");if(s.className="forms-expert",m.hideRequiredAsterisk){let r=document.createElement("style");r.textContent=".forms-expert .forms-expert-required { display: none; }",s.appendChild(r)}if(m.showFormName!==!1&&m.formName){let r=document.createElement("h1");r.className="forms-expert-title",r.textContent=m.formName,r.style.fontSize="1.5rem",r.style.fontWeight="700",r.style.marginBottom="0.5rem",s.appendChild(r)}let u=t.styling;if(t.fields.forEach(r=>{let l=N(r,e[r.name],n[r.name],u);s.appendChild(l)}),m.honeypot){let r=document.createElement("input");r.type="text",r.name="_hp",r.className="forms-expert-honeypot",r.tabIndex=-1,r.autocomplete="off",s.appendChild(r)}let c=document.createElement("input");c.type="hidden",c.name="pageUrl",c.value=typeof window<"u"?window.location.href:"",s.appendChild(c);let o=document.createElement("button");if(o.type="submit",o.className="forms-expert-button",o.disabled=m.isLoading||!1,m.isLoading?o.innerHTML=`
284
+ `.trim()}function x(t){let e=document.createElement("div");return e.textContent=t,e.innerHTML}function D(t){switch(t){case"small":return"18px";case"large":return"30px";case"extra-large":return"36px";default:return"24px"}}function _(t){switch(t){case"small":return"14px";case"large":return"18px";default:return"16px"}}function N(t,e,n,m){let s=document.createElement("div");if(t.type==="heading"){s.className="forms-expert-group";let r=document.createElement("h3");if(r.className="forms-expert-heading",r.style.fontSize=D(m?.headingSize),r.textContent=t.label||"",s.appendChild(r),t.content){let l=document.createElement("p");l.className="forms-expert-heading-subtitle",l.textContent=t.content,s.appendChild(l)}return s}if(t.type==="divider"){let r=document.createElement("hr");return r.className="forms-expert-divider",r}if(t.type==="paragraph"){s.className="forms-expert-group";let r=t.paragraphFontSize?`${t.paragraphFontSize}px`:_(m?.paragraphSize);if(t.label){let l=document.createElement("p");l.className="forms-expert-paragraph-label",l.style.fontSize=r,l.textContent=t.label,s.appendChild(l)}if(t.content){let l=document.createElement("div");l.className="forms-expert-paragraph",l.style.fontSize=r,l.innerHTML=t.content,s.appendChild(l)}return s}if(t.type==="hidden"){let r=document.createElement("input");return r.type="hidden",r.name=t.name,r.value=String(t.defaultValue??e??""),s.appendChild(r),s.style.display="none",s}if(t.type==="checkbox"||t.type==="toggle"||t.type==="consent"){s.className="forms-expert-checkbox-group";let r=document.createElement("input");r.type="checkbox",r.id=`mira-field-${t.name}`,r.name=t.name,r.className="forms-expert-checkbox",r.checked=!!e,t.required&&(r.required=!0);let l=document.createElement("label");l.htmlFor=r.id;let d=t.type==="consent"?t.consentText||t.label||t.name:t.label||t.name;if(l.innerHTML=`${x(d)}${t.required?'<span class="forms-expert-required">*</span>':""}`,s.appendChild(r),s.appendChild(l),t.type==="consent"&&t.consentUrl){let i=document.createElement("a");i.href=t.consentUrl,i.target="_blank",i.rel="noopener noreferrer",i.textContent="View policy",i.className="forms-expert-consent-link",s.appendChild(i)}if(n){let i=document.createElement("div");i.className="forms-expert-error-message",i.textContent=n,s.appendChild(i)}return s}s.className="forms-expert-group";let u=document.createElement("label");u.className="forms-expert-label",u.htmlFor=`mira-field-${t.name}`,u.innerHTML=`${x(t.label||t.name)}${t.required?'<span class="forms-expert-required">*</span>':""}`,s.appendChild(u);let c=document.createElement("div");c.className="forms-expert-input-wrapper";let o;switch(t.type){case"textarea":case"richText":o=document.createElement("textarea"),o.className="forms-expert-textarea",o.value=String(e||""),t.maxLength&&(o.maxLength=t.maxLength);break;case"select":case"dropdown":{o=document.createElement("select"),o.className="forms-expert-select";let r=document.createElement("option");r.value="",r.textContent=t.placeholder||"Select an option...",o.appendChild(r),(t.options||[]).forEach(d=>{let i=document.createElement("option");i.value=d,i.textContent=d,e===d&&(i.selected=!0),o.appendChild(i)});break}case"radio":{let r=document.createElement("div");if(r.className="forms-expert-radio-group",(t.options||[]).forEach(d=>{let i=document.createElement("label");i.className="forms-expert-radio-item";let a=document.createElement("input");a.type="radio",a.name=t.name,a.value=d,a.checked=e===d,i.appendChild(a),i.appendChild(document.createTextNode(` ${d}`)),r.appendChild(i)}),c.appendChild(r),n){let d=document.createElement("div");d.className="forms-expert-error-message",d.textContent=n,c.appendChild(d)}return s.appendChild(c),s}case"multiselect":{let r=document.createElement("div");r.className="forms-expert-multiselect-group";let l=e||[];if((t.options||[]).forEach(i=>{let a=document.createElement("label");a.className="forms-expert-checkbox-item";let p=document.createElement("input");p.type="checkbox",p.name=t.name,p.value=i,p.checked=l.includes(i),a.appendChild(p),a.appendChild(document.createTextNode(` ${i}`)),r.appendChild(a)}),c.appendChild(r),n){let i=document.createElement("div");i.className="forms-expert-error-message",i.textContent=n,c.appendChild(i)}return s.appendChild(c),s}case"rating":{let r=document.createElement("div");r.className="forms-expert-rating";let l=t.ratingMax||5,d=e||0;for(let i=1;i<=l;i++){let a=document.createElement("button");a.type="button",a.className=`forms-expert-rating-star ${i<=d?"active":""}`,a.textContent="\u2605",a.dataset.value=String(i),r.appendChild(a)}if(c.appendChild(r),n){let i=document.createElement("div");i.className="forms-expert-error-message",i.textContent=n,c.appendChild(i)}return s.appendChild(c),s}case"scale":case"opinionScale":{let r=document.createElement("div");r.className="forms-expert-scale";let l=t.min??(t.type==="opinionScale"?0:1),d=t.max??(t.type==="opinionScale"?10:5),i=e;for(let a=l;a<=d;a++){let p=document.createElement("button");p.type="button",p.className=`forms-expert-scale-btn ${i===a?"active":""}`,p.textContent=String(a),p.dataset.value=String(a),r.appendChild(p)}if(c.appendChild(r),t.lowLabel||t.highLabel){let a=document.createElement("div");a.className="forms-expert-scale-labels",a.innerHTML=`<span>${x(t.lowLabel||"")}</span><span>${x(t.highLabel||"")}</span>`,c.appendChild(a)}if(n){let a=document.createElement("div");a.className="forms-expert-error-message",a.textContent=n,c.appendChild(a)}return s.appendChild(c),s}case"slider":{o=document.createElement("input"),o.type="range",o.className="forms-expert-slider",o.min=String(t.min??0),o.max=String(t.max??100),o.step=String(t.step??1),o.value=String(e??t.min??0);break}case"file":o=document.createElement("input"),o.type="file",o.className="forms-expert-file",t.allowedMimeTypes?.length&&(o.accept=t.allowedMimeTypes.join(",")),t.multiple&&(o.multiple=!0);break;case"currency":{o=document.createElement("input"),o.type="number",o.className="forms-expert-input",o.value=String(e??""),t.min!==void 0&&(o.min=String(t.min)),t.max!==void 0&&(o.max=String(t.max)),o.step=String(t.step||.01);break}case"phone":o=document.createElement("input"),o.type="tel",o.className="forms-expert-input",o.value=String(e||"");break;case"url":o=document.createElement("input"),o.type="url",o.className="forms-expert-input",o.value=String(e||"");break;case"password":o=document.createElement("input"),o.type="password",o.className="forms-expert-input",o.value=String(e||"");break;case"time":o=document.createElement("input"),o.type="time",o.className="forms-expert-input",o.value=String(e||"");break;case"datetime":o=document.createElement("input"),o.type="datetime-local",o.className="forms-expert-input",o.value=String(e||"");break;case"colorPicker":o=document.createElement("input"),o.type="color",o.className="forms-expert-color",o.value=String(e||"#000000");break;case"dateRange":{let r=document.createElement("div");r.className="forms-expert-date-range";let l=e||{},d=document.createElement("input");d.type="date",d.className="forms-expert-input",d.name=`${t.name}.start`,d.value=l.start||"";let i=document.createElement("input");if(i.type="date",i.className="forms-expert-input",i.name=`${t.name}.end`,i.value=l.end||"",r.appendChild(d),r.appendChild(i),c.appendChild(r),n){let a=document.createElement("div");a.className="forms-expert-error-message",a.textContent=n,c.appendChild(a)}return s.appendChild(c),s}case"address":{let r=document.createElement("div");r.className="forms-expert-address";let l=t.addressFields||["street","city","state","zip","country"],d=e||{},i={street:"Street",street2:"Street Line 2",city:"City",state:"State",zip:"ZIP",country:"Country"};if(l.forEach(a=>{let p=document.createElement("input");p.type="text",p.className="forms-expert-input",p.name=`${t.name}.${a}`,p.placeholder=i[a]||a,p.value=d[a]||"",r.appendChild(p)}),c.appendChild(r),n){let a=document.createElement("div");a.className="forms-expert-error-message",a.textContent=n,c.appendChild(a)}return s.appendChild(c),s}case"name":{let r=document.createElement("div");r.className="forms-expert-name";let l=t.nameFields||["first","last"],d=e||{},i={prefix:"Prefix",first:"First Name",middle:"Middle",last:"Last Name",suffix:"Suffix"};if(l.forEach(a=>{let p=document.createElement("input");p.type="text",p.className="forms-expert-input",p.name=`${t.name}.${a}`,p.placeholder=i[a]||a,p.value=d[a]||"",r.appendChild(p)}),c.appendChild(r),n){let a=document.createElement("div");a.className="forms-expert-error-message",a.textContent=n,c.appendChild(a)}return s.appendChild(c),s}case"imageChoice":{let r=document.createElement("div");r.className="forms-expert-image-choice";let l=t.options||[],d=e;if(l.forEach(i=>{let a=document.createElement("button");if(a.type="button",a.className=`forms-expert-image-choice-item ${d===i.value?"active":""}`,a.dataset.value=i.value,i.imageUrl){let f=document.createElement("img");f.src=i.imageUrl,f.alt=i.label,a.appendChild(f)}let p=document.createElement("span");p.textContent=i.label,a.appendChild(p),r.appendChild(a)}),c.appendChild(r),n){let i=document.createElement("div");i.className="forms-expert-error-message",i.textContent=n,c.appendChild(i)}return s.appendChild(c),s}case"ranking":{let r=document.createElement("div");r.className="forms-expert-ranking";let l=t.options||[];if((e||[...l]).forEach((i,a)=>{let p=document.createElement("div");p.className="forms-expert-ranking-item",p.textContent=`${a+1}. ${i}`,p.dataset.value=i,r.appendChild(p)}),c.appendChild(r),n){let i=document.createElement("div");i.className="forms-expert-error-message",i.textContent=n,c.appendChild(i)}return s.appendChild(c),s}case"location":{let r=document.createElement("div");r.className="forms-expert-location";let l=e||{},d=document.createElement("input");d.type="text",d.className="forms-expert-input",d.name=`${t.name}.address`,d.placeholder="Address",d.value=l.address||"",r.appendChild(d);let i=document.createElement("div");i.className="forms-expert-location-coords";let a=document.createElement("input");a.type="number",a.className="forms-expert-input",a.name=`${t.name}.lat`,a.placeholder="Latitude",a.step="any",a.value=l.lat!==void 0?String(l.lat):"";let p=document.createElement("input");if(p.type="number",p.className="forms-expert-input",p.name=`${t.name}.lng`,p.placeholder="Longitude",p.step="any",p.value=l.lng!==void 0?String(l.lng):"",i.appendChild(a),i.appendChild(p),r.appendChild(i),c.appendChild(r),n){let f=document.createElement("div");f.className="forms-expert-error-message",f.textContent=n,c.appendChild(f)}return s.appendChild(c),s}default:o=document.createElement("input"),o.type=t.type==="email"?"email":t.type==="number"?"number":t.type==="date"?"date":"text",o.className="forms-expert-input",o.value=String(e||""),t.type==="number"&&(t.min!==void 0&&(o.min=String(t.min)),t.max!==void 0&&(o.max=String(t.max)),t.step!==void 0&&(o.step=String(t.step)));break}if(o.id=`mira-field-${t.name}`,o.name=t.name,t.placeholder&&"placeholder"in o&&(o.placeholder=t.placeholder),t.required&&(o.required=!0),n&&o.classList.add("forms-expert-error"),c.appendChild(o),n){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=n,c.appendChild(r)}return s.appendChild(c),s}function v(t,e={},n={},m={}){let s=document.createElement("form");if(s.className="forms-expert",m.hideRequiredAsterisk){let r=document.createElement("style");r.textContent=".forms-expert .forms-expert-required { display: none; }",s.appendChild(r)}if(m.showFormName!==!1&&m.formName){let r=document.createElement("h1");r.className="forms-expert-title",r.textContent=m.formName,r.style.fontSize="1.5rem",r.style.fontWeight="700",r.style.marginBottom="0.5rem",s.appendChild(r)}let u=t.styling;if(t.fields.forEach(r=>{let l=N(r,e[r.name],n[r.name],u);s.appendChild(l)}),m.honeypot){let r=document.createElement("input");r.type="text",r.name="_hp",r.className="forms-expert-honeypot",r.tabIndex=-1,r.autocomplete="off",s.appendChild(r)}let c=document.createElement("input");c.type="hidden",c.name="pageUrl",c.value=typeof window<"u"?window.location.href:"",s.appendChild(c);let o=document.createElement("button");if(o.type="submit",o.className="forms-expert-button",o.disabled=m.isLoading||!1,m.isLoading?o.innerHTML=`
283
285
  <span class="forms-expert-button-loading">
284
286
  <span class="forms-expert-spinner"></span>
285
287
  Submitting...
286
288
  </span>
287
- `:o.textContent=m.submitText||"Submit",s.appendChild(o),m.showBranding!==!1){let r=m.brandingText||"Powered by Forms Expert",l=m.brandingUrl||"https://mira.io",p=document.createElement("div");p.className="forms-expert-branding",p.innerHTML=`<a href="${l}" target="_blank" rel="noopener">${r}</a>`,s.appendChild(p)}return s}function w(t){let e=document.createElement("div");return e.className="forms-expert-success",e.innerHTML=`
289
+ `:o.textContent=m.submitText||"Submit",s.appendChild(o),m.showBranding!==!1){let r=m.brandingText||"Powered by Forms Expert",l=m.brandingUrl||"https://mira.io",d=document.createElement("div");d.className="forms-expert-branding",d.innerHTML=`<a href="${l}" target="_blank" rel="noopener">${r}</a>`,s.appendChild(d)}return s}function w(t){let e=document.createElement("div");return e.className="forms-expert-success",e.innerHTML=`
288
290
  <svg class="forms-expert-success-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
289
291
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
290
292
  </svg>
291
293
  <div class="forms-expert-success-message">${x(t)}</div>
292
- `,e}function k(t){return t.reduce((e,n)=>({...e,[n.field]:n.message}),{})}var g=class extends Error{constructor(n,m,s,u){super(n);this.code=m;this.statusCode=s;this.retryAfter=u;this.name="FormsError"}},h=class extends Error{constructor(n){super("Validation failed");this.errors=n;this.name="FormValidationError"}};var b=class{constructor(e){this.apiKey=e.apiKey,this.resourceId=e.resourceId,this.baseUrl=(e.baseUrl||"https://api.forms.expert/api/v1").replace(/\/$/,"")}buildUrl(e){let n=e.includes("?")?"&":"?";return`${this.baseUrl}${e}${n}token=${encodeURIComponent(this.apiKey)}`}async request(e,n,m){let s=this.buildUrl(n),u=await fetch(s,{method:e,headers:{"Content-Type":"application/json"},body:m?JSON.stringify(m):void 0}),c=await u.json();if(!u.ok)throw new g(c.message||"Request failed",c.code||"UNKNOWN_ERROR",u.status,c.retryAfter);return c}async isActive(e,n){let m=n?`?lang=${encodeURIComponent(n)}`:"";return this.request("GET",`/f/${this.resourceId}/${e}/is-active${m}`)}async validate(e,n){return this.request("POST",`/f/${this.resourceId}/${e}/validate`,{data:n})}async submit(e,n,m){let s=this.buildUrl(`/f/${this.resourceId}/${e}`);return Object.values(n).some(c=>c instanceof File||c instanceof FileList&&c.length>0)||m?.onProgress?this.submitWithFormData(s,n,m):this.request("POST",`/f/${this.resourceId}/${e}`,{data:n,pageUrl:m?.pageUrl||(typeof window<"u"?window.location.href:void 0),captchaToken:m?.captchaToken})}submitWithFormData(e,n,m){return new Promise((s,u)=>{let c=new FormData;for(let[l,p]of Object.entries(n))p instanceof File?c.append(l,p):p instanceof FileList?Array.from(p).forEach(i=>c.append(l,i)):p!=null&&c.append(`data[${l}]`,String(p));let o=m?.pageUrl||(typeof window<"u"?window.location.href:"");o&&c.append("pageUrl",o),m?.captchaToken&&c.append("captchaToken",m.captchaToken);let r=new XMLHttpRequest;m?.onProgress&&r.upload.addEventListener("progress",l=>{l.lengthComputable&&m.onProgress({loaded:l.loaded,total:l.total,percentage:Math.round(l.loaded/l.total*100)})}),r.addEventListener("load",()=>{try{let l=JSON.parse(r.responseText);r.status>=200&&r.status<300?s(l):u(new g(l.message||"Submission failed",l.code||"UNKNOWN_ERROR",r.status,l.retryAfter))}catch{u(new g("Invalid response","PARSE_ERROR",r.status))}}),r.addEventListener("error",()=>{u(new g("Network error","NETWORK_ERROR",0))}),r.addEventListener("abort",()=>{u(new g("Request aborted","ABORTED",0))}),r.open("POST",e),r.send(c)})}async trackView(e){let n=this.buildUrl(`/f/${this.resourceId}/${e}/view`);await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"}}).catch(()=>{})}getResourceId(){return this.resourceId}getBaseUrl(){return this.baseUrl}};var F=class{constructor(e,n,m={}){this.config=null;this.apiClient=e,this.slug=n,this.options=m}async initialize(e){return this.config=await this.apiClient.isActive(this.slug,e),this.options.trackViews&&this.apiClient.trackView(this.slug),this.config}getConfig(){return this.config}isActive(){return this.config?.active??!1}requiresCaptcha(){return this.config?.settings?.captcha?.enabled??!1}getCaptchaProvider(){return this.config?.settings?.captcha?.provider}getSchema(){return this.config?.schema}async validate(e){return this.apiClient.validate(this.slug,e)}async submit(e,n){this.options.onSubmitStart?.();try{if(this.config?.mode==="schema"){let s=await this.validate(e);if(!s.valid)throw this.options.onValidationError?.(s.errors),new h(s.errors)}let m=await this.apiClient.submit(this.slug,e,n);return this.options.onSubmitSuccess?.(m),m}catch(m){throw m instanceof g&&this.options.onSubmitError?.(m),m}}getSuccessMessage(){return this.config?.settings?.successMessage||"Form submitted successfully!"}getRedirectUrl(){return this.config?.settings?.redirectUrl}},y=class{constructor(e){this.apiClient=new b(e)}async isActive(e,n){return this.apiClient.isActive(e,n)}async validate(e,n){return this.apiClient.validate(e,n)}async submit(e,n,m){return this.apiClient.submit(e,n,m)}form(e,n){return new F(this.apiClient,e,n)}async trackView(e){return this.apiClient.trackView(e)}async submitWithRetry(e,n,m){let s=m?.maxRetries??3,u=null;for(let c=0;c<s;c++)try{return await this.submit(e,n,m)}catch(o){if(u=o,o instanceof g){if(["VALIDATION_ERROR","CAPTCHA_REQUIRED","ORIGIN_NOT_ALLOWED"].includes(o.code))throw o;if(o.code.includes("RATE_LIMIT")){let r=o.retryAfter||Math.pow(2,c)*1e3;await new Promise(l=>setTimeout(l,r));continue}}await new Promise(r=>setTimeout(r,Math.pow(2,c)*1e3))}throw u}};var C=class{constructor(e,n){this.config=null;this.values={};this.errors={};this.isLoading=!1;this.isSubmitted=!1;this.styleEl=null;this.sdk=new y(e),this.options=n;let m=n.target;if(typeof m=="string"){let s=document.querySelector(m);if(!s)throw new Error(`Element not found: ${m}`);this.container=s}else this.container=m}async init(){try{if(this.renderLoading(),this.config=await this.sdk.isActive(this.options.slug,this.options.lang),!this.config.active){this.renderError("This form is not available");return}this.options.trackViews&&this.sdk.trackView(this.options.slug),this.injectStyles(),this.render()}catch(e){this.renderError("Failed to load form"),this.options.onError?.(e)}}injectStyles(){if(this.styleEl)return;this.styleEl=document.createElement("style"),this.styleEl.id=`forms-expert-styles-${this.options.slug}`;let e={...this.config?.schema?.styling,...this.config?.styling};this.styleEl.textContent=E(e),document.head.appendChild(this.styleEl)}render(){if(!this.config?.schema)return;if(this.isSubmitted){this.container.innerHTML="";let s=this.config.settings?.successMessage||"Form submitted successfully!";this.container.appendChild(w(s));return}let e={...this.config.schema.styling,...this.config.styling},n={...this.config.schema,styling:e},m=v(n,this.values,this.errors,{honeypot:this.config.settings?.honeypot,showBranding:this.config.branding?.enabled!==!1,brandingText:this.config.branding?.text,brandingUrl:this.config.branding?.url,submitText:e.buttonText||this.options.submitText,isLoading:this.isLoading,hideRequiredAsterisk:e.hideRequiredAsterisk,formName:this.config.hostedConfig?.pageTitle||this.config.name,showFormName:this.config.settings?.showFormName});m.addEventListener("input",s=>{let u=s.target;u.name&&u.name!=="_hp"&&u.name!=="pageUrl"&&(u.type==="checkbox"?this.values[u.name]=u.checked:u.type==="file"?this.values[u.name]=u.multiple?u.files:u.files?.[0]:this.values[u.name]=u.value,this.errors[u.name]&&(delete this.errors[u.name],this.render()))}),m.addEventListener("submit",s=>{s.preventDefault(),this.handleSubmit()}),this.container.innerHTML="",this.container.appendChild(m)}async handleSubmit(){if(!(this.isLoading||!this.config)){this.isLoading=!0,this.errors={},this.render();try{let e=await this.sdk.submit(this.options.slug,this.values);this.isLoading=!1,this.isSubmitted=!0,this.render(),this.options.onSuccess?.(e);let n=this.options.redirectUrl||this.config.settings?.redirectUrl;n&&setTimeout(()=>{window.location.href=n},1500),this.options.resetOnSuccess&&setTimeout(()=>{this.reset()},3e3)}catch(e){this.isLoading=!1,e instanceof h?(this.errors=k(e.errors),this.options.onValidationError?.(e.errors)):this.options.onError?.(e),this.render()}}}reset(){this.values={},this.errors={},this.isLoading=!1,this.isSubmitted=!1,this.render()}renderLoading(){this.container.innerHTML=`
294
+ `,e}function k(t){return t.reduce((e,n)=>({...e,[n.field]:n.message}),{})}var g=class extends Error{constructor(n,m,s,u){super(n);this.code=m;this.statusCode=s;this.retryAfter=u;this.name="FormsError"}},h=class extends Error{constructor(n){super("Validation failed");this.errors=n;this.name="FormValidationError"}};var b=class{constructor(e){this.apiKey=e.apiKey,this.resourceId=e.resourceId,this.baseUrl=(e.baseUrl||"https://api.forms.expert/api/v1").replace(/\/$/,"")}buildUrl(e){let n=e.includes("?")?"&":"?";return`${this.baseUrl}${e}${n}token=${encodeURIComponent(this.apiKey)}`}async request(e,n,m){let s=this.buildUrl(n),u=await fetch(s,{method:e,headers:{"Content-Type":"application/json"},body:m?JSON.stringify(m):void 0}),c=await u.json();if(!u.ok)throw new g(c.message||"Request failed",c.code||"UNKNOWN_ERROR",u.status,c.retryAfter);return c}async isActive(e,n){let m=n?`?lang=${encodeURIComponent(n)}`:"";return this.request("GET",`/f/${this.resourceId}/${e}/is-active${m}`)}async validate(e,n){return this.request("POST",`/f/${this.resourceId}/${e}/validate`,{data:n})}async submit(e,n,m){let s=this.buildUrl(`/f/${this.resourceId}/${e}`);return Object.values(n).some(c=>c instanceof File||c instanceof FileList&&c.length>0)||m?.onProgress?this.submitWithFormData(s,n,m):this.request("POST",`/f/${this.resourceId}/${e}`,{data:n,pageUrl:m?.pageUrl||(typeof window<"u"?window.location.href:void 0),captchaToken:m?.captchaToken})}submitWithFormData(e,n,m){return new Promise((s,u)=>{let c=new FormData;for(let[l,d]of Object.entries(n))d instanceof File?c.append(l,d):d instanceof FileList?Array.from(d).forEach(i=>c.append(l,i)):d!=null&&c.append(`data[${l}]`,String(d));let o=m?.pageUrl||(typeof window<"u"?window.location.href:"");o&&c.append("pageUrl",o),m?.captchaToken&&c.append("captchaToken",m.captchaToken);let r=new XMLHttpRequest;m?.onProgress&&r.upload.addEventListener("progress",l=>{l.lengthComputable&&m.onProgress({loaded:l.loaded,total:l.total,percentage:Math.round(l.loaded/l.total*100)})}),r.addEventListener("load",()=>{try{let l=JSON.parse(r.responseText);r.status>=200&&r.status<300?s(l):u(new g(l.message||"Submission failed",l.code||"UNKNOWN_ERROR",r.status,l.retryAfter))}catch{u(new g("Invalid response","PARSE_ERROR",r.status))}}),r.addEventListener("error",()=>{u(new g("Network error","NETWORK_ERROR",0))}),r.addEventListener("abort",()=>{u(new g("Request aborted","ABORTED",0))}),r.open("POST",e),r.send(c)})}async trackView(e){let n=this.buildUrl(`/f/${this.resourceId}/${e}/view`);await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"}}).catch(()=>{})}getResourceId(){return this.resourceId}getBaseUrl(){return this.baseUrl}};var F=class{constructor(e,n,m={}){this.config=null;this.apiClient=e,this.slug=n,this.options=m}async initialize(e){return this.config=await this.apiClient.isActive(this.slug,e),this.options.trackViews&&this.apiClient.trackView(this.slug),this.config}getConfig(){return this.config}isActive(){return this.config?.active??!1}requiresCaptcha(){return this.config?.settings?.captcha?.enabled??!1}getCaptchaProvider(){return this.config?.settings?.captcha?.provider}getSchema(){return this.config?.schema}async validate(e){return this.apiClient.validate(this.slug,e)}async submit(e,n){this.options.onSubmitStart?.();try{if(this.config?.mode==="schema"){let s=await this.validate(e);if(!s.valid)throw this.options.onValidationError?.(s.errors),new h(s.errors)}let m=await this.apiClient.submit(this.slug,e,n);return this.options.onSubmitSuccess?.(m),m}catch(m){throw m instanceof g&&this.options.onSubmitError?.(m),m}}getSuccessMessage(){return this.config?.settings?.successMessage||"Form submitted successfully!"}getRedirectUrl(){return this.config?.settings?.redirectUrl}},y=class{constructor(e){this.apiClient=new b(e)}async isActive(e,n){return this.apiClient.isActive(e,n)}async validate(e,n){return this.apiClient.validate(e,n)}async submit(e,n,m){return this.apiClient.submit(e,n,m)}form(e,n){return new F(this.apiClient,e,n)}async trackView(e){return this.apiClient.trackView(e)}async submitWithRetry(e,n,m){let s=m?.maxRetries??3,u=null;for(let c=0;c<s;c++)try{return await this.submit(e,n,m)}catch(o){if(u=o,o instanceof g){if(["VALIDATION_ERROR","CAPTCHA_REQUIRED","ORIGIN_NOT_ALLOWED"].includes(o.code))throw o;if(o.code.includes("RATE_LIMIT")){let r=o.retryAfter||Math.pow(2,c)*1e3;await new Promise(l=>setTimeout(l,r));continue}}await new Promise(r=>setTimeout(r,Math.pow(2,c)*1e3))}throw u}};var S=class{constructor(e,n){this.config=null;this.values={};this.errors={};this.isLoading=!1;this.isSubmitted=!1;this.styleEl=null;this.sdk=new y(e),this.options=n;let m=n.target;if(typeof m=="string"){let s=document.querySelector(m);if(!s)throw new Error(`Element not found: ${m}`);this.container=s}else this.container=m}async init(){try{if(this.renderLoading(),this.config=await this.sdk.isActive(this.options.slug,this.options.lang),!this.config.active){this.renderError("This form is not available");return}this.options.trackViews&&this.sdk.trackView(this.options.slug),this.injectStyles(),this.render()}catch(e){this.renderError("Failed to load form"),this.options.onError?.(e)}}injectStyles(){if(this.styleEl)return;this.styleEl=document.createElement("style"),this.styleEl.id=`forms-expert-styles-${this.options.slug}`;let e={...this.config?.schema?.styling,...this.config?.styling};this.styleEl.textContent=E(e),document.head.appendChild(this.styleEl)}render(){if(!this.config?.schema)return;if(this.isSubmitted){this.container.innerHTML="";let s=this.config.settings?.successMessage||"Form submitted successfully!";this.container.appendChild(w(s));return}let e={...this.config.schema.styling,...this.config.styling},n={...this.config.schema,styling:e},m=v(n,this.values,this.errors,{honeypot:this.config.settings?.honeypot,showBranding:this.config.branding?.enabled!==!1,brandingText:this.config.branding?.text,brandingUrl:this.config.branding?.url,submitText:e.buttonText||this.options.submitText,isLoading:this.isLoading,hideRequiredAsterisk:e.hideRequiredAsterisk,formName:this.config.hostedConfig?.pageTitle||this.config.name,showFormName:this.config.settings?.showFormName});m.addEventListener("input",s=>{let u=s.target;u.name&&u.name!=="_hp"&&u.name!=="pageUrl"&&(u.type==="checkbox"?this.values[u.name]=u.checked:u.type==="file"?this.values[u.name]=u.multiple?u.files:u.files?.[0]:this.values[u.name]=u.value,this.errors[u.name]&&(delete this.errors[u.name],this.render()))}),m.addEventListener("submit",s=>{s.preventDefault(),this.handleSubmit()}),this.container.innerHTML="",this.container.appendChild(m)}async handleSubmit(){if(!(this.isLoading||!this.config)){this.isLoading=!0,this.errors={},this.render();try{let e=await this.sdk.submit(this.options.slug,this.values);this.isLoading=!1,this.isSubmitted=!0,this.render(),this.options.onSuccess?.(e);let n=this.options.redirectUrl||this.config.settings?.redirectUrl;n&&setTimeout(()=>{window.location.href=n},1500),this.options.resetOnSuccess&&setTimeout(()=>{this.reset()},3e3)}catch(e){this.isLoading=!1,e instanceof h?(this.errors=k(e.errors),this.options.onValidationError?.(e.errors)):this.options.onError?.(e),this.render()}}}reset(){this.values={},this.errors={},this.isLoading=!1,this.isSubmitted=!1,this.render()}renderLoading(){this.container.innerHTML=`
293
295
  <div class="forms-expert" style="display: flex; align-items: center; justify-content: center; padding: 2rem;">
294
296
  <svg width="24" height="24" viewBox="0 0 24 24" style="animation: fe-spin 1s linear infinite; color: #9ca3af;">
295
297
  <circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="3" fill="none" stroke-dasharray="31.4 31.4" stroke-linecap="round"/>
@@ -300,5 +302,5 @@ ${e.customCss||""}
300
302
  <div class="forms-expert" style="text-align: center; padding: 2rem; color: #ef4444;">
301
303
  <p>${e}</p>
302
304
  </div>
303
- `}destroy(){this.container.innerHTML="",this.styleEl?.remove(),this.styleEl=null}};function $(){document.querySelectorAll("[data-forms-expert]").forEach(e=>{let n=e.getAttribute("data-api-key"),m=e.getAttribute("data-resource-id"),s=e.getAttribute("data-forms-expert"),u=e.getAttribute("data-base-url")||void 0;if(!n||!m||!s){console.error("Forms Expert: Missing required attributes",{apiKey:!!n,resourceId:!!m,slug:!!s});return}new C({apiKey:n,resourceId:m,baseUrl:u},{target:e,slug:s,trackViews:e.getAttribute("data-track-views")==="true",submitText:e.getAttribute("data-submit-text")||void 0,resetOnSuccess:e.getAttribute("data-reset")==="true",lang:e.getAttribute("data-lang")||void 0}).init()})}typeof window<"u"&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",$):$());return z(j);})();
305
+ `}destroy(){this.container.innerHTML="",this.styleEl?.remove(),this.styleEl=null}};function $(){document.querySelectorAll("[data-forms-expert]").forEach(e=>{let n=e.getAttribute("data-api-key"),m=e.getAttribute("data-resource-id"),s=e.getAttribute("data-forms-expert"),u=e.getAttribute("data-base-url")||void 0;if(!n||!m||!s){console.error("Forms Expert: Missing required attributes",{apiKey:!!n,resourceId:!!m,slug:!!s});return}new S({apiKey:n,resourceId:m,baseUrl:u},{target:e,slug:s,trackViews:e.getAttribute("data-track-views")==="true",submitText:e.getAttribute("data-submit-text")||void 0,resetOnSuccess:e.getAttribute("data-reset")==="true",lang:e.getAttribute("data-lang")||void 0}).init()})}typeof window<"u"&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",$):$());return z(j);})();
304
306
  //# sourceMappingURL=index.global.js.map