"use strict";const WPFormsCalculations=window.WPFormsCalculations||function(e,r,d){const t={};let n={};const o={},u={},c={},f={innerFunctions:{},init(){d(e).on("wpformsReady",f.setup)},setup(){t.$forms=d("form.wpforms-form"),t.$document=d(e),c.fieldsDisabledCalc={},f.initModules(),f.initFormFieldsRegistry(),t.$document.trigger("wpformsCalculationsSetup")},events(){t.$document.on("input change",".wpforms-field:not(.wpforms-calculations-field) :input",WPFormsUtils.debounce(f.inputEvent,50)).on("wpformsFormAbandonmentGetFormDataBefore",f.formAbandonmentGetFormDataBefore)},functionsLoaded(){f.initFormulasRegistry(),f.events(),f.triggerAllFormsCalculations(),t.$document.trigger("wpformsCalculationsReady")},initModules(){var e=wpforms_calculations.debug?"./functions.js":"./functions.min.js",t=wpforms_calculations.debug?"./inner-functions.js":"./inner-functions.min.js",l=wpforms_calculations.debug?"./modules.es5.js":"./modules.es5.min.js";Promise.all([import(e),import(t),import(l)]).then(([e,t])=>{n=e.default(),f.innerFunctions=t.default(),f.functionsLoaded()})},initFormFieldsRegistry(){t.$forms.each(function(){var e=d(this),t=e.data("formid");u[t]=f.getSingleFormFieldsValues(e)})},initFormulasRegistry(){var e;for(const t in wpforms_calculations.code){o[t]={};for(const l in wpforms_calculations.code[t])e=wpforms_calculations.code[t][l],e=`

						// Define functions object.
						const $${wpforms_calculations.functionsArrayName} = allowedFunctions;

						// Define inner functions object.
						const $${wpforms_calculations.innerFunctionsArrayName} = WPFormsCalculations.innerFunctions;

						// Define result variable.
						let $${wpforms_calculations.resultVarName} = '';

						// Define fields variables.
						${f.getFormulaFieldsVariables(t)}

						try {
							${e}
						} catch ( error ) {
							WPFormsCalculations.debug( error, { type: 'error', formId: ${t}, fieldId: ${l} } );
						}

						// Detect infinity, which is means that the formula tried division by zero.
						// This approach doesn't cover all cases, but it's better than nothing.
						if (
							typeof $${wpforms_calculations.resultVarName} === 'number' &&
							! isFinite( $${wpforms_calculations.resultVarName} )
						) {
							WPFormsCalculations.debug( '${wpforms_calculations.strings.errorDivisionByZero.replace()}', { type: 'error', formId: ${t}, fieldId: ${l} } );

							return 0;
						}

						return $${wpforms_calculations.resultVarName};
					`,o[t][l]=new Function("formId","fieldId","fields","eventFieldId","allowedFunctions","WPFormsCalculations",e)}},getFormulaFieldsVariables(e){if(!u[e]||!u[e].fields)return"";var t=u[e].fields,l=[];let i,s;for(const r in t)if(i=t[r],s="$F"+r,f.isObject(i))for(const a in t[r])s="$F"+r,s+="value"===a?"":"_"+a,l.push(`${s} = fields[${r}]['${a}']`);else l.push(`${s} = fields[${r}]`);return"const "+l.join(",\n")+";"},triggerAllFormsCalculations(){t.$forms.each(function(){f.inputEvent.call(d(this).find(":input:first").get(0),{})})},getSingleFormFieldsValues(e){var t=e.find("[name]");let l={};c.arrayNames={};for(let e=0;e<t.length;e++)l=f.addSingleInputValueToFormFieldsValuesObject(d(t[e]),l);return l=f.updateSingleFormFieldsValues(l,e)},addSingleInputValueToFormFieldsValuesObject(e,t){var l=e.closest(".wpforms-field"),i=l.data("field-id"),s=e.prop("name")||"";return l.length&&void 0!==i&&s.startsWith("wpforms")&&(s=l.data("field-type"),f.isAllowedField(s))&&null!==(l=f.getFieldInputValueObjectFromDOM(e))&&((t=d.extend(!0,t,l)).fields[i]=f.addAmountToPaymentFieldValue(t.fields[i],e,s)),t},updateSingleFormFieldsValues(e,t){var l,i,s=t.data("formid"),t=wpforms_calculations.formFields[s];if(e.fields&&t)for(const r in e.fields)f.isObject(e.fields[r])&&void 0===e.fields[r].value&&(l=f.updateSingleFormFieldValue(s,r,e),i=Object.values(l.fieldValueCombine).filter(function(e){return""!==e&&!1!==e}),e.fields[r]=l.formFieldsValues.fields[r],e.fields[r].value=i.join(l.separator));return e},updateSingleFormFieldValue(e,t,l){var i,e=wpforms_calculations.formFields[e][t].type;let s=d.extend(!0,{},l.fields[t]),r="\n";return["name","date-time"].includes(e)&&(r=" "),"date-time"===e&&f.isObject(l.fields[t].date)?(i=Object.values(l.fields[t].date).map(function(e){return e?e.toString().padStart(2,"0"):""}),l.fields[t].date=i.join("/"),s.date=l.fields[t].date):"email"===e?(l.fields[t].value=s.primary,delete s.secondary):"address"===e?""===(s=f.toStrings(s)).address1&&""===s.city?(l.fields[t].value="",s={}):(s.city.length&&s.state.length?s.city=s.city+", "+s.state:s.state.length&&(s.city=s.state),delete s.state,s.country=s.country||"US",l.fields[t].country=s.country):"checkbox"!==e&&"payment-checkbox"!==e||(r=",\n",delete s.amount),{separator:r,formFieldsValues:l,fieldValueCombine:s}},addAmountToPaymentFieldValue(e,t,l){let i,s;var r;return l.startsWith("payment-")&&("payment-checkbox"===l&&(r=t.is(":checked")?f.amountSanitize(t.data("amount")):0,i=void 0,s=e.amount?e.amount+r:r),"payment-single"!==l&&"payment-total"!==l||(s=f.amountSanitize(e),i=wpforms.amountFormatSymbol(s)),"payment-multiple"===l&&(i=e,s=(t.is(":checked")?t:t.closest("ul").find("input:checked")).data("amount"),s=f.amountSanitize(s)),"payment-select"===l&&(i=e,s=f.amountSanitize(t.find(":selected").data("amount"))),e=f.isObject(e)?e:{},void 0!==i&&(e.value=i),e.amount=s),e},getFieldInputValueObjectFromDOM(l){var i=l.prop("name").replace(/^wpforms\[/gi,"").replace(/]/gi,"").split("["),s=l.is(":checkbox"),r=l.is("select");let a=f.getFieldInputValueRaw(l),n={};for(let t=i.length-1;0<=t;t--){let e=i[t]||"";if(0===e.length&&s&&(n={},o=l.attr("id").match(/[0-9]+$/g),c.arrayNames[i[t-1]]=o[0],e=c.arrayNames[i[t-1]]),0===e.length&&r&&(e="value"),t<i.length-1){var o=n;(n={})[e]=o}else{var d=parseFloat(a);if("true"===a)a=!0;else if("false"===a)a=!1;else if(isNaN(d)||d.toString()!==a){if("string"==typeof a&&("{"===a[0]||"["===a[0]))try{a=JSON.parse(a)}catch(e){}}else a=d;n[e]=a}}return n},getFieldInputValueRaw(e){var t=e.closest(".wpforms-field").data("field-type");let l;if(t.startsWith("payment-"))return f.getPaymentFieldInputValueRaw(e,t);switch(t){case"checkbox":return e.is(":checked")?e.val():"";case"radio":case"rating":return(l=(e.is(":checked")?e:e.closest("ul, .wpforms-field-rating-items").find("input:checked")).val())||"";case"number":return 0===(l=e.val()).length?0:Number(e.val());case"phone":return e.siblings(".wpforms-smart-phone-field").val();case"select":return l=e.val(),Array.isArray(l)?l.join(",\n"):l;default:return e.val()}},getPaymentFieldInputValueRaw(e,t){var l,i;switch(t){case"payment-checkbox":return e.is(":checked")?e.closest("li").find(`label[for="${e.attr("id")}"]`).text().replace(" – "," - "):"";case"payment-multiple":return l=(i=e.closest("ul").find("input:checked")).attr("id"),l=i.closest("ul").find(`label[for="${l}"]`),i.length&&l.length?l.text().replace(" – "," - "):"";case"payment-select":return e.find(":selected:not(:disabled)").text().replace(" – "," - ");case"payment-single":return i=e.closest(".wpforms-field").find(".wpforms-price"),e.is(":hidden")&&i.length?i.text():e.val();default:return e.val()}},inputEvent(e){var t,l=d(this),i=l.closest(".wpforms-form"),s=i.data("formid");s&&void 0!==wpforms_calculations.code[s]&&(t=d(e.target).closest(".wpforms-field").data("field-id"),c.shouldProcessConditionals=!1,c.fieldsDisabledCalc[s]=c.fieldsDisabledCalc[s]||[],f.calculateAllFields(s,i,e,t),Object.keys(c.fieldsResults).length)&&(r.wpformsconditionals&&c.shouldProcessConditionals&&r.wpformsconditionals.processConditionals(l,!0),wpforms.amountTotal(i.find(".wpforms-payment-total"),!0),f.calculateAllFields(s,i,e,t))},calculateAllFields(e,t,l,i){u[e]=f.getSingleFormFieldsValues(t),c.fieldsResults={};for(const a in wpforms_calculations.code[e]){var s,r;c.fieldsDisabledCalc[e].includes(Number(a))||void 0===c.fieldsResults[a]&&(c.fieldsCalcStack=[],s=d(`#wpforms-${e}-field_${a}-container`),r=f.getCalcResult(e,Number(a),l,i),f.updateFieldValue(r,s,a,e),c.shouldProcessConditionals=c.shouldProcessConditionals||s.hasClass("wpforms-conditional-trigger"))}},getCalcResult(e,t,l,i){if(!o[e]||!o[e][t])return"";c.fieldsCalcStack.push(t);var s=u[e].fields;if(f.preCalcFields(e,t,l,i),void 0!==c.fieldsResults[t])return c.fieldsResults[t];c.fieldFormulaArgs=c.fieldFormulaArgs||{formId:e,fieldId:t,fields:s,eventFieldId:i,allowedFunctions:n,app:f};var r=f.isObject(s[t])?d.extend({},s[t]):s[t];let a=o[e][t](e,t,s,i,n,f);return"payment-single"===wpforms_calculations.formFields[e][t].type&&a<0&&(a=0),c.fieldsResults[t]=a,f.debug(`Field #${t} calculated:`,{formId:e,fieldId:t,code:o[e][t].toString(),"value before calc":r,"value after calc":a,eventFieldId:i,event:l,fields:s},{type:"debug"}),a},preCalcFields(e,t,l,i){var s=wpforms_calculations.code[e][t];if(s&&void 0===c.fieldsResults[t])for(const o of s.matchAll(/\$F\d*/gm)){var r,a,n=Number(o[0].replace("$F",""));c.fieldsDisabledCalc[e].includes(n)||n!==Number(t)&&void 0===c.fieldsResults[n]&&wpforms_calculations.code[e][n]&&(c.fieldsCalcStack.includes(n)?(c.fieldsResults[n]="",c.fieldsCalcStack.push(n),c.fieldsDisabledCalc[e].push(n),d(`#wpforms-${e}-field_`+n).attr({readonly:!1,title:!1}),f.debug(wpforms_calculations.strings.errorCircularReference.replace("%1$s",n),{type:"error",formId:e,fieldId:t})):(r=d(`#wpforms-${e}-field_${n}-container`),a=f.getCalcResult(e,n,l,i),f.updateFieldValue(a,r,n,e)))}},updateFieldValue(l,i,s,r){var a=i.data("field-type");if("payment-single"===a)f.updatePaymentSingleFieldValue(l,i,s,r);else{let e=l,t=l;["number","number-slider"].includes(a)&&(t=Number(l)),f.isNumeric(e)||f.isString(e)||(e=""),i.find(":input").val(e).attr("title",wpforms_calculations.strings.readonlyInputTitle),u[r].fields[s]=t}},updatePaymentSingleFieldValue(e,t,l,i){var s=wpforms.amountFormatSymbol(e);t.find(".wpforms-single-item-price .wpforms-price").text(s),t.find(":input").val(s).attr("title",wpforms_calculations.strings.readonlyInputTitle),u[i].fields[l].value=s,u[i].fields[l].amount=Number(Number(e).toFixed(2))},getFormFieldsData(e){return wpforms_calculations.formFields[e]},getFormFieldsValuesFromRegistry(e){return u[e]&&u[e].fields?u[e].fields:null},getFieldValueFromRegistry(e,t){return u[e]&&u[e].fields?u[e].fields[t]:null},getFieldFormulaArgs(){return c.fieldFormulaArgs},isObject(e){return"object"==typeof e&&!Array.isArray(e)&&null!==e},isNumeric(e){return!isNaN(parseFloat(e))&&isFinite(e)},isString(e){return"string"==typeof e||e instanceof String},toStrings(e){if(!f.isObject(e))return e;var t={};for(const l in e)Object.prototype.hasOwnProperty.call(e,l)&&(t[l]=e[l]?e[l].toString():"");return t},isAllowedField(e){return Object.keys(wpforms_calculations.allowedFields).includes(e)},amountSanitize(e){return Number(wpforms.amountSanitize(e||"0"))},debug(...e){var t,l,i,s,r=0<arguments.length?arguments[arguments.length-1]:{},a=r.type||"log";r.type&&e.pop(),(wpforms_calculations.calcDebug&&"debug"===a||["log","error"].includes(a))&&(t=(l=(new Error).stack.toString().split(/\r\n|\n/)[2].split("/"))[0].replace(/\s\(http.*$/,""),l=l[l.length-1].replace(")",""),i="error"===a?"#aa0000":"#cd6622",s="error"===a?wpforms_calculations.strings.errorPrefix:wpforms_calculations.strings.debugPrefix,"error"===a&&r.formId&&r.fieldId&&e.unshift(wpforms_calculations.strings.errorFormFieldPrefix.replace("%1$s",r.formId).replace("%2$s",r.fieldId)),console.group("%c"+s,"color: "+i,t+" ("+l+")"),console.log(...e),console.groupEnd())},formAbandonmentGetFormDataBefore(e,t){WPFormsFormAbandonment&&(t=d(`#wpforms-form-${t} :input:first`).get(0),e.target=t,f.inputEvent.call(t,e),WPFormsFormAbandonment.prepData(e))}};return f}(document,window,jQuery);WPFormsCalculations.init();