@forms.expert/sdk 0.4.2 → 0.4.3
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/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +2 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js.map +1 -1
- package/dist/react/index.cjs +4 -3
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +2 -0
- package/dist/react/index.d.ts +2 -0
- package/dist/react/index.js +4 -3
- package/dist/react/index.js.map +1 -1
- package/dist/vanilla/index.cjs +14 -13
- package/dist/vanilla/index.cjs.map +1 -1
- package/dist/vanilla/index.d.cts +2 -0
- package/dist/vanilla/index.d.ts +2 -0
- package/dist/vanilla/index.global.js +14 -13
- package/dist/vanilla/index.global.js.map +1 -1
- package/dist/vanilla/index.js +14 -13
- package/dist/vanilla/index.js.map +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.d.cts +2 -0
- package/dist/vue/index.d.ts +2 -0
- package/dist/vue/index.js.map +1 -1
- package/package.json +1 -1
package/dist/vanilla/index.d.ts
CHANGED
|
@@ -92,6 +92,8 @@ interface FormStyling {
|
|
|
92
92
|
fieldLayout?: 'stacked' | 'inline';
|
|
93
93
|
fieldBorderStyle?: 'full' | 'bottom';
|
|
94
94
|
fieldBorderRadius?: 'none' | 'small' | 'medium' | 'large' | 'full';
|
|
95
|
+
fieldPaddingX?: number;
|
|
96
|
+
fieldPaddingY?: number;
|
|
95
97
|
buttonColor?: string;
|
|
96
98
|
buttonText?: string;
|
|
97
99
|
buttonRadius?: 'none' | 'small' | 'medium' | 'large' | 'full';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var FormsExpert=(()=>{var R=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var O=Object.prototype.hasOwnProperty;var H=(t,e)=>{for(var
|
|
1
|
+
"use strict";var FormsExpert=(()=>{var R=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var O=Object.prototype.hasOwnProperty;var H=(t,e)=>{for(var s in e)R(t,s,{get:e[s],enumerable:!0})},V=(t,e,s,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of B(e))!O.call(t,a)&&a!==s&&R(t,a,{get:()=>e[a],enumerable:!(i=U(e,a))||i.enumerable});return t};var W=t=>V(R({},"__esModule",{value:!0}),t);var re={};H(re,{FormWidget:()=>$,autoInit:()=>A,errorsToRecord:()=>z,generateFormStyles:()=>T,renderField:()=>v,renderForm:()=>L,renderSuccess:()=>P});var M={theme:"light",primaryColor:"#3b82f6",backgroundColor:"#ffffff",textColor:"#1f2937",borderRadius:"md",fontSize:"md",buttonStyle:"filled",labelPosition:"top"};function q(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 D(t){switch(t){case"none":return"0";case"small":return"0.25rem";case"medium":return"0.375rem";case"large":return"0.75rem";case"full":return"9999px";default:return"0.375rem"}}function K(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 j(t){switch(t){case"sm":case"small":return"0.875rem";case"md":case"medium":return"1rem";case"lg":case"large":return"1.125rem";default:return"1rem"}}function _(t){switch(t){case"small":return"0.75rem";case"large":return"1rem";default:return"0.875rem"}}function G(t){switch(t){case"compact":return"0.5rem";case"relaxed":return"1.5rem";case"spacious":return"2rem";default:return"1rem"}}function Y(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 X(t){switch(t){case"compact":return"0.125rem";case"relaxed":return"0.75rem";default:return"0.25rem"}}function J(t){switch(t){case"narrow":return"28rem";case"wide":return"48rem";case"full":return"100%";default:return"36rem"}}function Q(t){switch(t){case"left":return"flex-start";case"right":return"flex-end";default:return"center"}}function T(t=M){let e={...M,...t},s=q(e.borderRadius),i=D(e.fieldBorderRadius),a=K(e.buttonRadius),m=j(e.fontSize),o=_(e.placeholderFontSize),n=G(e.fieldSpacing),p=Y(e.formPadding),d=X(e.labelSpacing),l=J(e.formWidth),r=e.primaryColor,u=e.buttonColor,c=e.fontFamily?e.fontFamily.includes(",")?e.fontFamily:`${e.fontFamily}, sans-serif`:"inherit",h=Q(e.buttonAlign),f={small:{px:"0.75rem",py:"0.375rem",fs:"0.875rem"},medium:{px:"1.25rem",py:"0.625rem",fs:"1rem"},large:{px:"1.75rem",py:"0.875rem",fs:"1.125rem"}}[e.buttonSize||"medium"],x=e.buttonPaddingX!=null?`${e.buttonPaddingX}px`:f.px,C=e.buttonPaddingY!=null?`${e.buttonPaddingY}px`:f.py,w=e.buttonFontSize!=null?`${e.buttonFontSize}px`:f.fs,N=e.buttonGradient||(e.buttonStyle==="filled"?r:"transparent");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};`}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
color: ${e.textColor};
|
|
19
19
|
background-color: ${e.transparentBackground?"transparent":e.backgroundColor};
|
|
20
20
|
padding: ${p};
|
|
21
|
-
border-radius: ${
|
|
21
|
+
border-radius: ${s};
|
|
22
22
|
box-sizing: border-box;
|
|
23
23
|
max-width: ${l};
|
|
24
24
|
width: 100%;
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
width: 100%;
|
|
45
45
|
max-height: 200px;
|
|
46
46
|
object-fit: cover;
|
|
47
|
-
border-radius: ${
|
|
47
|
+
border-radius: ${s} ${s} 0 0;
|
|
48
48
|
margin-bottom: 1rem;
|
|
49
49
|
}
|
|
50
50
|
|
|
@@ -73,10 +73,10 @@
|
|
|
73
73
|
.forms-expert-textarea,
|
|
74
74
|
.forms-expert-select {
|
|
75
75
|
width: 100%;
|
|
76
|
-
padding: 0.5rem 0.75rem;
|
|
76
|
+
padding: ${e.fieldPaddingX!=null||e.fieldPaddingY!=null?`${e.fieldPaddingY??8}px ${e.fieldPaddingX??12}px`:"0.5rem 0.75rem"};
|
|
77
77
|
border: ${e.fieldBorderStyle==="bottom"?"none":`1px solid ${e.theme==="dark"?"#4b5563":"#d1d5db"}`};
|
|
78
78
|
${e.fieldBorderStyle==="bottom"?`border-bottom: 1px solid ${e.theme==="dark"?"#4b5563":"#d1d5db"};`:""}
|
|
79
|
-
border-radius: ${e.fieldBorderStyle==="bottom"?"0":
|
|
79
|
+
border-radius: ${e.fieldBorderStyle==="bottom"?"0":i};
|
|
80
80
|
font-size: ${m};
|
|
81
81
|
font-family: inherit;
|
|
82
82
|
background-color: ${e.inputBackgroundColor||(e.theme==="dark"?"#374151":"#ffffff")};
|
|
@@ -123,6 +123,7 @@
|
|
|
123
123
|
margin-top: 0.125rem;
|
|
124
124
|
flex-shrink: 0;
|
|
125
125
|
accent-color: ${e.primaryColor};
|
|
126
|
+
background-color: transparent;
|
|
126
127
|
cursor: pointer;
|
|
127
128
|
}
|
|
128
129
|
|
|
@@ -135,7 +136,7 @@
|
|
|
135
136
|
padding: 0.5rem 0.75rem;
|
|
136
137
|
border: ${e.fieldBorderStyle==="bottom"?"none":`1px solid ${e.theme==="dark"?"#4b5563":"#d1d5db"}`};
|
|
137
138
|
${e.fieldBorderStyle==="bottom"?`border-bottom: 1px solid ${e.theme==="dark"?"#4b5563":"#d1d5db"};`:""}
|
|
138
|
-
border-radius: ${e.fieldBorderStyle==="bottom"?"0":
|
|
139
|
+
border-radius: ${e.fieldBorderStyle==="bottom"?"0":i};
|
|
139
140
|
font-size: ${m};
|
|
140
141
|
background-color: ${e.inputBackgroundColor||(e.theme==="dark"?"#374151":"#ffffff")};
|
|
141
142
|
cursor: pointer;
|
|
@@ -292,7 +293,7 @@
|
|
|
292
293
|
.forms-expert-scale { display: flex; gap: 0.25rem; flex-wrap: wrap; }
|
|
293
294
|
.forms-expert-scale-labels { display: flex; justify-content: space-between; font-size: 0.75rem; color: ${e.theme==="dark"?"#9ca3af":"#6b7280"}; margin-top: 0.25rem; }
|
|
294
295
|
.forms-expert-scale-btn {
|
|
295
|
-
min-width: 2.25rem; height: 2.25rem; border-radius: ${
|
|
296
|
+
min-width: 2.25rem; height: 2.25rem; border-radius: ${s}; cursor: pointer;
|
|
296
297
|
border: 1px solid ${e.theme==="dark"?"#4b5563":"#d1d5db"};
|
|
297
298
|
background: ${e.theme==="dark"?"#374151":"#ffffff"}; color: ${e.textColor};
|
|
298
299
|
font-size: 0.875rem; transition: all 0.15s;
|
|
@@ -316,11 +317,11 @@
|
|
|
316
317
|
/* Image choice */
|
|
317
318
|
.forms-expert-image-choice { display: flex; flex-wrap: wrap; gap: 0.5rem; }
|
|
318
319
|
.forms-expert-image-choice-item {
|
|
319
|
-
border: 2px solid ${e.theme==="dark"?"#4b5563":"#d1d5db"}; border-radius: ${
|
|
320
|
+
border: 2px solid ${e.theme==="dark"?"#4b5563":"#d1d5db"}; border-radius: ${s};
|
|
320
321
|
padding: 0.5rem; cursor: pointer; text-align: center; transition: border-color 0.15s;
|
|
321
322
|
}
|
|
322
323
|
.forms-expert-image-choice-item.active { border-color: ${e.primaryColor}; }
|
|
323
|
-
.forms-expert-image-choice-item img { max-width: 80px; max-height: 80px; object-fit: cover; border-radius: ${
|
|
324
|
+
.forms-expert-image-choice-item img { max-width: 80px; max-height: 80px; object-fit: cover; border-radius: ${s}; }
|
|
324
325
|
|
|
325
326
|
/* Responsive button scaling */
|
|
326
327
|
@media (max-width: 480px) {
|
|
@@ -333,17 +334,17 @@
|
|
|
333
334
|
}
|
|
334
335
|
|
|
335
336
|
${e.customCss||""}
|
|
336
|
-
`.trim()}function E(t){let e=document.createElement("div");return e.textContent=t,e.innerHTML}function Z(t){switch(t){case"small":return"18px";case"large":return"30px";case"extra-large":return"36px";default:return"24px"}}function ee(t){switch(t){case"small":return"14px";case"large":return"18px";default:return"16px"}}function b(t,e){return e?`${t} ${e}`:t}function te(t){switch(t){case"1/4":return"25%";case"1/3":return"33.333%";case"1/2":return"50%";case"2/3":return"66.666%";case"3/4":return"75%";case"full":return"100%";default:return}}function v(t,e,i,s){let a=document.createElement("div");if(t.type==="heading"){a.className="forms-expert-group";let n=document.createElement("h3");if(n.className="forms-expert-heading",n.style.fontSize=Z(s?.headingSize),n.textContent=t.label||"",a.appendChild(n),t.content){let p=document.createElement("p");p.className="forms-expert-heading-subtitle",p.textContent=t.content,a.appendChild(p)}return a}if(t.type==="divider"){let n=document.createElement("hr");return n.className="forms-expert-divider",n}if(t.type==="paragraph"){a.className="forms-expert-group";let n=t.paragraphFontSize?`${t.paragraphFontSize}px`:ee(s?.paragraphSize);if(t.label){let p=document.createElement("p");p.className="forms-expert-paragraph-label",p.style.fontSize=n,p.textContent=t.label,a.appendChild(p)}if(t.content){let p=document.createElement("div");p.className="forms-expert-paragraph",p.style.fontSize=n,p.innerHTML=t.content,a.appendChild(p)}return a}if(t.type==="hidden"){let n=document.createElement("input");return n.type="hidden",n.name=t.name,n.value=String(t.defaultValue??e??""),a.appendChild(n),a.style.display="none",a}if(t.type==="checkbox"||t.type==="toggle"||t.type==="consent"){a.className="forms-expert-checkbox-group";let n=document.createElement("input");n.type="checkbox",n.id=`mira-field-${t.name}`,n.name=t.name,n.className="forms-expert-checkbox",n.checked=!!e,t.required&&(n.required=!0);let p=document.createElement("div"),d=document.createElement("label");d.htmlFor=n.id,d.style.cursor="pointer",t.type==="consent"&&t.consentFontSize&&(d.style.fontSize=`${t.consentFontSize}px`);let l=t.type==="consent"?t.consentText||t.label||t.name:t.label||t.name;if(d.innerHTML=`${E(l)}${t.required?'<span class="forms-expert-required">*</span>':""}`,p.appendChild(d),t.type==="consent"&&t.consentUrl){let r=document.createElement("a");r.href=t.consentUrl,r.target="_blank",r.rel="noopener noreferrer",r.textContent="View policy",r.className="forms-expert-consent-link",p.appendChild(r)}if(a.appendChild(n),a.appendChild(p),i){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=i,a.appendChild(r)}return a}if(a.className="forms-expert-group",t.label){let n=document.createElement("label");n.className=`forms-expert-label${s?.labelClassName?" "+s.labelClassName:""}`,n.htmlFor=`mira-field-${t.name}`,n.innerHTML=`${E(t.label)}${t.required?'<span class="forms-expert-required">*</span>':""}`,a.appendChild(n)}let m=document.createElement("div");m.className="forms-expert-input-wrapper";let o;switch(t.type){case"textarea":case"richText":o=document.createElement("textarea"),o.className=b("forms-expert-textarea",s?.fieldClassName),o.value=String(e||""),t.maxLength&&(o.maxLength=t.maxLength);break;case"select":case"dropdown":{o=document.createElement("select"),o.className=b("forms-expert-select",s?.fieldClassName);let n=document.createElement("option");n.value="",n.textContent=t.placeholder||"Select an option...",o.appendChild(n),(t.options||[]).forEach(d=>{let l=document.createElement("option");l.value=d,l.textContent=d,e===d&&(l.selected=!0),o.appendChild(l)});break}case"radio":{let n=document.createElement("div");if(n.className="forms-expert-radio-group",(t.options||[]).forEach(d=>{let l=document.createElement("label");l.className="forms-expert-radio-item";let r=document.createElement("input");r.type="radio",r.name=t.name,r.value=d,r.checked=e===d,l.appendChild(r),l.appendChild(document.createTextNode(` ${d}`)),n.appendChild(l)}),m.appendChild(n),i){let d=document.createElement("div");d.className="forms-expert-error-message",d.textContent=i,m.appendChild(d)}return a.appendChild(m),a}case"multiselect":{let n=document.createElement("div");n.className="forms-expert-multiselect-group";let p=e||[];if((t.options||[]).forEach(l=>{let r=document.createElement("label");r.className="forms-expert-checkbox-item";let u=document.createElement("input");u.type="checkbox",u.name=t.name,u.value=l,u.checked=p.includes(l),r.appendChild(u),r.appendChild(document.createTextNode(` ${l}`)),n.appendChild(r)}),m.appendChild(n),i){let l=document.createElement("div");l.className="forms-expert-error-message",l.textContent=i,m.appendChild(l)}return a.appendChild(m),a}case"rating":{let n=document.createElement("div");n.className="forms-expert-rating";let p=t.ratingMax||5,d=e||0;for(let l=1;l<=p;l++){let r=document.createElement("button");r.type="button",r.className=`forms-expert-rating-star ${l<=d?"active":""}`,r.textContent="\u2605",r.dataset.value=String(l),n.appendChild(r)}if(m.appendChild(n),i){let l=document.createElement("div");l.className="forms-expert-error-message",l.textContent=i,m.appendChild(l)}return a.appendChild(m),a}case"scale":case"opinionScale":{let n=document.createElement("div");n.className="forms-expert-scale";let p=t.min??(t.type==="opinionScale"?0:1),d=t.max??(t.type==="opinionScale"?10:5),l=e;for(let r=p;r<=d;r++){let u=document.createElement("button");u.type="button",u.className=`forms-expert-scale-btn ${l===r?"active":""}`,u.textContent=String(r),u.dataset.value=String(r),n.appendChild(u)}if(m.appendChild(n),t.lowLabel||t.highLabel){let r=document.createElement("div");r.className="forms-expert-scale-labels",r.innerHTML=`<span>${E(t.lowLabel||"")}</span><span>${E(t.highLabel||"")}</span>`,m.appendChild(r)}if(i){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=i,m.appendChild(r)}return a.appendChild(m),a}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=b("forms-expert-input",s?.fieldClassName),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=b("forms-expert-input",s?.fieldClassName),o.value=String(e||"");break;case"url":o=document.createElement("input"),o.type="url",o.className=b("forms-expert-input",s?.fieldClassName),o.value=String(e||"");break;case"password":o=document.createElement("input"),o.type="password",o.className=b("forms-expert-input",s?.fieldClassName),o.value=String(e||"");break;case"time":o=document.createElement("input"),o.type="time",o.className=b("forms-expert-input",s?.fieldClassName),o.value=String(e||"");break;case"datetime":o=document.createElement("input"),o.type="datetime-local",o.className=b("forms-expert-input",s?.fieldClassName),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 n=document.createElement("div");n.className="forms-expert-date-range";let p=e||{},d=document.createElement("input");d.type="date",d.className=b("forms-expert-input",s?.fieldClassName),d.name=`${t.name}.start`,d.value=p.start||"";let l=document.createElement("input");if(l.type="date",l.className=b("forms-expert-input",s?.fieldClassName),l.name=`${t.name}.end`,l.value=p.end||"",n.appendChild(d),n.appendChild(l),m.appendChild(n),i){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=i,m.appendChild(r)}return a.appendChild(m),a}case"address":{let n=document.createElement("div");n.className="forms-expert-address";let p=t.addressFields||["street","city","state","zip","country"],d=e||{},l={street:"Street",street2:"Street Line 2",city:"City",state:"State",zip:"ZIP",country:"Country"};if(p.forEach(r=>{let u=document.createElement("input");u.type="text",u.className=b("forms-expert-input",s?.fieldClassName),u.name=`${t.name}.${r}`,u.placeholder=l[r]||r,u.value=d[r]||"",n.appendChild(u)}),m.appendChild(n),i){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=i,m.appendChild(r)}return a.appendChild(m),a}case"name":{let n=document.createElement("div");n.className="forms-expert-name";let p=t.nameFields||["first","last"],d=e||{},l={prefix:"Prefix",first:"First Name",middle:"Middle",last:"Last Name",suffix:"Suffix"};if(p.forEach(r=>{let u=document.createElement("input");u.type="text",u.className=b("forms-expert-input",s?.fieldClassName),u.name=`${t.name}.${r}`,u.placeholder=l[r]||r,u.value=d[r]||"",n.appendChild(u)}),m.appendChild(n),i){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=i,m.appendChild(r)}return a.appendChild(m),a}case"imageChoice":{let n=document.createElement("div");n.className="forms-expert-image-choice";let p=t.options||[],d=e;if(p.forEach(l=>{let r=document.createElement("button");if(r.type="button",r.className=`forms-expert-image-choice-item ${d===l.value?"active":""}`,r.dataset.value=l.value,l.imageUrl){let c=document.createElement("img");c.src=l.imageUrl,c.alt=l.label,r.appendChild(c)}let u=document.createElement("span");u.textContent=l.label,r.appendChild(u),n.appendChild(r)}),m.appendChild(n),i){let l=document.createElement("div");l.className="forms-expert-error-message",l.textContent=i,m.appendChild(l)}return a.appendChild(m),a}case"ranking":{let n=document.createElement("div");n.className="forms-expert-ranking";let p=t.options||[];if((e||[...p]).forEach((l,r)=>{let u=document.createElement("div");u.className="forms-expert-ranking-item",u.textContent=`${r+1}. ${l}`,u.dataset.value=l,n.appendChild(u)}),m.appendChild(n),i){let l=document.createElement("div");l.className="forms-expert-error-message",l.textContent=i,m.appendChild(l)}return a.appendChild(m),a}case"location":{let n=document.createElement("div");n.className="forms-expert-location";let p=e||{},d=document.createElement("input");d.type="text",d.className=b("forms-expert-input",s?.fieldClassName),d.name=`${t.name}.address`,d.placeholder="Address",d.value=p.address||"",n.appendChild(d);let l=document.createElement("div");l.className="forms-expert-location-coords";let r=document.createElement("input");r.type="number",r.className=b("forms-expert-input",s?.fieldClassName),r.name=`${t.name}.lat`,r.placeholder="Latitude",r.step="any",r.value=p.lat!==void 0?String(p.lat):"";let u=document.createElement("input");if(u.type="number",u.className=b("forms-expert-input",s?.fieldClassName),u.name=`${t.name}.lng`,u.placeholder="Longitude",u.step="any",u.value=p.lng!==void 0?String(p.lng):"",l.appendChild(r),l.appendChild(u),n.appendChild(l),m.appendChild(n),i){let c=document.createElement("div");c.className="forms-expert-error-message",c.textContent=i,m.appendChild(c)}return a.appendChild(m),a}default:o=document.createElement("input"),o.type=t.type==="email"?"email":t.type==="number"?"number":t.type==="date"?"date":"text",o.className=b("forms-expert-input",s?.fieldClassName),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),i&&o.classList.add("forms-expert-error"),m.appendChild(o),i){let n=document.createElement("div");n.className="forms-expert-error-message",n.textContent=i,m.appendChild(n)}return a.appendChild(m),a}function L(t,e={},i={},s={}){let a=document.createElement("form");if(a.className="forms-expert",s.hideRequiredAsterisk){let c=document.createElement("style");c.textContent=".forms-expert .forms-expert-required { display: none; }",a.appendChild(c)}if(s.showFormName!==!1&&s.formName){let c=document.createElement("h1");c.className="forms-expert-title",c.textContent=s.formName,c.style.fontSize=s.formNameFontSize!=null?`${s.formNameFontSize}px`:"1.5rem";let h={normal:"400",medium:"500",semibold:"600",bold:"700"};c.style.fontWeight=h[s.formNameFontWeight||"bold"]||"700",c.style.marginBottom="0.5rem",a.appendChild(c)}let m=t.styling,o=t.fields,n=0;for(;n<o.length;){let c=o[n];if(c.row!=null){let h=[c],g=n+1;for(;g<o.length&&o[g].row===c.row;)h.push(o[g]),g++;if(h.length>1){let f=document.createElement("div");f.style.display="flex",f.style.gap="0.75rem",f.style.flexWrap="wrap",h.forEach(x=>{let C=document.createElement("div"),w=te(x.width);w?C.style.flex=`0 0 calc(${w} - 0.75rem)`:C.style.flex="1 1 0",C.style.minWidth="180px";let N=v(x,e[x.name],i[x.name],m);C.appendChild(N),f.appendChild(C)}),a.appendChild(f)}else{let f=v(c,e[c.name],i[c.name],m);a.appendChild(f)}n=g}else{let h=v(c,e[c.name],i[c.name],m);a.appendChild(h),n++}}if(s.honeypot){let c=document.createElement("input");c.type="text",c.name="_hp",c.className="forms-expert-honeypot",c.tabIndex=-1,c.autocomplete="off",a.appendChild(c)}let p=document.createElement("input");p.type="hidden",p.name="pageUrl",p.value=typeof window<"u"?window.location.href:"",a.appendChild(p);let d=document.createElement("div");d.className="forms-expert-button-wrapper";let l=document.createElement("button");if(l.type="submit",l.className=b("forms-expert-button",s.buttonClassName),l.disabled=s.isLoading||!1,s.isLoading)l.innerHTML=`
|
|
337
|
+
`.trim()}function E(t){let e=document.createElement("div");return e.textContent=t,e.innerHTML}function Z(t){switch(t){case"small":return"18px";case"large":return"30px";case"extra-large":return"36px";default:return"24px"}}function ee(t){switch(t){case"small":return"14px";case"large":return"18px";default:return"16px"}}function b(t,e){return e?`${t} ${e}`:t}function te(t){switch(t){case"1/4":return"25%";case"1/3":return"33.333%";case"1/2":return"50%";case"2/3":return"66.666%";case"3/4":return"75%";case"full":return"100%";default:return}}function v(t,e,s,i){let a=document.createElement("div");if(t.type==="heading"){a.className="forms-expert-group";let n=document.createElement("h3");if(n.className="forms-expert-heading",n.style.fontSize=Z(i?.headingSize),n.textContent=t.label||"",a.appendChild(n),t.content){let p=document.createElement("p");p.className="forms-expert-heading-subtitle",p.textContent=t.content,a.appendChild(p)}return a}if(t.type==="divider"){let n=document.createElement("hr");return n.className="forms-expert-divider",n}if(t.type==="paragraph"){a.className="forms-expert-group";let n=t.paragraphFontSize?`${t.paragraphFontSize}px`:ee(i?.paragraphSize);if(t.label){let p=document.createElement("p");p.className="forms-expert-paragraph-label",p.style.fontSize=n,p.textContent=t.label,a.appendChild(p)}if(t.content){let p=document.createElement("div");p.className="forms-expert-paragraph",p.style.fontSize=n,p.innerHTML=t.content,a.appendChild(p)}return a}if(t.type==="hidden"){let n=document.createElement("input");return n.type="hidden",n.name=t.name,n.value=String(t.defaultValue??e??""),a.appendChild(n),a.style.display="none",a}if(t.type==="checkbox"||t.type==="toggle"||t.type==="consent"){a.className="forms-expert-checkbox-group";let n=document.createElement("input");n.type="checkbox",n.id=`mira-field-${t.name}`,n.name=t.name,n.className="forms-expert-checkbox",n.checked=!!e,t.required&&(n.required=!0);let p=document.createElement("div"),d=document.createElement("label");d.htmlFor=n.id,d.style.cursor="pointer",t.type==="consent"&&t.consentFontSize&&(d.style.fontSize=`${t.consentFontSize}px`);let l=t.type==="consent"?t.consentText||t.label||t.name:t.label||t.name;if(d.innerHTML=`${E(l)}${t.required?'<span class="forms-expert-required">*</span>':""}`,p.appendChild(d),t.type==="consent"&&t.consentUrl){let r=document.createElement("a");r.href=t.consentUrl,r.target="_blank",r.rel="noopener noreferrer",r.textContent="View policy",r.className="forms-expert-consent-link",p.appendChild(r)}if(a.appendChild(n),a.appendChild(p),s){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=s,a.appendChild(r)}return a}if(a.className="forms-expert-group",t.label){let n=document.createElement("label");n.className=`forms-expert-label${i?.labelClassName?" "+i.labelClassName:""}`,n.htmlFor=`mira-field-${t.name}`,n.innerHTML=`${E(t.label)}${t.required?'<span class="forms-expert-required">*</span>':""}`,a.appendChild(n)}let m=document.createElement("div");m.className="forms-expert-input-wrapper";let o;switch(t.type){case"textarea":case"richText":o=document.createElement("textarea"),o.className=b("forms-expert-textarea",i?.fieldClassName),o.value=String(e||""),t.maxLength&&(o.maxLength=t.maxLength);break;case"select":case"dropdown":{o=document.createElement("select"),o.className=b("forms-expert-select",i?.fieldClassName);let n=document.createElement("option");n.value="",n.textContent=t.placeholder||"Select an option...",o.appendChild(n),(t.options||[]).forEach(d=>{let l=document.createElement("option");l.value=d,l.textContent=d,e===d&&(l.selected=!0),o.appendChild(l)});break}case"radio":{let n=document.createElement("div");if(n.className="forms-expert-radio-group",(t.options||[]).forEach(d=>{let l=document.createElement("label");l.className="forms-expert-radio-item";let r=document.createElement("input");r.type="radio",r.name=t.name,r.value=d,r.checked=e===d,l.appendChild(r),l.appendChild(document.createTextNode(` ${d}`)),n.appendChild(l)}),m.appendChild(n),s){let d=document.createElement("div");d.className="forms-expert-error-message",d.textContent=s,m.appendChild(d)}return a.appendChild(m),a}case"multiselect":{let n=document.createElement("div");n.className="forms-expert-multiselect-group";let p=e||[];if((t.options||[]).forEach(l=>{let r=document.createElement("label");r.className="forms-expert-checkbox-item";let u=document.createElement("input");u.type="checkbox",u.name=t.name,u.value=l,u.checked=p.includes(l),r.appendChild(u),r.appendChild(document.createTextNode(` ${l}`)),n.appendChild(r)}),m.appendChild(n),s){let l=document.createElement("div");l.className="forms-expert-error-message",l.textContent=s,m.appendChild(l)}return a.appendChild(m),a}case"rating":{let n=document.createElement("div");n.className="forms-expert-rating";let p=t.ratingMax||5,d=e||0;for(let l=1;l<=p;l++){let r=document.createElement("button");r.type="button",r.className=`forms-expert-rating-star ${l<=d?"active":""}`,r.textContent="\u2605",r.dataset.value=String(l),n.appendChild(r)}if(m.appendChild(n),s){let l=document.createElement("div");l.className="forms-expert-error-message",l.textContent=s,m.appendChild(l)}return a.appendChild(m),a}case"scale":case"opinionScale":{let n=document.createElement("div");n.className="forms-expert-scale";let p=t.min??(t.type==="opinionScale"?0:1),d=t.max??(t.type==="opinionScale"?10:5),l=e;for(let r=p;r<=d;r++){let u=document.createElement("button");u.type="button",u.className=`forms-expert-scale-btn ${l===r?"active":""}`,u.textContent=String(r),u.dataset.value=String(r),n.appendChild(u)}if(m.appendChild(n),t.lowLabel||t.highLabel){let r=document.createElement("div");r.className="forms-expert-scale-labels",r.innerHTML=`<span>${E(t.lowLabel||"")}</span><span>${E(t.highLabel||"")}</span>`,m.appendChild(r)}if(s){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=s,m.appendChild(r)}return a.appendChild(m),a}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=b("forms-expert-input",i?.fieldClassName),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=b("forms-expert-input",i?.fieldClassName),o.value=String(e||"");break;case"url":o=document.createElement("input"),o.type="url",o.className=b("forms-expert-input",i?.fieldClassName),o.value=String(e||"");break;case"password":o=document.createElement("input"),o.type="password",o.className=b("forms-expert-input",i?.fieldClassName),o.value=String(e||"");break;case"time":o=document.createElement("input"),o.type="time",o.className=b("forms-expert-input",i?.fieldClassName),o.value=String(e||"");break;case"datetime":o=document.createElement("input"),o.type="datetime-local",o.className=b("forms-expert-input",i?.fieldClassName),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 n=document.createElement("div");n.className="forms-expert-date-range";let p=e||{},d=document.createElement("input");d.type="date",d.className=b("forms-expert-input",i?.fieldClassName),d.name=`${t.name}.start`,d.value=p.start||"";let l=document.createElement("input");if(l.type="date",l.className=b("forms-expert-input",i?.fieldClassName),l.name=`${t.name}.end`,l.value=p.end||"",n.appendChild(d),n.appendChild(l),m.appendChild(n),s){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=s,m.appendChild(r)}return a.appendChild(m),a}case"address":{let n=document.createElement("div");n.className="forms-expert-address";let p=t.addressFields||["street","city","state","zip","country"],d=e||{},l={street:"Street",street2:"Street Line 2",city:"City",state:"State",zip:"ZIP",country:"Country"};if(p.forEach(r=>{let u=document.createElement("input");u.type="text",u.className=b("forms-expert-input",i?.fieldClassName),u.name=`${t.name}.${r}`,u.placeholder=l[r]||r,u.value=d[r]||"",n.appendChild(u)}),m.appendChild(n),s){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=s,m.appendChild(r)}return a.appendChild(m),a}case"name":{let n=document.createElement("div");n.className="forms-expert-name";let p=t.nameFields||["first","last"],d=e||{},l={prefix:"Prefix",first:"First Name",middle:"Middle",last:"Last Name",suffix:"Suffix"};if(p.forEach(r=>{let u=document.createElement("input");u.type="text",u.className=b("forms-expert-input",i?.fieldClassName),u.name=`${t.name}.${r}`,u.placeholder=l[r]||r,u.value=d[r]||"",n.appendChild(u)}),m.appendChild(n),s){let r=document.createElement("div");r.className="forms-expert-error-message",r.textContent=s,m.appendChild(r)}return a.appendChild(m),a}case"imageChoice":{let n=document.createElement("div");n.className="forms-expert-image-choice";let p=t.options||[],d=e;if(p.forEach(l=>{let r=document.createElement("button");if(r.type="button",r.className=`forms-expert-image-choice-item ${d===l.value?"active":""}`,r.dataset.value=l.value,l.imageUrl){let c=document.createElement("img");c.src=l.imageUrl,c.alt=l.label,r.appendChild(c)}let u=document.createElement("span");u.textContent=l.label,r.appendChild(u),n.appendChild(r)}),m.appendChild(n),s){let l=document.createElement("div");l.className="forms-expert-error-message",l.textContent=s,m.appendChild(l)}return a.appendChild(m),a}case"ranking":{let n=document.createElement("div");n.className="forms-expert-ranking";let p=t.options||[];if((e||[...p]).forEach((l,r)=>{let u=document.createElement("div");u.className="forms-expert-ranking-item",u.textContent=`${r+1}. ${l}`,u.dataset.value=l,n.appendChild(u)}),m.appendChild(n),s){let l=document.createElement("div");l.className="forms-expert-error-message",l.textContent=s,m.appendChild(l)}return a.appendChild(m),a}case"location":{let n=document.createElement("div");n.className="forms-expert-location";let p=e||{},d=document.createElement("input");d.type="text",d.className=b("forms-expert-input",i?.fieldClassName),d.name=`${t.name}.address`,d.placeholder="Address",d.value=p.address||"",n.appendChild(d);let l=document.createElement("div");l.className="forms-expert-location-coords";let r=document.createElement("input");r.type="number",r.className=b("forms-expert-input",i?.fieldClassName),r.name=`${t.name}.lat`,r.placeholder="Latitude",r.step="any",r.value=p.lat!==void 0?String(p.lat):"";let u=document.createElement("input");if(u.type="number",u.className=b("forms-expert-input",i?.fieldClassName),u.name=`${t.name}.lng`,u.placeholder="Longitude",u.step="any",u.value=p.lng!==void 0?String(p.lng):"",l.appendChild(r),l.appendChild(u),n.appendChild(l),m.appendChild(n),s){let c=document.createElement("div");c.className="forms-expert-error-message",c.textContent=s,m.appendChild(c)}return a.appendChild(m),a}default:o=document.createElement("input"),o.type=t.type==="email"?"email":t.type==="number"?"number":t.type==="date"?"date":"text",o.className=b("forms-expert-input",i?.fieldClassName),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),s&&o.classList.add("forms-expert-error"),m.appendChild(o),s){let n=document.createElement("div");n.className="forms-expert-error-message",n.textContent=s,m.appendChild(n)}return a.appendChild(m),a}function L(t,e={},s={},i={}){let a=document.createElement("form");if(a.className="forms-expert",i.hideRequiredAsterisk){let c=document.createElement("style");c.textContent=".forms-expert .forms-expert-required { display: none; }",a.appendChild(c)}if(i.showFormName!==!1&&i.formName){let c=document.createElement("h1");c.className="forms-expert-title",c.textContent=i.formName,c.style.fontSize=i.formNameFontSize!=null?`${i.formNameFontSize}px`:"1.5rem";let h={normal:"400",medium:"500",semibold:"600",bold:"700"};c.style.fontWeight=h[i.formNameFontWeight||"bold"]||"700",c.style.marginBottom="0.5rem",a.appendChild(c)}let m=t.styling,o=t.fields,n=0;for(;n<o.length;){let c=o[n];if(c.row!=null){let h=[c],g=n+1;for(;g<o.length&&o[g].row===c.row;)h.push(o[g]),g++;if(h.length>1){let f=document.createElement("div");f.style.display="flex",f.style.gap="0.75rem",f.style.flexWrap="wrap",h.forEach(x=>{let C=document.createElement("div"),w=te(x.width);w?C.style.flex=`0 0 calc(${w} - 0.75rem)`:C.style.flex="1 1 0",C.style.minWidth="180px";let N=v(x,e[x.name],s[x.name],m);C.appendChild(N),f.appendChild(C)}),a.appendChild(f)}else{let f=v(c,e[c.name],s[c.name],m);a.appendChild(f)}n=g}else{let h=v(c,e[c.name],s[c.name],m);a.appendChild(h),n++}}if(i.honeypot){let c=document.createElement("input");c.type="text",c.name="_hp",c.className="forms-expert-honeypot",c.tabIndex=-1,c.autocomplete="off",a.appendChild(c)}let p=document.createElement("input");p.type="hidden",p.name="pageUrl",p.value=typeof window<"u"?window.location.href:"",a.appendChild(p);let d=document.createElement("div");d.className="forms-expert-button-wrapper";let l=document.createElement("button");if(l.type="submit",l.className=b("forms-expert-button",i.buttonClassName),l.disabled=i.isLoading||!1,i.isLoading)l.innerHTML=`
|
|
337
338
|
<span class="forms-expert-button-loading">
|
|
338
339
|
<span class="forms-expert-spinner"></span>
|
|
339
340
|
Submitting...
|
|
340
341
|
</span>
|
|
341
|
-
`;else{let c=m?.buttonIcon,h=m?.buttonIconPosition||"left";if(c){l.style.display="inline-flex",l.style.alignItems="center",l.style.gap="0.5rem";let g=document.createElement("span");g.style.display="inline-flex",g.style.flexShrink="0",g.innerHTML=c;let f=document.createElement("span");f.textContent=
|
|
342
|
+
`;else{let c=m?.buttonIcon,h=m?.buttonIconPosition||"left";if(c){l.style.display="inline-flex",l.style.alignItems="center",l.style.gap="0.5rem";let g=document.createElement("span");g.style.display="inline-flex",g.style.flexShrink="0",g.innerHTML=c;let f=document.createElement("span");f.textContent=i.submitText||"Submit",h==="right"?(l.appendChild(f),l.appendChild(g)):(l.appendChild(g),l.appendChild(f))}else l.textContent=i.submitText||"Submit"}let r=i.secondaryButton,u=()=>{if(!r?.enabled)return null;let c=document.createElement("a");if(c.className="forms-expert-secondary-btn",c.href=r.href||"#",c.style.display="inline-flex",c.style.alignItems="center",c.style.gap="0.5rem",r.icon){let f=document.createElement("span");f.style.display="inline-flex",f.style.flexShrink="0",f.innerHTML=r.icon;let x=document.createElement("span");x.textContent=r.text||"Learn More",r.iconPosition==="right"?(c.appendChild(x),c.appendChild(f)):(c.appendChild(f),c.appendChild(x))}else c.textContent=r.text||"Learn More";r.openInNewTab&&(c.target="_blank",c.rel="noopener noreferrer");let h=m?.primaryColor||"#3b82f6",g=r.color||h;return r.style==="filled"?(c.style.background=g,c.style.color=r.textColor||"#ffffff",c.style.border="none"):r.style==="outlined"?(c.style.background="transparent",c.style.color=r.textColor||g,c.style.border=`2px solid ${g}`):r.style==="link"?(c.style.background="transparent",c.style.color=r.textColor||g,c.style.border="none",c.style.textDecoration="underline"):(c.style.background="transparent",c.style.color=r.textColor||g,c.style.border="none"),r.marginTop!=null&&(c.style.marginTop=`${r.marginTop}px`),r.marginBottom!=null&&(c.style.marginBottom=`${r.marginBottom}px`),r.fontSize!=null&&(c.style.fontSize=`${r.fontSize}px`),c};if(r?.enabled&&r.position==="left"){let c=u();c&&d.appendChild(c)}if(d.appendChild(l),r?.enabled&&r.position!=="left"&&r.position!=="below"){let c=u();c&&(c.style.marginLeft="auto",d.appendChild(c))}if(a.appendChild(d),r?.enabled&&r.position==="below"){let c=document.createElement("div");c.className="forms-expert-secondary-below";let h=r.align||i.buttonAlign||"left";c.style.justifyContent=h==="center"?"center":h==="right"?"flex-end":"flex-start",r.marginTop!=null&&(c.style.marginTop=`${r.marginTop}px`),r.marginBottom!=null&&(c.style.marginBottom=`${r.marginBottom}px`);let g=u();g&&(g.style.marginTop="0",g.style.marginBottom="0",c.appendChild(g)),a.appendChild(c)}if(i.showBranding!==!1){let c=i.brandingText||"Powered by Forms Expert",h=i.brandingUrl||"https://mira.io",g=document.createElement("div");g.className="forms-expert-branding",g.innerHTML=`<a href="${h}" target="_blank" rel="noopener">${c}</a>`,a.appendChild(g)}return a}function P(t){let e=document.createElement("div");return e.className="forms-expert-success",e.innerHTML=`
|
|
342
343
|
<svg class="forms-expert-success-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
343
344
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path>
|
|
344
345
|
</svg>
|
|
345
346
|
<div class="forms-expert-success-message">${E(t)}</div>
|
|
346
|
-
`,e}function
|
|
347
|
+
`,e}function z(t){return t.reduce((e,s)=>({...e,[s.field]:s.message}),{})}var y=class extends Error{constructor(s,i,a,m){super(s);this.code=i;this.statusCode=a;this.retryAfter=m;this.name="FormsError"}},S=class extends Error{constructor(s){super("Validation failed");this.errors=s;this.name="FormValidationError"}};var k=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 s=e.includes("?")?"&":"?";return`${this.baseUrl}${e}${s}token=${encodeURIComponent(this.apiKey)}`}async request(e,s,i){let a=this.buildUrl(s),m=await fetch(a,{method:e,headers:{"Content-Type":"application/json"},body:i?JSON.stringify(i):void 0}),o=await m.json();if(!m.ok)throw new y(o.message||"Request failed",o.code||"UNKNOWN_ERROR",m.status,o.retryAfter);return o}async isActive(e,s){let i=s?`?lang=${encodeURIComponent(s)}`:"";return this.request("GET",`/f/${this.resourceId}/${e}/is-active${i}`)}async validate(e,s){return this.request("POST",`/f/${this.resourceId}/${e}/validate`,{data:s})}async submit(e,s,i){let a=this.buildUrl(`/f/${this.resourceId}/${e}`);return Object.values(s).some(o=>o instanceof File||o instanceof FileList&&o.length>0)||i?.onProgress?this.submitWithFormData(a,s,i):this.request("POST",`/f/${this.resourceId}/${e}`,{data:s,pageUrl:i?.pageUrl||(typeof window<"u"?window.location.href:void 0),captchaToken:i?.captchaToken})}submitWithFormData(e,s,i){return new Promise((a,m)=>{let o=new FormData;for(let[d,l]of Object.entries(s))l instanceof File?o.append(d,l):l instanceof FileList?Array.from(l).forEach(r=>o.append(d,r)):l!=null&&o.append(`data[${d}]`,String(l));let n=i?.pageUrl||(typeof window<"u"?window.location.href:"");n&&o.append("pageUrl",n),i?.captchaToken&&o.append("captchaToken",i.captchaToken);let p=new XMLHttpRequest;i?.onProgress&&p.upload.addEventListener("progress",d=>{d.lengthComputable&&i.onProgress({loaded:d.loaded,total:d.total,percentage:Math.round(d.loaded/d.total*100)})}),p.addEventListener("load",()=>{try{let d=JSON.parse(p.responseText);p.status>=200&&p.status<300?a(d):m(new y(d.message||"Submission failed",d.code||"UNKNOWN_ERROR",p.status,d.retryAfter))}catch{m(new y("Invalid response","PARSE_ERROR",p.status))}}),p.addEventListener("error",()=>{m(new y("Network error","NETWORK_ERROR",0))}),p.addEventListener("abort",()=>{m(new y("Request aborted","ABORTED",0))}),p.open("POST",e),p.send(o)})}async trackView(e){let s=this.buildUrl(`/f/${this.resourceId}/${e}/view`);await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"}).catch(()=>{})}getResourceId(){return this.resourceId}getBaseUrl(){return this.baseUrl}};var I=class{constructor(e,s,i={}){this.config=null;this.apiClient=e,this.slug=s,this.options=i}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,s){this.options.onSubmitStart?.();try{if(this.config?.mode==="schema"){let a=await this.validate(e);if(!a.valid)throw this.options.onValidationError?.(a.errors),new S(a.errors)}let i=await this.apiClient.submit(this.slug,e,s);return this.options.onSubmitSuccess?.(i),i}catch(i){throw i instanceof y&&this.options.onSubmitError?.(i),i}}getSuccessMessage(){return this.config?.settings?.successMessage||"Form submitted successfully!"}getRedirectUrl(){return this.config?.settings?.redirectUrl}},F=class{constructor(e){this.apiClient=new k(e)}async isActive(e,s){return this.apiClient.isActive(e,s)}async validate(e,s){return this.apiClient.validate(e,s)}async submit(e,s,i){return this.apiClient.submit(e,s,i)}form(e,s){return new I(this.apiClient,e,s)}async trackView(e){return this.apiClient.trackView(e)}async submitWithRetry(e,s,i){let a=i?.maxRetries??3,m=null;for(let o=0;o<a;o++)try{return await this.submit(e,s,i)}catch(n){if(m=n,n instanceof y){if(["VALIDATION_ERROR","CAPTCHA_REQUIRED","ORIGIN_NOT_ALLOWED"].includes(n.code))throw n;if(n.code.includes("RATE_LIMIT")){let p=n.retryAfter||Math.pow(2,o)*1e3;await new Promise(d=>setTimeout(d,p));continue}}await new Promise(p=>setTimeout(p,Math.pow(2,o)*1e3))}throw m}};var $=class{constructor(e,s){this.config=null;this.values={};this.errors={};this.isLoading=!1;this.isSubmitted=!1;this.styleEl=null;this.sdk=new F(e),this.options=s;let i=s.target;if(typeof i=="string"){let a=document.querySelector(i);if(!a)throw new Error(`Element not found: ${i}`);this.container=a}else this.container=i}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=T(e),document.head.appendChild(this.styleEl),this.injectGoogleFont(e?.fontFamily)}injectGoogleFont(e){if(!e)return;let s=["Inter","Roboto","Open Sans","Lato","Poppins","Montserrat","Nunito","Source Sans Pro","Raleway","Ubuntu","Playfair Display","Merriweather"],i=e.split(",")[0]?.trim();if(!i||!s.includes(i))return;let a=`forms-expert-font-${this.options.slug}`;if(document.getElementById(a))return;let m=document.createElement("link");m.id=a,m.rel="stylesheet",m.href=`https://fonts.googleapis.com/css2?family=${i.replace(/ /g,"+")}:wght@400;500;600;700&display=swap`,document.head.appendChild(m)}render(){if(!this.config?.schema)return;if(this.isSubmitted){this.container.innerHTML="";let a=this.config.settings?.successMessage||"Form submitted successfully!";this.container.appendChild(P(a));return}let e={...this.config.schema.styling,...this.config.styling},s={...this.config.schema,styling:e},i=L(s,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,secondaryButton:e.secondaryButton,buttonAlign:e.buttonAlign,buttonClassName:e.buttonClassName,formNameFontSize:e.formNameFontSize,formNameFontWeight:e.formNameFontWeight});i.addEventListener("input",a=>{let m=a.target;m.name&&m.name!=="_hp"&&m.name!=="pageUrl"&&(m.type==="checkbox"?this.values[m.name]=m.checked:m.type==="file"?this.values[m.name]=m.multiple?m.files:m.files?.[0]:this.values[m.name]=m.value,this.errors[m.name]&&(delete this.errors[m.name],this.render()))}),i.addEventListener("submit",a=>{a.preventDefault(),this.handleSubmit()}),this.container.innerHTML="",this.container.appendChild(i)}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 s=this.options.redirectUrl||this.config.settings?.redirectUrl;s&&setTimeout(()=>{window.location.href=s},1500),this.options.resetOnSuccess&&setTimeout(()=>{this.reset()},3e3)}catch(e){this.isLoading=!1,e instanceof S?(this.errors=z(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=`
|
|
347
348
|
<div class="forms-expert" style="display: flex; align-items: center; justify-content: center; padding: 2rem;">
|
|
348
349
|
<svg width="24" height="24" viewBox="0 0 24 24" style="animation: fe-spin 1s linear infinite; color: #9ca3af;">
|
|
349
350
|
<circle cx="12" cy="12" r="10" stroke="currentColor" stroke-width="3" fill="none" stroke-dasharray="31.4 31.4" stroke-linecap="round"/>
|
|
@@ -354,5 +355,5 @@ ${e.customCss||""}
|
|
|
354
355
|
<div class="forms-expert" style="text-align: center; padding: 2rem; color: #ef4444;">
|
|
355
356
|
<p>${e}</p>
|
|
356
357
|
</div>
|
|
357
|
-
`}destroy(){this.container.innerHTML="",this.styleEl?.remove(),this.styleEl=null}};function A(){document.querySelectorAll("[data-forms-expert]").forEach(e=>{let
|
|
358
|
+
`}destroy(){this.container.innerHTML="",this.styleEl?.remove(),this.styleEl=null}};function A(){document.querySelectorAll("[data-forms-expert]").forEach(e=>{let s=e.getAttribute("data-api-key"),i=e.getAttribute("data-resource-id"),a=e.getAttribute("data-forms-expert"),m=e.getAttribute("data-base-url")||void 0;if(!s||!i||!a){console.error("Forms Expert: Missing required attributes",{apiKey:!!s,resourceId:!!i,slug:!!a});return}new $({apiKey:s,resourceId:i,baseUrl:m},{target:e,slug:a,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",A):A());return W(re);})();
|
|
358
359
|
//# sourceMappingURL=index.global.js.map
|