PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 4.0.1
Tutor LMS – eLearning and online course solution v4.0.1
4.0.1 4.0.0 3.9.15 3.9.14 3.9.13 3.9.12 3.9.11 trunk 1.0.0 1.0.0-alpha 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.2.0 1.2.1 1.2.11 1.2.12 1.2.13 1.2.20 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9 1.8.0 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.15 1.9.16 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.3.0 2.4.0 2.5.0 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.1.0 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.7.1 3.7.2 3.7.3 3.7.4 3.8.0 3.8.1 3.8.2 3.8.3 3.9.0 3.9.1 3.9.10 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9
tutor / assets / js / lazy-chunks / tutor-form.js
tutor / assets / js / lazy-chunks Last commit date
tutor-calendar.js 5 days ago tutor-chart-js.js 5 days ago tutor-coupon-main-content.js 5 days ago tutor-course-builder-additional.js 5 days ago tutor-course-builder-basic.js 5 days ago tutor-course-builder-curriculum.js 5 days ago tutor-course-builder-icon.js 5 days ago tutor-dnd-kit.js 5 days ago tutor-file-uploader.js 5 days ago tutor-form.js 5 days ago tutor-react-datepicker.js 5 days ago tutor-select.js 5 days ago tutor-time-input.js 5 days ago
tutor-form.js
22 lines
1 (self["webpackChunktutor"]=self["webpackChunktutor"]||[]).push([["353"],{44657:function(e){!function(t,i){true?e.exports=i():0}(this,function(){"use strict";var e=1e3,t=6e4,i=36e5,r="millisecond",a="second",s="minute",n="hour",l="day",u="week",o="month",d="quarter",h="year",f="date",v="Invalid Date",c=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,m=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,y={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],i=e%100;return"["+e+(t[(i-20)%10]||t[i]||t[0])+"]"}},p=function(e,t,i){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(i)+e},g={s:p,z:function(e){var t=-e.utcOffset(),i=Math.abs(t),r=Math.floor(i/60),a=i%60;return(t<=0?"+":"-")+p(r,2,"0")+":"+p(a,2,"0")},m:function e(t,i){if(t.date()<i.date())return-e(i,t);var r=12*(i.year()-t.year())+(i.month()-t.month()),a=t.clone().add(r,o),s=i-a<0,n=t.clone().add(r+(s?-1:1),o);return+(-(r+(i-a)/(s?a-n:n-a))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(e){return({M:o,y:h,w:u,d:l,D:f,h:n,m:s,s:a,ms:r,Q:d})[e]||String(e||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},S="en",b={};b[S]=y;var $="$isDayjsObject",F=function(e){return e instanceof V||!(!e||!e[$])},M=function e(t,i,r){var a;if(!t)return S;if("string"==typeof t){var s=t.toLowerCase();b[s]&&(a=s),i&&(b[s]=i,a=s);var n=t.split("-");if(!a&&n.length>1)return e(n[0])}else{var l=t.name;b[l]=t,a=l}return!r&&a&&(S=a),a||!r&&S},_=function(e,t){if(F(e))return e.clone();var i="object"==typeof t?t:{};return i.date=e,i.args=arguments,new V(i)},E=g;E.l=M,E.i=F,E.w=function(e,t){return _(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var V=function(){function y(e){this.$L=M(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[$]=!0}var p=y.prototype;return p.parse=function(e){this.$d=function(e){var t=e.date,i=e.utc;if(null===t)return new Date(NaN);if(E.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(c);if(r){var a=r[2]-1||0,s=(r[7]||"0").substring(0,3);return i?new Date(Date.UTC(r[1],a,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],a,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(t)}(e),this.init()},p.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},p.$utils=function(){return E},p.isValid=function(){return!(this.$d.toString()===v)},p.isSame=function(e,t){var i=_(e);return this.startOf(t)<=i&&i<=this.endOf(t)},p.isAfter=function(e,t){return _(e)<this.startOf(t)},p.isBefore=function(e,t){return this.endOf(t)<_(e)},p.$g=function(e,t,i){return E.u(e)?this[t]:this.set(i,e)},p.unix=function(){return Math.floor(this.valueOf()/1e3)},p.valueOf=function(){return this.$d.getTime()},p.startOf=function(e,t){var i=this,r=!!E.u(t)||t,d=E.p(e),v=function(e,t){var a=E.w(i.$u?Date.UTC(i.$y,t,e):new Date(i.$y,t,e),i);return r?a:a.endOf(l)},c=function(e,t){return E.w(i.toDate()[e].apply(i.toDate("s"),(r?[0,0,0,0]:[23,59,59,999]).slice(t)),i)},m=this.$W,y=this.$M,p=this.$D,g="set"+(this.$u?"UTC":"");switch(d){case h:return r?v(1,0):v(31,11);case o:return r?v(1,y):v(0,y+1);case u:var S=this.$locale().weekStart||0,b=(m<S?m+7:m)-S;return v(r?p-b:p+(6-b),y);case l:case f:return c(g+"Hours",0);case n:return c(g+"Minutes",1);case s:return c(g+"Seconds",2);case a:return c(g+"Milliseconds",3);default:return this.clone()}},p.endOf=function(e){return this.startOf(e,!1)},p.$set=function(e,t){var i,u=E.p(e),d="set"+(this.$u?"UTC":""),v=(i={},i[l]=d+"Date",i[f]=d+"Date",i[o]=d+"Month",i[h]=d+"FullYear",i[n]=d+"Hours",i[s]=d+"Minutes",i[a]=d+"Seconds",i[r]=d+"Milliseconds",i)[u],c=u===l?this.$D+(t-this.$W):t;if(u===o||u===h){var m=this.clone().set(f,1);m.$d[v](c),m.init(),this.$d=m.set(f,Math.min(this.$D,m.daysInMonth())).$d}else v&&this.$d[v](c);return this.init(),this},p.set=function(e,t){return this.clone().$set(e,t)},p.get=function(e){return this[E.p(e)]()},p.add=function(r,d){var f,v=this;r=Number(r);var c=E.p(d),m=function(e){var t=_(v);return E.w(t.date(t.date()+Math.round(e*r)),v)};if(c===o)return this.set(o,this.$M+r);if(c===h)return this.set(h,this.$y+r);if(c===l)return m(1);if(c===u)return m(7);var y=(f={},f[s]=t,f[n]=i,f[a]=e,f)[c]||1,p=this.$d.getTime()+r*y;return E.w(p,this)},p.subtract=function(e,t){return this.add(-1*e,t)},p.format=function(e){var t=this,i=this.$locale();if(!this.isValid())return i.invalidDate||v;var r=e||"YYYY-MM-DDTHH:mm:ssZ",a=E.z(this),s=this.$H,n=this.$m,l=this.$M,u=i.weekdays,o=i.months,d=i.meridiem,h=function(e,i,a,s){return e&&(e[i]||e(t,r))||a[i].slice(0,s)},f=function(e){return E.s(s%12||12,e,"0")},c=d||function(e,t,i){var r=e<12?"AM":"PM";return i?r.toLowerCase():r};return r.replace(m,function(e,r){return r||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return E.s(t.$y,4,"0");case"M":return l+1;case"MM":return E.s(l+1,2,"0");case"MMM":return h(i.monthsShort,l,o,3);case"MMMM":return h(o,l);case"D":return t.$D;case"DD":return E.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return h(i.weekdaysMin,t.$W,u,2);case"ddd":return h(i.weekdaysShort,t.$W,u,3);case"dddd":return u[t.$W];case"H":return String(s);case"HH":return E.s(s,2,"0");case"h":return f(1);case"hh":return f(2);case"a":return c(s,n,!0);case"A":return c(s,n,!1);case"m":return String(n);case"mm":return E.s(n,2,"0");case"s":return String(t.$s);case"ss":return E.s(t.$s,2,"0");case"SSS":return E.s(t.$ms,3,"0");case"Z":return a}return null}(e)||a.replace(":","")})},p.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},p.diff=function(r,f,v){var c,m=this,y=E.p(f),p=_(r),g=(p.utcOffset()-this.utcOffset())*t,S=this-p,b=function(){return E.m(m,p)};switch(y){case h:c=b()/12;break;case o:c=b();break;case d:c=b()/3;break;case u:c=(S-g)/6048e5;break;case l:c=(S-g)/864e5;break;case n:c=S/i;break;case s:c=S/t;break;case a:c=S/e;break;default:c=S}return v?c:E.a(c)},p.daysInMonth=function(){return this.endOf(o).$D},p.$locale=function(){return b[this.$L]},p.locale=function(e,t){if(!e)return this.$L;var i=this.clone(),r=M(e,t,!0);return r&&(i.$L=r),i},p.clone=function(){return E.w(this.$d,this)},p.toDate=function(){return new Date(this.valueOf())},p.toJSON=function(){return this.isValid()?this.toISOString():null},p.toISOString=function(){return this.$d.toISOString()},p.toString=function(){return this.$d.toUTCString()},y}(),D=V.prototype;return _.prototype=D,[["$ms",r],["$s",a],["$m",s],["$H",n],["$W",l],["$M",o],["$y",h],["$D",f]].forEach(function(e){D[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),_.extend=function(e,t){return e.$i||(e(t,V,_),e.$i=!0),_},_.locale=M,_.isDayjs=F,_.unix=function(e){return _(1e3*e)},_.en=b[S],_.Ls=b,_.p={},_})},26779:function(e,t,i){"use strict";i.d(t,{formMeta:()=>S});/* import */var r=i(93640);/* import */var a=i(41147);/* import */var s=i(14206);/* import */var n=i(17900);/* import */var l=i(12470);/* import */var u=/*#__PURE__*/i.n(l);/* import */var o=i(44657);/* import */var d=/*#__PURE__*/i.n(o);/* import */var h=i(9210);/* import */var f=i(4041);var v={validateRequired(e,t,i){if(!i)return null;var r=typeof i==="string"?i:(0,l.__)("This field is required","tutor");var a=!t||typeof t==="string"&&t.trim()==="";return a?{type:"required",message:r}:null},validateMinLength(e,t){if(!e)return null;var i=typeof t==="number"?t:t.value;var r=typeof t==="object"?t.message:(0,l.sprintf)((0,l.__)("Minimum length is %s","tutor"),i);return e.length<i?{type:"minLength",message:r}:null},validateMaxLength(e,t){if(!e)return null;var i=typeof t==="number"?t:t.value;var r=typeof t==="object"?t.message:(0,l.sprintf)((0,l.__)("Maximum length is %s","tutor"),i);return e.length>i?{type:"maxLength",message:r}:null},validateMin(e,t){var i=typeof t==="number"?t:t.value;var r=typeof t==="object"?t.message:(0,l.sprintf)((0,l.__)("Minimum value is %s","tutor"),i);return e<i?{type:"min",message:r}:null},validateMax(e,t){var i=typeof t==="number"?t:t.value;var r=typeof t==="object"?t.message:(0,l.sprintf)((0,l.__)("Maximum value is %s","tutor"),i);return e>i?{type:"max",message:r}:null},validatePattern(e,t){var i=t instanceof RegExp?t:t.value;var r=typeof t==="object"&&"message"in t?t.message:(0,l.__)("Invalid format","tutor");return!i.test(e)?{type:"pattern",message:r}:null},isValidTimeValue(e){if(typeof e!=="string"){return false}var t=e.trim();if(!t){return true}// AM/PM marker is required for this rule.
2 if(!/\b(?:AM|PM)\b/i.test(t)){return false}var i=d()(t,"hh:mm A",true);return i.isValid()},validateValidTime(e,t){if(!t)return null;var i=String(e!==null&&e!==void 0?e:"").trim();if(!i)return null;var r=typeof t==="string"?t:typeof t==="object"&&"message"in t?t.message:(0,l.__)("Invalid time entered!","tutor");return this.isValidTimeValue(e)?null:{type:"validTime",message:r}},validateCustom(e,t){return(0,r._)(function*(){try{var i=yield t(e);if(i===true)return null;var r=typeof i==="string"?i:(0,l.__)("Validation failed","tutor");return{type:"validate",message:r}}catch(e){return{type:"validate",message:(0,l.__)("Validation error","tutor")}}})()}};function c(e,t,i){return(0,r._)(function*(){if(!i)return null;// Required validation
3 var r=v.validateRequired(e,t,i.required);if(r)return r;var a=String(t||"");var s=typeof t==="number"?t:parseFloat(a);// String length validations
4 if(i.minLength){var n=v.validateMinLength(a,i.minLength);if(n)return n}if(i.maxLength){var l=v.validateMaxLength(a,i.maxLength);if(l)return l}// Numeric validations
5 if(i.min&&!isNaN(s)){var u=v.validateMin(s,i.min);if(u)return u}if(i.max&&!isNaN(s)){var o=v.validateMax(s,i.max);if(o)return o}// Pattern validation
6 if(i.pattern&&a){var d=v.validatePattern(a,i.pattern);if(d)return d}// Time validation
7 if(i.validTime){var h=v.validateValidTime(t,i.validTime);if(h)return h}// Custom validation
8 if(i.validate){var f=yield v.validateCustom(t,i.validate);if(f)return f}return null})()}var m={isElementVisible(e){var t=getComputedStyle(e);var i=e.getBoundingClientRect();return t.display!=="none"&&t.visibility!=="hidden"&&parseFloat(t.opacity)>0&&i.width>0&&i.height>0},focusElement(e,t){var{shouldSelect:i=false,shouldScroll:r=true}=t;if(!this.isElementVisible(e))return;e.focus();if(i&&e instanceof HTMLInputElement&&e.select){e.select()}if(r){e.scrollIntoView({behavior:"smooth",block:"center"})}},updateElementValue(e,t){if(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement){e.value=String(t!==null&&t!==void 0?t:"")}},setAriaInvalid(e,t){if(t){e.setAttribute("aria-invalid","true")}else{e.removeAttribute("aria-invalid")}},getFieldElement(e,t){return e.querySelector('[name="'.concat(t,'"]'))}};var y={convertToFormData(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"POST";var i=new FormData;Object.entries(e).forEach(e=>{var[t,r]=e;if(Array.isArray(r)){this.appendArrayToFormData(i,t,r)}else{this.appendValueToFormData(i,t,r)}});i.append("_method",t.toUpperCase());return i},serializeParams(e){return Object.entries(e).reduce((e,t)=>{var[i,r]=t;return(0,s._)((0,a._)({},e),{[i]:this.serializeValue(r)})},{})},appendArrayToFormData(e,t,i){i.forEach((i,r)=>{var a=this.convertToFormDataValue(i);e.append("".concat(t,"[").concat(r,"]"),a)})},appendValueToFormData(e,t,i){var r=this.convertToFormDataValue(i);e.append(t,r)},convertToFormDataValue(e){if(e instanceof File||e instanceof Blob)return e;if(typeof e==="string")return e;if(typeof e==="boolean"||typeof e==="number")return String(e);if(typeof e==="object"&&e!==null)return JSON.stringify(e);return String(e)},serializeValue(e){if(e===null||e===undefined)return"null";if(typeof e==="boolean")return e?"true":"false";return e}};var p={mode:"onBlur",shouldFocusError:true,shouldScrollToError:true};var g=function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};var{id:t,defaultValues:i={}}=e,s=(0,n._)(e,["id","defaultValues"]);var l=(0,a._)({},p,s);var u={config:l,formId:t,fields:{},values:(0,a._)({},i),errors:{},touchedFields:{},dirtyFields:{},isValid:true,isSubmitting:false,isValidating:false,isResetting:false,cleanup:undefined,lastIsDirty:false,init(){this.isValid=true;this.isSubmitting=false;this.isValidating=false;this.lastIsDirty=false;if(this.formId){document.dispatchEvent(new CustomEvent(h/* .TUTOR_CUSTOM_EVENTS.FORM_REGISTER */.T.FORM_REGISTER,{detail:{id:this.formId,instance:this}}))}this.setupFormListeners();this.dispatchStateChange();// Initial dispatch
9 },destroy(){var e,t;(e=(t=this).cleanup)===null||e===void 0?void 0:e.call(t);this.clearAllState()},dispatchStateChange(){if(!this.formId){return}var e=Object.values(this.dirtyFields).some(Boolean);if(e===this.lastIsDirty){return}this.lastIsDirty=e;document.dispatchEvent(new CustomEvent(h/* .TUTOR_CUSTOM_EVENTS.FORM_STATE_CHANGE */.T.FORM_STATE_CHANGE,{detail:{id:this.formId,isDirty:e}}))},register(e,t){var i=this;var r=i.$el;var a;var s=(a=r===null||r===void 0?void 0:r.type)!==null&&a!==void 0?a:"text";var n=s==="checkbox";var l=s==="file";var u=this.fields[e];var o=(u===null||u===void 0?void 0:u.ref)===r;// Treat as checkbox group only when a different checkbox with the same name already exists; avoids upgrading a single checkbox to an array during re-registration (e.g., after DOM reorder).
10 var d=n&&(u===null||u===void 0?void 0:u.type)==="checkbox"&&!o;var h;if(d){// Ensure array type for checkbox groups and include any existing checked value
11 var f=this.values[e];var v=Array.isArray(f)?[...f]:[];var c=u===null||u===void 0?void 0:u.ref;var m;var y=(m=c===null||c===void 0?void 0:c.checked)!==null&&m!==void 0?m:typeof(u===null||u===void 0?void 0:u.defaultValue)==="boolean"?u.defaultValue:false;if(y){var p;var g=(p=c===null||c===void 0?void 0:c.value)!==null&&p!==void 0?p:"on";if(!v.includes(g)){v.push(g)}}if(r===null||r===void 0?void 0:r.checked){var S;var b=(S=r.value)!==null&&S!==void 0?S:"on";if(!v.includes(b)){v.push(b)}}h=v}else if(n){var $,F;h=(F=($=this.values[e])!==null&&$!==void 0?$:r===null||r===void 0?void 0:r.checked)!==null&&F!==void 0?F:false}else{var M;h=(M=this.values[e])!==null&&M!==void 0?M:""}this.fields[e]={name:e,rules:t,defaultValue:h,ref:r,type:s,isCheckboxArray:d};// Force upgrade value to array if a collision is detected
12 if(d&&!Array.isArray(this.values[e])){this.values[e]=h}else{var _,E;var V;(V=(_=this.values)[E=e])!==null&&V!==void 0?V:_[E]=h}var D=d?"$event.target.value":n?"$event.target.checked":"$event.target.value";var A={name:e,"x-ref":e,":aria-invalid":'!!errors["'.concat(e,'"]'),":class":"{\n 'tutor-input-error': errors[\"".concat(e,"\"],\n 'tutor-input-touched': touchedFields[\"").concat(e,"\"],\n 'tutor-input-dirty': dirtyFields[\"").concat(e,'"]\n }')};if(!l){A["x-model"]='values["'.concat(e,'"]');A["@input"]="handleFieldInput('".concat(e,"', ").concat(D,", $event.target)");A["@blur"]="handleFieldBlur('".concat(e,"', ").concat(D,")")}return A},handleCheckboxArrayInput(e,t){var i=this.fields[e];var r=this.values[e];var a=Array.isArray(r)?[...r]:[];// Use the passed element (from $event.target) or try to get from $refs
13 var s=t||this.$refs[e];if(!s)return;var n=s.value;var l=s.checked;var u;if(l){u=a.includes(n)?a:[...a,n]}else{u=a.filter(e=>e!==n)}var o=Array.isArray(i.defaultValue)?i.defaultValue:[];// Sort to compare content regardless of order
14 var d=JSON.stringify(u.sort())!==JSON.stringify(o.sort());this.values[e]=u;this.dirtyFields[e]=d;var h=this.config.mode==="onChange"||this.touchedFields[e];if(h){this.validateField(e,u)}else{this.dispatchStateChange()}},handleFieldInput(e,t,i){var r;var a=this.fields[e];if(a===null||a===void 0?void 0:a.isCheckboxArray){this.handleCheckboxArrayInput(e,i);return}// Original logic for non-checkbox-array fields
15 var s=a===null||a===void 0?void 0:(r=a.rules)===null||r===void 0?void 0:r.numberOnly;var n=typeof s==="object"&&s.allowNegative;var l=typeof s==="object"&&s.whole;var u=s?(0,f/* .parseNumberOnly */.T)(t,n,l):t;var o;// Only mark as dirty if the value is different from the baseline
16 var d=String(u)!==String((o=a===null||a===void 0?void 0:a.defaultValue)!==null&&o!==void 0?o:"");this.values[e]=u;this.dirtyFields[e]=d;this.updateFieldRef(e);if(s){var h;var v=this;var c=v.$refs;if((h=c[e])===null||h===void 0?void 0:h._x_model){var m;(m=c[e]._x_model)===null||m===void 0?void 0:m.set(u)}}var y=this.config.mode==="onChange";if(y){this.validateField(e,s?u:t)}else{this.dispatchStateChange()}},handleFieldBlur(e,t){this.touchedFields[e]=true;this.updateFieldRef(e);var i=this.config.mode==="onBlur"||this.config.mode==="onChange";if(i){this.validateField(e,t)}else{this.dispatchStateChange()}},watch(e){return e?this.values[e]:(0,a._)({},this.values)},setValue(e,t){var i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};var r;var{shouldValidate:a=false,shouldTouch:s=false,shouldDirty:n=true}=i;this.values[e]=t;if(s)this.touchedFields[e]=true;if(n){var l=this.fields[e];// Handle array comparison for checkbox arrays
17 if(Array.isArray(t)&&Array.isArray(l===null||l===void 0?void 0:l.defaultValue)){this.dirtyFields[e]=JSON.stringify(t.sort())!==JSON.stringify(l.defaultValue.sort())}else{var u;this.dirtyFields[e]=String(t)!==String((u=l===null||l===void 0?void 0:l.defaultValue)!==null&&u!==void 0?u:"")}}var o=(r=this.fields[e])===null||r===void 0?void 0:r.ref;if(o&&this.fields[e].type!=="file"){// For checkbox arrays, we need to update all checkboxes with this name
18 if(Array.isArray(t)&&o.type==="checkbox"){this.syncCheckboxArray(e,t)}else{m.updateElementValue(o,t)}}if(a){this.validateField(e,t)}else{this.dispatchStateChange()}},getValue(e){return this.values[e]},setFocus(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};var i=this.fields[e];var r=i===null||i===void 0?void 0:i.ref;if(r&&m.isElementVisible(r)){m.focusElement(r,{shouldSelect:t.shouldSelect,shouldScroll:this.config.shouldScrollToError})}},trigger(e){return(0,r._)(function*(){this.isValidating=true;try{if(typeof e==="string"){return yield this.validateSingleField(e)}if(Array.isArray(e)){return yield this.validateMultipleFields(e)}return yield this.validateAllFields()}finally{this.isValidating=false;this.dispatchStateChange()}}).call(this)},validateField(e,t){return(0,r._)(function*(){var i=this.fields[e];var r=yield c(e,t,i===null||i===void 0?void 0:i.rules);if(r){this.errors[e]=r}else{delete this.errors[e]}this.updateAriaInvalidState(e);this.updateFormValidState();this.dispatchStateChange();return!r}).call(this)},validateSingleField(e){return(0,r._)(function*(){this.touchedFields[e]=true;var t=this.values[e];return yield this.validateField(e,t)}).call(this)},validateMultipleFields(e){return(0,r._)(function*(){var t=true;for(var i of e){this.touchedFields[i]=true;var r=this.values[i];var a=yield this.validateField(i,r);if(!a)t=false}return t}).call(this)},validateAllFields(){return(0,r._)(function*(){var e=true;for(var t of Object.keys(this.fields)){var i=this.values[t];var r=yield this.validateField(t,i);if(!r)e=false}return e}).call(this)},clearErrors(e){if(typeof e==="string"){this.clearSingleError(e)}else if(Array.isArray(e)){e.forEach(e=>this.clearSingleError(e))}else{Object.keys(this.fields).forEach(e=>this.clearSingleError(e))}this.updateFormValidState();this.dispatchStateChange()},setError(e,t){this.errors[e]=t;this.updateAriaInvalidState(e);this.updateFormValidState();this.dispatchStateChange()},reset(e){this.isResetting=true;if(e){// Update reactive object props instead of replacing it to maintain bindings
19 Object.keys(this.values).forEach(e=>delete this.values[e]);Object.assign(this.values,e);// Update baseline default values for all fields provided
20 Object.entries(e).forEach(e=>{var[t,i]=e;if(this.fields[t]){this.fields[t].defaultValue=i}})}else{var t=Object.keys(this.fields).reduce((e,t)=>{e[t]=this.fields[t].defaultValue;return e},{});Object.keys(this.values).forEach(e=>delete this.values[e]);Object.assign(this.values,t)}this.syncDOMWithState();this.errors={};this.touchedFields={};this.dirtyFields={};this.isValid=true;this.isSubmitting=false;this.isValidating=false;this.dispatchStateChange();// Dispatch custom event for components like WPEditor to listen to
21 if(this.formId){window.dispatchEvent(new CustomEvent(h/* .TUTOR_CUSTOM_EVENTS.FORM_RESET */.T.FORM_RESET,{detail:{formId:this.formId,defaultValues:e||Object.keys(this.fields).reduce((e,t)=>{e[t]=this.fields[t].defaultValue;return e},{})}}))}setTimeout(()=>{this.isResetting=false},0)},handleSubmit(e,t){return i=>(0,r._)(function*(){i.preventDefault();this.isSubmitting=true;try{var r=yield this.validateAllFields();if(r){yield e((0,a._)({},this.values))}else{yield t===null||t===void 0?void 0:t((0,a._)({},this.errors));if(this.config.shouldFocusError){this.focusFirstError()}}}finally{this.isSubmitting=false;this.dispatchStateChange()}}).call(this)},getFormState(){return{values:(0,a._)({},this.values),errors:(0,a._)({},this.errors),touchedFields:(0,a._)({},this.touchedFields),dirtyFields:(0,a._)({},this.dirtyFields),isValid:this.isValid,isDirty:Object.values(this.dirtyFields).some(Boolean),isSubmitting:this.isSubmitting,isValidating:this.isValidating}},isFieldVisible(e){return m.isElementVisible(e)},getFormBindings(){return{novalidate:true}},convertToFormData:y.convertToFormData.bind(y),serializeParams:y.serializeParams.bind(y),setupFormListeners(){var e=this;var t=e.$el;if(!t){this.cleanup=()=>{if(this.formId){document.dispatchEvent(new CustomEvent(h/* .TUTOR_CUSTOM_EVENTS.FORM_UNREGISTER */.T.FORM_UNREGISTER,{detail:{id:this.formId}}))}};return}var i=e=>{e.preventDefault()};t.addEventListener("submit",i);this.cleanup=()=>{t.removeEventListener("submit",i);if(this.formId){document.dispatchEvent(new CustomEvent(h/* .TUTOR_CUSTOM_EVENTS.FORM_UNREGISTER */.T.FORM_UNREGISTER,{detail:{id:this.formId}}))}}},updateFieldRef(e){var t=this;var i=t.$el;if(!i)return;var r=m.getFieldElement(i,e);var a=this.fields[e];if(r&&a){a.ref=r}},clearSingleError(e){delete this.errors[e];this.updateAriaInvalidState(e)},updateAriaInvalidState(e){var t;var i=(t=this.fields[e])===null||t===void 0?void 0:t.ref;if(!i)return;m.setAriaInvalid(i,!!this.errors[e])},updateFormValidState(){this.isValid=Object.keys(this.errors).length===0},focusFirstError(){var e=Object.keys(this.errors)[0];if(e){this.setFocus(e)}},syncDOMWithState(){for(var[e,t]of Object.entries(this.values)){var i;var r=(i=this.fields[e])===null||i===void 0?void 0:i.ref;if(r){// Handle checkbox arrays specially
22 if(Array.isArray(t)&&r.type==="checkbox"){this.syncCheckboxArray(e,t)}else{m.updateElementValue(r,t)}}}},syncCheckboxArray(e,t){var i=this;var r=i.$el.closest("form")||i.$el.parentElement;var a=r===null||r===void 0?void 0:r.querySelectorAll('input[type="checkbox"][name="'.concat(e,'"]'));if(a){a.forEach(e=>{var i=e;i.checked=t.includes(i.value)})}},clearAllState(){this.fields={};this.values={};this.errors={};this.touchedFields={};this.dirtyFields={}}};return u};var S={name:"form",component:g}}}]);