@formhaus/core 0.13.0 → 0.13.2
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/chunk-35SAVPYL.js +2 -0
- package/dist/chunk-35SAVPYL.js.map +1 -0
- package/dist/chunk-4UCHIIVE.js +2 -0
- package/dist/chunk-4UCHIIVE.js.map +1 -0
- package/dist/chunk-76YV4J3Q.js +3 -0
- package/dist/chunk-76YV4J3Q.js.map +1 -0
- package/dist/{chunk-UFYD5LVW.js → chunk-J5TQSLO3.js} +3 -3
- package/dist/{chunk-UFYD5LVW.js.map → chunk-J5TQSLO3.js.map} +1 -1
- package/dist/chunk-PBTYUSZR.js +2 -0
- package/dist/chunk-PBTYUSZR.js.map +1 -0
- package/dist/{chunk-FQ3GLJTI.js → chunk-RN5GQHKN.js} +3 -3
- package/dist/{chunk-FQ3GLJTI.js.map → chunk-RN5GQHKN.js.map} +1 -1
- package/dist/cloud.js +1 -1
- package/dist/i18n.js +1 -1
- package/dist/i18n.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/internal.d.ts +19 -4
- package/dist/internal.js +1 -1
- package/dist/internal.js.map +1 -1
- package/dist/{runtime-BzYG6cit.d.ts → runtime-BN2PuKD7.d.ts} +1 -0
- package/dist/server.iife.js +3 -3
- package/dist/server.iife.js.map +1 -1
- package/dist/server.js +1 -1
- package/dist/server.js.map +1 -1
- package/fixtures/submissions/choices.json +3 -8
- package/fixtures/submissions/single-step.json +3 -4
- package/package.json +1 -1
- package/dist/chunk-4IHQINIH.js +0 -3
- package/dist/chunk-4IHQINIH.js.map +0 -1
- package/dist/chunk-5KV7BDCS.js +0 -2
- package/dist/chunk-5KV7BDCS.js.map +0 -1
- package/dist/chunk-PZEBYRGE.js +0 -2
- package/dist/chunk-PZEBYRGE.js.map +0 -1
- package/dist/chunk-Y33LPJXU.js +0 -2
- package/dist/chunk-Y33LPJXU.js.map +0 -1
package/dist/server.iife.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var Formhaus=(function(exports){'use strict';typeof console==="undefined"&&(globalThis.console={log:function(){},warn:function(){},error:function(){}});
|
|
2
|
-
var
|
|
2
|
+
var At=Object.defineProperty,Lt=Object.defineProperties;var jt=Object.getOwnPropertyDescriptors;var Ke=Object.getOwnPropertySymbols;var Tt=Object.prototype.hasOwnProperty,Pt=Object.prototype.propertyIsEnumerable;var _e=(e,t,n)=>t in e?At(e,t,{enumerable:true,configurable:true,writable:true,value:n}):e[t]=n,m=(e,t)=>{for(var n in t||(t={}))Tt.call(t,n)&&_e(e,n,t[n]);if(Ke)for(var n of Ke(t))Pt.call(t,n)&&_e(e,n,t[n]);return e},Se=(e,t)=>Lt(e,jt(t));var qe=["eq","neq","in","notIn","notEmpty","gt","gte","lt","lte"];function z(e){return e==null||e===""||Array.isArray(e)&&!e.length}function Nt(e){let t=typeof e=="string"&&e.trim()!==""?Number(e):e;return typeof t=="number"&&Number.isFinite(t)?t:void 0}function ne(e,t,n){let r=Nt(e);return r!==void 0&&n(r,t)}function we(e,t){let n=t[e.field];return e.eq!==void 0?n===e.eq:e.neq!==void 0?n!==e.neq:e.in!==void 0?e.in.includes(n):e.notIn!==void 0?!e.notIn.includes(n):e.notEmpty!==void 0?!e.notEmpty||!z(n):e.gt!==void 0?ne(n,e.gt,(r,s)=>r>s):e.gte!==void 0?ne(n,e.gte,(r,s)=>r>=s):e.lt!==void 0?ne(n,e.lt,(r,s)=>r<s):e.lte!==void 0?ne(n,e.lte,(r,s)=>r<=s):false}var $=class extends Error{constructor(t){super(`Invalid form definition:
|
|
3
3
|
${t.map(n=>n.message).join(`
|
|
4
|
-
`)}`),this.name="FormDefinitionError",this.issues=t;}};function Ue(e){return (t,n,r,s)=>m({code:t,severity:e,path:n,message:`${n||"/"}: ${r}.${s?` ${s}.`:""}`},s&&{hint:`${s}.`})}var g=Ue("error"),E=Ue("warning");function re(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function Be(e){return e.severity==="error"}function N(e){if(e.length===1)return `Use ${JSON.stringify(e[0])}`;let t=e.slice(0,10).map(n=>JSON.stringify(n)).join(", ");return e.length>10?`Use one of: ${t}, ...`:`Use one of: ${t}`}function Pt(e,t){let n=Array.from({length:t.length+1},(r,s)=>s);for(let r=1;r<=e.length;r++){let s=[r];for(let i=1;i<=t.length;i++)s[i]=Math.min(n[i]+1,s[i-1]+1,n[i-1]+(e[r-1]===t[i-1]?0:1));n=s;}return n[t.length]}function we(e,t){let n=e.toLowerCase();return t.find(r=>r!==e&&Pt(n,r.toLowerCase())<=(r.length>4?2:1))}function Y(e,t){let n=we(e,t);return n!==void 0?`Use ${JSON.stringify(n)}`:t.length?N(t):void 0}var z=qe;function Nt({suggest:e},t,n){let r=Object.keys(t).filter(a=>a!=="field"),s=r.filter(a=>!z.includes(a)),i=s.map(a=>g("unknown-operator",`${n}/${re(a)}`,`"${a}" is not a condition operator`,e(a,[...z]))),o=r.length-s.length;if(o!==1&&!(o===0&&s.length)){let a=o?`the condition has ${o} operators`:"the condition has no operator";i.push(g("condition-operator-count",n,a,`Use exactly one of: ${z.join(", ")}`));}return i}function Kt(e,{condition:t,path:n,owner:r,step:s,key:i}){let o=e.keys.get(t.field);if(!o){let c=e.keyList.filter(l=>l!==i);return [g("unknown-field",`${n}/field`,`"${t.field}" is not a field key`,e.suggest(t.field,c))]}if(s<0||r==="action")return [];let a=r==="step"?"this or a later step":"a later step";if(o.step<s||r!=="step"&&o.step===s)return [];let u=r==="step"?"earlier steps":"this or an earlier step";return [g("forward-reference",`${n}/field`,`"${t.field}" belongs to ${a}`,`${r==="route"?"Route":r==="step"?"Step":"Field"} conditions can use fields of ${u}`)]}function xe(e,t){let{condition:n,path:r}=t;return typeof n.field!="string"?[g("missing-property",`${r}/field`,'the condition has no "field"',"Add the key of the field to test")]:[...Nt(e,n,r),...Kt(e,t)]}function Ge(e){return e.conditions.flatMap(t=>xe(e,t))}function Ee(e,t,n,r,s,i){var o;for(let a of ["show","showAny"])((o=t[a])!=null?o:[]).forEach((u,c)=>e.push({condition:u,path:`${n}/${a}/${c}`,owner:r,step:s,key:i}));}function Ie(e,t,n,r){var s;(t?(s=t.disabled)!=null?s:[]:[]).forEach((i,o)=>e.push({condition:i,path:`${n}/disabled/${o}`,owner:"action",step:r}));}function He(e,t,n=()=>{}){var a,u;let r=(a=e.steps)!=null?a:[],s=r.length?r.flatMap((c,l)=>c.fields.map((d,f)=>({field:d,path:`/steps/${l}/fields/${f}`,step:l}))):((u=e.fields)!=null?u:[]).map((c,l)=>({field:c,path:`/fields/${l}`,step:-1})),i=new Map;for(let c of s)i.has(c.field.key)||i.set(c.field.key,c);let o=[];for(let c of s)Ee(o,c.field,c.path,"field",c.step,c.field.key);return r.forEach((c,l)=>{var d;Ee(o,c,`/steps/${l}`,"step",l),((d=c.routes)!=null?d:[]).forEach((f,y)=>Ee(o,f,`/steps/${l}/routes/${y}`,"route",l));for(let f of ["next","back","skip"])Ie(o,c[f],`/steps/${l}/${f}`,l);}),Ie(o,e.submit,"/submit",-1),Ie(o,e.cancel,"/cancel",-1),{definition:e,entries:s,keys:i,keyList:[...i.keys()],conditions:o,validators:t,suggest:n}}function We(e,t,n,r){let s=e[n],i=e[r];return s===void 0||i===void 0||s<=i?[]:[g("invalid-range",`${t}/validation/${n}`,`${n} (${s}) is greater than ${r} (${i})`,`Lower ${n} or raise ${r}`)]}function _t(e,t){if(e===void 0)return [];try{return new RegExp(e),[]}catch(n){return [g("invalid-pattern",`${t}/validation/pattern`,`${JSON.stringify(e)} is not a valid regular expression`,"Fix the pattern or escape special characters with a backslash")]}}function qt(e,{field:t,path:n}){let r=t.validation;if(!r)return [];let s=r.matchField;return [...We(r,n,"minLength","maxLength"),...We(r,n,"min","max"),..._t(r.pattern,n),...s===void 0||e.keys.has(s)?[]:[g("unknown-field",`${n}/validation/matchField`,`"${s}" is not a field key`,e.suggest(s,e.keyList))]]}function Ye(e){return e.entries.flatMap(t=>qt(e,t))}function Ut({definition:e,entries:t,keys:n}){var o;let r=new Map,s=(a,u)=>{var l;let c=u.filter(d=>n.has(d));if(c.length)for(let d of a)r.set(d,[...(l=r.get(d))!=null?l:[],...c]);},i=a=>{var u,c;return [...(u=a.show)!=null?u:[],...(c=a.showAny)!=null?c:[]].map(l=>l.field)};for(let{field:a}of t)s([a.key],i(a));for(let a of (o=e.steps)!=null?o:[])s(a.fields.map(u=>u.key),i(a));return r}function Bt(e){var r;let t=new Map,n=[];for(let s of e.keys()){if(t.has(s))continue;t.set(s,true);let i=[[s,0]];for(;i.length>0;){let o=i[i.length-1],a=(r=e.get(o[0]))==null?void 0:r[o[1]++];if(a===void 0)t.set(o[0],false),i.pop();else if(t.get(a)){let u=i.map(([c])=>c);n.push([...u.slice(u.indexOf(a)),a]);}else t.has(a)||(t.set(a,true),i.push([a,0]));}}return n}function Gt(e){return Bt(Ut(e)).map(t=>g("condition-cycle",e.keys.get(t[0]).path,`show conditions form a cycle: ${t.join(" -> ")}`,"Remove one of the conditions in the cycle"))}function ze(e){return Gt(e)}var Je="1.0";function Xe({formatVersion:e}){if(e===void 0)return [];let t=typeof e=="string"&&/^[1-9]\d*(\.\d+)?$/.test(e);return t&&parseInt(e)<=parseInt(Je)?[]:[t?g("unsupported-format-version","/formatVersion",`format ${e} is not supported`,"Upgrade @formhaus/core"):g("invalid-type","/formatVersion","must be a version string",`Use "${Je}"`)]}var X=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),Ht={string:[e=>typeof e=="string","a string"],number:[e=>typeof e=="number"&&Number.isFinite(e),"a number"],boolean:[e=>typeof e=="boolean","true or false"],requirement:[e=>["boolean","string"].includes(typeof e),"true, false or a message string"],scalar:[e=>["string","number","boolean"].includes(typeof e),"a string, number or boolean"],list:[e=>Array.isArray(e)&&e.every(t=>["string","number"].includes(typeof t)),"an array of strings or numbers"]};function K(e,t,n){return Object.entries(t).flatMap(([r,s])=>{let[i,o]=Ht[s];return e[r]===void 0||i(e[r])?[]:[g("invalid-type",`${n}/${re(r)}`,`"${r}" must be ${o}`)]})}function $(e,t,n,r,s=false){return e==null&&!s?[]:Array.isArray(e)?e.flatMap((i,o)=>X(i)?r(i,`${t}/${o}`):[g("invalid-type",`${t}/${o}`,`must be ${n}`)]):[g("invalid-type",t,"must be an array",s?"Use [] when there is nothing to list":void 0)]}function J(e,t,n){return typeof e[t]=="string"?[]:[g("missing-property",`${n}/${t}`,`"${t}" must be a string`)]}var Ce=(e,t)=>K(e,{field:"string",eq:"scalar",neq:"scalar",in:"list",notIn:"list",notEmpty:"boolean",gt:"number",gte:"number",lt:"number",lte:"number"},t);function $e(e,t){return [...$(e.show,`${t}/show`,"a condition object",Ce),...$(e.showAny,`${t}/showAny`,"a condition object",Ce)]}function Re(e,t){return X(e)?[...K(e,{label:"string"},t),...$(e.disabled,`${t}/disabled`,"a condition object",Ce)]:[]}var Wt=(e,t)=>[...J(e,"value",t),...K(e,{label:"string"},t)],Yt={required:"requirement",minLength:"number",maxLength:"number",min:"number",max:"number",pattern:"string",matchField:"string",validator:"string",minLengthMessage:"string",maxLengthMessage:"string",minMessage:"string",maxMessage:"string",patternMessage:"string",matchFieldMessage:"string"};function zt(e,t){return e===void 0?[]:X(e)?K(e,Yt,t):[g("invalid-type",t,"must be an object of validation rules")]}function Jt(e,t){return e===void 0||Array.isArray(e)&&e.every(r=>typeof r=="string")?[]:[g("invalid-type",t,"must be an array of field keys")]}var Ze=(e,t)=>[...J(e,"key",t),...J(e,"type",t),...K(e,{label:"string",placeholder:"string",helperText:"string"},t),...$e(e,t),...$(e.options,`${t}/options`,"an option object",Wt),...zt(e.validation,`${t}/validation`),...Jt(e.optionsDependsOn,`${t}/optionsDependsOn`)],Xt=(e,t)=>[...e.to===null||typeof e.to=="string"?[]:[g("missing-property",`${t}/to`,'"to" must be a step id or null')],...$e(e,t)],Zt=(e,t)=>[...J(e,"id",t),...K(e,{title:"string",description:"string"},t),...$(e.fields,`${t}/fields`,"a field object",Ze,true),...$e(e,t),...$(e.routes,`${t}/routes`,"a route object",Xt),...["next","back","skip"].flatMap(n=>Re(e[n],`${t}/${n}`))];function Qe(e){if(!X(e))return [g("invalid-type","","the form definition must be an object")];let t=Xe(e);return t.length?t:[...$(e.fields,"/fields","a field object",Ze),...$(e.steps,"/steps","a step object",Zt),...Re(e.submit,"/submit"),...Re(e.cancel,"/cancel")]}function et(e){return [...J(e,"id",""),...X(e.submit)?[]:[g("missing-property","/submit","the submit action is missing",'Add "submit": { "label": "Submit" }')]]}var se=e=>{var t,n;return !!((t=e.show)!=null&&t.length||(n=e.showAny)!=null&&n.length)};function tt(e,t,n){var s;let r=[];for(let i of (s=e[n].routes)!=null?s:[]){let o=i.to===null?null:t.get(i.to);if(o===null&&!se(i))return r;if(!(o==null||o<=n)&&(r.push(o),!se(i)&&!se(e[o])))return r}return n+1<e.length?[...r,n+1]:r}function nt(e){let t=new Map(e.map((n,r)=>[n.id,r]));return e.map((n,r)=>{let s=new Set,i=tt(e,t,r);for(;i.length;){let o=i.pop();s.has(o)||(s.add(o),i.push(...tt(e,t,o)),se(e[o])&&o+1<e.length&&i.push(o+1));}return s})}var Qt=new Set([...Object.getOwnPropertyNames(Object.prototype),"prototype"]);function en({definition:e}){var s;let t=[],n=(s=e.steps)!=null?s:[],r=new Map;return n.forEach((i,o)=>{let a=r.get(i.id);a===void 0?r.set(i.id,o):t.push(g("duplicate-step-id",`/steps/${o}/id`,`step id "${i.id}" is already used by /steps/${a}`,"Give each step a unique id"));}),n.forEach((i,o)=>{var a;return ((a=i.routes)!=null?a:[]).forEach((u,c)=>{if(u.to===null)return;let l=r.get(u.to);if(l!==void 0&&l>o)return;let d=n.slice(o+1).map(h=>h.id),f=l===void 0?`"${u.to}" is not a step id`:`"${u.to}" is not a later step`,y=d.length?`${N(d)}, or null to end the form here`:"Use null to end the form here";t.push(g("route-target",`/steps/${o}/routes/${c}/to`,f,y));})}),t}function tn({definition:e,entries:t}){var i;let n=[],r=nt((i=e.steps)!=null?i:[]),s=(o,a)=>{var u;return o.step!==a.step&&!((u=r[o.step])!=null&&u.has(a.step))};return t.forEach((o,a)=>{let{field:u,path:c}=o,l=t.slice(0,a).find(d=>d.field.key===u.key&&!s(d,o));Qt.has(u.key)?n.push(g("reserved-key",`${c}/key`,`"${u.key}" is a built-in object property name`,"Rename the field key")):l&&n.push(g("duplicate-key",`${c}/key`,`key "${u.key}" is already used by ${l.path} on the same path`,"Rename one of the fields, or move them to route branches that never meet"));}),n}function rt(e){var r,s;let{definition:t}=e;return [...!!((r=t.fields)!=null&&r.length)&&!!((s=t.steps)!=null&&s.length)?[g("fields-and-steps","",'the definition has both "fields" and "steps"','Move the top-level fields into a step, or remove "steps"')]:[],...en(e),...tn(e)]}var nn=Object.freeze({required:"This field is required",minLength:"Must be at least {min} characters",maxLength:"Must be at most {max} characters",minItems:"Must be at least {min} items",maxItems:"Must be at most {max} items",min:"Must be at least {min}",max:"Must be at most {max}",pattern:"Invalid format",matchField:"Fields must match",email:"Enter a valid email",number:"Enter a number",date:"Enter a valid date",datetime:"Enter a valid date and time",option:"Select one of the available options",options:"Must be a list of available options",boolean:"Must be true or false",string:"Must be text",file:"Must be a file reference",value:"Invalid value"});function st(e,t){return e.replace(/\{(\w+)\}/g,(n,r)=>Object.prototype.hasOwnProperty.call(t,r)?String(t[r]):n)}function rn(e,t,n,r,...s){for(let i of r){let o=typeof i=="function"?i(t,n,...s):i==null?void 0:i[t];if(o&&typeof o=="string")return typeof i=="function"?o:st(o,n)}return st(e[t],n)}function M(...e){return (t,n,r)=>rn(nn,t,n,e,r)}var _=["checkbox","switch"],Q=["text","email","phone","number","password","select","autocomplete","multiselect","checkbox","radio","switch","file","date","datetime","textarea"],Z=1e4,sn=254,on=1e3,it=/^[^\s@]+@[^\s@.]+(?:\.[^\s@.]+)+$/,an=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?$/,ot="\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])",un=new RegExp(`^${ot}$`),ln=new RegExp(`^${ot}T(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d{1,3})?)?(?:Z|[+-](?:[01]\\d|2[0-3]):[0-5]\\d)?$`),cn=new Set(["text","phone","password","textarea","autocomplete"]),fn=new Map([["email",[it,"email",sn]],["date",[un,"date",Z]],["datetime",[ln,"datetime",Z]]]);function dn(e){let[t,n,r]=e.split(/\D/).map(Number);return r<=new Date(new Date(0).setUTCFullYear(t,n,0)).getUTCDate()}var pn=new Set(["password","number","select","radio","file"]);function D(e,t){return typeof t=="string"&&!pn.has(e.type)?t.trim():t}function at(e,t){let n=D(e,t);if(e.type!=="number"||typeof n!="string"||!an.test(n))return n;let r=Number(n);return Number.isFinite(r)?r:n}var ut=e=>e.optionsFrom?void 0:e.options;function lt(e,t){let n=ut(e);return !n||n.some(r=>r.value===t)}function ct(e,t,n){var s,i,o,a;let r=Math.min(Z,(i=(s=e.validation)==null?void 0:s.maxLength)!=null?i:Z);return t.length<=r?null:(a=(o=e.validation)==null?void 0:o.maxLengthMessage)!=null?a:n("maxLength",{max:r})}function mn(e,t,n){var s,i;return Array.isArray(t)?t.length>((i=(s=ut(e))==null?void 0:s.length)!=null?i:on)?n("option"):t.every(o=>typeof o=="string"&&o.length<=Z&<(e,o))?null:n("option"):n("options")}function ie(e,t,n,r){return typeof t=="string"?ct(e,t,r):r(n)}function gn(e,t,[n,r,s],i){var o;return typeof t!="string"?i(r):(o=ct(e,t,i))!=null?o:t.length<=s&&n.test(t)&&(n===it||dn(t))?null:i(r)}function yn(e,t,n){return typeof t=="boolean"||typeof t=="number"&&Number.isFinite(t)?null:ie(e,t,"value",n)}function hn(e,t){return t==null||t===""||e.type==="multiselect"&&Array.isArray(t)&&!t.length}function Me(e,t,n=M()){var i;if(hn(e,t))return null;let r=(o,a={})=>n(o,a,e);if(_.includes(e.type))return typeof t=="boolean"?null:r("boolean");if(e.type==="number")return typeof t=="number"&&Number.isFinite(t)?null:r("number");if(e.type==="multiselect")return mn(e,t,r);if(e.type==="file")return ie(e,t,"file",r);let s=fn.get(e.type);return s?gn(e,t,s,r):e.type==="select"||e.type==="radio"?(i=ie(e,t,"option",r))!=null?i:lt(e,t)?null:r("option"):cn.has(e.type)?ie(e,t,"string",r):yn(e,t,r)}function ft(e,t,n){return e.type==="file"||!Q.includes(e.type)?null:Me(e,t,n)}var bn=["in","notIn"],Fn=["gt","gte","lt","lte"],vn=["text","email","phone","password","textarea","date","datetime","select","radio","autocomplete"];function kn(e){return e.type==="number"?"number":_.includes(e.type)?"boolean":vn.includes(e.type)?"string":void 0}function Sn(e,t,n,r){var l;let s=(d,f)=>[E("condition-value-mismatch",r,d,f)];if(t==="notEmpty")return [];if(Fn.includes(t))return e.type!=="multiselect"&&!_.includes(e.type)?[]:s(`"${e.key}" is a ${e.type} field, so "${t}" never matches it`,"Compare a number, text, radio or select field");if(e.type==="multiselect"){let d=t==="neq"||t==="notIn"?"always":"never";return s(`"${e.key}" holds a list of values, so "${t}" ${d} matches it`,"Use notEmpty, or a select or radio field")}let i=bn.includes(t)&&Array.isArray(n)?n:[n],o=kn(e),a=o&&i.find(d=>typeof d!==o);if(o&&a!==void 0)return s(`${JSON.stringify(a)} is a ${typeof a}, but "${e.key}" holds a ${o}`,`Use a ${o} value`);let u=o==="string"&&!e.optionsFrom&&((l=e.options)!=null&&l.length)?e.options.map(d=>d.value):null,c=u&&i.find(d=>!u.includes(d));return u&&c!==void 0?s(`${JSON.stringify(c)} is not an option of "${e.key}"`,N(u)):[]}function wn(e,t){let{condition:n,path:r}=t;if(xe(e,t).length)return [];let s=z.find(i=>i in n);return Sn(e.keys.get(n.field).field,s,n[s],`${r}/${s}`)}function xn({field:e,path:t}){if(!["select","radio","multiselect"].includes(e.type))return [];if(!Array.isArray(e.options))return e.optionsFrom?[]:[E("missing-options",`${t}/options`,`the ${e.type} field "${e.key}" has no options`,'Add "options" or "optionsFrom"')];let n=e.options.map(i=>i.value),r=e.type==="multiselect"&&Array.isArray(e.defaultValue)?e.defaultValue:[e.defaultValue],s=e.defaultValue===void 0||!n.length||e.optionsFrom?void 0:r.find(i=>!n.includes(i));return s===void 0?[]:[E("default-not-in-options",`${t}/defaultValue`,`${JSON.stringify(s)} is not an option of "${e.key}"`,N(n))]}function En(e,{field:t,path:n}){var d;let r=(d=t.validation)!=null?d:{},s=(f,y,h)=>E("rule-not-applicable",`${n}/validation/${f}`,y,h),i=Q.includes(t.type),o=t.type==="number",a=i&&!o?["min","max"].filter(f=>r[f]!==void 0):[],u=i&&["number","checkbox","switch"].includes(t.type)?["minLength","maxLength"].filter(f=>r[f]!==void 0):[],c=[...a.map(f=>s(f,`"${f}" applies to number fields only`,`Use ${f}Length to limit text length`)),...u.map(f=>s(f,`"${f}" does not apply to ${t.type} fields`,o?"Use min and max for numbers":`Remove ${f}`))],{validators:l}=e;return r.validator!==void 0&&l&&!Object.prototype.hasOwnProperty.call(l,r.validator)&&c.push(E("unknown-validator",`${n}/validation/validator`,`the validator "${r.validator}" is not registered`,'Pass it in the "validators" option')),c}function In(e,t){var i;let{field:n,path:r}=t,s=Q.includes(n.type)?void 0:we(n.type,Q);return [...s===void 0?[]:[E("unknown-field-type",`${r}/type`,`"${n.type}" is not a built-in field type`,`Use "${s}", or register a component for "${n.type}"`)],...xn(t),...En(e,t),...((i=n.optionsDependsOn)!=null?i:[]).flatMap((o,a)=>e.keys.has(o)?[]:[E("unknown-field",`${r}/optionsDependsOn/${a}`,`"${o}" is not a field key`,Y(o,e.keyList))])]}function Cn({definition:e}){var n;let t=(n=e.steps)!=null?n:[];return t.flatMap((r,s)=>{var a,u,c;let i=[],o=new Set(((a=r.routes)!=null?a:[]).map(l=>l.to).filter(l=>l!==null));for(let l of o){let d=t.findIndex(h=>h.id===l),f=t[d+1],y=(c=(u=t[d])==null?void 0:u.routes)==null?void 0:c.some(h=>{var v,x;return !((v=h.show)!=null&&v.length)&&!((x=h.showAny)!=null&&x.length)});!f||!o.has(f.id)||y||i.push(E("route-fallthrough",`/steps/${d}`,`branch "${l}" from "${r.id}" continues into the sibling branch "${f.id}"`,`Add an unconditional route on "${l}" to the step where the branches meet`));}return r.skip&&(r.next===false||!t[1])&&i.push(E("skip-unreachable",`/steps/${s}/skip`,`step "${r.id}" has "skip" but no Continue button or later step`,'Remove "skip", or remove "next": false')),i})}function dt(e){return [...typeof e.definition.title=="string"?[]:[E("missing-property","/title",'"title" must be a string',"Add a title for host UI and editors")],...e.conditions.flatMap(t=>wn(e,t)),...e.entries.flatMap(t=>In(e,t)),...Cn(e)]}function De(e,{validators:t,suggest:n,warnings:r}={}){let s=Qe(e);if(s.length)return s;let i=He(e,t,n);return [...et(e),...rt(i),...Ge(i),...Ye(i),...ze(i),...r?r(i):[]]}function pt(e){return De(e)}function oe(e,t={}){return De(e,{validators:t.validators,suggest:Y,warnings:dt})}function ae(e,t){let n=De(e,{suggest:Y});if(n.length)throw new R(n);return e}function ue(e){var t,n;return [...(t=e.show)!=null?t:[],...(n=e.showAny)!=null?n:[]].map(r=>r.field)}function le(e){var t,n;return (t=e.steps)!=null&&t.length?e.steps.flatMap(r=>r.fields):(n=e.fields)!=null?n:[]}function q(e,t){let n={};for(let s of e)s.defaultValue!==void 0&&(n[s.key]=s.defaultValue);let r=t!=null?t:{};for(let s of Object.keys(r))s!=="__proto__"&&(n[s]=r[s]);return n}function A(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]);return new Set([...n].filter(r=>!Object.is(e[r],t[r])))}var Ve=class extends Error{constructor(n,r){super(`The action completed, but ${n} failed: ${r instanceof Error?r.message:String(r)}`);this.phase=n;this.committed=true;this.name="FormLifecycleError",this.cause=r;}};async function ce(e,t){try{await t();}catch(n){throw new Ve(e,n)}}function mt(e){return e.visibleSteps.map(t=>t.id).join(`
|
|
5
|
-
`)}function ee(e,t){let n=mt(e),r=Object.keys(t).filter(s=>t[s]!==void 0).map(s=>[s,e.values[s]]);return ()=>mt(e)!==n||r.some(([s,i])=>!Object.is(e.values[s],i))}function I(e,t){var r,s;let n=i=>Se(i,t);return ((r=e.show)!=null?r:[]).every(n)&&(!((s=e.showAny)!=null&&s.length)||e.showAny.some(n))}function Rn(e,t){return W(e)||e===false&&_.includes(t.type)}function gt(e,t,n,r){var o,a;let s=n[`min${t}`],i=n[`max${t}`];if(s!==void 0&&e<s)return (o=n[`min${t}Message`])!=null?o:r("min",{min:s});if(i!==void 0&&e>i)return (a=n[`max${t}Message`])!=null?a:r("max",{max:i})}function $n(e,t,n){var r;if(t.pattern!==void 0)try{return new RegExp(t.pattern).test(String(e))?void 0:(r=t.patternMessage)!=null?r:n()}catch(s){return}}function Mn(e,t,n,r){if(typeof e=="number")return gt(e,"",t,(i,o)=>r(i,o,n));if(typeof e!="string"&&!Array.isArray(e))return;let s=Array.isArray(e)?"Items":"Length";return gt(e.length,"Length",t,(i,o)=>r(`${i}${s}`,o,n))}function U(e,t,n,r,s){var l,d,f,y,h;let i=D(e,t),o=(l=e.validation)!=null?l:{},a=M(s),u=()=>{var v;return (v=o.matchFieldMessage)!=null?v:a("matchField",{},e)};if(Rn(i,e))return o.required?typeof o.required=="string"?o.required:a("required",{},e):o.matchField!==void 0&&!W(n[o.matchField])?u():null;let c=ft(e,i,a);return c||((h=(f=(d=Mn(i,o,e,a))!=null?d:$n(i,o,()=>a("pattern",{},e)))!=null?f:o.matchField!==void 0&&i!==n[o.matchField]?u():void 0)!=null?h:o.validator?(y=r==null?void 0:r[o.validator])==null?void 0:y.call(r,i,n):void 0)||null}function L(e,t,n,r){return fe(e.fields,t,n,r)}function fe(e,t,n,r){let s={};for(let i of e){if(!I(i,t))continue;let o=U(i,t[i.key],t,n,r);o&&(s[i.key]=o);}return s}function T(e,t,n=false,r=[]){let{state:s}=e,i=e.errors,o={},a=[...r];for(let[c,l]of Object.entries(t))e.visibility.activeField(c,e.values)?o[c]=l:a.push(l);n&&(s.serverErrors=o,s.serverFormErrors=a),s.errors=m(m({},s.serverErrors),o),s.topLevelErrors=n?a:[...s.serverFormErrors,...a];let u=n&&yt(e,o);e.notify({fieldKeys:A(i,e.errors),structureChanged:u});}function yt(e,t){let n=e.visibleSteps.findIndex(r=>r.fields.some(s=>t[s.key]!==void 0));return n<0||n===e.currentStepIndex?false:(e.state.currentStepIndex=n,true)}function de(e,t,n=false){n&&delete e.state.serverErrors[t];let r=e.state.serverErrors[t];r===void 0?delete e.errors[t]:e.errors[t]=r;}function B(e,t){for(let n of t)delete e.state.serverErrors[n];}function ht(e,t){var r;let n=[];for(let s of e.visibility.allFields)((r=s.validation)==null?void 0:r.matchField)!==t||e.errors[s.key]===void 0||U(s,e.values[s.key],j(e),e.validators,e.messages)||(de(e,s.key),n.push(s.key));return n}function pe(e){let t=new Set(e.visibleSteps.flatMap(r=>r.fields.map(s=>s.key))),n=Object.keys(e.errors).filter(r=>!t.has(r));for(let r of n)delete e.errors[r];return B(e,n),n}function j(e){return G(e)}function Dn(e,t){for(let n of [...e.skipped.values()].flat())delete t[n];return t}function te(e,t=false){var i;let n=e.errors,r={};if(e.isMultiStep)for(let o of e.visibleSteps)e.skipped.has(o.id)||Object.assign(r,L(o,j(e),e.validators,e.messages));else Object.assign(r,fe((i=e.definition.fields)!=null?i:[],j(e),e.validators,e.messages));e.state.errors=m(m({},e.state.serverErrors),r);let s=t&&yt(e,r);return e.notify({fieldKeys:A(n,r),structureChanged:s}),r}function bt(e,t){let n=e.visibility.activeField(t,e.values);if(!n)return null;let r=e.errors[t],s=U(n,e.values[t],j(e),e.validators,e.messages);s?e.errors[t]=s:de(e,t,true);let i=Object.is(r,e.errors[t])?[]:[t];return e.notify({fieldKeys:i}),s}function G(e){let t=m({},e.visibility.conditionValues(e.values));for(let n of Object.keys(t)){let r=e.visibility.activeField(n,e.values);r&&(t[n]=D(r,t[n]));}return Dn(e,t)}function Ft(e,t){let n=e.values,r=e.errors,s=Object.keys(e.fieldLoading);e.validationEpoch++,e.operationEpoch++,e.state.submitting=false,e.state.values=q(e.visibility.allFields,t),e.state.errors={},e.state.topLevelErrors=[],e.state.serverErrors={},e.state.serverFormErrors=[],e.state.fieldLoading={},e.state.stepValidating=false,e.state.currentStepIndex=0,e.skipped.clear(),e.visibility.reconcileHidden(e.values,e.errors);let i=A(n,e.values),o=new Set([...i,...A(r,e.errors),...s]);e.notify({fieldKeys:o,structureChanged:true,valuesChanged:i.size>0});}function Oe(e,t){var o,a;let n=(o=e.steps)!=null?o:[],r=new Map(n.map((u,c)=>[u.id,c])),s=[],i={};for(let u=0;u<n.length;){let c=n[u];if(!I(c,i)){u++;continue}s.push(c),Object.assign(i,kt(c,t,i));let l=(a=c.routes)==null?void 0:a.find(d=>{var f;return I(d,i)&&(d.to===null||((f=r.get(d.to))!=null?f:-1)>u&&I(n[r.get(d.to)],i))});if((l==null?void 0:l.to)===null)break;u=l?r.get(l.to):u+1;}return s}function vt(e,t,n){var o;let r=(o=e[n])!=null?o:e[e.length-1],s=t.findIndex(a=>a.id===(r==null?void 0:r.id));if(s!==-1)return s;let i=new Map(t.map((a,u)=>[a.id,u]));for(let a=Math.min(n-1,e.length-1);a>=0;a--){let u=i.get(e[a].id);if(u!==void 0)return u}return 0}function kt(e,t,n){let r=m({},n);for(let i of e.fields)r[i.key]=D(i,t[i.key]);let s={};for(let i of e.fields)I(i,r)&&t[i.key]!==void 0&&(s[i.key]=D(i,t[i.key]));return s}function St(e){let t=null,n=[],r={},s=i=>{var u,c;if(t===i)return;t=i,n=Oe(e,i);let o={},a=(u=e.steps)!=null&&u.length?n:[{fields:(c=e.fields)!=null?c:[]}];for(let l of a)Object.assign(o,kt(l,i,o));r=o;};return {invalidate(){t=null;},steps(i){return s(i),n},values(i){return s(i),r}}}function wt(e){var r,s;let t=(s=(r=e.currentStep)==null?void 0:r.fields)!=null?s:[],n=m({},e.values);for(let{key:i}of t)delete n[i];return Object.assign(n,q(t))}function Ae(e){return Oe(e.definition,wt(e))[e.currentStepIndex+1]}function me(e){let t=e.currentStep,n=t.fields.map(({key:s})=>s);e.state.values=wt(e);for(let s of n)delete e.errors[s];B(e,n),e.skipped.set(t.id,n),B(e,e.visibility.reconcileHidden(e.values,e.errors)),e.visibility.markChanged(true,true);let r=pe(e);return e.notify({fieldKeys:[...n,...r],structureChanged:true,valuesChanged:true}),n}function ge(e){let t=e.currentStep;t&&e.skipped.delete(t.id);}function xt(e,t){return e.state.currentStepIndex=t,e.notify({structureChanged:true}),me(e)}function Le(e){return !!e&&Object.getPrototypeOf(e)===Object.prototype&&e.ok===false}function Vn(e,t,n){let r={},s=typeof t.errors=="object"&&t.errors?t.errors:{};for(let[o,a]of Object.entries(s)){let u=Array.isArray(a)?a.join(" "):a;typeof u=="string"&&Object.is(e.values[o],n[o])&&(r[o]=u);}let i=Array.isArray(t.formErrors)?t.formErrors.filter(o=>typeof o=="string"):[];T(e,r,true,i);}async function ye(e,t,n=false){if(e.submitting||e.stepValidating)return false;n||ge(e);let r=m({},e.lifecycle),s=false,i=e.validationEpoch,o=++e.operationEpoch,a=G(e),u=ee(e,a),c=()=>i!==e.validationEpoch||o!==e.operationEpoch||u();e.state.submitting=true,e.notify();try{if(c()||Object.keys(te(e,!0)).length>0||c())return !1;if(r.onBeforeSubmit){let v=await r.onBeforeSubmit(a);if(c()||v===!1)return !1}if(c())return !1;if(r.onBeforeSubmit){if(Object.keys(te(e,!0)).length>0||c())return !1;a=G(e);}s=!0;let l=[...e.skipped.keys()],d=m({},e.values),f=e.state.serverErrors,y=await t(a,[...l]),h=Le(y);return o!==e.operationEpoch?!h:h?(Vn(e,y,d),!1):(e.state.serverErrors===f&&T(e,{},!0),await ce("afterSubmit",()=>{var v;return (v=r.onAfterSubmit)==null?void 0:v.call(r,a,l)}),!0)}catch(l){if(!s&&c())return false;throw l}finally{o===e.operationEpoch&&(e.state.submitting=false,e.notify());}}function Et(e){let t=e.currentStep;if(!t)return true;let n=L(t,j(e),e.validators,e.messages);if(Object.keys(n).length===0)return false;let r=e.errors;return e.state.errors=m(m({},r),n),e.notify({fieldKeys:A(r,e.errors)}),true}function It(e,t){e.validationEpoch++,e.state.currentStepIndex=t,e.notify({structureChanged:true});}async function Ct(e,t){var l;if(!e.isMultiStep||e.stepValidating||e.submitting||!((l=e.currentStep)!=null&&l.skip))return false;if(Ae(e))return he(e,"next","skip");let n=e.currentStep;if(!t||!n)return false;let r=e.values,s=m({},e.errors),i=m({},e.state.serverErrors),o,a=me(e),u=e.values,c=ee(e,m({},u));try{return await ye(e,async(d,f)=>{let y=e.operationEpoch,h=await t(d,f),v=Le(h);return (!v||y===e.operationEpoch)&&(o=v),h},!0)}finally{o!==false&&e.values===u&&!c()&&(e.state.values=r,o===void 0&&(e.state.serverErrors=i),e.state.errors=m(m({},o?{}:s),e.errors),e.skipped.delete(n.id),e.notify({fieldKeys:a,structureChanged:true,valuesChanged:true}));}}async function he(e,t,n=t){let r=n==="skip";if(!e.isMultiStep||e.stepValidating||e.submitting||!r&&(t==="next"?e.isLastStep:e.isFirstStep))return false;let s=e.currentStep,i=t==="next"&&!r;if(i&&ge(e),i&&Et(e))return false;let o=m({},e.lifecycle),a=e.onStepValidate,u=false,l=e.currentStepIndex+(t==="next"?1:-1),d=r?Ae(e):e.visibleSteps[l];if(!d)return false;let f={fromStepId:s.id,toStepId:d.id,reason:n,values:m({},j(e))},y=e.validationEpoch,h=++e.operationEpoch,v=ee(e,f.values),x=()=>{var k;return y!==e.validationEpoch||h!==e.operationEpoch||((k=e.currentStep)==null?void 0:k.id)!==s.id||v()};e.state.stepValidating=true,e.notify();try{if(x())return !1;if(i&&a){let k=await a(s.id,f.values);if(x())return !1;if(k&&Object.keys(k).length>0)return T(e,k),!1}if(o.onBeforeStepChange){let k=await o.onBeforeStepChange(f);if(x()||k===!1)return !1}return x()||i&&Et(e)?!1:(u=!0,r&&me(e),It(e,l),await ce("afterStepChange",()=>{var k;return (k=o.onAfterStepChange)==null?void 0:k.call(o,f)}),!0)}catch(k){if(!u&&x())return false;throw k}finally{h===e.operationEpoch&&(e.state.stepValidating=false,e.notify());}}function Rt(e,t){if(!e.isMultiStep)return;let n=e.visibility.findStepIndex(t,e.values,e.currentStepIndex);n===e.currentStepIndex?e.notify():n!==null&&It(e,n);}function $t(e,t){return e.add(t),()=>e.delete(t)}function Mt(){let e=0,t=0,n=new Set,r=new Set,s=new Map,i=new Map;return {subscribe:o=>$t(n,o),getSnapshot:()=>e,subscribeStructure:o=>$t(r,o),getStructureSnapshot:()=>t,getFieldSnapshot:o=>{var a;return (a=s.get(o))!=null?a:0},subscribeField(o,a){var c;let u=(c=i.get(o))!=null?c:new Set;return u.add(a),i.set(o,u),()=>{u.delete(a),u.size===0&&i.delete(o);}},notify({fieldKeys:o=[],structureChanged:a=false}={}){var u,c;for(let l of new Set(o)){s.set(l,((u=s.get(l))!=null?u:0)+1);for(let d of (c=i.get(l))!=null?c:[])d();}if(a){t++;for(let l of r)l();}e++;for(let l of n)l();}}}function On(e,t){try{if(process.env.NODE_ENV!=="production")return oe(e,{validators:t})}catch(n){if(!(n instanceof ReferenceError))throw n}}function Dt(e,t,n){var o,a;let r=(o=On(e,n))!=null?o:pt(e),s=r.filter(Be);if(s.length)throw new R(s);let i=(a=t.onWarning)!=null?a:(u=>console.warn(`[formhaus] ${u.message}`));for(let u of r)i(u);}function je(e,t){var n;for(let r of ue(e)){let s=(n=t.get(r))!=null?n:new Set;s.add(e),t.set(r,s);}}function be(e){var v,x,k;let t=le(e),n=new Map,r=new Set,s=St(e),i=new Map,o=new Map,a=new Map,u=true,c=true,l={visibleSteps:[],currentStep:null,visibleFields:[],canGoNext:false};for(let p of t)n.set(p.key,[...(v=n.get(p.key))!=null?v:[],p]),je(p,i);for(let p of (x=e.steps)!=null?x:[]){for(let b of p.fields)a.set(b,p);je(p,o);for(let b of (k=p.routes)!=null?k:[])for(let F of ue(b))r.add(F);}let d=()=>{var p;return ((p=e.steps)!=null?p:[]).length>0},f=(p,b)=>I(p,s.values(b)),y=(p,b)=>{let F=a.get(p);return !F||s.steps(b).includes(F)};function h(p,b){var C,V,H;if(!u)return l;if(u=false,!d())return l.visibleSteps=[],l.currentStep=null,l.visibleFields=((C=e.fields)!=null?C:[]).filter(P=>f(P,p)),l;let F=l.visibleSteps=s.steps(p),S=l.currentStep=(H=(V=F[b])!=null?V:F[F.length-1])!=null?H:null;return l.visibleFields=S?S.fields.filter(P=>f(P,p)):[],l}return {allFields:t,conditionValues:s.values,state:h,markChanged(p,b){(p||b)&&s.invalidate(),p&&(u=true),(p||b)&&(c=true);},getCanGoNext(p,b,F){let S=h(p,b).currentStep;if(!c)return l.canGoNext;c=false;let C=S?L(S,s.values(p),F):{};return l.canGoNext=d()&&Object.keys(C).length===0},findStepIndex(p,b,F){let S=h(b,F).visibleSteps.findIndex(C=>C.fields.some(V=>V.key===p));return S===-1?null:S},affectsStructure(p,b){return r.has(p)||i.has(p)||o.has(p)||b.size>0},activeField(p,b){var F;return (F=n.get(p))==null?void 0:F.find(S=>y(S,b)&&f(S,b))},reconcileHidden(p,b){var P,Pe;s.invalidate();let F=[...new Set([...i.keys(),...o.keys()])],S=new Set(F),C=new Set,V=w=>p[w]!==void 0||b[w]!==void 0,H=w=>{delete p[w],delete b[w],s.invalidate(),C.add(w),!S.has(w)&&(S.add(w),F.push(w));};for(let w=0;w<F.length;w++){let ve=F[w];S.delete(ve);for(let O of (P=i.get(ve))!=null?P:[])y(O,p)&&!f(O,p)&&V(O.key)&&H(O.key);for(let O of (Pe=o.get(ve))!=null?Pe:[])if(!f(O,p))for(let Ne of O.fields)V(Ne.key)&&H(Ne.key);}return C}}}var Fe=class{constructor(t,n,r){this.definition=t;this.skipped=new Map;this.validationEpoch=0;this.operationEpoch=0;this.subscriptions=Mt();var i;this.lifecycle=r!=null?r:{},this.validators=(i=r==null?void 0:r.validators)!=null?i:{},Dt(t,this.lifecycle,this.validators),this.messages=M(r==null?void 0:r.messages,t.messages),this.visibility=be(t);let s=q(this.visibility.allFields,n);this.state={values:s,errors:{},topLevelErrors:[],serverErrors:{},serverFormErrors:[],currentStepIndex:0,fieldLoading:{},stepValidating:false,submitting:false},this.visibility.reconcileHidden(s,this.state.errors);}get onStepValidate(){return this.lifecycle.onStepValidate}get values(){return this.state.values}get errors(){return this.state.errors}get topLevelErrors(){return this.state.topLevelErrors}get currentStepIndex(){return this.state.currentStepIndex}get fieldLoading(){return this.state.fieldLoading}get stepValidating(){return this.state.stepValidating}get submitting(){return this.state.submitting}get isMultiStep(){var t;return ((t=this.definition.steps)!=null?t:[]).length>0}get visibleSteps(){return this.view.visibleSteps}get currentStep(){return this.view.currentStep}get visibleFields(){return this.view.visibleFields}get isFirstStep(){return this.currentStepIndex===0}get isLastStep(){return this.currentStepIndex>=this.visibleSteps.length-1}get canGoNext(){return this.visibility.getCanGoNext(this.state.values,this.currentStepIndex,this.validators)}get stepErrors(){let t={};for(let n of this.visibleSteps){let r=n.fields.map(s=>s.key).filter(s=>this.errors[s]!==void 0);r.length>0&&(t[n.id]=r);}return t}get progress(){let t=this.visibleSteps.length;return {current:Math.min(this.currentStepIndex+1,t),total:t}}subscribe(t){return this.subscriptions.subscribe(t)}getSnapshot(){return this.subscriptions.getSnapshot()}subscribeField(t,n){return this.subscriptions.subscribeField(t,n)}getFieldSnapshot(t){return this.subscriptions.getFieldSnapshot(t)}subscribeStructure(t){return this.subscriptions.subscribeStructure(t)}getStructureSnapshot(){return this.subscriptions.getStructureSnapshot()}setValue(t,n){let{values:r,errors:s}=this.state,i=this.isMultiStep?this.visibleSteps:null,o=!Object.is(r[t],n),a=s[t];r[t]=n,de(this.internals,t,o);for(let[y,h]of this.skipped)o&&h.includes(t)&&this.skipped.delete(y);let u=this.visibility.reconcileHidden(r,s);B(this.internals,u);let c=ht(this.internals,t),l=new Set([...u,...c]);(o||a!==s[t])&&l.add(t);let d=o||u.size>0,f=d&&this.visibility.affectsStructure(t,u);if(i&&f){this.visibility.markChanged(true,true),this.state.currentStepIndex=vt(i,this.visibleSteps,this.currentStepIndex);for(let y of pe(this.internals))l.add(y);}this.notify({fieldKeys:l,structureChanged:f,valuesChanged:d});}setErrors(t){T(this.internals,t,true);}setFieldLoading(t,n){let r=this.state.fieldLoading[t]===true;n?this.state.fieldLoading[t]=true:delete this.state.fieldLoading[t],this.notify({fieldKeys:r===n?[]:[t]});}cancelPendingActions(){this.validationEpoch++,this.operationEpoch++,this.state.stepValidating=false,this.state.submitting=false,this.notify();}next(){return he(this.internals,"next")}back(){return he(this.internals,"back")}skip(t){return Ct(this.internals,t)}submit(t){return ye(this.internals,t)}isStepSkipped(t){return this.skipped.has(t)}validate(){return te(this.internals)}validateField(t){return bt(this.internals,t)}getSubmitValues(){return G(this.internals)}goToStepWithField(t){Rt(this.internals,t);}reset(t){Ft(this.internals,t);}get view(){return this.visibility.state(this.state.values,this.currentStepIndex)}get internals(){return this}notify(t={}){this.visibility.markChanged(!!t.structureChanged,!!t.valuesChanged),this.subscriptions.notify(t);}};var An='Pass the values object as the second argument, not the request body with "values" and "skippedSteps".',Ln=()=>null,Te=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);function jn(e,t,n){var a;let r=n!==null&&typeof n=="object"&&!Array.isArray(n)?n:{},s=be(e),i=[...new Set(t.map(({key:u})=>u))].filter(u=>Te(r,u)),o={values:{},active:new Map};for(let u=0;u<=t.length;u++){let c={};for(let f of i)c[f]=at((a=o.active.get(f))!=null?a:t.find(y=>y.key===f),r[f]);let l=new Map;for(let f of i){let y=s.activeField(f,c);y&&l.set(f,y);}let d=i.every(f=>l.get(f)===o.active.get(f));if(o={values:c,active:l},d)break}return o}function Tn({values:e,active:t},n){let r=new Map;for(let[s,i]of t){let o=Me(i,e[s],n);o&&r.set(s,o);}return r}function Pn(e,t){var s;let n=i=>i.map(o=>t.has(o.key)?ke(m({},o),{validation:void 0}):o),r=(s=e.steps)==null?void 0:s.map(i=>ke(m({},i),{fields:n(i.fields)}));return m(m(m({},e),e.fields&&{fields:n(e.fields)}),r&&{steps:r})}function Nn(e,t={}){let n={};for(let{validation:r}of e)r!=null&&r.validator&&(n[r.validator]=Ln);return m(m({},n),t)}function Kn(e,t){return t===null||typeof t!="object"||!Te(t,"values")?false:!e.some(n=>n.key==="values"||n.key==="skippedSteps")}function _n(e,t){if(!Array.isArray(t))return;let n=new Set(t);for(let r=0;r<e.visibleSteps.length;r++){let s=e.visibleSteps[r];s.skip&&n.has(s.id)&&xt(e,r);}}function qn(e,t,n={}){ae(e);let r=le(e),s=jn(e,r,t),i=M(n.messages,e.messages),o=Tn(s,i),a={validators:Nn(r,n.validators),messages:i,onWarning:()=>{}},u=new Fe(Pn(e,o),s.values,a);_n(u,n.skippedSteps);let c=u.validate(),l=u.getSubmitValues();for(let[d,f]of o)Te(l,d)&&(c[d]=f);return Kn(r,t)&&(c.values=An),{values:l,errors:c}}exports.FormDefinitionError=R;exports.checkDefinition=oe;exports.parseDefinition=ae;exports.validateSubmission=qn;return exports;})({});//# sourceMappingURL=server.iife.js.map
|
|
4
|
+
`)}`),this.name="FormDefinitionError",this.issues=t;}};function Ue(e){return (t,n,r,s)=>m({code:t,severity:e,path:n,message:`${n||"/"}: ${r}.${s?` ${s}.`:""}`},s&&{hint:`${s}.`})}var h=Ue("error"),E=Ue("warning");function re(e){return e.replace(/~/g,"~0").replace(/\//g,"~1")}function Be(e){return e.severity==="error"}function K(e){if(e.length===1)return `Use ${JSON.stringify(e[0])}`;let t=e.slice(0,10).map(n=>JSON.stringify(n)).join(", ");return e.length>10?`Use one of: ${t}, ...`:`Use one of: ${t}`}function Kt(e,t){let n=Array.from({length:t.length+1},(r,s)=>s);for(let r=1;r<=e.length;r++){let s=[r];for(let i=1;i<=t.length;i++)s[i]=Math.min(n[i]+1,s[i-1]+1,n[i-1]+(e[r-1]===t[i-1]?0:1));n=s;}return n[t.length]}function xe(e,t){let n=e.toLowerCase();return t.find(r=>r!==e&&Kt(n,r.toLowerCase())<=(r.length>4?2:1))}function J(e,t){let n=xe(e,t);return n!==void 0?`Use ${JSON.stringify(n)}`:t.length?K(t):void 0}var X=qe;function _t({suggest:e},t,n){let r=Object.keys(t).filter(a=>a!=="field"),s=r.filter(a=>!X.includes(a)),i=s.map(a=>h("unknown-operator",`${n}/${re(a)}`,`"${a}" is not a condition operator`,e(a,[...X]))),o=r.length-s.length;if(o!==1&&!(o===0&&s.length)){let a=o?`the condition has ${o} operators`:"the condition has no operator";i.push(h("condition-operator-count",n,a,`Use exactly one of: ${X.join(", ")}`));}return i}function qt(e,{condition:t,path:n,owner:r,step:s,key:i}){let o=e.keys.get(t.field);if(!o){let c=e.keyList.filter(l=>l!==i);return [h("unknown-field",`${n}/field`,`"${t.field}" is not a field key`,e.suggest(t.field,c))]}if(s<0||r==="action")return [];let a=r==="step"?"this or a later step":"a later step";if(o.step<s||r!=="step"&&o.step===s)return [];let u=r==="step"?"earlier steps":"this or an earlier step";return [h("forward-reference",`${n}/field`,`"${t.field}" belongs to ${a}`,`${r==="route"?"Route":r==="step"?"Step":"Field"} conditions can use fields of ${u}`)]}function Ee(e,t){let{condition:n,path:r}=t;return typeof n.field!="string"?[h("missing-property",`${r}/field`,'the condition has no "field"',"Add the key of the field to test")]:[..._t(e,n,r),...qt(e,t)]}function Ge(e){return e.conditions.flatMap(t=>Ee(e,t))}function Ie(e,t,n,r,s,i){var o;for(let a of ["show","showAny"])((o=t[a])!=null?o:[]).forEach((u,c)=>e.push({condition:u,path:`${n}/${a}/${c}`,owner:r,step:s,key:i}));}function Ce(e,t,n,r){var s;(t?(s=t.disabled)!=null?s:[]:[]).forEach((i,o)=>e.push({condition:i,path:`${n}/disabled/${o}`,owner:"action",step:r}));}function He(e,t,n=()=>{}){var a,u;let r=(a=e.steps)!=null?a:[],s=r.length?r.flatMap((c,l)=>c.fields.map((d,f)=>({field:d,path:`/steps/${l}/fields/${f}`,step:l}))):((u=e.fields)!=null?u:[]).map((c,l)=>({field:c,path:`/fields/${l}`,step:-1})),i=new Map;for(let c of s)i.has(c.field.key)||i.set(c.field.key,c);let o=[];for(let c of s)Ie(o,c.field,c.path,"field",c.step,c.field.key);return r.forEach((c,l)=>{var d;Ie(o,c,`/steps/${l}`,"step",l),((d=c.routes)!=null?d:[]).forEach((f,g)=>Ie(o,f,`/steps/${l}/routes/${g}`,"route",l));for(let f of ["next","back","skip"])Ce(o,c[f],`/steps/${l}/${f}`,l);}),Ce(o,e.submit,"/submit",-1),Ce(o,e.cancel,"/cancel",-1),{definition:e,entries:s,keys:i,keyList:[...i.keys()],conditions:o,validators:t,suggest:n}}function We(e,t,n,r){let s=e[n],i=e[r];return s===void 0||i===void 0||s<=i?[]:[h("invalid-range",`${t}/validation/${n}`,`${n} (${s}) is greater than ${r} (${i})`,`Lower ${n} or raise ${r}`)]}function Ut(e,t){if(e===void 0)return [];try{return new RegExp(e),[]}catch(n){return [h("invalid-pattern",`${t}/validation/pattern`,`${JSON.stringify(e)} is not a valid regular expression`,"Fix the pattern or escape special characters with a backslash")]}}function Bt(e,{field:t,path:n}){let r=t.validation;if(!r)return [];let s=r.matchField;return [...We(r,n,"minLength","maxLength"),...We(r,n,"min","max"),...Ut(r.pattern,n),...s===void 0||e.keys.has(s)?[]:[h("unknown-field",`${n}/validation/matchField`,`"${s}" is not a field key`,e.suggest(s,e.keyList))]]}function Ye(e){return e.entries.flatMap(t=>Bt(e,t))}function Gt({definition:e,entries:t,keys:n}){var o;let r=new Map,s=(a,u)=>{var l;let c=u.filter(d=>n.has(d));if(c.length)for(let d of a)r.set(d,[...(l=r.get(d))!=null?l:[],...c]);},i=a=>{var u,c;return [...(u=a.show)!=null?u:[],...(c=a.showAny)!=null?c:[]].map(l=>l.field)};for(let{field:a}of t)s([a.key],i(a));for(let a of (o=e.steps)!=null?o:[])s(a.fields.map(u=>u.key),i(a));return r}function Ht(e){var r;let t=new Map,n=[];for(let s of e.keys()){if(t.has(s))continue;t.set(s,true);let i=[[s,0]];for(;i.length>0;){let o=i[i.length-1],a=(r=e.get(o[0]))==null?void 0:r[o[1]++];if(a===void 0)t.set(o[0],false),i.pop();else if(t.get(a)){let u=i.map(([c])=>c);n.push([...u.slice(u.indexOf(a)),a]);}else t.has(a)||(t.set(a,true),i.push([a,0]));}}return n}function Wt(e){return Ht(Gt(e)).map(t=>h("condition-cycle",e.keys.get(t[0]).path,`show conditions form a cycle: ${t.join(" -> ")}`,"Remove one of the conditions in the cycle"))}function ze(e){return Wt(e)}var Je="1.0";function Xe({formatVersion:e}){if(e===void 0)return [];let t=typeof e=="string"&&/^[1-9]\d*(\.\d+)?$/.test(e);return t&&parseInt(e)<=parseInt(Je)?[]:[t?h("unsupported-format-version","/formatVersion",`format ${e} is not supported`,"Upgrade @formhaus/core"):h("invalid-type","/formatVersion","must be a version string",`Use "${Je}"`)]}var Q=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),Yt={string:[e=>typeof e=="string","a string"],number:[e=>typeof e=="number"&&Number.isFinite(e),"a number"],boolean:[e=>typeof e=="boolean","true or false"],requirement:[e=>["boolean","string"].includes(typeof e),"true, false or a message string"],scalar:[e=>["string","number","boolean"].includes(typeof e),"a string, number or boolean"],list:[e=>Array.isArray(e)&&e.every(t=>["string","number"].includes(typeof t)),"an array of strings or numbers"]};function _(e,t,n){return Object.entries(t).flatMap(([r,s])=>{let[i,o]=Yt[s];return e[r]===void 0||i(e[r])?[]:[h("invalid-type",`${n}/${re(r)}`,`"${r}" must be ${o}`)]})}function M(e,t,n,r,s=false){return e==null&&!s?[]:Array.isArray(e)?e.flatMap((i,o)=>Q(i)?r(i,`${t}/${o}`):[h("invalid-type",`${t}/${o}`,`must be ${n}`)]):[h("invalid-type",t,"must be an array",s?"Use [] when there is nothing to list":void 0)]}function Z(e,t,n){return typeof e[t]=="string"?[]:[h("missing-property",`${n}/${t}`,`"${t}" must be a string`)]}var Re=(e,t)=>_(e,{field:"string",eq:"scalar",neq:"scalar",in:"list",notIn:"list",notEmpty:"boolean",gt:"number",gte:"number",lt:"number",lte:"number"},t);function Me(e,t){return [...M(e.show,`${t}/show`,"a condition object",Re),...M(e.showAny,`${t}/showAny`,"a condition object",Re)]}function $e(e,t){return Q(e)?[..._(e,{label:"string"},t),...M(e.disabled,`${t}/disabled`,"a condition object",Re)]:[]}var zt=(e,t)=>[...Z(e,"value",t),..._(e,{label:"string"},t)],Jt={required:"requirement",minLength:"number",maxLength:"number",min:"number",max:"number",pattern:"string",matchField:"string",validator:"string",minLengthMessage:"string",maxLengthMessage:"string",minMessage:"string",maxMessage:"string",patternMessage:"string",matchFieldMessage:"string"};function Xt(e,t){return e===void 0?[]:Q(e)?_(e,Jt,t):[h("invalid-type",t,"must be an object of validation rules")]}function Zt(e,t){return e===void 0||Array.isArray(e)&&e.every(r=>typeof r=="string")?[]:[h("invalid-type",t,"must be an array of field keys")]}var Ze=(e,t)=>[...Z(e,"key",t),...Z(e,"type",t),..._(e,{label:"string",placeholder:"string",helperText:"string"},t),...Me(e,t),...M(e.options,`${t}/options`,"an option object",zt),...Xt(e.validation,`${t}/validation`),...Zt(e.optionsDependsOn,`${t}/optionsDependsOn`)],Qt=(e,t)=>[...e.to===null||typeof e.to=="string"?[]:[h("missing-property",`${t}/to`,'"to" must be a step id or null')],...Me(e,t)],en=(e,t)=>[...Z(e,"id",t),..._(e,{title:"string",description:"string"},t),...M(e.fields,`${t}/fields`,"a field object",Ze,true),...Me(e,t),...M(e.routes,`${t}/routes`,"a route object",Qt),...["next","back","skip"].flatMap(n=>$e(e[n],`${t}/${n}`))];function Qe(e){if(!Q(e))return [h("invalid-type","","the form definition must be an object")];let t=Xe(e);return t.length?t:[...M(e.fields,"/fields","a field object",Ze),...M(e.steps,"/steps","a step object",en),...$e(e.submit,"/submit"),...$e(e.cancel,"/cancel")]}function et(e){return [...Z(e,"id",""),...Q(e.submit)?[]:[h("missing-property","/submit","the submit action is missing",'Add "submit": { "label": "Submit" }')]]}var se=e=>{var t,n;return !!((t=e.show)!=null&&t.length||(n=e.showAny)!=null&&n.length)};function tt(e,t,n){var s;let r=[];for(let i of (s=e[n].routes)!=null?s:[]){let o=i.to===null?null:t.get(i.to);if(o===null&&!se(i))return r;if(!(o==null||o<=n)&&(r.push(o),!se(i)&&!se(e[o])))return r}return n+1<e.length?[...r,n+1]:r}function nt(e){let t=new Map(e.map((n,r)=>[n.id,r]));return e.map((n,r)=>{let s=new Set,i=tt(e,t,r);for(;i.length;){let o=i.pop();s.has(o)||(s.add(o),i.push(...tt(e,t,o)),se(e[o])&&o+1<e.length&&i.push(o+1));}return s})}var tn=new Set([...Object.getOwnPropertyNames(Object.prototype),"prototype"]);function nn({definition:e}){var s;let t=[],n=(s=e.steps)!=null?s:[],r=new Map;return n.forEach((i,o)=>{let a=r.get(i.id);a===void 0?r.set(i.id,o):t.push(h("duplicate-step-id",`/steps/${o}/id`,`step id "${i.id}" is already used by /steps/${a}`,"Give each step a unique id"));}),n.forEach((i,o)=>{var a;return ((a=i.routes)!=null?a:[]).forEach((u,c)=>{if(u.to===null)return;let l=r.get(u.to);if(l!==void 0&&l>o)return;let d=n.slice(o+1).map(y=>y.id),f=l===void 0?`"${u.to}" is not a step id`:`"${u.to}" is not a later step`,g=d.length?`${K(d)}, or null to end the form here`:"Use null to end the form here";t.push(h("route-target",`/steps/${o}/routes/${c}/to`,f,g));})}),t}function rn({definition:e,entries:t}){var i;let n=[],r=nt((i=e.steps)!=null?i:[]),s=(o,a)=>{var u;return o.step!==a.step&&!((u=r[o.step])!=null&&u.has(a.step))};return t.forEach((o,a)=>{let{field:u,path:c}=o,l=t.slice(0,a).find(d=>d.field.key===u.key&&!s(d,o));tn.has(u.key)?n.push(h("reserved-key",`${c}/key`,`"${u.key}" is a built-in object property name`,"Rename the field key")):l&&n.push(h("duplicate-key",`${c}/key`,`key "${u.key}" is already used by ${l.path} on the same path`,"Rename one of the fields, or move them to route branches that never meet"));}),n}function rt(e){var r,s;let{definition:t}=e;return [...!!((r=t.fields)!=null&&r.length)&&!!((s=t.steps)!=null&&s.length)?[h("fields-and-steps","",'the definition has both "fields" and "steps"','Move the top-level fields into a step, or remove "steps"')]:[],...nn(e),...rn(e)]}var sn=Object.freeze({required:"This field is required",minLength:"Must be at least {min} characters",maxLength:"Must be at most {max} characters",minItems:"Must be at least {min} items",maxItems:"Must be at most {max} items",min:"Must be at least {min}",max:"Must be at most {max}",pattern:"Invalid format",matchField:"Fields must match",email:"Enter a valid email",number:"Enter a number",date:"Enter a valid date",datetime:"Enter a valid date and time",option:"Select one of the available options",options:"Must be a list of available options",boolean:"Must be true or false",string:"Must be text",file:"Must be a file reference",value:"Invalid value"});function st(e,t){return e.replace(/\{(\w+)\}/g,(n,r)=>Object.prototype.hasOwnProperty.call(t,r)?String(t[r]):n)}function on(e,t,n,r,...s){for(let i of r){let o=typeof i=="function"?i(t,n,...s):i==null?void 0:i[t];if(o&&typeof o=="string")return typeof i=="function"?o:st(o,n)}return st(e[t],n)}function D(...e){return (t,n,r)=>on(sn,t,n,e,r)}var q=["checkbox","switch"],U=["text","email","phone","number","password","select","autocomplete","multiselect","checkbox","radio","switch","file","date","datetime","textarea"],ee=1e4,an=254,un=1e3,it=/^[^\s@]+@[^\s@.]+(?:\.[^\s@.]+)+$/,ln=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?$/,ot="\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])",cn=new RegExp(`^${ot}$`),fn=new RegExp(`^${ot}T(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d{1,3})?)?(?:Z|[+-](?:[01]\\d|2[0-3]):[0-5]\\d)?$`),dn=new Set(["text","phone","password","textarea","autocomplete"]),pn=new Map([["email",[it,"email",an]],["date",[cn,"date",ee]],["datetime",[fn,"datetime",ee]]]);function mn(e){let[t,n,r]=e.split(/\D/).map(Number);return r<=new Date(new Date(0).setUTCFullYear(t,n,0)).getUTCDate()}var gn=new Set(["password","number","select","radio","file"]);function O(e,t){return typeof t=="string"&&!gn.has(e.type)?t.trim():t}function at(e,t){if(Array.isArray(t)&&t.length===0&&e.type!=="multiselect"&&U.includes(e.type))return;let n=O(e,t);if(e.type!=="number"||typeof n!="string"||!ln.test(n))return n;let r=Number(n);return Number.isFinite(r)?r:n}var ut=e=>e.optionsFrom?void 0:e.options;function lt(e,t){let n=ut(e);return !n||n.some(r=>r.value===t)}function ct(e,t,n){var s,i,o,a;let r=Math.min(ee,(i=(s=e.validation)==null?void 0:s.maxLength)!=null?i:ee);return t.length<=r?null:(a=(o=e.validation)==null?void 0:o.maxLengthMessage)!=null?a:n("maxLength",{max:r})}function yn(e,t,n){var s,i;return Array.isArray(t)?t.length>((i=(s=ut(e))==null?void 0:s.length)!=null?i:un)?n("option"):t.every(o=>typeof o=="string"&&o.length<=ee&<(e,o))?null:n("option"):n("options")}function ie(e,t,n,r){return typeof t=="string"?ct(e,t,r):r(n)}function hn(e,t,[n,r,s],i){var o;return typeof t!="string"?i(r):(o=ct(e,t,i))!=null?o:t.length<=s&&n.test(t)&&(n===it||mn(t))?null:i(r)}function bn(e,t,n){return typeof t=="boolean"||typeof t=="number"&&Number.isFinite(t)?null:ie(e,t,"value",n)}function vn(e,t){return t==null||t===""||e.type==="multiselect"&&Array.isArray(t)&&!t.length}function De(e,t,n=D()){var i;if(vn(e,t))return null;let r=(o,a={})=>n(o,a,e);if(q.includes(e.type))return typeof t=="boolean"?null:r("boolean");if(e.type==="number")return typeof t=="number"&&Number.isFinite(t)?null:r("number");if(e.type==="multiselect")return yn(e,t,r);if(e.type==="file")return ie(e,t,"file",r);let s=pn.get(e.type);return s?hn(e,t,s,r):e.type==="select"||e.type==="radio"?(i=ie(e,t,"option",r))!=null?i:lt(e,t)?null:r("option"):dn.has(e.type)?ie(e,t,"string",r):bn(e,t,r)}function ft(e,t,n){return e.type==="file"||!U.includes(e.type)?null:De(e,t,n)}var Fn=["in","notIn"],kn=["gt","gte","lt","lte"],Sn=["text","email","phone","password","textarea","date","datetime","select","radio","autocomplete"];function wn(e){return e.type==="number"?"number":q.includes(e.type)?"boolean":Sn.includes(e.type)?"string":void 0}function xn(e,t,n,r){var l;let s=(d,f)=>[E("condition-value-mismatch",r,d,f)];if(t==="notEmpty")return [];if(kn.includes(t))return e.type!=="multiselect"&&!q.includes(e.type)?[]:s(`"${e.key}" is a ${e.type} field, so "${t}" never matches it`,"Compare a number, text, radio or select field");if(e.type==="multiselect"){let d=t==="neq"||t==="notIn"?"always":"never";return s(`"${e.key}" holds a list of values, so "${t}" ${d} matches it`,"Use notEmpty, or a select or radio field")}let i=Fn.includes(t)&&Array.isArray(n)?n:[n],o=wn(e),a=o&&i.find(d=>typeof d!==o);if(o&&a!==void 0)return s(`${JSON.stringify(a)} is a ${typeof a}, but "${e.key}" holds a ${o}`,`Use a ${o} value`);let u=o==="string"&&!e.optionsFrom&&((l=e.options)!=null&&l.length)?e.options.map(d=>d.value):null,c=u&&i.find(d=>!u.includes(d));return u&&c!==void 0?s(`${JSON.stringify(c)} is not an option of "${e.key}"`,K(u)):[]}function En(e,t){let{condition:n,path:r}=t;if(Ee(e,t).length)return [];let s=X.find(i=>i in n);return xn(e.keys.get(n.field).field,s,n[s],`${r}/${s}`)}function In({field:e,path:t}){if(!["select","radio","multiselect"].includes(e.type))return [];if(!Array.isArray(e.options))return e.optionsFrom?[]:[E("missing-options",`${t}/options`,`the ${e.type} field "${e.key}" has no options`,'Add "options" or "optionsFrom"')];let n=e.options.map(i=>i.value),r=e.type==="multiselect"&&Array.isArray(e.defaultValue)?e.defaultValue:[e.defaultValue],s=e.defaultValue===void 0||!n.length||e.optionsFrom?void 0:r.find(i=>!n.includes(i));return s===void 0?[]:[E("default-not-in-options",`${t}/defaultValue`,`${JSON.stringify(s)} is not an option of "${e.key}"`,K(n))]}function Cn(e,{field:t,path:n}){var d;let r=(d=t.validation)!=null?d:{},s=(f,g,y)=>E("rule-not-applicable",`${n}/validation/${f}`,g,y),i=U.includes(t.type),o=t.type==="number",a=i&&!o?["min","max"].filter(f=>r[f]!==void 0):[],u=i&&["number","checkbox","switch"].includes(t.type)?["minLength","maxLength"].filter(f=>r[f]!==void 0):[],c=[...a.map(f=>s(f,`"${f}" applies to number fields only`,`Use ${f}Length to limit text length`)),...u.map(f=>s(f,`"${f}" does not apply to ${t.type} fields`,o?"Use min and max for numbers":`Remove ${f}`))],{validators:l}=e;return r.validator!==void 0&&l&&!Object.prototype.hasOwnProperty.call(l,r.validator)&&c.push(E("unknown-validator",`${n}/validation/validator`,`the validator "${r.validator}" is not registered`,'Pass it in the "validators" option')),c}function Rn(e,t){var i;let{field:n,path:r}=t,s=U.includes(n.type)?void 0:xe(n.type,U);return [...s===void 0?[]:[E("unknown-field-type",`${r}/type`,`"${n.type}" is not a built-in field type`,`Use "${s}", or register a component for "${n.type}"`)],...In(t),...Cn(e,t),...((i=n.optionsDependsOn)!=null?i:[]).flatMap((o,a)=>e.keys.has(o)?[]:[E("unknown-field",`${r}/optionsDependsOn/${a}`,`"${o}" is not a field key`,J(o,e.keyList))])]}function $n({definition:e}){var n;let t=(n=e.steps)!=null?n:[];return t.flatMap((r,s)=>{var a,u,c;let i=[],o=new Set(((a=r.routes)!=null?a:[]).map(l=>l.to).filter(l=>l!==null));for(let l of o){let d=t.findIndex(y=>y.id===l),f=t[d+1],g=(c=(u=t[d])==null?void 0:u.routes)==null?void 0:c.some(y=>{var b,x;return !((b=y.show)!=null&&b.length)&&!((x=y.showAny)!=null&&x.length)});!f||!o.has(f.id)||g||i.push(E("route-fallthrough",`/steps/${d}`,`branch "${l}" from "${r.id}" continues into the sibling branch "${f.id}"`,`Add an unconditional route on "${l}" to the step where the branches meet`));}return r.skip&&(r.next===false||!t[1])&&i.push(E("skip-unreachable",`/steps/${s}/skip`,`step "${r.id}" has "skip" but no Continue button or later step`,'Remove "skip", or remove "next": false')),i})}function dt(e){return [...typeof e.definition.title=="string"?[]:[E("missing-property","/title",'"title" must be a string',"Add a title for host UI and editors")],...e.conditions.flatMap(t=>En(e,t)),...e.entries.flatMap(t=>Rn(e,t)),...$n(e)]}function Oe(e,{validators:t,suggest:n,warnings:r}={}){let s=Qe(e);if(s.length)return s;let i=He(e,t,n);return [...et(e),...rt(i),...Ge(i),...Ye(i),...ze(i),...r?r(i):[]]}function pt(e){return Oe(e)}function oe(e,t={}){return Oe(e,{validators:t.validators,suggest:J,warnings:dt})}function ae(e,t){let n=Oe(e,{suggest:J});if(n.length)throw new $(n);return e}function ue(e){var t,n;return [...(t=e.show)!=null?t:[],...(n=e.showAny)!=null?n:[]].map(r=>r.field)}function le(e){var t,n;return (t=e.steps)!=null&&t.length?e.steps.flatMap(r=>r.fields):(n=e.fields)!=null?n:[]}function B(e,t){let n={};for(let s of e)s.defaultValue!==void 0&&(n[s.key]=s.defaultValue);let r=t!=null?t:{};for(let s of Object.keys(r))s!=="__proto__"&&(n[s]=r[s]);return n}function R(e,t){let n=new Set([...Object.keys(e),...Object.keys(t)]);return new Set([...n].filter(r=>!Object.is(e[r],t[r])))}var Ve=class extends Error{constructor(n,r){super(`The action completed, but ${n} failed: ${r instanceof Error?r.message:String(r)}`);this.phase=n;this.committed=true;this.name="FormLifecycleError",this.cause=r;}};async function ce(e,t){try{await t();}catch(n){throw new Ve(e,n)}}function mt(e){return e.visibleSteps.map(t=>t.id).join(`
|
|
5
|
+
`)}function fe(e,t){let n=mt(e),r=Object.keys(t).filter(s=>t[s]!==void 0).map(s=>[s,e.values[s]]);return ()=>mt(e)!==n||r.some(([s,i])=>!Object.is(e.values[s],i))}function gt(e,t){let n=m({},t);return ()=>R(n,e.values)}function I(e,t){var r,s;let n=i=>we(i,t);return ((r=e.show)!=null?r:[]).every(n)&&(!((s=e.showAny)!=null&&s.length)||e.showAny.some(n))}function Mn(e,t){return z(e)||e===false&&q.includes(t.type)}function yt(e,t,n,r){var o,a;let s=n[`min${t}`],i=n[`max${t}`];if(s!==void 0&&e<s)return (o=n[`min${t}Message`])!=null?o:r("min",{min:s});if(i!==void 0&&e>i)return (a=n[`max${t}Message`])!=null?a:r("max",{max:i})}function Dn(e,t,n){var r;if(t.pattern!==void 0)try{return new RegExp(t.pattern).test(String(e))?void 0:(r=t.patternMessage)!=null?r:n()}catch(s){return}}function On(e,t,n,r){if(typeof e=="number")return yt(e,"",t,(i,o)=>r(i,o,n));if(typeof e!="string"&&!Array.isArray(e))return;let s=Array.isArray(e)?"Items":"Length";return yt(e.length,"Length",t,(i,o)=>r(`${i}${s}`,o,n))}function G(e,t,n,r,s){var l,d,f,g,y;let i=O(e,t),o=(l=e.validation)!=null?l:{},a=D(s),u=()=>{var b;return (b=o.matchFieldMessage)!=null?b:a("matchField",{},e)};if(Mn(i,e))return o.required?typeof o.required=="string"?o.required:a("required",{},e):o.matchField!==void 0&&!z(n[o.matchField])?u():null;let c=ft(e,i,a);return c||((y=(f=(d=On(i,o,e,a))!=null?d:Dn(i,o,()=>a("pattern",{},e)))!=null?f:o.matchField!==void 0&&i!==n[o.matchField]?u():void 0)!=null?y:o.validator?(g=r==null?void 0:r[o.validator])==null?void 0:g.call(r,i,n):void 0)||null}function j(e,t,n,r){return de(e.fields,t,n,r)}function de(e,t,n,r){let s={};for(let i of e){if(!I(i,t))continue;let o=G(i,t[i.key],t,n,r);o&&(s[i.key]=o);}return s}function P(e,t,n=false,r=[]){let{state:s}=e,i=e.errors,o={},a=[...r];for(let[c,l]of Object.entries(t))e.visibility.activeField(c,e.values)?o[c]=l:a.push(l);n&&(s.serverErrors=o,s.serverFormErrors=a),s.errors=m(m({},s.serverErrors),o),s.topLevelErrors=n?a:[...s.serverFormErrors,...a];let u=n&&ht(e,o);e.notify({fieldKeys:R(i,e.errors),structureChanged:u});}function ht(e,t){let n=e.visibleSteps.findIndex(r=>r.fields.some(s=>t[s.key]!==void 0));return n<0||n===e.currentStepIndex?false:(e.state.currentStepIndex=n,true)}function pe(e,t,n=false){n&&delete e.state.serverErrors[t];let r=e.state.serverErrors[t];r===void 0?delete e.errors[t]:e.errors[t]=r;}function V(e,t){for(let n of t)delete e.state.serverErrors[n];}function bt(e,t){var r;let n=[];for(let s of e.visibility.allFields)((r=s.validation)==null?void 0:r.matchField)!==t||e.errors[s.key]===void 0||G(s,e.values[s.key],T(e),e.validators,e.messages)||(pe(e,s.key),n.push(s.key));return n}function H(e){let t=new Set(e.visibleSteps.flatMap(r=>r.fields.map(s=>s.key))),n=Object.keys(e.errors).filter(r=>!t.has(r));for(let r of n)delete e.errors[r];return V(e,n),n}function T(e){return W(e)}function Vn(e,t){for(let n of [...e.skipped.values()].flat())delete t[n];return t}function te(e,t=false){var i;let n=e.errors,r={};if(e.isMultiStep)for(let o of e.visibleSteps)e.skipped.has(o.id)||Object.assign(r,j(o,T(e),e.validators,e.messages));else Object.assign(r,de((i=e.definition.fields)!=null?i:[],T(e),e.validators,e.messages));e.state.errors=m(m({},e.state.serverErrors),r);let s=t&&ht(e,r);return e.notify({fieldKeys:R(n,r),structureChanged:s}),r}function vt(e,t){let n=e.visibility.activeField(t,e.values);if(!n)return null;let r=e.errors[t],s=G(n,e.values[t],T(e),e.validators,e.messages);s?e.errors[t]=s:pe(e,t,true);let i=Object.is(r,e.errors[t])?[]:[t];return e.notify({fieldKeys:i}),s}function W(e){let t=m({},e.visibility.conditionValues(e.values));for(let n of Object.keys(t)){let r=e.visibility.activeField(n,e.values);r&&(t[n]=O(r,t[n]));}return Vn(e,t)}function Ft(e,t){let n=e.values,r=e.errors,s=Object.keys(e.fieldLoading);e.validationEpoch++,e.operationEpoch++,e.state.submitting=false,e.state.values=B(e.visibility.allFields,t),e.state.errors={},e.state.topLevelErrors=[],e.state.serverErrors={},e.state.serverFormErrors=[],e.state.fieldLoading={},e.state.stepValidating=false,e.state.currentStepIndex=0,e.skipped.clear(),e.visibility.reconcileHidden(e.values,e.errors);let i=R(n,e.values),o=new Set([...i,...R(r,e.errors),...s]);e.notify({fieldKeys:o,structureChanged:true,valuesChanged:i.size>0});}function St(e,t){return wt(e,t).steps}function wt(e,t){var o,a,u;let n=(o=e.steps)!=null?o:[],r=new Map(n.map((c,l)=>[c.id,l])),s=[],i={};n.length||kt({fields:(a=e.fields)!=null?a:[]},t,i);for(let c=0;c<n.length;){let l=n[c];if(!I(l,i)){c++;continue}s.push(l),kt(l,t,i);let d=(u=l.routes)==null?void 0:u.find(f=>{var g;return I(f,i)&&(f.to===null||((g=r.get(f.to))!=null?g:-1)>c&&I(n[r.get(f.to)],i))});if((d==null?void 0:d.to)===null)break;c=d?r.get(d.to):c+1;}return {steps:s,values:i}}function me(e,t,n){var o;let r=(o=e[n])!=null?o:e[e.length-1],s=t.findIndex(a=>a.id===(r==null?void 0:r.id));if(s!==-1)return s;let i=new Map(t.map((a,u)=>[a.id,u]));for(let a=Math.min(n-1,e.length-1);a>=0;a--){let u=i.get(e[a].id);if(u!==void 0)return u}return 0}function kt(e,t,n){let r=e.fields.map(({key:i})=>[i,Object.prototype.hasOwnProperty.call(n,i),n[i]]);for(let i of e.fields)n[i.key]=O(i,t[i.key]);let s=e.fields.filter(i=>I(i,n)&&t[i.key]!==void 0);for(let[i,o,a]of r)o?n[i]=a:delete n[i];for(let i of s)n[i.key]=O(i,t[i.key]);}function xt(e){let t=null,n=[],r={},s=i=>{t!==i&&(t=i,{steps:n,values:r}=wt(e,i));};return {invalidate(){t=null;},steps(i){return s(i),n},values(i){return s(i),r}}}function Et(e){var r,s;let t=(s=(r=e.currentStep)==null?void 0:r.fields)!=null?s:[],n=m({},e.values);for(let{key:i}of t)delete n[i];return Object.assign(n,B(t))}function Ae(e){return St(e.definition,Et(e))[e.currentStepIndex+1]}function ge(e){let t=e.currentStep,n=t.fields.map(({key:s})=>s);e.state.values=Et(e);for(let s of n)delete e.errors[s];V(e,n),e.skipped.set(t.id,n),V(e,e.visibility.reconcileHidden(e.values,e.errors)),e.visibility.markChanged(true,true);let r=H(e);return e.notify({fieldKeys:[...n,...r],structureChanged:true,valuesChanged:true}),n}function ye(e){let t=e.currentStep;t&&e.skipped.delete(t.id);}function It(e,t){return e.state.currentStepIndex=t,e.notify({structureChanged:true}),ge(e)}function Le(e){return !!e&&Object.getPrototypeOf(e)===Object.prototype&&e.ok===false}function An(e,t,n){let r={},s=typeof t.errors=="object"&&t.errors?t.errors:{};for(let[o,a]of Object.entries(s)){let u=Array.isArray(a)?a.join(" "):a;typeof u=="string"&&Object.is(e.values[o],n[o])&&(r[o]=u);}let i=Array.isArray(t.formErrors)?t.formErrors.filter(o=>typeof o=="string"):[];P(e,r,true,i);}async function he(e,t,n=false){if(e.submitting||e.stepValidating)return false;n||ye(e);let r=m({},e.lifecycle),s=false,i=e.validationEpoch,o=e.latestOperation=++e.operationEpoch,a=W(e),u=fe(e,a),c=()=>i!==e.validationEpoch||o!==e.operationEpoch||u();e.state.submitting=true,e.notify();try{if(c()||Object.keys(te(e,!0)).length>0||c())return !1;if(r.onBeforeSubmit){let b=await r.onBeforeSubmit(a);if(c()||b===!1)return !1}if(c())return !1;if(r.onBeforeSubmit){if(Object.keys(te(e,!0)).length>0||c())return !1;a=W(e);}s=!0;let l=[...e.skipped.keys()],d=m({},e.values),f=e.state.serverErrors,g=await t(a,[...l]),y=Le(g);return o!==e.operationEpoch?!y:y?(An(e,g,d),!1):(e.state.serverErrors===f&&P(e,{},!0),await ce("afterSubmit",()=>{var b;return (b=r.onAfterSubmit)==null?void 0:b.call(r,a,l)}),!0)}catch(l){if(!s&&c())return false;throw l}finally{o===e.operationEpoch&&(e.state.submitting=false,e.notify());}}function Ct(e){let t=e.currentStep;if(!t)return true;let n=j(t,T(e),e.validators,e.messages);if(Object.keys(n).length===0)return false;let r=e.errors;return e.state.errors=m(m({},r),n),e.notify({fieldKeys:R(r,e.errors)}),true}function Rt(e,t){e.validationEpoch++,e.state.currentStepIndex=t,e.notify({structureChanged:true});}async function $t(e,t){var d;if(!e.isMultiStep||e.stepValidating||e.submitting||!((d=e.currentStep)!=null&&d.skip))return false;if(Ae(e))return be(e,"next","skip");let n=e.currentStep;if(!t||!n)return false;let r=e.values,s=m({},e.errors),i=m({},e.state.serverErrors),o;ge(e);let a=e.values,u=gt(e,a),c=he(e,async(f,g)=>{let y=await t(f,g),b=Le(y);return (!b||l===e.operationEpoch)&&(o=b),y},true),l=e.latestOperation;try{return await c}finally{if(o!==false&&l===e.latestOperation&&e.values===a){let f=e.visibleSteps,g=u(),y=e.values;e.state.values=m({},r);for(let b of g)delete e.values[b],delete s[b],delete i[b],b in y&&(e.values[b]=y[b]);o===void 0&&(e.state.serverErrors=i),e.state.errors=m(m({},o?{}:s),e.errors),e.skipped.delete(n.id),V(e,e.visibility.reconcileHidden(e.values,e.errors)),e.visibility.markChanged(true,true),e.state.currentStepIndex=me(f,e.visibleSteps,e.currentStepIndex),H(e),e.notify({fieldKeys:Object.keys(m(m(m({},r),y),s)),structureChanged:true,valuesChanged:true});}}}async function be(e,t,n=t){let r=n==="skip";if(!e.isMultiStep||e.stepValidating||e.submitting||!r&&(t==="next"?e.isLastStep:e.isFirstStep))return false;let s=e.currentStep,i=t==="next"&&!r;if(i&&ye(e),i&&Ct(e))return false;let o=m({},e.lifecycle),a=e.onStepValidate,u=false,l=e.currentStepIndex+(t==="next"?1:-1),d=r?Ae(e):e.visibleSteps[l];if(!d)return false;let f={fromStepId:s.id,toStepId:d.id,reason:n,values:m({},T(e))},g=e.validationEpoch,y=e.latestOperation=++e.operationEpoch,b=fe(e,f.values),x=()=>{var k;return g!==e.validationEpoch||y!==e.operationEpoch||((k=e.currentStep)==null?void 0:k.id)!==s.id||b()};e.state.stepValidating=true,e.notify();try{if(x())return !1;if(i&&a){let k=await a(s.id,f.values);if(x())return !1;if(k&&Object.keys(k).length>0)return P(e,k),!1}if(o.onBeforeStepChange){let k=await o.onBeforeStepChange(f);if(x()||k===!1)return !1}return x()||i&&Ct(e)?!1:(u=!0,r&&ge(e),Rt(e,l),await ce("afterStepChange",()=>{var k;return (k=o.onAfterStepChange)==null?void 0:k.call(o,f)}),!0)}catch(k){if(!u&&x())return false;throw k}finally{y===e.operationEpoch&&(e.state.stepValidating=false,e.notify());}}function Mt(e,t){if(!e.isMultiStep)return;let n=e.visibility.findStepIndex(t,e.values,e.currentStepIndex);n===e.currentStepIndex?e.notify():n!==null&&Rt(e,n);}function Dt(e,t){return e.add(t),()=>e.delete(t)}function Ot(){let e=0,t=0,n=new Set,r=new Set,s=new Map,i=new Map;return {subscribe:o=>Dt(n,o),getSnapshot:()=>e,subscribeStructure:o=>Dt(r,o),getStructureSnapshot:()=>t,getFieldSnapshot:o=>{var a;return (a=s.get(o))!=null?a:0},subscribeField(o,a){var c;let u=(c=i.get(o))!=null?c:new Set;return u.add(a),i.set(o,u),()=>{u.delete(a),u.size===0&&i.delete(o);}},notify({fieldKeys:o=[],structureChanged:a=false}={}){var u,c;for(let l of new Set(o)){s.set(l,((u=s.get(l))!=null?u:0)+1);for(let d of (c=i.get(l))!=null?c:[])d();}if(a){t++;for(let l of r)l();}e++;for(let l of n)l();}}}function Ln(e,t){try{if(process.env.NODE_ENV!=="production")return oe(e,{validators:t})}catch(n){if(!(n instanceof ReferenceError))throw n}}function Vt(e,t,n){var o,a;let r=(o=Ln(e,n))!=null?o:pt(e),s=r.filter(Be);if(s.length)throw new $(s);let i=(a=t.onWarning)!=null?a:(u=>console.warn(`[formhaus] ${u.message}`));for(let u of r)i(u);}function je(e,t){var n;for(let r of ue(e)){let s=(n=t.get(r))!=null?n:new Set;s.add(e),t.set(r,s);}}function ve(e){var b,x,k;let t=le(e),n=new Map,r=new Set,s=xt(e),i=new Map,o=new Map,a=new Map,u=true,c=true,l={visibleSteps:[],currentStep:null,visibleFields:[],canGoNext:false};for(let p of t)n.set(p.key,[...(b=n.get(p.key))!=null?b:[],p]),je(p,i);for(let p of (x=e.steps)!=null?x:[]){for(let v of p.fields)a.set(v,p);je(p,o);for(let v of (k=p.routes)!=null?k:[])for(let F of ue(v))r.add(F);}let d=()=>{var p;return ((p=e.steps)!=null?p:[]).length>0},f=(p,v)=>I(p,s.values(v)),g=(p,v)=>{let F=a.get(p);return !F||s.steps(v).includes(F)};function y(p,v){var C,A,Y;if(!u)return l;if(u=false,!d())return l.visibleSteps=[],l.currentStep=null,l.visibleFields=((C=e.fields)!=null?C:[]).filter(N=>f(N,p)),l;let F=l.visibleSteps=s.steps(p),S=l.currentStep=(Y=(A=F[v])!=null?A:F[F.length-1])!=null?Y:null;return l.visibleFields=S?S.fields.filter(N=>f(N,p)):[],l}return {allFields:t,conditionValues:s.values,state:y,markChanged(p,v){p&&(u=true),(p||v)&&(c=true);},getCanGoNext(p,v,F){let S=y(p,v).currentStep;if(!c)return l.canGoNext;c=false;let C=S?j(S,s.values(p),F):{};return l.canGoNext=d()&&Object.keys(C).length===0},findStepIndex(p,v,F){let S=y(v,F).visibleSteps.findIndex(C=>C.fields.some(A=>A.key===p));return S===-1?null:S},affectsStructure(p,v){return r.has(p)||i.has(p)||o.has(p)||v.size>0},activeField(p,v){var F;return (F=n.get(p))==null?void 0:F.find(S=>g(S,v)&&f(S,v))},reconcileHidden(p,v){var N,Pe;s.invalidate();let F=[...new Set([...i.keys(),...o.keys()])],S=new Set(F),C=new Set,A=w=>p[w]!==void 0||v[w]!==void 0,Y=w=>{delete p[w],delete v[w],s.invalidate(),C.add(w),!S.has(w)&&(S.add(w),F.push(w));};for(let w=0;w<F.length;w++){let ke=F[w];S.delete(ke);for(let L of (N=i.get(ke))!=null?N:[])g(L,p)&&!f(L,p)&&A(L.key)&&Y(L.key);for(let L of (Pe=o.get(ke))!=null?Pe:[])if(!f(L,p))for(let Ne of L.fields)A(Ne.key)&&Y(Ne.key);}return C}}}var Fe=class{constructor(t,n,r){this.definition=t;this.skipped=new Map;this.validationEpoch=0;this.operationEpoch=0;this.latestOperation=0;this.subscriptions=Ot();var i;this.lifecycle=r!=null?r:{},this.validators=(i=r==null?void 0:r.validators)!=null?i:{},Vt(t,this.lifecycle,this.validators),this.messages=D(r==null?void 0:r.messages,t.messages),this.visibility=ve(t);let s=B(this.visibility.allFields,n);this.state={values:s,errors:{},topLevelErrors:[],serverErrors:{},serverFormErrors:[],currentStepIndex:0,fieldLoading:{},stepValidating:false,submitting:false},this.visibility.reconcileHidden(s,this.state.errors);}get onStepValidate(){return this.lifecycle.onStepValidate}get values(){return this.state.values}get errors(){return this.state.errors}get topLevelErrors(){return this.state.topLevelErrors}get currentStepIndex(){return this.state.currentStepIndex}get fieldLoading(){return this.state.fieldLoading}get stepValidating(){return this.state.stepValidating}get submitting(){return this.state.submitting}get isMultiStep(){var t;return ((t=this.definition.steps)!=null?t:[]).length>0}get visibleSteps(){return this.view.visibleSteps}get currentStep(){return this.view.currentStep}get visibleFields(){return this.view.visibleFields}get isFirstStep(){return this.currentStepIndex===0}get isLastStep(){return this.currentStepIndex>=this.visibleSteps.length-1}get canGoNext(){return this.visibility.getCanGoNext(this.state.values,this.currentStepIndex,this.validators)}get stepErrors(){let t=Object.create(null);for(let n of this.visibleSteps){let r=n.fields.map(s=>s.key).filter(s=>this.errors[s]!==void 0);r.length>0&&(t[n.id]=r);}return t}get progress(){let t=this.visibleSteps.length;return {current:Math.min(this.currentStepIndex+1,t),total:t}}subscribe(t){return this.subscriptions.subscribe(t)}getSnapshot(){return this.subscriptions.getSnapshot()}subscribeField(t,n){return this.subscriptions.subscribeField(t,n)}getFieldSnapshot(t){return this.subscriptions.getFieldSnapshot(t)}subscribeStructure(t){return this.subscriptions.subscribeStructure(t)}getStructureSnapshot(){return this.subscriptions.getStructureSnapshot()}setValue(t,n){let{values:r,errors:s}=this.state,i=this.isMultiStep?this.visibleSteps:null,o=!Object.is(r[t],n),a=s[t];r[t]=n,pe(this.internals,t,o);for(let[g,y]of this.skipped)o&&y.includes(t)&&this.skipped.delete(g);let u=this.visibility.reconcileHidden(r,s);V(this.internals,u);let c=bt(this.internals,t),l=new Set([...u,...c]);(o||a!==s[t])&&l.add(t);let d=o||u.size>0,f=d&&this.visibility.affectsStructure(t,u);if(i&&f){this.visibility.markChanged(true,true),this.state.currentStepIndex=me(i,this.visibleSteps,this.currentStepIndex);for(let g of H(this.internals))l.add(g);}this.notify({fieldKeys:l,structureChanged:f,valuesChanged:d});}setErrors(t){P(this.internals,t,true);}setFieldLoading(t,n){let r=this.state.fieldLoading[t]===true;n?this.state.fieldLoading[t]=true:delete this.state.fieldLoading[t],this.notify({fieldKeys:r===n?[]:[t]});}cancelPendingActions(){this.validationEpoch++,this.operationEpoch++,this.state.stepValidating=false,this.state.submitting=false,this.notify();}next(){return be(this.internals,"next")}back(){return be(this.internals,"back")}skip(t){return $t(this.internals,t)}submit(t){return he(this.internals,t)}isStepSkipped(t){return this.skipped.has(t)}validate(){return te(this.internals)}validateField(t){return vt(this.internals,t)}getSubmitValues(){return W(this.internals)}goToStepWithField(t){Mt(this.internals,t);}reset(t){Ft(this.internals,t);}get view(){return this.visibility.state(this.state.values,this.currentStepIndex)}get internals(){return this}notify(t={}){this.visibility.markChanged(!!t.structureChanged,!!t.valuesChanged),this.subscriptions.notify(t);}};var jn='Pass the values object as the second argument, not the request body with "values" and "skippedSteps".',Tn=()=>null,Te=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);function Pn(e,t,n){var a;let r=n!==null&&typeof n=="object"&&!Array.isArray(n)?n:{},s=ve(e),i=[...new Set(t.map(({key:u})=>u))].filter(u=>Te(r,u)),o={values:{},active:new Map};for(let u=0;u<=t.length;u++){let c={};for(let f of i){let g=at((a=o.active.get(f))!=null?a:t.find(y=>y.key===f),r[f]);g!==void 0&&(c[f]=g);}let l=new Map;for(let f of i){let g=s.activeField(f,c);g&&l.set(f,g);}let d=i.every(f=>l.get(f)===o.active.get(f));if(o={values:c,active:l},d)break}return o}function Nn({values:e,active:t},n){let r=new Map;for(let[s,i]of t){let o=De(i,e[s],n);o&&r.set(s,o);}return r}function Kn(e,t){var s;let n=i=>i.map(o=>t.has(o.key)?Se(m({},o),{validation:void 0}):o),r=(s=e.steps)==null?void 0:s.map(i=>Se(m({},i),{fields:n(i.fields)}));return m(m(m({},e),e.fields&&{fields:n(e.fields)}),r&&{steps:r})}function _n(e,t={}){let n={};for(let{validation:r}of e)r!=null&&r.validator&&(n[r.validator]=Tn);return m(m({},n),t)}function qn(e,t){return t===null||typeof t!="object"||!Te(t,"values")?false:!e.some(n=>n.key==="values"||n.key==="skippedSteps")}function Un(e,t){if(!Array.isArray(t))return;let n=new Set(t);for(let r=0;r<e.visibleSteps.length;r++){let s=e.visibleSteps[r];s.skip&&n.has(s.id)&&It(e,r);}}function Bn(e,t,n={}){ae(e);let r=le(e),s=Pn(e,r,t),i=D(n.messages,e.messages),o=Nn(s,i),a={validators:_n(r,n.validators),messages:i,onWarning:()=>{}},u=new Fe(Kn(e,o),s.values,a);Un(u,n.skippedSteps);let c=u.validate(),l=u.getSubmitValues();for(let[d,f]of o)Te(l,d)&&(c[d]=f);return qn(r,t)&&(c.values=jn),{values:l,errors:c}}exports.FormDefinitionError=$;exports.checkDefinition=oe;exports.parseDefinition=ae;exports.validateSubmission=Bn;return exports;})({});//# sourceMappingURL=server.iife.js.map
|
|
6
6
|
//# sourceMappingURL=server.iife.js.map
|