class CCFEF extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{inputTelTextArea:"textarea.ccfef_country_code_data_js",intlInputSpan:".ccfef-editor-intl-input",submitButton:"div.elementor-field-type-submit button",form:"form.elementor-form"}}}getDefaultElements(){const e=this.getSettings("selectors");return{$textArea:this.$element.find(e.inputTelTextArea),$intlSpanElement:this.$element.find(e.intlInputSpan),$submitButton:this.$element.find(e.submitButton),$form:this.$element.find(e.form)}}bindEvents(){this.telId=new Array,this.includeCountries={},this.excludeCountries={},this.defaultCountry={},this.dialCodeVisibility={},this.strictMode={},this.commonCountries={},this.iti={},this.getIntlUserData(),this.appendCountryCodeHandler(),this.addCountryCodeInputHandler(),this.customFlags(),this.removeInputTelSpanEle(),this.intlInputValidation()}appendCountryCodeHandler(){this.telId.forEach(e=>{this.addCountryCodeIconHandler(e.formId,e.fieldId,e.customId)})}addCountryCodeInputHandler(){const e=this.iti;Object.keys(e).forEach(t=>{const i=e[t],n=i.telInput;let s=i.getSelectedCountryData(),o=`+${s.dialCode}`,l=!1;const r=()=>{l=!1},a=e=>{this.customFlags();const n=i.getSelectedCountryData(),a=`+${n.dialCode}`;if("keydown"===e.type||"input"===e.type)l=!0,clearTimeout(r),setTimeout(r,400),s.dialCode!==n.dialCode?s=n:s.dialCode===n.dialCode&&s.iso2!==n.iso2&&i.setCountry(s.iso2);else if("countrychange"===e.type){if(l)return;s=n}e.currentTarget.value.startsWith(a.replace("+",""))?this.updateCountryCodeHandler(e.currentTarget,"+",o,this.dialCodeVisibility[t]):(this.updateCountryCodeHandler(e.currentTarget,a,o,this.dialCodeVisibility[t]),o=a)};n.addEventListener("keydown",a),n.addEventListener("input",a),n.addEventListener("countrychange",a)})}addCountryCodeIconHandler(e,t,i){const n=CCFEFCustomData.pluginDir+"assets/intl-tel-input/js/utils.min.js",s=jQuery(`.elementor-widget.elementor-widget-form[data-id="${e}"] .elementor-field-type-tel.elementor-field-group input[type="tel"]#${i}`)[0];if(void 0!==s){let i=[],o=[],l="in";const r=["in","us","gb","ru","fr","de","br","cn","jp","it"],a=`${e}${t}`;if(this.includeCountries.hasOwnProperty(a)&&this.includeCountries[a].length>0&&(l=this.includeCountries[a][0],i=[...this.includeCountries[a]]),this.excludeCountries.hasOwnProperty(a)&&this.excludeCountries[a].length>0){let e=r.filter(e=>!this.excludeCountries[a].includes(e));l=e[0],o=[...this.excludeCountries[a]]}this.defaultCountry[a]&&""!==this.defaultCountry[a]&&(l=this.defaultCountry[a]);const d=window.intlTelInput(s,{initialCountry:l,utilsScript:n,dialCodeVisibility:this.dialCodeVisibility[a],strictMode:"yes"===this.strictMode[a],separateDialCode:"separate"===this.dialCodeVisibility[a],formatOnDisplay:!1,formatAsYouType:!0,autoFormat:!1,containerClass:"cfefp-intl-container",useFullscreenPopup:!1,onlyCountries:i,excludeCountries:o,customPlaceholder:(e,t)=>{if(this.commonCountries[a])return"No country found";if(!t||!e||!t.dialCode)return"No country found";let i=e;"in"===t.iso2&&(i=e.replace(/^0+/,""));const n="separate"===this.dialCodeVisibility[a]||"hide"===this.dialCodeVisibility[a]?`${i}`:`+${t.dialCode} ${i}`;return n}});if("separate"===this.dialCodeVisibility[a]){const e=document.createElement("style");e.textContent="\n .cfefp-intl-container .iti__selected-dial-code,\n .cfefp-intl-container .iti__selected-flag {\n color: var(--e-form-field-text-color, #7a7a7a) !important;\n }\n .cfefp-intl-container .iti__selected-dial-code {\n font-size: inherit !important;\n font-family: inherit !important;\n line-height: inherit !important;\n }\n ",document.head.appendChild(e)}const u=document.querySelector(`.elementor-widget.elementor-widget-form[data-id="${e}"] .ccfef-editor-intl-input[data-field-id="${t}"]`),c=u?u.getAttribute("data-common-countries"):"";if("same"===c&&this.commonCountries[a]&&""!==i&&""!==o){const e=d.countryList;e&&e.classList.contains("iti__country-list")&&(e.style.display="none")}else{const e=d.countryList;if(e&&e.classList.contains("iti__country-list")){const t=e.querySelectorAll(".iti__country");t.forEach(function(e){const t=e.getAttribute("data-country-code");o.includes(t)&&(e.style.display="none")});const n=Array.from(t).filter(e=>"none"!==e.style.display),s=n.filter(e=>{const t=e.getAttribute("data-country-code");return i.includes(t)});if(s.length>0){const e=s.find(e=>"true"===e.getAttribute("aria-selected"));if(!e){const e=s[0];e.setAttribute("aria-selected","true");const t=e.getAttribute("data-country-code");d.setCountry(t)}}}}s.removeAttribute("pattern"),this.iti[e+t]=d}}updateCountryCodeHandler(e,t,i,n){let s=e.value;if(!(t&&"+undefined"===t||["","+"].includes(s)))if(t!==i&&(s=s.replace(new RegExp(`^\\${i}`),"")),s.startsWith(t)){if(s.length>12){const i=t.replace("+",""),n=`+${i}${i}`;s.startsWith(n)&&(e.value=`+${s.slice(t.length)}`)}}else s=s.replace(/\+/g,""),e.value="separate"===n||"hide"===n?s:t+s}customFlags(){const e=this.$element.find(".cfefp-intl-container .iti__country-container .iti__flag:not(.iti__globe)");e.each(function(){const e=this,t=e.className.split(" ");if(t[1]){const i=t[1].split("__")[1],n=CCFEFCustomData.pluginDir+`assets/flags/${i}.svg`;e.style.backgroundImage=`url('${n}')`}})}removeInputTelSpanEle(){this.$element.find("span.ccfef-editor-intl-input").remove()}getIntlUserData(){const e=this.elements.$intlSpanElement,t=[];e.each((e,i)=>{const n=jQuery(i),s=n.data("include-countries"),o=n.data("exclude-countries"),l=n.data("defaultCountry"),r=n.data("common-countries"),a=n.data("dial-code-visibility"),d=n.data("strict-mode"),u=n.data("id"),c=n.data("field-id"),f=n.closest(".elementor-element.elementor-widget-form").data("id"),m=`${f}${c}`;if("same"===r&&""===s&&""!==o)this.commonCountries[m]=!0;else{if(""!==s&&isNaN(s)){const e=s.split(",");this.includeCountries[m]=e}if(""!==o&&isNaN(o)){const e=o.split(",");this.excludeCountries[m]=e}if("same"!==r&&""!==s&&""!==o&&isNaN(s)){const e=s.split(",").map(e=>e.trim());if(isNaN(o)){const t=o.split(",").map(e=>e.trim()),i=e.every(e=>t.includes(e));i&&(this.commonCountries[m]=!0)}}""!==d&&(this.strictMode[m]=d),""!==a&&(this.dialCodeVisibility[m]=a),""!==l&&(this.defaultCountry[m]=l)}t.includes(m)||(this.telId.push({formId:f,fieldId:c,customId:u}),t.push(m))})}validateTelInputs(e,t="submit"){const i=this.iti;Object.keys(i).length>0&&Object.keys(i).forEach(n=>{const s=i[n],o=s.telInput;if(jQuery(o).closest(".elementor-field-type-tel").hasClass("cfef-hidden"))return void(o.value="+1234567890");if(""!==o.value){o.value=o.value.replace(/[^0-9+]/g,"");const e=s.getSelectedCountryData(),t=`+${e.dialCode}`;"separate"!==this.dialCodeVisibility[n]&&"hide"!==this.dialCodeVisibility[n]||o.value.startsWith("+")||(o.value=t+o.value)}const l=o.closest(".elementor-field-group"),r=l.querySelector(".cfefp-intl-container");r&&o.offsetHeight&&r.style.setProperty("--cfefp-intl-tel-button-height",`${o.offsetHeight}px`);const a=jQuery(o).parent();a.find("span.elementor-message").remove();const d=CCFEFCustomData.errorMap;let u='';if(""!==o.value)if(s.isValidNumber()){jQuery(o).closest(".cfefp-intl-container").removeClass("elementor-error");const e=this.elements.$form.find(".mask-error").filter(function(){return"flex"===jQuery(this).css("display")});0===e.length&&this.elements.$form[0].classList.remove("elementor-form-waiting")}else{const i=s.getValidationError();if(void 0!==i&&d[i]){if("separate"===this.dialCodeVisibility[n]||"hide"===this.dialCodeVisibility[n]){const e=s.getSelectedCountryData(),t=`+${e.dialCode}`;o.value.startsWith(t)&&(o.value=o.value.substring(t.length))}u+=d[i]+"",jQuery(o).closest(".cfefp-intl-container").addClass("elementor-error"),jQuery(o).after(u),e.preventDefault(),"submit"===t&&this.elements.$form[0].classList.add("elementor-form-waiting")}}})}intlInputValidation(){this.elements.$submitButton.on("click",e=>{this.validateTelInputs(e,"button")}),this.elements.$form.on("submit",e=>{this.validateTelInputs(e,"submit")})}}jQuery(window).on("elementor/frontend/init",()=>{const e=e=>{elementorFrontend.elementsHandler.addHandler(CCFEF,{$element:e})};elementorFrontend.hooks.addAction("frontend/element_ready/form.default",e)});