Changeset 3356741
- Timestamp:
- 09/05/2025 01:42:48 PM (6 months ago)
- Location:
- vindi-pagamentos/trunk
- Files:
-
- 36 added
- 22 edited
-
app/Controllers/Gateway (added)
-
app/Controllers/Gateway/AbstractGatewayConfigController.php (added)
-
app/Controllers/Gateway/BilletConfigController.php (added)
-
app/Controllers/Gateway/BolepixConfigController.php (added)
-
app/Controllers/Gateway/CreditConfigController.php (added)
-
app/Controllers/Gateway/MultiPaymentConfigController.php (added)
-
app/Controllers/Gateway/PixConfigController.php (added)
-
app/Controllers/SettingsController.php (added)
-
app/Controllers/WizardController.php (added)
-
app/Core/Boot.php (modified) (2 diffs)
-
app/Core/Config.php (modified) (1 diff)
-
app/Core/Functions.php (modified) (3 diffs)
-
app/Services/WooCommerce/Blocks/PersonType.php (modified) (2 diffs)
-
app/Services/WooCommerce/Checkout/PaymentProcessor.php (modified) (1 diff)
-
app/Views/Admin/onboarding (added)
-
app/Views/Admin/onboarding/general-settings.php (added)
-
app/Views/Admin/onboarding/initial-setup.php (added)
-
app/Views/Admin/onboarding/payment-methods.php (added)
-
app/Views/Admin/onboarding/setup-credentials-payments.php (added)
-
app/Views/Admin/payment-config (added)
-
app/Views/Admin/payment-config/bolepix-config.php (added)
-
app/Views/Admin/payment-config/boleto-config.php (added)
-
app/Views/Admin/payment-config/credit-config.php (added)
-
app/Views/Admin/payment-config/multipayment-config.php (added)
-
app/Views/Admin/payment-config/pix-config.php (added)
-
app/Views/Admin/wizard (added)
-
app/Views/Admin/wizard/address-step.php (added)
-
app/Views/Admin/wizard/features-step.php (added)
-
app/Views/Admin/wizard/login-step.php (added)
-
app/Views/Admin/wizard/register-step.php (added)
-
app/Views/Admin/wizard/success-step.php (added)
-
app/Views/Admin/wizard/token-step.php (added)
-
app/Views/Admin/wizard/welcome-step.php (added)
-
app/Views/Admin/wizard/wizard-wrapper.php (added)
-
assets/blocks/components/PersonType/block.json (modified) (1 diff)
-
assets/scripts/admin/wizard-login.js (added)
-
assets/scripts/admin/wizard.js (modified) (12 diffs)
-
assets/styles/admin/common (added)
-
assets/styles/admin/common/_shared.scss (added)
-
assets/styles/admin/index.scss (modified) (1 diff)
-
assets/styles/admin/payment-config (added)
-
assets/styles/admin/payment-config/index.scss (added)
-
assets/styles/admin/wizard (added)
-
assets/styles/admin/wizard/index.scss (added)
-
composer.json (modified) (1 diff)
-
dist/blocks/person-type/index.asset.php (modified) (1 diff)
-
dist/blocks/person-type/index.js (modified) (1 diff)
-
dist/scripts/admin/index.js (modified) (1 diff)
-
dist/scripts/admin/index.js.map (modified) (1 diff)
-
dist/styles/admin/index.css (modified) (1 diff)
-
dist/styles/admin/index.css.map (modified) (1 diff)
-
package.json (modified) (1 diff)
-
readme.txt (modified) (2 diffs)
-
vendor/autoload.php (modified) (1 diff)
-
vendor/composer/autoload_real.php (modified) (2 diffs)
-
vendor/composer/autoload_static.php (modified) (2 diffs)
-
vendor/composer/installed.php (modified) (2 diffs)
-
vindi-pagamentos.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
vindi-pagamentos/trunk/app/Core/Boot.php
r3344656 r3356741 69 69 ], 999); 70 70 71 add_action('wp_ajax_vindi_mark_store_tested', [ 72 new \VindiPagamentos\Controllers\SettingsController(), 73 'markStoreAsTested' 74 ]); 75 71 76 add_filter('woocommerce_payment_gateways', [ 72 77 new WooCommerce(), … … 105 110 'processInstallmentsRequest' 106 111 ], 999); 112 113 new \VindiPagamentos\Controllers\WizardController(); 107 114 } 108 115 } -
vindi-pagamentos/trunk/app/Core/Config.php
r3352041 r3356741 73 73 public function pluginVersion(): string 74 74 { 75 return '1.0. 3';75 return '1.0.4'; 76 76 } 77 77 } -
vindi-pagamentos/trunk/app/Core/Functions.php
r3344701 r3356741 8 8 use VindiPagamentos\Services\WooCommerce\Logs\Logger; 9 9 use VindiPagamentos\Controllers\InstallmentsController; 10 use VindiPagamentos\Controllers\SettingsController; 11 10 12 11 13 add_filter('woocommerce_subscriptions_scheduler', function () { … … 14 16 final class Functions 15 17 { 18 private $settingsController; 16 19 public function initialize(): void 17 20 { … … 89 92 ); 90 93 } 94 $this->settingsController = new SettingsController(); 95 $this->settingsController->addAdminMenuPage(); 91 96 } 92 97 -
vindi-pagamentos/trunk/app/Services/WooCommerce/Blocks/PersonType.php
r3344656 r3356741 30 30 $data = isset($body['extensions']['vindi-pagamentos']) ? $body['extensions']['vindi-pagamentos'] : []; 31 31 32 $personType = isset($data['_billing_persontype']) ? $data['_billing_persontype'] : '1'; 32 $personType = isset($data['_billing_persontype']) ? $data['_billing_persontype'] : ''; 33 34 if (empty($personType)) { 35 $personType = $order->get_meta('billing_persontype'); 36 } 37 38 if (empty($personType)) { 39 $cpf = isset($data['_billing_cpf']) ? $data['_billing_cpf'] : $order->get_meta('_billing_cpf'); 40 $cnpj = isset($data['_billing_cnpj']) ? $data['_billing_cnpj'] : $order->get_meta('_billing_cnpj'); 41 42 if (!empty($cnpj)) { 43 $personType = '2'; 44 } elseif (!empty($cpf)) { 45 $personType = '1'; 46 } 47 } 33 48 34 49 switch ($personType) { … … 40 55 break; 41 56 default: 42 throw new MissingDocumentException(__('Tipo de Pessoa', 'vindi-pagamentos')); 57 $cpf = isset($data['_billing_cpf']) ? $data['_billing_cpf'] : $order->get_meta('_billing_cpf'); 58 $cnpj = isset($data['_billing_cnpj']) ? $data['_billing_cnpj'] : $order->get_meta('_billing_cnpj'); 59 60 if (!empty($cnpj)) { 61 self::setCnpjMeta($data, $order); 62 } elseif (!empty($cpf)) { 63 self::setCpfMeta($data, $order); 64 } else { 65 throw new MissingDocumentException(__('Tipo de Pessoa ou documento (CPF/CNPJ)', 'vindi-pagamentos')); 66 } 43 67 break; 44 68 } 45 69 46 $order->update_meta_data('_billing_persontype', $ data['_billing_persontype']);70 $order->update_meta_data('_billing_persontype', $personType); 47 71 $order->save(); 48 72 } -
vindi-pagamentos/trunk/app/Services/WooCommerce/Checkout/PaymentProcessor.php
r3352041 r3356741 1292 1292 } 1293 1293 } 1294 1295 1294 switch ($personType) { 1296 1295 case '2': -
vindi-pagamentos/trunk/assets/blocks/components/PersonType/block.json
r3352041 r3356741 4 4 "name": "vindi-pagamentos/person-type", 5 5 "icon": "flag", 6 "version": "1.0. 3",6 "version": "1.0.4", 7 7 "title": "Woo - Tipo de Pessoa", 8 8 "description": "Definição de tipo de pessoa no checkout", -
vindi-pagamentos/trunk/assets/scripts/admin/wizard.js
r3344656 r3356741 1 class VindiWizard {1 export default class VindiWizard { 2 2 constructor() { 3 3 this.currentStep = this.detectCurrentStep(); … … 7 7 8 8 detectCurrentStep() { 9 const page = new URLSearchParams(window.location.search).get('page'); 10 11 if (page === 'vindi-wizard-register') return 'register'; 12 if (page === 'vindi-wizard-address') return 'address'; 13 return 'register'; 9 const urlParams = new URLSearchParams(window.location.search); 10 const page = urlParams.get('page'); 11 const step = urlParams.get('step'); 12 13 if (page !== 'vindi-wizard') { 14 return null; 15 } 16 17 return step || 'welcome'; 14 18 } 15 19 16 20 init() { 17 // Load saved data if on address step 18 if (this.currentStep === 'address') { 19 this.loadSavedData(); 20 } 21 22 this.setupPersonTypeToggle(); 23 this.setupFormSubmission(); 21 if (!this.currentStep) { 22 return; 23 } 24 25 this.initStepSpecific(); 26 24 27 this.setupBackButton(); 25 this.setupDocumentMasks(); 28 } 29 30 initStepSpecific() { 31 switch (this.currentStep) { 32 case 'register': 33 this.setupPersonTypeToggle(); 34 this.setupFormSubmission(); 35 this.setupDocumentMasks(); 36 break; 37 38 case 'address': 39 this.loadSavedData(); 40 this.setupFormSubmission(); 41 this.setupDocumentMasks(); 42 break; 43 44 case 'welcome': 45 break; 46 47 case 'login': 48 break; 49 50 case 'token': 51 break; 52 53 case 'features': 54 this.setupFeatureToggles(); 55 this.setupFormSubmission(); 56 break; 57 58 case 'success': 59 break; 60 } 61 } 62 63 setupFeatureToggles() { 64 const toggles = document.querySelectorAll('.vindi-wizard-switch input[type="checkbox"]'); 65 66 toggles.forEach(toggle => { 67 toggle.addEventListener('change', (e) => { 68 console.log('Feature toggle changed:', e.target.checked); 69 }); 70 }); 26 71 } 27 72 … … 50 95 51 96 setupDocumentMasks() { 52 // Assuming IMask is available53 97 const cpfInput = document.querySelector('input[name="vindi-pagamentos-cpf"]'); 54 98 const cnpjInput = document.querySelector('input[name="vindi-pagamentos-cnpj"]'); … … 75 119 setupFormSubmission() { 76 120 const submitButton = document.querySelector('.vindi-wizard-btn'); 121 const continueButton = document.querySelector('.vindi-wizard-continue'); 77 122 78 123 if (submitButton) { … … 80 125 e.preventDefault(); 81 126 this.handleFormSubmit(); 127 }); 128 } 129 130 if (continueButton) { 131 continueButton.addEventListener('click', (e) => { 132 e.preventDefault(); 133 this.handleFeaturesSubmit(); 82 134 }); 83 135 } … … 119 171 } 120 172 121 const termsAccepted = document.querySelector('input[name="vindi-pagamentos-accept-terms"]')?.checked;122 123 if ( !termsAccepted) {173 const termsAcceptedInput = document.querySelector('input[name="vindi-pagamentos-accept-terms"]'); 174 175 if (termsAcceptedInput && !termsAcceptedInput.checked) { 124 176 alert('Você deve aceitar os termos e condições para continuar.'); 125 177 return false; … … 193 245 } 194 246 247 handleFeaturesSubmit() { 248 const features = {}; 249 const toggles = document.querySelectorAll('.vindi-wizard-switch input[type="checkbox"]'); 250 251 toggles.forEach((toggle, index) => { 252 const featureNames = ['pix', 'credit', 'billet', 'bolepix', 'multipayment']; 253 if (featureNames[index]) { 254 features[featureNames[index]] = toggle.checked; 255 } 256 }); 257 258 localStorage.setItem('vindi-wizard-features', JSON.stringify(features)); 259 window.location.href = `${window.location.origin}/wp-admin/admin.php?page=vindi-wizard&step=success`; 260 } 261 195 262 async handleFormSubmit() { 196 263 if (!this.validateForm()) { … … 201 268 this.formData = { ...this.formData, ...formData }; 202 269 203 // For register step, move to address step204 270 if (this.currentStep === 'register') { 205 271 this.navigateToAddressStep(); 206 272 } 207 // For address step, submit to API208 273 else if (this.currentStep === 'address') { 209 274 await this.submitToAPI(); … … 212 277 213 278 navigateToAddressStep() { 214 // Save data to localStorage215 279 localStorage.setItem('vindi-wizard-data', JSON.stringify(this.formData)); 216 217 // Navigate to address step 218 window.location.href = `${window.location.origin}/wp-admin/admin.php?page=vindi-wizard-address`; 280 window.location.href = `${window.location.origin}/wp-admin/admin.php?page=vindi-wizard&step=address`; 219 281 } 220 282 … … 224 286 225 287 if (response.success) { 226 // Navigate to success step 227 window.location.href = `${window.location.origin}/wp-admin/admin.php?page=vindi-wizard-success`; 288 window.location.href = `${window.location.origin}/wp-admin/admin.php?page=vindi-wizard&step=token`; 228 289 } else { 229 290 alert('Erro ao criar conta: ' + response.message); … … 251 312 handleBackStep() { 252 313 if (this.currentStep === 'address') { 253 window.location.href = `${window.location.origin}/wp-admin/admin.php?page=vindi-wizard -register`;314 window.location.href = `${window.location.origin}/wp-admin/admin.php?page=vindi-wizard&step=register`; 254 315 } else if (this.currentStep === 'register') { 255 window.location.href = `${window.location.origin}/wp-admin/admin.php?page=vindi-wizard-welcome`; 316 window.location.href = `${window.location.origin}/wp-admin/admin.php?page=vindi-wizard&step=welcome`; 317 } else if (this.currentStep === 'features') { 318 window.location.href = `${window.location.origin}/wp-admin/admin.php?page=vindi-wizard&step=token`; 256 319 } 257 320 } … … 264 327 } 265 328 } 266 267 document.addEventListener('DOMContentLoaded', () => {268 new VindiWizard();269 }); -
vindi-pagamentos/trunk/assets/styles/admin/index.scss
r3344656 r3356741 11 11 } 12 12 13 .vindi-wizard-close-header { 14 position: fixed; 15 top: 20px; 16 right: 40px; 17 z-index: 999999999999999999; 18 } 19 20 .vindi-wizard-close-btn { 21 color: white; 22 border: none; 23 cursor: pointer; 24 display: flex; 25 align-items: center; 26 justify-content: center; 27 font-size: 12px; 28 transition: all 0.2s ease; 29 padding: 6px; 30 border-radius: 6px; 31 background: rgba(135, 135, 135, 0.8); 32 } 33 34 .vindi-wizard-close-btn:hover { 35 background: rgba(79, 79, 79, 0.9); 36 transform: scale(1.1); 37 } 38 13 39 // Import admin files 14 40 @import "./orders/index.scss"; 15 41 @import "./subscriptions/index.scss"; 42 @import "./wizard/index.scss"; 43 @import "./onboarding/index.scss"; 44 @import "./payment-config/index.scss"; -
vindi-pagamentos/trunk/composer.json
r3352041 r3356741 1 1 { 2 2 "name": "vindi/vindi-pagamentos", 3 "version": "1.0. 3",3 "version": "1.0.4", 4 4 "description": "WooCommerce payment plugin using Vindi gateways", 5 5 "type": "wordpress-plugin", -
vindi-pagamentos/trunk/dist/blocks/person-type/index.asset.php
r3352041 r3356741 1 <?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-element', 'wp-i18n'), 'version' => ' 62d578eaad936fac0d5c');1 <?php return array('dependencies' => array('react', 'wp-block-editor', 'wp-blocks', 'wp-element', 'wp-i18n'), 'version' => '28cebcb98b6a31c56b1b'); -
vindi-pagamentos/trunk/dist/blocks/person-type/index.js
r3352041 r3356741 1 (()=>{var t={703:(t,e,s)=>{"use strict";var i=s(414);function a(){}function n(){}n.resetWarningCache=a,t.exports=function(){function t(t,e,s,a,n,r){if(r!==i){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function e(){return t}t.isRequired=t;var s={array:t,bigint:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:n,resetWarningCache:a};return s.PropTypes=s,s}},697:(t,e,s)=>{t.exports=s(703)()},414:t=>{"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}},e={};function s(i){var a=e[i];if(void 0!==a)return a.exports;var n=e[i]={exports:{}};return t[i](n,n.exports,s),n.exports}(()=>{"use strict";const t=window.wp.blocks,e=window.React;function i(t){return"string"==typeof t||t instanceof String}function a(t){var e;return"object"==typeof t&&null!=t&&"Object"===(null==t||null==(e=t.constructor)?void 0:e.name)}function n(t,e){return Array.isArray(e)?n(t,((t,s)=>e.includes(s))):Object.entries(t).reduce(((t,s)=>{let[i,a]=s;return e(a,i)&&(t[i]=a),t}),{})}const r="NONE",u="LEFT",o="FORCE_LEFT",l="RIGHT",h="FORCE_RIGHT";function p(t){return t.replace(/([.*+?^=!:${}()|[\]/\\])/g,"\\$1")}function d(t,e){if(e===t)return!0;const s=Array.isArray(e),i=Array.isArray(t);let a;if(s&&i){if(e.length!=t.length)return!1;for(a=0;a<e.length;a++)if(!d(e[a],t[a]))return!1;return!0}if(s!=i)return!1;if(e&&t&&"object"==typeof e&&"object"==typeof t){const s=e instanceof Date,i=t instanceof Date;if(s&&i)return e.getTime()==t.getTime();if(s!=i)return!1;const n=e instanceof RegExp,r=t instanceof RegExp;if(n&&r)return e.toString()==t.toString();if(n!=r)return!1;const u=Object.keys(e);for(a=0;a<u.length;a++)if(!Object.prototype.hasOwnProperty.call(t,u[a]))return!1;for(a=0;a<u.length;a++)if(!d(t[u[a]],e[u[a]]))return!1;return!0}return!(!e||!t||"function"!=typeof e||"function"!=typeof t)&&e.toString()===t.toString()}class c{constructor(t){for(Object.assign(this,t);this.value.slice(0,this.startChangePos)!==this.oldValue.slice(0,this.startChangePos);)--this.oldSelection.start;if(this.insertedCount)for(;this.value.slice(this.cursorPos)!==this.oldValue.slice(this.oldSelection.end);)this.value.length-this.cursorPos<this.oldValue.length-this.oldSelection.end?++this.oldSelection.end:++this.cursorPos}get startChangePos(){return Math.min(this.cursorPos,this.oldSelection.start)}get insertedCount(){return this.cursorPos-this.startChangePos}get inserted(){return this.value.substr(this.startChangePos,this.insertedCount)}get removedCount(){return Math.max(this.oldSelection.end-this.startChangePos||this.oldValue.length-this.value.length,0)}get removed(){return this.oldValue.substr(this.startChangePos,this.removedCount)}get head(){return this.value.substring(0,this.startChangePos)}get tail(){return this.value.substring(this.startChangePos+this.insertedCount)}get removeDirection(){return!this.removedCount||this.insertedCount?r:this.oldSelection.end!==this.cursorPos&&this.oldSelection.start!==this.cursorPos||this.oldSelection.end!==this.oldSelection.start?u:l}}function m(t,e){return new m.InputMask(t,e)}function g(t){if(null==t)throw new Error("mask property should be defined");return t instanceof RegExp?m.MaskedRegExp:i(t)?m.MaskedPattern:t===Date?m.MaskedDate:t===Number?m.MaskedNumber:Array.isArray(t)||t===Array?m.MaskedDynamic:m.Masked&&t.prototype instanceof m.Masked?t:m.Masked&&t instanceof m.Masked?t.constructor:t instanceof Function?m.MaskedFunction:(console.warn("Mask not found for mask",t),m.Masked)}function k(t){if(!t)throw new Error("Options in not defined");if(m.Masked){if(t.prototype instanceof m.Masked)return{mask:t};const{mask:e,...s}=t instanceof m.Masked?{mask:t}:a(t)&&t.mask instanceof m.Masked?t:{};if(e){const t=e.mask;return{...n(e,((t,e)=>!e.startsWith("_"))),mask:e.constructor,_mask:t,...s}}}return a(t)?{...t}:{mask:t}}function f(t){if(m.Masked&&t instanceof m.Masked)return t;const e=k(t),s=g(e.mask);if(!s)throw new Error("Masked class is not found for provided mask "+e.mask+", appropriate module needs to be imported manually before creating mask.");return e.mask===s&&delete e.mask,e._mask&&(e.mask=e._mask,delete e._mask),new s(e)}m.createMask=f;class _{get selectionStart(){let t;try{t=this._unsafeSelectionStart}catch{}return null!=t?t:this.value.length}get selectionEnd(){let t;try{t=this._unsafeSelectionEnd}catch{}return null!=t?t:this.value.length}select(t,e){if(null!=t&&null!=e&&(t!==this.selectionStart||e!==this.selectionEnd))try{this._unsafeSelect(t,e)}catch{}}get isActive(){return!1}}m.MaskElement=_;class v extends _{constructor(t){super(),this.input=t,this._onKeydown=this._onKeydown.bind(this),this._onInput=this._onInput.bind(this),this._onBeforeinput=this._onBeforeinput.bind(this),this._onCompositionEnd=this._onCompositionEnd.bind(this)}get rootElement(){var t,e,s;return null!=(t=null==(e=(s=this.input).getRootNode)?void 0:e.call(s))?t:document}get isActive(){return this.input===this.rootElement.activeElement}bindEvents(t){this.input.addEventListener("keydown",this._onKeydown),this.input.addEventListener("input",this._onInput),this.input.addEventListener("beforeinput",this._onBeforeinput),this.input.addEventListener("compositionend",this._onCompositionEnd),this.input.addEventListener("drop",t.drop),this.input.addEventListener("click",t.click),this.input.addEventListener("focus",t.focus),this.input.addEventListener("blur",t.commit),this._handlers=t}_onKeydown(t){return this._handlers.redo&&(90===t.keyCode&&t.shiftKey&&(t.metaKey||t.ctrlKey)||89===t.keyCode&&t.ctrlKey)?(t.preventDefault(),this._handlers.redo(t)):this._handlers.undo&&90===t.keyCode&&(t.metaKey||t.ctrlKey)?(t.preventDefault(),this._handlers.undo(t)):void(t.isComposing||this._handlers.selectionChange(t))}_onBeforeinput(t){return"historyUndo"===t.inputType&&this._handlers.undo?(t.preventDefault(),this._handlers.undo(t)):"historyRedo"===t.inputType&&this._handlers.redo?(t.preventDefault(),this._handlers.redo(t)):void 0}_onCompositionEnd(t){this._handlers.input(t)}_onInput(t){t.isComposing||this._handlers.input(t)}unbindEvents(){this.input.removeEventListener("keydown",this._onKeydown),this.input.removeEventListener("input",this._onInput),this.input.removeEventListener("beforeinput",this._onBeforeinput),this.input.removeEventListener("compositionend",this._onCompositionEnd),this.input.removeEventListener("drop",this._handlers.drop),this.input.removeEventListener("click",this._handlers.click),this.input.removeEventListener("focus",this._handlers.focus),this.input.removeEventListener("blur",this._handlers.commit),this._handlers={}}}m.HTMLMaskElement=v;class C extends v{constructor(t){super(t),this.input=t}get _unsafeSelectionStart(){return null!=this.input.selectionStart?this.input.selectionStart:this.value.length}get _unsafeSelectionEnd(){return this.input.selectionEnd}_unsafeSelect(t,e){this.input.setSelectionRange(t,e)}get value(){return this.input.value}set value(t){this.input.value=t}}m.HTMLMaskElement=v;class E extends v{get _unsafeSelectionStart(){const t=this.rootElement,e=t.getSelection&&t.getSelection(),s=e&&e.anchorOffset,i=e&&e.focusOffset;return null==i||null==s||s<i?s:i}get _unsafeSelectionEnd(){const t=this.rootElement,e=t.getSelection&&t.getSelection(),s=e&&e.anchorOffset,i=e&&e.focusOffset;return null==i||null==s||s>i?s:i}_unsafeSelect(t,e){if(!this.rootElement.createRange)return;const s=this.rootElement.createRange();s.setStart(this.input.firstChild||this.input,t),s.setEnd(this.input.lastChild||this.input,e);const i=this.rootElement,a=i.getSelection&&i.getSelection();a&&(a.removeAllRanges(),a.addRange(s))}get value(){return this.input.textContent||""}set value(t){this.input.textContent=t}}m.HTMLContenteditableMaskElement=E;class A{constructor(){this.states=[],this.currentIndex=0}get currentState(){return this.states[this.currentIndex]}get isEmpty(){return 0===this.states.length}push(t){this.currentIndex<this.states.length-1&&(this.states.length=this.currentIndex+1),this.states.push(t),this.states.length>A.MAX_LENGTH&&this.states.shift(),this.currentIndex=this.states.length-1}go(t){return this.currentIndex=Math.min(Math.max(this.currentIndex+t,0),this.states.length-1),this.currentState}undo(){return this.go(-1)}redo(){return this.go(1)}clear(){this.states.length=0,this.currentIndex=0}}A.MAX_LENGTH=100,m.InputMask=class{constructor(t,e){this.el=t instanceof _?t:t.isContentEditable&&"INPUT"!==t.tagName&&"TEXTAREA"!==t.tagName?new E(t):new C(t),this.masked=f(e),this._listeners={},this._value="",this._unmaskedValue="",this._rawInputValue="",this.history=new A,this._saveSelection=this._saveSelection.bind(this),this._onInput=this._onInput.bind(this),this._onChange=this._onChange.bind(this),this._onDrop=this._onDrop.bind(this),this._onFocus=this._onFocus.bind(this),this._onClick=this._onClick.bind(this),this._onUndo=this._onUndo.bind(this),this._onRedo=this._onRedo.bind(this),this.alignCursor=this.alignCursor.bind(this),this.alignCursorFriendly=this.alignCursorFriendly.bind(this),this._bindEvents(),this.updateValue(),this._onChange()}maskEquals(t){var e;return null==t||(null==(e=this.masked)?void 0:e.maskEquals(t))}get mask(){return this.masked.mask}set mask(t){if(this.maskEquals(t))return;if(!(t instanceof m.Masked)&&this.masked.constructor===g(t))return void this.masked.updateOptions({mask:t});const e=t instanceof m.Masked?t:f({mask:t});e.unmaskedValue=this.masked.unmaskedValue,this.masked=e}get value(){return this._value}set value(t){this.value!==t&&(this.masked.value=t,this.updateControl("auto"))}get unmaskedValue(){return this._unmaskedValue}set unmaskedValue(t){this.unmaskedValue!==t&&(this.masked.unmaskedValue=t,this.updateControl("auto"))}get rawInputValue(){return this._rawInputValue}set rawInputValue(t){this.rawInputValue!==t&&(this.masked.rawInputValue=t,this.updateControl(),this.alignCursor())}get typedValue(){return this.masked.typedValue}set typedValue(t){this.masked.typedValueEquals(t)||(this.masked.typedValue=t,this.updateControl("auto"))}get displayValue(){return this.masked.displayValue}_bindEvents(){this.el.bindEvents({selectionChange:this._saveSelection,input:this._onInput,drop:this._onDrop,click:this._onClick,focus:this._onFocus,commit:this._onChange,undo:this._onUndo,redo:this._onRedo})}_unbindEvents(){this.el&&this.el.unbindEvents()}_fireEvent(t,e){const s=this._listeners[t];s&&s.forEach((t=>t(e)))}get selectionStart(){return this._cursorChanging?this._changingCursorPos:this.el.selectionStart}get cursorPos(){return this._cursorChanging?this._changingCursorPos:this.el.selectionEnd}set cursorPos(t){this.el&&this.el.isActive&&(this.el.select(t,t),this._saveSelection())}_saveSelection(){this.displayValue!==this.el.value&&console.warn("Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly."),this._selection={start:this.selectionStart,end:this.cursorPos}}updateValue(){this.masked.value=this.el.value,this._value=this.masked.value,this._unmaskedValue=this.masked.unmaskedValue,this._rawInputValue=this.masked.rawInputValue}updateControl(t){const e=this.masked.unmaskedValue,s=this.masked.value,i=this.masked.rawInputValue,a=this.displayValue,n=this.unmaskedValue!==e||this.value!==s||this._rawInputValue!==i;this._unmaskedValue=e,this._value=s,this._rawInputValue=i,this.el.value!==a&&(this.el.value=a),"auto"===t?this.alignCursor():null!=t&&(this.cursorPos=t),n&&this._fireChangeEvents(),this._historyChanging||!n&&!this.history.isEmpty||this.history.push({unmaskedValue:e,selection:{start:this.selectionStart,end:this.cursorPos}})}updateOptions(t){const{mask:e,...s}=t,i=!this.maskEquals(e),a=this.masked.optionsIsChanged(s);i&&(this.mask=e),a&&this.masked.updateOptions(s),(i||a)&&this.updateControl()}updateCursor(t){null!=t&&(this.cursorPos=t,this._delayUpdateCursor(t))}_delayUpdateCursor(t){this._abortUpdateCursor(),this._changingCursorPos=t,this._cursorChanging=setTimeout((()=>{this.el&&(this.cursorPos=this._changingCursorPos,this._abortUpdateCursor())}),10)}_fireChangeEvents(){this._fireEvent("accept",this._inputEvent),this.masked.isComplete&&this._fireEvent("complete",this._inputEvent)}_abortUpdateCursor(){this._cursorChanging&&(clearTimeout(this._cursorChanging),delete this._cursorChanging)}alignCursor(){this.cursorPos=this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos,u))}alignCursorFriendly(){this.selectionStart===this.cursorPos&&this.alignCursor()}on(t,e){return this._listeners[t]||(this._listeners[t]=[]),this._listeners[t].push(e),this}off(t,e){if(!this._listeners[t])return this;if(!e)return delete this._listeners[t],this;const s=this._listeners[t].indexOf(e);return s>=0&&this._listeners[t].splice(s,1),this}_onInput(t){this._inputEvent=t,this._abortUpdateCursor();const e=new c({value:this.el.value,cursorPos:this.cursorPos,oldValue:this.displayValue,oldSelection:this._selection}),s=this.masked.rawInputValue,i=this.masked.splice(e.startChangePos,e.removed.length,e.inserted,e.removeDirection,{input:!0,raw:!0}).offset,a=s===this.masked.rawInputValue?e.removeDirection:r;let n=this.masked.nearestInputPos(e.startChangePos+i,a);a!==r&&(n=this.masked.nearestInputPos(n,r)),this.updateControl(n),delete this._inputEvent}_onChange(){this.displayValue!==this.el.value&&this.updateValue(),this.masked.doCommit(),this.updateControl(),this._saveSelection()}_onDrop(t){t.preventDefault(),t.stopPropagation()}_onFocus(t){this.alignCursorFriendly()}_onClick(t){this.alignCursorFriendly()}_onUndo(){this._applyHistoryState(this.history.undo())}_onRedo(){this._applyHistoryState(this.history.redo())}_applyHistoryState(t){t&&(this._historyChanging=!0,this.unmaskedValue=t.unmaskedValue,this.el.select(t.selection.start,t.selection.end),this._saveSelection(),this._historyChanging=!1)}destroy(){this._unbindEvents(),this._listeners.length=0,delete this.el}};class b{static normalize(t){return Array.isArray(t)?t:[t,new b]}constructor(t){Object.assign(this,{inserted:"",rawInserted:"",tailShift:0,skip:!1},t)}aggregate(t){return this.inserted+=t.inserted,this.rawInserted+=t.rawInserted,this.tailShift+=t.tailShift,this.skip=this.skip||t.skip,this}get offset(){return this.tailShift+this.inserted.length}get consumed(){return Boolean(this.rawInserted)||this.skip}equals(t){return this.inserted===t.inserted&&this.tailShift===t.tailShift&&this.rawInserted===t.rawInserted&&this.skip===t.skip}}m.ChangeDetails=b;class x{constructor(t,e,s){void 0===t&&(t=""),void 0===e&&(e=0),this.value=t,this.from=e,this.stop=s}toString(){return this.value}extend(t){this.value+=String(t)}appendTo(t){return t.append(this.toString(),{tail:!0}).aggregate(t._appendPlaceholder())}get state(){return{value:this.value,from:this.from,stop:this.stop}}set state(t){Object.assign(this,t)}unshift(t){if(!this.value.length||null!=t&&this.from>=t)return"";const e=this.value[0];return this.value=this.value.slice(1),e}shift(){if(!this.value.length)return"";const t=this.value[this.value.length-1];return this.value=this.value.slice(0,-1),t}}class F{constructor(t){this._value="",this._update({...F.DEFAULTS,...t}),this._initialized=!0}updateOptions(t){this.optionsIsChanged(t)&&this.withValueRefresh(this._update.bind(this,t))}_update(t){Object.assign(this,t)}get state(){return{_value:this.value,_rawInputValue:this.rawInputValue}}set state(t){this._value=t._value}reset(){this._value=""}get value(){return this._value}set value(t){this.resolve(t,{input:!0})}resolve(t,e){void 0===e&&(e={input:!0}),this.reset(),this.append(t,e,""),this.doCommit()}get unmaskedValue(){return this.value}set unmaskedValue(t){this.resolve(t,{})}get typedValue(){return this.parse?this.parse(this.value,this):this.unmaskedValue}set typedValue(t){this.format?this.value=this.format(t,this):this.unmaskedValue=String(t)}get rawInputValue(){return this.extractInput(0,this.displayValue.length,{raw:!0})}set rawInputValue(t){this.resolve(t,{raw:!0})}get displayValue(){return this.value}get isComplete(){return!0}get isFilled(){return this.isComplete}nearestInputPos(t,e){return t}totalInputPositions(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),Math.min(this.displayValue.length,e-t)}extractInput(t,e,s){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),this.displayValue.slice(t,e)}extractTail(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),new x(this.extractInput(t,e),t)}appendTail(t){return i(t)&&(t=new x(String(t))),t.appendTo(this)}_appendCharRaw(t,e){return t?(this._value+=t,new b({inserted:t,rawInserted:t})):new b}_appendChar(t,e,s){void 0===e&&(e={});const i=this.state;let a;if([t,a]=this.doPrepareChar(t,e),t&&(a=a.aggregate(this._appendCharRaw(t,e)),!a.rawInserted&&"pad"===this.autofix)){const s=this.state;this.state=i;let n=this.pad(e);const r=this._appendCharRaw(t,e);n=n.aggregate(r),r.rawInserted||n.equals(a)?a=n:this.state=s}if(a.inserted){let t,n=!1!==this.doValidate(e);if(n&&null!=s){const e=this.state;if(!0===this.overwrite){t=s.state;for(let t=0;t<a.rawInserted.length;++t)s.unshift(this.displayValue.length-a.tailShift)}let i=this.appendTail(s);if(n=i.rawInserted.length===s.toString().length,!(n&&i.inserted||"shift"!==this.overwrite)){this.state=e,t=s.state;for(let t=0;t<a.rawInserted.length;++t)s.shift();i=this.appendTail(s),n=i.rawInserted.length===s.toString().length}n&&i.inserted&&(this.state=e)}n||(a=new b,this.state=i,s&&t&&(s.state=t))}return a}_appendPlaceholder(){return new b}_appendEager(){return new b}append(t,e,s){if(!i(t))throw new Error("value should be string");const a=i(s)?new x(String(s)):s;let n;null!=e&&e.tail&&(e._beforeTailState=this.state),[t,n]=this.doPrepare(t,e);for(let s=0;s<t.length;++s){const i=this._appendChar(t[s],e,a);if(!i.rawInserted&&!this.doSkipInvalid(t[s],e,a))break;n.aggregate(i)}return(!0===this.eager||"append"===this.eager)&&null!=e&&e.input&&t&&n.aggregate(this._appendEager()),null!=a&&(n.tailShift+=this.appendTail(a).tailShift),n}remove(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),this._value=this.displayValue.slice(0,t)+this.displayValue.slice(e),new b}withValueRefresh(t){if(this._refreshing||!this._initialized)return t();this._refreshing=!0;const e=this.rawInputValue,s=this.value,i=t();return this.rawInputValue=e,this.value&&this.value!==s&&0===s.indexOf(this.value)&&(this.append(s.slice(this.displayValue.length),{},""),this.doCommit()),delete this._refreshing,i}runIsolated(t){if(this._isolated||!this._initialized)return t(this);this._isolated=!0;const e=this.state,s=t(this);return this.state=e,delete this._isolated,s}doSkipInvalid(t,e,s){return Boolean(this.skipInvalid)}doPrepare(t,e){return void 0===e&&(e={}),b.normalize(this.prepare?this.prepare(t,this,e):t)}doPrepareChar(t,e){return void 0===e&&(e={}),b.normalize(this.prepareChar?this.prepareChar(t,this,e):t)}doValidate(t){return(!this.validate||this.validate(this.value,this,t))&&(!this.parent||this.parent.doValidate(t))}doCommit(){this.commit&&this.commit(this.value,this)}splice(t,e,s,i,a){void 0===s&&(s=""),void 0===i&&(i=r),void 0===a&&(a={input:!0});const n=t+e,p=this.extractTail(n),d=!0===this.eager||"remove"===this.eager;let c;d&&(i=function(t){switch(t){case u:return o;case l:return h;default:return t}}(i),c=this.extractInput(0,n,{raw:!0}));let m=t;const g=new b;if(i!==r&&(m=this.nearestInputPos(t,e>1&&0!==t&&!d?r:i),g.tailShift=m-t),g.aggregate(this.remove(m)),d&&i!==r&&c===this.rawInputValue)if(i===o){let t;for(;c===this.rawInputValue&&(t=this.displayValue.length);)g.aggregate(new b({tailShift:-1})).aggregate(this.remove(t-1))}else i===h&&p.unshift();return g.aggregate(this.append(s,a,p))}maskEquals(t){return this.mask===t}optionsIsChanged(t){return!d(this,t)}typedValueEquals(t){const e=this.typedValue;return t===e||F.EMPTY_VALUES.includes(t)&&F.EMPTY_VALUES.includes(e)||!!this.format&&this.format(t,this)===this.format(this.typedValue,this)}pad(t){return new b}}F.DEFAULTS={skipInvalid:!0},F.EMPTY_VALUES=[void 0,null,""],m.Masked=F;class y{constructor(t,e){void 0===t&&(t=[]),void 0===e&&(e=0),this.chunks=t,this.from=e}toString(){return this.chunks.map(String).join("")}extend(t){if(!String(t))return;t=i(t)?new x(String(t)):t;const e=this.chunks[this.chunks.length-1],s=e&&(e.stop===t.stop||null==t.stop)&&t.from===e.from+e.toString().length;if(t instanceof x)s?e.extend(t.toString()):this.chunks.push(t);else if(t instanceof y){if(null==t.stop){let e;for(;t.chunks.length&&null==t.chunks[0].stop;)e=t.chunks.shift(),e.from+=t.from,this.extend(e)}t.toString()&&(t.stop=t.blockIndex,this.chunks.push(t))}}appendTo(t){if(!(t instanceof m.MaskedPattern))return new x(this.toString()).appendTo(t);const e=new b;for(let s=0;s<this.chunks.length;++s){const i=this.chunks[s],a=t._mapPosToBlock(t.displayValue.length),n=i.stop;let r;if(null!=n&&(!a||a.index<=n)&&((i instanceof y||t._stops.indexOf(n)>=0)&&e.aggregate(t._appendPlaceholder(n)),r=i instanceof y&&t._blocks[n]),r){const s=r.appendTail(i);e.aggregate(s);const a=i.toString().slice(s.rawInserted.length);a&&e.aggregate(t.append(a,{tail:!0}))}else e.aggregate(t.append(i.toString(),{tail:!0}))}return e}get state(){return{chunks:this.chunks.map((t=>t.state)),from:this.from,stop:this.stop,blockIndex:this.blockIndex}}set state(t){const{chunks:e,...s}=t;Object.assign(this,s),this.chunks=e.map((t=>{const e="chunks"in t?new y:new x;return e.state=t,e}))}unshift(t){if(!this.chunks.length||null!=t&&this.from>=t)return"";const e=null!=t?t-this.from:t;let s=0;for(;s<this.chunks.length;){const t=this.chunks[s],i=t.unshift(e);if(t.toString()){if(!i)break;++s}else this.chunks.splice(s,1);if(i)return i}return""}shift(){if(!this.chunks.length)return"";let t=this.chunks.length-1;for(;0<=t;){const e=this.chunks[t],s=e.shift();if(e.toString()){if(!s)break;--t}else this.chunks.splice(t,1);if(s)return s}return""}}class S{constructor(t,e){this.masked=t,this._log=[];const{offset:s,index:i}=t._mapPosToBlock(e)||(e<0?{index:0,offset:0}:{index:this.masked._blocks.length,offset:0});this.offset=s,this.index=i,this.ok=!1}get block(){return this.masked._blocks[this.index]}get pos(){return this.masked._blockStartPos(this.index)+this.offset}get state(){return{index:this.index,offset:this.offset,ok:this.ok}}set state(t){Object.assign(this,t)}pushState(){this._log.push(this.state)}popState(){const t=this._log.pop();return t&&(this.state=t),t}bindBlock(){this.block||(this.index<0&&(this.index=0,this.offset=0),this.index>=this.masked._blocks.length&&(this.index=this.masked._blocks.length-1,this.offset=this.block.displayValue.length))}_pushLeft(t){for(this.pushState(),this.bindBlock();0<=this.index;--this.index,this.offset=(null==(e=this.block)?void 0:e.displayValue.length)||0){var e;if(t())return this.ok=!0}return this.ok=!1}_pushRight(t){for(this.pushState(),this.bindBlock();this.index<this.masked._blocks.length;++this.index,this.offset=0)if(t())return this.ok=!0;return this.ok=!1}pushLeftBeforeFilled(){return this._pushLeft((()=>{if(!this.block.isFixed&&this.block.value)return this.offset=this.block.nearestInputPos(this.offset,o),0!==this.offset||void 0}))}pushLeftBeforeInput(){return this._pushLeft((()=>{if(!this.block.isFixed)return this.offset=this.block.nearestInputPos(this.offset,u),!0}))}pushLeftBeforeRequired(){return this._pushLeft((()=>{if(!(this.block.isFixed||this.block.isOptional&&!this.block.value))return this.offset=this.block.nearestInputPos(this.offset,u),!0}))}pushRightBeforeFilled(){return this._pushRight((()=>{if(!this.block.isFixed&&this.block.value)return this.offset=this.block.nearestInputPos(this.offset,h),this.offset!==this.block.value.length||void 0}))}pushRightBeforeInput(){return this._pushRight((()=>{if(!this.block.isFixed)return this.offset=this.block.nearestInputPos(this.offset,r),!0}))}pushRightBeforeRequired(){return this._pushRight((()=>{if(!(this.block.isFixed||this.block.isOptional&&!this.block.value))return this.offset=this.block.nearestInputPos(this.offset,r),!0}))}}class B{constructor(t){Object.assign(this,t),this._value="",this.isFixed=!0}get value(){return this._value}get unmaskedValue(){return this.isUnmasking?this.value:""}get rawInputValue(){return this._isRawInput?this.value:""}get displayValue(){return this.value}reset(){this._isRawInput=!1,this._value=""}remove(t,e){return void 0===t&&(t=0),void 0===e&&(e=this._value.length),this._value=this._value.slice(0,t)+this._value.slice(e),this._value||(this._isRawInput=!1),new b}nearestInputPos(t,e){void 0===e&&(e=r);const s=this._value.length;switch(e){case u:case o:return 0;default:return s}}totalInputPositions(t,e){return void 0===t&&(t=0),void 0===e&&(e=this._value.length),this._isRawInput?e-t:0}extractInput(t,e,s){return void 0===t&&(t=0),void 0===e&&(e=this._value.length),void 0===s&&(s={}),s.raw&&this._isRawInput&&this._value.slice(t,e)||""}get isComplete(){return!0}get isFilled(){return Boolean(this._value)}_appendChar(t,e){if(void 0===e&&(e={}),this.isFilled)return new b;const s=!0===this.eager||"append"===this.eager,i=this.char===t&&(this.isUnmasking||e.input||e.raw)&&(!e.raw||!s)&&!e.tail,a=new b({inserted:this.char,rawInserted:i?this.char:""});return this._value=this.char,this._isRawInput=i&&(e.raw||e.input),a}_appendEager(){return this._appendChar(this.char,{tail:!0})}_appendPlaceholder(){const t=new b;return this.isFilled||(this._value=t.inserted=this.char),t}extractTail(){return new x("")}appendTail(t){return i(t)&&(t=new x(String(t))),t.appendTo(this)}append(t,e,s){const i=this._appendChar(t[0],e);return null!=s&&(i.tailShift+=this.appendTail(s).tailShift),i}doCommit(){}get state(){return{_value:this._value,_rawInputValue:this.rawInputValue}}set state(t){this._value=t._value,this._isRawInput=Boolean(t._rawInputValue)}pad(t){return this._appendPlaceholder()}}class w{constructor(t){const{parent:e,isOptional:s,placeholderChar:i,displayChar:a,lazy:n,eager:r,...u}=t;this.masked=f(u),Object.assign(this,{parent:e,isOptional:s,placeholderChar:i,displayChar:a,lazy:n,eager:r})}reset(){this.isFilled=!1,this.masked.reset()}remove(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.value.length),0===t&&e>=1?(this.isFilled=!1,this.masked.remove(t,e)):new b}get value(){return this.masked.value||(this.isFilled&&!this.isOptional?this.placeholderChar:"")}get unmaskedValue(){return this.masked.unmaskedValue}get rawInputValue(){return this.masked.rawInputValue}get displayValue(){return this.masked.value&&this.displayChar||this.value}get isComplete(){return Boolean(this.masked.value)||this.isOptional}_appendChar(t,e){if(void 0===e&&(e={}),this.isFilled)return new b;const s=this.masked.state;let i=this.masked._appendChar(t,this.currentMaskFlags(e));return i.inserted&&!1===this.doValidate(e)&&(i=new b,this.masked.state=s),i.inserted||this.isOptional||this.lazy||e.input||(i.inserted=this.placeholderChar),i.skip=!i.inserted&&!this.isOptional,this.isFilled=Boolean(i.inserted),i}append(t,e,s){return this.masked.append(t,this.currentMaskFlags(e),s)}_appendPlaceholder(){return this.isFilled||this.isOptional?new b:(this.isFilled=!0,new b({inserted:this.placeholderChar}))}_appendEager(){return new b}extractTail(t,e){return this.masked.extractTail(t,e)}appendTail(t){return this.masked.appendTail(t)}extractInput(t,e,s){return void 0===t&&(t=0),void 0===e&&(e=this.value.length),this.masked.extractInput(t,e,s)}nearestInputPos(t,e){void 0===e&&(e=r);const s=this.value.length,i=Math.min(Math.max(t,0),s);switch(e){case u:case o:return this.isComplete?i:0;case l:case h:return this.isComplete?i:s;default:return i}}totalInputPositions(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.value.length),this.value.slice(t,e).length}doValidate(t){return this.masked.doValidate(this.currentMaskFlags(t))&&(!this.parent||this.parent.doValidate(this.currentMaskFlags(t)))}doCommit(){this.masked.doCommit()}get state(){return{_value:this.value,_rawInputValue:this.rawInputValue,masked:this.masked.state,isFilled:this.isFilled}}set state(t){this.masked.state=t.masked,this.isFilled=t.isFilled}currentMaskFlags(t){var e;return{...t,_beforeTailState:(null==t||null==(e=t._beforeTailState)?void 0:e.masked)||(null==t?void 0:t._beforeTailState)}}pad(t){return new b}}w.DEFAULT_DEFINITIONS={0:/\d/,a:/[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,"*":/./},m.MaskedRegExp=class extends F{updateOptions(t){super.updateOptions(t)}_update(t){const e=t.mask;e&&(t.validate=t=>t.search(e)>=0),super._update(t)}};class D extends F{constructor(t){super({...D.DEFAULTS,...t,definitions:Object.assign({},w.DEFAULT_DEFINITIONS,null==t?void 0:t.definitions)})}updateOptions(t){super.updateOptions(t)}_update(t){t.definitions=Object.assign({},this.definitions,t.definitions),super._update(t),this._rebuildMask()}_rebuildMask(){const t=this.definitions;this._blocks=[],this.exposeBlock=void 0,this._stops=[],this._maskedBlocks={};const e=this.mask;if(!e||!t)return;let s=!1,i=!1;for(let a=0;a<e.length;++a){if(this.blocks){const t=e.slice(a),s=Object.keys(this.blocks).filter((e=>0===t.indexOf(e)));s.sort(((t,e)=>e.length-t.length));const i=s[0];if(i){const{expose:t,repeat:e,...s}=k(this.blocks[i]),n={lazy:this.lazy,eager:this.eager,placeholderChar:this.placeholderChar,displayChar:this.displayChar,overwrite:this.overwrite,autofix:this.autofix,...s,repeat:e,parent:this},r=null!=e?new m.RepeatBlock(n):f(n);r&&(this._blocks.push(r),t&&(this.exposeBlock=r),this._maskedBlocks[i]||(this._maskedBlocks[i]=[]),this._maskedBlocks[i].push(this._blocks.length-1)),a+=i.length-1;continue}}let n=e[a],r=n in t;if(n===D.STOP_CHAR){this._stops.push(this._blocks.length);continue}if("{"===n||"}"===n){s=!s;continue}if("["===n||"]"===n){i=!i;continue}if(n===D.ESCAPE_CHAR){if(++a,n=e[a],!n)break;r=!1}const u=r?new w({isOptional:i,lazy:this.lazy,eager:this.eager,placeholderChar:this.placeholderChar,displayChar:this.displayChar,...k(t[n]),parent:this}):new B({char:n,eager:this.eager,isUnmasking:s});this._blocks.push(u)}}get state(){return{...super.state,_blocks:this._blocks.map((t=>t.state))}}set state(t){if(!t)return void this.reset();const{_blocks:e,...s}=t;this._blocks.forEach(((t,s)=>t.state=e[s])),super.state=s}reset(){super.reset(),this._blocks.forEach((t=>t.reset()))}get isComplete(){return this.exposeBlock?this.exposeBlock.isComplete:this._blocks.every((t=>t.isComplete))}get isFilled(){return this._blocks.every((t=>t.isFilled))}get isFixed(){return this._blocks.every((t=>t.isFixed))}get isOptional(){return this._blocks.every((t=>t.isOptional))}doCommit(){this._blocks.forEach((t=>t.doCommit())),super.doCommit()}get unmaskedValue(){return this.exposeBlock?this.exposeBlock.unmaskedValue:this._blocks.reduce(((t,e)=>t+e.unmaskedValue),"")}set unmaskedValue(t){if(this.exposeBlock){const e=this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock))+this.exposeBlock.displayValue.length);this.exposeBlock.unmaskedValue=t,this.appendTail(e),this.doCommit()}else super.unmaskedValue=t}get value(){return this.exposeBlock?this.exposeBlock.value:this._blocks.reduce(((t,e)=>t+e.value),"")}set value(t){if(this.exposeBlock){const e=this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock))+this.exposeBlock.displayValue.length);this.exposeBlock.value=t,this.appendTail(e),this.doCommit()}else super.value=t}get typedValue(){return this.exposeBlock?this.exposeBlock.typedValue:super.typedValue}set typedValue(t){if(this.exposeBlock){const e=this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock))+this.exposeBlock.displayValue.length);this.exposeBlock.typedValue=t,this.appendTail(e),this.doCommit()}else super.typedValue=t}get displayValue(){return this._blocks.reduce(((t,e)=>t+e.displayValue),"")}appendTail(t){return super.appendTail(t).aggregate(this._appendPlaceholder())}_appendEager(){var t;const e=new b;let s=null==(t=this._mapPosToBlock(this.displayValue.length))?void 0:t.index;if(null==s)return e;this._blocks[s].isFilled&&++s;for(let t=s;t<this._blocks.length;++t){const s=this._blocks[t]._appendEager();if(!s.inserted)break;e.aggregate(s)}return e}_appendCharRaw(t,e){void 0===e&&(e={});const s=this._mapPosToBlock(this.displayValue.length),i=new b;if(!s)return i;for(let n,r=s.index;n=this._blocks[r];++r){var a;const s=n._appendChar(t,{...e,_beforeTailState:null==(a=e._beforeTailState)||null==(a=a._blocks)?void 0:a[r]});if(i.aggregate(s),s.consumed)break}return i}extractTail(t,e){void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length);const s=new y;return t===e||this._forEachBlocksInRange(t,e,((t,e,i,a)=>{const n=t.extractTail(i,a);n.stop=this._findStopBefore(e),n.from=this._blockStartPos(e),n instanceof y&&(n.blockIndex=e),s.extend(n)})),s}extractInput(t,e,s){if(void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),void 0===s&&(s={}),t===e)return"";let i="";return this._forEachBlocksInRange(t,e,((t,e,a,n)=>{i+=t.extractInput(a,n,s)})),i}_findStopBefore(t){let e;for(let s=0;s<this._stops.length;++s){const i=this._stops[s];if(!(i<=t))break;e=i}return e}_appendPlaceholder(t){const e=new b;if(this.lazy&&null==t)return e;const s=this._mapPosToBlock(this.displayValue.length);if(!s)return e;const i=s.index,a=null!=t?t:this._blocks.length;return this._blocks.slice(i,a).forEach((s=>{var i;s.lazy&&null==t||e.aggregate(s._appendPlaceholder(null==(i=s._blocks)?void 0:i.length))})),e}_mapPosToBlock(t){let e="";for(let s=0;s<this._blocks.length;++s){const i=this._blocks[s],a=e.length;if(e+=i.displayValue,t<=e.length)return{index:s,offset:t-a}}}_blockStartPos(t){return this._blocks.slice(0,t).reduce(((t,e)=>t+e.displayValue.length),0)}_forEachBlocksInRange(t,e,s){void 0===e&&(e=this.displayValue.length);const i=this._mapPosToBlock(t);if(i){const t=this._mapPosToBlock(e),a=t&&i.index===t.index,n=i.offset,r=t&&a?t.offset:this._blocks[i.index].displayValue.length;if(s(this._blocks[i.index],i.index,n,r),t&&!a){for(let e=i.index+1;e<t.index;++e)s(this._blocks[e],e,0,this._blocks[e].displayValue.length);s(this._blocks[t.index],t.index,0,t.offset)}}}remove(t,e){void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length);const s=super.remove(t,e);return this._forEachBlocksInRange(t,e,((t,e,i,a)=>{s.aggregate(t.remove(i,a))})),s}nearestInputPos(t,e){if(void 0===e&&(e=r),!this._blocks.length)return 0;const s=new S(this,t);if(e===r)return s.pushRightBeforeInput()?s.pos:(s.popState(),s.pushLeftBeforeInput()?s.pos:this.displayValue.length);if(e===u||e===o){if(e===u){if(s.pushRightBeforeFilled(),s.ok&&s.pos===t)return t;s.popState()}if(s.pushLeftBeforeInput(),s.pushLeftBeforeRequired(),s.pushLeftBeforeFilled(),e===u){if(s.pushRightBeforeInput(),s.pushRightBeforeRequired(),s.ok&&s.pos<=t)return s.pos;if(s.popState(),s.ok&&s.pos<=t)return s.pos;s.popState()}return s.ok?s.pos:e===o?0:(s.popState(),s.ok?s.pos:(s.popState(),s.ok?s.pos:0))}return e===l||e===h?(s.pushRightBeforeInput(),s.pushRightBeforeRequired(),s.pushRightBeforeFilled()?s.pos:e===h?this.displayValue.length:(s.popState(),s.ok?s.pos:(s.popState(),s.ok?s.pos:this.nearestInputPos(t,u)))):t}totalInputPositions(t,e){void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length);let s=0;return this._forEachBlocksInRange(t,e,((t,e,i,a)=>{s+=t.totalInputPositions(i,a)})),s}maskedBlock(t){return this.maskedBlocks(t)[0]}maskedBlocks(t){const e=this._maskedBlocks[t];return e?e.map((t=>this._blocks[t])):[]}pad(t){const e=new b;return this._forEachBlocksInRange(0,this.displayValue.length,(s=>e.aggregate(s.pad(t)))),e}}D.DEFAULTS={...F.DEFAULTS,lazy:!0,placeholderChar:"_"},D.STOP_CHAR="`",D.ESCAPE_CHAR="\\",D.InputDefinition=w,D.FixedDefinition=B,m.MaskedPattern=D;class V extends D{get _matchFrom(){return this.maxLength-String(this.from).length}constructor(t){super(t)}updateOptions(t){super.updateOptions(t)}_update(t){const{to:e=this.to||0,from:s=this.from||0,maxLength:i=this.maxLength||0,autofix:a=this.autofix,...n}=t;this.to=e,this.from=s,this.maxLength=Math.max(String(e).length,i),this.autofix=a;const r=String(this.from).padStart(this.maxLength,"0"),u=String(this.to).padStart(this.maxLength,"0");let o=0;for(;o<u.length&&u[o]===r[o];)++o;n.mask=u.slice(0,o).replace(/0/g,"\\0")+"0".repeat(this.maxLength-o),super._update(n)}get isComplete(){return super.isComplete&&Boolean(this.value)}boundaries(t){let e="",s="";const[,i,a]=t.match(/^(\D*)(\d*)(\D*)/)||[];return a&&(e="0".repeat(i.length)+a,s="9".repeat(i.length)+a),e=e.padEnd(this.maxLength,"0"),s=s.padEnd(this.maxLength,"9"),[e,s]}doPrepareChar(t,e){let s;return void 0===e&&(e={}),[t,s]=super.doPrepareChar(t.replace(/\D/g,""),e),t||(s.skip=!this.isComplete),[t,s]}_appendCharRaw(t,e){if(void 0===e&&(e={}),!this.autofix||this.value.length+1>this.maxLength)return super._appendCharRaw(t,e);const s=String(this.from).padStart(this.maxLength,"0"),i=String(this.to).padStart(this.maxLength,"0"),[a,n]=this.boundaries(this.value+t);return Number(n)<this.from?super._appendCharRaw(s[this.value.length],e):Number(a)>this.to?!e.tail&&"pad"===this.autofix&&this.value.length+1<this.maxLength?super._appendCharRaw(s[this.value.length],e).aggregate(this._appendCharRaw(t,e)):super._appendCharRaw(i[this.value.length],e):super._appendCharRaw(t,e)}doValidate(t){const e=this.value;if(-1===e.search(/[^0]/)&&e.length<=this._matchFrom)return!0;const[s,i]=this.boundaries(e);return this.from<=Number(i)&&Number(s)<=this.to&&super.doValidate(t)}pad(t){const e=new b;if(this.value.length===this.maxLength)return e;const s=this.value,i=this.maxLength-this.value.length;if(i){this.reset();for(let s=0;s<i;++s)e.aggregate(super._appendCharRaw("0",t));s.split("").forEach((t=>this._appendCharRaw(t)))}return e}}m.MaskedRange=V;class M extends D{static extractPatternOptions(t){const{mask:e,pattern:s,...a}=t;return{...a,mask:i(e)?e:s}}constructor(t){super(M.extractPatternOptions({...M.DEFAULTS,...t}))}updateOptions(t){super.updateOptions(t)}_update(t){const{mask:e,pattern:s,blocks:a,...n}={...M.DEFAULTS,...t},r=Object.assign({},M.GET_DEFAULT_BLOCKS());t.min&&(r.Y.from=t.min.getFullYear()),t.max&&(r.Y.to=t.max.getFullYear()),t.min&&t.max&&r.Y.from===r.Y.to&&(r.m.from=t.min.getMonth()+1,r.m.to=t.max.getMonth()+1,r.m.from===r.m.to&&(r.d.from=t.min.getDate(),r.d.to=t.max.getDate())),Object.assign(r,this.blocks,a),super._update({...n,mask:i(e)?e:s,blocks:r})}doValidate(t){const e=this.date;return super.doValidate(t)&&(!this.isComplete||this.isDateExist(this.value)&&null!=e&&(null==this.min||this.min<=e)&&(null==this.max||e<=this.max))}isDateExist(t){return this.format(this.parse(t,this),this).indexOf(t)>=0}get date(){return this.typedValue}set date(t){this.typedValue=t}get typedValue(){return this.isComplete?super.typedValue:null}set typedValue(t){super.typedValue=t}maskEquals(t){return t===Date||super.maskEquals(t)}optionsIsChanged(t){return super.optionsIsChanged(M.extractPatternOptions(t))}}M.GET_DEFAULT_BLOCKS=()=>({d:{mask:V,from:1,to:31,maxLength:2},m:{mask:V,from:1,to:12,maxLength:2},Y:{mask:V,from:1900,to:9999}}),M.DEFAULTS={...D.DEFAULTS,mask:Date,pattern:"d{.}`m{.}`Y",format:(t,e)=>t?[String(t.getDate()).padStart(2,"0"),String(t.getMonth()+1).padStart(2,"0"),t.getFullYear()].join("."):"",parse:(t,e)=>{const[s,i,a]=t.split(".").map(Number);return new Date(a,i-1,s)}},m.MaskedDate=M;class I extends F{constructor(t){super({...I.DEFAULTS,...t}),this.currentMask=void 0}updateOptions(t){super.updateOptions(t)}_update(t){super._update(t),"mask"in t&&(this.exposeMask=void 0,this.compiledMasks=Array.isArray(t.mask)?t.mask.map((t=>{const{expose:e,...s}=k(t),i=f({overwrite:this._overwrite,eager:this._eager,skipInvalid:this._skipInvalid,...s});return e&&(this.exposeMask=i),i})):[])}_appendCharRaw(t,e){void 0===e&&(e={});const s=this._applyDispatch(t,e);return this.currentMask&&s.aggregate(this.currentMask._appendChar(t,this.currentMaskFlags(e))),s}_applyDispatch(t,e,s){void 0===t&&(t=""),void 0===e&&(e={}),void 0===s&&(s="");const i=e.tail&&null!=e._beforeTailState?e._beforeTailState._value:this.value,a=this.rawInputValue,n=e.tail&&null!=e._beforeTailState?e._beforeTailState._rawInputValue:a,r=a.slice(n.length),u=this.currentMask,o=new b,l=null==u?void 0:u.state;return this.currentMask=this.doDispatch(t,{...e},s),this.currentMask&&(this.currentMask!==u?(this.currentMask.reset(),n&&(this.currentMask.append(n,{raw:!0}),o.tailShift=this.currentMask.value.length-i.length),r&&(o.tailShift+=this.currentMask.append(r,{raw:!0,tail:!0}).tailShift)):l&&(this.currentMask.state=l)),o}_appendPlaceholder(){const t=this._applyDispatch();return this.currentMask&&t.aggregate(this.currentMask._appendPlaceholder()),t}_appendEager(){const t=this._applyDispatch();return this.currentMask&&t.aggregate(this.currentMask._appendEager()),t}appendTail(t){const e=new b;return t&&e.aggregate(this._applyDispatch("",{},t)),e.aggregate(this.currentMask?this.currentMask.appendTail(t):super.appendTail(t))}currentMaskFlags(t){var e,s;return{...t,_beforeTailState:(null==(e=t._beforeTailState)?void 0:e.currentMaskRef)===this.currentMask&&(null==(s=t._beforeTailState)?void 0:s.currentMask)||t._beforeTailState}}doDispatch(t,e,s){return void 0===e&&(e={}),void 0===s&&(s=""),this.dispatch(t,this,e,s)}doValidate(t){return super.doValidate(t)&&(!this.currentMask||this.currentMask.doValidate(this.currentMaskFlags(t)))}doPrepare(t,e){void 0===e&&(e={});let[s,i]=super.doPrepare(t,e);if(this.currentMask){let t;[s,t]=super.doPrepare(s,this.currentMaskFlags(e)),i=i.aggregate(t)}return[s,i]}doPrepareChar(t,e){void 0===e&&(e={});let[s,i]=super.doPrepareChar(t,e);if(this.currentMask){let t;[s,t]=super.doPrepareChar(s,this.currentMaskFlags(e)),i=i.aggregate(t)}return[s,i]}reset(){var t;null==(t=this.currentMask)||t.reset(),this.compiledMasks.forEach((t=>t.reset()))}get value(){return this.exposeMask?this.exposeMask.value:this.currentMask?this.currentMask.value:""}set value(t){this.exposeMask?(this.exposeMask.value=t,this.currentMask=this.exposeMask,this._applyDispatch()):super.value=t}get unmaskedValue(){return this.exposeMask?this.exposeMask.unmaskedValue:this.currentMask?this.currentMask.unmaskedValue:""}set unmaskedValue(t){this.exposeMask?(this.exposeMask.unmaskedValue=t,this.currentMask=this.exposeMask,this._applyDispatch()):super.unmaskedValue=t}get typedValue(){return this.exposeMask?this.exposeMask.typedValue:this.currentMask?this.currentMask.typedValue:""}set typedValue(t){if(this.exposeMask)return this.exposeMask.typedValue=t,this.currentMask=this.exposeMask,void this._applyDispatch();let e=String(t);this.currentMask&&(this.currentMask.typedValue=t,e=this.currentMask.unmaskedValue),this.unmaskedValue=e}get displayValue(){return this.currentMask?this.currentMask.displayValue:""}get isComplete(){var t;return Boolean(null==(t=this.currentMask)?void 0:t.isComplete)}get isFilled(){var t;return Boolean(null==(t=this.currentMask)?void 0:t.isFilled)}remove(t,e){const s=new b;return this.currentMask&&s.aggregate(this.currentMask.remove(t,e)).aggregate(this._applyDispatch()),s}get state(){var t;return{...super.state,_rawInputValue:this.rawInputValue,compiledMasks:this.compiledMasks.map((t=>t.state)),currentMaskRef:this.currentMask,currentMask:null==(t=this.currentMask)?void 0:t.state}}set state(t){const{compiledMasks:e,currentMaskRef:s,currentMask:i,...a}=t;e&&this.compiledMasks.forEach(((t,s)=>t.state=e[s])),null!=s&&(this.currentMask=s,this.currentMask.state=i),super.state=a}extractInput(t,e,s){return this.currentMask?this.currentMask.extractInput(t,e,s):""}extractTail(t,e){return this.currentMask?this.currentMask.extractTail(t,e):super.extractTail(t,e)}doCommit(){this.currentMask&&this.currentMask.doCommit(),super.doCommit()}nearestInputPos(t,e){return this.currentMask?this.currentMask.nearestInputPos(t,e):super.nearestInputPos(t,e)}get overwrite(){return this.currentMask?this.currentMask.overwrite:this._overwrite}set overwrite(t){this._overwrite=t}get eager(){return this.currentMask?this.currentMask.eager:this._eager}set eager(t){this._eager=t}get skipInvalid(){return this.currentMask?this.currentMask.skipInvalid:this._skipInvalid}set skipInvalid(t){this._skipInvalid=t}get autofix(){return this.currentMask?this.currentMask.autofix:this._autofix}set autofix(t){this._autofix=t}maskEquals(t){return Array.isArray(t)?this.compiledMasks.every(((e,s)=>{if(!t[s])return;const{mask:i,...a}=t[s];return d(e,a)&&e.maskEquals(i)})):super.maskEquals(t)}typedValueEquals(t){var e;return Boolean(null==(e=this.currentMask)?void 0:e.typedValueEquals(t))}}I.DEFAULTS={...F.DEFAULTS,dispatch:(t,e,s,i)=>{if(!e.compiledMasks.length)return;const a=e.rawInputValue,n=e.compiledMasks.map(((n,r)=>{const u=e.currentMask===n,l=u?n.displayValue.length:n.nearestInputPos(n.displayValue.length,o);return n.rawInputValue!==a?(n.reset(),n.append(a,{raw:!0})):u||n.remove(l),n.append(t,e.currentMaskFlags(s)),n.appendTail(i),{index:r,weight:n.rawInputValue.length,totalInputPositions:n.totalInputPositions(0,Math.max(l,n.nearestInputPos(n.displayValue.length,o)))}}));return n.sort(((t,e)=>e.weight-t.weight||e.totalInputPositions-t.totalInputPositions)),e.compiledMasks[n[0].index]}},m.MaskedDynamic=I;class T extends D{constructor(t){super({...T.DEFAULTS,...t})}updateOptions(t){super.updateOptions(t)}_update(t){const{enum:e,...s}=t;if(e){const t=e.map((t=>t.length)),i=Math.min(...t),a=Math.max(...t)-i;s.mask="*".repeat(i),a&&(s.mask+="["+"*".repeat(a)+"]"),this.enum=e}super._update(s)}_appendCharRaw(t,e){void 0===e&&(e={});const s=Math.min(this.nearestInputPos(0,h),this.value.length),i=this.enum.filter((e=>this.matchValue(e,this.unmaskedValue+t,s)));if(i.length){1===i.length&&this._forEachBlocksInRange(0,this.value.length,((t,s)=>{const a=i[0][s];s>=this.value.length||a===t.value||(t.reset(),t._appendChar(a,e))}));const t=super._appendCharRaw(i[0][this.value.length],e);return 1===i.length&&i[0].slice(this.unmaskedValue.length).split("").forEach((e=>t.aggregate(super._appendCharRaw(e)))),t}return new b({skip:!this.isComplete})}extractTail(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),new x("",t)}remove(t,e){if(void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),t===e)return new b;const s=Math.min(super.nearestInputPos(0,h),this.value.length);let i;for(i=t;i>=0&&!(this.enum.filter((t=>this.matchValue(t,this.value.slice(s,i),s))).length>1);--i);const a=super.remove(i,e);return a.tailShift+=i-t,a}get isComplete(){return this.enum.indexOf(this.value)>=0}}var P;T.DEFAULTS={...D.DEFAULTS,matchValue:(t,e,s)=>t.indexOf(e,s)===s},m.MaskedEnum=T,m.MaskedFunction=class extends F{updateOptions(t){super.updateOptions(t)}_update(t){super._update({...t,validate:t.mask})}};class R extends F{constructor(t){super({...R.DEFAULTS,...t})}updateOptions(t){super.updateOptions(t)}_update(t){super._update(t),this._updateRegExps()}_updateRegExps(){const t="^"+(this.allowNegative?"[+|\\-]?":""),e=(this.scale?"("+p(this.radix)+"\\d{0,"+this.scale+"})?":"")+"$";this._numberRegExp=new RegExp(t+"\\d*"+e),this._mapToRadixRegExp=new RegExp("["+this.mapToRadix.map(p).join("")+"]","g"),this._thousandsSeparatorRegExp=new RegExp(p(this.thousandsSeparator),"g")}_removeThousandsSeparators(t){return t.replace(this._thousandsSeparatorRegExp,"")}_insertThousandsSeparators(t){const e=t.split(this.radix);return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,this.thousandsSeparator),e.join(this.radix)}doPrepareChar(t,e){void 0===e&&(e={});const[s,i]=super.doPrepareChar(this._removeThousandsSeparators(this.scale&&this.mapToRadix.length&&(e.input&&e.raw||!e.input&&!e.raw)?t.replace(this._mapToRadixRegExp,this.radix):t),e);return t&&!s&&(i.skip=!0),!s||this.allowPositive||this.value||"-"===s||i.aggregate(this._appendChar("-")),[s,i]}_separatorsCount(t,e){void 0===e&&(e=!1);let s=0;for(let i=0;i<t;++i)this._value.indexOf(this.thousandsSeparator,i)===i&&(++s,e&&(t+=this.thousandsSeparator.length));return s}_separatorsCountFromSlice(t){return void 0===t&&(t=this._value),this._separatorsCount(this._removeThousandsSeparators(t).length,!0)}extractInput(t,e,s){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),[t,e]=this._adjustRangeWithSeparators(t,e),this._removeThousandsSeparators(super.extractInput(t,e,s))}_appendCharRaw(t,e){void 0===e&&(e={});const s=e.tail&&e._beforeTailState?e._beforeTailState._value:this._value,i=this._separatorsCountFromSlice(s);this._value=this._removeThousandsSeparators(this.value);const a=this._value;this._value+=t;const n=this.number;let r,u=!isNaN(n),o=!1;if(u){let t;null!=this.min&&this.min<0&&this.number<this.min&&(t=this.min),null!=this.max&&this.max>0&&this.number>this.max&&(t=this.max),null!=t&&(this.autofix?(this._value=this.format(t,this).replace(R.UNMASKED_RADIX,this.radix),o||(o=a===this._value&&!e.tail)):u=!1),u&&(u=Boolean(this._value.match(this._numberRegExp)))}u?r=new b({inserted:this._value.slice(a.length),rawInserted:o?"":t,skip:o}):(this._value=a,r=new b),this._value=this._insertThousandsSeparators(this._value);const l=e.tail&&e._beforeTailState?e._beforeTailState._value:this._value,h=this._separatorsCountFromSlice(l);return r.tailShift+=(h-i)*this.thousandsSeparator.length,r}_findSeparatorAround(t){if(this.thousandsSeparator){const e=t-this.thousandsSeparator.length+1,s=this.value.indexOf(this.thousandsSeparator,e);if(s<=t)return s}return-1}_adjustRangeWithSeparators(t,e){const s=this._findSeparatorAround(t);s>=0&&(t=s);const i=this._findSeparatorAround(e);return i>=0&&(e=i+this.thousandsSeparator.length),[t,e]}remove(t,e){void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),[t,e]=this._adjustRangeWithSeparators(t,e);const s=this.value.slice(0,t),i=this.value.slice(e),a=this._separatorsCount(s.length);this._value=this._insertThousandsSeparators(this._removeThousandsSeparators(s+i));const n=this._separatorsCountFromSlice(s);return new b({tailShift:(n-a)*this.thousandsSeparator.length})}nearestInputPos(t,e){if(!this.thousandsSeparator)return t;switch(e){case r:case u:case o:{const s=this._findSeparatorAround(t-1);if(s>=0){const i=s+this.thousandsSeparator.length;if(t<i||this.value.length<=i||e===o)return s}break}case l:case h:{const e=this._findSeparatorAround(t);if(e>=0)return e+this.thousandsSeparator.length}}return t}doCommit(){if(this.value){const t=this.number;let e=t;null!=this.min&&(e=Math.max(e,this.min)),null!=this.max&&(e=Math.min(e,this.max)),e!==t&&(this.unmaskedValue=this.format(e,this));let s=this.value;this.normalizeZeros&&(s=this._normalizeZeros(s)),this.padFractionalZeros&&this.scale>0&&(s=this._padFractionalZeros(s)),this._value=s}super.doCommit()}_normalizeZeros(t){const e=this._removeThousandsSeparators(t).split(this.radix);return e[0]=e[0].replace(/^(\D*)(0*)(\d*)/,((t,e,s,i)=>e+i)),t.length&&!/\d$/.test(e[0])&&(e[0]=e[0]+"0"),e.length>1&&(e[1]=e[1].replace(/0*$/,""),e[1].length||(e.length=1)),this._insertThousandsSeparators(e.join(this.radix))}_padFractionalZeros(t){if(!t)return t;const e=t.split(this.radix);return e.length<2&&e.push(""),e[1]=e[1].padEnd(this.scale,"0"),e.join(this.radix)}doSkipInvalid(t,e,s){void 0===e&&(e={});const i=0===this.scale&&t!==this.thousandsSeparator&&(t===this.radix||t===R.UNMASKED_RADIX||this.mapToRadix.includes(t));return super.doSkipInvalid(t,e,s)&&!i}get unmaskedValue(){return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix,R.UNMASKED_RADIX)}set unmaskedValue(t){super.unmaskedValue=t}get typedValue(){return this.parse(this.unmaskedValue,this)}set typedValue(t){this.rawInputValue=this.format(t,this).replace(R.UNMASKED_RADIX,this.radix)}get number(){return this.typedValue}set number(t){this.typedValue=t}get allowNegative(){return null!=this.min&&this.min<0||null!=this.max&&this.max<0}get allowPositive(){return null!=this.min&&this.min>0||null!=this.max&&this.max>0}typedValueEquals(t){return(super.typedValueEquals(t)||R.EMPTY_VALUES.includes(t)&&R.EMPTY_VALUES.includes(this.typedValue))&&!(0===t&&""===this.value)}}P=R,R.UNMASKED_RADIX=".",R.EMPTY_VALUES=[...F.EMPTY_VALUES,0],R.DEFAULTS={...F.DEFAULTS,mask:Number,radix:",",thousandsSeparator:"",mapToRadix:[P.UNMASKED_RADIX],min:Number.MIN_SAFE_INTEGER,max:Number.MAX_SAFE_INTEGER,scale:2,normalizeZeros:!0,padFractionalZeros:!1,parse:Number,format:t=>t.toLocaleString("en-US",{useGrouping:!1,maximumFractionDigits:20})},m.MaskedNumber=R;const O={MASKED:"value",UNMASKED:"unmaskedValue",TYPED:"typedValue"};function L(t,e,s){void 0===e&&(e=O.MASKED),void 0===s&&(s=O.MASKED);const i=f(t);return t=>i.runIsolated((i=>(i[e]=t,i[s])))}m.PIPE_TYPE=O,m.createPipe=L,m.pipe=function(t,e,s,i){return L(e,s,i)(t)},m.RepeatBlock=class extends D{get repeatFrom(){var t;return null!=(t=Array.isArray(this.repeat)?this.repeat[0]:this.repeat===1/0?0:this.repeat)?t:0}get repeatTo(){var t;return null!=(t=Array.isArray(this.repeat)?this.repeat[1]:this.repeat)?t:1/0}constructor(t){super(t)}updateOptions(t){super.updateOptions(t)}_update(t){var e,s,i;const{repeat:a,...n}=k(t);this._blockOpts=Object.assign({},this._blockOpts,n);const r=f(this._blockOpts);this.repeat=null!=(e=null!=(s=null!=a?a:r.repeat)?s:this.repeat)?e:1/0,super._update({mask:"m".repeat(Math.max(this.repeatTo===1/0&&(null==(i=this._blocks)?void 0:i.length)||0,this.repeatFrom)),blocks:{m:r},eager:r.eager,overwrite:r.overwrite,skipInvalid:r.skipInvalid,lazy:r.lazy,placeholderChar:r.placeholderChar,displayChar:r.displayChar})}_allocateBlock(t){return t<this._blocks.length?this._blocks[t]:this.repeatTo===1/0||this._blocks.length<this.repeatTo?(this._blocks.push(f(this._blockOpts)),this.mask+="m",this._blocks[this._blocks.length-1]):void 0}_appendCharRaw(t,e){void 0===e&&(e={});const s=new b;for(let u,o,l=null!=(i=null==(a=this._mapPosToBlock(this.displayValue.length))?void 0:a.index)?i:Math.max(this._blocks.length-1,0);u=null!=(n=this._blocks[l])?n:o=!o&&this._allocateBlock(l);++l){var i,a,n,r;const h=u._appendChar(t,{...e,_beforeTailState:null==(r=e._beforeTailState)||null==(r=r._blocks)?void 0:r[l]});if(h.skip&&o){this._blocks.pop(),this.mask=this.mask.slice(1);break}if(s.aggregate(h),h.consumed)break}return s}_trimEmptyTail(t,e){var s,i;void 0===t&&(t=0);const a=Math.max((null==(s=this._mapPosToBlock(t))?void 0:s.index)||0,this.repeatFrom,0);let n;null!=e&&(n=null==(i=this._mapPosToBlock(e))?void 0:i.index),null==n&&(n=this._blocks.length-1);let r=0;for(let t=n;a<=t&&!this._blocks[t].unmaskedValue;--t,++r);r&&(this._blocks.splice(n-r+1,r),this.mask=this.mask.slice(r))}reset(){super.reset(),this._trimEmptyTail()}remove(t,e){void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length);const s=super.remove(t,e);return this._trimEmptyTail(t,e),s}totalInputPositions(t,e){return void 0===t&&(t=0),null==e&&this.repeatTo===1/0?1/0:super.totalInputPositions(t,e)}get state(){return super.state}set state(t){this._blocks.length=t._blocks.length,this.mask=this.mask.slice(0,this._blocks.length),super.state=t}};try{globalThis.IMask=m}catch{}var N=s(697);const U={mask:N.oneOfType([N.array,N.func,N.string,N.instanceOf(RegExp),N.oneOf([Date,Number,m.Masked]),N.instanceOf(m.Masked)]),value:N.any,unmask:N.oneOfType([N.bool,N.oneOf(["typed"])]),prepare:N.func,prepareChar:N.func,validate:N.func,commit:N.func,overwrite:N.oneOfType([N.bool,N.oneOf(["shift"])]),eager:N.oneOfType([N.bool,N.oneOf(["append","remove"])]),skipInvalid:N.bool,onAccept:N.func,onComplete:N.func,placeholderChar:N.string,displayChar:N.string,lazy:N.bool,definitions:N.object,blocks:N.object,enum:N.arrayOf(N.string),maxLength:N.number,from:N.number,to:N.number,pattern:N.string,format:N.func,parse:N.func,autofix:N.oneOfType([N.bool,N.oneOf(["pad"])]),radix:N.string,thousandsSeparator:N.string,mapToRadix:N.arrayOf(N.string),scale:N.number,normalizeZeros:N.bool,padFractionalZeros:N.bool,min:N.oneOfType([N.number,N.instanceOf(Date)]),max:N.oneOfType([N.number,N.instanceOf(Date)]),dispatch:N.func,inputRef:N.oneOfType([N.func,N.shape({current:N.object})])},j=Object.keys(U).filter((t=>"value"!==t)),q=["value","unmask","onAccept","onComplete","inputRef"],z=j.filter((t=>q.indexOf(t)<0)),K=function(t){var s;const i=((s=class extends e.Component{constructor(t){super(t),this._inputRef=this._inputRef.bind(this)}componentDidMount(){this.props.mask&&this.initMask()}componentDidUpdate(){const t=this.props,e=this._extractMaskOptionsFromProps(t);var s;e.mask?this.maskRef?(this.maskRef.updateOptions(e),"value"in t&&void 0!==t.value&&(this.maskValue=t.value)):this.initMask(e):(this.destroyMask(),"value"in t&&void 0!==t.value&&(null!=(s=this.element)&&s.isContentEditable&&"INPUT"!==this.element.tagName&&"TEXTAREA"!==this.element.tagName?this.element.textContent=t.value:this.element.value=t.value))}componentWillUnmount(){this.destroyMask()}_inputRef(t){this.element=t,this.props.inputRef&&(Object.prototype.hasOwnProperty.call(this.props.inputRef,"current")?this.props.inputRef.current=t:this.props.inputRef(t))}initMask(t){void 0===t&&(t=this._extractMaskOptionsFromProps(this.props)),this.maskRef=m(this.element,t).on("accept",this._onAccept.bind(this)).on("complete",this._onComplete.bind(this)),"value"in this.props&&void 0!==this.props.value&&(this.maskValue=this.props.value)}destroyMask(){this.maskRef&&(this.maskRef.destroy(),delete this.maskRef)}_extractMaskOptionsFromProps(t){const{...e}=t;return Object.keys(e).filter((t=>z.indexOf(t)<0)).forEach((t=>{delete e[t]})),e}_extractNonMaskProps(t){const{...e}=t;return j.forEach((t=>{"maxLength"!==t&&delete e[t]})),"defaultValue"in e||(e.defaultValue=t.mask?"":e.value),delete e.value,e}get maskValue(){return this.maskRef?"typed"===this.props.unmask?this.maskRef.typedValue:this.props.unmask?this.maskRef.unmaskedValue:this.maskRef.value:""}set maskValue(t){this.maskRef&&(t=null==t&&"typed"!==this.props.unmask?"":t,"typed"===this.props.unmask?this.maskRef.typedValue=t:this.props.unmask?this.maskRef.unmaskedValue=t:this.maskRef.value=t)}_onAccept(t){this.props.onAccept&&this.maskRef&&this.props.onAccept(this.maskValue,this.maskRef,t)}_onComplete(t){this.props.onComplete&&this.maskRef&&this.props.onComplete(this.maskValue,this.maskRef,t)}render(){return e.createElement(t,{...this._extractNonMaskProps(this.props),inputRef:this._inputRef})}}).displayName=void 0,s.propTypes=void 0,s),a=t.displayName||t.name||"Component";return i.displayName="IMask("+a+")",i.propTypes=U,e.forwardRef(((t,s)=>e.createElement(i,{...t,ref:s})))}((t=>{let{inputRef:s,...i}=t;return e.createElement("input",{...i,ref:s})})),Y=e.forwardRef(((t,s)=>e.createElement(K,{...t,ref:s}))),H=window.wp.blockEditor,W=window.wp.i18n,X=JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":2,"name":"vindi-pagamentos/person-type","icon":"flag","version":"1.0. 3","title":"Woo - Tipo de Pessoa","description":"Definição de tipo de pessoa no checkout","category":"woocommerce","parent":["woocommerce/checkout-billing-address-block"],"attributes":{"lock":{"type":"object","default":{"remove":true,"move":true}},"personType":{"type":"integer","default":1},"cpf":{"type":"string","default":""},"cnpj":{"type":"string","default":""}},"textdomain":"vindi-pagamentos","editorScript":"file:./dist/blocks/person-type/index.js"}'),Z=window.wp.element,{registerCheckoutBlock:G}=wc.blocksCheckout;G({metadata:X,component:({checkoutExtensionData:t})=>{const[s,i]=(0,Z.useState)(1),[a,n]=(0,Z.useState)(""),[r,u]=(0,Z.useState)(""),{setExtensionData:o}=t,l=(0,Z.useCallback)((t=>{i(t),o("vindi-pagamentos","_billing_persontype",t)}),[i,o]),h=(0,Z.useCallback)((t=>{n(t),o("vindi-pagamentos","_billing_persontype",s),o("vindi-pagamentos","_billing_cpf",t)}),[n,o,s]),p=(0,Z.useCallback)((t=>{u(t),o("vindi-pagamentos","_billing_persontype",s),o("vindi-pagamentos","_billing_cnpj",t)}),[u,o,s]);return(0,e.useEffect)((()=>{const t=new Event("add_checkout_block_fields");document.dispatchEvent(t)}),[]),(0,e.createElement)("div",{style:{display:"flex",flexDirection:"column",gap:"20px"}},(0,e.createElement)("div",{className:"wc-block-components-address-form"},(0,e.createElement)("div",{className:"wc-block-components-text-input is-active"},(0,e.createElement)("select",{id:"vindi-pagamentos__billing_persontype","aria-label":(0,W.__)("Tipo de Pessoa","vindi-pagamentos"),required:"",style:{width:"100%",maxWidth:"100%",height:"55px",borderColor:"#000",padding:"15px 5px 0",borderRadius:"5px"},value:s,onChange:t=>l(t.target.value)},(0,e.createElement)("option",{value:1},(0,W.__)("Pessoa Física","vindi-pagamentos")),(0,e.createElement)("option",{value:2},(0,W.__)("Pessoa Jurídica","vindi-pagamentos"))),(0,e.createElement)("label",null,(0,W.__)("Tipo de Pessoa","vindi-pagamentos")))),1==s&&(0,e.createElement)("div",{className:"wc-block-components-address-form"},(0,e.createElement)("div",{className:"wc-block-components-text-input is-active"},(0,e.createElement)("div",null,(0,e.createElement)(Y,{mask:"000.000.000-00",placeholder:"000.000.000-00",type:"text",id:"_billing_cpf",value:a,required:!!a,onChange:t=>h(t.target.value)})),(0,e.createElement)("label",null,(0,W.__)("CPF","vindi-pagamentos")))),2==s&&(0,e.createElement)("div",{className:"wc-block-components-address-form"},(0,e.createElement)("div",{className:"wc-block-components-text-input is-active"},(0,e.createElement)("div",null,(0,e.createElement)(Y,{mask:"00.000.000/0000-00",placeholder:"00.000.000/0000-00",type:"text",id:"_billing_cnpj",value:r,required:!!r,onChange:t=>p(t.target.value)})),(0,e.createElement)("label",null,(0,W.__)("CNPJ","vindi-pagamentos")))))}}),(0,t.registerBlockType)(X,{edit:({attributes:t,setAttributes:s})=>{const{cpf:i,cnpj:a,personType:n}=t;return(0,e.createElement)("div",{...(0,H.useBlockProps)(),style:{display:"flex",flexDirection:"column",gap:"20px"}},(0,e.createElement)("div",{class:"wc-block-components-address-form"},(0,e.createElement)("div",{class:"wc-block-components-text-input is-active"},(0,e.createElement)("select",{id:"vindi-pagamentos_billing_persontype","aria-label":(0,W.__)("Tipo de Pessoa","vindi-pagamentos"),required:"",style:{width:"100%",maxWidth:"100%",height:"55px",borderColor:"#000",paddingTop:"15px"},value:n,onChange:t=>s({personType:t.target.value})},(0,e.createElement)("option",{value:1},(0,W.__)("Pessoa Física","vindi-pagamentos")),(0,e.createElement)("option",{value:2},(0,W.__)("Pessoa Jurídica","vindi-pagamentos"))),(0,e.createElement)("label",null,(0,W.__)("Tipo de Pessoa","vindi-pagamentos")))),1==n&&(0,e.createElement)("div",{className:"wc-block-components-address-form"},(0,e.createElement)("div",{className:"wc-block-components-text-input is-active"},(0,e.createElement)("div",null,(0,e.createElement)(Y,{mask:"000.000.000-00",placeholder:"000.000.000-00",type:"text",id:"billing_cpf",value:i,required:!!i,onChange:t=>s({cnpj:t.target.value})})),(0,e.createElement)("label",null,(0,W.__)("CPF","vindi-pagamentos")))),2==n&&(0,e.createElement)("div",{className:"wc-block-components-address-form"},(0,e.createElement)("div",{className:"wc-block-components-text-input is-active"},(0,e.createElement)("div",null,(0,e.createElement)(Y,{mask:"00.000.000/0000-00",placeholder:"00.000.000/0000-00",type:"text",id:"billing_cnpj",value:a,required:!!a,onChange:t=>s({cnpj:t.target.value})})),(0,e.createElement)("label",null,(0,W.__)("CNPJ","vindi-pagamentos")))))}})})()})();1 (()=>{var t={703:(t,e,s)=>{"use strict";var i=s(414);function a(){}function n(){}n.resetWarningCache=a,t.exports=function(){function t(t,e,s,a,n,r){if(r!==i){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function e(){return t}t.isRequired=t;var s={array:t,bigint:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:e,element:t,elementType:t,instanceOf:e,node:t,objectOf:e,oneOf:e,oneOfType:e,shape:e,exact:e,checkPropTypes:n,resetWarningCache:a};return s.PropTypes=s,s}},697:(t,e,s)=>{t.exports=s(703)()},414:t=>{"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"}},e={};function s(i){var a=e[i];if(void 0!==a)return a.exports;var n=e[i]={exports:{}};return t[i](n,n.exports,s),n.exports}(()=>{"use strict";const t=window.wp.blocks,e=window.React;function i(t){return"string"==typeof t||t instanceof String}function a(t){var e;return"object"==typeof t&&null!=t&&"Object"===(null==t||null==(e=t.constructor)?void 0:e.name)}function n(t,e){return Array.isArray(e)?n(t,((t,s)=>e.includes(s))):Object.entries(t).reduce(((t,s)=>{let[i,a]=s;return e(a,i)&&(t[i]=a),t}),{})}const r="NONE",u="LEFT",o="FORCE_LEFT",l="RIGHT",h="FORCE_RIGHT";function p(t){return t.replace(/([.*+?^=!:${}()|[\]/\\])/g,"\\$1")}function d(t,e){if(e===t)return!0;const s=Array.isArray(e),i=Array.isArray(t);let a;if(s&&i){if(e.length!=t.length)return!1;for(a=0;a<e.length;a++)if(!d(e[a],t[a]))return!1;return!0}if(s!=i)return!1;if(e&&t&&"object"==typeof e&&"object"==typeof t){const s=e instanceof Date,i=t instanceof Date;if(s&&i)return e.getTime()==t.getTime();if(s!=i)return!1;const n=e instanceof RegExp,r=t instanceof RegExp;if(n&&r)return e.toString()==t.toString();if(n!=r)return!1;const u=Object.keys(e);for(a=0;a<u.length;a++)if(!Object.prototype.hasOwnProperty.call(t,u[a]))return!1;for(a=0;a<u.length;a++)if(!d(t[u[a]],e[u[a]]))return!1;return!0}return!(!e||!t||"function"!=typeof e||"function"!=typeof t)&&e.toString()===t.toString()}class c{constructor(t){for(Object.assign(this,t);this.value.slice(0,this.startChangePos)!==this.oldValue.slice(0,this.startChangePos);)--this.oldSelection.start;if(this.insertedCount)for(;this.value.slice(this.cursorPos)!==this.oldValue.slice(this.oldSelection.end);)this.value.length-this.cursorPos<this.oldValue.length-this.oldSelection.end?++this.oldSelection.end:++this.cursorPos}get startChangePos(){return Math.min(this.cursorPos,this.oldSelection.start)}get insertedCount(){return this.cursorPos-this.startChangePos}get inserted(){return this.value.substr(this.startChangePos,this.insertedCount)}get removedCount(){return Math.max(this.oldSelection.end-this.startChangePos||this.oldValue.length-this.value.length,0)}get removed(){return this.oldValue.substr(this.startChangePos,this.removedCount)}get head(){return this.value.substring(0,this.startChangePos)}get tail(){return this.value.substring(this.startChangePos+this.insertedCount)}get removeDirection(){return!this.removedCount||this.insertedCount?r:this.oldSelection.end!==this.cursorPos&&this.oldSelection.start!==this.cursorPos||this.oldSelection.end!==this.oldSelection.start?u:l}}function m(t,e){return new m.InputMask(t,e)}function g(t){if(null==t)throw new Error("mask property should be defined");return t instanceof RegExp?m.MaskedRegExp:i(t)?m.MaskedPattern:t===Date?m.MaskedDate:t===Number?m.MaskedNumber:Array.isArray(t)||t===Array?m.MaskedDynamic:m.Masked&&t.prototype instanceof m.Masked?t:m.Masked&&t instanceof m.Masked?t.constructor:t instanceof Function?m.MaskedFunction:(console.warn("Mask not found for mask",t),m.Masked)}function k(t){if(!t)throw new Error("Options in not defined");if(m.Masked){if(t.prototype instanceof m.Masked)return{mask:t};const{mask:e,...s}=t instanceof m.Masked?{mask:t}:a(t)&&t.mask instanceof m.Masked?t:{};if(e){const t=e.mask;return{...n(e,((t,e)=>!e.startsWith("_"))),mask:e.constructor,_mask:t,...s}}}return a(t)?{...t}:{mask:t}}function f(t){if(m.Masked&&t instanceof m.Masked)return t;const e=k(t),s=g(e.mask);if(!s)throw new Error("Masked class is not found for provided mask "+e.mask+", appropriate module needs to be imported manually before creating mask.");return e.mask===s&&delete e.mask,e._mask&&(e.mask=e._mask,delete e._mask),new s(e)}m.createMask=f;class _{get selectionStart(){let t;try{t=this._unsafeSelectionStart}catch{}return null!=t?t:this.value.length}get selectionEnd(){let t;try{t=this._unsafeSelectionEnd}catch{}return null!=t?t:this.value.length}select(t,e){if(null!=t&&null!=e&&(t!==this.selectionStart||e!==this.selectionEnd))try{this._unsafeSelect(t,e)}catch{}}get isActive(){return!1}}m.MaskElement=_;class v extends _{constructor(t){super(),this.input=t,this._onKeydown=this._onKeydown.bind(this),this._onInput=this._onInput.bind(this),this._onBeforeinput=this._onBeforeinput.bind(this),this._onCompositionEnd=this._onCompositionEnd.bind(this)}get rootElement(){var t,e,s;return null!=(t=null==(e=(s=this.input).getRootNode)?void 0:e.call(s))?t:document}get isActive(){return this.input===this.rootElement.activeElement}bindEvents(t){this.input.addEventListener("keydown",this._onKeydown),this.input.addEventListener("input",this._onInput),this.input.addEventListener("beforeinput",this._onBeforeinput),this.input.addEventListener("compositionend",this._onCompositionEnd),this.input.addEventListener("drop",t.drop),this.input.addEventListener("click",t.click),this.input.addEventListener("focus",t.focus),this.input.addEventListener("blur",t.commit),this._handlers=t}_onKeydown(t){return this._handlers.redo&&(90===t.keyCode&&t.shiftKey&&(t.metaKey||t.ctrlKey)||89===t.keyCode&&t.ctrlKey)?(t.preventDefault(),this._handlers.redo(t)):this._handlers.undo&&90===t.keyCode&&(t.metaKey||t.ctrlKey)?(t.preventDefault(),this._handlers.undo(t)):void(t.isComposing||this._handlers.selectionChange(t))}_onBeforeinput(t){return"historyUndo"===t.inputType&&this._handlers.undo?(t.preventDefault(),this._handlers.undo(t)):"historyRedo"===t.inputType&&this._handlers.redo?(t.preventDefault(),this._handlers.redo(t)):void 0}_onCompositionEnd(t){this._handlers.input(t)}_onInput(t){t.isComposing||this._handlers.input(t)}unbindEvents(){this.input.removeEventListener("keydown",this._onKeydown),this.input.removeEventListener("input",this._onInput),this.input.removeEventListener("beforeinput",this._onBeforeinput),this.input.removeEventListener("compositionend",this._onCompositionEnd),this.input.removeEventListener("drop",this._handlers.drop),this.input.removeEventListener("click",this._handlers.click),this.input.removeEventListener("focus",this._handlers.focus),this.input.removeEventListener("blur",this._handlers.commit),this._handlers={}}}m.HTMLMaskElement=v;class C extends v{constructor(t){super(t),this.input=t}get _unsafeSelectionStart(){return null!=this.input.selectionStart?this.input.selectionStart:this.value.length}get _unsafeSelectionEnd(){return this.input.selectionEnd}_unsafeSelect(t,e){this.input.setSelectionRange(t,e)}get value(){return this.input.value}set value(t){this.input.value=t}}m.HTMLMaskElement=v;class E extends v{get _unsafeSelectionStart(){const t=this.rootElement,e=t.getSelection&&t.getSelection(),s=e&&e.anchorOffset,i=e&&e.focusOffset;return null==i||null==s||s<i?s:i}get _unsafeSelectionEnd(){const t=this.rootElement,e=t.getSelection&&t.getSelection(),s=e&&e.anchorOffset,i=e&&e.focusOffset;return null==i||null==s||s>i?s:i}_unsafeSelect(t,e){if(!this.rootElement.createRange)return;const s=this.rootElement.createRange();s.setStart(this.input.firstChild||this.input,t),s.setEnd(this.input.lastChild||this.input,e);const i=this.rootElement,a=i.getSelection&&i.getSelection();a&&(a.removeAllRanges(),a.addRange(s))}get value(){return this.input.textContent||""}set value(t){this.input.textContent=t}}m.HTMLContenteditableMaskElement=E;class A{constructor(){this.states=[],this.currentIndex=0}get currentState(){return this.states[this.currentIndex]}get isEmpty(){return 0===this.states.length}push(t){this.currentIndex<this.states.length-1&&(this.states.length=this.currentIndex+1),this.states.push(t),this.states.length>A.MAX_LENGTH&&this.states.shift(),this.currentIndex=this.states.length-1}go(t){return this.currentIndex=Math.min(Math.max(this.currentIndex+t,0),this.states.length-1),this.currentState}undo(){return this.go(-1)}redo(){return this.go(1)}clear(){this.states.length=0,this.currentIndex=0}}A.MAX_LENGTH=100,m.InputMask=class{constructor(t,e){this.el=t instanceof _?t:t.isContentEditable&&"INPUT"!==t.tagName&&"TEXTAREA"!==t.tagName?new E(t):new C(t),this.masked=f(e),this._listeners={},this._value="",this._unmaskedValue="",this._rawInputValue="",this.history=new A,this._saveSelection=this._saveSelection.bind(this),this._onInput=this._onInput.bind(this),this._onChange=this._onChange.bind(this),this._onDrop=this._onDrop.bind(this),this._onFocus=this._onFocus.bind(this),this._onClick=this._onClick.bind(this),this._onUndo=this._onUndo.bind(this),this._onRedo=this._onRedo.bind(this),this.alignCursor=this.alignCursor.bind(this),this.alignCursorFriendly=this.alignCursorFriendly.bind(this),this._bindEvents(),this.updateValue(),this._onChange()}maskEquals(t){var e;return null==t||(null==(e=this.masked)?void 0:e.maskEquals(t))}get mask(){return this.masked.mask}set mask(t){if(this.maskEquals(t))return;if(!(t instanceof m.Masked)&&this.masked.constructor===g(t))return void this.masked.updateOptions({mask:t});const e=t instanceof m.Masked?t:f({mask:t});e.unmaskedValue=this.masked.unmaskedValue,this.masked=e}get value(){return this._value}set value(t){this.value!==t&&(this.masked.value=t,this.updateControl("auto"))}get unmaskedValue(){return this._unmaskedValue}set unmaskedValue(t){this.unmaskedValue!==t&&(this.masked.unmaskedValue=t,this.updateControl("auto"))}get rawInputValue(){return this._rawInputValue}set rawInputValue(t){this.rawInputValue!==t&&(this.masked.rawInputValue=t,this.updateControl(),this.alignCursor())}get typedValue(){return this.masked.typedValue}set typedValue(t){this.masked.typedValueEquals(t)||(this.masked.typedValue=t,this.updateControl("auto"))}get displayValue(){return this.masked.displayValue}_bindEvents(){this.el.bindEvents({selectionChange:this._saveSelection,input:this._onInput,drop:this._onDrop,click:this._onClick,focus:this._onFocus,commit:this._onChange,undo:this._onUndo,redo:this._onRedo})}_unbindEvents(){this.el&&this.el.unbindEvents()}_fireEvent(t,e){const s=this._listeners[t];s&&s.forEach((t=>t(e)))}get selectionStart(){return this._cursorChanging?this._changingCursorPos:this.el.selectionStart}get cursorPos(){return this._cursorChanging?this._changingCursorPos:this.el.selectionEnd}set cursorPos(t){this.el&&this.el.isActive&&(this.el.select(t,t),this._saveSelection())}_saveSelection(){this.displayValue!==this.el.value&&console.warn("Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly."),this._selection={start:this.selectionStart,end:this.cursorPos}}updateValue(){this.masked.value=this.el.value,this._value=this.masked.value,this._unmaskedValue=this.masked.unmaskedValue,this._rawInputValue=this.masked.rawInputValue}updateControl(t){const e=this.masked.unmaskedValue,s=this.masked.value,i=this.masked.rawInputValue,a=this.displayValue,n=this.unmaskedValue!==e||this.value!==s||this._rawInputValue!==i;this._unmaskedValue=e,this._value=s,this._rawInputValue=i,this.el.value!==a&&(this.el.value=a),"auto"===t?this.alignCursor():null!=t&&(this.cursorPos=t),n&&this._fireChangeEvents(),this._historyChanging||!n&&!this.history.isEmpty||this.history.push({unmaskedValue:e,selection:{start:this.selectionStart,end:this.cursorPos}})}updateOptions(t){const{mask:e,...s}=t,i=!this.maskEquals(e),a=this.masked.optionsIsChanged(s);i&&(this.mask=e),a&&this.masked.updateOptions(s),(i||a)&&this.updateControl()}updateCursor(t){null!=t&&(this.cursorPos=t,this._delayUpdateCursor(t))}_delayUpdateCursor(t){this._abortUpdateCursor(),this._changingCursorPos=t,this._cursorChanging=setTimeout((()=>{this.el&&(this.cursorPos=this._changingCursorPos,this._abortUpdateCursor())}),10)}_fireChangeEvents(){this._fireEvent("accept",this._inputEvent),this.masked.isComplete&&this._fireEvent("complete",this._inputEvent)}_abortUpdateCursor(){this._cursorChanging&&(clearTimeout(this._cursorChanging),delete this._cursorChanging)}alignCursor(){this.cursorPos=this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos,u))}alignCursorFriendly(){this.selectionStart===this.cursorPos&&this.alignCursor()}on(t,e){return this._listeners[t]||(this._listeners[t]=[]),this._listeners[t].push(e),this}off(t,e){if(!this._listeners[t])return this;if(!e)return delete this._listeners[t],this;const s=this._listeners[t].indexOf(e);return s>=0&&this._listeners[t].splice(s,1),this}_onInput(t){this._inputEvent=t,this._abortUpdateCursor();const e=new c({value:this.el.value,cursorPos:this.cursorPos,oldValue:this.displayValue,oldSelection:this._selection}),s=this.masked.rawInputValue,i=this.masked.splice(e.startChangePos,e.removed.length,e.inserted,e.removeDirection,{input:!0,raw:!0}).offset,a=s===this.masked.rawInputValue?e.removeDirection:r;let n=this.masked.nearestInputPos(e.startChangePos+i,a);a!==r&&(n=this.masked.nearestInputPos(n,r)),this.updateControl(n),delete this._inputEvent}_onChange(){this.displayValue!==this.el.value&&this.updateValue(),this.masked.doCommit(),this.updateControl(),this._saveSelection()}_onDrop(t){t.preventDefault(),t.stopPropagation()}_onFocus(t){this.alignCursorFriendly()}_onClick(t){this.alignCursorFriendly()}_onUndo(){this._applyHistoryState(this.history.undo())}_onRedo(){this._applyHistoryState(this.history.redo())}_applyHistoryState(t){t&&(this._historyChanging=!0,this.unmaskedValue=t.unmaskedValue,this.el.select(t.selection.start,t.selection.end),this._saveSelection(),this._historyChanging=!1)}destroy(){this._unbindEvents(),this._listeners.length=0,delete this.el}};class b{static normalize(t){return Array.isArray(t)?t:[t,new b]}constructor(t){Object.assign(this,{inserted:"",rawInserted:"",tailShift:0,skip:!1},t)}aggregate(t){return this.inserted+=t.inserted,this.rawInserted+=t.rawInserted,this.tailShift+=t.tailShift,this.skip=this.skip||t.skip,this}get offset(){return this.tailShift+this.inserted.length}get consumed(){return Boolean(this.rawInserted)||this.skip}equals(t){return this.inserted===t.inserted&&this.tailShift===t.tailShift&&this.rawInserted===t.rawInserted&&this.skip===t.skip}}m.ChangeDetails=b;class x{constructor(t,e,s){void 0===t&&(t=""),void 0===e&&(e=0),this.value=t,this.from=e,this.stop=s}toString(){return this.value}extend(t){this.value+=String(t)}appendTo(t){return t.append(this.toString(),{tail:!0}).aggregate(t._appendPlaceholder())}get state(){return{value:this.value,from:this.from,stop:this.stop}}set state(t){Object.assign(this,t)}unshift(t){if(!this.value.length||null!=t&&this.from>=t)return"";const e=this.value[0];return this.value=this.value.slice(1),e}shift(){if(!this.value.length)return"";const t=this.value[this.value.length-1];return this.value=this.value.slice(0,-1),t}}class F{constructor(t){this._value="",this._update({...F.DEFAULTS,...t}),this._initialized=!0}updateOptions(t){this.optionsIsChanged(t)&&this.withValueRefresh(this._update.bind(this,t))}_update(t){Object.assign(this,t)}get state(){return{_value:this.value,_rawInputValue:this.rawInputValue}}set state(t){this._value=t._value}reset(){this._value=""}get value(){return this._value}set value(t){this.resolve(t,{input:!0})}resolve(t,e){void 0===e&&(e={input:!0}),this.reset(),this.append(t,e,""),this.doCommit()}get unmaskedValue(){return this.value}set unmaskedValue(t){this.resolve(t,{})}get typedValue(){return this.parse?this.parse(this.value,this):this.unmaskedValue}set typedValue(t){this.format?this.value=this.format(t,this):this.unmaskedValue=String(t)}get rawInputValue(){return this.extractInput(0,this.displayValue.length,{raw:!0})}set rawInputValue(t){this.resolve(t,{raw:!0})}get displayValue(){return this.value}get isComplete(){return!0}get isFilled(){return this.isComplete}nearestInputPos(t,e){return t}totalInputPositions(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),Math.min(this.displayValue.length,e-t)}extractInput(t,e,s){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),this.displayValue.slice(t,e)}extractTail(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),new x(this.extractInput(t,e),t)}appendTail(t){return i(t)&&(t=new x(String(t))),t.appendTo(this)}_appendCharRaw(t,e){return t?(this._value+=t,new b({inserted:t,rawInserted:t})):new b}_appendChar(t,e,s){void 0===e&&(e={});const i=this.state;let a;if([t,a]=this.doPrepareChar(t,e),t&&(a=a.aggregate(this._appendCharRaw(t,e)),!a.rawInserted&&"pad"===this.autofix)){const s=this.state;this.state=i;let n=this.pad(e);const r=this._appendCharRaw(t,e);n=n.aggregate(r),r.rawInserted||n.equals(a)?a=n:this.state=s}if(a.inserted){let t,n=!1!==this.doValidate(e);if(n&&null!=s){const e=this.state;if(!0===this.overwrite){t=s.state;for(let t=0;t<a.rawInserted.length;++t)s.unshift(this.displayValue.length-a.tailShift)}let i=this.appendTail(s);if(n=i.rawInserted.length===s.toString().length,!(n&&i.inserted||"shift"!==this.overwrite)){this.state=e,t=s.state;for(let t=0;t<a.rawInserted.length;++t)s.shift();i=this.appendTail(s),n=i.rawInserted.length===s.toString().length}n&&i.inserted&&(this.state=e)}n||(a=new b,this.state=i,s&&t&&(s.state=t))}return a}_appendPlaceholder(){return new b}_appendEager(){return new b}append(t,e,s){if(!i(t))throw new Error("value should be string");const a=i(s)?new x(String(s)):s;let n;null!=e&&e.tail&&(e._beforeTailState=this.state),[t,n]=this.doPrepare(t,e);for(let s=0;s<t.length;++s){const i=this._appendChar(t[s],e,a);if(!i.rawInserted&&!this.doSkipInvalid(t[s],e,a))break;n.aggregate(i)}return(!0===this.eager||"append"===this.eager)&&null!=e&&e.input&&t&&n.aggregate(this._appendEager()),null!=a&&(n.tailShift+=this.appendTail(a).tailShift),n}remove(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),this._value=this.displayValue.slice(0,t)+this.displayValue.slice(e),new b}withValueRefresh(t){if(this._refreshing||!this._initialized)return t();this._refreshing=!0;const e=this.rawInputValue,s=this.value,i=t();return this.rawInputValue=e,this.value&&this.value!==s&&0===s.indexOf(this.value)&&(this.append(s.slice(this.displayValue.length),{},""),this.doCommit()),delete this._refreshing,i}runIsolated(t){if(this._isolated||!this._initialized)return t(this);this._isolated=!0;const e=this.state,s=t(this);return this.state=e,delete this._isolated,s}doSkipInvalid(t,e,s){return Boolean(this.skipInvalid)}doPrepare(t,e){return void 0===e&&(e={}),b.normalize(this.prepare?this.prepare(t,this,e):t)}doPrepareChar(t,e){return void 0===e&&(e={}),b.normalize(this.prepareChar?this.prepareChar(t,this,e):t)}doValidate(t){return(!this.validate||this.validate(this.value,this,t))&&(!this.parent||this.parent.doValidate(t))}doCommit(){this.commit&&this.commit(this.value,this)}splice(t,e,s,i,a){void 0===s&&(s=""),void 0===i&&(i=r),void 0===a&&(a={input:!0});const n=t+e,p=this.extractTail(n),d=!0===this.eager||"remove"===this.eager;let c;d&&(i=function(t){switch(t){case u:return o;case l:return h;default:return t}}(i),c=this.extractInput(0,n,{raw:!0}));let m=t;const g=new b;if(i!==r&&(m=this.nearestInputPos(t,e>1&&0!==t&&!d?r:i),g.tailShift=m-t),g.aggregate(this.remove(m)),d&&i!==r&&c===this.rawInputValue)if(i===o){let t;for(;c===this.rawInputValue&&(t=this.displayValue.length);)g.aggregate(new b({tailShift:-1})).aggregate(this.remove(t-1))}else i===h&&p.unshift();return g.aggregate(this.append(s,a,p))}maskEquals(t){return this.mask===t}optionsIsChanged(t){return!d(this,t)}typedValueEquals(t){const e=this.typedValue;return t===e||F.EMPTY_VALUES.includes(t)&&F.EMPTY_VALUES.includes(e)||!!this.format&&this.format(t,this)===this.format(this.typedValue,this)}pad(t){return new b}}F.DEFAULTS={skipInvalid:!0},F.EMPTY_VALUES=[void 0,null,""],m.Masked=F;class y{constructor(t,e){void 0===t&&(t=[]),void 0===e&&(e=0),this.chunks=t,this.from=e}toString(){return this.chunks.map(String).join("")}extend(t){if(!String(t))return;t=i(t)?new x(String(t)):t;const e=this.chunks[this.chunks.length-1],s=e&&(e.stop===t.stop||null==t.stop)&&t.from===e.from+e.toString().length;if(t instanceof x)s?e.extend(t.toString()):this.chunks.push(t);else if(t instanceof y){if(null==t.stop){let e;for(;t.chunks.length&&null==t.chunks[0].stop;)e=t.chunks.shift(),e.from+=t.from,this.extend(e)}t.toString()&&(t.stop=t.blockIndex,this.chunks.push(t))}}appendTo(t){if(!(t instanceof m.MaskedPattern))return new x(this.toString()).appendTo(t);const e=new b;for(let s=0;s<this.chunks.length;++s){const i=this.chunks[s],a=t._mapPosToBlock(t.displayValue.length),n=i.stop;let r;if(null!=n&&(!a||a.index<=n)&&((i instanceof y||t._stops.indexOf(n)>=0)&&e.aggregate(t._appendPlaceholder(n)),r=i instanceof y&&t._blocks[n]),r){const s=r.appendTail(i);e.aggregate(s);const a=i.toString().slice(s.rawInserted.length);a&&e.aggregate(t.append(a,{tail:!0}))}else e.aggregate(t.append(i.toString(),{tail:!0}))}return e}get state(){return{chunks:this.chunks.map((t=>t.state)),from:this.from,stop:this.stop,blockIndex:this.blockIndex}}set state(t){const{chunks:e,...s}=t;Object.assign(this,s),this.chunks=e.map((t=>{const e="chunks"in t?new y:new x;return e.state=t,e}))}unshift(t){if(!this.chunks.length||null!=t&&this.from>=t)return"";const e=null!=t?t-this.from:t;let s=0;for(;s<this.chunks.length;){const t=this.chunks[s],i=t.unshift(e);if(t.toString()){if(!i)break;++s}else this.chunks.splice(s,1);if(i)return i}return""}shift(){if(!this.chunks.length)return"";let t=this.chunks.length-1;for(;0<=t;){const e=this.chunks[t],s=e.shift();if(e.toString()){if(!s)break;--t}else this.chunks.splice(t,1);if(s)return s}return""}}class S{constructor(t,e){this.masked=t,this._log=[];const{offset:s,index:i}=t._mapPosToBlock(e)||(e<0?{index:0,offset:0}:{index:this.masked._blocks.length,offset:0});this.offset=s,this.index=i,this.ok=!1}get block(){return this.masked._blocks[this.index]}get pos(){return this.masked._blockStartPos(this.index)+this.offset}get state(){return{index:this.index,offset:this.offset,ok:this.ok}}set state(t){Object.assign(this,t)}pushState(){this._log.push(this.state)}popState(){const t=this._log.pop();return t&&(this.state=t),t}bindBlock(){this.block||(this.index<0&&(this.index=0,this.offset=0),this.index>=this.masked._blocks.length&&(this.index=this.masked._blocks.length-1,this.offset=this.block.displayValue.length))}_pushLeft(t){for(this.pushState(),this.bindBlock();0<=this.index;--this.index,this.offset=(null==(e=this.block)?void 0:e.displayValue.length)||0){var e;if(t())return this.ok=!0}return this.ok=!1}_pushRight(t){for(this.pushState(),this.bindBlock();this.index<this.masked._blocks.length;++this.index,this.offset=0)if(t())return this.ok=!0;return this.ok=!1}pushLeftBeforeFilled(){return this._pushLeft((()=>{if(!this.block.isFixed&&this.block.value)return this.offset=this.block.nearestInputPos(this.offset,o),0!==this.offset||void 0}))}pushLeftBeforeInput(){return this._pushLeft((()=>{if(!this.block.isFixed)return this.offset=this.block.nearestInputPos(this.offset,u),!0}))}pushLeftBeforeRequired(){return this._pushLeft((()=>{if(!(this.block.isFixed||this.block.isOptional&&!this.block.value))return this.offset=this.block.nearestInputPos(this.offset,u),!0}))}pushRightBeforeFilled(){return this._pushRight((()=>{if(!this.block.isFixed&&this.block.value)return this.offset=this.block.nearestInputPos(this.offset,h),this.offset!==this.block.value.length||void 0}))}pushRightBeforeInput(){return this._pushRight((()=>{if(!this.block.isFixed)return this.offset=this.block.nearestInputPos(this.offset,r),!0}))}pushRightBeforeRequired(){return this._pushRight((()=>{if(!(this.block.isFixed||this.block.isOptional&&!this.block.value))return this.offset=this.block.nearestInputPos(this.offset,r),!0}))}}class B{constructor(t){Object.assign(this,t),this._value="",this.isFixed=!0}get value(){return this._value}get unmaskedValue(){return this.isUnmasking?this.value:""}get rawInputValue(){return this._isRawInput?this.value:""}get displayValue(){return this.value}reset(){this._isRawInput=!1,this._value=""}remove(t,e){return void 0===t&&(t=0),void 0===e&&(e=this._value.length),this._value=this._value.slice(0,t)+this._value.slice(e),this._value||(this._isRawInput=!1),new b}nearestInputPos(t,e){void 0===e&&(e=r);const s=this._value.length;switch(e){case u:case o:return 0;default:return s}}totalInputPositions(t,e){return void 0===t&&(t=0),void 0===e&&(e=this._value.length),this._isRawInput?e-t:0}extractInput(t,e,s){return void 0===t&&(t=0),void 0===e&&(e=this._value.length),void 0===s&&(s={}),s.raw&&this._isRawInput&&this._value.slice(t,e)||""}get isComplete(){return!0}get isFilled(){return Boolean(this._value)}_appendChar(t,e){if(void 0===e&&(e={}),this.isFilled)return new b;const s=!0===this.eager||"append"===this.eager,i=this.char===t&&(this.isUnmasking||e.input||e.raw)&&(!e.raw||!s)&&!e.tail,a=new b({inserted:this.char,rawInserted:i?this.char:""});return this._value=this.char,this._isRawInput=i&&(e.raw||e.input),a}_appendEager(){return this._appendChar(this.char,{tail:!0})}_appendPlaceholder(){const t=new b;return this.isFilled||(this._value=t.inserted=this.char),t}extractTail(){return new x("")}appendTail(t){return i(t)&&(t=new x(String(t))),t.appendTo(this)}append(t,e,s){const i=this._appendChar(t[0],e);return null!=s&&(i.tailShift+=this.appendTail(s).tailShift),i}doCommit(){}get state(){return{_value:this._value,_rawInputValue:this.rawInputValue}}set state(t){this._value=t._value,this._isRawInput=Boolean(t._rawInputValue)}pad(t){return this._appendPlaceholder()}}class w{constructor(t){const{parent:e,isOptional:s,placeholderChar:i,displayChar:a,lazy:n,eager:r,...u}=t;this.masked=f(u),Object.assign(this,{parent:e,isOptional:s,placeholderChar:i,displayChar:a,lazy:n,eager:r})}reset(){this.isFilled=!1,this.masked.reset()}remove(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.value.length),0===t&&e>=1?(this.isFilled=!1,this.masked.remove(t,e)):new b}get value(){return this.masked.value||(this.isFilled&&!this.isOptional?this.placeholderChar:"")}get unmaskedValue(){return this.masked.unmaskedValue}get rawInputValue(){return this.masked.rawInputValue}get displayValue(){return this.masked.value&&this.displayChar||this.value}get isComplete(){return Boolean(this.masked.value)||this.isOptional}_appendChar(t,e){if(void 0===e&&(e={}),this.isFilled)return new b;const s=this.masked.state;let i=this.masked._appendChar(t,this.currentMaskFlags(e));return i.inserted&&!1===this.doValidate(e)&&(i=new b,this.masked.state=s),i.inserted||this.isOptional||this.lazy||e.input||(i.inserted=this.placeholderChar),i.skip=!i.inserted&&!this.isOptional,this.isFilled=Boolean(i.inserted),i}append(t,e,s){return this.masked.append(t,this.currentMaskFlags(e),s)}_appendPlaceholder(){return this.isFilled||this.isOptional?new b:(this.isFilled=!0,new b({inserted:this.placeholderChar}))}_appendEager(){return new b}extractTail(t,e){return this.masked.extractTail(t,e)}appendTail(t){return this.masked.appendTail(t)}extractInput(t,e,s){return void 0===t&&(t=0),void 0===e&&(e=this.value.length),this.masked.extractInput(t,e,s)}nearestInputPos(t,e){void 0===e&&(e=r);const s=this.value.length,i=Math.min(Math.max(t,0),s);switch(e){case u:case o:return this.isComplete?i:0;case l:case h:return this.isComplete?i:s;default:return i}}totalInputPositions(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.value.length),this.value.slice(t,e).length}doValidate(t){return this.masked.doValidate(this.currentMaskFlags(t))&&(!this.parent||this.parent.doValidate(this.currentMaskFlags(t)))}doCommit(){this.masked.doCommit()}get state(){return{_value:this.value,_rawInputValue:this.rawInputValue,masked:this.masked.state,isFilled:this.isFilled}}set state(t){this.masked.state=t.masked,this.isFilled=t.isFilled}currentMaskFlags(t){var e;return{...t,_beforeTailState:(null==t||null==(e=t._beforeTailState)?void 0:e.masked)||(null==t?void 0:t._beforeTailState)}}pad(t){return new b}}w.DEFAULT_DEFINITIONS={0:/\d/,a:/[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,"*":/./},m.MaskedRegExp=class extends F{updateOptions(t){super.updateOptions(t)}_update(t){const e=t.mask;e&&(t.validate=t=>t.search(e)>=0),super._update(t)}};class D extends F{constructor(t){super({...D.DEFAULTS,...t,definitions:Object.assign({},w.DEFAULT_DEFINITIONS,null==t?void 0:t.definitions)})}updateOptions(t){super.updateOptions(t)}_update(t){t.definitions=Object.assign({},this.definitions,t.definitions),super._update(t),this._rebuildMask()}_rebuildMask(){const t=this.definitions;this._blocks=[],this.exposeBlock=void 0,this._stops=[],this._maskedBlocks={};const e=this.mask;if(!e||!t)return;let s=!1,i=!1;for(let a=0;a<e.length;++a){if(this.blocks){const t=e.slice(a),s=Object.keys(this.blocks).filter((e=>0===t.indexOf(e)));s.sort(((t,e)=>e.length-t.length));const i=s[0];if(i){const{expose:t,repeat:e,...s}=k(this.blocks[i]),n={lazy:this.lazy,eager:this.eager,placeholderChar:this.placeholderChar,displayChar:this.displayChar,overwrite:this.overwrite,autofix:this.autofix,...s,repeat:e,parent:this},r=null!=e?new m.RepeatBlock(n):f(n);r&&(this._blocks.push(r),t&&(this.exposeBlock=r),this._maskedBlocks[i]||(this._maskedBlocks[i]=[]),this._maskedBlocks[i].push(this._blocks.length-1)),a+=i.length-1;continue}}let n=e[a],r=n in t;if(n===D.STOP_CHAR){this._stops.push(this._blocks.length);continue}if("{"===n||"}"===n){s=!s;continue}if("["===n||"]"===n){i=!i;continue}if(n===D.ESCAPE_CHAR){if(++a,n=e[a],!n)break;r=!1}const u=r?new w({isOptional:i,lazy:this.lazy,eager:this.eager,placeholderChar:this.placeholderChar,displayChar:this.displayChar,...k(t[n]),parent:this}):new B({char:n,eager:this.eager,isUnmasking:s});this._blocks.push(u)}}get state(){return{...super.state,_blocks:this._blocks.map((t=>t.state))}}set state(t){if(!t)return void this.reset();const{_blocks:e,...s}=t;this._blocks.forEach(((t,s)=>t.state=e[s])),super.state=s}reset(){super.reset(),this._blocks.forEach((t=>t.reset()))}get isComplete(){return this.exposeBlock?this.exposeBlock.isComplete:this._blocks.every((t=>t.isComplete))}get isFilled(){return this._blocks.every((t=>t.isFilled))}get isFixed(){return this._blocks.every((t=>t.isFixed))}get isOptional(){return this._blocks.every((t=>t.isOptional))}doCommit(){this._blocks.forEach((t=>t.doCommit())),super.doCommit()}get unmaskedValue(){return this.exposeBlock?this.exposeBlock.unmaskedValue:this._blocks.reduce(((t,e)=>t+e.unmaskedValue),"")}set unmaskedValue(t){if(this.exposeBlock){const e=this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock))+this.exposeBlock.displayValue.length);this.exposeBlock.unmaskedValue=t,this.appendTail(e),this.doCommit()}else super.unmaskedValue=t}get value(){return this.exposeBlock?this.exposeBlock.value:this._blocks.reduce(((t,e)=>t+e.value),"")}set value(t){if(this.exposeBlock){const e=this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock))+this.exposeBlock.displayValue.length);this.exposeBlock.value=t,this.appendTail(e),this.doCommit()}else super.value=t}get typedValue(){return this.exposeBlock?this.exposeBlock.typedValue:super.typedValue}set typedValue(t){if(this.exposeBlock){const e=this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock))+this.exposeBlock.displayValue.length);this.exposeBlock.typedValue=t,this.appendTail(e),this.doCommit()}else super.typedValue=t}get displayValue(){return this._blocks.reduce(((t,e)=>t+e.displayValue),"")}appendTail(t){return super.appendTail(t).aggregate(this._appendPlaceholder())}_appendEager(){var t;const e=new b;let s=null==(t=this._mapPosToBlock(this.displayValue.length))?void 0:t.index;if(null==s)return e;this._blocks[s].isFilled&&++s;for(let t=s;t<this._blocks.length;++t){const s=this._blocks[t]._appendEager();if(!s.inserted)break;e.aggregate(s)}return e}_appendCharRaw(t,e){void 0===e&&(e={});const s=this._mapPosToBlock(this.displayValue.length),i=new b;if(!s)return i;for(let n,r=s.index;n=this._blocks[r];++r){var a;const s=n._appendChar(t,{...e,_beforeTailState:null==(a=e._beforeTailState)||null==(a=a._blocks)?void 0:a[r]});if(i.aggregate(s),s.consumed)break}return i}extractTail(t,e){void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length);const s=new y;return t===e||this._forEachBlocksInRange(t,e,((t,e,i,a)=>{const n=t.extractTail(i,a);n.stop=this._findStopBefore(e),n.from=this._blockStartPos(e),n instanceof y&&(n.blockIndex=e),s.extend(n)})),s}extractInput(t,e,s){if(void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),void 0===s&&(s={}),t===e)return"";let i="";return this._forEachBlocksInRange(t,e,((t,e,a,n)=>{i+=t.extractInput(a,n,s)})),i}_findStopBefore(t){let e;for(let s=0;s<this._stops.length;++s){const i=this._stops[s];if(!(i<=t))break;e=i}return e}_appendPlaceholder(t){const e=new b;if(this.lazy&&null==t)return e;const s=this._mapPosToBlock(this.displayValue.length);if(!s)return e;const i=s.index,a=null!=t?t:this._blocks.length;return this._blocks.slice(i,a).forEach((s=>{var i;s.lazy&&null==t||e.aggregate(s._appendPlaceholder(null==(i=s._blocks)?void 0:i.length))})),e}_mapPosToBlock(t){let e="";for(let s=0;s<this._blocks.length;++s){const i=this._blocks[s],a=e.length;if(e+=i.displayValue,t<=e.length)return{index:s,offset:t-a}}}_blockStartPos(t){return this._blocks.slice(0,t).reduce(((t,e)=>t+e.displayValue.length),0)}_forEachBlocksInRange(t,e,s){void 0===e&&(e=this.displayValue.length);const i=this._mapPosToBlock(t);if(i){const t=this._mapPosToBlock(e),a=t&&i.index===t.index,n=i.offset,r=t&&a?t.offset:this._blocks[i.index].displayValue.length;if(s(this._blocks[i.index],i.index,n,r),t&&!a){for(let e=i.index+1;e<t.index;++e)s(this._blocks[e],e,0,this._blocks[e].displayValue.length);s(this._blocks[t.index],t.index,0,t.offset)}}}remove(t,e){void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length);const s=super.remove(t,e);return this._forEachBlocksInRange(t,e,((t,e,i,a)=>{s.aggregate(t.remove(i,a))})),s}nearestInputPos(t,e){if(void 0===e&&(e=r),!this._blocks.length)return 0;const s=new S(this,t);if(e===r)return s.pushRightBeforeInput()?s.pos:(s.popState(),s.pushLeftBeforeInput()?s.pos:this.displayValue.length);if(e===u||e===o){if(e===u){if(s.pushRightBeforeFilled(),s.ok&&s.pos===t)return t;s.popState()}if(s.pushLeftBeforeInput(),s.pushLeftBeforeRequired(),s.pushLeftBeforeFilled(),e===u){if(s.pushRightBeforeInput(),s.pushRightBeforeRequired(),s.ok&&s.pos<=t)return s.pos;if(s.popState(),s.ok&&s.pos<=t)return s.pos;s.popState()}return s.ok?s.pos:e===o?0:(s.popState(),s.ok?s.pos:(s.popState(),s.ok?s.pos:0))}return e===l||e===h?(s.pushRightBeforeInput(),s.pushRightBeforeRequired(),s.pushRightBeforeFilled()?s.pos:e===h?this.displayValue.length:(s.popState(),s.ok?s.pos:(s.popState(),s.ok?s.pos:this.nearestInputPos(t,u)))):t}totalInputPositions(t,e){void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length);let s=0;return this._forEachBlocksInRange(t,e,((t,e,i,a)=>{s+=t.totalInputPositions(i,a)})),s}maskedBlock(t){return this.maskedBlocks(t)[0]}maskedBlocks(t){const e=this._maskedBlocks[t];return e?e.map((t=>this._blocks[t])):[]}pad(t){const e=new b;return this._forEachBlocksInRange(0,this.displayValue.length,(s=>e.aggregate(s.pad(t)))),e}}D.DEFAULTS={...F.DEFAULTS,lazy:!0,placeholderChar:"_"},D.STOP_CHAR="`",D.ESCAPE_CHAR="\\",D.InputDefinition=w,D.FixedDefinition=B,m.MaskedPattern=D;class V extends D{get _matchFrom(){return this.maxLength-String(this.from).length}constructor(t){super(t)}updateOptions(t){super.updateOptions(t)}_update(t){const{to:e=this.to||0,from:s=this.from||0,maxLength:i=this.maxLength||0,autofix:a=this.autofix,...n}=t;this.to=e,this.from=s,this.maxLength=Math.max(String(e).length,i),this.autofix=a;const r=String(this.from).padStart(this.maxLength,"0"),u=String(this.to).padStart(this.maxLength,"0");let o=0;for(;o<u.length&&u[o]===r[o];)++o;n.mask=u.slice(0,o).replace(/0/g,"\\0")+"0".repeat(this.maxLength-o),super._update(n)}get isComplete(){return super.isComplete&&Boolean(this.value)}boundaries(t){let e="",s="";const[,i,a]=t.match(/^(\D*)(\d*)(\D*)/)||[];return a&&(e="0".repeat(i.length)+a,s="9".repeat(i.length)+a),e=e.padEnd(this.maxLength,"0"),s=s.padEnd(this.maxLength,"9"),[e,s]}doPrepareChar(t,e){let s;return void 0===e&&(e={}),[t,s]=super.doPrepareChar(t.replace(/\D/g,""),e),t||(s.skip=!this.isComplete),[t,s]}_appendCharRaw(t,e){if(void 0===e&&(e={}),!this.autofix||this.value.length+1>this.maxLength)return super._appendCharRaw(t,e);const s=String(this.from).padStart(this.maxLength,"0"),i=String(this.to).padStart(this.maxLength,"0"),[a,n]=this.boundaries(this.value+t);return Number(n)<this.from?super._appendCharRaw(s[this.value.length],e):Number(a)>this.to?!e.tail&&"pad"===this.autofix&&this.value.length+1<this.maxLength?super._appendCharRaw(s[this.value.length],e).aggregate(this._appendCharRaw(t,e)):super._appendCharRaw(i[this.value.length],e):super._appendCharRaw(t,e)}doValidate(t){const e=this.value;if(-1===e.search(/[^0]/)&&e.length<=this._matchFrom)return!0;const[s,i]=this.boundaries(e);return this.from<=Number(i)&&Number(s)<=this.to&&super.doValidate(t)}pad(t){const e=new b;if(this.value.length===this.maxLength)return e;const s=this.value,i=this.maxLength-this.value.length;if(i){this.reset();for(let s=0;s<i;++s)e.aggregate(super._appendCharRaw("0",t));s.split("").forEach((t=>this._appendCharRaw(t)))}return e}}m.MaskedRange=V;class M extends D{static extractPatternOptions(t){const{mask:e,pattern:s,...a}=t;return{...a,mask:i(e)?e:s}}constructor(t){super(M.extractPatternOptions({...M.DEFAULTS,...t}))}updateOptions(t){super.updateOptions(t)}_update(t){const{mask:e,pattern:s,blocks:a,...n}={...M.DEFAULTS,...t},r=Object.assign({},M.GET_DEFAULT_BLOCKS());t.min&&(r.Y.from=t.min.getFullYear()),t.max&&(r.Y.to=t.max.getFullYear()),t.min&&t.max&&r.Y.from===r.Y.to&&(r.m.from=t.min.getMonth()+1,r.m.to=t.max.getMonth()+1,r.m.from===r.m.to&&(r.d.from=t.min.getDate(),r.d.to=t.max.getDate())),Object.assign(r,this.blocks,a),super._update({...n,mask:i(e)?e:s,blocks:r})}doValidate(t){const e=this.date;return super.doValidate(t)&&(!this.isComplete||this.isDateExist(this.value)&&null!=e&&(null==this.min||this.min<=e)&&(null==this.max||e<=this.max))}isDateExist(t){return this.format(this.parse(t,this),this).indexOf(t)>=0}get date(){return this.typedValue}set date(t){this.typedValue=t}get typedValue(){return this.isComplete?super.typedValue:null}set typedValue(t){super.typedValue=t}maskEquals(t){return t===Date||super.maskEquals(t)}optionsIsChanged(t){return super.optionsIsChanged(M.extractPatternOptions(t))}}M.GET_DEFAULT_BLOCKS=()=>({d:{mask:V,from:1,to:31,maxLength:2},m:{mask:V,from:1,to:12,maxLength:2},Y:{mask:V,from:1900,to:9999}}),M.DEFAULTS={...D.DEFAULTS,mask:Date,pattern:"d{.}`m{.}`Y",format:(t,e)=>t?[String(t.getDate()).padStart(2,"0"),String(t.getMonth()+1).padStart(2,"0"),t.getFullYear()].join("."):"",parse:(t,e)=>{const[s,i,a]=t.split(".").map(Number);return new Date(a,i-1,s)}},m.MaskedDate=M;class I extends F{constructor(t){super({...I.DEFAULTS,...t}),this.currentMask=void 0}updateOptions(t){super.updateOptions(t)}_update(t){super._update(t),"mask"in t&&(this.exposeMask=void 0,this.compiledMasks=Array.isArray(t.mask)?t.mask.map((t=>{const{expose:e,...s}=k(t),i=f({overwrite:this._overwrite,eager:this._eager,skipInvalid:this._skipInvalid,...s});return e&&(this.exposeMask=i),i})):[])}_appendCharRaw(t,e){void 0===e&&(e={});const s=this._applyDispatch(t,e);return this.currentMask&&s.aggregate(this.currentMask._appendChar(t,this.currentMaskFlags(e))),s}_applyDispatch(t,e,s){void 0===t&&(t=""),void 0===e&&(e={}),void 0===s&&(s="");const i=e.tail&&null!=e._beforeTailState?e._beforeTailState._value:this.value,a=this.rawInputValue,n=e.tail&&null!=e._beforeTailState?e._beforeTailState._rawInputValue:a,r=a.slice(n.length),u=this.currentMask,o=new b,l=null==u?void 0:u.state;return this.currentMask=this.doDispatch(t,{...e},s),this.currentMask&&(this.currentMask!==u?(this.currentMask.reset(),n&&(this.currentMask.append(n,{raw:!0}),o.tailShift=this.currentMask.value.length-i.length),r&&(o.tailShift+=this.currentMask.append(r,{raw:!0,tail:!0}).tailShift)):l&&(this.currentMask.state=l)),o}_appendPlaceholder(){const t=this._applyDispatch();return this.currentMask&&t.aggregate(this.currentMask._appendPlaceholder()),t}_appendEager(){const t=this._applyDispatch();return this.currentMask&&t.aggregate(this.currentMask._appendEager()),t}appendTail(t){const e=new b;return t&&e.aggregate(this._applyDispatch("",{},t)),e.aggregate(this.currentMask?this.currentMask.appendTail(t):super.appendTail(t))}currentMaskFlags(t){var e,s;return{...t,_beforeTailState:(null==(e=t._beforeTailState)?void 0:e.currentMaskRef)===this.currentMask&&(null==(s=t._beforeTailState)?void 0:s.currentMask)||t._beforeTailState}}doDispatch(t,e,s){return void 0===e&&(e={}),void 0===s&&(s=""),this.dispatch(t,this,e,s)}doValidate(t){return super.doValidate(t)&&(!this.currentMask||this.currentMask.doValidate(this.currentMaskFlags(t)))}doPrepare(t,e){void 0===e&&(e={});let[s,i]=super.doPrepare(t,e);if(this.currentMask){let t;[s,t]=super.doPrepare(s,this.currentMaskFlags(e)),i=i.aggregate(t)}return[s,i]}doPrepareChar(t,e){void 0===e&&(e={});let[s,i]=super.doPrepareChar(t,e);if(this.currentMask){let t;[s,t]=super.doPrepareChar(s,this.currentMaskFlags(e)),i=i.aggregate(t)}return[s,i]}reset(){var t;null==(t=this.currentMask)||t.reset(),this.compiledMasks.forEach((t=>t.reset()))}get value(){return this.exposeMask?this.exposeMask.value:this.currentMask?this.currentMask.value:""}set value(t){this.exposeMask?(this.exposeMask.value=t,this.currentMask=this.exposeMask,this._applyDispatch()):super.value=t}get unmaskedValue(){return this.exposeMask?this.exposeMask.unmaskedValue:this.currentMask?this.currentMask.unmaskedValue:""}set unmaskedValue(t){this.exposeMask?(this.exposeMask.unmaskedValue=t,this.currentMask=this.exposeMask,this._applyDispatch()):super.unmaskedValue=t}get typedValue(){return this.exposeMask?this.exposeMask.typedValue:this.currentMask?this.currentMask.typedValue:""}set typedValue(t){if(this.exposeMask)return this.exposeMask.typedValue=t,this.currentMask=this.exposeMask,void this._applyDispatch();let e=String(t);this.currentMask&&(this.currentMask.typedValue=t,e=this.currentMask.unmaskedValue),this.unmaskedValue=e}get displayValue(){return this.currentMask?this.currentMask.displayValue:""}get isComplete(){var t;return Boolean(null==(t=this.currentMask)?void 0:t.isComplete)}get isFilled(){var t;return Boolean(null==(t=this.currentMask)?void 0:t.isFilled)}remove(t,e){const s=new b;return this.currentMask&&s.aggregate(this.currentMask.remove(t,e)).aggregate(this._applyDispatch()),s}get state(){var t;return{...super.state,_rawInputValue:this.rawInputValue,compiledMasks:this.compiledMasks.map((t=>t.state)),currentMaskRef:this.currentMask,currentMask:null==(t=this.currentMask)?void 0:t.state}}set state(t){const{compiledMasks:e,currentMaskRef:s,currentMask:i,...a}=t;e&&this.compiledMasks.forEach(((t,s)=>t.state=e[s])),null!=s&&(this.currentMask=s,this.currentMask.state=i),super.state=a}extractInput(t,e,s){return this.currentMask?this.currentMask.extractInput(t,e,s):""}extractTail(t,e){return this.currentMask?this.currentMask.extractTail(t,e):super.extractTail(t,e)}doCommit(){this.currentMask&&this.currentMask.doCommit(),super.doCommit()}nearestInputPos(t,e){return this.currentMask?this.currentMask.nearestInputPos(t,e):super.nearestInputPos(t,e)}get overwrite(){return this.currentMask?this.currentMask.overwrite:this._overwrite}set overwrite(t){this._overwrite=t}get eager(){return this.currentMask?this.currentMask.eager:this._eager}set eager(t){this._eager=t}get skipInvalid(){return this.currentMask?this.currentMask.skipInvalid:this._skipInvalid}set skipInvalid(t){this._skipInvalid=t}get autofix(){return this.currentMask?this.currentMask.autofix:this._autofix}set autofix(t){this._autofix=t}maskEquals(t){return Array.isArray(t)?this.compiledMasks.every(((e,s)=>{if(!t[s])return;const{mask:i,...a}=t[s];return d(e,a)&&e.maskEquals(i)})):super.maskEquals(t)}typedValueEquals(t){var e;return Boolean(null==(e=this.currentMask)?void 0:e.typedValueEquals(t))}}I.DEFAULTS={...F.DEFAULTS,dispatch:(t,e,s,i)=>{if(!e.compiledMasks.length)return;const a=e.rawInputValue,n=e.compiledMasks.map(((n,r)=>{const u=e.currentMask===n,l=u?n.displayValue.length:n.nearestInputPos(n.displayValue.length,o);return n.rawInputValue!==a?(n.reset(),n.append(a,{raw:!0})):u||n.remove(l),n.append(t,e.currentMaskFlags(s)),n.appendTail(i),{index:r,weight:n.rawInputValue.length,totalInputPositions:n.totalInputPositions(0,Math.max(l,n.nearestInputPos(n.displayValue.length,o)))}}));return n.sort(((t,e)=>e.weight-t.weight||e.totalInputPositions-t.totalInputPositions)),e.compiledMasks[n[0].index]}},m.MaskedDynamic=I;class T extends D{constructor(t){super({...T.DEFAULTS,...t})}updateOptions(t){super.updateOptions(t)}_update(t){const{enum:e,...s}=t;if(e){const t=e.map((t=>t.length)),i=Math.min(...t),a=Math.max(...t)-i;s.mask="*".repeat(i),a&&(s.mask+="["+"*".repeat(a)+"]"),this.enum=e}super._update(s)}_appendCharRaw(t,e){void 0===e&&(e={});const s=Math.min(this.nearestInputPos(0,h),this.value.length),i=this.enum.filter((e=>this.matchValue(e,this.unmaskedValue+t,s)));if(i.length){1===i.length&&this._forEachBlocksInRange(0,this.value.length,((t,s)=>{const a=i[0][s];s>=this.value.length||a===t.value||(t.reset(),t._appendChar(a,e))}));const t=super._appendCharRaw(i[0][this.value.length],e);return 1===i.length&&i[0].slice(this.unmaskedValue.length).split("").forEach((e=>t.aggregate(super._appendCharRaw(e)))),t}return new b({skip:!this.isComplete})}extractTail(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),new x("",t)}remove(t,e){if(void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),t===e)return new b;const s=Math.min(super.nearestInputPos(0,h),this.value.length);let i;for(i=t;i>=0&&!(this.enum.filter((t=>this.matchValue(t,this.value.slice(s,i),s))).length>1);--i);const a=super.remove(i,e);return a.tailShift+=i-t,a}get isComplete(){return this.enum.indexOf(this.value)>=0}}var P;T.DEFAULTS={...D.DEFAULTS,matchValue:(t,e,s)=>t.indexOf(e,s)===s},m.MaskedEnum=T,m.MaskedFunction=class extends F{updateOptions(t){super.updateOptions(t)}_update(t){super._update({...t,validate:t.mask})}};class R extends F{constructor(t){super({...R.DEFAULTS,...t})}updateOptions(t){super.updateOptions(t)}_update(t){super._update(t),this._updateRegExps()}_updateRegExps(){const t="^"+(this.allowNegative?"[+|\\-]?":""),e=(this.scale?"("+p(this.radix)+"\\d{0,"+this.scale+"})?":"")+"$";this._numberRegExp=new RegExp(t+"\\d*"+e),this._mapToRadixRegExp=new RegExp("["+this.mapToRadix.map(p).join("")+"]","g"),this._thousandsSeparatorRegExp=new RegExp(p(this.thousandsSeparator),"g")}_removeThousandsSeparators(t){return t.replace(this._thousandsSeparatorRegExp,"")}_insertThousandsSeparators(t){const e=t.split(this.radix);return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,this.thousandsSeparator),e.join(this.radix)}doPrepareChar(t,e){void 0===e&&(e={});const[s,i]=super.doPrepareChar(this._removeThousandsSeparators(this.scale&&this.mapToRadix.length&&(e.input&&e.raw||!e.input&&!e.raw)?t.replace(this._mapToRadixRegExp,this.radix):t),e);return t&&!s&&(i.skip=!0),!s||this.allowPositive||this.value||"-"===s||i.aggregate(this._appendChar("-")),[s,i]}_separatorsCount(t,e){void 0===e&&(e=!1);let s=0;for(let i=0;i<t;++i)this._value.indexOf(this.thousandsSeparator,i)===i&&(++s,e&&(t+=this.thousandsSeparator.length));return s}_separatorsCountFromSlice(t){return void 0===t&&(t=this._value),this._separatorsCount(this._removeThousandsSeparators(t).length,!0)}extractInput(t,e,s){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),[t,e]=this._adjustRangeWithSeparators(t,e),this._removeThousandsSeparators(super.extractInput(t,e,s))}_appendCharRaw(t,e){void 0===e&&(e={});const s=e.tail&&e._beforeTailState?e._beforeTailState._value:this._value,i=this._separatorsCountFromSlice(s);this._value=this._removeThousandsSeparators(this.value);const a=this._value;this._value+=t;const n=this.number;let r,u=!isNaN(n),o=!1;if(u){let t;null!=this.min&&this.min<0&&this.number<this.min&&(t=this.min),null!=this.max&&this.max>0&&this.number>this.max&&(t=this.max),null!=t&&(this.autofix?(this._value=this.format(t,this).replace(R.UNMASKED_RADIX,this.radix),o||(o=a===this._value&&!e.tail)):u=!1),u&&(u=Boolean(this._value.match(this._numberRegExp)))}u?r=new b({inserted:this._value.slice(a.length),rawInserted:o?"":t,skip:o}):(this._value=a,r=new b),this._value=this._insertThousandsSeparators(this._value);const l=e.tail&&e._beforeTailState?e._beforeTailState._value:this._value,h=this._separatorsCountFromSlice(l);return r.tailShift+=(h-i)*this.thousandsSeparator.length,r}_findSeparatorAround(t){if(this.thousandsSeparator){const e=t-this.thousandsSeparator.length+1,s=this.value.indexOf(this.thousandsSeparator,e);if(s<=t)return s}return-1}_adjustRangeWithSeparators(t,e){const s=this._findSeparatorAround(t);s>=0&&(t=s);const i=this._findSeparatorAround(e);return i>=0&&(e=i+this.thousandsSeparator.length),[t,e]}remove(t,e){void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),[t,e]=this._adjustRangeWithSeparators(t,e);const s=this.value.slice(0,t),i=this.value.slice(e),a=this._separatorsCount(s.length);this._value=this._insertThousandsSeparators(this._removeThousandsSeparators(s+i));const n=this._separatorsCountFromSlice(s);return new b({tailShift:(n-a)*this.thousandsSeparator.length})}nearestInputPos(t,e){if(!this.thousandsSeparator)return t;switch(e){case r:case u:case o:{const s=this._findSeparatorAround(t-1);if(s>=0){const i=s+this.thousandsSeparator.length;if(t<i||this.value.length<=i||e===o)return s}break}case l:case h:{const e=this._findSeparatorAround(t);if(e>=0)return e+this.thousandsSeparator.length}}return t}doCommit(){if(this.value){const t=this.number;let e=t;null!=this.min&&(e=Math.max(e,this.min)),null!=this.max&&(e=Math.min(e,this.max)),e!==t&&(this.unmaskedValue=this.format(e,this));let s=this.value;this.normalizeZeros&&(s=this._normalizeZeros(s)),this.padFractionalZeros&&this.scale>0&&(s=this._padFractionalZeros(s)),this._value=s}super.doCommit()}_normalizeZeros(t){const e=this._removeThousandsSeparators(t).split(this.radix);return e[0]=e[0].replace(/^(\D*)(0*)(\d*)/,((t,e,s,i)=>e+i)),t.length&&!/\d$/.test(e[0])&&(e[0]=e[0]+"0"),e.length>1&&(e[1]=e[1].replace(/0*$/,""),e[1].length||(e.length=1)),this._insertThousandsSeparators(e.join(this.radix))}_padFractionalZeros(t){if(!t)return t;const e=t.split(this.radix);return e.length<2&&e.push(""),e[1]=e[1].padEnd(this.scale,"0"),e.join(this.radix)}doSkipInvalid(t,e,s){void 0===e&&(e={});const i=0===this.scale&&t!==this.thousandsSeparator&&(t===this.radix||t===R.UNMASKED_RADIX||this.mapToRadix.includes(t));return super.doSkipInvalid(t,e,s)&&!i}get unmaskedValue(){return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix,R.UNMASKED_RADIX)}set unmaskedValue(t){super.unmaskedValue=t}get typedValue(){return this.parse(this.unmaskedValue,this)}set typedValue(t){this.rawInputValue=this.format(t,this).replace(R.UNMASKED_RADIX,this.radix)}get number(){return this.typedValue}set number(t){this.typedValue=t}get allowNegative(){return null!=this.min&&this.min<0||null!=this.max&&this.max<0}get allowPositive(){return null!=this.min&&this.min>0||null!=this.max&&this.max>0}typedValueEquals(t){return(super.typedValueEquals(t)||R.EMPTY_VALUES.includes(t)&&R.EMPTY_VALUES.includes(this.typedValue))&&!(0===t&&""===this.value)}}P=R,R.UNMASKED_RADIX=".",R.EMPTY_VALUES=[...F.EMPTY_VALUES,0],R.DEFAULTS={...F.DEFAULTS,mask:Number,radix:",",thousandsSeparator:"",mapToRadix:[P.UNMASKED_RADIX],min:Number.MIN_SAFE_INTEGER,max:Number.MAX_SAFE_INTEGER,scale:2,normalizeZeros:!0,padFractionalZeros:!1,parse:Number,format:t=>t.toLocaleString("en-US",{useGrouping:!1,maximumFractionDigits:20})},m.MaskedNumber=R;const O={MASKED:"value",UNMASKED:"unmaskedValue",TYPED:"typedValue"};function L(t,e,s){void 0===e&&(e=O.MASKED),void 0===s&&(s=O.MASKED);const i=f(t);return t=>i.runIsolated((i=>(i[e]=t,i[s])))}m.PIPE_TYPE=O,m.createPipe=L,m.pipe=function(t,e,s,i){return L(e,s,i)(t)},m.RepeatBlock=class extends D{get repeatFrom(){var t;return null!=(t=Array.isArray(this.repeat)?this.repeat[0]:this.repeat===1/0?0:this.repeat)?t:0}get repeatTo(){var t;return null!=(t=Array.isArray(this.repeat)?this.repeat[1]:this.repeat)?t:1/0}constructor(t){super(t)}updateOptions(t){super.updateOptions(t)}_update(t){var e,s,i;const{repeat:a,...n}=k(t);this._blockOpts=Object.assign({},this._blockOpts,n);const r=f(this._blockOpts);this.repeat=null!=(e=null!=(s=null!=a?a:r.repeat)?s:this.repeat)?e:1/0,super._update({mask:"m".repeat(Math.max(this.repeatTo===1/0&&(null==(i=this._blocks)?void 0:i.length)||0,this.repeatFrom)),blocks:{m:r},eager:r.eager,overwrite:r.overwrite,skipInvalid:r.skipInvalid,lazy:r.lazy,placeholderChar:r.placeholderChar,displayChar:r.displayChar})}_allocateBlock(t){return t<this._blocks.length?this._blocks[t]:this.repeatTo===1/0||this._blocks.length<this.repeatTo?(this._blocks.push(f(this._blockOpts)),this.mask+="m",this._blocks[this._blocks.length-1]):void 0}_appendCharRaw(t,e){void 0===e&&(e={});const s=new b;for(let u,o,l=null!=(i=null==(a=this._mapPosToBlock(this.displayValue.length))?void 0:a.index)?i:Math.max(this._blocks.length-1,0);u=null!=(n=this._blocks[l])?n:o=!o&&this._allocateBlock(l);++l){var i,a,n,r;const h=u._appendChar(t,{...e,_beforeTailState:null==(r=e._beforeTailState)||null==(r=r._blocks)?void 0:r[l]});if(h.skip&&o){this._blocks.pop(),this.mask=this.mask.slice(1);break}if(s.aggregate(h),h.consumed)break}return s}_trimEmptyTail(t,e){var s,i;void 0===t&&(t=0);const a=Math.max((null==(s=this._mapPosToBlock(t))?void 0:s.index)||0,this.repeatFrom,0);let n;null!=e&&(n=null==(i=this._mapPosToBlock(e))?void 0:i.index),null==n&&(n=this._blocks.length-1);let r=0;for(let t=n;a<=t&&!this._blocks[t].unmaskedValue;--t,++r);r&&(this._blocks.splice(n-r+1,r),this.mask=this.mask.slice(r))}reset(){super.reset(),this._trimEmptyTail()}remove(t,e){void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length);const s=super.remove(t,e);return this._trimEmptyTail(t,e),s}totalInputPositions(t,e){return void 0===t&&(t=0),null==e&&this.repeatTo===1/0?1/0:super.totalInputPositions(t,e)}get state(){return super.state}set state(t){this._blocks.length=t._blocks.length,this.mask=this.mask.slice(0,this._blocks.length),super.state=t}};try{globalThis.IMask=m}catch{}var N=s(697);const U={mask:N.oneOfType([N.array,N.func,N.string,N.instanceOf(RegExp),N.oneOf([Date,Number,m.Masked]),N.instanceOf(m.Masked)]),value:N.any,unmask:N.oneOfType([N.bool,N.oneOf(["typed"])]),prepare:N.func,prepareChar:N.func,validate:N.func,commit:N.func,overwrite:N.oneOfType([N.bool,N.oneOf(["shift"])]),eager:N.oneOfType([N.bool,N.oneOf(["append","remove"])]),skipInvalid:N.bool,onAccept:N.func,onComplete:N.func,placeholderChar:N.string,displayChar:N.string,lazy:N.bool,definitions:N.object,blocks:N.object,enum:N.arrayOf(N.string),maxLength:N.number,from:N.number,to:N.number,pattern:N.string,format:N.func,parse:N.func,autofix:N.oneOfType([N.bool,N.oneOf(["pad"])]),radix:N.string,thousandsSeparator:N.string,mapToRadix:N.arrayOf(N.string),scale:N.number,normalizeZeros:N.bool,padFractionalZeros:N.bool,min:N.oneOfType([N.number,N.instanceOf(Date)]),max:N.oneOfType([N.number,N.instanceOf(Date)]),dispatch:N.func,inputRef:N.oneOfType([N.func,N.shape({current:N.object})])},j=Object.keys(U).filter((t=>"value"!==t)),q=["value","unmask","onAccept","onComplete","inputRef"],z=j.filter((t=>q.indexOf(t)<0)),K=function(t){var s;const i=((s=class extends e.Component{constructor(t){super(t),this._inputRef=this._inputRef.bind(this)}componentDidMount(){this.props.mask&&this.initMask()}componentDidUpdate(){const t=this.props,e=this._extractMaskOptionsFromProps(t);var s;e.mask?this.maskRef?(this.maskRef.updateOptions(e),"value"in t&&void 0!==t.value&&(this.maskValue=t.value)):this.initMask(e):(this.destroyMask(),"value"in t&&void 0!==t.value&&(null!=(s=this.element)&&s.isContentEditable&&"INPUT"!==this.element.tagName&&"TEXTAREA"!==this.element.tagName?this.element.textContent=t.value:this.element.value=t.value))}componentWillUnmount(){this.destroyMask()}_inputRef(t){this.element=t,this.props.inputRef&&(Object.prototype.hasOwnProperty.call(this.props.inputRef,"current")?this.props.inputRef.current=t:this.props.inputRef(t))}initMask(t){void 0===t&&(t=this._extractMaskOptionsFromProps(this.props)),this.maskRef=m(this.element,t).on("accept",this._onAccept.bind(this)).on("complete",this._onComplete.bind(this)),"value"in this.props&&void 0!==this.props.value&&(this.maskValue=this.props.value)}destroyMask(){this.maskRef&&(this.maskRef.destroy(),delete this.maskRef)}_extractMaskOptionsFromProps(t){const{...e}=t;return Object.keys(e).filter((t=>z.indexOf(t)<0)).forEach((t=>{delete e[t]})),e}_extractNonMaskProps(t){const{...e}=t;return j.forEach((t=>{"maxLength"!==t&&delete e[t]})),"defaultValue"in e||(e.defaultValue=t.mask?"":e.value),delete e.value,e}get maskValue(){return this.maskRef?"typed"===this.props.unmask?this.maskRef.typedValue:this.props.unmask?this.maskRef.unmaskedValue:this.maskRef.value:""}set maskValue(t){this.maskRef&&(t=null==t&&"typed"!==this.props.unmask?"":t,"typed"===this.props.unmask?this.maskRef.typedValue=t:this.props.unmask?this.maskRef.unmaskedValue=t:this.maskRef.value=t)}_onAccept(t){this.props.onAccept&&this.maskRef&&this.props.onAccept(this.maskValue,this.maskRef,t)}_onComplete(t){this.props.onComplete&&this.maskRef&&this.props.onComplete(this.maskValue,this.maskRef,t)}render(){return e.createElement(t,{...this._extractNonMaskProps(this.props),inputRef:this._inputRef})}}).displayName=void 0,s.propTypes=void 0,s),a=t.displayName||t.name||"Component";return i.displayName="IMask("+a+")",i.propTypes=U,e.forwardRef(((t,s)=>e.createElement(i,{...t,ref:s})))}((t=>{let{inputRef:s,...i}=t;return e.createElement("input",{...i,ref:s})})),Y=e.forwardRef(((t,s)=>e.createElement(K,{...t,ref:s}))),H=window.wp.blockEditor,W=window.wp.i18n,X=JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":2,"name":"vindi-pagamentos/person-type","icon":"flag","version":"1.0.5","title":"Woo - Tipo de Pessoa","description":"Definição de tipo de pessoa no checkout","category":"woocommerce","parent":["woocommerce/checkout-billing-address-block"],"attributes":{"lock":{"type":"object","default":{"remove":true,"move":true}},"personType":{"type":"integer","default":1},"cpf":{"type":"string","default":""},"cnpj":{"type":"string","default":""}},"textdomain":"vindi-pagamentos","editorScript":"file:./dist/blocks/person-type/index.js"}'),Z=window.wp.element,{registerCheckoutBlock:G}=wc.blocksCheckout;G({metadata:X,component:({checkoutExtensionData:t})=>{const[s,i]=(0,Z.useState)(1),[a,n]=(0,Z.useState)(""),[r,u]=(0,Z.useState)(""),{setExtensionData:o}=t,l=(0,Z.useCallback)((t=>{i(t),o("vindi-pagamentos","_billing_persontype",t)}),[i,o]),h=(0,Z.useCallback)((t=>{n(t),o("vindi-pagamentos","_billing_persontype",s),o("vindi-pagamentos","_billing_cpf",t)}),[n,o,s]),p=(0,Z.useCallback)((t=>{u(t),o("vindi-pagamentos","_billing_persontype",s),o("vindi-pagamentos","_billing_cnpj",t)}),[u,o,s]);return(0,e.useEffect)((()=>{const t=new Event("add_checkout_block_fields");document.dispatchEvent(t)}),[]),(0,e.createElement)("div",{style:{display:"flex",flexDirection:"column",gap:"20px"}},(0,e.createElement)("div",{className:"wc-block-components-address-form"},(0,e.createElement)("div",{className:"wc-block-components-text-input is-active"},(0,e.createElement)("select",{id:"vindi-pagamentos__billing_persontype","aria-label":(0,W.__)("Tipo de Pessoa","vindi-pagamentos"),required:"",style:{width:"100%",maxWidth:"100%",height:"55px",borderColor:"#000",padding:"15px 5px 0",borderRadius:"5px"},value:s,onChange:t=>l(t.target.value)},(0,e.createElement)("option",{value:1},(0,W.__)("Pessoa Física","vindi-pagamentos")),(0,e.createElement)("option",{value:2},(0,W.__)("Pessoa Jurídica","vindi-pagamentos"))),(0,e.createElement)("label",null,(0,W.__)("Tipo de Pessoa","vindi-pagamentos")))),1==s&&(0,e.createElement)("div",{className:"wc-block-components-address-form"},(0,e.createElement)("div",{className:"wc-block-components-text-input is-active"},(0,e.createElement)("div",null,(0,e.createElement)(Y,{mask:"000.000.000-00",placeholder:"000.000.000-00",type:"text",id:"_billing_cpf",value:a,required:!!a,onChange:t=>h(t.target.value)})),(0,e.createElement)("label",null,(0,W.__)("CPF","vindi-pagamentos")))),2==s&&(0,e.createElement)("div",{className:"wc-block-components-address-form"},(0,e.createElement)("div",{className:"wc-block-components-text-input is-active"},(0,e.createElement)("div",null,(0,e.createElement)(Y,{mask:"00.000.000/0000-00",placeholder:"00.000.000/0000-00",type:"text",id:"_billing_cnpj",value:r,required:!!r,onChange:t=>p(t.target.value)})),(0,e.createElement)("label",null,(0,W.__)("CNPJ","vindi-pagamentos")))))}}),(0,t.registerBlockType)(X,{edit:({attributes:t,setAttributes:s})=>{const{cpf:i,cnpj:a,personType:n}=t;return(0,e.createElement)("div",{...(0,H.useBlockProps)(),style:{display:"flex",flexDirection:"column",gap:"20px"}},(0,e.createElement)("div",{class:"wc-block-components-address-form"},(0,e.createElement)("div",{class:"wc-block-components-text-input is-active"},(0,e.createElement)("select",{id:"vindi-pagamentos_billing_persontype","aria-label":(0,W.__)("Tipo de Pessoa","vindi-pagamentos"),required:"",style:{width:"100%",maxWidth:"100%",height:"55px",borderColor:"#000",paddingTop:"15px"},value:n,onChange:t=>s({personType:t.target.value})},(0,e.createElement)("option",{value:1},(0,W.__)("Pessoa Física","vindi-pagamentos")),(0,e.createElement)("option",{value:2},(0,W.__)("Pessoa Jurídica","vindi-pagamentos"))),(0,e.createElement)("label",null,(0,W.__)("Tipo de Pessoa","vindi-pagamentos")))),1==n&&(0,e.createElement)("div",{className:"wc-block-components-address-form"},(0,e.createElement)("div",{className:"wc-block-components-text-input is-active"},(0,e.createElement)("div",null,(0,e.createElement)(Y,{mask:"000.000.000-00",placeholder:"000.000.000-00",type:"text",id:"billing_cpf",value:i,required:!!i,onChange:t=>s({cnpj:t.target.value})})),(0,e.createElement)("label",null,(0,W.__)("CPF","vindi-pagamentos")))),2==n&&(0,e.createElement)("div",{className:"wc-block-components-address-form"},(0,e.createElement)("div",{className:"wc-block-components-text-input is-active"},(0,e.createElement)("div",null,(0,e.createElement)(Y,{mask:"00.000.000/0000-00",placeholder:"00.000.000/0000-00",type:"text",id:"billing_cnpj",value:a,required:!!a,onChange:t=>s({cnpj:t.target.value})})),(0,e.createElement)("label",null,(0,W.__)("CNPJ","vindi-pagamentos")))))}})})()})(); -
vindi-pagamentos/trunk/dist/scripts/admin/index.js
r3344656 r3356741 1 (()=>{function t(t ){return t&&t.__esModule?t.default:t}function e(t,e,s,i){Object.defineProperty(t,e,{get:s,set:i,enumerable:!0,configurable:!0})}var s,i,n={};e(n,"sprintf",(()=>s),(t=>s=t)),e(n,"vsprintf",(()=>i),(t=>i=t)),function(){"use strict";var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function e(s){return function(s,i){var n,a,r,u,o,l,h,d,c,p=1,m=s.length,g="";for(a=0;a<m;a++)if("string"==typeof s[a])g+=s[a];else if("object"==typeof s[a]){if((u=s[a]).keys)for(n=i[p],r=0;r<u.keys.length;r++){if(null==n)throw new Error(e('[sprintf] Cannot access property "%s" of undefined value "%s"',u.keys[r],u.keys[r-1]));n=n[u.keys[r]]}else n=u.param_no?i[u.param_no]:i[p++];if(t.not_type.test(u.type)&&t.not_primitive.test(u.type)&&n instanceof Function&&(n=n()),t.numeric_arg.test(u.type)&&"number"!=typeof n&&isNaN(n))throw new TypeError(e("[sprintf] expecting number but found %T",n));switch(t.number.test(u.type)&&(d=n>=0),u.type){case"b":n=parseInt(n,10).toString(2);break;case"c":n=String.fromCharCode(parseInt(n,10));break;case"d":case"i":n=parseInt(n,10);break;case"j":n=JSON.stringify(n,null,u.width?parseInt(u.width):0);break;case"e":n=u.precision?parseFloat(n).toExponential(u.precision):parseFloat(n).toExponential();break;case"f":n=u.precision?parseFloat(n).toFixed(u.precision):parseFloat(n);break;case"g":n=u.precision?String(Number(n.toPrecision(u.precision))):parseFloat(n);break;case"o":n=(parseInt(n,10)>>>0).toString(8);break;case"s":n=String(n),n=u.precision?n.substring(0,u.precision):n;break;case"t":n=String(!!n),n=u.precision?n.substring(0,u.precision):n;break;case"T":n=Object.prototype.toString.call(n).slice(8,-1).toLowerCase(),n=u.precision?n.substring(0,u.precision):n;break;case"u":n=parseInt(n,10)>>>0;break;case"v":n=n.valueOf(),n=u.precision?n.substring(0,u.precision):n;break;case"x":n=(parseInt(n,10)>>>0).toString(16);break;case"X":n=(parseInt(n,10)>>>0).toString(16).toUpperCase()}t.json.test(u.type)?g+=n:(!t.number.test(u.type)||d&&!u.sign?c="":(c=d?"+":"-",n=n.toString().replace(t.sign,"")),l=u.pad_char?"0"===u.pad_char?"0":u.pad_char.charAt(1):" ",h=u.width-(c+n).length,o=u.width&&h>0?l.repeat(h):"",g+=u.align?c+n+o:"0"===l?c+o+n:o+c+n)}return g}(function(e){if(a[e])return a[e];var s,i=e,n=[],r=0;for(;i;){if(null!==(s=t.text.exec(i)))n.push(s[0]);else if(null!==(s=t.modulo.exec(i)))n.push("%");else{if(null===(s=t.placeholder.exec(i)))throw new SyntaxError("[sprintf] unexpected placeholder");if(s[2]){r|=1;var u=[],o=s[2],l=[];if(null===(l=t.key.exec(o)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(u.push(l[1]);""!==(o=o.substring(l[0].length));)if(null!==(l=t.key_access.exec(o)))u.push(l[1]);else{if(null===(l=t.index_access.exec(o)))throw new SyntaxError("[sprintf] failed to parse named argument key");u.push(l[1])}s[2]=u}else r|=2;if(3===r)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");n.push({placeholder:s[0],param_no:s[1],keys:s[2],sign:s[3],pad_char:s[4],align:s[5],width:s[6],precision:s[7],type:s[8]})}i=i.substring(s[0].length)}return a[e]=n}(s),arguments)}function n(t,s){return e.apply(null,[t].concat(s||[]))}var a=Object.create(null);s=e,i=n,"undefined"!=typeof window&&(window.sprintf=e,window.vsprintf=n,"function"==typeof define&&define.amd&&define((function(){return{sprintf:e,vsprintf:n}})))}();!function(t,e){var s,i,n=0;function a(){var a,r,u=s,o=arguments.length;t:for(;u;){if(u.args.length===arguments.length){for(r=0;r<o;r++)if(u.args[r]!==arguments[r]){u=u.next;continue t}return u!==s&&(u===i&&(i=u.prev),u.prev.next=u.next,u.next&&(u.next.prev=u.prev),u.next=s,u.prev=null,s.prev=u,s=u),u.val}u=u.next}for(a=new Array(o),r=0;r<o;r++)a[r]=arguments[r];return u={args:a,val:t.apply(null,a)},s?(s.prev=u,u.next=s):i=u,n===e.maxSize?(i=i.prev).next=null:n++,s=u,u.val}e=e||{},a.clear=function(){s=null,i=null,n=0}}(console.error);var a,r,u,o;function l(t){for(var e,s,i,n,l=[],h=[];e=t.match(o);){for(s=e[0],(i=t.substr(0,e.index).trim())&&l.push(i);n=h.pop();){if(u[s]){if(u[s][0]===n){s=u[s][1]||s;break}}else if(r.indexOf(n)>=0||a[n]<a[s]){h.push(n);break}l.push(n)}u[s]||h.push(s),t=t.substr(e.index+s.length)}return(t=t.trim())&&l.push(t),l.concat(h.reverse())}a={"(":9,"!":8,"*":7,"/":7,"%":7,"+":6,"-":6,"<":5,"<=":5,">":5,">=":5,"==":4,"!=":4,"&&":3,"||":2,"?":1,"?:":1},r=["(","?"],u={")":["("],":":["?","?:"]},o=/<=|>=|==|!=|&&|\|\||\?:|\(|!|\*|\/|%|\+|-|<|>|\?|\)|:/;var h={"!":function(t){return!t},"*":function(t,e){return t*e},"/":function(t,e){return t/e},"%":function(t,e){return t%e},"+":function(t,e){return t+e},"-":function(t,e){return t-e},"<":function(t,e){return t<e},"<=":function(t,e){return t<=e},">":function(t,e){return t>e},">=":function(t,e){return t>=e},"==":function(t,e){return t===e},"!=":function(t,e){return t!==e},"&&":function(t,e){return t&&e},"||":function(t,e){return t||e},"?:":function(t,e,s){if(t)throw e;return s}};function d(t,e){var s,i,n,a,r,u,o=[];for(s=0;s<t.length;s++){if(r=t[s],a=h[r]){for(i=a.length,n=Array(i);i--;)n[i]=o.pop();try{u=a.apply(null,n)}catch(t){return t}}else u=e.hasOwnProperty(r)?e[r]:+r;o.push(u)}return o[0]}function c(t){var e=l(t);return function(t){return d(e,t)}}var p={contextDelimiter:"",onMissingKey:null};function m(t,e){var s;for(s in this.data=t,this.pluralForms={},this.options={},p)this.options[s]=void 0!==e&&s in e?e[s]:p[s]}m.prototype.getPluralForm=function(t,e){var s,i,n,a,r=this.pluralForms[t];return r||("function"!=typeof(n=(s=this.data[t][""])["Plural-Forms"]||s["plural-forms"]||s.plural_forms)&&(i=function(t){var e,s,i;for(e=t.split(";"),s=0;s<e.length;s++)if(0===(i=e[s].trim()).indexOf("plural="))return i.substr(7)}(s["Plural-Forms"]||s["plural-forms"]||s.plural_forms),a=c(i),n=function(t){return+a({n:t})}),r=this.pluralForms[t]=n),r(e)},m.prototype.dcnpgettext=function(t,e,s,i,n){var a,r,u;return a=void 0===n?0:this.getPluralForm(t,n),r=s,e&&(r=e+this.options.contextDelimiter+s),(u=this.data[t][r])&&u[a]?u[a]:(this.options.onMissingKey&&this.options.onMissingKey(s,t),0===a?s:i)};const g={plural_forms:t=>1===t?0:1},f=/^i18n\.(n?gettext|has_translation)(_|$)/;var k=function(t){return"string"!=typeof t||""===t?(console.error("The namespace must be a non-empty string."),!1):!!/^[a-zA-Z][a-zA-Z0-9_.\-\/]*$/.test(t)||(console.error("The namespace can only contain numbers, letters, dashes, periods, underscores and slashes."),!1)};var v=function(t){return"string"!=typeof t||""===t?(console.error("The hook name must be a non-empty string."),!1):/^__/.test(t)?(console.error("The hook name cannot begin with `__`."),!1):!!/^[a-zA-Z][a-zA-Z0-9_.-]*$/.test(t)||(console.error("The hook name can only contain numbers, letters, dashes, periods and underscores."),!1)};var _=function(t,e){return function(s,i,n,a=10){const r=t[e];if(!v(s))return;if(!k(i))return;if("function"!=typeof n)return void console.error("The hook callback must be a function.");if("number"!=typeof a)return void console.error("If specified, the hook priority must be a number.");const u={callback:n,priority:a,namespace:i};if(r[s]){const t=r[s].handlers;let e;for(e=t.length;e>0&&!(a>=t[e-1].priority);e--);e===t.length?t[e]=u:t.splice(e,0,u),r.__current.forEach((t=>{t.name===s&&t.currentIndex>=e&&t.currentIndex++}))}else r[s]={handlers:[u],runs:0};"hookAdded"!==s&&t.doAction("hookAdded",s,i,n,a)}};var F=function(t,e,s=!1){return function(i,n){const a=t[e];if(!v(i))return;if(!s&&!k(n))return;if(!a[i])return 0;let r=0;if(s)r=a[i].handlers.length,a[i]={runs:a[i].runs,handlers:[]};else{const t=a[i].handlers;for(let e=t.length-1;e>=0;e--)t[e].namespace===n&&(t.splice(e,1),r++,a.__current.forEach((t=>{t.name===i&&t.currentIndex>=e&&t.currentIndex--})))}return"hookRemoved"!==i&&t.doAction("hookRemoved",i,n),r}};var y=function(t,e){return function(s,i){const n=t[e];return void 0!==i?s in n&&n[s].handlers.some((t=>t.namespace===i)):s in n}};var E=function(t,e,s=!1){return function(i,...n){const a=t[e];a[i]||(a[i]={handlers:[],runs:0}),a[i].runs++;const r=a[i].handlers;if(!r||!r.length)return s?n[0]:void 0;const u={name:i,currentIndex:0};for(a.__current.push(u);u.currentIndex<r.length;){const t=r[u.currentIndex].callback.apply(null,n);s&&(n[0]=t),u.currentIndex++}return a.__current.pop(),s?n[0]:void 0}};var A=function(t,e){return function(){var s;const i=t[e];return null!==(s=i.__current[i.__current.length-1]?.name)&&void 0!==s?s:null}};var C=function(t,e){return function(s){const i=t[e];return void 0===s?void 0!==i.__current[0]:!!i.__current[0]&&s===i.__current[0].name}};var b=function(t,e){return function(s){const i=t[e];if(v(s))return i[s]&&i[s].runs?i[s].runs:0}};class S{constructor(){this.actions=Object.create(null),this.actions.__current=[],this.filters=Object.create(null),this.filters.__current=[],this.addAction=_(this,"actions"),this.addFilter=_(this,"filters"),this.removeAction=F(this,"actions"),this.removeFilter=F(this,"filters"),this.hasAction=y(this,"actions"),this.hasFilter=y(this,"filters"),this.removeAllActions=F(this,"actions",!0),this.removeAllFilters=F(this,"filters",!0),this.doAction=E(this,"actions"),this.applyFilters=E(this,"filters",!0),this.currentAction=A(this,"actions"),this.currentFilter=A(this,"filters"),this.doingAction=C(this,"actions"),this.doingFilter=C(this,"filters"),this.didAction=b(this,"actions"),this.didFilter=b(this,"filters")}}const x=new S,{addAction:w,addFilter:B,removeAction:D,removeFilter:T,hasAction:M,hasFilter:I,removeAllActions:V,removeAllFilters:P,doAction:L,applyFilters:O,currentAction:R,currentFilter:N,doingAction:q,doingFilter:j,didAction:U,didFilter:z,actions:$,filters:H}=x,G=((t,e,s)=>{const i=new m({}),n=new Set,a=()=>{n.forEach((t=>t()))},r=(t,e="default")=>{i.data[e]={...i.data[e],...t},i.data[e][""]={...g,...i.data[e]?.[""]},delete i.pluralForms[e]},u=(t,e)=>{r(t,e),a()},o=(t="default",e,s,n,a)=>(i.data[t]||r(void 0,t),i.dcnpgettext(t,e,s,n,a)),l=(t="default")=>t,h=(t,e,i)=>{let n=o(i,e,t);return s?(n=s.applyFilters("i18n.gettext_with_context",n,t,e,i),s.applyFilters("i18n.gettext_with_context_"+l(i),n,t,e,i)):n};if(t&&u(t,e),s){const t=t=>{f.test(t)&&a()};s.addAction("hookAdded","core/i18n",t),s.addAction("hookRemoved","core/i18n",t)}return{getLocaleData:(t="default")=>i.data[t],setLocaleData:u,addLocaleData:(t,e="default")=>{i.data[e]={...i.data[e],...t,"":{...g,...i.data[e]?.[""],...t?.[""]}},delete i.pluralForms[e],a()},resetLocaleData:(t,e)=>{i.data={},i.pluralForms={},u(t,e)},subscribe:t=>(n.add(t),()=>n.delete(t)),__:(t,e)=>{let i=o(e,void 0,t);return s?(i=s.applyFilters("i18n.gettext",i,t,e),s.applyFilters("i18n.gettext_"+l(e),i,t,e)):i},_x:h,_n:(t,e,i,n)=>{let a=o(n,void 0,t,e,i);return s?(a=s.applyFilters("i18n.ngettext",a,t,e,i,n),s.applyFilters("i18n.ngettext_"+l(n),a,t,e,i,n)):a},_nx:(t,e,i,n,a)=>{let r=o(a,n,t,e,i);return s?(r=s.applyFilters("i18n.ngettext_with_context",r,t,e,i,n,a),s.applyFilters("i18n.ngettext_with_context_"+l(a),r,t,e,i,n,a)):r},isRTL:()=>"rtl"===h("ltr","text direction"),hasTranslation:(t,e,n)=>{const a=e?e+""+t:t;let r=!!i.data?.[null!=n?n:"default"]?.[a];return s&&(r=s.applyFilters("i18n.has_translation",r,t,e,n),r=s.applyFilters("i18n.has_translation_"+l(n),r,t,e,n)),r}}})(void 0,void 0,x);G.getLocaleData.bind(G),G.setLocaleData.bind(G),G.resetLocaleData.bind(G),G.subscribe.bind(G),G.__.bind(G),G._x.bind(G),G._n.bind(G),G._nx.bind(G),G.isRTL.bind(G),G.hasTranslation.bind(G);class Y{constructor(){this.openCheckoutFieldSection()}openCheckoutFieldSection(){const t=new URLSearchParams(location.href);if(t.has("vindi-payment-link")){document.querySelectorAll(".edit_address").forEach((t=>{t.style.display="block"})),t.has("gateway")&&this.updateLinkGateway(t.get("gateway"))}}updateLinkGateway(t){document.querySelector("#_payment_method").value=t}}class K{constructor(){this.setEvents()}setEvents(){const t=document.querySelector("#wvp-tracking-save");t&&t.addEventListener("click",(t=>{t.preventDefault();const e=document.querySelector("#wvp-tracking-code"),s=document.querySelector("#wvp-tracking-url"),i=document.querySelector("#wvp-tracking-post");e&&i&&this.saveTrackingCode(e.value,s.value,i.value)}))}saveTrackingCode(t,e,s){const i=document.querySelector(".wvp-tracking");i?.classList.remove("wvp-tracking-hidden");const n=new FormData;n.append("action","save_tracking_code"),n.append("code",t),n.append("url",e),n.append("post",s),ajaxurl&&fetch(ajaxurl,{method:"POST",body:n}).then((t=>t.json())).then((t=>{t.status&&(i?.classList.add("wvp-tracking-hidden"),"success"==t.status?window.location.reload():t.message&&this.handleMessage(t.message))}))}handleMessage(t){const e=document.querySelector(".wvp-tracking-edit-message");e?.classList.remove("wvp-tracking-edit-message-hidden");const s=document.querySelector("#wvp-tracking-message");s&&(s.innerHTML=t)}}function Z(t){return"string"==typeof t||t instanceof String}function X(t){var e;return"object"==typeof t&&null!=t&&"Object"===(null==t||null==(e=t.constructor)?void 0:e.name)}function J(t,e){return Array.isArray(e)?J(t,((t,s)=>e.includes(s))):Object.entries(t).reduce(((t,s)=>{let[i,n]=s;return e(n,i)&&(t[i]=n),t}),{})}const W={NONE:"NONE",LEFT:"LEFT",FORCE_LEFT:"FORCE_LEFT",RIGHT:"RIGHT",FORCE_RIGHT:"FORCE_RIGHT"};function Q(t){switch(t){case W.LEFT:return W.FORCE_LEFT;case W.RIGHT:return W.FORCE_RIGHT;default:return t}}function tt(t){return t.replace(/([.*+?^=!:${}()|[\]/\\])/g,"\\$1")}function et(t,e){if(e===t)return!0;const s=Array.isArray(e),i=Array.isArray(t);let n;if(s&&i){if(e.length!=t.length)return!1;for(n=0;n<e.length;n++)if(!et(e[n],t[n]))return!1;return!0}if(s!=i)return!1;if(e&&t&&"object"==typeof e&&"object"==typeof t){const s=e instanceof Date,i=t instanceof Date;if(s&&i)return e.getTime()==t.getTime();if(s!=i)return!1;const a=e instanceof RegExp,r=t instanceof RegExp;if(a&&r)return e.toString()==t.toString();if(a!=r)return!1;const u=Object.keys(e);for(n=0;n<u.length;n++)if(!Object.prototype.hasOwnProperty.call(t,u[n]))return!1;for(n=0;n<u.length;n++)if(!et(t[u[n]],e[u[n]]))return!1;return!0}return!(!e||!t||"function"!=typeof e||"function"!=typeof t)&&e.toString()===t.toString()}class st{constructor(t){for(Object.assign(this,t);this.value.slice(0,this.startChangePos)!==this.oldValue.slice(0,this.startChangePos);)--this.oldSelection.start}get startChangePos(){return Math.min(this.cursorPos,this.oldSelection.start)}get insertedCount(){return this.cursorPos-this.startChangePos}get inserted(){return this.value.substr(this.startChangePos,this.insertedCount)}get removedCount(){return Math.max(this.oldSelection.end-this.startChangePos||this.oldValue.length-this.value.length,0)}get removed(){return this.oldValue.substr(this.startChangePos,this.removedCount)}get head(){return this.value.substring(0,this.startChangePos)}get tail(){return this.value.substring(this.startChangePos+this.insertedCount)}get removeDirection(){return!this.removedCount||this.insertedCount?W.NONE:this.oldSelection.end!==this.cursorPos&&this.oldSelection.start!==this.cursorPos||this.oldSelection.end!==this.oldSelection.start?W.LEFT:W.RIGHT}}function it(t,e){return new it.InputMask(t,e)}function nt(t){if(null==t)throw new Error("mask property should be defined");return t instanceof RegExp?it.MaskedRegExp:Z(t)?it.MaskedPattern:t===Date?it.MaskedDate:t===Number?it.MaskedNumber:Array.isArray(t)||t===Array?it.MaskedDynamic:it.Masked&&t.prototype instanceof it.Masked?t:it.Masked&&t instanceof it.Masked?t.constructor:t instanceof Function?it.MaskedFunction:(console.warn("Mask not found for mask",t),it.Masked)}function at(t){if(!t)throw new Error("Options in not defined");if(it.Masked){if(t.prototype instanceof it.Masked)return{mask:t};const{mask:e,...s}=t instanceof it.Masked?{mask:t}:X(t)&&t.mask instanceof it.Masked?t:{};if(e){const t=e.mask;return{...J(e,((t,e)=>!e.startsWith("_"))),mask:e.constructor,_mask:t,...s}}}return X(t)?{...t}:{mask:t}}function rt(t){if(it.Masked&&t instanceof it.Masked)return t;const e=at(t),s=nt(e.mask);if(!s)throw new Error("Masked class is not found for provided mask, appropriate module needs to be imported manually before creating mask.");return e.mask===s&&delete e.mask,e._mask&&(e.mask=e._mask,delete e._mask),new s(e)}it.createMask=rt;class ut{get selectionStart(){let t;try{t=this._unsafeSelectionStart}catch{}return null!=t?t:this.value.length}get selectionEnd(){let t;try{t=this._unsafeSelectionEnd}catch{}return null!=t?t:this.value.length}select(t,e){if(null!=t&&null!=e&&(t!==this.selectionStart||e!==this.selectionEnd))try{this._unsafeSelect(t,e)}catch{}}get isActive(){return!1}}it.MaskElement=ut;class ot extends ut{constructor(t){super(),this.input=t,this._handlers={}}get rootElement(){var t,e,s;return null!=(t=null==(e=(s=this.input).getRootNode)?void 0:e.call(s))?t:document}get isActive(){return this.input===this.rootElement.activeElement}bindEvents(t){Object.keys(t).forEach((e=>this._toggleEventHandler(ot.EVENTS_MAP[e],t[e])))}unbindEvents(){Object.keys(this._handlers).forEach((t=>this._toggleEventHandler(t)))}_toggleEventHandler(t,e){this._handlers[t]&&(this.input.removeEventListener(t,this._handlers[t]),delete this._handlers[t]),e&&(this.input.addEventListener(t,e),this._handlers[t]=e)}}ot.EVENTS_MAP={selectionChange:"keydown",input:"input",drop:"drop",click:"click",focus:"focus",commit:"blur"},it.HTMLMaskElement=ot;class lt extends ot{constructor(t){super(t),this.input=t,this._handlers={}}get _unsafeSelectionStart(){return null!=this.input.selectionStart?this.input.selectionStart:this.value.length}get _unsafeSelectionEnd(){return this.input.selectionEnd}_unsafeSelect(t,e){this.input.setSelectionRange(t,e)}get value(){return this.input.value}set value(t){this.input.value=t}}it.HTMLMaskElement=ot;class ht extends ot{get _unsafeSelectionStart(){const t=this.rootElement,e=t.getSelection&&t.getSelection(),s=e&&e.anchorOffset,i=e&&e.focusOffset;return null==i||null==s||s<i?s:i}get _unsafeSelectionEnd(){const t=this.rootElement,e=t.getSelection&&t.getSelection(),s=e&&e.anchorOffset,i=e&&e.focusOffset;return null==i||null==s||s>i?s:i}_unsafeSelect(t,e){if(!this.rootElement.createRange)return;const s=this.rootElement.createRange();s.setStart(this.input.firstChild||this.input,t),s.setEnd(this.input.lastChild||this.input,e);const i=this.rootElement,n=i.getSelection&&i.getSelection();n&&(n.removeAllRanges(),n.addRange(s))}get value(){return this.input.textContent||""}set value(t){this.input.textContent=t}}it.HTMLContenteditableMaskElement=ht;it.InputMask=class{constructor(t,e){this.el=t instanceof ut?t:t.isContentEditable&&"INPUT"!==t.tagName&&"TEXTAREA"!==t.tagName?new ht(t):new lt(t),this.masked=rt(e),this._listeners={},this._value="",this._unmaskedValue="",this._saveSelection=this._saveSelection.bind(this),this._onInput=this._onInput.bind(this),this._onChange=this._onChange.bind(this),this._onDrop=this._onDrop.bind(this),this._onFocus=this._onFocus.bind(this),this._onClick=this._onClick.bind(this),this.alignCursor=this.alignCursor.bind(this),this.alignCursorFriendly=this.alignCursorFriendly.bind(this),this._bindEvents(),this.updateValue(),this._onChange()}maskEquals(t){var e;return null==t||(null==(e=this.masked)?void 0:e.maskEquals(t))}get mask(){return this.masked.mask}set mask(t){if(this.maskEquals(t))return;if(!(t instanceof it.Masked)&&this.masked.constructor===nt(t))return void this.masked.updateOptions({mask:t});const e=t instanceof it.Masked?t:rt({mask:t});e.unmaskedValue=this.masked.unmaskedValue,this.masked=e}get value(){return this._value}set value(t){this.value!==t&&(this.masked.value=t,this.updateControl(),this.alignCursor())}get unmaskedValue(){return this._unmaskedValue}set unmaskedValue(t){this.unmaskedValue!==t&&(this.masked.unmaskedValue=t,this.updateControl(),this.alignCursor())}get typedValue(){return this.masked.typedValue}set typedValue(t){this.masked.typedValueEquals(t)||(this.masked.typedValue=t,this.updateControl(),this.alignCursor())}get displayValue(){return this.masked.displayValue}_bindEvents(){this.el.bindEvents({selectionChange:this._saveSelection,input:this._onInput,drop:this._onDrop,click:this._onClick,focus:this._onFocus,commit:this._onChange})}_unbindEvents(){this.el&&this.el.unbindEvents()}_fireEvent(t,e){const s=this._listeners[t];s&&s.forEach((t=>t(e)))}get selectionStart(){return this._cursorChanging?this._changingCursorPos:this.el.selectionStart}get cursorPos(){return this._cursorChanging?this._changingCursorPos:this.el.selectionEnd}set cursorPos(t){this.el&&this.el.isActive&&(this.el.select(t,t),this._saveSelection())}_saveSelection(){this.displayValue!==this.el.value&&console.warn("Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly."),this._selection={start:this.selectionStart,end:this.cursorPos}}updateValue(){this.masked.value=this.el.value,this._value=this.masked.value}updateControl(){const t=this.masked.unmaskedValue,e=this.masked.value,s=this.displayValue,i=this.unmaskedValue!==t||this.value!==e;this._unmaskedValue=t,this._value=e,this.el.value!==s&&(this.el.value=s),i&&this._fireChangeEvents()}updateOptions(t){const{mask:e,...s}=t,i=!this.maskEquals(e),n=!et(this.masked,s);i&&(this.mask=e),n&&this.masked.updateOptions(s),(i||n)&&this.updateControl()}updateCursor(t){null!=t&&(this.cursorPos=t,this._delayUpdateCursor(t))}_delayUpdateCursor(t){this._abortUpdateCursor(),this._changingCursorPos=t,this._cursorChanging=setTimeout((()=>{this.el&&(this.cursorPos=this._changingCursorPos,this._abortUpdateCursor())}),10)}_fireChangeEvents(){this._fireEvent("accept",this._inputEvent),this.masked.isComplete&&this._fireEvent("complete",this._inputEvent)}_abortUpdateCursor(){this._cursorChanging&&(clearTimeout(this._cursorChanging),delete this._cursorChanging)}alignCursor(){this.cursorPos=this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos,W.LEFT))}alignCursorFriendly(){this.selectionStart===this.cursorPos&&this.alignCursor()}on(t,e){return this._listeners[t]||(this._listeners[t]=[]),this._listeners[t].push(e),this}off(t,e){if(!this._listeners[t])return this;if(!e)return delete this._listeners[t],this;const s=this._listeners[t].indexOf(e);return s>=0&&this._listeners[t].splice(s,1),this}_onInput(t){if(this._inputEvent=t,this._abortUpdateCursor(),!this._selection)return this.updateValue();const e=new st({value:this.el.value,cursorPos:this.cursorPos,oldValue:this.displayValue,oldSelection:this._selection}),s=this.masked.rawInputValue,i=this.masked.splice(e.startChangePos,e.removed.length,e.inserted,e.removeDirection,{input:!0,raw:!0}).offset,n=s===this.masked.rawInputValue?e.removeDirection:W.NONE;let a=this.masked.nearestInputPos(e.startChangePos+i,n);n!==W.NONE&&(a=this.masked.nearestInputPos(a,W.NONE)),this.updateControl(),this.updateCursor(a),delete this._inputEvent}_onChange(){this.displayValue!==this.el.value&&this.updateValue(),this.masked.doCommit(),this.updateControl(),this._saveSelection()}_onDrop(t){t.preventDefault(),t.stopPropagation()}_onFocus(t){this.alignCursorFriendly()}_onClick(t){this.alignCursorFriendly()}destroy(){this._unbindEvents(),this._listeners.length=0,delete this.el}};class dt{static normalize(t){return Array.isArray(t)?t:[t,new dt]}constructor(t){Object.assign(this,{inserted:"",rawInserted:"",skip:!1,tailShift:0},t)}aggregate(t){return this.rawInserted+=t.rawInserted,this.skip=this.skip||t.skip,this.inserted+=t.inserted,this.tailShift+=t.tailShift,this}get offset(){return this.tailShift+this.inserted.length}}it.ChangeDetails=dt;class ct{constructor(t,e,s){void 0===t&&(t=""),void 0===e&&(e=0),this.value=t,this.from=e,this.stop=s}toString(){return this.value}extend(t){this.value+=String(t)}appendTo(t){return t.append(this.toString(),{tail:!0}).aggregate(t._appendPlaceholder())}get state(){return{value:this.value,from:this.from,stop:this.stop}}set state(t){Object.assign(this,t)}unshift(t){if(!this.value.length||null!=t&&this.from>=t)return"";const e=this.value[0];return this.value=this.value.slice(1),e}shift(){if(!this.value.length)return"";const t=this.value[this.value.length-1];return this.value=this.value.slice(0,-1),t}}class pt{constructor(t){this._value="",this._update({...pt.DEFAULTS,...t}),this._initialized=!0}updateOptions(t){Object.keys(t).length&&this.withValueRefresh(this._update.bind(this,t))}_update(t){Object.assign(this,t)}get state(){return{_value:this.value,_rawInputValue:this.rawInputValue}}set state(t){this._value=t._value}reset(){this._value=""}get value(){return this._value}set value(t){this.resolve(t,{input:!0})}resolve(t,e){void 0===e&&(e={input:!0}),this.reset(),this.append(t,e,""),this.doCommit()}get unmaskedValue(){return this.value}set unmaskedValue(t){this.resolve(t,{})}get typedValue(){return this.parse?this.parse(this.value,this):this.unmaskedValue}set typedValue(t){this.format?this.value=this.format(t,this):this.unmaskedValue=String(t)}get rawInputValue(){return this.extractInput(0,this.displayValue.length,{raw:!0})}set rawInputValue(t){this.resolve(t,{raw:!0})}get displayValue(){return this.value}get isComplete(){return!0}get isFilled(){return this.isComplete}nearestInputPos(t,e){return t}totalInputPositions(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),Math.min(this.displayValue.length,e-t)}extractInput(t,e,s){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),this.displayValue.slice(t,e)}extractTail(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),new ct(this.extractInput(t,e),t)}appendTail(t){return Z(t)&&(t=new ct(String(t))),t.appendTo(this)}_appendCharRaw(t,e){return t?(this._value+=t,new dt({inserted:t,rawInserted:t})):new dt}_appendChar(t,e,s){void 0===e&&(e={});const i=this.state;let n;if([t,n]=this.doPrepareChar(t,e),n=n.aggregate(this._appendCharRaw(t,e)),n.inserted){let t,a=!1!==this.doValidate(e);if(a&&null!=s){const e=this.state;!0===this.overwrite&&(t=s.state,s.unshift(this.displayValue.length-n.tailShift));let i=this.appendTail(s);a=i.rawInserted===s.toString(),a&&i.inserted||"shift"!==this.overwrite||(this.state=e,t=s.state,s.shift(),i=this.appendTail(s),a=i.rawInserted===s.toString()),a&&i.inserted&&(this.state=e)}a||(n=new dt,this.state=i,s&&t&&(s.state=t))}return n}_appendPlaceholder(){return new dt}_appendEager(){return new dt}append(t,e,s){if(!Z(t))throw new Error("value should be string");const i=Z(s)?new ct(String(s)):s;let n;null!=e&&e.tail&&(e._beforeTailState=this.state),[t,n]=this.doPrepare(t,e);for(let s=0;s<t.length;++s){const a=this._appendChar(t[s],e,i);if(!a.rawInserted&&!this.doSkipInvalid(t[s],e,i))break;n.aggregate(a)}return(!0===this.eager||"append"===this.eager)&&null!=e&&e.input&&t&&n.aggregate(this._appendEager()),null!=i&&(n.tailShift+=this.appendTail(i).tailShift),n}remove(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),this._value=this.displayValue.slice(0,t)+this.displayValue.slice(e),new dt}withValueRefresh(t){if(this._refreshing||!this._initialized)return t();this._refreshing=!0;const e=this.rawInputValue,s=this.value,i=t();return this.rawInputValue=e,this.value&&this.value!==s&&0===s.indexOf(this.value)&&this.append(s.slice(this.displayValue.length),{},""),delete this._refreshing,i}runIsolated(t){if(this._isolated||!this._initialized)return t(this);this._isolated=!0;const e=this.state,s=t(this);return this.state=e,delete this._isolated,s}doSkipInvalid(t,e,s){return Boolean(this.skipInvalid)}doPrepare(t,e){return void 0===e&&(e={}),dt.normalize(this.prepare?this.prepare(t,this,e):t)}doPrepareChar(t,e){return void 0===e&&(e={}),dt.normalize(this.prepareChar?this.prepareChar(t,this,e):t)}doValidate(t){return(!this.validate||this.validate(this.value,this,t))&&(!this.parent||this.parent.doValidate(t))}doCommit(){this.commit&&this.commit(this.value,this)}splice(t,e,s,i,n){void 0===i&&(i=W.NONE),void 0===n&&(n={input:!0});const a=t+e,r=this.extractTail(a),u=!0===this.eager||"remove"===this.eager;let o;u&&(i=Q(i),o=this.extractInput(0,a,{raw:!0}));let l=t;const h=new dt;if(i!==W.NONE&&(l=this.nearestInputPos(t,e>1&&0!==t&&!u?W.NONE:i),h.tailShift=l-t),h.aggregate(this.remove(l)),u&&i!==W.NONE&&o===this.rawInputValue)if(i===W.FORCE_LEFT){let t;for(;o===this.rawInputValue&&(t=this.displayValue.length);)h.aggregate(new dt({tailShift:-1})).aggregate(this.remove(t-1))}else i===W.FORCE_RIGHT&&r.unshift();return h.aggregate(this.append(s,n,r))}maskEquals(t){return this.mask===t}typedValueEquals(t){const e=this.typedValue;return t===e||pt.EMPTY_VALUES.includes(t)&&pt.EMPTY_VALUES.includes(e)||!!this.format&&this.format(t,this)===this.format(this.typedValue,this)}}pt.DEFAULTS={skipInvalid:!0},pt.EMPTY_VALUES=[void 0,null,""],it.Masked=pt;class mt{constructor(t,e){void 0===t&&(t=[]),void 0===e&&(e=0),this.chunks=t,this.from=e}toString(){return this.chunks.map(String).join("")}extend(t){if(!String(t))return;t=Z(t)?new ct(String(t)):t;const e=this.chunks[this.chunks.length-1],s=e&&(e.stop===t.stop||null==t.stop)&&t.from===e.from+e.toString().length;if(t instanceof ct)s?e.extend(t.toString()):this.chunks.push(t);else if(t instanceof mt){if(null==t.stop){let e;for(;t.chunks.length&&null==t.chunks[0].stop;)e=t.chunks.shift(),e.from+=t.from,this.extend(e)}t.toString()&&(t.stop=t.blockIndex,this.chunks.push(t))}}appendTo(t){if(!(t instanceof it.MaskedPattern)){return new ct(this.toString()).appendTo(t)}const e=new dt;for(let s=0;s<this.chunks.length&&!e.skip;++s){const i=this.chunks[s],n=t._mapPosToBlock(t.displayValue.length),a=i.stop;let r;if(null!=a&&(!n||n.index<=a)){if(i instanceof mt||t._stops.indexOf(a)>=0){const s=t._appendPlaceholder(a);e.aggregate(s)}r=i instanceof mt&&t._blocks[a]}if(r){const s=r.appendTail(i);s.skip=!1,e.aggregate(s),t._value+=s.inserted;const n=i.toString().slice(s.rawInserted.length);n&&e.aggregate(t.append(n,{tail:!0}))}else e.aggregate(t.append(i.toString(),{tail:!0}))}return e}get state(){return{chunks:this.chunks.map((t=>t.state)),from:this.from,stop:this.stop,blockIndex:this.blockIndex}}set state(t){const{chunks:e,...s}=t;Object.assign(this,s),this.chunks=e.map((t=>{const e="chunks"in t?new mt:new ct;return e.state=t,e}))}unshift(t){if(!this.chunks.length||null!=t&&this.from>=t)return"";const e=null!=t?t-this.from:t;let s=0;for(;s<this.chunks.length;){const t=this.chunks[s],i=t.unshift(e);if(t.toString()){if(!i)break;++s}else this.chunks.splice(s,1);if(i)return i}return""}shift(){if(!this.chunks.length)return"";let t=this.chunks.length-1;for(;0<=t;){const e=this.chunks[t],s=e.shift();if(e.toString()){if(!s)break;--t}else this.chunks.splice(t,1);if(s)return s}return""}}class gt{constructor(t,e){this.masked=t,this._log=[];const{offset:s,index:i}=t._mapPosToBlock(e)||(e<0?{index:0,offset:0}:{index:this.masked._blocks.length,offset:0});this.offset=s,this.index=i,this.ok=!1}get block(){return this.masked._blocks[this.index]}get pos(){return this.masked._blockStartPos(this.index)+this.offset}get state(){return{index:this.index,offset:this.offset,ok:this.ok}}set state(t){Object.assign(this,t)}pushState(){this._log.push(this.state)}popState(){const t=this._log.pop();return t&&(this.state=t),t}bindBlock(){this.block||(this.index<0&&(this.index=0,this.offset=0),this.index>=this.masked._blocks.length&&(this.index=this.masked._blocks.length-1,this.offset=this.block.displayValue.length))}_pushLeft(t){for(this.pushState(),this.bindBlock();0<=this.index;--this.index,this.offset=(null==(e=this.block)?void 0:e.displayValue.length)||0){var e;if(t())return this.ok=!0}return this.ok=!1}_pushRight(t){for(this.pushState(),this.bindBlock();this.index<this.masked._blocks.length;++this.index,this.offset=0)if(t())return this.ok=!0;return this.ok=!1}pushLeftBeforeFilled(){return this._pushLeft((()=>{if(!this.block.isFixed&&this.block.value)return this.offset=this.block.nearestInputPos(this.offset,W.FORCE_LEFT),0!==this.offset||void 0}))}pushLeftBeforeInput(){return this._pushLeft((()=>{if(!this.block.isFixed)return this.offset=this.block.nearestInputPos(this.offset,W.LEFT),!0}))}pushLeftBeforeRequired(){return this._pushLeft((()=>{if(!(this.block.isFixed||this.block.isOptional&&!this.block.value))return this.offset=this.block.nearestInputPos(this.offset,W.LEFT),!0}))}pushRightBeforeFilled(){return this._pushRight((()=>{if(!this.block.isFixed&&this.block.value)return this.offset=this.block.nearestInputPos(this.offset,W.FORCE_RIGHT),this.offset!==this.block.value.length||void 0}))}pushRightBeforeInput(){return this._pushRight((()=>{if(!this.block.isFixed)return this.offset=this.block.nearestInputPos(this.offset,W.NONE),!0}))}pushRightBeforeRequired(){return this._pushRight((()=>{if(!(this.block.isFixed||this.block.isOptional&&!this.block.value))return this.offset=this.block.nearestInputPos(this.offset,W.NONE),!0}))}}class ft{constructor(t){Object.assign(this,t),this._value="",this.isFixed=!0}get value(){return this._value}get unmaskedValue(){return this.isUnmasking?this.value:""}get rawInputValue(){return this._isRawInput?this.value:""}get displayValue(){return this.value}reset(){this._isRawInput=!1,this._value=""}remove(t,e){return void 0===t&&(t=0),void 0===e&&(e=this._value.length),this._value=this._value.slice(0,t)+this._value.slice(e),this._value||(this._isRawInput=!1),new dt}nearestInputPos(t,e){void 0===e&&(e=W.NONE);const s=this._value.length;switch(e){case W.LEFT:case W.FORCE_LEFT:return 0;default:return s}}totalInputPositions(t,e){return void 0===t&&(t=0),void 0===e&&(e=this._value.length),this._isRawInput?e-t:0}extractInput(t,e,s){return void 0===t&&(t=0),void 0===e&&(e=this._value.length),void 0===s&&(s={}),s.raw&&this._isRawInput&&this._value.slice(t,e)||""}get isComplete(){return!0}get isFilled(){return Boolean(this._value)}_appendChar(t,e){void 0===e&&(e={});const s=new dt;if(this.isFilled)return s;const i=!0===this.eager||"append"===this.eager,n=this.char===t&&(this.isUnmasking||e.input||e.raw)&&(!e.raw||!i)&&!e.tail;return n&&(s.rawInserted=this.char),this._value=s.inserted=this.char,this._isRawInput=n&&(e.raw||e.input),s}_appendEager(){return this._appendChar(this.char,{tail:!0})}_appendPlaceholder(){const t=new dt;return this.isFilled||(this._value=t.inserted=this.char),t}extractTail(){return new ct("")}appendTail(t){return Z(t)&&(t=new ct(String(t))),t.appendTo(this)}append(t,e,s){const i=this._appendChar(t[0],e);return null!=s&&(i.tailShift+=this.appendTail(s).tailShift),i}doCommit(){}get state(){return{_value:this._value,_rawInputValue:this.rawInputValue}}set state(t){this._value=t._value,this._isRawInput=Boolean(t._rawInputValue)}}class kt{constructor(t){const{parent:e,isOptional:s,placeholderChar:i,displayChar:n,lazy:a,eager:r,...u}=t;this.masked=rt(u),Object.assign(this,{parent:e,isOptional:s,placeholderChar:i,displayChar:n,lazy:a,eager:r})}reset(){this.isFilled=!1,this.masked.reset()}remove(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.value.length),0===t&&e>=1?(this.isFilled=!1,this.masked.remove(t,e)):new dt}get value(){return this.masked.value||(this.isFilled&&!this.isOptional?this.placeholderChar:"")}get unmaskedValue(){return this.masked.unmaskedValue}get rawInputValue(){return this.masked.rawInputValue}get displayValue(){return this.masked.value&&this.displayChar||this.value}get isComplete(){return Boolean(this.masked.value)||this.isOptional}_appendChar(t,e){if(void 0===e&&(e={}),this.isFilled)return new dt;const s=this.masked.state,i=this.masked._appendChar(t,this.currentMaskFlags(e));return i.inserted&&!1===this.doValidate(e)&&(i.inserted=i.rawInserted="",this.masked.state=s),i.inserted||this.isOptional||this.lazy||e.input||(i.inserted=this.placeholderChar),i.skip=!i.inserted&&!this.isOptional,this.isFilled=Boolean(i.inserted),i}append(t,e,s){return this.masked.append(t,this.currentMaskFlags(e),s)}_appendPlaceholder(){const t=new dt;return this.isFilled||this.isOptional||(this.isFilled=!0,t.inserted=this.placeholderChar),t}_appendEager(){return new dt}extractTail(t,e){return this.masked.extractTail(t,e)}appendTail(t){return this.masked.appendTail(t)}extractInput(t,e,s){return void 0===t&&(t=0),void 0===e&&(e=this.value.length),this.masked.extractInput(t,e,s)}nearestInputPos(t,e){void 0===e&&(e=W.NONE);const s=this.value.length,i=Math.min(Math.max(t,0),s);switch(e){case W.LEFT:case W.FORCE_LEFT:return this.isComplete?i:0;case W.RIGHT:case W.FORCE_RIGHT:return this.isComplete?i:s;default:return i}}totalInputPositions(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.value.length),this.value.slice(t,e).length}doValidate(t){return this.masked.doValidate(this.currentMaskFlags(t))&&(!this.parent||this.parent.doValidate(this.currentMaskFlags(t)))}doCommit(){this.masked.doCommit()}get state(){return{_value:this.value,_rawInputValue:this.rawInputValue,masked:this.masked.state,isFilled:this.isFilled}}set state(t){this.masked.state=t.masked,this.isFilled=t.isFilled}currentMaskFlags(t){var e;return{...t,_beforeTailState:(null==t||null==(e=t._beforeTailState)?void 0:e.masked)||(null==t?void 0:t._beforeTailState)}}}kt.DEFAULT_DEFINITIONS={0:/\d/,a:/[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,"*":/./};it.MaskedRegExp=class extends pt{updateOptions(t){super.updateOptions(t)}_update(t){const e=t.mask;e&&(t.validate=t=>t.search(e)>=0),super._update(t)}};class vt extends pt{constructor(t){super({...vt.DEFAULTS,...t,definitions:Object.assign({},kt.DEFAULT_DEFINITIONS,null==t?void 0:t.definitions)})}updateOptions(t){super.updateOptions(t)}_update(t){t.definitions=Object.assign({},this.definitions,t.definitions),super._update(t),this._rebuildMask()}_rebuildMask(){const t=this.definitions;this._blocks=[],this.exposeBlock=void 0,this._stops=[],this._maskedBlocks={};const e=this.mask;if(!e||!t)return;let s=!1,i=!1;for(let n=0;n<e.length;++n){if(this.blocks){const t=e.slice(n),s=Object.keys(this.blocks).filter((e=>0===t.indexOf(e)));s.sort(((t,e)=>e.length-t.length));const i=s[0];if(i){const{expose:t,...e}=at(this.blocks[i]),s=rt({lazy:this.lazy,eager:this.eager,placeholderChar:this.placeholderChar,displayChar:this.displayChar,overwrite:this.overwrite,...e,parent:this});s&&(this._blocks.push(s),t&&(this.exposeBlock=s),this._maskedBlocks[i]||(this._maskedBlocks[i]=[]),this._maskedBlocks[i].push(this._blocks.length-1)),n+=i.length-1;continue}}let a=e[n],r=a in t;if(a===vt.STOP_CHAR){this._stops.push(this._blocks.length);continue}if("{"===a||"}"===a){s=!s;continue}if("["===a||"]"===a){i=!i;continue}if(a===vt.ESCAPE_CHAR){if(++n,a=e[n],!a)break;r=!1}const u=r?new kt({isOptional:i,lazy:this.lazy,eager:this.eager,placeholderChar:this.placeholderChar,displayChar:this.displayChar,...at(t[a]),parent:this}):new ft({char:a,eager:this.eager,isUnmasking:s});this._blocks.push(u)}}get state(){return{...super.state,_blocks:this._blocks.map((t=>t.state))}}set state(t){const{_blocks:e,...s}=t;this._blocks.forEach(((t,s)=>t.state=e[s])),super.state=s}reset(){super.reset(),this._blocks.forEach((t=>t.reset()))}get isComplete(){return this.exposeBlock?this.exposeBlock.isComplete:this._blocks.every((t=>t.isComplete))}get isFilled(){return this._blocks.every((t=>t.isFilled))}get isFixed(){return this._blocks.every((t=>t.isFixed))}get isOptional(){return this._blocks.every((t=>t.isOptional))}doCommit(){this._blocks.forEach((t=>t.doCommit())),super.doCommit()}get unmaskedValue(){return this.exposeBlock?this.exposeBlock.unmaskedValue:this._blocks.reduce(((t,e)=>t+e.unmaskedValue),"")}set unmaskedValue(t){if(this.exposeBlock){const e=this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock))+this.exposeBlock.displayValue.length);this.exposeBlock.unmaskedValue=t,this.appendTail(e),this.doCommit()}else super.unmaskedValue=t}get value(){return this.exposeBlock?this.exposeBlock.value:this._blocks.reduce(((t,e)=>t+e.value),"")}set value(t){if(this.exposeBlock){const e=this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock))+this.exposeBlock.displayValue.length);this.exposeBlock.value=t,this.appendTail(e),this.doCommit()}else super.value=t}get typedValue(){return this.exposeBlock?this.exposeBlock.typedValue:super.typedValue}set typedValue(t){if(this.exposeBlock){const e=this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock))+this.exposeBlock.displayValue.length);this.exposeBlock.typedValue=t,this.appendTail(e),this.doCommit()}else super.typedValue=t}get displayValue(){return this._blocks.reduce(((t,e)=>t+e.displayValue),"")}appendTail(t){return super.appendTail(t).aggregate(this._appendPlaceholder())}_appendEager(){var t;const e=new dt;let s=null==(t=this._mapPosToBlock(this.displayValue.length))?void 0:t.index;if(null==s)return e;this._blocks[s].isFilled&&++s;for(let t=s;t<this._blocks.length;++t){const s=this._blocks[t]._appendEager();if(!s.inserted)break;e.aggregate(s)}return e}_appendCharRaw(t,e){void 0===e&&(e={});const s=this._mapPosToBlock(this.displayValue.length),i=new dt;if(!s)return i;for(let a=s.index;;++a){var n;const s=this._blocks[a];if(!s)break;const r=s._appendChar(t,{...e,_beforeTailState:null==(n=e._beforeTailState)||null==(n=n._blocks)?void 0:n[a]}),u=r.skip;if(i.aggregate(r),u||r.rawInserted)break}return i}extractTail(t,e){void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length);const s=new mt;return t===e||this._forEachBlocksInRange(t,e,((t,e,i,n)=>{const a=t.extractTail(i,n);a.stop=this._findStopBefore(e),a.from=this._blockStartPos(e),a instanceof mt&&(a.blockIndex=e),s.extend(a)})),s}extractInput(t,e,s){if(void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),void 0===s&&(s={}),t===e)return"";let i="";return this._forEachBlocksInRange(t,e,((t,e,n,a)=>{i+=t.extractInput(n,a,s)})),i}_findStopBefore(t){let e;for(let s=0;s<this._stops.length;++s){const i=this._stops[s];if(!(i<=t))break;e=i}return e}_appendPlaceholder(t){const e=new dt;if(this.lazy&&null==t)return e;const s=this._mapPosToBlock(this.displayValue.length);if(!s)return e;const i=s.index,n=null!=t?t:this._blocks.length;return this._blocks.slice(i,n).forEach((s=>{if(!s.lazy||null!=t){var i;const t=s._appendPlaceholder(null==(i=s._blocks)?void 0:i.length);this._value+=t.inserted,e.aggregate(t)}})),e}_mapPosToBlock(t){let e="";for(let s=0;s<this._blocks.length;++s){const i=this._blocks[s],n=e.length;if(e+=i.displayValue,t<=e.length)return{index:s,offset:t-n}}}_blockStartPos(t){return this._blocks.slice(0,t).reduce(((t,e)=>t+e.displayValue.length),0)}_forEachBlocksInRange(t,e,s){void 0===e&&(e=this.displayValue.length);const i=this._mapPosToBlock(t);if(i){const t=this._mapPosToBlock(e),n=t&&i.index===t.index,a=i.offset,r=t&&n?t.offset:this._blocks[i.index].displayValue.length;if(s(this._blocks[i.index],i.index,a,r),t&&!n){for(let e=i.index+1;e<t.index;++e)s(this._blocks[e],e,0,this._blocks[e].displayValue.length);s(this._blocks[t.index],t.index,0,t.offset)}}}remove(t,e){void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length);const s=super.remove(t,e);return this._forEachBlocksInRange(t,e,((t,e,i,n)=>{s.aggregate(t.remove(i,n))})),s}nearestInputPos(t,e){if(void 0===e&&(e=W.NONE),!this._blocks.length)return 0;const s=new gt(this,t);if(e===W.NONE)return s.pushRightBeforeInput()?s.pos:(s.popState(),s.pushLeftBeforeInput()?s.pos:this.displayValue.length);if(e===W.LEFT||e===W.FORCE_LEFT){if(e===W.LEFT){if(s.pushRightBeforeFilled(),s.ok&&s.pos===t)return t;s.popState()}if(s.pushLeftBeforeInput(),s.pushLeftBeforeRequired(),s.pushLeftBeforeFilled(),e===W.LEFT){if(s.pushRightBeforeInput(),s.pushRightBeforeRequired(),s.ok&&s.pos<=t)return s.pos;if(s.popState(),s.ok&&s.pos<=t)return s.pos;s.popState()}return s.ok?s.pos:e===W.FORCE_LEFT?0:(s.popState(),s.ok?s.pos:(s.popState(),s.ok?s.pos:0))}return e===W.RIGHT||e===W.FORCE_RIGHT?(s.pushRightBeforeInput(),s.pushRightBeforeRequired(),s.pushRightBeforeFilled()?s.pos:e===W.FORCE_RIGHT?this.displayValue.length:(s.popState(),s.ok?s.pos:(s.popState(),s.ok?s.pos:this.nearestInputPos(t,W.LEFT)))):t}totalInputPositions(t,e){void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length);let s=0;return this._forEachBlocksInRange(t,e,((t,e,i,n)=>{s+=t.totalInputPositions(i,n)})),s}maskedBlock(t){return this.maskedBlocks(t)[0]}maskedBlocks(t){const e=this._maskedBlocks[t];return e?e.map((t=>this._blocks[t])):[]}}vt.DEFAULTS={lazy:!0,placeholderChar:"_"},vt.STOP_CHAR="`",vt.ESCAPE_CHAR="\\",vt.InputDefinition=kt,vt.FixedDefinition=ft,it.MaskedPattern=vt;class _t extends vt{get _matchFrom(){return this.maxLength-String(this.from).length}constructor(t){super(t)}updateOptions(t){super.updateOptions(t)}_update(t){const{to:e=this.to||0,from:s=this.from||0,maxLength:i=this.maxLength||0,autofix:n=this.autofix,...a}=t;this.to=e,this.from=s,this.maxLength=Math.max(String(e).length,i),this.autofix=n;const r=String(this.from).padStart(this.maxLength,"0"),u=String(this.to).padStart(this.maxLength,"0");let o=0;for(;o<u.length&&u[o]===r[o];)++o;a.mask=u.slice(0,o).replace(/0/g,"\\0")+"0".repeat(this.maxLength-o),super._update(a)}get isComplete(){return super.isComplete&&Boolean(this.value)}boundaries(t){let e="",s="";const[,i,n]=t.match(/^(\D*)(\d*)(\D*)/)||[];return n&&(e="0".repeat(i.length)+n,s="9".repeat(i.length)+n),e=e.padEnd(this.maxLength,"0"),s=s.padEnd(this.maxLength,"9"),[e,s]}doPrepareChar(t,e){let s;if(void 0===e&&(e={}),[t,s]=super.doPrepareChar(t.replace(/\D/g,""),e),!this.autofix||!t)return[t,s];const i=String(this.from).padStart(this.maxLength,"0"),n=String(this.to).padStart(this.maxLength,"0"),a=this.value+t;if(a.length>this.maxLength)return["",s];const[r,u]=this.boundaries(a);return Number(u)<this.from?[i[a.length-1],s]:Number(r)>this.to?"pad"===this.autofix&&a.length<this.maxLength?["",s.aggregate(this.append(i[a.length-1]+t,e))]:[n[a.length-1],s]:[t,s]}doValidate(t){const e=this.value;if(-1===e.search(/[^0]/)&&e.length<=this._matchFrom)return!0;const[s,i]=this.boundaries(e);return this.from<=Number(i)&&Number(s)<=this.to&&super.doValidate(t)}}it.MaskedRange=_t;class Ft extends vt{constructor(t){const{mask:e,pattern:s,...i}={...Ft.DEFAULTS,...t};super({...i,mask:Z(e)?e:s})}updateOptions(t){super.updateOptions(t)}_update(t){const{mask:e,pattern:s,blocks:i,...n}={...Ft.DEFAULTS,...t},a=Object.assign({},Ft.GET_DEFAULT_BLOCKS());t.min&&(a.Y.from=t.min.getFullYear()),t.max&&(a.Y.to=t.max.getFullYear()),t.min&&t.max&&a.Y.from===a.Y.to&&(a.m.from=t.min.getMonth()+1,a.m.to=t.max.getMonth()+1,a.m.from===a.m.to&&(a.d.from=t.min.getDate(),a.d.to=t.max.getDate())),Object.assign(a,this.blocks,i),Object.keys(a).forEach((e=>{const s=a[e];!("autofix"in s)&&"autofix"in t&&(s.autofix=t.autofix)})),super._update({...n,mask:Z(e)?e:s,blocks:a})}doValidate(t){const e=this.date;return super.doValidate(t)&&(!this.isComplete||this.isDateExist(this.value)&&null!=e&&(null==this.min||this.min<=e)&&(null==this.max||e<=this.max))}isDateExist(t){return this.format(this.parse(t,this),this).indexOf(t)>=0}get date(){return this.typedValue}set date(t){this.typedValue=t}get typedValue(){return this.isComplete?super.typedValue:null}set typedValue(t){super.typedValue=t}maskEquals(t){return t===Date||super.maskEquals(t)}}Ft.GET_DEFAULT_BLOCKS=()=>({d:{mask:_t,from:1,to:31,maxLength:2},m:{mask:_t,from:1,to:12,maxLength:2},Y:{mask:_t,from:1900,to:9999}}),Ft.DEFAULTS={mask:Date,pattern:"d{.}`m{.}`Y",format:(t,e)=>{if(!t)return"";return[String(t.getDate()).padStart(2,"0"),String(t.getMonth()+1).padStart(2,"0"),t.getFullYear()].join(".")},parse:(t,e)=>{const[s,i,n]=t.split(".").map(Number);return new Date(n,i-1,s)}},it.MaskedDate=Ft;class yt extends pt{constructor(t){super({...yt.DEFAULTS,...t}),this.currentMask=void 0}updateOptions(t){super.updateOptions(t)}_update(t){super._update(t),"mask"in t&&(this.exposeMask=void 0,this.compiledMasks=Array.isArray(t.mask)?t.mask.map((t=>{const{expose:e,...s}=at(t),i=rt({overwrite:this._overwrite,eager:this._eager,skipInvalid:this._skipInvalid,...s});return e&&(this.exposeMask=i),i})):[])}_appendCharRaw(t,e){void 0===e&&(e={});const s=this._applyDispatch(t,e);return this.currentMask&&s.aggregate(this.currentMask._appendChar(t,this.currentMaskFlags(e))),s}_applyDispatch(t,e,s){void 0===t&&(t=""),void 0===e&&(e={}),void 0===s&&(s="");const i=e.tail&&null!=e._beforeTailState?e._beforeTailState._value:this.value,n=this.rawInputValue,a=e.tail&&null!=e._beforeTailState?e._beforeTailState._rawInputValue:n,r=n.slice(a.length),u=this.currentMask,o=new dt,l=null==u?void 0:u.state;if(this.currentMask=this.doDispatch(t,{...e},s),this.currentMask)if(this.currentMask!==u){if(this.currentMask.reset(),a){const t=this.currentMask.append(a,{raw:!0});o.tailShift=t.inserted.length-i.length}r&&(o.tailShift+=this.currentMask.append(r,{raw:!0,tail:!0}).tailShift)}else l&&(this.currentMask.state=l);return o}_appendPlaceholder(){const t=this._applyDispatch();return this.currentMask&&t.aggregate(this.currentMask._appendPlaceholder()),t}_appendEager(){const t=this._applyDispatch();return this.currentMask&&t.aggregate(this.currentMask._appendEager()),t}appendTail(t){const e=new dt;return t&&e.aggregate(this._applyDispatch("",{},t)),e.aggregate(this.currentMask?this.currentMask.appendTail(t):super.appendTail(t))}currentMaskFlags(t){var e,s;return{...t,_beforeTailState:(null==(e=t._beforeTailState)?void 0:e.currentMaskRef)===this.currentMask&&(null==(s=t._beforeTailState)?void 0:s.currentMask)||t._beforeTailState}}doDispatch(t,e,s){return void 0===e&&(e={}),void 0===s&&(s=""),this.dispatch(t,this,e,s)}doValidate(t){return super.doValidate(t)&&(!this.currentMask||this.currentMask.doValidate(this.currentMaskFlags(t)))}doPrepare(t,e){void 0===e&&(e={});let[s,i]=super.doPrepare(t,e);if(this.currentMask){let t;[s,t]=super.doPrepare(s,this.currentMaskFlags(e)),i=i.aggregate(t)}return[s,i]}doPrepareChar(t,e){void 0===e&&(e={});let[s,i]=super.doPrepareChar(t,e);if(this.currentMask){let t;[s,t]=super.doPrepareChar(s,this.currentMaskFlags(e)),i=i.aggregate(t)}return[s,i]}reset(){var t;null==(t=this.currentMask)||t.reset(),this.compiledMasks.forEach((t=>t.reset()))}get value(){return this.exposeMask?this.exposeMask.value:this.currentMask?this.currentMask.value:""}set value(t){this.exposeMask?(this.exposeMask.value=t,this.currentMask=this.exposeMask,this._applyDispatch()):super.value=t}get unmaskedValue(){return this.exposeMask?this.exposeMask.unmaskedValue:this.currentMask?this.currentMask.unmaskedValue:""}set unmaskedValue(t){this.exposeMask?(this.exposeMask.unmaskedValue=t,this.currentMask=this.exposeMask,this._applyDispatch()):super.unmaskedValue=t}get typedValue(){return this.exposeMask?this.exposeMask.typedValue:this.currentMask?this.currentMask.typedValue:""}set typedValue(t){if(this.exposeMask)return this.exposeMask.typedValue=t,this.currentMask=this.exposeMask,void this._applyDispatch();let e=String(t);this.currentMask&&(this.currentMask.typedValue=t,e=this.currentMask.unmaskedValue),this.unmaskedValue=e}get displayValue(){return this.currentMask?this.currentMask.displayValue:""}get isComplete(){var t;return Boolean(null==(t=this.currentMask)?void 0:t.isComplete)}get isFilled(){var t;return Boolean(null==(t=this.currentMask)?void 0:t.isFilled)}remove(t,e){const s=new dt;return this.currentMask&&s.aggregate(this.currentMask.remove(t,e)).aggregate(this._applyDispatch()),s}get state(){var t;return{...super.state,_rawInputValue:this.rawInputValue,compiledMasks:this.compiledMasks.map((t=>t.state)),currentMaskRef:this.currentMask,currentMask:null==(t=this.currentMask)?void 0:t.state}}set state(t){const{compiledMasks:e,currentMaskRef:s,currentMask:i,...n}=t;e&&this.compiledMasks.forEach(((t,s)=>t.state=e[s])),null!=s&&(this.currentMask=s,this.currentMask.state=i),super.state=n}extractInput(t,e,s){return this.currentMask?this.currentMask.extractInput(t,e,s):""}extractTail(t,e){return this.currentMask?this.currentMask.extractTail(t,e):super.extractTail(t,e)}doCommit(){this.currentMask&&this.currentMask.doCommit(),super.doCommit()}nearestInputPos(t,e){return this.currentMask?this.currentMask.nearestInputPos(t,e):super.nearestInputPos(t,e)}get overwrite(){return this.currentMask?this.currentMask.overwrite:this._overwrite}set overwrite(t){this._overwrite=t}get eager(){return this.currentMask?this.currentMask.eager:this._eager}set eager(t){this._eager=t}get skipInvalid(){return this.currentMask?this.currentMask.skipInvalid:this._skipInvalid}set skipInvalid(t){this._skipInvalid=t}maskEquals(t){return Array.isArray(t)?this.compiledMasks.every(((e,s)=>{if(!t[s])return;const{mask:i,...n}=t[s];return et(e,n)&&e.maskEquals(i)})):super.maskEquals(t)}typedValueEquals(t){var e;return Boolean(null==(e=this.currentMask)?void 0:e.typedValueEquals(t))}}yt.DEFAULTS=void 0,yt.DEFAULTS={dispatch:(t,e,s,i)=>{if(!e.compiledMasks.length)return;const n=e.rawInputValue,a=e.compiledMasks.map(((a,r)=>{const u=e.currentMask===a,o=u?a.displayValue.length:a.nearestInputPos(a.displayValue.length,W.FORCE_LEFT);return a.rawInputValue!==n?(a.reset(),a.append(n,{raw:!0})):u||a.remove(o),a.append(t,e.currentMaskFlags(s)),a.appendTail(i),{index:r,weight:a.rawInputValue.length,totalInputPositions:a.totalInputPositions(0,Math.max(o,a.nearestInputPos(a.displayValue.length,W.FORCE_LEFT)))}}));return a.sort(((t,e)=>e.weight-t.weight||e.totalInputPositions-t.totalInputPositions)),e.compiledMasks[a[0].index]}},it.MaskedDynamic=yt;it.MaskedEnum=class extends vt{constructor(t){super(t)}updateOptions(t){super.updateOptions(t)}_update(t){const{enum:e,...s}=t;if(e){const t=e.map((t=>t.length)),i=Math.min(...t),n=Math.max(...t)-i;s.mask="*".repeat(i),n&&(s.mask+="["+"*".repeat(n)+"]"),this.enum=e}super._update(s)}doValidate(t){return this.enum.some((t=>0===t.indexOf(this.unmaskedValue)))&&super.doValidate(t)}};it.MaskedFunction=class extends pt{updateOptions(t){super.updateOptions(t)}_update(t){super._update({...t,validate:t.mask})}};class Et extends pt{constructor(t){super({...Et.DEFAULTS,...t})}updateOptions(t){super.updateOptions(t)}_update(t){super._update(t),this._updateRegExps()}_updateRegExps(){const t="^"+(this.allowNegative?"[+|\\-]?":""),e=(this.scale?"("+tt(this.radix)+"\\d{0,"+this.scale+"})?":"")+"$";this._numberRegExp=new RegExp(t+"\\d*"+e),this._mapToRadixRegExp=new RegExp("["+this.mapToRadix.map(tt).join("")+"]","g"),this._thousandsSeparatorRegExp=new RegExp(tt(this.thousandsSeparator),"g")}_removeThousandsSeparators(t){return t.replace(this._thousandsSeparatorRegExp,"")}_insertThousandsSeparators(t){const e=t.split(this.radix);return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,this.thousandsSeparator),e.join(this.radix)}doPrepareChar(t,e){void 0===e&&(e={});const[s,i]=super.doPrepareChar(this._removeThousandsSeparators(this.scale&&this.mapToRadix.length&&(e.input&&e.raw||!e.input&&!e.raw)?t.replace(this._mapToRadixRegExp,this.radix):t),e);return t&&!s&&(i.skip=!0),!s||this.allowPositive||this.value||"-"===s||i.aggregate(this._appendChar("-")),[s,i]}_separatorsCount(t,e){void 0===e&&(e=!1);let s=0;for(let i=0;i<t;++i)this._value.indexOf(this.thousandsSeparator,i)===i&&(++s,e&&(t+=this.thousandsSeparator.length));return s}_separatorsCountFromSlice(t){return void 0===t&&(t=this._value),this._separatorsCount(this._removeThousandsSeparators(t).length,!0)}extractInput(t,e,s){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),[t,e]=this._adjustRangeWithSeparators(t,e),this._removeThousandsSeparators(super.extractInput(t,e,s))}_appendCharRaw(t,e){if(void 0===e&&(e={}),!this.thousandsSeparator)return super._appendCharRaw(t,e);const s=e.tail&&e._beforeTailState?e._beforeTailState._value:this._value,i=this._separatorsCountFromSlice(s);this._value=this._removeThousandsSeparators(this.value);const n=super._appendCharRaw(t,e);this._value=this._insertThousandsSeparators(this._value);const a=e.tail&&e._beforeTailState?e._beforeTailState._value:this._value,r=this._separatorsCountFromSlice(a);return n.tailShift+=(r-i)*this.thousandsSeparator.length,n.skip=!n.rawInserted&&t===this.thousandsSeparator,n}_findSeparatorAround(t){if(this.thousandsSeparator){const e=t-this.thousandsSeparator.length+1,s=this.value.indexOf(this.thousandsSeparator,e);if(s<=t)return s}return-1}_adjustRangeWithSeparators(t,e){const s=this._findSeparatorAround(t);s>=0&&(t=s);const i=this._findSeparatorAround(e);return i>=0&&(e=i+this.thousandsSeparator.length),[t,e]}remove(t,e){void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),[t,e]=this._adjustRangeWithSeparators(t,e);const s=this.value.slice(0,t),i=this.value.slice(e),n=this._separatorsCount(s.length);this._value=this._insertThousandsSeparators(this._removeThousandsSeparators(s+i));const a=this._separatorsCountFromSlice(s);return new dt({tailShift:(a-n)*this.thousandsSeparator.length})}nearestInputPos(t,e){if(!this.thousandsSeparator)return t;switch(e){case W.NONE:case W.LEFT:case W.FORCE_LEFT:{const s=this._findSeparatorAround(t-1);if(s>=0){const i=s+this.thousandsSeparator.length;if(t<i||this.value.length<=i||e===W.FORCE_LEFT)return s}break}case W.RIGHT:case W.FORCE_RIGHT:{const e=this._findSeparatorAround(t);if(e>=0)return e+this.thousandsSeparator.length}}return t}doValidate(t){let e=Boolean(this._removeThousandsSeparators(this.value).match(this._numberRegExp));if(e){const t=this.number;e=e&&!isNaN(t)&&(null==this.min||this.min>=0||this.min<=this.number)&&(null==this.max||this.max<=0||this.number<=this.max)}return e&&super.doValidate(t)}doCommit(){if(this.value){const t=this.number;let e=t;null!=this.min&&(e=Math.max(e,this.min)),null!=this.max&&(e=Math.min(e,this.max)),e!==t&&(this.unmaskedValue=this.format(e,this));let s=this.value;this.normalizeZeros&&(s=this._normalizeZeros(s)),this.padFractionalZeros&&this.scale>0&&(s=this._padFractionalZeros(s)),this._value=s}super.doCommit()}_normalizeZeros(t){const e=this._removeThousandsSeparators(t).split(this.radix);return e[0]=e[0].replace(/^(\D*)(0*)(\d*)/,((t,e,s,i)=>e+i)),t.length&&!/\d$/.test(e[0])&&(e[0]=e[0]+"0"),e.length>1&&(e[1]=e[1].replace(/0*$/,""),e[1].length||(e.length=1)),this._insertThousandsSeparators(e.join(this.radix))}_padFractionalZeros(t){if(!t)return t;const e=t.split(this.radix);return e.length<2&&e.push(""),e[1]=e[1].padEnd(this.scale,"0"),e.join(this.radix)}doSkipInvalid(t,e,s){void 0===e&&(e={});const i=0===this.scale&&t!==this.thousandsSeparator&&(t===this.radix||t===Et.UNMASKED_RADIX||this.mapToRadix.includes(t));return super.doSkipInvalid(t,e,s)&&!i}get unmaskedValue(){return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix,Et.UNMASKED_RADIX)}set unmaskedValue(t){super.unmaskedValue=t}get typedValue(){return this.parse(this.unmaskedValue,this)}set typedValue(t){this.rawInputValue=this.format(t,this).replace(Et.UNMASKED_RADIX,this.radix)}get number(){return this.typedValue}set number(t){this.typedValue=t}get allowNegative(){return null!=this.min&&this.min<0||null!=this.max&&this.max<0}get allowPositive(){return null!=this.min&&this.min>0||null!=this.max&&this.max>0}typedValueEquals(t){return(super.typedValueEquals(t)||Et.EMPTY_VALUES.includes(t)&&Et.EMPTY_VALUES.includes(this.typedValue))&&!(0===t&&""===this.value)}}Et.UNMASKED_RADIX=".",Et.EMPTY_VALUES=[...pt.EMPTY_VALUES,0],Et.DEFAULTS={mask:Number,radix:",",thousandsSeparator:"",mapToRadix:[Et.UNMASKED_RADIX],min:Number.MIN_SAFE_INTEGER,max:Number.MAX_SAFE_INTEGER,scale:2,normalizeZeros:!0,padFractionalZeros:!1,parse:Number,format:t=>t.toLocaleString("en-US",{useGrouping:!1,maximumFractionDigits:20})},it.MaskedNumber=Et;const At={MASKED:"value",UNMASKED:"unmaskedValue",TYPED:"typedValue"};function Ct(t,e,s){void 0===e&&(e=At.MASKED),void 0===s&&(s=At.MASKED);const i=rt(t);return t=>i.runIsolated((i=>(i[e]=t,i[s])))}it.PIPE_TYPE=At,it.createPipe=Ct,it.pipe=function(t,e,s,i){return Ct(e,s,i)(t)};try{globalThis.IMask=it}catch{}class bt{constructor(){this.setFieldMask()}setFieldMask(){const t=document.querySelector("#woocommerce_vindi-pagamentos-credit_installments_value");t&&it(t,{mask:"R$00,00"})}}class St{constructor(){this.showPasswordContent(),this.createExportButton(),this.addPaymentLinkButtonOnSettings(),this.addPaymentLinkButtonOnOrders(),this.addPaymentLinkButtonOnGateways()}addPaymentLinkButtonOnSettings(){if(document.querySelector("#vindi-pagamentos-token")){const t=document.querySelector("#wvp-export-btn");this.createPaymentLinkButton(t,["components-button","woocommerce-save-button","is-primary"])}}addPaymentLinkButtonOnOrders(){const t=document.querySelector("input[name=post_type]");if(t&&"shop_order"===t.value){const t=document.querySelector(".page-title-action");this.createPaymentLinkButton(t,["button-primary","page-title-action"])}}addPaymentLinkButtonOnGateways(){["billet","credit","pix","bolepix","transfer"].forEach((t=>{const e=document.querySelector(`#woocommerce_vindi-pagamentos-${t}_enabled`);if(e&&e.checked){const e=document.querySelector("#mainform > .submit > button");this.createPaymentLinkButton(e,["woocommerce-save-button","is-secondary","components-button"],{gateway:`vindi-pagamentos-${t}`})}}))}createPaymentLinkButton(t,e=[],s={}){if(t){const i=document.createElement("a");i.setAttribute("target","_blank"),i.setAttribute("id","wvp-payment-link-btn"),i.setAttribute("href",`${location.origin}/wp-admin/post-new.php?${this.getUrlParams({post_type:"shop_order","vindi-payment-link":!0,...s})}`),i.classList.add(...e),i.innerText="Gerar Link de Pagamento",t.after(i)}}getUrlParams(t){const e={};for(const s in t)Object.hasOwnProperty.call(t,s)&&t[s]&&(e[s]=t[s]);return new URLSearchParams(e).toString()}showPasswordContent(){const t=document.querySelector("#vindi-pagamentos-token");t&&(t.addEventListener("focusin",(()=>{t.setAttribute("type","text")})),t.addEventListener("focusout",(()=>{t.setAttribute("type","password")})))}createExportButton(){if(document.querySelector("#vindi-pagamentos-token")){const t=document.createElement("a");t.setAttribute("id","wvp-export-btn"),t.classList.add("wvp-export-btn","woocommerce-save-button","components-button","is-secondary"),t.innerText="Exportar Configurações";document.querySelector("#mainform > .submit").appendChild(t),this.exportSettings(t)}}exportSettings(t){t.addEventListener("click",(()=>{this.getSettingsContent()}))}getSettingsContent(){const t=new FormData;t.append("action","export_settings"),fetch(`${window.location.origin}/wp-admin/admin-ajax.php`,{method:"POST",body:t}).then((t=>t.json())).then((t=>{this.downloadSettingsFile(JSON.stringify(t.content,null,4)),setTimeout((()=>{window.location.reload()}),500)}))}downloadSettingsFile(t){const e=new File([t],"settings.json",{type:"application/json"}),s=URL.createObjectURL(e),i=document.createElement("a");i&&(i.setAttribute("href",s),i.setAttribute("download","settings.json"),document.body.appendChild(i),i.click(),document.body.removeChild(i))}}class xt{constructor(){this.handleManualRenewal()}handleManualRenewal(){const t=document.querySelector("#manual-renewal-button"),e=document.querySelector("#manual-renewal-subscription");t&&e&&t.addEventListener("click",(()=>{const s=new FormData;s.append("action","manual_renewal"),s.append("subscription",e.value),this.setLoader(),t.setAttribute("disabled",!0),fetch(ajaxurl,{method:"POST",body:s}).then((t=>t.json())).then((t=>{t.status&&"success"==t.status&&window.location.reload()}))}))}setLoader(t=!0){const e=document.querySelector("#manual-renewal-form .loader");e&&(t?e.classList.add("active"):e.classList.remove("active"))}}class wt{constructor(){this.handleRetryRenewal()}handleRetryRenewal(){const t=document.querySelector("#vindi-retry-renewal-button"),e=document.querySelector("#vindi-retry-renewal-order"),s=document.querySelector("#vindi_retry_renewal_nonce");t&&e&&s&&t.addEventListener("click",(i=>{const n=new FormData;n.append("action","vindi_retry_renewal"),n.append("order",e.value),n.append("nonce",s.value),this.setLoader(),t.setAttribute("disabled",!0),fetch(ajaxurl,{method:"POST",body:n}).then((t=>t.json())).then((t=>{t.status&&"success"==t.status&&window.location.reload()}))}))}setLoader(t=!0){const e=document.querySelector("#vindi-retry-renewal-form .loader");e&&(t?e.classList.add("active"):e.classList.remove("active"))}}class Bt{constructor(t){this.enableField=document.querySelector(`#woocommerce_vindi-pagamentos-${t}_discount`),this.showTagField=document.querySelector("#vindi-pagamentos-show_discount_text"),this.enableField&&(this.discountTypeField=document.querySelector(`#woocommerce_vindi-pagamentos-${t}_discount_type`).closest("tr"),this.discountValueField=document.querySelector(`#woocommerce_vindi-pagamentos-${t}_discount_value`).closest("tr")),this.showTagField&&(this.textColorField=document.querySelector("#vindi-pagamentos-text_color").closest("tr")),this.init()}init(){this.enableField&&(this.toggleDiscountFields(),this.enableField.addEventListener("change",(()=>{this.toggleDiscountFields()}))),this.showTagField&&(this.toggleColorFields(),this.showTagField.addEventListener("change",(()=>{this.toggleColorFields()})))}toggleDiscountFields(){const t=this.enableField.checked;this.discountTypeField.style.display=t?"table-row":"none",this.discountValueField.style.display=t?"table-row":"none"}toggleColorFields(){const t=this.showTagField.checked;this.backgroundColorField.style.display=t?"table-row":"none",this.textColorField.style.display=t?"table-row":"none"}}jQuery(document).ready((function(t){new Bt("bolepix"),new Bt("pix")}));class Dt{constructor(){this.init()}init(){this.setupDefaultSelection(),this.setupEventListeners()}setupDefaultSelection(){const t=document.querySelectorAll('input[name="payment_profile"]'),e=Array.from(t).some((t=>t.checked));t.length>0&&!e&&(t[0].checked=!0)}setupEventListeners(){const t=document.getElementById("update-payment-profile-button");t&&t.addEventListener("click",this.handleUpdateProfile.bind(this))}handleUpdateProfile(t){const e=document.getElementById("payment-profile-subscription").value,s=document.querySelector('input[name="payment_profile"]:checked'),i=document.querySelector(".loader"),n=document.getElementById("update-message");if(!s)return n.textContent=vindiTranslations.selectCard||"Por favor, selecione um cartão.",n.classList.add("error"),void n.classList.remove("success");t.currentTarget.disabled=!0,i&&(i.style.display="block"),n.textContent="",n.classList.remove("error","success");const a=new FormData;a.append("action","update_payment_profile"),a.append("subscription",e),a.append("payment_profile",s.value),fetch(ajaxurl,{method:"POST",body:a}).then((t=>t.json())).then((t=>{"success"===t.status?(n.textContent=t.message||vindiTranslations.cardUpdated||"Cartão atualizado com sucesso!",n.classList.add("success"),document.querySelectorAll(".vindi-card-row").forEach((t=>{t.classList.remove("selected-card")})),s.closest(".vindi-card-row").classList.add("selected-card")):(n.textContent=t.message||vindiTranslations.updateError||"Erro ao atualizar cartão.",n.classList.add("error"))})).catch((()=>{n.textContent=vindiTranslations.requestError||"Erro ao processar requisição.",n.classList.add("error")})).finally((()=>{document.getElementById("update-payment-profile-button").disabled=!1,i&&(i.style.display="none")}))}}class Tt{constructor(){this.enableField=document.querySelector("#woocommerce_vindi-pagamentos-multi-payment_enable_multipayment_min_control"),this.minValueField=document.querySelector("#woocommerce_vindi-pagamentos-multi-payment_multipayment_min_amount").closest("tr"),this.init()}init(){this.enableField&&(this.toggleMinValueField(),this.enableField.addEventListener("change",(()=>{this.toggleMinValueField()})))}toggleMinValueField(){const t=this.enableField.checked;this.minValueField.style.display=t?"table-row":"none"}}var Mt={};class It{constructor(){this.currentStep=this.detectCurrentStep(),this.formData={},this.init()}detectCurrentStep(){const t=new URLSearchParams(window.location.search).get("page");return"vindi-wizard-register"===t?"register":"vindi-wizard-address"===t?"address":"register"}init(){"address"===this.currentStep&&this.loadSavedData(),this.setupPersonTypeToggle(),this.setupFormSubmission(),this.setupBackButton(),this.setupDocumentMasks()}setupPersonTypeToggle(){const t=document.getElementById("vindi-person-type"),e=document.getElementById("cpf-field"),s=document.getElementById("cnpj-field"),i=document.getElementById("company-field");t&&t.addEventListener("change",(t=>{"1"===t.target.value?(e.style.display="block",s.style.display="none",i.style.display="none"):(e.style.display="none",s.style.display="block",i.style.display="block")}))}setupDocumentMasks(){const t=document.querySelector('input[name="vindi-pagamentos-cpf"]'),e=document.querySelector('input[name="vindi-pagamentos-cnpj"]'),s=document.querySelector('input[name="vindi-pagamentos-telefone"]'),i=document.querySelector('input[name="vindi-pagamentos-cep"]');t&&"undefined"!=typeof IMask&&IMask(t,{mask:"000.000.000-00"}),e&&"undefined"!=typeof IMask&&IMask(e,{mask:"00.000.000/0000-00"}),s&&"undefined"!=typeof IMask&&IMask(s,{mask:"(00) 0 0000-0000"}),i&&"undefined"!=typeof IMask&&IMask(i,{mask:"00000-000"})}setupFormSubmission(){const t=document.querySelector(".vindi-wizard-btn");t&&t.addEventListener("click",(t=>{t.preventDefault(),this.handleFormSubmit()}))}setupBackButton(){const t=document.querySelector(".vindi-wizard-back-btn");t&&t.addEventListener("click",(t=>{t.preventDefault(),this.handleBackStep()}))}validateForm(){return"register"===this.currentStep?this.validateRegisterStep():"address"===this.currentStep&&this.validateAddressStep()}validateRegisterStep(){const t=["vindi-pagamentos-nome","vindi-pagamentos-email","vindi-pagamentos-telefone"],e=document.querySelector('select[name="vindi-pagamentos-person-type"]')?.value;"1"===e?t.push("vindi-pagamentos-cpf"):"2"===e&&t.push("vindi-pagamentos-cnpj","vindi-pagamentos-social-name");const s=document.querySelector('input[name="vindi-pagamentos-accept-terms"]')?.checked;if(!s)return alert("Você deve aceitar os termos e condições para continuar."),!1;for(const e of t){const t=document.querySelector(`input[name="${e}"], select[name="${e}"]`);if(!t||!t.value.trim())return alert(`Por favor, preencha o campo: ${this.getFieldLabel(e)}`),t?.focus(),!1}return!0}validateAddressStep(){const t=["vindi-pagamentos-cep","vindi-pagamentos-endereco","vindi-pagamentos-numero","vindi-pagamentos-bairro","vindi-pagamentos-cidade","vindi-pagamentos-estado"];for(const e of t){const t=document.querySelector(`input[name="${e}"], select[name="${e}"]`);if(!t||!t.value.trim())return alert(`Por favor, preencha o campo: ${this.getFieldLabel(e)}`),t?.focus(),!1}return!0}getFieldLabel(t){return{"vindi-pagamentos-nome":"Nome","vindi-pagamentos-email":"E-mail","vindi-pagamentos-telefone":"Telefone","vindi-pagamentos-cpf":"CPF","vindi-pagamentos-cnpj":"CNPJ","vindi-pagamentos-social-name":"Razão Social","vindi-pagamentos-cep":"CEP","vindi-pagamentos-endereco":"Endereço","vindi-pagamentos-numero":"Número","vindi-pagamentos-bairro":"Bairro","vindi-pagamentos-cidade":"Cidade","vindi-pagamentos-estado":"Estado"}[t]||t}collectFormData(){const t={};return document.querySelectorAll('input[name^="vindi-pagamentos-"], select[name^="vindi-pagamentos-"]').forEach((e=>{"checkbox"===e.type?t[e.name]=e.checked:t[e.name]=e.value})),t}async handleFormSubmit(){if(!this.validateForm())return;const t=this.collectFormData();this.formData={...this.formData,...t},"register"===this.currentStep?this.navigateToAddressStep():"address"===this.currentStep&&await this.submitToAPI()}navigateToAddressStep(){localStorage.setItem("vindi-wizard-data",JSON.stringify(this.formData)),window.location.href=`${window.location.origin}/wp-admin/admin.php?page=vindi-wizard-address`}async submitToAPI(){try{const t=await this.callYapayAPI();t.success?window.location.href=`${window.location.origin}/wp-admin/admin.php?page=vindi-wizard-success`:alert("Erro ao criar conta: "+t.message)}catch(t){console.error("Erro:",t),alert("Erro ao criar conta. Tente novamente.")}}async callYapayAPI(){const t=new FormData;t.append("action","vindi_create_user_account"),t.append("nonce",vindiWizardConfig.nonce),t.append("wizard_data",JSON.stringify(this.formData));const e=await fetch(vindiWizardConfig.ajaxUrl,{method:"POST",body:t});return await e.json()}handleBackStep(){"address"===this.currentStep?window.location.href=`${window.location.origin}/wp-admin/admin.php?page=vindi-wizard-register`:"register"===this.currentStep&&(window.location.href=`${window.location.origin}/wp-admin/admin.php?page=vindi-wizard-welcome`)}loadSavedData(){const t=localStorage.getItem("vindi-wizard-data");t&&(this.formData=JSON.parse(t))}}document.addEventListener("DOMContentLoaded",(()=>{new It})),document.addEventListener("DOMContentLoaded",(()=>{new St,new bt,new K,new Y,new xt,new wt,new Bt,new Dt,new Tt,new(t(Mt))}))})();1 (()=>{function t(t,e,s,i){Object.defineProperty(t,e,{get:s,set:i,enumerable:!0,configurable:!0})}var e,s,i={};t(i,"sprintf",(()=>e),(t=>e=t)),t(i,"vsprintf",(()=>s),(t=>s=t)),function(){"use strict";var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function i(e){return function(e,s){var n,a,r,u,o,l,h,d,c,p=1,m=e.length,g="";for(a=0;a<m;a++)if("string"==typeof e[a])g+=e[a];else if("object"==typeof e[a]){if((u=e[a]).keys)for(n=s[p],r=0;r<u.keys.length;r++){if(null==n)throw new Error(i('[sprintf] Cannot access property "%s" of undefined value "%s"',u.keys[r],u.keys[r-1]));n=n[u.keys[r]]}else n=u.param_no?s[u.param_no]:s[p++];if(t.not_type.test(u.type)&&t.not_primitive.test(u.type)&&n instanceof Function&&(n=n()),t.numeric_arg.test(u.type)&&"number"!=typeof n&&isNaN(n))throw new TypeError(i("[sprintf] expecting number but found %T",n));switch(t.number.test(u.type)&&(d=n>=0),u.type){case"b":n=parseInt(n,10).toString(2);break;case"c":n=String.fromCharCode(parseInt(n,10));break;case"d":case"i":n=parseInt(n,10);break;case"j":n=JSON.stringify(n,null,u.width?parseInt(u.width):0);break;case"e":n=u.precision?parseFloat(n).toExponential(u.precision):parseFloat(n).toExponential();break;case"f":n=u.precision?parseFloat(n).toFixed(u.precision):parseFloat(n);break;case"g":n=u.precision?String(Number(n.toPrecision(u.precision))):parseFloat(n);break;case"o":n=(parseInt(n,10)>>>0).toString(8);break;case"s":n=String(n),n=u.precision?n.substring(0,u.precision):n;break;case"t":n=String(!!n),n=u.precision?n.substring(0,u.precision):n;break;case"T":n=Object.prototype.toString.call(n).slice(8,-1).toLowerCase(),n=u.precision?n.substring(0,u.precision):n;break;case"u":n=parseInt(n,10)>>>0;break;case"v":n=n.valueOf(),n=u.precision?n.substring(0,u.precision):n;break;case"x":n=(parseInt(n,10)>>>0).toString(16);break;case"X":n=(parseInt(n,10)>>>0).toString(16).toUpperCase()}t.json.test(u.type)?g+=n:(!t.number.test(u.type)||d&&!u.sign?c="":(c=d?"+":"-",n=n.toString().replace(t.sign,"")),l=u.pad_char?"0"===u.pad_char?"0":u.pad_char.charAt(1):" ",h=u.width-(c+n).length,o=u.width&&h>0?l.repeat(h):"",g+=u.align?c+n+o:"0"===l?c+o+n:o+c+n)}return g}(function(e){if(a[e])return a[e];var s,i=e,n=[],r=0;for(;i;){if(null!==(s=t.text.exec(i)))n.push(s[0]);else if(null!==(s=t.modulo.exec(i)))n.push("%");else{if(null===(s=t.placeholder.exec(i)))throw new SyntaxError("[sprintf] unexpected placeholder");if(s[2]){r|=1;var u=[],o=s[2],l=[];if(null===(l=t.key.exec(o)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(u.push(l[1]);""!==(o=o.substring(l[0].length));)if(null!==(l=t.key_access.exec(o)))u.push(l[1]);else{if(null===(l=t.index_access.exec(o)))throw new SyntaxError("[sprintf] failed to parse named argument key");u.push(l[1])}s[2]=u}else r|=2;if(3===r)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");n.push({placeholder:s[0],param_no:s[1],keys:s[2],sign:s[3],pad_char:s[4],align:s[5],width:s[6],precision:s[7],type:s[8]})}i=i.substring(s[0].length)}return a[e]=n}(e),arguments)}function n(t,e){return i.apply(null,[t].concat(e||[]))}var a=Object.create(null);e=i,s=n,"undefined"!=typeof window&&(window.sprintf=i,window.vsprintf=n,"function"==typeof define&&define.amd&&define((function(){return{sprintf:i,vsprintf:n}})))}();!function(t,e){var s,i,n=0;function a(){var a,r,u=s,o=arguments.length;t:for(;u;){if(u.args.length===arguments.length){for(r=0;r<o;r++)if(u.args[r]!==arguments[r]){u=u.next;continue t}return u!==s&&(u===i&&(i=u.prev),u.prev.next=u.next,u.next&&(u.next.prev=u.prev),u.next=s,u.prev=null,s.prev=u,s=u),u.val}u=u.next}for(a=new Array(o),r=0;r<o;r++)a[r]=arguments[r];return u={args:a,val:t.apply(null,a)},s?(s.prev=u,u.next=s):i=u,n===e.maxSize?(i=i.prev).next=null:n++,s=u,u.val}e=e||{},a.clear=function(){s=null,i=null,n=0}}(console.error);var n,a,r,u;function o(t){for(var e,s,i,o,l=[],h=[];e=t.match(u);){for(s=e[0],(i=t.substr(0,e.index).trim())&&l.push(i);o=h.pop();){if(r[s]){if(r[s][0]===o){s=r[s][1]||s;break}}else if(a.indexOf(o)>=0||n[o]<n[s]){h.push(o);break}l.push(o)}r[s]||h.push(s),t=t.substr(e.index+s.length)}return(t=t.trim())&&l.push(t),l.concat(h.reverse())}n={"(":9,"!":8,"*":7,"/":7,"%":7,"+":6,"-":6,"<":5,"<=":5,">":5,">=":5,"==":4,"!=":4,"&&":3,"||":2,"?":1,"?:":1},a=["(","?"],r={")":["("],":":["?","?:"]},u=/<=|>=|==|!=|&&|\|\||\?:|\(|!|\*|\/|%|\+|-|<|>|\?|\)|:/;var l={"!":function(t){return!t},"*":function(t,e){return t*e},"/":function(t,e){return t/e},"%":function(t,e){return t%e},"+":function(t,e){return t+e},"-":function(t,e){return t-e},"<":function(t,e){return t<e},"<=":function(t,e){return t<=e},">":function(t,e){return t>e},">=":function(t,e){return t>=e},"==":function(t,e){return t===e},"!=":function(t,e){return t!==e},"&&":function(t,e){return t&&e},"||":function(t,e){return t||e},"?:":function(t,e,s){if(t)throw e;return s}};function h(t,e){var s,i,n,a,r,u,o=[];for(s=0;s<t.length;s++){if(r=t[s],a=l[r]){for(i=a.length,n=Array(i);i--;)n[i]=o.pop();try{u=a.apply(null,n)}catch(t){return t}}else u=e.hasOwnProperty(r)?e[r]:+r;o.push(u)}return o[0]}function d(t){var e=o(t);return function(t){return h(e,t)}}var c={contextDelimiter:"",onMissingKey:null};function p(t,e){var s;for(s in this.data=t,this.pluralForms={},this.options={},c)this.options[s]=void 0!==e&&s in e?e[s]:c[s]}p.prototype.getPluralForm=function(t,e){var s,i,n,a,r=this.pluralForms[t];return r||("function"!=typeof(n=(s=this.data[t][""])["Plural-Forms"]||s["plural-forms"]||s.plural_forms)&&(i=function(t){var e,s,i;for(e=t.split(";"),s=0;s<e.length;s++)if(0===(i=e[s].trim()).indexOf("plural="))return i.substr(7)}(s["Plural-Forms"]||s["plural-forms"]||s.plural_forms),a=d(i),n=function(t){return+a({n:t})}),r=this.pluralForms[t]=n),r(e)},p.prototype.dcnpgettext=function(t,e,s,i,n){var a,r,u;return a=void 0===n?0:this.getPluralForm(t,n),r=s,e&&(r=e+this.options.contextDelimiter+s),(u=this.data[t][r])&&u[a]?u[a]:(this.options.onMissingKey&&this.options.onMissingKey(s,t),0===a?s:i)};const m={plural_forms:t=>1===t?0:1},g=/^i18n\.(n?gettext|has_translation)(_|$)/;var f=function(t){return"string"!=typeof t||""===t?(console.error("The namespace must be a non-empty string."),!1):!!/^[a-zA-Z][a-zA-Z0-9_.\-\/]*$/.test(t)||(console.error("The namespace can only contain numbers, letters, dashes, periods, underscores and slashes."),!1)};var k=function(t){return"string"!=typeof t||""===t?(console.error("The hook name must be a non-empty string."),!1):/^__/.test(t)?(console.error("The hook name cannot begin with `__`."),!1):!!/^[a-zA-Z][a-zA-Z0-9_.-]*$/.test(t)||(console.error("The hook name can only contain numbers, letters, dashes, periods and underscores."),!1)};var v=function(t,e){return function(s,i,n,a=10){const r=t[e];if(!k(s))return;if(!f(i))return;if("function"!=typeof n)return void console.error("The hook callback must be a function.");if("number"!=typeof a)return void console.error("If specified, the hook priority must be a number.");const u={callback:n,priority:a,namespace:i};if(r[s]){const t=r[s].handlers;let e;for(e=t.length;e>0&&!(a>=t[e-1].priority);e--);e===t.length?t[e]=u:t.splice(e,0,u),r.__current.forEach((t=>{t.name===s&&t.currentIndex>=e&&t.currentIndex++}))}else r[s]={handlers:[u],runs:0};"hookAdded"!==s&&t.doAction("hookAdded",s,i,n,a)}};var _=function(t,e,s=!1){return function(i,n){const a=t[e];if(!k(i))return;if(!s&&!f(n))return;if(!a[i])return 0;let r=0;if(s)r=a[i].handlers.length,a[i]={runs:a[i].runs,handlers:[]};else{const t=a[i].handlers;for(let e=t.length-1;e>=0;e--)t[e].namespace===n&&(t.splice(e,1),r++,a.__current.forEach((t=>{t.name===i&&t.currentIndex>=e&&t.currentIndex--})))}return"hookRemoved"!==i&&t.doAction("hookRemoved",i,n),r}};var F=function(t,e){return function(s,i){const n=t[e];return void 0!==i?s in n&&n[s].handlers.some((t=>t.namespace===i)):s in n}};var y=function(t,e,s=!1){return function(i,...n){const a=t[e];a[i]||(a[i]={handlers:[],runs:0}),a[i].runs++;const r=a[i].handlers;if(!r||!r.length)return s?n[0]:void 0;const u={name:i,currentIndex:0};for(a.__current.push(u);u.currentIndex<r.length;){const t=r[u.currentIndex].callback.apply(null,n);s&&(n[0]=t),u.currentIndex++}return a.__current.pop(),s?n[0]:void 0}};var E=function(t,e){return function(){var s;const i=t[e];return null!==(s=i.__current[i.__current.length-1]?.name)&&void 0!==s?s:null}};var A=function(t,e){return function(s){const i=t[e];return void 0===s?void 0!==i.__current[0]:!!i.__current[0]&&s===i.__current[0].name}};var b=function(t,e){return function(s){const i=t[e];if(k(s))return i[s]&&i[s].runs?i[s].runs:0}};class C{constructor(){this.actions=Object.create(null),this.actions.__current=[],this.filters=Object.create(null),this.filters.__current=[],this.addAction=v(this,"actions"),this.addFilter=v(this,"filters"),this.removeAction=_(this,"actions"),this.removeFilter=_(this,"filters"),this.hasAction=F(this,"actions"),this.hasFilter=F(this,"filters"),this.removeAllActions=_(this,"actions",!0),this.removeAllFilters=_(this,"filters",!0),this.doAction=y(this,"actions"),this.applyFilters=y(this,"filters",!0),this.currentAction=E(this,"actions"),this.currentFilter=E(this,"filters"),this.doingAction=A(this,"actions"),this.doingFilter=A(this,"filters"),this.didAction=b(this,"actions"),this.didFilter=b(this,"filters")}}const S=new C,{addAction:w,addFilter:x,removeAction:B,removeFilter:D,hasAction:T,hasFilter:M,removeAllActions:I,removeAllFilters:V,doAction:P,applyFilters:L,currentAction:O,currentFilter:R,doingAction:N,doingFilter:q,didAction:j,didFilter:z,actions:U,filters:$}=S,H=((t,e,s)=>{const i=new p({}),n=new Set,a=()=>{n.forEach((t=>t()))},r=(t,e="default")=>{i.data[e]={...i.data[e],...t},i.data[e][""]={...m,...i.data[e]?.[""]},delete i.pluralForms[e]},u=(t,e)=>{r(t,e),a()},o=(t="default",e,s,n,a)=>(i.data[t]||r(void 0,t),i.dcnpgettext(t,e,s,n,a)),l=(t="default")=>t,h=(t,e,i)=>{let n=o(i,e,t);return s?(n=s.applyFilters("i18n.gettext_with_context",n,t,e,i),s.applyFilters("i18n.gettext_with_context_"+l(i),n,t,e,i)):n};if(t&&u(t,e),s){const t=t=>{g.test(t)&&a()};s.addAction("hookAdded","core/i18n",t),s.addAction("hookRemoved","core/i18n",t)}return{getLocaleData:(t="default")=>i.data[t],setLocaleData:u,addLocaleData:(t,e="default")=>{i.data[e]={...i.data[e],...t,"":{...m,...i.data[e]?.[""],...t?.[""]}},delete i.pluralForms[e],a()},resetLocaleData:(t,e)=>{i.data={},i.pluralForms={},u(t,e)},subscribe:t=>(n.add(t),()=>n.delete(t)),__:(t,e)=>{let i=o(e,void 0,t);return s?(i=s.applyFilters("i18n.gettext",i,t,e),s.applyFilters("i18n.gettext_"+l(e),i,t,e)):i},_x:h,_n:(t,e,i,n)=>{let a=o(n,void 0,t,e,i);return s?(a=s.applyFilters("i18n.ngettext",a,t,e,i,n),s.applyFilters("i18n.ngettext_"+l(n),a,t,e,i,n)):a},_nx:(t,e,i,n,a)=>{let r=o(a,n,t,e,i);return s?(r=s.applyFilters("i18n.ngettext_with_context",r,t,e,i,n,a),s.applyFilters("i18n.ngettext_with_context_"+l(a),r,t,e,i,n,a)):r},isRTL:()=>"rtl"===h("ltr","text direction"),hasTranslation:(t,e,n)=>{const a=e?e+""+t:t;let r=!!i.data?.[null!=n?n:"default"]?.[a];return s&&(r=s.applyFilters("i18n.has_translation",r,t,e,n),r=s.applyFilters("i18n.has_translation_"+l(n),r,t,e,n)),r}}})(void 0,void 0,S);H.getLocaleData.bind(H),H.setLocaleData.bind(H),H.resetLocaleData.bind(H),H.subscribe.bind(H),H.__.bind(H),H._x.bind(H),H._n.bind(H),H._nx.bind(H),H.isRTL.bind(H),H.hasTranslation.bind(H);class G{constructor(){this.openCheckoutFieldSection()}openCheckoutFieldSection(){const t=new URLSearchParams(location.href);if(t.has("vindi-payment-link")){document.querySelectorAll(".edit_address").forEach((t=>{t.style.display="block"})),t.has("gateway")&&this.updateLinkGateway(t.get("gateway"))}}updateLinkGateway(t){document.querySelector("#_payment_method").value=t}}class Y{constructor(){this.setEvents()}setEvents(){const t=document.querySelector("#wvp-tracking-save");t&&t.addEventListener("click",(t=>{t.preventDefault();const e=document.querySelector("#wvp-tracking-code"),s=document.querySelector("#wvp-tracking-url"),i=document.querySelector("#wvp-tracking-post");e&&i&&this.saveTrackingCode(e.value,s.value,i.value)}))}saveTrackingCode(t,e,s){const i=document.querySelector(".wvp-tracking");i?.classList.remove("wvp-tracking-hidden");const n=new FormData;n.append("action","save_tracking_code"),n.append("code",t),n.append("url",e),n.append("post",s),ajaxurl&&fetch(ajaxurl,{method:"POST",body:n}).then((t=>t.json())).then((t=>{t.status&&(i?.classList.add("wvp-tracking-hidden"),"success"==t.status?window.location.reload():t.message&&this.handleMessage(t.message))}))}handleMessage(t){const e=document.querySelector(".wvp-tracking-edit-message");e?.classList.remove("wvp-tracking-edit-message-hidden");const s=document.querySelector("#wvp-tracking-message");s&&(s.innerHTML=t)}}function K(t){return"string"==typeof t||t instanceof String}function Z(t){var e;return"object"==typeof t&&null!=t&&"Object"===(null==t||null==(e=t.constructor)?void 0:e.name)}function X(t,e){return Array.isArray(e)?X(t,((t,s)=>e.includes(s))):Object.entries(t).reduce(((t,s)=>{let[i,n]=s;return e(n,i)&&(t[i]=n),t}),{})}const J={NONE:"NONE",LEFT:"LEFT",FORCE_LEFT:"FORCE_LEFT",RIGHT:"RIGHT",FORCE_RIGHT:"FORCE_RIGHT"};function W(t){switch(t){case J.LEFT:return J.FORCE_LEFT;case J.RIGHT:return J.FORCE_RIGHT;default:return t}}function Q(t){return t.replace(/([.*+?^=!:${}()|[\]/\\])/g,"\\$1")}function tt(t,e){if(e===t)return!0;const s=Array.isArray(e),i=Array.isArray(t);let n;if(s&&i){if(e.length!=t.length)return!1;for(n=0;n<e.length;n++)if(!tt(e[n],t[n]))return!1;return!0}if(s!=i)return!1;if(e&&t&&"object"==typeof e&&"object"==typeof t){const s=e instanceof Date,i=t instanceof Date;if(s&&i)return e.getTime()==t.getTime();if(s!=i)return!1;const a=e instanceof RegExp,r=t instanceof RegExp;if(a&&r)return e.toString()==t.toString();if(a!=r)return!1;const u=Object.keys(e);for(n=0;n<u.length;n++)if(!Object.prototype.hasOwnProperty.call(t,u[n]))return!1;for(n=0;n<u.length;n++)if(!tt(t[u[n]],e[u[n]]))return!1;return!0}return!(!e||!t||"function"!=typeof e||"function"!=typeof t)&&e.toString()===t.toString()}class et{constructor(t){for(Object.assign(this,t);this.value.slice(0,this.startChangePos)!==this.oldValue.slice(0,this.startChangePos);)--this.oldSelection.start}get startChangePos(){return Math.min(this.cursorPos,this.oldSelection.start)}get insertedCount(){return this.cursorPos-this.startChangePos}get inserted(){return this.value.substr(this.startChangePos,this.insertedCount)}get removedCount(){return Math.max(this.oldSelection.end-this.startChangePos||this.oldValue.length-this.value.length,0)}get removed(){return this.oldValue.substr(this.startChangePos,this.removedCount)}get head(){return this.value.substring(0,this.startChangePos)}get tail(){return this.value.substring(this.startChangePos+this.insertedCount)}get removeDirection(){return!this.removedCount||this.insertedCount?J.NONE:this.oldSelection.end!==this.cursorPos&&this.oldSelection.start!==this.cursorPos||this.oldSelection.end!==this.oldSelection.start?J.LEFT:J.RIGHT}}function st(t,e){return new st.InputMask(t,e)}function it(t){if(null==t)throw new Error("mask property should be defined");return t instanceof RegExp?st.MaskedRegExp:K(t)?st.MaskedPattern:t===Date?st.MaskedDate:t===Number?st.MaskedNumber:Array.isArray(t)||t===Array?st.MaskedDynamic:st.Masked&&t.prototype instanceof st.Masked?t:st.Masked&&t instanceof st.Masked?t.constructor:t instanceof Function?st.MaskedFunction:(console.warn("Mask not found for mask",t),st.Masked)}function nt(t){if(!t)throw new Error("Options in not defined");if(st.Masked){if(t.prototype instanceof st.Masked)return{mask:t};const{mask:e,...s}=t instanceof st.Masked?{mask:t}:Z(t)&&t.mask instanceof st.Masked?t:{};if(e){const t=e.mask;return{...X(e,((t,e)=>!e.startsWith("_"))),mask:e.constructor,_mask:t,...s}}}return Z(t)?{...t}:{mask:t}}function at(t){if(st.Masked&&t instanceof st.Masked)return t;const e=nt(t),s=it(e.mask);if(!s)throw new Error("Masked class is not found for provided mask, appropriate module needs to be imported manually before creating mask.");return e.mask===s&&delete e.mask,e._mask&&(e.mask=e._mask,delete e._mask),new s(e)}st.createMask=at;class rt{get selectionStart(){let t;try{t=this._unsafeSelectionStart}catch{}return null!=t?t:this.value.length}get selectionEnd(){let t;try{t=this._unsafeSelectionEnd}catch{}return null!=t?t:this.value.length}select(t,e){if(null!=t&&null!=e&&(t!==this.selectionStart||e!==this.selectionEnd))try{this._unsafeSelect(t,e)}catch{}}get isActive(){return!1}}st.MaskElement=rt;class ut extends rt{constructor(t){super(),this.input=t,this._handlers={}}get rootElement(){var t,e,s;return null!=(t=null==(e=(s=this.input).getRootNode)?void 0:e.call(s))?t:document}get isActive(){return this.input===this.rootElement.activeElement}bindEvents(t){Object.keys(t).forEach((e=>this._toggleEventHandler(ut.EVENTS_MAP[e],t[e])))}unbindEvents(){Object.keys(this._handlers).forEach((t=>this._toggleEventHandler(t)))}_toggleEventHandler(t,e){this._handlers[t]&&(this.input.removeEventListener(t,this._handlers[t]),delete this._handlers[t]),e&&(this.input.addEventListener(t,e),this._handlers[t]=e)}}ut.EVENTS_MAP={selectionChange:"keydown",input:"input",drop:"drop",click:"click",focus:"focus",commit:"blur"},st.HTMLMaskElement=ut;class ot extends ut{constructor(t){super(t),this.input=t,this._handlers={}}get _unsafeSelectionStart(){return null!=this.input.selectionStart?this.input.selectionStart:this.value.length}get _unsafeSelectionEnd(){return this.input.selectionEnd}_unsafeSelect(t,e){this.input.setSelectionRange(t,e)}get value(){return this.input.value}set value(t){this.input.value=t}}st.HTMLMaskElement=ut;class lt extends ut{get _unsafeSelectionStart(){const t=this.rootElement,e=t.getSelection&&t.getSelection(),s=e&&e.anchorOffset,i=e&&e.focusOffset;return null==i||null==s||s<i?s:i}get _unsafeSelectionEnd(){const t=this.rootElement,e=t.getSelection&&t.getSelection(),s=e&&e.anchorOffset,i=e&&e.focusOffset;return null==i||null==s||s>i?s:i}_unsafeSelect(t,e){if(!this.rootElement.createRange)return;const s=this.rootElement.createRange();s.setStart(this.input.firstChild||this.input,t),s.setEnd(this.input.lastChild||this.input,e);const i=this.rootElement,n=i.getSelection&&i.getSelection();n&&(n.removeAllRanges(),n.addRange(s))}get value(){return this.input.textContent||""}set value(t){this.input.textContent=t}}st.HTMLContenteditableMaskElement=lt;st.InputMask=class{constructor(t,e){this.el=t instanceof rt?t:t.isContentEditable&&"INPUT"!==t.tagName&&"TEXTAREA"!==t.tagName?new lt(t):new ot(t),this.masked=at(e),this._listeners={},this._value="",this._unmaskedValue="",this._saveSelection=this._saveSelection.bind(this),this._onInput=this._onInput.bind(this),this._onChange=this._onChange.bind(this),this._onDrop=this._onDrop.bind(this),this._onFocus=this._onFocus.bind(this),this._onClick=this._onClick.bind(this),this.alignCursor=this.alignCursor.bind(this),this.alignCursorFriendly=this.alignCursorFriendly.bind(this),this._bindEvents(),this.updateValue(),this._onChange()}maskEquals(t){var e;return null==t||(null==(e=this.masked)?void 0:e.maskEquals(t))}get mask(){return this.masked.mask}set mask(t){if(this.maskEquals(t))return;if(!(t instanceof st.Masked)&&this.masked.constructor===it(t))return void this.masked.updateOptions({mask:t});const e=t instanceof st.Masked?t:at({mask:t});e.unmaskedValue=this.masked.unmaskedValue,this.masked=e}get value(){return this._value}set value(t){this.value!==t&&(this.masked.value=t,this.updateControl(),this.alignCursor())}get unmaskedValue(){return this._unmaskedValue}set unmaskedValue(t){this.unmaskedValue!==t&&(this.masked.unmaskedValue=t,this.updateControl(),this.alignCursor())}get typedValue(){return this.masked.typedValue}set typedValue(t){this.masked.typedValueEquals(t)||(this.masked.typedValue=t,this.updateControl(),this.alignCursor())}get displayValue(){return this.masked.displayValue}_bindEvents(){this.el.bindEvents({selectionChange:this._saveSelection,input:this._onInput,drop:this._onDrop,click:this._onClick,focus:this._onFocus,commit:this._onChange})}_unbindEvents(){this.el&&this.el.unbindEvents()}_fireEvent(t,e){const s=this._listeners[t];s&&s.forEach((t=>t(e)))}get selectionStart(){return this._cursorChanging?this._changingCursorPos:this.el.selectionStart}get cursorPos(){return this._cursorChanging?this._changingCursorPos:this.el.selectionEnd}set cursorPos(t){this.el&&this.el.isActive&&(this.el.select(t,t),this._saveSelection())}_saveSelection(){this.displayValue!==this.el.value&&console.warn("Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly."),this._selection={start:this.selectionStart,end:this.cursorPos}}updateValue(){this.masked.value=this.el.value,this._value=this.masked.value}updateControl(){const t=this.masked.unmaskedValue,e=this.masked.value,s=this.displayValue,i=this.unmaskedValue!==t||this.value!==e;this._unmaskedValue=t,this._value=e,this.el.value!==s&&(this.el.value=s),i&&this._fireChangeEvents()}updateOptions(t){const{mask:e,...s}=t,i=!this.maskEquals(e),n=!tt(this.masked,s);i&&(this.mask=e),n&&this.masked.updateOptions(s),(i||n)&&this.updateControl()}updateCursor(t){null!=t&&(this.cursorPos=t,this._delayUpdateCursor(t))}_delayUpdateCursor(t){this._abortUpdateCursor(),this._changingCursorPos=t,this._cursorChanging=setTimeout((()=>{this.el&&(this.cursorPos=this._changingCursorPos,this._abortUpdateCursor())}),10)}_fireChangeEvents(){this._fireEvent("accept",this._inputEvent),this.masked.isComplete&&this._fireEvent("complete",this._inputEvent)}_abortUpdateCursor(){this._cursorChanging&&(clearTimeout(this._cursorChanging),delete this._cursorChanging)}alignCursor(){this.cursorPos=this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos,J.LEFT))}alignCursorFriendly(){this.selectionStart===this.cursorPos&&this.alignCursor()}on(t,e){return this._listeners[t]||(this._listeners[t]=[]),this._listeners[t].push(e),this}off(t,e){if(!this._listeners[t])return this;if(!e)return delete this._listeners[t],this;const s=this._listeners[t].indexOf(e);return s>=0&&this._listeners[t].splice(s,1),this}_onInput(t){if(this._inputEvent=t,this._abortUpdateCursor(),!this._selection)return this.updateValue();const e=new et({value:this.el.value,cursorPos:this.cursorPos,oldValue:this.displayValue,oldSelection:this._selection}),s=this.masked.rawInputValue,i=this.masked.splice(e.startChangePos,e.removed.length,e.inserted,e.removeDirection,{input:!0,raw:!0}).offset,n=s===this.masked.rawInputValue?e.removeDirection:J.NONE;let a=this.masked.nearestInputPos(e.startChangePos+i,n);n!==J.NONE&&(a=this.masked.nearestInputPos(a,J.NONE)),this.updateControl(),this.updateCursor(a),delete this._inputEvent}_onChange(){this.displayValue!==this.el.value&&this.updateValue(),this.masked.doCommit(),this.updateControl(),this._saveSelection()}_onDrop(t){t.preventDefault(),t.stopPropagation()}_onFocus(t){this.alignCursorFriendly()}_onClick(t){this.alignCursorFriendly()}destroy(){this._unbindEvents(),this._listeners.length=0,delete this.el}};class ht{static normalize(t){return Array.isArray(t)?t:[t,new ht]}constructor(t){Object.assign(this,{inserted:"",rawInserted:"",skip:!1,tailShift:0},t)}aggregate(t){return this.rawInserted+=t.rawInserted,this.skip=this.skip||t.skip,this.inserted+=t.inserted,this.tailShift+=t.tailShift,this}get offset(){return this.tailShift+this.inserted.length}}st.ChangeDetails=ht;class dt{constructor(t,e,s){void 0===t&&(t=""),void 0===e&&(e=0),this.value=t,this.from=e,this.stop=s}toString(){return this.value}extend(t){this.value+=String(t)}appendTo(t){return t.append(this.toString(),{tail:!0}).aggregate(t._appendPlaceholder())}get state(){return{value:this.value,from:this.from,stop:this.stop}}set state(t){Object.assign(this,t)}unshift(t){if(!this.value.length||null!=t&&this.from>=t)return"";const e=this.value[0];return this.value=this.value.slice(1),e}shift(){if(!this.value.length)return"";const t=this.value[this.value.length-1];return this.value=this.value.slice(0,-1),t}}class ct{constructor(t){this._value="",this._update({...ct.DEFAULTS,...t}),this._initialized=!0}updateOptions(t){Object.keys(t).length&&this.withValueRefresh(this._update.bind(this,t))}_update(t){Object.assign(this,t)}get state(){return{_value:this.value,_rawInputValue:this.rawInputValue}}set state(t){this._value=t._value}reset(){this._value=""}get value(){return this._value}set value(t){this.resolve(t,{input:!0})}resolve(t,e){void 0===e&&(e={input:!0}),this.reset(),this.append(t,e,""),this.doCommit()}get unmaskedValue(){return this.value}set unmaskedValue(t){this.resolve(t,{})}get typedValue(){return this.parse?this.parse(this.value,this):this.unmaskedValue}set typedValue(t){this.format?this.value=this.format(t,this):this.unmaskedValue=String(t)}get rawInputValue(){return this.extractInput(0,this.displayValue.length,{raw:!0})}set rawInputValue(t){this.resolve(t,{raw:!0})}get displayValue(){return this.value}get isComplete(){return!0}get isFilled(){return this.isComplete}nearestInputPos(t,e){return t}totalInputPositions(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),Math.min(this.displayValue.length,e-t)}extractInput(t,e,s){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),this.displayValue.slice(t,e)}extractTail(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),new dt(this.extractInput(t,e),t)}appendTail(t){return K(t)&&(t=new dt(String(t))),t.appendTo(this)}_appendCharRaw(t,e){return t?(this._value+=t,new ht({inserted:t,rawInserted:t})):new ht}_appendChar(t,e,s){void 0===e&&(e={});const i=this.state;let n;if([t,n]=this.doPrepareChar(t,e),n=n.aggregate(this._appendCharRaw(t,e)),n.inserted){let t,a=!1!==this.doValidate(e);if(a&&null!=s){const e=this.state;!0===this.overwrite&&(t=s.state,s.unshift(this.displayValue.length-n.tailShift));let i=this.appendTail(s);a=i.rawInserted===s.toString(),a&&i.inserted||"shift"!==this.overwrite||(this.state=e,t=s.state,s.shift(),i=this.appendTail(s),a=i.rawInserted===s.toString()),a&&i.inserted&&(this.state=e)}a||(n=new ht,this.state=i,s&&t&&(s.state=t))}return n}_appendPlaceholder(){return new ht}_appendEager(){return new ht}append(t,e,s){if(!K(t))throw new Error("value should be string");const i=K(s)?new dt(String(s)):s;let n;null!=e&&e.tail&&(e._beforeTailState=this.state),[t,n]=this.doPrepare(t,e);for(let s=0;s<t.length;++s){const a=this._appendChar(t[s],e,i);if(!a.rawInserted&&!this.doSkipInvalid(t[s],e,i))break;n.aggregate(a)}return(!0===this.eager||"append"===this.eager)&&null!=e&&e.input&&t&&n.aggregate(this._appendEager()),null!=i&&(n.tailShift+=this.appendTail(i).tailShift),n}remove(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),this._value=this.displayValue.slice(0,t)+this.displayValue.slice(e),new ht}withValueRefresh(t){if(this._refreshing||!this._initialized)return t();this._refreshing=!0;const e=this.rawInputValue,s=this.value,i=t();return this.rawInputValue=e,this.value&&this.value!==s&&0===s.indexOf(this.value)&&this.append(s.slice(this.displayValue.length),{},""),delete this._refreshing,i}runIsolated(t){if(this._isolated||!this._initialized)return t(this);this._isolated=!0;const e=this.state,s=t(this);return this.state=e,delete this._isolated,s}doSkipInvalid(t,e,s){return Boolean(this.skipInvalid)}doPrepare(t,e){return void 0===e&&(e={}),ht.normalize(this.prepare?this.prepare(t,this,e):t)}doPrepareChar(t,e){return void 0===e&&(e={}),ht.normalize(this.prepareChar?this.prepareChar(t,this,e):t)}doValidate(t){return(!this.validate||this.validate(this.value,this,t))&&(!this.parent||this.parent.doValidate(t))}doCommit(){this.commit&&this.commit(this.value,this)}splice(t,e,s,i,n){void 0===i&&(i=J.NONE),void 0===n&&(n={input:!0});const a=t+e,r=this.extractTail(a),u=!0===this.eager||"remove"===this.eager;let o;u&&(i=W(i),o=this.extractInput(0,a,{raw:!0}));let l=t;const h=new ht;if(i!==J.NONE&&(l=this.nearestInputPos(t,e>1&&0!==t&&!u?J.NONE:i),h.tailShift=l-t),h.aggregate(this.remove(l)),u&&i!==J.NONE&&o===this.rawInputValue)if(i===J.FORCE_LEFT){let t;for(;o===this.rawInputValue&&(t=this.displayValue.length);)h.aggregate(new ht({tailShift:-1})).aggregate(this.remove(t-1))}else i===J.FORCE_RIGHT&&r.unshift();return h.aggregate(this.append(s,n,r))}maskEquals(t){return this.mask===t}typedValueEquals(t){const e=this.typedValue;return t===e||ct.EMPTY_VALUES.includes(t)&&ct.EMPTY_VALUES.includes(e)||!!this.format&&this.format(t,this)===this.format(this.typedValue,this)}}ct.DEFAULTS={skipInvalid:!0},ct.EMPTY_VALUES=[void 0,null,""],st.Masked=ct;class pt{constructor(t,e){void 0===t&&(t=[]),void 0===e&&(e=0),this.chunks=t,this.from=e}toString(){return this.chunks.map(String).join("")}extend(t){if(!String(t))return;t=K(t)?new dt(String(t)):t;const e=this.chunks[this.chunks.length-1],s=e&&(e.stop===t.stop||null==t.stop)&&t.from===e.from+e.toString().length;if(t instanceof dt)s?e.extend(t.toString()):this.chunks.push(t);else if(t instanceof pt){if(null==t.stop){let e;for(;t.chunks.length&&null==t.chunks[0].stop;)e=t.chunks.shift(),e.from+=t.from,this.extend(e)}t.toString()&&(t.stop=t.blockIndex,this.chunks.push(t))}}appendTo(t){if(!(t instanceof st.MaskedPattern)){return new dt(this.toString()).appendTo(t)}const e=new ht;for(let s=0;s<this.chunks.length&&!e.skip;++s){const i=this.chunks[s],n=t._mapPosToBlock(t.displayValue.length),a=i.stop;let r;if(null!=a&&(!n||n.index<=a)){if(i instanceof pt||t._stops.indexOf(a)>=0){const s=t._appendPlaceholder(a);e.aggregate(s)}r=i instanceof pt&&t._blocks[a]}if(r){const s=r.appendTail(i);s.skip=!1,e.aggregate(s),t._value+=s.inserted;const n=i.toString().slice(s.rawInserted.length);n&&e.aggregate(t.append(n,{tail:!0}))}else e.aggregate(t.append(i.toString(),{tail:!0}))}return e}get state(){return{chunks:this.chunks.map((t=>t.state)),from:this.from,stop:this.stop,blockIndex:this.blockIndex}}set state(t){const{chunks:e,...s}=t;Object.assign(this,s),this.chunks=e.map((t=>{const e="chunks"in t?new pt:new dt;return e.state=t,e}))}unshift(t){if(!this.chunks.length||null!=t&&this.from>=t)return"";const e=null!=t?t-this.from:t;let s=0;for(;s<this.chunks.length;){const t=this.chunks[s],i=t.unshift(e);if(t.toString()){if(!i)break;++s}else this.chunks.splice(s,1);if(i)return i}return""}shift(){if(!this.chunks.length)return"";let t=this.chunks.length-1;for(;0<=t;){const e=this.chunks[t],s=e.shift();if(e.toString()){if(!s)break;--t}else this.chunks.splice(t,1);if(s)return s}return""}}class mt{constructor(t,e){this.masked=t,this._log=[];const{offset:s,index:i}=t._mapPosToBlock(e)||(e<0?{index:0,offset:0}:{index:this.masked._blocks.length,offset:0});this.offset=s,this.index=i,this.ok=!1}get block(){return this.masked._blocks[this.index]}get pos(){return this.masked._blockStartPos(this.index)+this.offset}get state(){return{index:this.index,offset:this.offset,ok:this.ok}}set state(t){Object.assign(this,t)}pushState(){this._log.push(this.state)}popState(){const t=this._log.pop();return t&&(this.state=t),t}bindBlock(){this.block||(this.index<0&&(this.index=0,this.offset=0),this.index>=this.masked._blocks.length&&(this.index=this.masked._blocks.length-1,this.offset=this.block.displayValue.length))}_pushLeft(t){for(this.pushState(),this.bindBlock();0<=this.index;--this.index,this.offset=(null==(e=this.block)?void 0:e.displayValue.length)||0){var e;if(t())return this.ok=!0}return this.ok=!1}_pushRight(t){for(this.pushState(),this.bindBlock();this.index<this.masked._blocks.length;++this.index,this.offset=0)if(t())return this.ok=!0;return this.ok=!1}pushLeftBeforeFilled(){return this._pushLeft((()=>{if(!this.block.isFixed&&this.block.value)return this.offset=this.block.nearestInputPos(this.offset,J.FORCE_LEFT),0!==this.offset||void 0}))}pushLeftBeforeInput(){return this._pushLeft((()=>{if(!this.block.isFixed)return this.offset=this.block.nearestInputPos(this.offset,J.LEFT),!0}))}pushLeftBeforeRequired(){return this._pushLeft((()=>{if(!(this.block.isFixed||this.block.isOptional&&!this.block.value))return this.offset=this.block.nearestInputPos(this.offset,J.LEFT),!0}))}pushRightBeforeFilled(){return this._pushRight((()=>{if(!this.block.isFixed&&this.block.value)return this.offset=this.block.nearestInputPos(this.offset,J.FORCE_RIGHT),this.offset!==this.block.value.length||void 0}))}pushRightBeforeInput(){return this._pushRight((()=>{if(!this.block.isFixed)return this.offset=this.block.nearestInputPos(this.offset,J.NONE),!0}))}pushRightBeforeRequired(){return this._pushRight((()=>{if(!(this.block.isFixed||this.block.isOptional&&!this.block.value))return this.offset=this.block.nearestInputPos(this.offset,J.NONE),!0}))}}class gt{constructor(t){Object.assign(this,t),this._value="",this.isFixed=!0}get value(){return this._value}get unmaskedValue(){return this.isUnmasking?this.value:""}get rawInputValue(){return this._isRawInput?this.value:""}get displayValue(){return this.value}reset(){this._isRawInput=!1,this._value=""}remove(t,e){return void 0===t&&(t=0),void 0===e&&(e=this._value.length),this._value=this._value.slice(0,t)+this._value.slice(e),this._value||(this._isRawInput=!1),new ht}nearestInputPos(t,e){void 0===e&&(e=J.NONE);const s=this._value.length;switch(e){case J.LEFT:case J.FORCE_LEFT:return 0;default:return s}}totalInputPositions(t,e){return void 0===t&&(t=0),void 0===e&&(e=this._value.length),this._isRawInput?e-t:0}extractInput(t,e,s){return void 0===t&&(t=0),void 0===e&&(e=this._value.length),void 0===s&&(s={}),s.raw&&this._isRawInput&&this._value.slice(t,e)||""}get isComplete(){return!0}get isFilled(){return Boolean(this._value)}_appendChar(t,e){void 0===e&&(e={});const s=new ht;if(this.isFilled)return s;const i=!0===this.eager||"append"===this.eager,n=this.char===t&&(this.isUnmasking||e.input||e.raw)&&(!e.raw||!i)&&!e.tail;return n&&(s.rawInserted=this.char),this._value=s.inserted=this.char,this._isRawInput=n&&(e.raw||e.input),s}_appendEager(){return this._appendChar(this.char,{tail:!0})}_appendPlaceholder(){const t=new ht;return this.isFilled||(this._value=t.inserted=this.char),t}extractTail(){return new dt("")}appendTail(t){return K(t)&&(t=new dt(String(t))),t.appendTo(this)}append(t,e,s){const i=this._appendChar(t[0],e);return null!=s&&(i.tailShift+=this.appendTail(s).tailShift),i}doCommit(){}get state(){return{_value:this._value,_rawInputValue:this.rawInputValue}}set state(t){this._value=t._value,this._isRawInput=Boolean(t._rawInputValue)}}class ft{constructor(t){const{parent:e,isOptional:s,placeholderChar:i,displayChar:n,lazy:a,eager:r,...u}=t;this.masked=at(u),Object.assign(this,{parent:e,isOptional:s,placeholderChar:i,displayChar:n,lazy:a,eager:r})}reset(){this.isFilled=!1,this.masked.reset()}remove(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.value.length),0===t&&e>=1?(this.isFilled=!1,this.masked.remove(t,e)):new ht}get value(){return this.masked.value||(this.isFilled&&!this.isOptional?this.placeholderChar:"")}get unmaskedValue(){return this.masked.unmaskedValue}get rawInputValue(){return this.masked.rawInputValue}get displayValue(){return this.masked.value&&this.displayChar||this.value}get isComplete(){return Boolean(this.masked.value)||this.isOptional}_appendChar(t,e){if(void 0===e&&(e={}),this.isFilled)return new ht;const s=this.masked.state,i=this.masked._appendChar(t,this.currentMaskFlags(e));return i.inserted&&!1===this.doValidate(e)&&(i.inserted=i.rawInserted="",this.masked.state=s),i.inserted||this.isOptional||this.lazy||e.input||(i.inserted=this.placeholderChar),i.skip=!i.inserted&&!this.isOptional,this.isFilled=Boolean(i.inserted),i}append(t,e,s){return this.masked.append(t,this.currentMaskFlags(e),s)}_appendPlaceholder(){const t=new ht;return this.isFilled||this.isOptional||(this.isFilled=!0,t.inserted=this.placeholderChar),t}_appendEager(){return new ht}extractTail(t,e){return this.masked.extractTail(t,e)}appendTail(t){return this.masked.appendTail(t)}extractInput(t,e,s){return void 0===t&&(t=0),void 0===e&&(e=this.value.length),this.masked.extractInput(t,e,s)}nearestInputPos(t,e){void 0===e&&(e=J.NONE);const s=this.value.length,i=Math.min(Math.max(t,0),s);switch(e){case J.LEFT:case J.FORCE_LEFT:return this.isComplete?i:0;case J.RIGHT:case J.FORCE_RIGHT:return this.isComplete?i:s;default:return i}}totalInputPositions(t,e){return void 0===t&&(t=0),void 0===e&&(e=this.value.length),this.value.slice(t,e).length}doValidate(t){return this.masked.doValidate(this.currentMaskFlags(t))&&(!this.parent||this.parent.doValidate(this.currentMaskFlags(t)))}doCommit(){this.masked.doCommit()}get state(){return{_value:this.value,_rawInputValue:this.rawInputValue,masked:this.masked.state,isFilled:this.isFilled}}set state(t){this.masked.state=t.masked,this.isFilled=t.isFilled}currentMaskFlags(t){var e;return{...t,_beforeTailState:(null==t||null==(e=t._beforeTailState)?void 0:e.masked)||(null==t?void 0:t._beforeTailState)}}}ft.DEFAULT_DEFINITIONS={0:/\d/,a:/[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,"*":/./};st.MaskedRegExp=class extends ct{updateOptions(t){super.updateOptions(t)}_update(t){const e=t.mask;e&&(t.validate=t=>t.search(e)>=0),super._update(t)}};class kt extends ct{constructor(t){super({...kt.DEFAULTS,...t,definitions:Object.assign({},ft.DEFAULT_DEFINITIONS,null==t?void 0:t.definitions)})}updateOptions(t){super.updateOptions(t)}_update(t){t.definitions=Object.assign({},this.definitions,t.definitions),super._update(t),this._rebuildMask()}_rebuildMask(){const t=this.definitions;this._blocks=[],this.exposeBlock=void 0,this._stops=[],this._maskedBlocks={};const e=this.mask;if(!e||!t)return;let s=!1,i=!1;for(let n=0;n<e.length;++n){if(this.blocks){const t=e.slice(n),s=Object.keys(this.blocks).filter((e=>0===t.indexOf(e)));s.sort(((t,e)=>e.length-t.length));const i=s[0];if(i){const{expose:t,...e}=nt(this.blocks[i]),s=at({lazy:this.lazy,eager:this.eager,placeholderChar:this.placeholderChar,displayChar:this.displayChar,overwrite:this.overwrite,...e,parent:this});s&&(this._blocks.push(s),t&&(this.exposeBlock=s),this._maskedBlocks[i]||(this._maskedBlocks[i]=[]),this._maskedBlocks[i].push(this._blocks.length-1)),n+=i.length-1;continue}}let a=e[n],r=a in t;if(a===kt.STOP_CHAR){this._stops.push(this._blocks.length);continue}if("{"===a||"}"===a){s=!s;continue}if("["===a||"]"===a){i=!i;continue}if(a===kt.ESCAPE_CHAR){if(++n,a=e[n],!a)break;r=!1}const u=r?new ft({isOptional:i,lazy:this.lazy,eager:this.eager,placeholderChar:this.placeholderChar,displayChar:this.displayChar,...nt(t[a]),parent:this}):new gt({char:a,eager:this.eager,isUnmasking:s});this._blocks.push(u)}}get state(){return{...super.state,_blocks:this._blocks.map((t=>t.state))}}set state(t){const{_blocks:e,...s}=t;this._blocks.forEach(((t,s)=>t.state=e[s])),super.state=s}reset(){super.reset(),this._blocks.forEach((t=>t.reset()))}get isComplete(){return this.exposeBlock?this.exposeBlock.isComplete:this._blocks.every((t=>t.isComplete))}get isFilled(){return this._blocks.every((t=>t.isFilled))}get isFixed(){return this._blocks.every((t=>t.isFixed))}get isOptional(){return this._blocks.every((t=>t.isOptional))}doCommit(){this._blocks.forEach((t=>t.doCommit())),super.doCommit()}get unmaskedValue(){return this.exposeBlock?this.exposeBlock.unmaskedValue:this._blocks.reduce(((t,e)=>t+e.unmaskedValue),"")}set unmaskedValue(t){if(this.exposeBlock){const e=this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock))+this.exposeBlock.displayValue.length);this.exposeBlock.unmaskedValue=t,this.appendTail(e),this.doCommit()}else super.unmaskedValue=t}get value(){return this.exposeBlock?this.exposeBlock.value:this._blocks.reduce(((t,e)=>t+e.value),"")}set value(t){if(this.exposeBlock){const e=this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock))+this.exposeBlock.displayValue.length);this.exposeBlock.value=t,this.appendTail(e),this.doCommit()}else super.value=t}get typedValue(){return this.exposeBlock?this.exposeBlock.typedValue:super.typedValue}set typedValue(t){if(this.exposeBlock){const e=this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock))+this.exposeBlock.displayValue.length);this.exposeBlock.typedValue=t,this.appendTail(e),this.doCommit()}else super.typedValue=t}get displayValue(){return this._blocks.reduce(((t,e)=>t+e.displayValue),"")}appendTail(t){return super.appendTail(t).aggregate(this._appendPlaceholder())}_appendEager(){var t;const e=new ht;let s=null==(t=this._mapPosToBlock(this.displayValue.length))?void 0:t.index;if(null==s)return e;this._blocks[s].isFilled&&++s;for(let t=s;t<this._blocks.length;++t){const s=this._blocks[t]._appendEager();if(!s.inserted)break;e.aggregate(s)}return e}_appendCharRaw(t,e){void 0===e&&(e={});const s=this._mapPosToBlock(this.displayValue.length),i=new ht;if(!s)return i;for(let a=s.index;;++a){var n;const s=this._blocks[a];if(!s)break;const r=s._appendChar(t,{...e,_beforeTailState:null==(n=e._beforeTailState)||null==(n=n._blocks)?void 0:n[a]}),u=r.skip;if(i.aggregate(r),u||r.rawInserted)break}return i}extractTail(t,e){void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length);const s=new pt;return t===e||this._forEachBlocksInRange(t,e,((t,e,i,n)=>{const a=t.extractTail(i,n);a.stop=this._findStopBefore(e),a.from=this._blockStartPos(e),a instanceof pt&&(a.blockIndex=e),s.extend(a)})),s}extractInput(t,e,s){if(void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),void 0===s&&(s={}),t===e)return"";let i="";return this._forEachBlocksInRange(t,e,((t,e,n,a)=>{i+=t.extractInput(n,a,s)})),i}_findStopBefore(t){let e;for(let s=0;s<this._stops.length;++s){const i=this._stops[s];if(!(i<=t))break;e=i}return e}_appendPlaceholder(t){const e=new ht;if(this.lazy&&null==t)return e;const s=this._mapPosToBlock(this.displayValue.length);if(!s)return e;const i=s.index,n=null!=t?t:this._blocks.length;return this._blocks.slice(i,n).forEach((s=>{if(!s.lazy||null!=t){var i;const t=s._appendPlaceholder(null==(i=s._blocks)?void 0:i.length);this._value+=t.inserted,e.aggregate(t)}})),e}_mapPosToBlock(t){let e="";for(let s=0;s<this._blocks.length;++s){const i=this._blocks[s],n=e.length;if(e+=i.displayValue,t<=e.length)return{index:s,offset:t-n}}}_blockStartPos(t){return this._blocks.slice(0,t).reduce(((t,e)=>t+e.displayValue.length),0)}_forEachBlocksInRange(t,e,s){void 0===e&&(e=this.displayValue.length);const i=this._mapPosToBlock(t);if(i){const t=this._mapPosToBlock(e),n=t&&i.index===t.index,a=i.offset,r=t&&n?t.offset:this._blocks[i.index].displayValue.length;if(s(this._blocks[i.index],i.index,a,r),t&&!n){for(let e=i.index+1;e<t.index;++e)s(this._blocks[e],e,0,this._blocks[e].displayValue.length);s(this._blocks[t.index],t.index,0,t.offset)}}}remove(t,e){void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length);const s=super.remove(t,e);return this._forEachBlocksInRange(t,e,((t,e,i,n)=>{s.aggregate(t.remove(i,n))})),s}nearestInputPos(t,e){if(void 0===e&&(e=J.NONE),!this._blocks.length)return 0;const s=new mt(this,t);if(e===J.NONE)return s.pushRightBeforeInput()?s.pos:(s.popState(),s.pushLeftBeforeInput()?s.pos:this.displayValue.length);if(e===J.LEFT||e===J.FORCE_LEFT){if(e===J.LEFT){if(s.pushRightBeforeFilled(),s.ok&&s.pos===t)return t;s.popState()}if(s.pushLeftBeforeInput(),s.pushLeftBeforeRequired(),s.pushLeftBeforeFilled(),e===J.LEFT){if(s.pushRightBeforeInput(),s.pushRightBeforeRequired(),s.ok&&s.pos<=t)return s.pos;if(s.popState(),s.ok&&s.pos<=t)return s.pos;s.popState()}return s.ok?s.pos:e===J.FORCE_LEFT?0:(s.popState(),s.ok?s.pos:(s.popState(),s.ok?s.pos:0))}return e===J.RIGHT||e===J.FORCE_RIGHT?(s.pushRightBeforeInput(),s.pushRightBeforeRequired(),s.pushRightBeforeFilled()?s.pos:e===J.FORCE_RIGHT?this.displayValue.length:(s.popState(),s.ok?s.pos:(s.popState(),s.ok?s.pos:this.nearestInputPos(t,J.LEFT)))):t}totalInputPositions(t,e){void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length);let s=0;return this._forEachBlocksInRange(t,e,((t,e,i,n)=>{s+=t.totalInputPositions(i,n)})),s}maskedBlock(t){return this.maskedBlocks(t)[0]}maskedBlocks(t){const e=this._maskedBlocks[t];return e?e.map((t=>this._blocks[t])):[]}}kt.DEFAULTS={lazy:!0,placeholderChar:"_"},kt.STOP_CHAR="`",kt.ESCAPE_CHAR="\\",kt.InputDefinition=ft,kt.FixedDefinition=gt,st.MaskedPattern=kt;class vt extends kt{get _matchFrom(){return this.maxLength-String(this.from).length}constructor(t){super(t)}updateOptions(t){super.updateOptions(t)}_update(t){const{to:e=this.to||0,from:s=this.from||0,maxLength:i=this.maxLength||0,autofix:n=this.autofix,...a}=t;this.to=e,this.from=s,this.maxLength=Math.max(String(e).length,i),this.autofix=n;const r=String(this.from).padStart(this.maxLength,"0"),u=String(this.to).padStart(this.maxLength,"0");let o=0;for(;o<u.length&&u[o]===r[o];)++o;a.mask=u.slice(0,o).replace(/0/g,"\\0")+"0".repeat(this.maxLength-o),super._update(a)}get isComplete(){return super.isComplete&&Boolean(this.value)}boundaries(t){let e="",s="";const[,i,n]=t.match(/^(\D*)(\d*)(\D*)/)||[];return n&&(e="0".repeat(i.length)+n,s="9".repeat(i.length)+n),e=e.padEnd(this.maxLength,"0"),s=s.padEnd(this.maxLength,"9"),[e,s]}doPrepareChar(t,e){let s;if(void 0===e&&(e={}),[t,s]=super.doPrepareChar(t.replace(/\D/g,""),e),!this.autofix||!t)return[t,s];const i=String(this.from).padStart(this.maxLength,"0"),n=String(this.to).padStart(this.maxLength,"0"),a=this.value+t;if(a.length>this.maxLength)return["",s];const[r,u]=this.boundaries(a);return Number(u)<this.from?[i[a.length-1],s]:Number(r)>this.to?"pad"===this.autofix&&a.length<this.maxLength?["",s.aggregate(this.append(i[a.length-1]+t,e))]:[n[a.length-1],s]:[t,s]}doValidate(t){const e=this.value;if(-1===e.search(/[^0]/)&&e.length<=this._matchFrom)return!0;const[s,i]=this.boundaries(e);return this.from<=Number(i)&&Number(s)<=this.to&&super.doValidate(t)}}st.MaskedRange=vt;class _t extends kt{constructor(t){const{mask:e,pattern:s,...i}={..._t.DEFAULTS,...t};super({...i,mask:K(e)?e:s})}updateOptions(t){super.updateOptions(t)}_update(t){const{mask:e,pattern:s,blocks:i,...n}={..._t.DEFAULTS,...t},a=Object.assign({},_t.GET_DEFAULT_BLOCKS());t.min&&(a.Y.from=t.min.getFullYear()),t.max&&(a.Y.to=t.max.getFullYear()),t.min&&t.max&&a.Y.from===a.Y.to&&(a.m.from=t.min.getMonth()+1,a.m.to=t.max.getMonth()+1,a.m.from===a.m.to&&(a.d.from=t.min.getDate(),a.d.to=t.max.getDate())),Object.assign(a,this.blocks,i),Object.keys(a).forEach((e=>{const s=a[e];!("autofix"in s)&&"autofix"in t&&(s.autofix=t.autofix)})),super._update({...n,mask:K(e)?e:s,blocks:a})}doValidate(t){const e=this.date;return super.doValidate(t)&&(!this.isComplete||this.isDateExist(this.value)&&null!=e&&(null==this.min||this.min<=e)&&(null==this.max||e<=this.max))}isDateExist(t){return this.format(this.parse(t,this),this).indexOf(t)>=0}get date(){return this.typedValue}set date(t){this.typedValue=t}get typedValue(){return this.isComplete?super.typedValue:null}set typedValue(t){super.typedValue=t}maskEquals(t){return t===Date||super.maskEquals(t)}}_t.GET_DEFAULT_BLOCKS=()=>({d:{mask:vt,from:1,to:31,maxLength:2},m:{mask:vt,from:1,to:12,maxLength:2},Y:{mask:vt,from:1900,to:9999}}),_t.DEFAULTS={mask:Date,pattern:"d{.}`m{.}`Y",format:(t,e)=>{if(!t)return"";return[String(t.getDate()).padStart(2,"0"),String(t.getMonth()+1).padStart(2,"0"),t.getFullYear()].join(".")},parse:(t,e)=>{const[s,i,n]=t.split(".").map(Number);return new Date(n,i-1,s)}},st.MaskedDate=_t;class Ft extends ct{constructor(t){super({...Ft.DEFAULTS,...t}),this.currentMask=void 0}updateOptions(t){super.updateOptions(t)}_update(t){super._update(t),"mask"in t&&(this.exposeMask=void 0,this.compiledMasks=Array.isArray(t.mask)?t.mask.map((t=>{const{expose:e,...s}=nt(t),i=at({overwrite:this._overwrite,eager:this._eager,skipInvalid:this._skipInvalid,...s});return e&&(this.exposeMask=i),i})):[])}_appendCharRaw(t,e){void 0===e&&(e={});const s=this._applyDispatch(t,e);return this.currentMask&&s.aggregate(this.currentMask._appendChar(t,this.currentMaskFlags(e))),s}_applyDispatch(t,e,s){void 0===t&&(t=""),void 0===e&&(e={}),void 0===s&&(s="");const i=e.tail&&null!=e._beforeTailState?e._beforeTailState._value:this.value,n=this.rawInputValue,a=e.tail&&null!=e._beforeTailState?e._beforeTailState._rawInputValue:n,r=n.slice(a.length),u=this.currentMask,o=new ht,l=null==u?void 0:u.state;if(this.currentMask=this.doDispatch(t,{...e},s),this.currentMask)if(this.currentMask!==u){if(this.currentMask.reset(),a){const t=this.currentMask.append(a,{raw:!0});o.tailShift=t.inserted.length-i.length}r&&(o.tailShift+=this.currentMask.append(r,{raw:!0,tail:!0}).tailShift)}else l&&(this.currentMask.state=l);return o}_appendPlaceholder(){const t=this._applyDispatch();return this.currentMask&&t.aggregate(this.currentMask._appendPlaceholder()),t}_appendEager(){const t=this._applyDispatch();return this.currentMask&&t.aggregate(this.currentMask._appendEager()),t}appendTail(t){const e=new ht;return t&&e.aggregate(this._applyDispatch("",{},t)),e.aggregate(this.currentMask?this.currentMask.appendTail(t):super.appendTail(t))}currentMaskFlags(t){var e,s;return{...t,_beforeTailState:(null==(e=t._beforeTailState)?void 0:e.currentMaskRef)===this.currentMask&&(null==(s=t._beforeTailState)?void 0:s.currentMask)||t._beforeTailState}}doDispatch(t,e,s){return void 0===e&&(e={}),void 0===s&&(s=""),this.dispatch(t,this,e,s)}doValidate(t){return super.doValidate(t)&&(!this.currentMask||this.currentMask.doValidate(this.currentMaskFlags(t)))}doPrepare(t,e){void 0===e&&(e={});let[s,i]=super.doPrepare(t,e);if(this.currentMask){let t;[s,t]=super.doPrepare(s,this.currentMaskFlags(e)),i=i.aggregate(t)}return[s,i]}doPrepareChar(t,e){void 0===e&&(e={});let[s,i]=super.doPrepareChar(t,e);if(this.currentMask){let t;[s,t]=super.doPrepareChar(s,this.currentMaskFlags(e)),i=i.aggregate(t)}return[s,i]}reset(){var t;null==(t=this.currentMask)||t.reset(),this.compiledMasks.forEach((t=>t.reset()))}get value(){return this.exposeMask?this.exposeMask.value:this.currentMask?this.currentMask.value:""}set value(t){this.exposeMask?(this.exposeMask.value=t,this.currentMask=this.exposeMask,this._applyDispatch()):super.value=t}get unmaskedValue(){return this.exposeMask?this.exposeMask.unmaskedValue:this.currentMask?this.currentMask.unmaskedValue:""}set unmaskedValue(t){this.exposeMask?(this.exposeMask.unmaskedValue=t,this.currentMask=this.exposeMask,this._applyDispatch()):super.unmaskedValue=t}get typedValue(){return this.exposeMask?this.exposeMask.typedValue:this.currentMask?this.currentMask.typedValue:""}set typedValue(t){if(this.exposeMask)return this.exposeMask.typedValue=t,this.currentMask=this.exposeMask,void this._applyDispatch();let e=String(t);this.currentMask&&(this.currentMask.typedValue=t,e=this.currentMask.unmaskedValue),this.unmaskedValue=e}get displayValue(){return this.currentMask?this.currentMask.displayValue:""}get isComplete(){var t;return Boolean(null==(t=this.currentMask)?void 0:t.isComplete)}get isFilled(){var t;return Boolean(null==(t=this.currentMask)?void 0:t.isFilled)}remove(t,e){const s=new ht;return this.currentMask&&s.aggregate(this.currentMask.remove(t,e)).aggregate(this._applyDispatch()),s}get state(){var t;return{...super.state,_rawInputValue:this.rawInputValue,compiledMasks:this.compiledMasks.map((t=>t.state)),currentMaskRef:this.currentMask,currentMask:null==(t=this.currentMask)?void 0:t.state}}set state(t){const{compiledMasks:e,currentMaskRef:s,currentMask:i,...n}=t;e&&this.compiledMasks.forEach(((t,s)=>t.state=e[s])),null!=s&&(this.currentMask=s,this.currentMask.state=i),super.state=n}extractInput(t,e,s){return this.currentMask?this.currentMask.extractInput(t,e,s):""}extractTail(t,e){return this.currentMask?this.currentMask.extractTail(t,e):super.extractTail(t,e)}doCommit(){this.currentMask&&this.currentMask.doCommit(),super.doCommit()}nearestInputPos(t,e){return this.currentMask?this.currentMask.nearestInputPos(t,e):super.nearestInputPos(t,e)}get overwrite(){return this.currentMask?this.currentMask.overwrite:this._overwrite}set overwrite(t){this._overwrite=t}get eager(){return this.currentMask?this.currentMask.eager:this._eager}set eager(t){this._eager=t}get skipInvalid(){return this.currentMask?this.currentMask.skipInvalid:this._skipInvalid}set skipInvalid(t){this._skipInvalid=t}maskEquals(t){return Array.isArray(t)?this.compiledMasks.every(((e,s)=>{if(!t[s])return;const{mask:i,...n}=t[s];return tt(e,n)&&e.maskEquals(i)})):super.maskEquals(t)}typedValueEquals(t){var e;return Boolean(null==(e=this.currentMask)?void 0:e.typedValueEquals(t))}}Ft.DEFAULTS=void 0,Ft.DEFAULTS={dispatch:(t,e,s,i)=>{if(!e.compiledMasks.length)return;const n=e.rawInputValue,a=e.compiledMasks.map(((a,r)=>{const u=e.currentMask===a,o=u?a.displayValue.length:a.nearestInputPos(a.displayValue.length,J.FORCE_LEFT);return a.rawInputValue!==n?(a.reset(),a.append(n,{raw:!0})):u||a.remove(o),a.append(t,e.currentMaskFlags(s)),a.appendTail(i),{index:r,weight:a.rawInputValue.length,totalInputPositions:a.totalInputPositions(0,Math.max(o,a.nearestInputPos(a.displayValue.length,J.FORCE_LEFT)))}}));return a.sort(((t,e)=>e.weight-t.weight||e.totalInputPositions-t.totalInputPositions)),e.compiledMasks[a[0].index]}},st.MaskedDynamic=Ft;st.MaskedEnum=class extends kt{constructor(t){super(t)}updateOptions(t){super.updateOptions(t)}_update(t){const{enum:e,...s}=t;if(e){const t=e.map((t=>t.length)),i=Math.min(...t),n=Math.max(...t)-i;s.mask="*".repeat(i),n&&(s.mask+="["+"*".repeat(n)+"]"),this.enum=e}super._update(s)}doValidate(t){return this.enum.some((t=>0===t.indexOf(this.unmaskedValue)))&&super.doValidate(t)}};st.MaskedFunction=class extends ct{updateOptions(t){super.updateOptions(t)}_update(t){super._update({...t,validate:t.mask})}};class yt extends ct{constructor(t){super({...yt.DEFAULTS,...t})}updateOptions(t){super.updateOptions(t)}_update(t){super._update(t),this._updateRegExps()}_updateRegExps(){const t="^"+(this.allowNegative?"[+|\\-]?":""),e=(this.scale?"("+Q(this.radix)+"\\d{0,"+this.scale+"})?":"")+"$";this._numberRegExp=new RegExp(t+"\\d*"+e),this._mapToRadixRegExp=new RegExp("["+this.mapToRadix.map(Q).join("")+"]","g"),this._thousandsSeparatorRegExp=new RegExp(Q(this.thousandsSeparator),"g")}_removeThousandsSeparators(t){return t.replace(this._thousandsSeparatorRegExp,"")}_insertThousandsSeparators(t){const e=t.split(this.radix);return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,this.thousandsSeparator),e.join(this.radix)}doPrepareChar(t,e){void 0===e&&(e={});const[s,i]=super.doPrepareChar(this._removeThousandsSeparators(this.scale&&this.mapToRadix.length&&(e.input&&e.raw||!e.input&&!e.raw)?t.replace(this._mapToRadixRegExp,this.radix):t),e);return t&&!s&&(i.skip=!0),!s||this.allowPositive||this.value||"-"===s||i.aggregate(this._appendChar("-")),[s,i]}_separatorsCount(t,e){void 0===e&&(e=!1);let s=0;for(let i=0;i<t;++i)this._value.indexOf(this.thousandsSeparator,i)===i&&(++s,e&&(t+=this.thousandsSeparator.length));return s}_separatorsCountFromSlice(t){return void 0===t&&(t=this._value),this._separatorsCount(this._removeThousandsSeparators(t).length,!0)}extractInput(t,e,s){return void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),[t,e]=this._adjustRangeWithSeparators(t,e),this._removeThousandsSeparators(super.extractInput(t,e,s))}_appendCharRaw(t,e){if(void 0===e&&(e={}),!this.thousandsSeparator)return super._appendCharRaw(t,e);const s=e.tail&&e._beforeTailState?e._beforeTailState._value:this._value,i=this._separatorsCountFromSlice(s);this._value=this._removeThousandsSeparators(this.value);const n=super._appendCharRaw(t,e);this._value=this._insertThousandsSeparators(this._value);const a=e.tail&&e._beforeTailState?e._beforeTailState._value:this._value,r=this._separatorsCountFromSlice(a);return n.tailShift+=(r-i)*this.thousandsSeparator.length,n.skip=!n.rawInserted&&t===this.thousandsSeparator,n}_findSeparatorAround(t){if(this.thousandsSeparator){const e=t-this.thousandsSeparator.length+1,s=this.value.indexOf(this.thousandsSeparator,e);if(s<=t)return s}return-1}_adjustRangeWithSeparators(t,e){const s=this._findSeparatorAround(t);s>=0&&(t=s);const i=this._findSeparatorAround(e);return i>=0&&(e=i+this.thousandsSeparator.length),[t,e]}remove(t,e){void 0===t&&(t=0),void 0===e&&(e=this.displayValue.length),[t,e]=this._adjustRangeWithSeparators(t,e);const s=this.value.slice(0,t),i=this.value.slice(e),n=this._separatorsCount(s.length);this._value=this._insertThousandsSeparators(this._removeThousandsSeparators(s+i));const a=this._separatorsCountFromSlice(s);return new ht({tailShift:(a-n)*this.thousandsSeparator.length})}nearestInputPos(t,e){if(!this.thousandsSeparator)return t;switch(e){case J.NONE:case J.LEFT:case J.FORCE_LEFT:{const s=this._findSeparatorAround(t-1);if(s>=0){const i=s+this.thousandsSeparator.length;if(t<i||this.value.length<=i||e===J.FORCE_LEFT)return s}break}case J.RIGHT:case J.FORCE_RIGHT:{const e=this._findSeparatorAround(t);if(e>=0)return e+this.thousandsSeparator.length}}return t}doValidate(t){let e=Boolean(this._removeThousandsSeparators(this.value).match(this._numberRegExp));if(e){const t=this.number;e=e&&!isNaN(t)&&(null==this.min||this.min>=0||this.min<=this.number)&&(null==this.max||this.max<=0||this.number<=this.max)}return e&&super.doValidate(t)}doCommit(){if(this.value){const t=this.number;let e=t;null!=this.min&&(e=Math.max(e,this.min)),null!=this.max&&(e=Math.min(e,this.max)),e!==t&&(this.unmaskedValue=this.format(e,this));let s=this.value;this.normalizeZeros&&(s=this._normalizeZeros(s)),this.padFractionalZeros&&this.scale>0&&(s=this._padFractionalZeros(s)),this._value=s}super.doCommit()}_normalizeZeros(t){const e=this._removeThousandsSeparators(t).split(this.radix);return e[0]=e[0].replace(/^(\D*)(0*)(\d*)/,((t,e,s,i)=>e+i)),t.length&&!/\d$/.test(e[0])&&(e[0]=e[0]+"0"),e.length>1&&(e[1]=e[1].replace(/0*$/,""),e[1].length||(e.length=1)),this._insertThousandsSeparators(e.join(this.radix))}_padFractionalZeros(t){if(!t)return t;const e=t.split(this.radix);return e.length<2&&e.push(""),e[1]=e[1].padEnd(this.scale,"0"),e.join(this.radix)}doSkipInvalid(t,e,s){void 0===e&&(e={});const i=0===this.scale&&t!==this.thousandsSeparator&&(t===this.radix||t===yt.UNMASKED_RADIX||this.mapToRadix.includes(t));return super.doSkipInvalid(t,e,s)&&!i}get unmaskedValue(){return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix,yt.UNMASKED_RADIX)}set unmaskedValue(t){super.unmaskedValue=t}get typedValue(){return this.parse(this.unmaskedValue,this)}set typedValue(t){this.rawInputValue=this.format(t,this).replace(yt.UNMASKED_RADIX,this.radix)}get number(){return this.typedValue}set number(t){this.typedValue=t}get allowNegative(){return null!=this.min&&this.min<0||null!=this.max&&this.max<0}get allowPositive(){return null!=this.min&&this.min>0||null!=this.max&&this.max>0}typedValueEquals(t){return(super.typedValueEquals(t)||yt.EMPTY_VALUES.includes(t)&&yt.EMPTY_VALUES.includes(this.typedValue))&&!(0===t&&""===this.value)}}yt.UNMASKED_RADIX=".",yt.EMPTY_VALUES=[...ct.EMPTY_VALUES,0],yt.DEFAULTS={mask:Number,radix:",",thousandsSeparator:"",mapToRadix:[yt.UNMASKED_RADIX],min:Number.MIN_SAFE_INTEGER,max:Number.MAX_SAFE_INTEGER,scale:2,normalizeZeros:!0,padFractionalZeros:!1,parse:Number,format:t=>t.toLocaleString("en-US",{useGrouping:!1,maximumFractionDigits:20})},st.MaskedNumber=yt;const Et={MASKED:"value",UNMASKED:"unmaskedValue",TYPED:"typedValue"};function At(t,e,s){void 0===e&&(e=Et.MASKED),void 0===s&&(s=Et.MASKED);const i=at(t);return t=>i.runIsolated((i=>(i[e]=t,i[s])))}st.PIPE_TYPE=Et,st.createPipe=At,st.pipe=function(t,e,s,i){return At(e,s,i)(t)};try{globalThis.IMask=st}catch{}class bt{constructor(){this.setFieldMask()}setFieldMask(){const t=document.querySelector("#woocommerce_vindi-pagamentos-credit_installments_value");t&&st(t,{mask:"R$00,00"})}}class Ct{constructor(){this.showPasswordContent(),this.createExportButton(),this.addPaymentLinkButtonOnSettings(),this.addPaymentLinkButtonOnOrders(),this.addPaymentLinkButtonOnGateways()}addPaymentLinkButtonOnSettings(){if(document.querySelector("#vindi-pagamentos-token")){const t=document.querySelector("#wvp-export-btn");this.createPaymentLinkButton(t,["components-button","woocommerce-save-button","is-primary"])}}addPaymentLinkButtonOnOrders(){const t=document.querySelector("input[name=post_type]");if(t&&"shop_order"===t.value){const t=document.querySelector(".page-title-action");this.createPaymentLinkButton(t,["button-primary","page-title-action"])}}addPaymentLinkButtonOnGateways(){["billet","credit","pix","bolepix","transfer"].forEach((t=>{const e=document.querySelector(`#woocommerce_vindi-pagamentos-${t}_enabled`);if(e&&e.checked){const e=document.querySelector("#mainform > .submit > button");this.createPaymentLinkButton(e,["woocommerce-save-button","is-secondary","components-button"],{gateway:`vindi-pagamentos-${t}`})}}))}createPaymentLinkButton(t,e=[],s={}){if(t){const i=document.createElement("a");i.setAttribute("target","_blank"),i.setAttribute("id","wvp-payment-link-btn"),i.setAttribute("href",`${location.origin}/wp-admin/post-new.php?${this.getUrlParams({post_type:"shop_order","vindi-payment-link":!0,...s})}`),i.classList.add(...e),i.innerText="Gerar Link de Pagamento",t.after(i)}}getUrlParams(t){const e={};for(const s in t)Object.hasOwnProperty.call(t,s)&&t[s]&&(e[s]=t[s]);return new URLSearchParams(e).toString()}showPasswordContent(){const t=document.querySelector("#vindi-pagamentos-token");t&&(t.addEventListener("focusin",(()=>{t.setAttribute("type","text")})),t.addEventListener("focusout",(()=>{t.setAttribute("type","password")})))}createExportButton(){if(document.querySelector("#vindi-pagamentos-token")){const t=document.createElement("a");t.setAttribute("id","wvp-export-btn"),t.classList.add("wvp-export-btn","woocommerce-save-button","components-button","is-secondary"),t.innerText="Exportar Configurações";document.querySelector("#mainform > .submit").appendChild(t),this.exportSettings(t)}}exportSettings(t){t.addEventListener("click",(()=>{this.getSettingsContent()}))}getSettingsContent(){const t=new FormData;t.append("action","export_settings"),fetch(`${window.location.origin}/wp-admin/admin-ajax.php`,{method:"POST",body:t}).then((t=>t.json())).then((t=>{this.downloadSettingsFile(JSON.stringify(t.content,null,4)),setTimeout((()=>{window.location.reload()}),500)}))}downloadSettingsFile(t){const e=new File([t],"settings.json",{type:"application/json"}),s=URL.createObjectURL(e),i=document.createElement("a");i&&(i.setAttribute("href",s),i.setAttribute("download","settings.json"),document.body.appendChild(i),i.click(),document.body.removeChild(i))}}class St{constructor(){this.handleManualRenewal()}handleManualRenewal(){const t=document.querySelector("#manual-renewal-button"),e=document.querySelector("#manual-renewal-subscription");t&&e&&t.addEventListener("click",(()=>{const s=new FormData;s.append("action","manual_renewal"),s.append("subscription",e.value),this.setLoader(),t.setAttribute("disabled",!0),fetch(ajaxurl,{method:"POST",body:s}).then((t=>t.json())).then((t=>{t.status&&"success"==t.status&&window.location.reload()}))}))}setLoader(t=!0){const e=document.querySelector("#manual-renewal-form .loader");e&&(t?e.classList.add("active"):e.classList.remove("active"))}}class wt{constructor(){this.handleRetryRenewal()}handleRetryRenewal(){const t=document.querySelector("#vindi-retry-renewal-button"),e=document.querySelector("#vindi-retry-renewal-order"),s=document.querySelector("#vindi_retry_renewal_nonce");t&&e&&s&&t.addEventListener("click",(i=>{const n=new FormData;n.append("action","vindi_retry_renewal"),n.append("order",e.value),n.append("nonce",s.value),this.setLoader(),t.setAttribute("disabled",!0),fetch(ajaxurl,{method:"POST",body:n}).then((t=>t.json())).then((t=>{t.status&&"success"==t.status&&window.location.reload()}))}))}setLoader(t=!0){const e=document.querySelector("#vindi-retry-renewal-form .loader");e&&(t?e.classList.add("active"):e.classList.remove("active"))}}class xt{constructor(t){this.enableField=document.querySelector(`#woocommerce_vindi-pagamentos-${t}_discount`),this.showTagField=document.querySelector("#vindi-pagamentos-show_discount_text"),this.enableField&&(this.discountTypeField=document.querySelector(`#woocommerce_vindi-pagamentos-${t}_discount_type`).closest("tr"),this.discountValueField=document.querySelector(`#woocommerce_vindi-pagamentos-${t}_discount_value`).closest("tr")),this.showTagField&&(this.textColorField=document.querySelector("#vindi-pagamentos-text_color").closest("tr")),this.init()}init(){this.enableField&&(this.toggleDiscountFields(),this.enableField.addEventListener("change",(()=>{this.toggleDiscountFields()}))),this.showTagField&&(this.toggleColorFields(),this.showTagField.addEventListener("change",(()=>{this.toggleColorFields()})))}toggleDiscountFields(){const t=this.enableField.checked;this.discountTypeField.style.display=t?"table-row":"none",this.discountValueField.style.display=t?"table-row":"none"}toggleColorFields(){const t=this.showTagField.checked;this.backgroundColorField.style.display=t?"table-row":"none",this.textColorField.style.display=t?"table-row":"none"}}jQuery(document).ready((function(t){new xt("bolepix"),new xt("pix")}));class Bt{constructor(){this.init()}init(){this.setupDefaultSelection(),this.setupEventListeners()}setupDefaultSelection(){const t=document.querySelectorAll('input[name="payment_profile"]'),e=Array.from(t).some((t=>t.checked));t.length>0&&!e&&(t[0].checked=!0)}setupEventListeners(){const t=document.getElementById("update-payment-profile-button");t&&t.addEventListener("click",this.handleUpdateProfile.bind(this))}handleUpdateProfile(t){const e=document.getElementById("payment-profile-subscription").value,s=document.querySelector('input[name="payment_profile"]:checked'),i=document.querySelector(".loader"),n=document.getElementById("update-message");if(!s)return n.textContent=vindiTranslations.selectCard||"Por favor, selecione um cartão.",n.classList.add("error"),void n.classList.remove("success");t.currentTarget.disabled=!0,i&&(i.style.display="block"),n.textContent="",n.classList.remove("error","success");const a=new FormData;a.append("action","update_payment_profile"),a.append("subscription",e),a.append("payment_profile",s.value),fetch(ajaxurl,{method:"POST",body:a}).then((t=>t.json())).then((t=>{"success"===t.status?(n.textContent=t.message||vindiTranslations.cardUpdated||"Cartão atualizado com sucesso!",n.classList.add("success"),document.querySelectorAll(".vindi-card-row").forEach((t=>{t.classList.remove("selected-card")})),s.closest(".vindi-card-row").classList.add("selected-card")):(n.textContent=t.message||vindiTranslations.updateError||"Erro ao atualizar cartão.",n.classList.add("error"))})).catch((()=>{n.textContent=vindiTranslations.requestError||"Erro ao processar requisição.",n.classList.add("error")})).finally((()=>{document.getElementById("update-payment-profile-button").disabled=!1,i&&(i.style.display="none")}))}}class Dt{constructor(){this.enableField=document.querySelector("#woocommerce_vindi-pagamentos-multi-payment_enable_multipayment_min_control"),this.minValueField=document.querySelector("#woocommerce_vindi-pagamentos-multi-payment_multipayment_min_amount").closest("tr"),this.init()}init(){this.enableField&&(this.toggleMinValueField(),this.enableField.addEventListener("change",(()=>{this.toggleMinValueField()})))}toggleMinValueField(){const t=this.enableField.checked;this.minValueField.style.display=t?"table-row":"none"}}class Tt{constructor(){this.currentStep=this.detectCurrentStep(),this.formData={},this.init()}detectCurrentStep(){const t=new URLSearchParams(window.location.search),e=t.get("page"),s=t.get("step");return"vindi-wizard"!==e?null:s||"welcome"}init(){this.currentStep&&(this.initStepSpecific(),this.setupBackButton())}initStepSpecific(){switch(this.currentStep){case"register":this.setupPersonTypeToggle(),this.setupFormSubmission(),this.setupDocumentMasks();break;case"address":this.loadSavedData(),this.setupFormSubmission(),this.setupDocumentMasks();break;case"welcome":case"login":case"token":case"success":break;case"features":this.setupFeatureToggles(),this.setupFormSubmission()}}setupFeatureToggles(){document.querySelectorAll('.vindi-wizard-switch input[type="checkbox"]').forEach((t=>{t.addEventListener("change",(t=>{console.log("Feature toggle changed:",t.target.checked)}))}))}setupPersonTypeToggle(){const t=document.getElementById("vindi-person-type"),e=document.getElementById("cpf-field"),s=document.getElementById("cnpj-field"),i=document.getElementById("company-field");t&&t.addEventListener("change",(t=>{"1"===t.target.value?(e.style.display="block",s.style.display="none",i.style.display="none"):(e.style.display="none",s.style.display="block",i.style.display="block")}))}setupDocumentMasks(){const t=document.querySelector('input[name="vindi-pagamentos-cpf"]'),e=document.querySelector('input[name="vindi-pagamentos-cnpj"]'),s=document.querySelector('input[name="vindi-pagamentos-telefone"]'),i=document.querySelector('input[name="vindi-pagamentos-cep"]');t&&"undefined"!=typeof IMask&&IMask(t,{mask:"000.000.000-00"}),e&&"undefined"!=typeof IMask&&IMask(e,{mask:"00.000.000/0000-00"}),s&&"undefined"!=typeof IMask&&IMask(s,{mask:"(00) 0 0000-0000"}),i&&"undefined"!=typeof IMask&&IMask(i,{mask:"00000-000"})}setupFormSubmission(){const t=document.querySelector(".vindi-wizard-btn"),e=document.querySelector(".vindi-wizard-continue");t&&t.addEventListener("click",(t=>{t.preventDefault(),this.handleFormSubmit()})),e&&e.addEventListener("click",(t=>{t.preventDefault(),this.handleFeaturesSubmit()}))}setupBackButton(){const t=document.querySelector(".vindi-wizard-back-btn");t&&t.addEventListener("click",(t=>{t.preventDefault(),this.handleBackStep()}))}validateForm(){return"register"===this.currentStep?this.validateRegisterStep():"address"===this.currentStep&&this.validateAddressStep()}validateRegisterStep(){const t=["vindi-pagamentos-nome","vindi-pagamentos-email","vindi-pagamentos-telefone"],e=document.querySelector('select[name="vindi-pagamentos-person-type"]')?.value;"1"===e?t.push("vindi-pagamentos-cpf"):"2"===e&&t.push("vindi-pagamentos-cnpj","vindi-pagamentos-social-name");const s=document.querySelector('input[name="vindi-pagamentos-accept-terms"]');if(s&&!s.checked)return alert("Você deve aceitar os termos e condições para continuar."),!1;for(const e of t){const t=document.querySelector(`input[name="${e}"], select[name="${e}"]`);if(!t||!t.value.trim())return alert(`Por favor, preencha o campo: ${this.getFieldLabel(e)}`),t?.focus(),!1}return!0}validateAddressStep(){const t=["vindi-pagamentos-cep","vindi-pagamentos-endereco","vindi-pagamentos-numero","vindi-pagamentos-bairro","vindi-pagamentos-cidade","vindi-pagamentos-estado"];for(const e of t){const t=document.querySelector(`input[name="${e}"], select[name="${e}"]`);if(!t||!t.value.trim())return alert(`Por favor, preencha o campo: ${this.getFieldLabel(e)}`),t?.focus(),!1}return!0}getFieldLabel(t){return{"vindi-pagamentos-nome":"Nome","vindi-pagamentos-email":"E-mail","vindi-pagamentos-telefone":"Telefone","vindi-pagamentos-cpf":"CPF","vindi-pagamentos-cnpj":"CNPJ","vindi-pagamentos-social-name":"Razão Social","vindi-pagamentos-cep":"CEP","vindi-pagamentos-endereco":"Endereço","vindi-pagamentos-numero":"Número","vindi-pagamentos-bairro":"Bairro","vindi-pagamentos-cidade":"Cidade","vindi-pagamentos-estado":"Estado"}[t]||t}collectFormData(){const t={};return document.querySelectorAll('input[name^="vindi-pagamentos-"], select[name^="vindi-pagamentos-"]').forEach((e=>{"checkbox"===e.type?t[e.name]=e.checked:t[e.name]=e.value})),t}handleFeaturesSubmit(){const t={};document.querySelectorAll('.vindi-wizard-switch input[type="checkbox"]').forEach(((e,s)=>{const i=["pix","credit","billet","bolepix","multipayment"];i[s]&&(t[i[s]]=e.checked)})),localStorage.setItem("vindi-wizard-features",JSON.stringify(t)),window.location.href=`${window.location.origin}/wp-admin/admin.php?page=vindi-wizard&step=success`}async handleFormSubmit(){if(!this.validateForm())return;const t=this.collectFormData();this.formData={...this.formData,...t},"register"===this.currentStep?this.navigateToAddressStep():"address"===this.currentStep&&await this.submitToAPI()}navigateToAddressStep(){localStorage.setItem("vindi-wizard-data",JSON.stringify(this.formData)),window.location.href=`${window.location.origin}/wp-admin/admin.php?page=vindi-wizard&step=address`}async submitToAPI(){try{const t=await this.callYapayAPI();t.success?window.location.href=`${window.location.origin}/wp-admin/admin.php?page=vindi-wizard&step=token`:alert("Erro ao criar conta: "+t.message)}catch(t){console.error("Erro:",t),alert("Erro ao criar conta. Tente novamente.")}}async callYapayAPI(){const t=new FormData;t.append("action","vindi_create_user_account"),t.append("nonce",vindiWizardConfig.nonce),t.append("wizard_data",JSON.stringify(this.formData));const e=await fetch(vindiWizardConfig.ajaxUrl,{method:"POST",body:t});return await e.json()}handleBackStep(){"address"===this.currentStep?window.location.href=`${window.location.origin}/wp-admin/admin.php?page=vindi-wizard&step=register`:"register"===this.currentStep?window.location.href=`${window.location.origin}/wp-admin/admin.php?page=vindi-wizard&step=welcome`:"features"===this.currentStep&&(window.location.href=`${window.location.origin}/wp-admin/admin.php?page=vindi-wizard&step=token`)}loadSavedData(){const t=localStorage.getItem("vindi-wizard-data");t&&(this.formData=JSON.parse(t))}}document.addEventListener("DOMContentLoaded",(()=>{new Ct,new bt,new Y,new G,new St,new wt,new xt,new Bt,new Dt,new Tt}))})(); 2 2 //# sourceMappingURL=index.js.map -
vindi-pagamentos/trunk/dist/scripts/admin/index.js.map
r3344656 r3356741 1 {"mappings":" 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","sources":["node_modules/sprintf-js/src/sprintf.js","node_modules/memize/dist/index.js","node_modules/@wordpress/i18n/build-module/@wordpress/i18n/src/sprintf.js","node_modules/@tannin/postfix/index.js","node_modules/@tannin/evaluate/index.js","node_modules/@tannin/compile/index.js","node_modules/tannin/index.js","node_modules/@tannin/plural-forms/index.js","node_modules/@wordpress/i18n/build-module/@wordpress/i18n/src/create-i18n.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/validateNamespace.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/validateHookName.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/createAddHook.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/createRemoveHook.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/createHasHook.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/createRunHook.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/createCurrentHook.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/createDoingHook.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/createDidHook.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/createHooks.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/index.js","node_modules/@wordpress/i18n/build-module/@wordpress/i18n/src/default-i18n.js","assets/scripts/admin/orders/payment-link.js","assets/scripts/admin/orders/tranking.js","node_modules/imask/esm/core/utils.js","node_modules/imask/esm/core/action-details.js","node_modules/imask/esm/core/holder.js","node_modules/imask/esm/masked/factory.js","node_modules/imask/esm/controls/mask-element.js","node_modules/imask/esm/controls/html-mask-element.js","node_modules/imask/esm/controls/html-input-mask-element.js","node_modules/imask/esm/controls/html-contenteditable-mask-element.js","node_modules/imask/esm/controls/input.js","node_modules/imask/esm/core/change-details.js","node_modules/imask/esm/core/continuous-tail-details.js","node_modules/imask/esm/masked/base.js","node_modules/imask/esm/masked/pattern/chunk-tail-details.js","node_modules/imask/esm/masked/pattern/cursor.js","node_modules/imask/esm/masked/pattern/fixed-definition.js","node_modules/imask/esm/masked/pattern/input-definition.js","node_modules/imask/esm/masked/regexp.js","node_modules/imask/esm/masked/pattern.js","node_modules/imask/esm/masked/range.js","node_modules/imask/esm/masked/date.js","node_modules/imask/esm/masked/dynamic.js","node_modules/imask/esm/masked/enum.js","node_modules/imask/esm/masked/function.js","node_modules/imask/esm/masked/number.js","node_modules/imask/esm/masked/pipe.js","node_modules/imask/esm/index.js","assets/scripts/admin/settings/credit.js","assets/scripts/admin/settings/settings.js","assets/scripts/admin/subscriptions/manual-renewal.js","assets/scripts/admin/subscriptions/retry-renewal.js","assets/scripts/admin/settings/payment-method-discount.js","assets/scripts/admin/subscriptions/payment-profile.js","assets/scripts/admin/settings/multipayment-min-control.js","assets/scripts/admin/wizard.js","assets/scripts/admin/index.js"],"sourcesContent":["/* global window, exports, define */\n\n!function() {\n 'use strict'\n\n var re = {\n not_string: /[^s]/,\n not_bool: /[^t]/,\n not_type: /[^T]/,\n not_primitive: /[^v]/,\n number: /[diefg]/,\n numeric_arg: /[bcdiefguxX]/,\n json: /[j]/,\n not_json: /[^j]/,\n text: /^[^\\x25]+/,\n modulo: /^\\x25{2}/,\n placeholder: /^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,\n key: /^([a-z_][a-z_\\d]*)/i,\n key_access: /^\\.([a-z_][a-z_\\d]*)/i,\n index_access: /^\\[(\\d+)\\]/,\n sign: /^[+-]/\n }\n\n function sprintf(key) {\n // `arguments` is not an array, but should be fine for this call\n return sprintf_format(sprintf_parse(key), arguments)\n }\n\n function vsprintf(fmt, argv) {\n return sprintf.apply(null, [fmt].concat(argv || []))\n }\n\n function sprintf_format(parse_tree, argv) {\n var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign\n for (i = 0; i < tree_length; i++) {\n if (typeof parse_tree[i] === 'string') {\n output += parse_tree[i]\n }\n else if (typeof parse_tree[i] === 'object') {\n ph = parse_tree[i] // convenience purposes only\n if (ph.keys) { // keyword argument\n arg = argv[cursor]\n for (k = 0; k < ph.keys.length; k++) {\n if (arg == undefined) {\n throw new Error(sprintf('[sprintf] Cannot access property \"%s\" of undefined value \"%s\"', ph.keys[k], ph.keys[k-1]))\n }\n arg = arg[ph.keys[k]]\n }\n }\n else if (ph.param_no) { // positional argument (explicit)\n arg = argv[ph.param_no]\n }\n else { // positional argument (implicit)\n arg = argv[cursor++]\n }\n\n if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) {\n arg = arg()\n }\n\n if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) {\n throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))\n }\n\n if (re.number.test(ph.type)) {\n is_positive = arg >= 0\n }\n\n switch (ph.type) {\n case 'b':\n arg = parseInt(arg, 10).toString(2)\n break\n case 'c':\n arg = String.fromCharCode(parseInt(arg, 10))\n break\n case 'd':\n case 'i':\n arg = parseInt(arg, 10)\n break\n case 'j':\n arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)\n break\n case 'e':\n arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()\n break\n case 'f':\n arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)\n break\n case 'g':\n arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)\n break\n case 'o':\n arg = (parseInt(arg, 10) >>> 0).toString(8)\n break\n case 's':\n arg = String(arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 't':\n arg = String(!!arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'T':\n arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'u':\n arg = parseInt(arg, 10) >>> 0\n break\n case 'v':\n arg = arg.valueOf()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'x':\n arg = (parseInt(arg, 10) >>> 0).toString(16)\n break\n case 'X':\n arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()\n break\n }\n if (re.json.test(ph.type)) {\n output += arg\n }\n else {\n if (re.number.test(ph.type) && (!is_positive || ph.sign)) {\n sign = is_positive ? '+' : '-'\n arg = arg.toString().replace(re.sign, '')\n }\n else {\n sign = ''\n }\n pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '\n pad_length = ph.width - (sign + arg).length\n pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''\n output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)\n }\n }\n }\n return output\n }\n\n var sprintf_cache = Object.create(null)\n\n function sprintf_parse(fmt) {\n if (sprintf_cache[fmt]) {\n return sprintf_cache[fmt]\n }\n\n var _fmt = fmt, match, parse_tree = [], arg_names = 0\n while (_fmt) {\n if ((match = re.text.exec(_fmt)) !== null) {\n parse_tree.push(match[0])\n }\n else if ((match = re.modulo.exec(_fmt)) !== null) {\n parse_tree.push('%')\n }\n else if ((match = re.placeholder.exec(_fmt)) !== null) {\n if (match[2]) {\n arg_names |= 1\n var field_list = [], replacement_field = match[2], field_match = []\n if ((field_match = re.key.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {\n if ((field_match = re.key_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else if ((field_match = re.index_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n }\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n match[2] = field_list\n }\n else {\n arg_names |= 2\n }\n if (arg_names === 3) {\n throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')\n }\n\n parse_tree.push(\n {\n placeholder: match[0],\n param_no: match[1],\n keys: match[2],\n sign: match[3],\n pad_char: match[4],\n align: match[5],\n width: match[6],\n precision: match[7],\n type: match[8]\n }\n )\n }\n else {\n throw new SyntaxError('[sprintf] unexpected placeholder')\n }\n _fmt = _fmt.substring(match[0].length)\n }\n return sprintf_cache[fmt] = parse_tree\n }\n\n /**\n * export to either browser or node.js\n */\n /* eslint-disable quote-props */\n if (typeof exports !== 'undefined') {\n exports['sprintf'] = sprintf\n exports['vsprintf'] = vsprintf\n }\n if (typeof window !== 'undefined') {\n window['sprintf'] = sprintf\n window['vsprintf'] = vsprintf\n\n if (typeof define === 'function' && define['amd']) {\n define(function() {\n return {\n 'sprintf': sprintf,\n 'vsprintf': vsprintf\n }\n })\n }\n }\n /* eslint-enable quote-props */\n}(); // eslint-disable-line\n","/**\n * Memize options object.\n *\n * @typedef MemizeOptions\n *\n * @property {number} [maxSize] Maximum size of the cache.\n */\n\n/**\n * Internal cache entry.\n *\n * @typedef MemizeCacheNode\n *\n * @property {?MemizeCacheNode|undefined} [prev] Previous node.\n * @property {?MemizeCacheNode|undefined} [next] Next node.\n * @property {Array<*>} args Function arguments for cache\n * entry.\n * @property {*} val Function result.\n */\n\n/**\n * Properties of the enhanced function for controlling cache.\n *\n * @typedef MemizeMemoizedFunction\n *\n * @property {()=>void} clear Clear the cache.\n */\n\n/**\n * Accepts a function to be memoized, and returns a new memoized function, with\n * optional options.\n *\n * @template {(...args: any[]) => any} F\n *\n * @param {F} fn Function to memoize.\n * @param {MemizeOptions} [options] Options object.\n *\n * @return {((...args: Parameters<F>) => ReturnType<F>) & MemizeMemoizedFunction} Memoized function.\n */\nfunction memize(fn, options) {\n\tvar size = 0;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar head;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar tail;\n\n\toptions = options || {};\n\n\tfunction memoized(/* ...args */) {\n\t\tvar node = head,\n\t\t\tlen = arguments.length,\n\t\t\targs,\n\t\t\ti;\n\n\t\tsearchCache: while (node) {\n\t\t\t// Perform a shallow equality test to confirm that whether the node\n\t\t\t// under test is a candidate for the arguments passed. Two arrays\n\t\t\t// are shallowly equal if their length matches and each entry is\n\t\t\t// strictly equal between the two sets. Avoid abstracting to a\n\t\t\t// function which could incur an arguments leaking deoptimization.\n\n\t\t\t// Check whether node arguments match arguments length\n\t\t\tif (node.args.length !== arguments.length) {\n\t\t\t\tnode = node.next;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Check whether node arguments match arguments values\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tif (node.args[i] !== arguments[i]) {\n\t\t\t\t\tnode = node.next;\n\t\t\t\t\tcontinue searchCache;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// At this point we can assume we've found a match\n\n\t\t\t// Surface matched node to head if not already\n\t\t\tif (node !== head) {\n\t\t\t\t// As tail, shift to previous. Must only shift if not also\n\t\t\t\t// head, since if both head and tail, there is no previous.\n\t\t\t\tif (node === tail) {\n\t\t\t\t\ttail = node.prev;\n\t\t\t\t}\n\n\t\t\t\t// Adjust siblings to point to each other. If node was tail,\n\t\t\t\t// this also handles new tail's empty `next` assignment.\n\t\t\t\t/** @type {MemizeCacheNode} */ (node.prev).next = node.next;\n\t\t\t\tif (node.next) {\n\t\t\t\t\tnode.next.prev = node.prev;\n\t\t\t\t}\n\n\t\t\t\tnode.next = head;\n\t\t\t\tnode.prev = null;\n\t\t\t\t/** @type {MemizeCacheNode} */ (head).prev = node;\n\t\t\t\thead = node;\n\t\t\t}\n\n\t\t\t// Return immediately\n\t\t\treturn node.val;\n\t\t}\n\n\t\t// No cached value found. Continue to insertion phase:\n\n\t\t// Create a copy of arguments (avoid leaking deoptimization)\n\t\targs = new Array(len);\n\t\tfor (i = 0; i < len; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\n\t\tnode = {\n\t\t\targs: args,\n\n\t\t\t// Generate the result from original function\n\t\t\tval: fn.apply(null, args),\n\t\t};\n\n\t\t// Don't need to check whether node is already head, since it would\n\t\t// have been returned above already if it was\n\n\t\t// Shift existing head down list\n\t\tif (head) {\n\t\t\thead.prev = node;\n\t\t\tnode.next = head;\n\t\t} else {\n\t\t\t// If no head, follows that there's no tail (at initial or reset)\n\t\t\ttail = node;\n\t\t}\n\n\t\t// Trim tail if we're reached max size and are pending cache insertion\n\t\tif (size === /** @type {MemizeOptions} */ (options).maxSize) {\n\t\t\ttail = /** @type {MemizeCacheNode} */ (tail).prev;\n\t\t\t/** @type {MemizeCacheNode} */ (tail).next = null;\n\t\t} else {\n\t\t\tsize++;\n\t\t}\n\n\t\thead = node;\n\n\t\treturn node.val;\n\t}\n\n\tmemoized.clear = function () {\n\t\thead = null;\n\t\ttail = null;\n\t\tsize = 0;\n\t};\n\n\t// Ignore reason: There's not a clear solution to create an intersection of\n\t// the function with additional properties, where the goal is to retain the\n\t// function signature of the incoming argument and add control properties\n\t// on the return value.\n\n\t// @ts-ignore\n\treturn memoized;\n}\n\nexport { memize as default };\n","/**\n * External dependencies\n */\nimport memoize from 'memize';\nimport sprintfjs from 'sprintf-js';\n\n/**\n * Log to console, once per message; or more precisely, per referentially equal\n * argument set. Because Jed throws errors, we log these to the console instead\n * to avoid crashing the application.\n *\n * @param {...*} args Arguments to pass to `console.error`\n */\nconst logErrorOnce = memoize( console.error ); // eslint-disable-line no-console\n\n/**\n * Returns a formatted string. If an error occurs in applying the format, the\n * original format string is returned.\n *\n * @param {string} format The format of the string to generate.\n * @param {...*} args Arguments to apply to the format.\n *\n * @see https://www.npmjs.com/package/sprintf-js\n *\n * @return {string} The formatted string.\n */\nexport function sprintf( format, ...args ) {\n\ttry {\n\t\treturn sprintfjs.sprintf( format, ...args );\n\t} catch ( error ) {\n\t\tif ( error instanceof Error ) {\n\t\t\tlogErrorOnce( 'sprintf error: \\n\\n' + error.toString() );\n\t\t}\n\t\treturn format;\n\t}\n}\n","var PRECEDENCE, OPENERS, TERMINATORS, PATTERN;\n\n/**\n * Operator precedence mapping.\n *\n * @type {Object}\n */\nPRECEDENCE = {\n\t'(': 9,\n\t'!': 8,\n\t'*': 7,\n\t'/': 7,\n\t'%': 7,\n\t'+': 6,\n\t'-': 6,\n\t'<': 5,\n\t'<=': 5,\n\t'>': 5,\n\t'>=': 5,\n\t'==': 4,\n\t'!=': 4,\n\t'&&': 3,\n\t'||': 2,\n\t'?': 1,\n\t'?:': 1,\n};\n\n/**\n * Characters which signal pair opening, to be terminated by terminators.\n *\n * @type {string[]}\n */\nOPENERS = [ '(', '?' ];\n\n/**\n * Characters which signal pair termination, the value an array with the\n * opener as its first member. The second member is an optional operator\n * replacement to push to the stack.\n *\n * @type {string[]}\n */\nTERMINATORS = {\n\t')': [ '(' ],\n\t':': [ '?', '?:' ],\n};\n\n/**\n * Pattern matching operators and openers.\n *\n * @type {RegExp}\n */\nPATTERN = /<=|>=|==|!=|&&|\\|\\||\\?:|\\(|!|\\*|\\/|%|\\+|-|<|>|\\?|\\)|:/;\n\n/**\n * Given a C expression, returns the equivalent postfix (Reverse Polish)\n * notation terms as an array.\n *\n * If a postfix string is desired, simply `.join( ' ' )` the result.\n *\n * @example\n *\n * ```js\n * import postfix from '@tannin/postfix';\n *\n * postfix( 'n > 1' );\n * // ⇒ [ 'n', '1', '>' ]\n * ```\n *\n * @param {string} expression C expression.\n *\n * @return {string[]} Postfix terms.\n */\nexport default function postfix( expression ) {\n\tvar terms = [],\n\t\tstack = [],\n\t\tmatch, operator, term, element;\n\n\twhile ( ( match = expression.match( PATTERN ) ) ) {\n\t\toperator = match[ 0 ];\n\n\t\t// Term is the string preceding the operator match. It may contain\n\t\t// whitespace, and may be empty (if operator is at beginning).\n\t\tterm = expression.substr( 0, match.index ).trim();\n\t\tif ( term ) {\n\t\t\tterms.push( term );\n\t\t}\n\n\t\twhile ( ( element = stack.pop() ) ) {\n\t\t\tif ( TERMINATORS[ operator ] ) {\n\t\t\t\tif ( TERMINATORS[ operator ][ 0 ] === element ) {\n\t\t\t\t\t// Substitution works here under assumption that because\n\t\t\t\t\t// the assigned operator will no longer be a terminator, it\n\t\t\t\t\t// will be pushed to the stack during the condition below.\n\t\t\t\t\toperator = TERMINATORS[ operator ][ 1 ] || operator;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if ( OPENERS.indexOf( element ) >= 0 || PRECEDENCE[ element ] < PRECEDENCE[ operator ] ) {\n\t\t\t\t// Push to stack if either an opener or when pop reveals an\n\t\t\t\t// element of lower precedence.\n\t\t\t\tstack.push( element );\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// For each popped from stack, push to terms.\n\t\t\tterms.push( element );\n\t\t}\n\n\t\tif ( ! TERMINATORS[ operator ] ) {\n\t\t\tstack.push( operator );\n\t\t}\n\n\t\t// Slice matched fragment from expression to continue match.\n\t\texpression = expression.substr( match.index + operator.length );\n\t}\n\n\t// Push remainder of operand, if exists, to terms.\n\texpression = expression.trim();\n\tif ( expression ) {\n\t\tterms.push( expression );\n\t}\n\n\t// Pop remaining items from stack into terms.\n\treturn terms.concat( stack.reverse() );\n}\n","/**\n * Operator callback functions.\n *\n * @type {Object}\n */\nvar OPERATORS = {\n\t'!': function( a ) {\n\t\treturn ! a;\n\t},\n\t'*': function( a, b ) {\n\t\treturn a * b;\n\t},\n\t'/': function( a, b ) {\n\t\treturn a / b;\n\t},\n\t'%': function( a, b ) {\n\t\treturn a % b;\n\t},\n\t'+': function( a, b ) {\n\t\treturn a + b;\n\t},\n\t'-': function( a, b ) {\n\t\treturn a - b;\n\t},\n\t'<': function( a, b ) {\n\t\treturn a < b;\n\t},\n\t'<=': function( a, b ) {\n\t\treturn a <= b;\n\t},\n\t'>': function( a, b ) {\n\t\treturn a > b;\n\t},\n\t'>=': function( a, b ) {\n\t\treturn a >= b;\n\t},\n\t'==': function( a, b ) {\n\t\treturn a === b;\n\t},\n\t'!=': function( a, b ) {\n\t\treturn a !== b;\n\t},\n\t'&&': function( a, b ) {\n\t\treturn a && b;\n\t},\n\t'||': function( a, b ) {\n\t\treturn a || b;\n\t},\n\t'?:': function( a, b, c ) {\n\t\tif ( a ) {\n\t\t\tthrow b;\n\t\t}\n\n\t\treturn c;\n\t},\n};\n\n/**\n * Given an array of postfix terms and operand variables, returns the result of\n * the postfix evaluation.\n *\n * @example\n *\n * ```js\n * import evaluate from '@tannin/evaluate';\n *\n * // 3 + 4 * 5 / 6 ⇒ '3 4 5 * 6 / +'\n * const terms = [ '3', '4', '5', '*', '6', '/', '+' ];\n *\n * evaluate( terms, {} );\n * // ⇒ 6.333333333333334\n * ```\n *\n * @param {string[]} postfix Postfix terms.\n * @param {Object} variables Operand variables.\n *\n * @return {*} Result of evaluation.\n */\nexport default function evaluate( postfix, variables ) {\n\tvar stack = [],\n\t\ti, j, args, getOperatorResult, term, value;\n\n\tfor ( i = 0; i < postfix.length; i++ ) {\n\t\tterm = postfix[ i ];\n\n\t\tgetOperatorResult = OPERATORS[ term ];\n\t\tif ( getOperatorResult ) {\n\t\t\t// Pop from stack by number of function arguments.\n\t\t\tj = getOperatorResult.length;\n\t\t\targs = Array( j );\n\t\t\twhile ( j-- ) {\n\t\t\t\targs[ j ] = stack.pop();\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tvalue = getOperatorResult.apply( null, args );\n\t\t\t} catch ( earlyReturn ) {\n\t\t\t\treturn earlyReturn;\n\t\t\t}\n\t\t} else if ( variables.hasOwnProperty( term ) ) {\n\t\t\tvalue = variables[ term ];\n\t\t} else {\n\t\t\tvalue = +term;\n\t\t}\n\n\t\tstack.push( value );\n\t}\n\n\treturn stack[ 0 ];\n}\n","import postfix from '@tannin/postfix';\nimport evaluate from '@tannin/evaluate';\n\n/**\n * Given a C expression, returns a function which can be called to evaluate its\n * result.\n *\n * @example\n *\n * ```js\n * import compile from '@tannin/compile';\n *\n * const evaluate = compile( 'n > 1' );\n *\n * evaluate( { n: 2 } );\n * // ⇒ true\n * ```\n *\n * @param {string} expression C expression.\n *\n * @return {(variables?:{[variable:string]:*})=>*} Compiled evaluator.\n */\nexport default function compile( expression ) {\n\tvar terms = postfix( expression );\n\n\treturn function( variables ) {\n\t\treturn evaluate( terms, variables );\n\t};\n}\n","import pluralForms from '@tannin/plural-forms';\n\n/**\n * Tannin constructor options.\n *\n * @typedef {Object} TanninOptions\n *\n * @property {string} [contextDelimiter] Joiner in string lookup with context.\n * @property {Function} [onMissingKey] Callback to invoke when key missing.\n */\n\n/**\n * Domain metadata.\n *\n * @typedef {Object} TanninDomainMetadata\n *\n * @property {string} [domain] Domain name.\n * @property {string} [lang] Language code.\n * @property {(string|Function)} [plural_forms] Plural forms expression or\n * function evaluator.\n */\n\n/**\n * Domain translation pair respectively representing the singular and plural\n * translation.\n *\n * @typedef {[string,string]} TanninTranslation\n */\n\n/**\n * Locale data domain. The key is used as reference for lookup, the value an\n * array of two string entries respectively representing the singular and plural\n * translation.\n *\n * @typedef {{[key:string]:TanninDomainMetadata|TanninTranslation,'':TanninDomainMetadata|TanninTranslation}} TanninLocaleDomain\n */\n\n/**\n * Jed-formatted locale data.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @typedef {{[domain:string]:TanninLocaleDomain}} TanninLocaleData\n */\n\n/**\n * Default Tannin constructor options.\n *\n * @type {TanninOptions}\n */\nvar DEFAULT_OPTIONS = {\n\tcontextDelimiter: '\\u0004',\n\tonMissingKey: null,\n};\n\n/**\n * Given a specific locale data's config `plural_forms` value, returns the\n * expression.\n *\n * @example\n *\n * ```\n * getPluralExpression( 'nplurals=2; plural=(n != 1);' ) === '(n != 1)'\n * ```\n *\n * @param {string} pf Locale data plural forms.\n *\n * @return {string} Plural forms expression.\n */\nfunction getPluralExpression( pf ) {\n\tvar parts, i, part;\n\n\tparts = pf.split( ';' );\n\n\tfor ( i = 0; i < parts.length; i++ ) {\n\t\tpart = parts[ i ].trim();\n\t\tif ( part.indexOf( 'plural=' ) === 0 ) {\n\t\t\treturn part.substr( 7 );\n\t\t}\n\t}\n}\n\n/**\n * Tannin constructor.\n *\n * @class\n *\n * @param {TanninLocaleData} data Jed-formatted locale data.\n * @param {TanninOptions} [options] Tannin options.\n */\nexport default function Tannin( data, options ) {\n\tvar key;\n\n\t/**\n\t * Jed-formatted locale data.\n\t *\n\t * @name Tannin#data\n\t * @type {TanninLocaleData}\n\t */\n\tthis.data = data;\n\n\t/**\n\t * Plural forms function cache, keyed by plural forms string.\n\t *\n\t * @name Tannin#pluralForms\n\t * @type {Object<string,Function>}\n\t */\n\tthis.pluralForms = {};\n\n\t/**\n\t * Effective options for instance, including defaults.\n\t *\n\t * @name Tannin#options\n\t * @type {TanninOptions}\n\t */\n\tthis.options = {};\n\n\tfor ( key in DEFAULT_OPTIONS ) {\n\t\tthis.options[ key ] = options !== undefined && key in options\n\t\t\t? options[ key ]\n\t\t\t: DEFAULT_OPTIONS[ key ];\n\t}\n}\n\n/**\n * Returns the plural form index for the given domain and value.\n *\n * @param {string} domain Domain on which to calculate plural form.\n * @param {number} n Value for which plural form is to be calculated.\n *\n * @return {number} Plural form index.\n */\nTannin.prototype.getPluralForm = function( domain, n ) {\n\tvar getPluralForm = this.pluralForms[ domain ],\n\t\tconfig, plural, pf;\n\n\tif ( ! getPluralForm ) {\n\t\tconfig = this.data[ domain ][ '' ];\n\n\t\tpf = (\n\t\t\tconfig[ 'Plural-Forms' ] ||\n\t\t\tconfig[ 'plural-forms' ] ||\n\t\t\t// Ignore reason: As known, there's no way to document the empty\n\t\t\t// string property on a key to guarantee this as metadata.\n\t\t\t// @ts-ignore\n\t\t\tconfig.plural_forms\n\t\t);\n\n\t\tif ( typeof pf !== 'function' ) {\n\t\t\tplural = getPluralExpression(\n\t\t\t\tconfig[ 'Plural-Forms' ] ||\n\t\t\t\tconfig[ 'plural-forms' ] ||\n\t\t\t\t// Ignore reason: As known, there's no way to document the empty\n\t\t\t\t// string property on a key to guarantee this as metadata.\n\t\t\t\t// @ts-ignore\n\t\t\t\tconfig.plural_forms\n\t\t\t);\n\n\t\t\tpf = pluralForms( plural );\n\t\t}\n\n\t\tgetPluralForm = this.pluralForms[ domain ] = pf;\n\t}\n\n\treturn getPluralForm( n );\n};\n\n/**\n * Translate a string.\n *\n * @param {string} domain Translation domain.\n * @param {string|void} context Context distinguishing terms of the same name.\n * @param {string} singular Primary key for translation lookup.\n * @param {string=} plural Fallback value used for non-zero plural\n * form index.\n * @param {number=} n Value to use in calculating plural form.\n *\n * @return {string} Translated string.\n */\nTannin.prototype.dcnpgettext = function( domain, context, singular, plural, n ) {\n\tvar index, key, entry;\n\n\tif ( n === undefined ) {\n\t\t// Default to singular.\n\t\tindex = 0;\n\t} else {\n\t\t// Find index by evaluating plural form for value.\n\t\tindex = this.getPluralForm( domain, n );\n\t}\n\n\tkey = singular;\n\n\t// If provided, context is prepended to key with delimiter.\n\tif ( context ) {\n\t\tkey = context + this.options.contextDelimiter + singular;\n\t}\n\n\tentry = this.data[ domain ][ key ];\n\n\t// Verify not only that entry exists, but that the intended index is within\n\t// range and non-empty.\n\tif ( entry && entry[ index ] ) {\n\t\treturn entry[ index ];\n\t}\n\n\tif ( this.options.onMissingKey ) {\n\t\tthis.options.onMissingKey( singular, domain );\n\t}\n\n\t// If entry not found, fall back to singular vs. plural with zero index\n\t// representing the singular value.\n\treturn index === 0 ? singular : plural;\n};\n","import compile from '@tannin/compile';\n\n/**\n * Given a C expression, returns a function which, when called with a value,\n * evaluates the result with the value assumed to be the \"n\" variable of the\n * expression. The result will be coerced to its numeric equivalent.\n *\n * @param {string} expression C expression.\n *\n * @return {Function} Evaluator function.\n */\nexport default function pluralForms( expression ) {\n\tvar evaluate = compile( expression );\n\n\treturn function( n ) {\n\t\treturn +evaluate( { n: n } );\n\t};\n}\n","/**\n * External dependencies\n */\nimport Tannin from 'tannin';\n\n/**\n * @typedef {Record<string,any>} LocaleData\n */\n\n/**\n * Default locale data to use for Tannin domain when not otherwise provided.\n * Assumes an English plural forms expression.\n *\n * @type {LocaleData}\n */\nconst DEFAULT_LOCALE_DATA = {\n\t'': {\n\t\t/** @param {number} n */\n\t\tplural_forms( n ) {\n\t\t\treturn n === 1 ? 0 : 1;\n\t\t},\n\t},\n};\n\n/*\n * Regular expression that matches i18n hooks like `i18n.gettext`, `i18n.ngettext`,\n * `i18n.gettext_domain` or `i18n.ngettext_with_context` or `i18n.has_translation`.\n */\nconst I18N_HOOK_REGEXP = /^i18n\\.(n?gettext|has_translation)(_|$)/;\n\n/**\n * @typedef {(domain?: string) => LocaleData} GetLocaleData\n *\n * Returns locale data by domain in a\n * Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n */\n/**\n * @typedef {(data?: LocaleData, domain?: string) => void} SetLocaleData\n *\n * Merges locale data into the Tannin instance by domain. Note that this\n * function will overwrite the domain configuration. Accepts data in a\n * Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n */\n/**\n * @typedef {(data?: LocaleData, domain?: string) => void} AddLocaleData\n *\n * Merges locale data into the Tannin instance by domain. Note that this\n * function will also merge the domain configuration. Accepts data in a\n * Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n */\n/**\n * @typedef {(data?: LocaleData, domain?: string) => void} ResetLocaleData\n *\n * Resets all current Tannin instance locale data and sets the specified\n * locale data for the domain. Accepts data in a Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n */\n/** @typedef {() => void} SubscribeCallback */\n/** @typedef {() => void} UnsubscribeCallback */\n/**\n * @typedef {(callback: SubscribeCallback) => UnsubscribeCallback} Subscribe\n *\n * Subscribes to changes of locale data\n */\n/**\n * @typedef {(domain?: string) => string} GetFilterDomain\n * Retrieve the domain to use when calling domain-specific filters.\n */\n/**\n * @typedef {(text: string, domain?: string) => string} __\n *\n * Retrieve the translation of text.\n *\n * @see https://developer.wordpress.org/reference/functions/__/\n */\n/**\n * @typedef {(text: string, context: string, domain?: string) => string} _x\n *\n * Retrieve translated string with gettext context.\n *\n * @see https://developer.wordpress.org/reference/functions/_x/\n */\n/**\n * @typedef {(single: string, plural: string, number: number, domain?: string) => string} _n\n *\n * Translates and retrieves the singular or plural form based on the supplied\n * number.\n *\n * @see https://developer.wordpress.org/reference/functions/_n/\n */\n/**\n * @typedef {(single: string, plural: string, number: number, context: string, domain?: string) => string} _nx\n *\n * Translates and retrieves the singular or plural form based on the supplied\n * number, with gettext context.\n *\n * @see https://developer.wordpress.org/reference/functions/_nx/\n */\n/**\n * @typedef {() => boolean} IsRtl\n *\n * Check if current locale is RTL.\n *\n * **RTL (Right To Left)** is a locale property indicating that text is written from right to left.\n * For example, the `he` locale (for Hebrew) specifies right-to-left. Arabic (ar) is another common\n * language written RTL. The opposite of RTL, LTR (Left To Right) is used in other languages,\n * including English (`en`, `en-US`, `en-GB`, etc.), Spanish (`es`), and French (`fr`).\n */\n/**\n * @typedef {(single: string, context?: string, domain?: string) => boolean} HasTranslation\n *\n * Check if there is a translation for a given string in singular form.\n */\n/** @typedef {import('@wordpress/hooks').Hooks} Hooks */\n\n/**\n * An i18n instance\n *\n * @typedef I18n\n * @property {GetLocaleData} getLocaleData Returns locale data by domain in a Jed-formatted JSON object shape.\n * @property {SetLocaleData} setLocaleData Merges locale data into the Tannin instance by domain. Note that this\n * function will overwrite the domain configuration. Accepts data in a\n * Jed-formatted JSON object shape.\n * @property {AddLocaleData} addLocaleData Merges locale data into the Tannin instance by domain. Note that this\n * function will also merge the domain configuration. Accepts data in a\n * Jed-formatted JSON object shape.\n * @property {ResetLocaleData} resetLocaleData Resets all current Tannin instance locale data and sets the specified\n * locale data for the domain. Accepts data in a Jed-formatted JSON object shape.\n * @property {Subscribe} subscribe Subscribes to changes of Tannin locale data.\n * @property {__} __ Retrieve the translation of text.\n * @property {_x} _x Retrieve translated string with gettext context.\n * @property {_n} _n Translates and retrieves the singular or plural form based on the supplied\n * number.\n * @property {_nx} _nx Translates and retrieves the singular or plural form based on the supplied\n * number, with gettext context.\n * @property {IsRtl} isRTL Check if current locale is RTL.\n * @property {HasTranslation} hasTranslation Check if there is a translation for a given string.\n */\n\n/**\n * Create an i18n instance\n *\n * @param {LocaleData} [initialData] Locale data configuration.\n * @param {string} [initialDomain] Domain for which configuration applies.\n * @param {Hooks} [hooks] Hooks implementation.\n *\n * @return {I18n} I18n instance.\n */\nexport const createI18n = ( initialData, initialDomain, hooks ) => {\n\t/**\n\t * The underlying instance of Tannin to which exported functions interface.\n\t *\n\t * @type {Tannin}\n\t */\n\tconst tannin = new Tannin( {} );\n\n\tconst listeners = new Set();\n\n\tconst notifyListeners = () => {\n\t\tlisteners.forEach( ( listener ) => listener() );\n\t};\n\n\t/**\n\t * Subscribe to changes of locale data.\n\t *\n\t * @param {SubscribeCallback} callback Subscription callback.\n\t * @return {UnsubscribeCallback} Unsubscribe callback.\n\t */\n\tconst subscribe = ( callback ) => {\n\t\tlisteners.add( callback );\n\t\treturn () => listeners.delete( callback );\n\t};\n\n\t/** @type {GetLocaleData} */\n\tconst getLocaleData = ( domain = 'default' ) => tannin.data[ domain ];\n\n\t/**\n\t * @param {LocaleData} [data]\n\t * @param {string} [domain]\n\t */\n\tconst doSetLocaleData = ( data, domain = 'default' ) => {\n\t\ttannin.data[ domain ] = {\n\t\t\t...tannin.data[ domain ],\n\t\t\t...data,\n\t\t};\n\n\t\t// Populate default domain configuration (supported locale date which omits\n\t\t// a plural forms expression).\n\t\ttannin.data[ domain ][ '' ] = {\n\t\t\t...DEFAULT_LOCALE_DATA[ '' ],\n\t\t\t...tannin.data[ domain ]?.[ '' ],\n\t\t};\n\n\t\t// Clean up cached plural forms functions cache as it might be updated.\n\t\tdelete tannin.pluralForms[ domain ];\n\t};\n\n\t/** @type {SetLocaleData} */\n\tconst setLocaleData = ( data, domain ) => {\n\t\tdoSetLocaleData( data, domain );\n\t\tnotifyListeners();\n\t};\n\n\t/** @type {AddLocaleData} */\n\tconst addLocaleData = ( data, domain = 'default' ) => {\n\t\ttannin.data[ domain ] = {\n\t\t\t...tannin.data[ domain ],\n\t\t\t...data,\n\t\t\t// Populate default domain configuration (supported locale date which omits\n\t\t\t// a plural forms expression).\n\t\t\t'': {\n\t\t\t\t...DEFAULT_LOCALE_DATA[ '' ],\n\t\t\t\t...tannin.data[ domain ]?.[ '' ],\n\t\t\t\t...data?.[ '' ],\n\t\t\t},\n\t\t};\n\n\t\t// Clean up cached plural forms functions cache as it might be updated.\n\t\tdelete tannin.pluralForms[ domain ];\n\n\t\tnotifyListeners();\n\t};\n\n\t/** @type {ResetLocaleData} */\n\tconst resetLocaleData = ( data, domain ) => {\n\t\t// Reset all current Tannin locale data.\n\t\ttannin.data = {};\n\n\t\t// Reset cached plural forms functions cache.\n\t\ttannin.pluralForms = {};\n\n\t\tsetLocaleData( data, domain );\n\t};\n\n\t/**\n\t * Wrapper for Tannin's `dcnpgettext`. Populates default locale data if not\n\t * otherwise previously assigned.\n\t *\n\t * @param {string|undefined} domain Domain to retrieve the translated text.\n\t * @param {string|undefined} context Context information for the translators.\n\t * @param {string} single Text to translate if non-plural. Used as\n\t * fallback return value on a caught error.\n\t * @param {string} [plural] The text to be used if the number is\n\t * plural.\n\t * @param {number} [number] The number to compare against to use\n\t * either the singular or plural form.\n\t *\n\t * @return {string} The translated string.\n\t */\n\tconst dcnpgettext = (\n\t\tdomain = 'default',\n\t\tcontext,\n\t\tsingle,\n\t\tplural,\n\t\tnumber\n\t) => {\n\t\tif ( ! tannin.data[ domain ] ) {\n\t\t\t// Use `doSetLocaleData` to set silently, without notifying listeners.\n\t\t\tdoSetLocaleData( undefined, domain );\n\t\t}\n\n\t\treturn tannin.dcnpgettext( domain, context, single, plural, number );\n\t};\n\n\t/** @type {GetFilterDomain} */\n\tconst getFilterDomain = ( domain = 'default' ) => domain;\n\n\t/** @type {__} */\n\tconst __ = ( text, domain ) => {\n\t\tlet translation = dcnpgettext( domain, undefined, text );\n\t\tif ( ! hooks ) {\n\t\t\treturn translation;\n\t\t}\n\n\t\t/**\n\t\t * Filters text with its translation.\n\t\t *\n\t\t * @param {string} translation Translated text.\n\t\t * @param {string} text Text to translate.\n\t\t * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n\t\t */\n\t\ttranslation = /** @type {string} */ (\n\t\t\t/** @type {*} */ hooks.applyFilters(\n\t\t\t\t'i18n.gettext',\n\t\t\t\ttranslation,\n\t\t\t\ttext,\n\t\t\t\tdomain\n\t\t\t)\n\t\t);\n\t\treturn /** @type {string} */ (\n\t\t\t/** @type {*} */ hooks.applyFilters(\n\t\t\t\t'i18n.gettext_' + getFilterDomain( domain ),\n\t\t\t\ttranslation,\n\t\t\t\ttext,\n\t\t\t\tdomain\n\t\t\t)\n\t\t);\n\t};\n\n\t/** @type {_x} */\n\tconst _x = ( text, context, domain ) => {\n\t\tlet translation = dcnpgettext( domain, context, text );\n\t\tif ( ! hooks ) {\n\t\t\treturn translation;\n\t\t}\n\n\t\t/**\n\t\t * Filters text with its translation based on context information.\n\t\t *\n\t\t * @param {string} translation Translated text.\n\t\t * @param {string} text Text to translate.\n\t\t * @param {string} context Context information for the translators.\n\t\t * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n\t\t */\n\t\ttranslation = /** @type {string} */ (\n\t\t\t/** @type {*} */ hooks.applyFilters(\n\t\t\t\t'i18n.gettext_with_context',\n\t\t\t\ttranslation,\n\t\t\t\ttext,\n\t\t\t\tcontext,\n\t\t\t\tdomain\n\t\t\t)\n\t\t);\n\t\treturn /** @type {string} */ (\n\t\t\t/** @type {*} */ hooks.applyFilters(\n\t\t\t\t'i18n.gettext_with_context_' + getFilterDomain( domain ),\n\t\t\t\ttranslation,\n\t\t\t\ttext,\n\t\t\t\tcontext,\n\t\t\t\tdomain\n\t\t\t)\n\t\t);\n\t};\n\n\t/** @type {_n} */\n\tconst _n = ( single, plural, number, domain ) => {\n\t\tlet translation = dcnpgettext(\n\t\t\tdomain,\n\t\t\tundefined,\n\t\t\tsingle,\n\t\t\tplural,\n\t\t\tnumber\n\t\t);\n\t\tif ( ! hooks ) {\n\t\t\treturn translation;\n\t\t}\n\n\t\t/**\n\t\t * Filters the singular or plural form of a string.\n\t\t *\n\t\t * @param {string} translation Translated text.\n\t\t * @param {string} single The text to be used if the number is singular.\n\t\t * @param {string} plural The text to be used if the number is plural.\n\t\t * @param {string} number The number to compare against to use either the singular or plural form.\n\t\t * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n\t\t */\n\t\ttranslation = /** @type {string} */ (\n\t\t\t/** @type {*} */ hooks.applyFilters(\n\t\t\t\t'i18n.ngettext',\n\t\t\t\ttranslation,\n\t\t\t\tsingle,\n\t\t\t\tplural,\n\t\t\t\tnumber,\n\t\t\t\tdomain\n\t\t\t)\n\t\t);\n\t\treturn /** @type {string} */ (\n\t\t\t/** @type {*} */ hooks.applyFilters(\n\t\t\t\t'i18n.ngettext_' + getFilterDomain( domain ),\n\t\t\t\ttranslation,\n\t\t\t\tsingle,\n\t\t\t\tplural,\n\t\t\t\tnumber,\n\t\t\t\tdomain\n\t\t\t)\n\t\t);\n\t};\n\n\t/** @type {_nx} */\n\tconst _nx = ( single, plural, number, context, domain ) => {\n\t\tlet translation = dcnpgettext(\n\t\t\tdomain,\n\t\t\tcontext,\n\t\t\tsingle,\n\t\t\tplural,\n\t\t\tnumber\n\t\t);\n\t\tif ( ! hooks ) {\n\t\t\treturn translation;\n\t\t}\n\n\t\t/**\n\t\t * Filters the singular or plural form of a string with gettext context.\n\t\t *\n\t\t * @param {string} translation Translated text.\n\t\t * @param {string} single The text to be used if the number is singular.\n\t\t * @param {string} plural The text to be used if the number is plural.\n\t\t * @param {string} number The number to compare against to use either the singular or plural form.\n\t\t * @param {string} context Context information for the translators.\n\t\t * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n\t\t */\n\t\ttranslation = /** @type {string} */ (\n\t\t\t/** @type {*} */ hooks.applyFilters(\n\t\t\t\t'i18n.ngettext_with_context',\n\t\t\t\ttranslation,\n\t\t\t\tsingle,\n\t\t\t\tplural,\n\t\t\t\tnumber,\n\t\t\t\tcontext,\n\t\t\t\tdomain\n\t\t\t)\n\t\t);\n\n\t\treturn /** @type {string} */ (\n\t\t\t/** @type {*} */ hooks.applyFilters(\n\t\t\t\t'i18n.ngettext_with_context_' + getFilterDomain( domain ),\n\t\t\t\ttranslation,\n\t\t\t\tsingle,\n\t\t\t\tplural,\n\t\t\t\tnumber,\n\t\t\t\tcontext,\n\t\t\t\tdomain\n\t\t\t)\n\t\t);\n\t};\n\n\t/** @type {IsRtl} */\n\tconst isRTL = () => {\n\t\treturn 'rtl' === _x( 'ltr', 'text direction' );\n\t};\n\n\t/** @type {HasTranslation} */\n\tconst hasTranslation = ( single, context, domain ) => {\n\t\tconst key = context ? context + '\\u0004' + single : single;\n\t\tlet result = !! tannin.data?.[ domain ?? 'default' ]?.[ key ];\n\t\tif ( hooks ) {\n\t\t\t/**\n\t\t\t * Filters the presence of a translation in the locale data.\n\t\t\t *\n\t\t\t * @param {boolean} hasTranslation Whether the translation is present or not..\n\t\t\t * @param {string} single The singular form of the translated text (used as key in locale data)\n\t\t\t * @param {string} context Context information for the translators.\n\t\t\t * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n\t\t\t */\n\t\t\tresult = /** @type { boolean } */ (\n\t\t\t\t/** @type {*} */ hooks.applyFilters(\n\t\t\t\t\t'i18n.has_translation',\n\t\t\t\t\tresult,\n\t\t\t\t\tsingle,\n\t\t\t\t\tcontext,\n\t\t\t\t\tdomain\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tresult = /** @type { boolean } */ (\n\t\t\t\t/** @type {*} */ hooks.applyFilters(\n\t\t\t\t\t'i18n.has_translation_' + getFilterDomain( domain ),\n\t\t\t\t\tresult,\n\t\t\t\t\tsingle,\n\t\t\t\t\tcontext,\n\t\t\t\t\tdomain\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\treturn result;\n\t};\n\n\tif ( initialData ) {\n\t\tsetLocaleData( initialData, initialDomain );\n\t}\n\n\tif ( hooks ) {\n\t\t/**\n\t\t * @param {string} hookName\n\t\t */\n\t\tconst onHookAddedOrRemoved = ( hookName ) => {\n\t\t\tif ( I18N_HOOK_REGEXP.test( hookName ) ) {\n\t\t\t\tnotifyListeners();\n\t\t\t}\n\t\t};\n\n\t\thooks.addAction( 'hookAdded', 'core/i18n', onHookAddedOrRemoved );\n\t\thooks.addAction( 'hookRemoved', 'core/i18n', onHookAddedOrRemoved );\n\t}\n\n\treturn {\n\t\tgetLocaleData,\n\t\tsetLocaleData,\n\t\taddLocaleData,\n\t\tresetLocaleData,\n\t\tsubscribe,\n\t\t__,\n\t\t_x,\n\t\t_n,\n\t\t_nx,\n\t\tisRTL,\n\t\thasTranslation,\n\t};\n};\n","/**\n * Validate a namespace string.\n *\n * @param {string} namespace The namespace to validate - should take the form\n * `vendor/plugin/function`.\n *\n * @return {boolean} Whether the namespace is valid.\n */\nfunction validateNamespace( namespace ) {\n\tif ( 'string' !== typeof namespace || '' === namespace ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error( 'The namespace must be a non-empty string.' );\n\t\treturn false;\n\t}\n\n\tif ( ! /^[a-zA-Z][a-zA-Z0-9_.\\-\\/]*$/.test( namespace ) ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error(\n\t\t\t'The namespace can only contain numbers, letters, dashes, periods, underscores and slashes.'\n\t\t);\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nexport default validateNamespace;\n","/**\n * Validate a hookName string.\n *\n * @param {string} hookName The hook name to validate. Should be a non empty string containing\n * only numbers, letters, dashes, periods and underscores. Also,\n * the hook name cannot begin with `__`.\n *\n * @return {boolean} Whether the hook name is valid.\n */\nfunction validateHookName( hookName ) {\n\tif ( 'string' !== typeof hookName || '' === hookName ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error( 'The hook name must be a non-empty string.' );\n\t\treturn false;\n\t}\n\n\tif ( /^__/.test( hookName ) ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error( 'The hook name cannot begin with `__`.' );\n\t\treturn false;\n\t}\n\n\tif ( ! /^[a-zA-Z][a-zA-Z0-9_.-]*$/.test( hookName ) ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error(\n\t\t\t'The hook name can only contain numbers, letters, dashes, periods and underscores.'\n\t\t);\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nexport default validateHookName;\n","/**\n * Internal dependencies\n */\nimport validateNamespace from './validateNamespace.js';\nimport validateHookName from './validateHookName.js';\n\n/**\n * @callback AddHook\n *\n * Adds the hook to the appropriate hooks container.\n *\n * @param {string} hookName Name of hook to add\n * @param {string} namespace The unique namespace identifying the callback in the form `vendor/plugin/function`.\n * @param {import('.').Callback} callback Function to call when the hook is run\n * @param {number} [priority=10] Priority of this hook\n */\n\n/**\n * Returns a function which, when invoked, will add a hook.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n *\n * @return {AddHook} Function that adds a new hook.\n */\nfunction createAddHook( hooks, storeKey ) {\n\treturn function addHook( hookName, namespace, callback, priority = 10 ) {\n\t\tconst hooksStore = hooks[ storeKey ];\n\n\t\tif ( ! validateHookName( hookName ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! validateNamespace( namespace ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( 'function' !== typeof callback ) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( 'The hook callback must be a function.' );\n\t\t\treturn;\n\t\t}\n\n\t\t// Validate numeric priority\n\t\tif ( 'number' !== typeof priority ) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(\n\t\t\t\t'If specified, the hook priority must be a number.'\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst handler = { callback, priority, namespace };\n\n\t\tif ( hooksStore[ hookName ] ) {\n\t\t\t// Find the correct insert index of the new hook.\n\t\t\tconst handlers = hooksStore[ hookName ].handlers;\n\n\t\t\t/** @type {number} */\n\t\t\tlet i;\n\t\t\tfor ( i = handlers.length; i > 0; i-- ) {\n\t\t\t\tif ( priority >= handlers[ i - 1 ].priority ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( i === handlers.length ) {\n\t\t\t\t// If append, operate via direct assignment.\n\t\t\t\thandlers[ i ] = handler;\n\t\t\t} else {\n\t\t\t\t// Otherwise, insert before index via splice.\n\t\t\t\thandlers.splice( i, 0, handler );\n\t\t\t}\n\n\t\t\t// We may also be currently executing this hook. If the callback\n\t\t\t// we're adding would come after the current callback, there's no\n\t\t\t// problem; otherwise we need to increase the execution index of\n\t\t\t// any other runs by 1 to account for the added element.\n\t\t\thooksStore.__current.forEach( ( hookInfo ) => {\n\t\t\t\tif (\n\t\t\t\t\thookInfo.name === hookName &&\n\t\t\t\t\thookInfo.currentIndex >= i\n\t\t\t\t) {\n\t\t\t\t\thookInfo.currentIndex++;\n\t\t\t\t}\n\t\t\t} );\n\t\t} else {\n\t\t\t// This is the first hook of its type.\n\t\t\thooksStore[ hookName ] = {\n\t\t\t\thandlers: [ handler ],\n\t\t\t\truns: 0,\n\t\t\t};\n\t\t}\n\n\t\tif ( hookName !== 'hookAdded' ) {\n\t\t\thooks.doAction(\n\t\t\t\t'hookAdded',\n\t\t\t\thookName,\n\t\t\t\tnamespace,\n\t\t\t\tcallback,\n\t\t\t\tpriority\n\t\t\t);\n\t\t}\n\t};\n}\n\nexport default createAddHook;\n","/**\n * Internal dependencies\n */\nimport validateNamespace from './validateNamespace.js';\nimport validateHookName from './validateHookName.js';\n\n/**\n * @callback RemoveHook\n * Removes the specified callback (or all callbacks) from the hook with a given hookName\n * and namespace.\n *\n * @param {string} hookName The name of the hook to modify.\n * @param {string} namespace The unique namespace identifying the callback in the\n * form `vendor/plugin/function`.\n *\n * @return {number | undefined} The number of callbacks removed.\n */\n\n/**\n * Returns a function which, when invoked, will remove a specified hook or all\n * hooks by the given name.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n * @param {boolean} [removeAll=false] Whether to remove all callbacks for a hookName,\n * without regard to namespace. Used to create\n * `removeAll*` functions.\n *\n * @return {RemoveHook} Function that removes hooks.\n */\nfunction createRemoveHook( hooks, storeKey, removeAll = false ) {\n\treturn function removeHook( hookName, namespace ) {\n\t\tconst hooksStore = hooks[ storeKey ];\n\n\t\tif ( ! validateHookName( hookName ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! removeAll && ! validateNamespace( namespace ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Bail if no hooks exist by this name.\n\t\tif ( ! hooksStore[ hookName ] ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tlet handlersRemoved = 0;\n\n\t\tif ( removeAll ) {\n\t\t\thandlersRemoved = hooksStore[ hookName ].handlers.length;\n\t\t\thooksStore[ hookName ] = {\n\t\t\t\truns: hooksStore[ hookName ].runs,\n\t\t\t\thandlers: [],\n\t\t\t};\n\t\t} else {\n\t\t\t// Try to find the specified callback to remove.\n\t\t\tconst handlers = hooksStore[ hookName ].handlers;\n\t\t\tfor ( let i = handlers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( handlers[ i ].namespace === namespace ) {\n\t\t\t\t\thandlers.splice( i, 1 );\n\t\t\t\t\thandlersRemoved++;\n\t\t\t\t\t// This callback may also be part of a hook that is\n\t\t\t\t\t// currently executing. If the callback we're removing\n\t\t\t\t\t// comes after the current callback, there's no problem;\n\t\t\t\t\t// otherwise we need to decrease the execution index of any\n\t\t\t\t\t// other runs by 1 to account for the removed element.\n\t\t\t\t\thooksStore.__current.forEach( ( hookInfo ) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\thookInfo.name === hookName &&\n\t\t\t\t\t\t\thookInfo.currentIndex >= i\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\thookInfo.currentIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( hookName !== 'hookRemoved' ) {\n\t\t\thooks.doAction( 'hookRemoved', hookName, namespace );\n\t\t}\n\n\t\treturn handlersRemoved;\n\t};\n}\n\nexport default createRemoveHook;\n","/**\n * @callback HasHook\n *\n * Returns whether any handlers are attached for the given hookName and optional namespace.\n *\n * @param {string} hookName The name of the hook to check for.\n * @param {string} [namespace] Optional. The unique namespace identifying the callback\n * in the form `vendor/plugin/function`.\n *\n * @return {boolean} Whether there are handlers that are attached to the given hook.\n */\n/**\n * Returns a function which, when invoked, will return whether any handlers are\n * attached to a particular hook.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n *\n * @return {HasHook} Function that returns whether any handlers are\n * attached to a particular hook and optional namespace.\n */\nfunction createHasHook( hooks, storeKey ) {\n\treturn function hasHook( hookName, namespace ) {\n\t\tconst hooksStore = hooks[ storeKey ];\n\n\t\t// Use the namespace if provided.\n\t\tif ( 'undefined' !== typeof namespace ) {\n\t\t\treturn (\n\t\t\t\thookName in hooksStore &&\n\t\t\t\thooksStore[ hookName ].handlers.some(\n\t\t\t\t\t( hook ) => hook.namespace === namespace\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\treturn hookName in hooksStore;\n\t};\n}\n\nexport default createHasHook;\n","/**\n * Returns a function which, when invoked, will execute all callbacks\n * registered to a hook of the specified type, optionally returning the final\n * value of the call chain.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n * @param {boolean} [returnFirstArg=false] Whether each hook callback is expected to\n * return its first argument.\n *\n * @return {(hookName:string, ...args: unknown[]) => undefined|unknown} Function that runs hook callbacks.\n */\nfunction createRunHook( hooks, storeKey, returnFirstArg = false ) {\n\treturn function runHooks( hookName, ...args ) {\n\t\tconst hooksStore = hooks[ storeKey ];\n\n\t\tif ( ! hooksStore[ hookName ] ) {\n\t\t\thooksStore[ hookName ] = {\n\t\t\t\thandlers: [],\n\t\t\t\truns: 0,\n\t\t\t};\n\t\t}\n\n\t\thooksStore[ hookName ].runs++;\n\n\t\tconst handlers = hooksStore[ hookName ].handlers;\n\n\t\t// The following code is stripped from production builds.\n\t\tif ( 'production' !== process.env.NODE_ENV ) {\n\t\t\t// Handle any 'all' hooks registered.\n\t\t\tif ( 'hookAdded' !== hookName && hooksStore.all ) {\n\t\t\t\thandlers.push( ...hooksStore.all.handlers );\n\t\t\t}\n\t\t}\n\n\t\tif ( ! handlers || ! handlers.length ) {\n\t\t\treturn returnFirstArg ? args[ 0 ] : undefined;\n\t\t}\n\n\t\tconst hookInfo = {\n\t\t\tname: hookName,\n\t\t\tcurrentIndex: 0,\n\t\t};\n\n\t\thooksStore.__current.push( hookInfo );\n\n\t\twhile ( hookInfo.currentIndex < handlers.length ) {\n\t\t\tconst handler = handlers[ hookInfo.currentIndex ];\n\n\t\t\tconst result = handler.callback.apply( null, args );\n\t\t\tif ( returnFirstArg ) {\n\t\t\t\targs[ 0 ] = result;\n\t\t\t}\n\n\t\t\thookInfo.currentIndex++;\n\t\t}\n\n\t\thooksStore.__current.pop();\n\n\t\tif ( returnFirstArg ) {\n\t\t\treturn args[ 0 ];\n\t\t}\n\n\t\treturn undefined;\n\t};\n}\n\nexport default createRunHook;\n","/**\n * Returns a function which, when invoked, will return the name of the\n * currently running hook, or `null` if no hook of the given type is currently\n * running.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n *\n * @return {() => string | null} Function that returns the current hook name or null.\n */\nfunction createCurrentHook( hooks, storeKey ) {\n\treturn function currentHook() {\n\t\tconst hooksStore = hooks[ storeKey ];\n\n\t\treturn (\n\t\t\thooksStore.__current[ hooksStore.__current.length - 1 ]?.name ??\n\t\t\tnull\n\t\t);\n\t};\n}\n\nexport default createCurrentHook;\n","/**\n * @callback DoingHook\n * Returns whether a hook is currently being executed.\n *\n * @param {string} [hookName] The name of the hook to check for. If\n * omitted, will check for any hook being executed.\n *\n * @return {boolean} Whether the hook is being executed.\n */\n\n/**\n * Returns a function which, when invoked, will return whether a hook is\n * currently being executed.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n *\n * @return {DoingHook} Function that returns whether a hook is currently\n * being executed.\n */\nfunction createDoingHook( hooks, storeKey ) {\n\treturn function doingHook( hookName ) {\n\t\tconst hooksStore = hooks[ storeKey ];\n\n\t\t// If the hookName was not passed, check for any current hook.\n\t\tif ( 'undefined' === typeof hookName ) {\n\t\t\treturn 'undefined' !== typeof hooksStore.__current[ 0 ];\n\t\t}\n\n\t\t// Return the __current hook.\n\t\treturn hooksStore.__current[ 0 ]\n\t\t\t? hookName === hooksStore.__current[ 0 ].name\n\t\t\t: false;\n\t};\n}\n\nexport default createDoingHook;\n","/**\n * Internal dependencies\n */\nimport validateHookName from './validateHookName.js';\n\n/**\n * @callback DidHook\n *\n * Returns the number of times an action has been fired.\n *\n * @param {string} hookName The hook name to check.\n *\n * @return {number | undefined} The number of times the hook has run.\n */\n\n/**\n * Returns a function which, when invoked, will return the number of times a\n * hook has been called.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n *\n * @return {DidHook} Function that returns a hook's call count.\n */\nfunction createDidHook( hooks, storeKey ) {\n\treturn function didHook( hookName ) {\n\t\tconst hooksStore = hooks[ storeKey ];\n\n\t\tif ( ! validateHookName( hookName ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn hooksStore[ hookName ] && hooksStore[ hookName ].runs\n\t\t\t? hooksStore[ hookName ].runs\n\t\t\t: 0;\n\t};\n}\n\nexport default createDidHook;\n","/**\n * Internal dependencies\n */\nimport createAddHook from './createAddHook';\nimport createRemoveHook from './createRemoveHook';\nimport createHasHook from './createHasHook';\nimport createRunHook from './createRunHook';\nimport createCurrentHook from './createCurrentHook';\nimport createDoingHook from './createDoingHook';\nimport createDidHook from './createDidHook';\n\n/**\n * Internal class for constructing hooks. Use `createHooks()` function\n *\n * Note, it is necessary to expose this class to make its type public.\n *\n * @private\n */\nexport class _Hooks {\n\tconstructor() {\n\t\t/** @type {import('.').Store} actions */\n\t\tthis.actions = Object.create( null );\n\t\tthis.actions.__current = [];\n\n\t\t/** @type {import('.').Store} filters */\n\t\tthis.filters = Object.create( null );\n\t\tthis.filters.__current = [];\n\n\t\tthis.addAction = createAddHook( this, 'actions' );\n\t\tthis.addFilter = createAddHook( this, 'filters' );\n\t\tthis.removeAction = createRemoveHook( this, 'actions' );\n\t\tthis.removeFilter = createRemoveHook( this, 'filters' );\n\t\tthis.hasAction = createHasHook( this, 'actions' );\n\t\tthis.hasFilter = createHasHook( this, 'filters' );\n\t\tthis.removeAllActions = createRemoveHook( this, 'actions', true );\n\t\tthis.removeAllFilters = createRemoveHook( this, 'filters', true );\n\t\tthis.doAction = createRunHook( this, 'actions' );\n\t\tthis.applyFilters = createRunHook( this, 'filters', true );\n\t\tthis.currentAction = createCurrentHook( this, 'actions' );\n\t\tthis.currentFilter = createCurrentHook( this, 'filters' );\n\t\tthis.doingAction = createDoingHook( this, 'actions' );\n\t\tthis.doingFilter = createDoingHook( this, 'filters' );\n\t\tthis.didAction = createDidHook( this, 'actions' );\n\t\tthis.didFilter = createDidHook( this, 'filters' );\n\t}\n}\n\n/** @typedef {_Hooks} Hooks */\n\n/**\n * Returns an instance of the hooks object.\n *\n * @return {Hooks} A Hooks instance.\n */\nfunction createHooks() {\n\treturn new _Hooks();\n}\n\nexport default createHooks;\n","/**\n * Internal dependencies\n */\nimport createHooks from './createHooks';\n\n/** @typedef {(...args: any[])=>any} Callback */\n\n/**\n * @typedef Handler\n * @property {Callback} callback The callback\n * @property {string} namespace The namespace\n * @property {number} priority The namespace\n */\n\n/**\n * @typedef Hook\n * @property {Handler[]} handlers Array of handlers\n * @property {number} runs Run counter\n */\n\n/**\n * @typedef Current\n * @property {string} name Hook name\n * @property {number} currentIndex The index\n */\n\n/**\n * @typedef {Record<string, Hook> & {__current: Current[]}} Store\n */\n\n/**\n * @typedef {'actions' | 'filters'} StoreKey\n */\n\n/**\n * @typedef {import('./createHooks').Hooks} Hooks\n */\n\nexport const defaultHooks = createHooks();\n\nconst {\n\taddAction,\n\taddFilter,\n\tremoveAction,\n\tremoveFilter,\n\thasAction,\n\thasFilter,\n\tremoveAllActions,\n\tremoveAllFilters,\n\tdoAction,\n\tapplyFilters,\n\tcurrentAction,\n\tcurrentFilter,\n\tdoingAction,\n\tdoingFilter,\n\tdidAction,\n\tdidFilter,\n\tactions,\n\tfilters,\n} = defaultHooks;\n\nexport {\n\tcreateHooks,\n\taddAction,\n\taddFilter,\n\tremoveAction,\n\tremoveFilter,\n\thasAction,\n\thasFilter,\n\tremoveAllActions,\n\tremoveAllFilters,\n\tdoAction,\n\tapplyFilters,\n\tcurrentAction,\n\tcurrentFilter,\n\tdoingAction,\n\tdoingFilter,\n\tdidAction,\n\tdidFilter,\n\tactions,\n\tfilters,\n};\n","/**\n * Internal dependencies\n */\nimport { createI18n } from './create-i18n';\n\n/**\n * WordPress dependencies\n */\nimport { defaultHooks } from '@wordpress/hooks';\n\nconst i18n = createI18n( undefined, undefined, defaultHooks );\n\n/**\n * Default, singleton instance of `I18n`.\n */\nexport default i18n;\n\n/*\n * Comments in this file are duplicated from ./i18n due to\n * https://github.com/WordPress/gutenberg/pull/20318#issuecomment-590837722\n */\n\n/**\n * @typedef {import('./create-i18n').LocaleData} LocaleData\n * @typedef {import('./create-i18n').SubscribeCallback} SubscribeCallback\n * @typedef {import('./create-i18n').UnsubscribeCallback} UnsubscribeCallback\n */\n\n/**\n * Returns locale data by domain in a Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @param {string} [domain] Domain for which to get the data.\n * @return {LocaleData} Locale data.\n */\nexport const getLocaleData = i18n.getLocaleData.bind( i18n );\n\n/**\n * Merges locale data into the Tannin instance by domain. Accepts data in a\n * Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @param {LocaleData} [data] Locale data configuration.\n * @param {string} [domain] Domain for which configuration applies.\n */\nexport const setLocaleData = i18n.setLocaleData.bind( i18n );\n\n/**\n * Resets all current Tannin instance locale data and sets the specified\n * locale data for the domain. Accepts data in a Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @param {LocaleData} [data] Locale data configuration.\n * @param {string} [domain] Domain for which configuration applies.\n */\nexport const resetLocaleData = i18n.resetLocaleData.bind( i18n );\n\n/**\n * Subscribes to changes of locale data\n *\n * @param {SubscribeCallback} callback Subscription callback\n * @return {UnsubscribeCallback} Unsubscribe callback\n */\nexport const subscribe = i18n.subscribe.bind( i18n );\n\n/**\n * Retrieve the translation of text.\n *\n * @see https://developer.wordpress.org/reference/functions/__/\n *\n * @param {string} text Text to translate.\n * @param {string} [domain] Domain to retrieve the translated text.\n *\n * @return {string} Translated text.\n */\nexport const __ = i18n.__.bind( i18n );\n\n/**\n * Retrieve translated string with gettext context.\n *\n * @see https://developer.wordpress.org/reference/functions/_x/\n *\n * @param {string} text Text to translate.\n * @param {string} context Context information for the translators.\n * @param {string} [domain] Domain to retrieve the translated text.\n *\n * @return {string} Translated context string without pipe.\n */\nexport const _x = i18n._x.bind( i18n );\n\n/**\n * Translates and retrieves the singular or plural form based on the supplied\n * number.\n *\n * @see https://developer.wordpress.org/reference/functions/_n/\n *\n * @param {string} single The text to be used if the number is singular.\n * @param {string} plural The text to be used if the number is plural.\n * @param {number} number The number to compare against to use either the\n * singular or plural form.\n * @param {string} [domain] Domain to retrieve the translated text.\n *\n * @return {string} The translated singular or plural form.\n */\nexport const _n = i18n._n.bind( i18n );\n\n/**\n * Translates and retrieves the singular or plural form based on the supplied\n * number, with gettext context.\n *\n * @see https://developer.wordpress.org/reference/functions/_nx/\n *\n * @param {string} single The text to be used if the number is singular.\n * @param {string} plural The text to be used if the number is plural.\n * @param {number} number The number to compare against to use either the\n * singular or plural form.\n * @param {string} context Context information for the translators.\n * @param {string} [domain] Domain to retrieve the translated text.\n *\n * @return {string} The translated singular or plural form.\n */\nexport const _nx = i18n._nx.bind( i18n );\n\n/**\n * Check if current locale is RTL.\n *\n * **RTL (Right To Left)** is a locale property indicating that text is written from right to left.\n * For example, the `he` locale (for Hebrew) specifies right-to-left. Arabic (ar) is another common\n * language written RTL. The opposite of RTL, LTR (Left To Right) is used in other languages,\n * including English (`en`, `en-US`, `en-GB`, etc.), Spanish (`es`), and French (`fr`).\n *\n * @return {boolean} Whether locale is RTL.\n */\nexport const isRTL = i18n.isRTL.bind( i18n );\n\n/**\n * Check if there is a translation for a given string (in singular form).\n *\n * @param {string} single Singular form of the string to look up.\n * @param {string} [context] Context information for the translators.\n * @param {string} [domain] Domain to retrieve the translated text.\n * @return {boolean} Whether the translation exists or not.\n */\nexport const hasTranslation = i18n.hasTranslation.bind( i18n );\n","import { __ } from \"@wordpress/i18n\";\nexport default class PaymentLink {\n constructor() {\n this.openCheckoutFieldSection();\n }\n\n openCheckoutFieldSection() {\n const url = new URLSearchParams(location.href);\n if (url.has(\"vindi-payment-link\")) {\n const addresses = document.querySelectorAll(\".edit_address\");\n\n addresses.forEach((address) => {\n address.style.display = \"block\";\n });\n\n if (url.has(\"gateway\")) {\n this.updateLinkGateway(url.get(\"gateway\"));\n }\n }\n }\n\n updateLinkGateway(gateway) {\n const select = document.querySelector(\"#_payment_method\");\n select.value = gateway;\n }\n}\n","export class ShippingTracking {\n constructor() {\n this.setEvents();\n }\n\n setEvents() {\n const button = document.querySelector(\"#wvp-tracking-save\");\n\n if (button) {\n button.addEventListener(\"click\", (e) => {\n e.preventDefault();\n\n const code = document.querySelector(\"#wvp-tracking-code\");\n const url = document.querySelector(\"#wvp-tracking-url\");\n const post = document.querySelector(\"#wvp-tracking-post\");\n\n if (code && post) {\n this.saveTrackingCode(code.value, url.value, post.value);\n }\n });\n }\n }\n\n saveTrackingCode(code, url, post) {\n const loader = document.querySelector(\".wvp-tracking\");\n loader?.classList.remove(\"wvp-tracking-hidden\");\n\n const body = new FormData();\n\n body.append(\"action\", \"save_tracking_code\");\n body.append(\"code\", code);\n body.append(\"url\", url);\n body.append(\"post\", post);\n\n if (!ajaxurl) {\n return;\n }\n\n fetch(ajaxurl, {\n method: \"POST\",\n body: body,\n })\n .then((response) => response.json())\n .then((data) => {\n if (data.status) {\n loader?.classList.add(\"wvp-tracking-hidden\");\n\n if (data.status == \"success\") {\n window.location.reload();\n } else {\n if (data.message) {\n this.handleMessage(data.message);\n }\n }\n }\n });\n }\n\n handleMessage(message) {\n const div = document.querySelector(\".wvp-tracking-edit-message\");\n div?.classList.remove(\"wvp-tracking-edit-message-hidden\");\n\n const element = document.querySelector(\"#wvp-tracking-message\");\n if (element) {\n element.innerHTML = message;\n }\n }\n}\n","/** Checks if value is string */\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n\n/** Checks if value is object */\nfunction isObject(obj) {\n var _obj$constructor;\n return typeof obj === 'object' && obj != null && (obj == null || (_obj$constructor = obj.constructor) == null ? void 0 : _obj$constructor.name) === 'Object';\n}\nfunction pick(obj, keys) {\n if (Array.isArray(keys)) return pick(obj, (_, k) => keys.includes(k));\n return Object.entries(obj).reduce((acc, _ref) => {\n let [k, v] = _ref;\n if (keys(v, k)) acc[k] = v;\n return acc;\n }, {});\n}\n\n/** Direction */\nconst DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n\n/** Direction */\n\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n default:\n return direction;\n }\n}\n\n/** Escapes regular expression control chars */\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n}\n\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n const arrA = Array.isArray(a),\n arrB = Array.isArray(b);\n let i;\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n const dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n const regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n const keys = Object.keys(a);\n // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n return false;\n}\n\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, isObject, isString, objectIncludes, pick };\n","import { DIRECTION } from './utils.js';\n\n/** Provides details of changing input */\nclass ActionDetails {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n\n constructor(opts) {\n Object.assign(this, opts);\n\n // double check if left part was changed (autofilling, other non-standard input triggers)\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n }\n\n /** Start changing position */\n get startChangePos() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /** Inserted symbols count */\n get insertedCount() {\n return this.cursorPos - this.startChangePos;\n }\n\n /** Inserted symbols */\n get inserted() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /** Removed symbols count */\n get removedCount() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos ||\n // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n\n /** Removed symbols */\n get removed() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /** Unchanged head symbols */\n get head() {\n return this.value.substring(0, this.startChangePos);\n }\n\n /** Unchanged tail symbols */\n get tail() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /** Remove direction */\n get removeDirection() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) &&\n // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n}\n\nexport { ActionDetails as default };\n","/** Applies mask on element */\nfunction IMask(el, opts) {\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\nexport { IMask as default };\n","import { isString, isObject, pick } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n// export function maskedClass(mask: string): typeof MaskedPattern;\n// export function maskedClass(mask: DateConstructor): typeof MaskedDate;\n// export function maskedClass(mask: NumberConstructor): typeof MaskedNumber;\n// export function maskedClass(mask: Array<any> | ArrayConstructor): typeof MaskedDynamic;\n// export function maskedClass(mask: MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass(mask: Masked): typeof Masked;\n// export function maskedClass(mask: typeof Masked): typeof Masked;\n// export function maskedClass(mask: typeof MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: typeof MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: typeof MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: typeof MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: typeof MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: typeof MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: typeof MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: typeof MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass<Mask extends typeof Masked> (mask: Mask): Mask;\n// export function maskedClass(mask: RegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: (value: string, ...args: any[]) => boolean): typeof MaskedFunction;\n/** Get Masked class by mask type */\nfunction maskedClass(mask) /* TODO */{\n if (mask == null) throw new Error('mask property should be defined');\n if (mask instanceof RegExp) return IMask.MaskedRegExp;\n if (isString(mask)) return IMask.MaskedPattern;\n if (mask === Date) return IMask.MaskedDate;\n if (mask === Number) return IMask.MaskedNumber;\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask;\n if (IMask.Masked && mask instanceof IMask.Masked) return mask.constructor;\n if (mask instanceof Function) return IMask.MaskedFunction;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n return IMask.Masked;\n}\nfunction normalizeOpts(opts) {\n if (!opts) throw new Error('Options in not defined');\n if (IMask.Masked) {\n if (opts.prototype instanceof IMask.Masked) return {\n mask: opts\n };\n\n /*\n handle cases like:\n 1) opts = Masked\n 2) opts = { mask: Masked, ...instanceOpts }\n */\n const {\n mask = undefined,\n ...instanceOpts\n } = opts instanceof IMask.Masked ? {\n mask: opts\n } : isObject(opts) && opts.mask instanceof IMask.Masked ? opts : {};\n if (mask) {\n const _mask = mask.mask;\n return {\n ...pick(mask, (_, k) => !k.startsWith('_')),\n mask: mask.constructor,\n _mask,\n ...instanceOpts\n };\n }\n }\n if (!isObject(opts)) return {\n mask: opts\n };\n return {\n ...opts\n };\n}\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n\n// From masked\n// export default function createMask<Opts extends Masked, ReturnMasked=Opts> (opts: Opts): ReturnMasked;\n// // From masked class\n// export default function createMask<Opts extends MaskedOptions<typeof Masked>, ReturnMasked extends Masked=InstanceType<Opts['mask']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedDate>, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedNumber>, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedEnum>, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedRange>, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedRegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedFunction>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedPattern>, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedDynamic>, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n// // From mask opts\n// export default function createMask<Opts extends MaskedOptions<Masked>, ReturnMasked=Opts extends MaskedOptions<infer M> ? M : never> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedNumberOptions, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedDateFactoryOptions, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedEnumOptions, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedRangeOptions, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedPatternOptions, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedDynamicOptions, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<RegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<Function>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n\n/** Creates new {@link Masked} depending on mask type */\nfunction createMask(opts) {\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n const nOpts = normalizeOpts(opts);\n const MaskedClass = maskedClass(nOpts.mask);\n if (!MaskedClass) throw new Error('Masked class is not found for provided mask, appropriate module needs to be imported manually before creating mask.');\n if (nOpts.mask === MaskedClass) delete nOpts.mask;\n if (nOpts._mask) {\n nOpts.mask = nOpts._mask;\n delete nOpts._mask;\n }\n return new MaskedClass(nOpts);\n}\nIMask.createMask = createMask;\n\nexport { createMask as default, maskedClass, normalizeOpts };\n","import IMask from '../core/holder.js';\n\n/** Generic element API to use with mask */\nclass MaskElement {\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n get selectionStart() {\n let start;\n try {\n start = this._unsafeSelectionStart;\n } catch {}\n return start != null ? start : this.value.length;\n }\n\n /** Safely returns selection end */\n get selectionEnd() {\n let end;\n try {\n end = this._unsafeSelectionEnd;\n } catch {}\n return end != null ? end : this.value.length;\n }\n\n /** Safely sets element selection */\n select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n try {\n this._unsafeSelect(start, end);\n } catch {}\n }\n\n /** */\n get isActive() {\n return false;\n }\n /** */\n\n /** */\n\n /** */\n}\n\nIMask.MaskElement = MaskElement;\n\nexport { MaskElement as default };\n","import MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\n/** Bridge between HTMLElement and {@link Masked} */\nclass HTMLMaskElement extends MaskElement {\n /** HTMLElement to use mask on */\n\n constructor(input) {\n super();\n this.input = input;\n this._handlers = {};\n }\n get rootElement() {\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) == null ? void 0 : _this$input$getRootNo2.call(_this$input)) != null ? _this$input$getRootNo : document;\n }\n\n /**\n Is element in focus\n */\n get isActive() {\n return this.input === this.rootElement.activeElement;\n }\n\n /**\n Binds HTMLElement events to mask internal events\n */\n bindEvents(handlers) {\n Object.keys(handlers).forEach(event => this._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event]));\n }\n\n /**\n Unbinds HTMLElement events to mask internal events\n */\n unbindEvents() {\n Object.keys(this._handlers).forEach(event => this._toggleEventHandler(event));\n }\n _toggleEventHandler(event, handler) {\n if (this._handlers[event]) {\n this.input.removeEventListener(event, this._handlers[event]);\n delete this._handlers[event];\n }\n if (handler) {\n this.input.addEventListener(event, handler);\n this._handlers[event] = handler;\n }\n }\n}\n/** Mapping between HTMLElement events and mask internal events */\nHTMLMaskElement.EVENTS_MAP = {\n selectionChange: 'keydown',\n input: 'input',\n drop: 'drop',\n click: 'click',\n focus: 'focus',\n commit: 'blur'\n};\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\n/** Bridge between InputElement and {@link Masked} */\nclass HTMLInputMaskElement extends HTMLMaskElement {\n /** InputElement to use mask on */\n\n constructor(input) {\n super(input);\n this.input = input;\n this._handlers = {};\n }\n\n /** Returns InputElement selection start */\n get _unsafeSelectionStart() {\n return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;\n }\n\n /** Returns InputElement selection end */\n get _unsafeSelectionEnd() {\n return this.input.selectionEnd;\n }\n\n /** Sets InputElement selection */\n _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLInputMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nclass HTMLContenteditableMaskElement extends HTMLMaskElement {\n /** Returns HTMLElement selection start */\n get _unsafeSelectionStart() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Returns HTMLElement selection end */\n get _unsafeSelectionEnd() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Sets HTMLElement selection */\n _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n const range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n /** HTMLElement value */\n get value() {\n return this.input.textContent || '';\n }\n set value(value) {\n this.input.textContent = value;\n }\n}\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n","import { objectIncludes, DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLInputMaskElement from './html-input-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './html-mask-element.js';\n\n/** Listens to element events and controls changes between element and {@link Masked} */\nclass InputMask {\n /**\n View element\n */\n\n /** Internal {@link Masked} model */\n\n constructor(el, opts) {\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLInputMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n maskEquals(mask) {\n var _this$masked;\n return mask == null || ((_this$masked = this.masked) == null ? void 0 : _this$masked.maskEquals(mask));\n }\n\n /** Masked */\n get mask() {\n return this.masked.mask;\n }\n set mask(mask) {\n if (this.maskEquals(mask)) return;\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n // TODO \"any\" no idea\n this.masked.updateOptions({\n mask\n });\n return;\n }\n const masked = mask instanceof IMask.Masked ? mask : createMask({\n mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value() {\n return this._value;\n }\n set value(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Unmasked value */\n get unmaskedValue() {\n return this._unmaskedValue;\n }\n set unmaskedValue(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue() {\n return this.masked.typedValue;\n }\n set typedValue(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Display value */\n get displayValue() {\n return this.masked.displayValue;\n }\n\n /** Starts listening to element events */\n _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange\n });\n }\n\n /** Stops listening to element events */\n _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n\n /** Fires custom event */\n _fireEvent(ev, e) {\n const listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(l => l(e));\n }\n\n /** Current selection start */\n get selectionStart() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n }\n set cursorPos(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /** Stores current selection */\n _saveSelection( /* ev */\n ) {\n if (this.displayValue !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl() {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const newDisplayValue = this.displayValue;\n const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\n if (isChanged) this._fireChangeEvents();\n }\n\n /** Updates options with deep equal check, recreates {@link Masked} model if mask type changes */\n updateOptions(opts) {\n const {\n mask,\n ...restOpts\n } = opts;\n const updateMask = !this.maskEquals(mask);\n const updateOpts = !objectIncludes(this.masked, restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts); // TODO\n\n if (updateMask || updateOpts) this.updateControl();\n }\n\n /** Updates cursor */\n updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /** Delays cursor update to support mobile browsers */\n _delayUpdateCursor(cursorPos) {\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(() => {\n if (!this.el) return; // if was destroyed\n this.cursorPos = this._changingCursorPos;\n this._abortUpdateCursor();\n }, 10);\n }\n\n /** Fires custom events */\n _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n\n /** Aborts delayed cursor update */\n _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n\n /** Aligns cursor only if selection is empty */\n alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n off(ev, handler) {\n if (!this._listeners[ev]) return this;\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n const hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n _onInput(e) {\n this._inputEvent = e;\n this._abortUpdateCursor();\n\n // fix strange IE behavior\n if (!this._selection) return this.updateValue();\n const details = new ActionDetails({\n // new state\n value: this.el.value,\n cursorPos: this.cursorPos,\n // old state\n oldValue: this.displayValue,\n oldSelection: this._selection\n });\n const oldRawValue = this.masked.rawInputValue;\n const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset;\n\n // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl();\n this.updateCursor(cursorPos);\n delete this._inputEvent;\n }\n\n /** Handles view change event and commits model value */\n _onChange() {\n if (this.displayValue !== this.el.value) {\n this.updateValue();\n }\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus(ev) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick(ev) {\n this.alignCursorFriendly();\n }\n\n /** Unbind view events and removes element reference */\n destroy() {\n this._unbindEvents();\n this._listeners.length = 0;\n delete this.el;\n }\n}\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n","import IMask from './holder.js';\n\n/** Provides details of changing model value */\nclass ChangeDetails {\n /** Inserted symbols */\n\n /** Can skip chars */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n\n static normalize(prep) {\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\n }\n constructor(details) {\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n skip: false,\n tailShift: 0\n }, details);\n }\n\n /** Aggregate changes */\n aggregate(details) {\n this.rawInserted += details.rawInserted;\n this.skip = this.skip || details.skip;\n this.inserted += details.inserted;\n this.tailShift += details.tailShift;\n return this;\n }\n\n /** Total offset considering all changes */\n get offset() {\n return this.tailShift + this.inserted.length;\n }\n}\nIMask.ChangeDetails = ChangeDetails;\n\nexport { ChangeDetails as default };\n","/** Provides details of continuous extracted tail */\nclass ContinuousTailDetails {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n\n constructor(value, from, stop) {\n if (value === void 0) {\n value = '';\n }\n if (from === void 0) {\n from = 0;\n }\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n toString() {\n return this.value;\n }\n extend(tail) {\n this.value += String(tail);\n }\n appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n get state() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n unshift(beforePos) {\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\n const shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n shift() {\n if (!this.value.length) return '';\n const shiftChar = this.value[this.value.length - 1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n}\n\nexport { ContinuousTailDetails as default };\n","import ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString, DIRECTION, forceDirection } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Append flags */\n\n/** Extract flags */\n\n// see https://github.com/microsoft/TypeScript/issues/6223\n\n/** Provides common masking stuff */\nclass Masked {\n /** */\n\n /** */\n\n /** Transforms value before mask processing */\n\n /** Transforms each char before mask processing */\n\n /** Validates if value is acceptable */\n\n /** Does additional processing at the end of editing */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n this._value = '';\n this._update({\n ...Masked.DEFAULTS,\n ...opts\n });\n this._initialized = true;\n }\n\n /** Sets and applies new options */\n updateOptions(opts) {\n if (!Object.keys(opts).length) return;\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /** Sets new options */\n _update(opts) {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset() {\n this._value = '';\n }\n get value() {\n return this._value;\n }\n set value(value) {\n this.resolve(value, {\n input: true\n });\n }\n\n /** Resolve new value */\n resolve(value, flags) {\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n this.reset();\n this.append(value, flags, '');\n this.doCommit();\n }\n get unmaskedValue() {\n return this.value;\n }\n set unmaskedValue(value) {\n this.resolve(value, {});\n }\n get typedValue() {\n return this.parse ? this.parse(this.value, this) : this.unmaskedValue;\n }\n set typedValue(value) {\n if (this.format) {\n this.value = this.format(value, this);\n } else {\n this.unmaskedValue = String(value);\n }\n }\n\n /** Value that includes raw user input */\n get rawInputValue() {\n return this.extractInput(0, this.displayValue.length, {\n raw: true\n });\n }\n set rawInputValue(value) {\n this.resolve(value, {\n raw: true\n });\n }\n get displayValue() {\n return this.value;\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return Math.min(this.displayValue.length, toPos - fromPos);\n }\n\n /** Extracts value in range considering flags */\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return this.displayValue.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n\n /** Appends char */\n _appendCharRaw(ch, flags) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n\n /** Appends char */\n _appendChar(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const consistentState = this.state;\n let details;\n [ch, details] = this.doPrepareChar(ch, flags);\n details = details.aggregate(this._appendCharRaw(ch, flags));\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n if (appended && checkTail != null) {\n // validation ok, check tail\n const beforeTailState = this.state;\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n checkTail.unshift(this.displayValue.length - details.tailShift);\n }\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n checkTail.shift();\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n }\n\n // if ok, rollback state after tail\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n }\n\n // revert all if something went wrong\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n return details;\n }\n\n /** Appends optional placeholder at the end */\n _appendPlaceholder() {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at the end */\n _appendEager() {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags != null && flags.tail) flags._beforeTailState = this.state;\n let details;\n [str, details] = this.doPrepare(str, flags);\n for (let ci = 0; ci < str.length; ++ci) {\n const d = this._appendChar(str[ci], flags, checkTail);\n if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break;\n details.aggregate(d);\n }\n if ((this.eager === true || this.eager === 'append') && flags != null && flags.input && str) {\n details.aggregate(this._appendEager());\n }\n\n // append tail but aggregate only tailShift\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift;\n // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n\n return details;\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n this._value = this.displayValue.slice(0, fromPos) + this.displayValue.slice(toPos);\n return new ChangeDetails();\n }\n\n /** Calls function and reapplies current value */\n withValueRefresh(fn) {\n if (this._refreshing || !this._initialized) return fn();\n this._refreshing = true;\n const rawInput = this.rawInputValue;\n const value = this.value;\n const ret = fn();\n this.rawInputValue = rawInput;\n // append lost trailing chars at the end\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.displayValue.length), {}, '');\n }\n delete this._refreshing;\n return ret;\n }\n runIsolated(fn) {\n if (this._isolated || !this._initialized) return fn(this);\n this._isolated = true;\n const state = this.state;\n const ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n doSkipInvalid(ch, flags, checkTail) {\n return Boolean(this.skipInvalid);\n }\n\n /** Prepares string before mask processing */\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepare ? this.prepare(str, this, flags) : str);\n }\n\n /** Prepares each char before mask processing */\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepareChar ? this.prepareChar(str, this, flags) : str);\n }\n\n /** Validates if value is acceptable */\n doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n\n /** Does additional processing at the end of editing */\n doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n splice(start, deleteCount, inserted, removeDirection, flags) {\n if (removeDirection === void 0) {\n removeDirection = DIRECTION.NONE;\n }\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n const tailPos = start + deleteCount;\n const tail = this.extractTail(tailPos);\n const eagerRemove = this.eager === true || this.eager === 'remove';\n let oldRawValue;\n if (eagerRemove) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {\n raw: true\n });\n }\n let startChangePos = start;\n const details = new ChangeDetails();\n\n // if it is just deletion without insertion\n if (removeDirection !== DIRECTION.NONE) {\n startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection);\n\n // adjust tailShift if start was aligned\n details.tailShift = startChangePos - start;\n }\n details.aggregate(this.remove(startChangePos));\n if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n let valLength;\n while (oldRawValue === this.rawInputValue && (valLength = this.displayValue.length)) {\n details.aggregate(new ChangeDetails({\n tailShift: -1\n })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n return details.aggregate(this.append(inserted, flags, tail));\n }\n maskEquals(mask) {\n return this.mask === mask;\n }\n typedValueEquals(value) {\n const tval = this.typedValue;\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || (this.format ? this.format(value, this) === this.format(this.typedValue, this) : false);\n }\n}\nMasked.DEFAULTS = {\n skipInvalid: true\n};\nMasked.EMPTY_VALUES = [undefined, null, ''];\nIMask.Masked = Masked;\n\nexport { Masked as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nclass ChunksTailDetails {\n /** */\n\n constructor(chunks, from) {\n if (chunks === void 0) {\n chunks = [];\n }\n if (from === void 0) {\n from = 0;\n }\n this.chunks = chunks;\n this.from = from;\n }\n toString() {\n return this.chunks.map(String).join('');\n }\n extend(tailChunk) {\n if (!String(tailChunk)) return;\n tailChunk = isString(tailChunk) ? new ContinuousTailDetails(String(tailChunk)) : tailChunk;\n const lastChunk = this.chunks[this.chunks.length - 1];\n const extendLast = lastChunk && (\n // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) &&\n // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n let firstTailChunk;\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift(); // not possible to be `undefined` because length was checked above\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n }\n\n // if tail chunk still has value\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n appendTo(masked) {\n if (!(masked instanceof IMask.MaskedPattern)) {\n const tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n const details = new ChangeDetails();\n for (let ci = 0; ci < this.chunks.length && !details.skip; ++ci) {\n const chunk = this.chunks[ci];\n const lastBlockIter = masked._mapPosToBlock(masked.displayValue.length);\n const stop = chunk.stop;\n let chunkBlock;\n if (stop != null && (\n // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails ||\n // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n const phDetails = masked._appendPlaceholder(stop);\n details.aggregate(phDetails);\n }\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n if (chunkBlock) {\n const tailDetails = chunkBlock.appendTail(chunk);\n tailDetails.skip = false; // always ignore skip, it will be set on last\n details.aggregate(tailDetails);\n masked._value += tailDetails.inserted;\n\n // get not inserted chars\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n get state() {\n return {\n chunks: this.chunks.map(c => c.state),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n }\n set state(state) {\n const {\n chunks,\n ...props\n } = state;\n Object.assign(this, props);\n this.chunks = chunks.map(cstate => {\n const chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails();\n chunk.state = cstate;\n return chunk;\n });\n }\n unshift(beforePos) {\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\n const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n let ci = 0;\n while (ci < this.chunks.length) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.unshift(chunkShiftPos);\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n shift() {\n if (!this.chunks.length) return '';\n let ci = this.chunks.length - 1;\n while (0 <= ci) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.shift();\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n}\n\nexport { ChunksTailDetails as default };\n","import { DIRECTION } from '../../core/utils.js';\n\nclass PatternCursor {\n constructor(masked, pos) {\n this.masked = masked;\n this._log = [];\n const {\n offset,\n index\n } = masked._mapPosToBlock(pos) || (pos < 0 ?\n // first\n {\n index: 0,\n offset: 0\n } :\n // last\n {\n index: this.masked._blocks.length,\n offset: 0\n });\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n get block() {\n return this.masked._blocks[this.index];\n }\n get pos() {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n get state() {\n return {\n index: this.index,\n offset: this.offset,\n ok: this.ok\n };\n }\n set state(s) {\n Object.assign(this, s);\n }\n pushState() {\n this._log.push(this.state);\n }\n popState() {\n const s = this._log.pop();\n if (s) this.state = s;\n return s;\n }\n bindBlock() {\n if (this.block) return;\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.displayValue.length; // TODO this is stupid type error, `block` depends on index that was changed above\n }\n }\n\n _pushLeft(fn) {\n this.pushState();\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) == null ? void 0 : _this$block.displayValue.length) || 0) {\n var _this$block;\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n _pushRight(fn) {\n this.pushState();\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n pushLeftBeforeFilled() {\n return this._pushLeft(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\n if (this.offset !== 0) return true;\n });\n }\n pushLeftBeforeInput() {\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(() => {\n if (this.block.isFixed) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushLeftBeforeRequired() {\n return this._pushLeft(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushRightBeforeFilled() {\n return this._pushRight(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\n if (this.offset !== this.block.value.length) return true;\n });\n }\n pushRightBeforeInput() {\n return this._pushRight(() => {\n if (this.block.isFixed) return;\n\n // const o = this.offset;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aa<X|[]>X_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n return true;\n });\n }\n pushRightBeforeRequired() {\n return this._pushRight(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n // TODO check |[*]XX_\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n return true;\n });\n }\n}\n\nexport { PatternCursor as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport '../../core/holder.js';\n\nclass PatternFixedDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n get value() {\n return this._value;\n }\n get unmaskedValue() {\n return this.isUnmasking ? this.value : '';\n }\n get rawInputValue() {\n return this._isRawInput ? this.value : '';\n }\n get displayValue() {\n return this.value;\n }\n reset() {\n this._isRawInput = false;\n this._value = '';\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this._value.length;\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n return this._isRawInput ? toPos - fromPos : 0;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return Boolean(this._value);\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n const appendEager = this.eager === true || this.eager === 'append';\n const appended = this.char === ch;\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail;\n if (isResolved) details.rawInserted = this.char;\n this._value = details.inserted = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n _appendEager() {\n return this._appendChar(this.char, {\n tail: true\n });\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n extractTail() {\n return new ContinuousTailDetails('');\n }\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n append(str, flags, tail) {\n const details = this._appendChar(str[0], flags);\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n return details;\n }\n doCommit() {}\n get state() {\n return {\n _value: this._value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n this._isRawInput = Boolean(state._rawInputValue);\n }\n}\n\nexport { PatternFixedDefinition as default };\n","import createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nclass PatternInputDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n const {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager,\n ...maskOpts\n } = opts;\n this.masked = createMask(maskOpts);\n Object.assign(this, {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n });\n }\n reset() {\n this.isFilled = false;\n this.masked.reset();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n return new ChangeDetails();\n }\n get value() {\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n get unmaskedValue() {\n return this.masked.unmaskedValue;\n }\n get rawInputValue() {\n return this.masked.rawInputValue;\n }\n get displayValue() {\n return this.masked.value && this.displayChar || this.value;\n }\n get isComplete() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const state = this.masked.state;\n // simulate input\n const details = this.masked._appendChar(ch, this.currentMaskFlags(flags));\n if (details.inserted && this.doValidate(flags) === false) {\n details.inserted = details.rawInserted = '';\n this.masked.state = state;\n }\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n return details;\n }\n append(str, flags, tail) {\n // TODO probably should be done via _appendChar\n return this.masked.append(str, this.currentMaskFlags(flags), tail);\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled || this.isOptional) return details;\n this.isFilled = true;\n details.inserted = this.placeholderChar;\n return details;\n }\n _appendEager() {\n return new ChangeDetails();\n }\n extractTail(fromPos, toPos) {\n return this.masked.extractTail(fromPos, toPos);\n }\n appendTail(tail) {\n return this.masked.appendTail(tail);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this.value.length;\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.value.slice(fromPos, toPos).length;\n }\n doValidate(flags) {\n return this.masked.doValidate(this.currentMaskFlags(flags)) && (!this.parent || this.parent.doValidate(this.currentMaskFlags(flags)));\n }\n doCommit() {\n this.masked.doCommit();\n }\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue,\n masked: this.masked.state,\n isFilled: this.isFilled\n };\n }\n set state(state) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta;\n return {\n ...flags,\n _beforeTailState: (flags == null || (_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.masked) || (flags == null ? void 0 : flags._beforeTailState)\n };\n }\n}\nPatternInputDefinition.DEFAULT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n\nexport { PatternInputDefinition as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\nclass MaskedRegExp extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const mask = opts.mask;\n if (mask) opts.validate = value => value.search(mask) >= 0;\n super._update(opts);\n }\n}\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport { MaskedRegExp as default };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport { DIRECTION } from '../core/utils.js';\nimport Masked from './base.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport PatternCursor from './pattern/cursor.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport PatternInputDefinition from './pattern/input-definition.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\n/** Pattern mask */\nclass MaskedPattern extends Masked {\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Single char for filled input */\n\n /** Show placeholder only when needed */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n constructor(opts) {\n super({\n ...MaskedPattern.DEFAULTS,\n ...opts,\n definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts == null ? void 0 : opts.definitions)\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n _rebuildMask() {\n const defs = this.definitions;\n this._blocks = [];\n this.exposeBlock = undefined;\n this._stops = [];\n this._maskedBlocks = {};\n const pattern = this.mask;\n if (!pattern || !defs) return;\n let unmaskingBlock = false;\n let optionalBlock = false;\n for (let i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n const p = pattern.slice(i);\n const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0);\n // order by key length\n bNames.sort((a, b) => b.length - a.length);\n // use block name with max length\n const bName = bNames[0];\n if (bName) {\n const {\n expose,\n ...blockOpts\n } = normalizeOpts(this.blocks[bName]);\n const maskedBlock = createMask({\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n overwrite: this.overwrite,\n ...blockOpts,\n parent: this\n });\n if (maskedBlock) {\n this._blocks.push(maskedBlock);\n if (expose) this.exposeBlock = maskedBlock;\n\n // store block index\n if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = [];\n this._maskedBlocks[bName].push(this._blocks.length - 1);\n }\n i += bName.length - 1;\n continue;\n }\n }\n let char = pattern[i];\n let isInput = (char in defs);\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n const def = isInput ? new PatternInputDefinition({\n isOptional: optionalBlock,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n ...normalizeOpts(defs[char]),\n parent: this\n }) : new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock\n });\n this._blocks.push(def);\n }\n }\n get state() {\n return {\n ...super.state,\n _blocks: this._blocks.map(b => b.state)\n };\n }\n set state(state) {\n const {\n _blocks,\n ...maskedState\n } = state;\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\n super.state = maskedState;\n }\n reset() {\n super.reset();\n this._blocks.forEach(b => b.reset());\n }\n get isComplete() {\n return this.exposeBlock ? this.exposeBlock.isComplete : this._blocks.every(b => b.isComplete);\n }\n get isFilled() {\n return this._blocks.every(b => b.isFilled);\n }\n get isFixed() {\n return this._blocks.every(b => b.isFixed);\n }\n get isOptional() {\n return this._blocks.every(b => b.isOptional);\n }\n doCommit() {\n this._blocks.forEach(b => b.doCommit());\n super.doCommit();\n }\n get unmaskedValue() {\n return this.exposeBlock ? this.exposeBlock.unmaskedValue : this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.unmaskedValue = unmaskedValue;\n this.appendTail(tail);\n this.doCommit();\n } else super.unmaskedValue = unmaskedValue;\n }\n get value() {\n return this.exposeBlock ? this.exposeBlock.value :\n // TODO return _value when not in change?\n this._blocks.reduce((str, b) => str += b.value, '');\n }\n set value(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.value = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.value = value;\n }\n get typedValue() {\n return this.exposeBlock ? this.exposeBlock.typedValue : super.typedValue;\n }\n set typedValue(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.typedValue = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.typedValue = value;\n }\n get displayValue() {\n return this._blocks.reduce((str, b) => str += b.displayValue, '');\n }\n appendTail(tail) {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n _appendEager() {\n var _this$_mapPosToBlock;\n const details = new ChangeDetails();\n let startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index;\n if (startBlockIndex == null) return details;\n\n // TODO test if it works for nested pattern masks\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n const d = this._blocks[bi]._appendEager();\n if (!d.inserted) break;\n details.aggregate(d);\n }\n return details;\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const blockIter = this._mapPosToBlock(this.displayValue.length);\n const details = new ChangeDetails();\n if (!blockIter) return details;\n for (let bi = blockIter.index;; ++bi) {\n var _flags$_beforeTailSta;\n const block = this._blocks[bi];\n if (!block) break;\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\n });\n const skip = blockDetails.skip;\n details.aggregate(blockDetails);\n if (skip || blockDetails.rawInserted) break; // go next char\n }\n\n return details;\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => {\n const blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = this._findStopBefore(bi);\n blockChunk.from = this._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n return chunkTail;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n if (fromPos === toPos) return '';\n let input = '';\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n return input;\n }\n _findStopBefore(blockIndex) {\n let stopBefore;\n for (let si = 0; si < this._stops.length; ++si) {\n const stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n return stopBefore;\n }\n\n /** Appends placeholder depending on laziness */\n _appendPlaceholder(toBlockIndex) {\n const details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n const startBlockIter = this._mapPosToBlock(this.displayValue.length);\n if (!startBlockIter) return details;\n const startBlockIndex = startBlockIter.index;\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => {\n if (!b.lazy || toBlockIndex != null) {\n var _blocks2;\n const bDetails = b._appendPlaceholder((_blocks2 = b._blocks) == null ? void 0 : _blocks2.length);\n this._value += bDetails.inserted;\n details.aggregate(bDetails);\n }\n });\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock(pos) {\n let accVal = '';\n for (let bi = 0; bi < this._blocks.length; ++bi) {\n const block = this._blocks[bi];\n const blockStartPos = accVal.length;\n accVal += block.displayValue;\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.displayValue.length, 0);\n }\n _forEachBlocksInRange(fromPos, toPos, fn) {\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const fromBlockIter = this._mapPosToBlock(fromPos);\n if (fromBlockIter) {\n const toBlockIter = this._mapPosToBlock(toPos);\n // process first block\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n const fromBlockStartPos = fromBlockIter.offset;\n const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].displayValue.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].displayValue.length);\n }\n\n // process last block\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n return removeDetails;\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n if (!this._blocks.length) return 0;\n const cursor = new PatternCursor(this, cursorPos);\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.displayValue.length;\n }\n\n // FORCE is only about a|* otherwise is 0\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n }\n\n // forward flow\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled();\n\n // backward flow\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return 0;\n }\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.displayValue.length;\n\n // backward flow\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n let total = 0;\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n total += b.totalInputPositions(bFromPos, bToPos);\n });\n return total;\n }\n\n /** Get block by name */\n maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks(name) {\n const indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(gi => this._blocks[gi]);\n }\n}\nMaskedPattern.DEFAULTS = {\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\nIMask.MaskedPattern = MaskedPattern;\n\nexport { MaskedPattern as default };\n","import IMask from '../core/holder.js';\nimport MaskedPattern from './pattern.js';\nimport '../core/change-details.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which accepts ranges */\nclass MaskedRange extends MaskedPattern {\n /**\n Optionally sets max length of pattern.\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n */\n\n /** Min bound */\n\n /** Max bound */\n\n /** */\n\n get _matchFrom() {\n return this.maxLength - String(this.from).length;\n }\n constructor(opts) {\n super(opts); // mask will be created in _update\n }\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n to = this.to || 0,\n from = this.from || 0,\n maxLength = this.maxLength || 0,\n autofix = this.autofix,\n ...patternOpts\n } = opts;\n this.to = to;\n this.from = from;\n this.maxLength = Math.max(String(to).length, maxLength);\n this.autofix = autofix;\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n let sameCharsCount = 0;\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) ++sameCharsCount;\n patternOpts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(this.maxLength - sameCharsCount);\n super._update(patternOpts);\n }\n get isComplete() {\n return super.isComplete && Boolean(this.value);\n }\n boundaries(str) {\n let minstr = '';\n let maxstr = '';\n const [, placeholder, num] = str.match(/^(\\D*)(\\d*)(\\D*)/) || [];\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let details;\n [ch, details] = super.doPrepareChar(ch.replace(/\\D/g, ''), flags);\n if (!this.autofix || !ch) return [ch, details];\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n const nextVal = this.value + ch;\n if (nextVal.length > this.maxLength) return ['', details];\n const [minstr, maxstr] = this.boundaries(nextVal);\n if (Number(maxstr) < this.from) return [fromStr[nextVal.length - 1], details];\n if (Number(minstr) > this.to) {\n if (this.autofix === 'pad' && nextVal.length < this.maxLength) {\n return ['', details.aggregate(this.append(fromStr[nextVal.length - 1] + ch, flags))];\n }\n return [toStr[nextVal.length - 1], details];\n }\n return [ch, details];\n }\n doValidate(flags) {\n const str = this.value;\n const firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n const [minstr, maxstr] = this.boundaries(str);\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && super.doValidate(flags);\n }\n}\nIMask.MaskedRange = MaskedRange;\n\nexport { MaskedRange as default };\n","import MaskedPattern from './pattern.js';\nimport MaskedRange from './range.js';\nimport IMask from '../core/holder.js';\nimport { isString } from '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Date mask */\nclass MaskedDate extends MaskedPattern {\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n const {\n mask,\n pattern,\n ...patternOpts\n } = {\n ...MaskedDate.DEFAULTS,\n ...opts\n };\n super({\n ...patternOpts,\n mask: isString(mask) ? mask : pattern\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n mask,\n pattern,\n blocks,\n ...patternOpts\n } = {\n ...MaskedDate.DEFAULTS,\n ...opts\n };\n const patternBlocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS());\n // adjust year block\n if (opts.min) patternBlocks.Y.from = opts.min.getFullYear();\n if (opts.max) patternBlocks.Y.to = opts.max.getFullYear();\n if (opts.min && opts.max && patternBlocks.Y.from === patternBlocks.Y.to) {\n patternBlocks.m.from = opts.min.getMonth() + 1;\n patternBlocks.m.to = opts.max.getMonth() + 1;\n if (patternBlocks.m.from === patternBlocks.m.to) {\n patternBlocks.d.from = opts.min.getDate();\n patternBlocks.d.to = opts.max.getDate();\n }\n }\n Object.assign(patternBlocks, this.blocks, blocks);\n\n // add autofix\n Object.keys(patternBlocks).forEach(bk => {\n const b = patternBlocks[bk];\n if (!('autofix' in b) && 'autofix' in opts) b.autofix = opts.autofix;\n });\n super._update({\n ...patternOpts,\n mask: isString(mask) ? mask : pattern,\n blocks: patternBlocks\n });\n }\n doValidate(flags) {\n const date = this.date;\n return super.doValidate(flags) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n\n /** Checks if date is exists */\n isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n\n /** Parsed Date */\n get date() {\n return this.typedValue;\n }\n set date(date) {\n this.typedValue = date;\n }\n get typedValue() {\n return this.isComplete ? super.typedValue : null;\n }\n set typedValue(value) {\n super.typedValue = value;\n }\n maskEquals(mask) {\n return mask === Date || super.maskEquals(mask);\n }\n}\nMaskedDate.GET_DEFAULT_BLOCKS = () => ({\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999\n }\n});\nMaskedDate.DEFAULTS = {\n mask: Date,\n pattern: 'd{.}`m{.}`Y',\n format: (date, masked) => {\n if (!date) return '';\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: (str, masked) => {\n const [day, month, year] = str.split('.').map(Number);\n return new Date(year, month - 1, day);\n }\n};\nIMask.MaskedDate = MaskedDate;\n\nexport { MaskedDate as default };\n","import { DIRECTION, objectIncludes } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/** Dynamic mask for choosing appropriate mask in run-time */\nclass MaskedDynamic extends Masked {\n /** Currently chosen mask */\n\n /** Currently chosen mask */\n\n /** Compliled {@link Masked} options */\n\n /** Chooses {@link Masked} depending on input value */\n\n constructor(opts) {\n super({\n ...MaskedDynamic.DEFAULTS,\n ...opts\n });\n this.currentMask = undefined;\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n if ('mask' in opts) {\n this.exposeMask = undefined;\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(m => {\n const {\n expose,\n ...maskOpts\n } = normalizeOpts(m);\n const masked = createMask({\n overwrite: this._overwrite,\n eager: this._eager,\n skipInvalid: this._skipInvalid,\n ...maskOpts\n });\n if (expose) this.exposeMask = masked;\n return masked;\n }) : [];\n\n // this.currentMask = this.doDispatch(''); // probably not needed but lets see\n }\n }\n\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = this._applyDispatch(ch, flags);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags)));\n }\n return details;\n }\n _applyDispatch(appended, flags, tail) {\n if (appended === void 0) {\n appended = '';\n }\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\n const inputValue = this.rawInputValue;\n const insertValue = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._rawInputValue : inputValue;\n const tailValue = inputValue.slice(insertValue.length);\n const prevMask = this.currentMask;\n const details = new ChangeDetails();\n const prevMaskState = prevMask == null ? void 0 : prevMask.state;\n\n // clone flags to prevent overwriting `_beforeTailState`\n this.currentMask = this.doDispatch(appended, {\n ...flags\n }, tail);\n\n // restore state after dispatch\n if (this.currentMask) {\n if (this.currentMask !== prevMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n if (insertValue) {\n const d = this.currentMask.append(insertValue, {\n raw: true\n });\n details.tailShift = d.inserted.length - prevValueBeforeTail.length;\n }\n if (tailValue) {\n details.tailShift += this.currentMask.append(tailValue, {\n raw: true,\n tail: true\n }).tailShift;\n }\n } else if (prevMaskState) {\n // Dispatch can do something bad with state, so\n // restore prev mask state\n this.currentMask.state = prevMaskState;\n }\n }\n return details;\n }\n _appendPlaceholder() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n return details;\n }\n _appendEager() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendEager());\n }\n return details;\n }\n appendTail(tail) {\n const details = new ChangeDetails();\n if (tail) details.aggregate(this._applyDispatch('', {}, tail));\n return details.aggregate(this.currentMask ? this.currentMask.appendTail(tail) : super.appendTail(tail));\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n return {\n ...flags,\n _beforeTailState: ((_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.currentMaskRef) === this.currentMask && ((_flags$_beforeTailSta2 = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta2.currentMask) || flags._beforeTailState\n };\n }\n doDispatch(appended, flags, tail) {\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n return this.dispatch(appended, this, flags, tail);\n }\n doValidate(flags) {\n return super.doValidate(flags) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags)));\n }\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepare(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepare(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepareChar(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepareChar(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n reset() {\n var _this$currentMask;\n (_this$currentMask = this.currentMask) == null ? void 0 : _this$currentMask.reset();\n this.compiledMasks.forEach(m => m.reset());\n }\n get value() {\n return this.exposeMask ? this.exposeMask.value : this.currentMask ? this.currentMask.value : '';\n }\n set value(value) {\n if (this.exposeMask) {\n this.exposeMask.value = value;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.value = value;\n }\n get unmaskedValue() {\n return this.exposeMask ? this.exposeMask.unmaskedValue : this.currentMask ? this.currentMask.unmaskedValue : '';\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeMask) {\n this.exposeMask.unmaskedValue = unmaskedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.exposeMask ? this.exposeMask.typedValue : this.currentMask ? this.currentMask.typedValue : '';\n }\n set typedValue(typedValue) {\n if (this.exposeMask) {\n this.exposeMask.typedValue = typedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n return;\n }\n let unmaskedValue = String(typedValue);\n\n // double check it\n if (this.currentMask) {\n this.currentMask.typedValue = typedValue;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n this.unmaskedValue = unmaskedValue;\n }\n get displayValue() {\n return this.currentMask ? this.currentMask.displayValue : '';\n }\n get isComplete() {\n var _this$currentMask2;\n return Boolean((_this$currentMask2 = this.currentMask) == null ? void 0 : _this$currentMask2.isComplete);\n }\n get isFilled() {\n var _this$currentMask3;\n return Boolean((_this$currentMask3 = this.currentMask) == null ? void 0 : _this$currentMask3.isFilled);\n }\n remove(fromPos, toPos) {\n const details = new ChangeDetails();\n if (this.currentMask) {\n details.aggregate(this.currentMask.remove(fromPos, toPos))\n // update with dispatch\n .aggregate(this._applyDispatch());\n }\n return details;\n }\n get state() {\n var _this$currentMask4;\n return {\n ...super.state,\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(m => m.state),\n currentMaskRef: this.currentMask,\n currentMask: (_this$currentMask4 = this.currentMask) == null ? void 0 : _this$currentMask4.state\n };\n }\n set state(state) {\n const {\n compiledMasks,\n currentMaskRef,\n currentMask,\n ...maskedState\n } = state;\n if (compiledMasks) this.compiledMasks.forEach((m, mi) => m.state = compiledMasks[mi]);\n if (currentMaskRef != null) {\n this.currentMask = currentMaskRef;\n this.currentMask.state = currentMask;\n }\n super.state = maskedState;\n }\n extractInput(fromPos, toPos, flags) {\n return this.currentMask ? this.currentMask.extractInput(fromPos, toPos, flags) : '';\n }\n extractTail(fromPos, toPos) {\n return this.currentMask ? this.currentMask.extractTail(fromPos, toPos) : super.extractTail(fromPos, toPos);\n }\n doCommit() {\n if (this.currentMask) this.currentMask.doCommit();\n super.doCommit();\n }\n nearestInputPos(cursorPos, direction) {\n return this.currentMask ? this.currentMask.nearestInputPos(cursorPos, direction) : super.nearestInputPos(cursorPos, direction);\n }\n get overwrite() {\n return this.currentMask ? this.currentMask.overwrite : this._overwrite;\n }\n set overwrite(overwrite) {\n this._overwrite = overwrite;\n }\n get eager() {\n return this.currentMask ? this.currentMask.eager : this._eager;\n }\n set eager(eager) {\n this._eager = eager;\n }\n get skipInvalid() {\n return this.currentMask ? this.currentMask.skipInvalid : this._skipInvalid;\n }\n set skipInvalid(skipInvalid) {\n this._skipInvalid = skipInvalid;\n }\n maskEquals(mask) {\n return Array.isArray(mask) ? this.compiledMasks.every((m, mi) => {\n if (!mask[mi]) return;\n const {\n mask: oldMask,\n ...restOpts\n } = mask[mi];\n return objectIncludes(m, restOpts) && m.maskEquals(oldMask);\n }) : super.maskEquals(mask);\n }\n typedValueEquals(value) {\n var _this$currentMask5;\n return Boolean((_this$currentMask5 = this.currentMask) == null ? void 0 : _this$currentMask5.typedValueEquals(value));\n }\n}\nMaskedDynamic.DEFAULTS = void 0;\nMaskedDynamic.DEFAULTS = {\n dispatch: (appended, masked, flags, tail) => {\n if (!masked.compiledMasks.length) return;\n const inputValue = masked.rawInputValue;\n\n // simulate input\n const inputs = masked.compiledMasks.map((m, index) => {\n const isCurrent = masked.currentMask === m;\n const startInputPos = isCurrent ? m.displayValue.length : m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT);\n if (m.rawInputValue !== inputValue) {\n m.reset();\n m.append(inputValue, {\n raw: true\n });\n } else if (!isCurrent) {\n m.remove(startInputPos);\n }\n m.append(appended, masked.currentMaskFlags(flags));\n m.appendTail(tail);\n return {\n index,\n weight: m.rawInputValue.length,\n totalInputPositions: m.totalInputPositions(0, Math.max(startInputPos, m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT)))\n };\n });\n\n // pop masks with longer values first\n inputs.sort((i1, i2) => i2.weight - i1.weight || i2.totalInputPositions - i1.totalInputPositions);\n return masked.compiledMasks[inputs[0].index];\n }\n};\nIMask.MaskedDynamic = MaskedDynamic;\n\nexport { MaskedDynamic as default };\n","import MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which validates enum values */\nclass MaskedEnum extends MaskedPattern {\n constructor(opts) {\n super(opts); // mask will be created in _update\n }\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n enum: _enum,\n ...eopts\n } = opts;\n if (_enum) {\n const lengths = _enum.map(e => e.length);\n const requiredLength = Math.min(...lengths);\n const optionalLength = Math.max(...lengths) - requiredLength;\n eopts.mask = '*'.repeat(requiredLength);\n if (optionalLength) eopts.mask += '[' + '*'.repeat(optionalLength) + ']';\n this.enum = _enum;\n }\n super._update(eopts);\n }\n doValidate(flags) {\n return this.enum.some(e => e.indexOf(this.unmaskedValue) === 0) && super.doValidate(flags);\n }\n}\nIMask.MaskedEnum = MaskedEnum;\n\nexport { MaskedEnum as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by custom Function */\nclass MaskedFunction extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update({\n ...opts,\n validate: opts.mask\n });\n }\n}\nIMask.MaskedFunction = MaskedFunction;\n\nexport { MaskedFunction as default };\n","import { escapeRegExp, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/** Number mask */\nclass MaskedNumber extends Masked {\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n super({\n ...MaskedNumber.DEFAULTS,\n ...opts\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n this._updateRegExps();\n }\n _updateRegExps() {\n const start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n const mid = '\\\\d*';\n const end = (this.scale ? \"(\" + escapeRegExp(this.radix) + \"\\\\d{0,\" + this.scale + \"})?\" : '') + '$';\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp(\"[\" + this.mapToRadix.map(escapeRegExp).join('') + \"]\", 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n const parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const [prepCh, details] = super.doPrepareChar(this._removeThousandsSeparators(this.scale && this.mapToRadix.length && (\n /*\n radix should be mapped when\n 1) input is done from keyboard = flags.input && flags.raw\n 2) unmasked value is set = !flags.input && !flags.raw\n and should not be mapped when\n 1) value is set = flags.input && !flags.raw\n 2) raw value is set = !flags.input && flags.raw\n */\n flags.input && flags.raw || !flags.input && !flags.raw) ? ch.replace(this._mapToRadixRegExp, this.radix) : ch), flags);\n if (ch && !prepCh) details.skip = true;\n if (prepCh && !this.allowPositive && !this.value && prepCh !== '-') details.aggregate(this._appendChar('-'));\n return [prepCh, details];\n }\n _separatorsCount(to, extendOnSeparators) {\n if (extendOnSeparators === void 0) {\n extendOnSeparators = false;\n }\n let count = 0;\n for (let pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n return count;\n }\n _separatorsCountFromSlice(slice) {\n if (slice === void 0) {\n slice = this._value;\n }\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags));\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (!this.thousandsSeparator) return super._appendCharRaw(ch, flags);\n const prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n this._value = this._removeThousandsSeparators(this.value);\n const appendDetails = super._appendCharRaw(ch, flags);\n this._value = this._insertThousandsSeparators(this._value);\n const beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n appendDetails.skip = !appendDetails.rawInserted && ch === this.thousandsSeparator;\n return appendDetails;\n }\n _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n const searchFrom = pos - this.thousandsSeparator.length + 1;\n const separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n return -1;\n }\n _adjustRangeWithSeparators(from, to) {\n const separatorAroundFromPos = this._findSeparatorAround(from);\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n const separatorAroundToPos = this._findSeparatorAround(to);\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n const valueBeforePos = this.value.slice(0, fromPos);\n const valueAfterPos = this.value.slice(toPos);\n const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n if (separatorAtLeftPos >= 0) {\n const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n break;\n }\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n const separatorAtRightPos = this._findSeparatorAround(cursorPos);\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n return cursorPos;\n }\n doValidate(flags) {\n // validate as string\n let valid = Boolean(this._removeThousandsSeparators(this.value).match(this._numberRegExp));\n if (valid) {\n // validate as number\n const number = this.number;\n valid = valid && !isNaN(number) && (\n // check min bound for negative values\n this.min == null || this.min >= 0 || this.min <= this.number) && (\n // check max bound for positive values\n this.max == null || this.max <= 0 || this.number <= this.max);\n }\n return valid && super.doValidate(flags);\n }\n doCommit() {\n if (this.value) {\n const number = this.number;\n let validnum = number;\n\n // check bounds\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = this.format(validnum, this);\n let formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n super.doCommit();\n }\n _normalizeZeros(value) {\n const parts = this._removeThousandsSeparators(value).split(this.radix);\n\n // remove leading zeros\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, (match, sign, zeros, num) => sign + num);\n // add leading zero\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n _padFractionalZeros(value) {\n if (!value) return value;\n const parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n doSkipInvalid(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const dropFractional = this.scale === 0 && ch !== this.thousandsSeparator && (ch === this.radix || ch === MaskedNumber.UNMASKED_RADIX || this.mapToRadix.includes(ch));\n return super.doSkipInvalid(ch, flags, checkTail) && !dropFractional;\n }\n get unmaskedValue() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, MaskedNumber.UNMASKED_RADIX);\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.parse(this.unmaskedValue, this);\n }\n set typedValue(n) {\n this.rawInputValue = this.format(n, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n }\n\n /** Parsed Number */\n get number() {\n return this.typedValue;\n }\n set number(number) {\n this.typedValue = number;\n }\n\n /**\n Is negative allowed\n */\n get allowNegative() {\n return this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n\n /**\n Is positive allowed\n */\n get allowPositive() {\n return this.min != null && this.min > 0 || this.max != null && this.max > 0;\n }\n typedValueEquals(value) {\n // handle 0 -> '' case (typed = 0 even if value = '')\n // for details see https://github.com/uNmAnNeR/imaskjs/issues/134\n return (super.typedValueEquals(value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === '');\n }\n}\nMaskedNumber.UNMASKED_RADIX = '.';\nMaskedNumber.EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0];\nMaskedNumber.DEFAULTS = {\n mask: Number,\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: [MaskedNumber.UNMASKED_RADIX],\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n scale: 2,\n normalizeZeros: true,\n padFractionalZeros: false,\n parse: Number,\n format: n => n.toLocaleString('en-US', {\n useGrouping: false,\n maximumFractionDigits: 20\n })\n};\nIMask.MaskedNumber = MaskedNumber;\n\nexport { MaskedNumber as default };\n","import createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\n\n/** Mask pipe source and destination types */\nconst PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue'\n};\n/** Creates new pipe function depending on mask type, source and destination options */\nfunction createPipe(arg, from, to) {\n if (from === void 0) {\n from = PIPE_TYPE.MASKED;\n }\n if (to === void 0) {\n to = PIPE_TYPE.MASKED;\n }\n const masked = createMask(arg);\n return value => masked.runIsolated(m => {\n m[from] = value;\n return m[to];\n });\n}\n\n/** Pipes value through mask depending on mask type, source and destination options */\nfunction pipe(value, mask, from, to) {\n return createPipe(mask, from, to)(value);\n}\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n\nexport { PIPE_TYPE, createPipe, pipe };\n","export { default as InputMask } from './controls/input.js';\nimport IMask from './core/holder.js';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element.js';\nexport { default as HTMLInputMaskElement } from './controls/html-input-mask-element.js';\nexport { default as HTMLMaskElement } from './controls/html-mask-element.js';\nexport { default as MaskElement } from './controls/mask-element.js';\nexport { default as ChangeDetails } from './core/change-details.js';\nexport { DIRECTION, forceDirection } from './core/utils.js';\nexport { default as Masked } from './masked/base.js';\nexport { default as MaskedDate } from './masked/date.js';\nexport { default as MaskedDynamic } from './masked/dynamic.js';\nexport { default as MaskedEnum } from './masked/enum.js';\nexport { default as createMask, normalizeOpts } from './masked/factory.js';\nexport { default as MaskedFunction } from './masked/function.js';\nexport { default as MaskedNumber } from './masked/number.js';\nexport { default as MaskedPattern } from './masked/pattern.js';\nexport { default as ChunksTailDetails } from './masked/pattern/chunk-tail-details.js';\nexport { default as PatternFixedDefinition } from './masked/pattern/fixed-definition.js';\nexport { default as PatternInputDefinition } from './masked/pattern/input-definition.js';\nexport { PIPE_TYPE, createPipe, pipe } from './masked/pipe.js';\nexport { default as MaskedRange } from './masked/range.js';\nexport { default as MaskedRegExp } from './masked/regexp.js';\nimport './core/action-details.js';\nimport './core/continuous-tail-details.js';\nimport './masked/pattern/cursor.js';\n\ntry {\n globalThis.IMask = IMask;\n} catch {}\n\nexport { IMask as default };\n","import IMask from \"imask\";\n\nexport default class Credit {\n constructor() {\n this.setFieldMask();\n }\n\n setFieldMask() {\n const installmentsValue = document.querySelector(\n \"#woocommerce_vindi-pagamentos-credit_installments_value\",\n );\n if (installmentsValue) {\n IMask(installmentsValue, {\n mask: \"R$00,00\",\n });\n }\n }\n}\n","export default class Settings {\n constructor() {\n this.showPasswordContent();\n this.createExportButton();\n this.addPaymentLinkButtonOnSettings();\n this.addPaymentLinkButtonOnOrders();\n this.addPaymentLinkButtonOnGateways();\n }\n\n addPaymentLinkButtonOnSettings() {\n const anchor = document.querySelector(\"#vindi-pagamentos-token\");\n if (anchor) {\n const side = document.querySelector(\"#wvp-export-btn\");\n this.createPaymentLinkButton(side, [\n \"components-button\",\n \"woocommerce-save-button\",\n \"is-primary\"\n ]);\n }\n }\n\n addPaymentLinkButtonOnOrders() {\n const postType = document.querySelector(\"input[name=post_type]\");\n if (postType && postType.value === \"shop_order\") {\n const side = document.querySelector(\".page-title-action\");\n this.createPaymentLinkButton(side, [\n \"button-primary\",\n \"page-title-action\",\n ]);\n }\n }\n\n addPaymentLinkButtonOnGateways() {\n const gateways = [\"billet\", \"credit\", \"pix\", \"bolepix\", \"transfer\"];\n\n gateways.forEach((gateway) => {\n const anchor = document.querySelector(\n `#woocommerce_vindi-pagamentos-${gateway}_enabled`,\n );\n\n if (anchor && anchor.checked) {\n const side = document.querySelector(\"#mainform > .submit > button\");\n this.createPaymentLinkButton(\n side,\n [\"woocommerce-save-button\", \"is-secondary\", \"components-button\"],\n { gateway: `vindi-pagamentos-${gateway}` },\n );\n }\n });\n }\n\n createPaymentLinkButton(side, classes = [], params = {}) {\n if (side) {\n const button = document.createElement(\"a\");\n button.setAttribute(\"target\", \"_blank\");\n button.setAttribute(\"id\", \"wvp-payment-link-btn\");\n\n button.setAttribute(\n \"href\",\n `${location.origin}/wp-admin/post-new.php?${this.getUrlParams({\n post_type: \"shop_order\",\n \"vindi-payment-link\": true,\n ...params,\n })}`,\n );\n\n button.classList.add(...classes);\n button.innerText = \"Gerar Link de Pagamento\";\n\n side.after(button);\n }\n }\n\n getUrlParams(params) {\n const searchParams = {};\n\n for (const key in params) {\n if (Object.hasOwnProperty.call(params, key) && params[key]) {\n searchParams[key] = params[key];\n }\n }\n\n return new URLSearchParams(searchParams).toString();\n }\n\n showPasswordContent() {\n const field = document.querySelector(\"#vindi-pagamentos-token\");\n if (field) {\n field.addEventListener(\"focusin\", () => {\n field.setAttribute(\"type\", \"text\");\n });\n\n field.addEventListener(\"focusout\", () => {\n field.setAttribute(\"type\", \"password\");\n });\n }\n }\n\n createExportButton() {\n const anchor = document.querySelector(\"#vindi-pagamentos-token\");\n\n if (anchor) {\n const button = document.createElement(\"a\");\n button.setAttribute(\"id\", \"wvp-export-btn\");\n button.classList.add(\"wvp-export-btn\", \"woocommerce-save-button\", \"components-button\", \"is-secondary\");\n button.innerText = \"Exportar Configurações\";\n\n const form = document.querySelector(\"#mainform > .submit\");\n form.appendChild(button);\n\n this.exportSettings(button);\n }\n }\n\n exportSettings(button) {\n button.addEventListener(\"click\", () => {\n this.getSettingsContent();\n });\n }\n\n getSettingsContent() {\n const body = new FormData();\n body.append(\"action\", \"export_settings\");\n\n fetch(`${window.location.origin}/wp-admin/admin-ajax.php`, {\n method: \"POST\",\n body: body,\n })\n .then((response) => response.json())\n .then((data) => {\n this.downloadSettingsFile(JSON.stringify(data.content, null, 4));\n\n setTimeout(() => {\n window.location.reload();\n }, 500);\n });\n }\n\n downloadSettingsFile(content) {\n const file = new File([content], \"settings.json\", {\n type: \"application/json\",\n });\n\n const url = URL.createObjectURL(file);\n const element = document.createElement(\"a\");\n\n if (element) {\n element.setAttribute(\"href\", url);\n element.setAttribute(\"download\", \"settings.json\");\n\n document.body.appendChild(element);\n element.click();\n document.body.removeChild(element);\n }\n }\n}\n","export default class ManualRenewal {\n constructor() {\n this.handleManualRenewal();\n }\n\n handleManualRenewal() {\n const button = document.querySelector(\"#manual-renewal-button\");\n const hidden = document.querySelector(\"#manual-renewal-subscription\");\n\n if (button && hidden) {\n button.addEventListener('click', () => {\n const body = new FormData();\n body.append('action', 'manual_renewal');\n body.append('subscription', hidden.value);\n\n this.setLoader();\n button.setAttribute('disabled', true);\n\n fetch(ajaxurl, {\n method: \"POST\",\n body: body,\n })\n .then((response) => response.json())\n .then((data) => {\n if (data.status) {\n if (data.status == \"success\") {\n window.location.reload();\n }\n }\n });\n });\n }\n }\n\n setLoader(active = true) {\n const loader = document.querySelector('#manual-renewal-form .loader');\n\n if (loader) {\n if (active) {\n loader.classList.add('active');\n } else {\n loader.classList.remove('active');\n }\n }\n }\n}\n","export default class RetryRenewal {\n constructor() {\n this.handleRetryRenewal();\n }\n\n handleRetryRenewal() {\n const button = document.querySelector(\"#vindi-retry-renewal-button\");\n const hidden = document.querySelector(\"#vindi-retry-renewal-order\");\n const nonce = document.querySelector(\"#vindi_retry_renewal_nonce\");\n\n if (button && hidden && nonce) {\n button.addEventListener('click', (e) => {\n\n const body = new FormData();\n body.append('action', 'vindi_retry_renewal');\n body.append('order', hidden.value);\n body.append('nonce', nonce.value);\n\n this.setLoader();\n button.setAttribute('disabled', true);\n\n fetch(ajaxurl, {\n method: \"POST\",\n body: body,\n })\n .then((response) => response.json())\n .then((data) => {\n if (data.status) {\n if (data.status == \"success\") {\n window.location.reload();\n }\n }\n });\n });\n }\n }\n\n setLoader(active = true) {\n const loader = document.querySelector('#vindi-retry-renewal-form .loader');\n\n if (loader) {\n if (active) {\n loader.classList.add('active');\n } else {\n loader.classList.remove('active');\n }\n }\n }\n}\n","export default class PaymentMethodDiscount {\n constructor(paymentMethod) {\n this.enableField = document.querySelector(\n `#woocommerce_vindi-pagamentos-${paymentMethod}_discount`\n );\n\n this.showTagField = document.querySelector(\n '#vindi-pagamentos-show_discount_text'\n );\n\n if (this.enableField) {\n this.discountTypeField = document.querySelector(\n `#woocommerce_vindi-pagamentos-${paymentMethod}_discount_type`\n ).closest('tr');\n this.discountValueField = document.querySelector(\n `#woocommerce_vindi-pagamentos-${paymentMethod}_discount_value`\n ).closest('tr');\n }\n\n if (this.showTagField) {\n this.textColorField = document.querySelector(\n '#vindi-pagamentos-text_color'\n ).closest('tr');\n }\n\n this.init();\n }\n\n init() {\n if (this.enableField) {\n this.toggleDiscountFields();\n this.enableField.addEventListener(\"change\", () => {\n this.toggleDiscountFields();\n });\n }\n\n if (this.showTagField) {\n this.toggleColorFields();\n this.showTagField.addEventListener(\"change\", () => {\n this.toggleColorFields();\n });\n }\n }\n\n toggleDiscountFields() {\n const isEnabled = this.enableField.checked;\n this.discountTypeField.style.display = isEnabled ? 'table-row' : 'none';\n this.discountValueField.style.display = isEnabled ? 'table-row' : 'none';\n }\n\n toggleColorFields() {\n const isEnabled = this.showTagField.checked;\n this.backgroundColorField.style.display = isEnabled ? 'table-row' : 'none';\n this.textColorField.style.display = isEnabled ? 'table-row' : 'none';\n }\n}\n\njQuery(document).ready(function ($) {\n new PaymentMethodDiscount('bolepix');\n new PaymentMethodDiscount('pix');\n});","export default class PaymentProfile {\n constructor() {\n this.init();\n }\n\n init() {\n this.setupDefaultSelection();\n this.setupEventListeners();\n }\n\n setupDefaultSelection() {\n const profiles = document.querySelectorAll('input[name=\"payment_profile\"]');\n const hasChecked = Array.from(profiles).some(profile => profile.checked);\n\n if (profiles.length > 0 && !hasChecked) {\n profiles[0].checked = true;\n }\n }\n\n setupEventListeners() {\n const updateButton = document.getElementById('update-payment-profile-button');\n\n if (updateButton) {\n updateButton.addEventListener('click', this.handleUpdateProfile.bind(this));\n }\n }\n\n handleUpdateProfile(event) {\n const subscription = document.getElementById('payment-profile-subscription').value;\n const selectedProfile = document.querySelector('input[name=\"payment_profile\"]:checked');\n const loader = document.querySelector('.loader');\n const messageEl = document.getElementById('update-message');\n\n if (!selectedProfile) {\n messageEl.textContent = vindiTranslations.selectCard || 'Por favor, selecione um cartão.';\n messageEl.classList.add('error');\n messageEl.classList.remove('success');\n return;\n }\n\n event.currentTarget.disabled = true;\n if (loader) loader.style.display = 'block';\n messageEl.textContent = '';\n messageEl.classList.remove('error', 'success');\n\n const formData = new FormData();\n formData.append('action', 'update_payment_profile');\n formData.append('subscription', subscription);\n formData.append('payment_profile', selectedProfile.value);\n\n fetch(ajaxurl, {\n method: 'POST',\n body: formData\n })\n .then(response => response.json())\n .then(response => {\n if (response.status === 'success') {\n messageEl.textContent = response.message || (vindiTranslations.cardUpdated || 'Cartão atualizado com sucesso!');\n messageEl.classList.add('success');\n\n document.querySelectorAll('.vindi-card-row').forEach(row => {\n row.classList.remove('selected-card');\n });\n selectedProfile.closest('.vindi-card-row').classList.add('selected-card');\n } else {\n messageEl.textContent = response.message || (vindiTranslations.updateError || 'Erro ao atualizar cartão.');\n messageEl.classList.add('error');\n }\n })\n .catch(() => {\n messageEl.textContent = vindiTranslations.requestError || 'Erro ao processar requisição.';\n messageEl.classList.add('error');\n })\n .finally(() => {\n document.getElementById('update-payment-profile-button').disabled = false;\n if (loader) loader.style.display = 'none';\n });\n }\n}","export default class MultiPaymentMinControl {\n constructor() {\n this.enableField = document.querySelector(\n `#woocommerce_vindi-pagamentos-multi-payment_enable_multipayment_min_control`\n );\n\n this.minValueField = document.querySelector(\n `#woocommerce_vindi-pagamentos-multi-payment_multipayment_min_amount`\n ).closest('tr');\n\n this.init();\n }\n\n init() {\n if (this.enableField) {\n this.toggleMinValueField();\n this.enableField.addEventListener(\"change\", () => {\n this.toggleMinValueField();\n });\n }\n }\n\n toggleMinValueField() {\n const isEnabled = this.enableField.checked;\n this.minValueField.style.display = isEnabled ? 'table-row' : 'none';\n }\n}","class VindiWizard {\n constructor() {\n this.currentStep = this.detectCurrentStep();\n this.formData = {};\n this.init();\n }\n\n detectCurrentStep() {\n const page = new URLSearchParams(window.location.search).get('page');\n\n if (page === 'vindi-wizard-register') return 'register';\n if (page === 'vindi-wizard-address') return 'address';\n return 'register';\n }\n\n init() {\n // Load saved data if on address step\n if (this.currentStep === 'address') {\n this.loadSavedData();\n }\n\n this.setupPersonTypeToggle();\n this.setupFormSubmission();\n this.setupBackButton();\n this.setupDocumentMasks();\n }\n\n setupPersonTypeToggle() {\n const personTypeSelect = document.getElementById('vindi-person-type');\n const cpfField = document.getElementById('cpf-field');\n const cnpjField = document.getElementById('cnpj-field');\n const companyField = document.getElementById('company-field');\n\n if (personTypeSelect) {\n personTypeSelect.addEventListener('change', (e) => {\n const isPF = e.target.value === '1';\n\n if (isPF) {\n cpfField.style.display = 'block';\n cnpjField.style.display = 'none';\n companyField.style.display = 'none';\n } else {\n cpfField.style.display = 'none';\n cnpjField.style.display = 'block';\n companyField.style.display = 'block';\n }\n });\n }\n }\n\n setupDocumentMasks() {\n // Assuming IMask is available\n const cpfInput = document.querySelector('input[name=\"vindi-pagamentos-cpf\"]');\n const cnpjInput = document.querySelector('input[name=\"vindi-pagamentos-cnpj\"]');\n const phoneInput = document.querySelector('input[name=\"vindi-pagamentos-telefone\"]');\n const cepInput = document.querySelector('input[name=\"vindi-pagamentos-cep\"]');\n\n if (cpfInput && typeof IMask !== 'undefined') {\n IMask(cpfInput, { mask: '000.000.000-00' });\n }\n\n if (cnpjInput && typeof IMask !== 'undefined') {\n IMask(cnpjInput, { mask: '00.000.000/0000-00' });\n }\n\n if (phoneInput && typeof IMask !== 'undefined') {\n IMask(phoneInput, { mask: '(00) 0 0000-0000' });\n }\n\n if (cepInput && typeof IMask !== 'undefined') {\n IMask(cepInput, { mask: '00000-000' });\n }\n }\n\n setupFormSubmission() {\n const submitButton = document.querySelector('.vindi-wizard-btn');\n\n if (submitButton) {\n submitButton.addEventListener('click', (e) => {\n e.preventDefault();\n this.handleFormSubmit();\n });\n }\n }\n\n setupBackButton() {\n const backButton = document.querySelector('.vindi-wizard-back-btn');\n\n if (backButton) {\n backButton.addEventListener('click', (e) => {\n e.preventDefault();\n this.handleBackStep();\n });\n }\n }\n\n validateForm() {\n if (this.currentStep === 'register') {\n return this.validateRegisterStep();\n } else if (this.currentStep === 'address') {\n return this.validateAddressStep();\n }\n return false;\n }\n\n validateRegisterStep() {\n const requiredFields = [\n 'vindi-pagamentos-nome',\n 'vindi-pagamentos-email',\n 'vindi-pagamentos-telefone'\n ];\n\n const personType = document.querySelector('select[name=\"vindi-pagamentos-person-type\"]')?.value;\n\n if (personType === '1') {\n requiredFields.push('vindi-pagamentos-cpf');\n } else if (personType === '2') {\n requiredFields.push('vindi-pagamentos-cnpj', 'vindi-pagamentos-social-name');\n }\n\n const termsAccepted = document.querySelector('input[name=\"vindi-pagamentos-accept-terms\"]')?.checked;\n\n if (!termsAccepted) {\n alert('Você deve aceitar os termos e condições para continuar.');\n return false;\n }\n\n for (const fieldName of requiredFields) {\n const field = document.querySelector(`input[name=\"${fieldName}\"], select[name=\"${fieldName}\"]`);\n if (!field || !field.value.trim()) {\n alert(`Por favor, preencha o campo: ${this.getFieldLabel(fieldName)}`);\n field?.focus();\n return false;\n }\n }\n\n return true;\n }\n\n validateAddressStep() {\n const requiredFields = [\n 'vindi-pagamentos-cep',\n 'vindi-pagamentos-endereco',\n 'vindi-pagamentos-numero',\n 'vindi-pagamentos-bairro',\n 'vindi-pagamentos-cidade',\n 'vindi-pagamentos-estado'\n ];\n\n for (const fieldName of requiredFields) {\n const field = document.querySelector(`input[name=\"${fieldName}\"], select[name=\"${fieldName}\"]`);\n if (!field || !field.value.trim()) {\n alert(`Por favor, preencha o campo: ${this.getFieldLabel(fieldName)}`);\n field?.focus();\n return false;\n }\n }\n\n return true;\n }\n\n getFieldLabel(fieldName) {\n const labels = {\n 'vindi-pagamentos-nome': 'Nome',\n 'vindi-pagamentos-email': 'E-mail',\n 'vindi-pagamentos-telefone': 'Telefone',\n 'vindi-pagamentos-cpf': 'CPF',\n 'vindi-pagamentos-cnpj': 'CNPJ',\n 'vindi-pagamentos-social-name': 'Razão Social',\n 'vindi-pagamentos-cep': 'CEP',\n 'vindi-pagamentos-endereco': 'Endereço',\n 'vindi-pagamentos-numero': 'Número',\n 'vindi-pagamentos-bairro': 'Bairro',\n 'vindi-pagamentos-cidade': 'Cidade',\n 'vindi-pagamentos-estado': 'Estado'\n };\n return labels[fieldName] || fieldName;\n }\n\n collectFormData() {\n const formData = {};\n const inputs = document.querySelectorAll('input[name^=\"vindi-pagamentos-\"], select[name^=\"vindi-pagamentos-\"]');\n\n inputs.forEach(input => {\n if (input.type === 'checkbox') {\n formData[input.name] = input.checked;\n } else {\n formData[input.name] = input.value;\n }\n });\n\n return formData;\n }\n\n async handleFormSubmit() {\n if (!this.validateForm()) {\n return;\n }\n\n const formData = this.collectFormData();\n this.formData = { ...this.formData, ...formData };\n\n // For register step, move to address step\n if (this.currentStep === 'register') {\n this.navigateToAddressStep();\n }\n // For address step, submit to API\n else if (this.currentStep === 'address') {\n await this.submitToAPI();\n }\n }\n\n navigateToAddressStep() {\n // Save data to localStorage\n localStorage.setItem('vindi-wizard-data', JSON.stringify(this.formData));\n\n // Navigate to address step\n window.location.href = `${window.location.origin}/wp-admin/admin.php?page=vindi-wizard-address`;\n }\n\n async submitToAPI() {\n try {\n const response = await this.callYapayAPI();\n\n if (response.success) {\n // Navigate to success step\n window.location.href = `${window.location.origin}/wp-admin/admin.php?page=vindi-wizard-success`;\n } else {\n alert('Erro ao criar conta: ' + response.message);\n }\n } catch (error) {\n console.error('Erro:', error);\n alert('Erro ao criar conta. Tente novamente.');\n }\n }\n\n async callYapayAPI() {\n const formData = new FormData();\n formData.append('action', 'vindi_create_user_account');\n formData.append('nonce', vindiWizardConfig.nonce);\n formData.append('wizard_data', JSON.stringify(this.formData));\n\n const response = await fetch(vindiWizardConfig.ajaxUrl, {\n method: 'POST',\n body: formData\n });\n\n return await response.json();\n }\n\n handleBackStep() {\n if (this.currentStep === 'address') {\n window.location.href = `${window.location.origin}/wp-admin/admin.php?page=vindi-wizard-register`;\n } else if (this.currentStep === 'register') {\n window.location.href = `${window.location.origin}/wp-admin/admin.php?page=vindi-wizard-welcome`;\n }\n }\n\n loadSavedData() {\n const savedData = localStorage.getItem('vindi-wizard-data');\n if (savedData) {\n this.formData = JSON.parse(savedData);\n }\n }\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n new VindiWizard();\n});\n","import PaymentLink from \"./orders/payment-link\";\nimport { ShippingTracking } from \"./orders/tranking\";\nimport Credit from \"./settings/credit\";\nimport Settings from \"./settings/settings\";\nimport ManualRenewal from \"./subscriptions/manual-renewal\";\nimport RetryRenewal from \"./subscriptions/retry-renewal\";\nimport PaymentMethodDiscount from \"./settings/payment-method-discount\";\nimport PaymentProfile from \"./subscriptions/payment-profile\";\nimport MultiPaymentMinControl from \"./settings/multipayment-min-control\";\nimport VindiWizard from \"./wizard\";\n\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n new Settings();\n new Credit();\n new ShippingTracking();\n new PaymentLink();\n new ManualRenewal();\n new RetryRenewal();\n new PaymentMethodDiscount();\n new PaymentProfile();\n new MultiPaymentMinControl();\n new VindiWizard();\n});\n"],"names":["$c665d93b2532c65d$export$63151d8bb18a49f9","$c665d93b2532c65d$export$790fb69b1a2884f9","re","not_string","not_bool","not_type","not_primitive","number","numeric_arg","json","not_json","text","modulo","placeholder","key","key_access","index_access","sign","sprintf","parse_tree","argv","arg","i","k","ph","pad","pad_character","pad_length","is_positive","cursor","tree_length","length","output","keys","undefined","Error","param_no","test","type","Function","isNaN","TypeError","parseInt","toString","String","fromCharCode","JSON","stringify","width","precision","parseFloat","toExponential","toFixed","Number","toPrecision","substring","Object","prototype","call","slice","toLowerCase","valueOf","toUpperCase","replace","pad_char","charAt","repeat","align","sprintf_format","fmt","sprintf_cache","match","_fmt","arg_names","exec","push","SyntaxError","field_list","replacement_field","field_match","sprintf_parse","arguments","vsprintf","apply","concat","create","window","define","fn","options","head","tail","size","memoized","args","node","len","searchCache","next","prev","val","Array","maxSize","clear","memoize","console","error","$0f4d45ff44486fdb$var$PRECEDENCE","$0f4d45ff44486fdb$var$OPENERS","$0f4d45ff44486fdb$var$TERMINATORS","$0f4d45ff44486fdb$var$PATTERN","$0f4d45ff44486fdb$export$2e2bcd8739ae039","expression","operator","term","element","terms","stack","substr","index","trim","pop","indexOf","reverse","$94eef1b2d5e65686$var$OPERATORS","a","b","c","$94eef1b2d5e65686$export$2e2bcd8739ae039","postfix","variables","j","getOperatorResult","value","earlyReturn","hasOwnProperty","$00d0953cc7be59d8$export$2e2bcd8739ae039","$05530cac947ad0da$var$DEFAULT_OPTIONS","contextDelimiter","onMissingKey","$05530cac947ad0da$export$2e2bcd8739ae039","data","this","pluralForms","getPluralForm","domain","n","config","plural","pf","evaluate","plural_forms","parts","part","split","$05530cac947ad0da$var$getPluralExpression","dcnpgettext","context","singular","entry","DEFAULT_LOCALE_DATA","I18N_HOOK_REGEXP","$5a069099b4672102$export$2e2bcd8739ae039","namespace","$a478171861c8c86e$export$2e2bcd8739ae039","hookName","$fd035fa4006b395f$export$2e2bcd8739ae039","hooks","storeKey","callback","priority","hooksStore","validateHookName","validateNamespace","handler","handlers","splice","__current","forEach","hookInfo","name","currentIndex","runs","doAction","$991de1ff8f7500c1$export$2e2bcd8739ae039","removeAll","handlersRemoved","$797ba1df0a5d77ab$export$2e2bcd8739ae039","some","hook","$2d8581afdd65ecf6$export$2e2bcd8739ae039","returnFirstArg","result","$9c6275b0851c63c2$export$2e2bcd8739ae039","_hooksStore$__current","$c7417ed2fa92e6d4$export$2e2bcd8739ae039","$88ef48e984585ad1$export$2e2bcd8739ae039","_Hooks","constructor","actions","filters","addAction","createAddHook","addFilter","removeAction","createRemoveHook","removeFilter","hasAction","createHasHook","hasFilter","removeAllActions","removeAllFilters","createRunHook","applyFilters","currentAction","createCurrentHook","currentFilter","doingAction","createDoingHook","doingFilter","didAction","createDidHook","didFilter","defaultHooks","i18n","createI18n","initialData","initialDomain","tannin","Tannin","listeners","Set","notifyListeners","listener","doSetLocaleData","setLocaleData","single","getFilterDomain","_x","translation","onHookAddedOrRemoved","getLocaleData","addLocaleData","resetLocaleData","add","delete","__","_n","_nx","isRTL","hasTranslation","bind","subscribe","$30a7d668af984af0$export$2e2bcd8739ae039","openCheckoutFieldSection","url","URLSearchParams","location","href","has","document","querySelectorAll","address","style","display","updateLinkGateway","get","gateway","querySelector","$85a266acb49812d1$export$30ec7020d1366a2d","setEvents","button","addEventListener","e","preventDefault","code","post","saveTrackingCode","loader","classList","remove","body","FormData","append","ajaxurl","fetch","method","then","response","status","reload","message","handleMessage","div","innerHTML","$297913352d90e18e$export$844ec244b1367d54","str","$297913352d90e18e$export$a6cdc56e425d0d0a","obj","_obj$constructor","$297913352d90e18e$export$357523c63a2253b9","isArray","_","includes","entries","reduce","acc","_ref","v","$297913352d90e18e$export$9106728c49045482","NONE","LEFT","FORCE_LEFT","RIGHT","FORCE_RIGHT","$297913352d90e18e$export$32af4dafed14c8ce","direction","$297913352d90e18e$export$7c57da42ce8e346f","$297913352d90e18e$export$7aeb68f71172641d","arrA","arrB","dateA","Date","dateB","getTime","regexpA","RegExp","regexpB","$009600582982b1de$export$2e2bcd8739ae039","opts","assign","startChangePos","oldValue","oldSelection","start","Math","min","cursorPos","insertedCount","inserted","removedCount","max","end","removed","removeDirection","$6935d2fd91e23121$export$2e2bcd8739ae039","el","InputMask","$04eba1c21f72882d$export$81ad4b1539a22420","mask","MaskedRegExp","MaskedPattern","MaskedDate","MaskedNumber","MaskedDynamic","Masked","MaskedFunction","warn","$04eba1c21f72882d$export$a213ae1c699d7230","instanceOpts","_mask","startsWith","$04eba1c21f72882d$export$2e2bcd8739ae039","nOpts","MaskedClass","createMask","$58914a612445e359$export$2e2bcd8739ae039","selectionStart","_unsafeSelectionStart","selectionEnd","_unsafeSelectionEnd","select","_unsafeSelect","isActive","MaskElement","$0b64e8eaf462b1c4$export$2e2bcd8739ae039","input","super","_handlers","rootElement","_this$input$getRootNo","_this$input$getRootNo2","_this$input","getRootNode","activeElement","bindEvents","event","_toggleEventHandler","EVENTS_MAP","unbindEvents","removeEventListener","selectionChange","drop","click","focus","commit","HTMLMaskElement","$f7b3ffebaa825b51$export$2e2bcd8739ae039","setSelectionRange","$1f98d66e42010ceb$export$2e2bcd8739ae039","root","selection","getSelection","anchorOffset","focusOffset","createRange","range","setStart","firstChild","setEnd","lastChild","removeAllRanges","addRange","textContent","HTMLContenteditableMaskElement","isContentEditable","tagName","masked","_listeners","_value","_unmaskedValue","_saveSelection","_onInput","_onChange","_onDrop","_onFocus","_onClick","alignCursor","alignCursorFriendly","_bindEvents","updateValue","maskEquals","_this$masked","updateOptions","unmaskedValue","updateControl","typedValue","typedValueEquals","displayValue","_unbindEvents","_fireEvent","ev","l","_cursorChanging","_changingCursorPos","pos","_selection","newUnmaskedValue","newValue","newDisplayValue","isChanged","_fireChangeEvents","restOpts","updateMask","updateOpts","updateCursor","_delayUpdateCursor","_abortUpdateCursor","setTimeout","_inputEvent","isComplete","clearTimeout","nearestInputPos","on","off","hIndex","details","oldRawValue","rawInputValue","offset","raw","doCommit","stopPropagation","destroy","$42c38c98c80ffb03$export$2e2bcd8739ae039","normalize","prep","rawInserted","skip","tailShift","aggregate","ChangeDetails","$6f0dc42dfe2c31a9$export$2e2bcd8739ae039","from","stop","extend","appendTo","_appendPlaceholder","state","unshift","beforePos","shiftChar","shift","$422a8c2668dc4e1a$export$2e2bcd8739ae039","_update","DEFAULTS","_initialized","withValueRefresh","_rawInputValue","reset","resolve","flags","parse","format","extractInput","isFilled","totalInputPositions","fromPos","toPos","extractTail","appendTail","_appendCharRaw","ch","_appendChar","checkTail","consistentState","doPrepareChar","consistentTail","appended","doValidate","beforeTailState","overwrite","tailDetails","_appendEager","_beforeTailState","doPrepare","ci","d","doSkipInvalid","eager","_refreshing","rawInput","ret","runIsolated","_isolated","Boolean","skipInvalid","prepare","prepareChar","validate","parent","deleteCount","tailPos","eagerRemove","valLength","tval","EMPTY_VALUES","$23b1364d377b0d09$export$2e2bcd8739ae039","chunks","map","join","tailChunk","lastChunk","extendLast","firstTailChunk","blockIndex","chunk","lastBlockIter","_mapPosToBlock","chunkBlock","_stops","phDetails","_blocks","remainChars","props","cstate","chunkShiftPos","$baa6ec98fc1ffec4$export$2e2bcd8739ae039","_log","ok","block","_blockStartPos","s","pushState","popState","bindBlock","_pushLeft","_this$block","_pushRight","pushLeftBeforeFilled","isFixed","pushLeftBeforeInput","pushLeftBeforeRequired","isOptional","pushRightBeforeFilled","pushRightBeforeInput","pushRightBeforeRequired","$f79d78c596426ad8$export$2e2bcd8739ae039","isUnmasking","_isRawInput","maxPos","appendEager","isResolved","char","$e27282e98e221795$export$2e2bcd8739ae039","placeholderChar","displayChar","lazy","maskOpts","currentMaskFlags","boundPos","_flags$_beforeTailSta","DEFAULT_DEFINITIONS","search","$382bf60a70530ec6$export$2e2bcd8739ae039","definitions","_rebuildMask","defs","exposeBlock","_maskedBlocks","pattern","unmaskingBlock","optionalBlock","blocks","p","bNames","filter","bName","sort","expose","blockOpts","maskedBlock","isInput","STOP_CHAR","ESCAPE_CHAR","def","maskedState","bi","every","_this$_mapPosToBlock","startBlockIndex","blockIter","blockDetails","chunkTail","_forEachBlocksInRange","bFromPos","bToPos","blockChunk","_findStopBefore","stopBefore","si","toBlockIndex","startBlockIter","endBlockIndex","_blocks2","bDetails","accVal","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","total","maskedBlocks","indices","gi","InputDefinition","FixedDefinition","$4a0e3cc97ad5300d$export$2e2bcd8739ae039","_matchFrom","maxLength","to","autofix","patternOpts","fromStr","padStart","toStr","sameCharsCount","boundaries","minstr","maxstr","num","padEnd","nextVal","MaskedRange","$dadb0bbe513c82ac$export$2e2bcd8739ae039","patternBlocks","GET_DEFAULT_BLOCKS","Y","getFullYear","m","getMonth","getDate","bk","date","isDateExist","day","month","year","$d72501c5bcba0e7e$export$2e2bcd8739ae039","currentMask","exposeMask","compiledMasks","_overwrite","_eager","_skipInvalid","_applyDispatch","prevValueBeforeTail","inputValue","insertValue","tailValue","prevMask","prevMaskState","doDispatch","_flags$_beforeTailSta2","currentMaskRef","dispatch","currentDetails","_this$currentMask","_this$currentMask2","_this$currentMask3","_this$currentMask4","mi","oldMask","_this$currentMask5","inputs","isCurrent","startInputPos","weight","i1","i2","MaskedEnum","enum","_enum","eopts","lengths","requiredLength","optionalLength","$53a522de03a4a256$export$2e2bcd8739ae039","_updateRegExps","allowNegative","scale","radix","_numberRegExp","_mapToRadixRegExp","mapToRadix","_thousandsSeparatorRegExp","thousandsSeparator","_removeThousandsSeparators","_insertThousandsSeparators","prepCh","allowPositive","_separatorsCount","extendOnSeparators","count","_separatorsCountFromSlice","_adjustRangeWithSeparators","prevBeforeTailValue","prevBeforeTailSeparatorsCount","appendDetails","beforeTailValue","beforeTailSeparatorsCount","_findSeparatorAround","searchFrom","separatorPos","separatorAroundFromPos","separatorAroundToPos","valueBeforePos","valueAfterPos","separatorAtLeftPos","separatorAtLeftEndPos","separatorAtRightPos","valid","validnum","formatted","normalizeZeros","_normalizeZeros","padFractionalZeros","_padFractionalZeros","zeros","dropFractional","UNMASKED_RADIX","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","toLocaleString","useGrouping","maximumFractionDigits","$e2045d7156ea1579$export$90dab59c3d4b6e03","MASKED","UNMASKED","TYPED","$e2045d7156ea1579$export$a504d53a5b99e1b9","PIPE_TYPE","createPipe","pipe","globalThis","IMask","$f77924c6ee192325$export$2e2bcd8739ae039","setFieldMask","installmentsValue","$f893d19fdefe71ee$export$2e2bcd8739ae039","showPasswordContent","createExportButton","addPaymentLinkButtonOnSettings","addPaymentLinkButtonOnOrders","addPaymentLinkButtonOnGateways","side","createPaymentLinkButton","postType","anchor","checked","classes","params","createElement","setAttribute","origin","getUrlParams","post_type","innerText","after","searchParams","field","appendChild","exportSettings","getSettingsContent","downloadSettingsFile","content","file","File","URL","createObjectURL","removeChild","$a69a9d2ebbcbb8b9$export$2e2bcd8739ae039","handleManualRenewal","hidden","setLoader","active","$4690ec4389d1a596$export$2e2bcd8739ae039","handleRetryRenewal","nonce","$3067408d440eb7aa$export$2e2bcd8739ae039","paymentMethod","enableField","showTagField","discountTypeField","closest","discountValueField","textColorField","init","toggleDiscountFields","toggleColorFields","isEnabled","backgroundColorField","jQuery","ready","$","$c883fead058e6344$export$2e2bcd8739ae039","setupDefaultSelection","setupEventListeners","profiles","hasChecked","profile","updateButton","getElementById","handleUpdateProfile","subscription","selectedProfile","messageEl","vindiTranslations","selectCard","currentTarget","disabled","formData","cardUpdated","row","updateError","catch","requestError","finally","$89f4d85481b398f8$export$2e2bcd8739ae039","minValueField","toggleMinValueField","$c95f72f612001b82$var$VindiWizard","currentStep","detectCurrentStep","page","loadSavedData","setupPersonTypeToggle","setupFormSubmission","setupBackButton","setupDocumentMasks","personTypeSelect","cpfField","cnpjField","companyField","target","cpfInput","cnpjInput","phoneInput","cepInput","submitButton","handleFormSubmit","backButton","handleBackStep","validateForm","validateRegisterStep","validateAddressStep","requiredFields","personType","termsAccepted","alert","fieldName","getFieldLabel","collectFormData","navigateToAddressStep","submitToAPI","localStorage","setItem","callYapayAPI","success","vindiWizardConfig","ajaxUrl","savedData","getItem","$parcel$interopDefault","$c95f72f612001b82$exports"],"version":3,"file":"index.js.map"}1 {"mappings":"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","sources":["node_modules/sprintf-js/src/sprintf.js","node_modules/memize/dist/index.js","node_modules/@wordpress/i18n/build-module/@wordpress/i18n/src/sprintf.js","node_modules/@tannin/postfix/index.js","node_modules/@tannin/evaluate/index.js","node_modules/@tannin/compile/index.js","node_modules/tannin/index.js","node_modules/@tannin/plural-forms/index.js","node_modules/@wordpress/i18n/build-module/@wordpress/i18n/src/create-i18n.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/validateNamespace.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/validateHookName.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/createAddHook.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/createRemoveHook.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/createHasHook.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/createRunHook.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/createCurrentHook.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/createDoingHook.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/createDidHook.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/createHooks.js","node_modules/@wordpress/hooks/build-module/@wordpress/hooks/src/index.js","node_modules/@wordpress/i18n/build-module/@wordpress/i18n/src/default-i18n.js","assets/scripts/admin/orders/payment-link.js","assets/scripts/admin/orders/tranking.js","node_modules/imask/esm/core/utils.js","node_modules/imask/esm/core/action-details.js","node_modules/imask/esm/core/holder.js","node_modules/imask/esm/masked/factory.js","node_modules/imask/esm/controls/mask-element.js","node_modules/imask/esm/controls/html-mask-element.js","node_modules/imask/esm/controls/html-input-mask-element.js","node_modules/imask/esm/controls/html-contenteditable-mask-element.js","node_modules/imask/esm/controls/input.js","node_modules/imask/esm/core/change-details.js","node_modules/imask/esm/core/continuous-tail-details.js","node_modules/imask/esm/masked/base.js","node_modules/imask/esm/masked/pattern/chunk-tail-details.js","node_modules/imask/esm/masked/pattern/cursor.js","node_modules/imask/esm/masked/pattern/fixed-definition.js","node_modules/imask/esm/masked/pattern/input-definition.js","node_modules/imask/esm/masked/regexp.js","node_modules/imask/esm/masked/pattern.js","node_modules/imask/esm/masked/range.js","node_modules/imask/esm/masked/date.js","node_modules/imask/esm/masked/dynamic.js","node_modules/imask/esm/masked/enum.js","node_modules/imask/esm/masked/function.js","node_modules/imask/esm/masked/number.js","node_modules/imask/esm/masked/pipe.js","node_modules/imask/esm/index.js","assets/scripts/admin/settings/credit.js","assets/scripts/admin/settings/settings.js","assets/scripts/admin/subscriptions/manual-renewal.js","assets/scripts/admin/subscriptions/retry-renewal.js","assets/scripts/admin/settings/payment-method-discount.js","assets/scripts/admin/subscriptions/payment-profile.js","assets/scripts/admin/settings/multipayment-min-control.js","assets/scripts/admin/wizard.js","assets/scripts/admin/index.js"],"sourcesContent":["/* global window, exports, define */\n\n!function() {\n 'use strict'\n\n var re = {\n not_string: /[^s]/,\n not_bool: /[^t]/,\n not_type: /[^T]/,\n not_primitive: /[^v]/,\n number: /[diefg]/,\n numeric_arg: /[bcdiefguxX]/,\n json: /[j]/,\n not_json: /[^j]/,\n text: /^[^\\x25]+/,\n modulo: /^\\x25{2}/,\n placeholder: /^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,\n key: /^([a-z_][a-z_\\d]*)/i,\n key_access: /^\\.([a-z_][a-z_\\d]*)/i,\n index_access: /^\\[(\\d+)\\]/,\n sign: /^[+-]/\n }\n\n function sprintf(key) {\n // `arguments` is not an array, but should be fine for this call\n return sprintf_format(sprintf_parse(key), arguments)\n }\n\n function vsprintf(fmt, argv) {\n return sprintf.apply(null, [fmt].concat(argv || []))\n }\n\n function sprintf_format(parse_tree, argv) {\n var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign\n for (i = 0; i < tree_length; i++) {\n if (typeof parse_tree[i] === 'string') {\n output += parse_tree[i]\n }\n else if (typeof parse_tree[i] === 'object') {\n ph = parse_tree[i] // convenience purposes only\n if (ph.keys) { // keyword argument\n arg = argv[cursor]\n for (k = 0; k < ph.keys.length; k++) {\n if (arg == undefined) {\n throw new Error(sprintf('[sprintf] Cannot access property \"%s\" of undefined value \"%s\"', ph.keys[k], ph.keys[k-1]))\n }\n arg = arg[ph.keys[k]]\n }\n }\n else if (ph.param_no) { // positional argument (explicit)\n arg = argv[ph.param_no]\n }\n else { // positional argument (implicit)\n arg = argv[cursor++]\n }\n\n if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) {\n arg = arg()\n }\n\n if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) {\n throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))\n }\n\n if (re.number.test(ph.type)) {\n is_positive = arg >= 0\n }\n\n switch (ph.type) {\n case 'b':\n arg = parseInt(arg, 10).toString(2)\n break\n case 'c':\n arg = String.fromCharCode(parseInt(arg, 10))\n break\n case 'd':\n case 'i':\n arg = parseInt(arg, 10)\n break\n case 'j':\n arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)\n break\n case 'e':\n arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()\n break\n case 'f':\n arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)\n break\n case 'g':\n arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)\n break\n case 'o':\n arg = (parseInt(arg, 10) >>> 0).toString(8)\n break\n case 's':\n arg = String(arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 't':\n arg = String(!!arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'T':\n arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'u':\n arg = parseInt(arg, 10) >>> 0\n break\n case 'v':\n arg = arg.valueOf()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'x':\n arg = (parseInt(arg, 10) >>> 0).toString(16)\n break\n case 'X':\n arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()\n break\n }\n if (re.json.test(ph.type)) {\n output += arg\n }\n else {\n if (re.number.test(ph.type) && (!is_positive || ph.sign)) {\n sign = is_positive ? '+' : '-'\n arg = arg.toString().replace(re.sign, '')\n }\n else {\n sign = ''\n }\n pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '\n pad_length = ph.width - (sign + arg).length\n pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''\n output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)\n }\n }\n }\n return output\n }\n\n var sprintf_cache = Object.create(null)\n\n function sprintf_parse(fmt) {\n if (sprintf_cache[fmt]) {\n return sprintf_cache[fmt]\n }\n\n var _fmt = fmt, match, parse_tree = [], arg_names = 0\n while (_fmt) {\n if ((match = re.text.exec(_fmt)) !== null) {\n parse_tree.push(match[0])\n }\n else if ((match = re.modulo.exec(_fmt)) !== null) {\n parse_tree.push('%')\n }\n else if ((match = re.placeholder.exec(_fmt)) !== null) {\n if (match[2]) {\n arg_names |= 1\n var field_list = [], replacement_field = match[2], field_match = []\n if ((field_match = re.key.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {\n if ((field_match = re.key_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else if ((field_match = re.index_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n }\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n match[2] = field_list\n }\n else {\n arg_names |= 2\n }\n if (arg_names === 3) {\n throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')\n }\n\n parse_tree.push(\n {\n placeholder: match[0],\n param_no: match[1],\n keys: match[2],\n sign: match[3],\n pad_char: match[4],\n align: match[5],\n width: match[6],\n precision: match[7],\n type: match[8]\n }\n )\n }\n else {\n throw new SyntaxError('[sprintf] unexpected placeholder')\n }\n _fmt = _fmt.substring(match[0].length)\n }\n return sprintf_cache[fmt] = parse_tree\n }\n\n /**\n * export to either browser or node.js\n */\n /* eslint-disable quote-props */\n if (typeof exports !== 'undefined') {\n exports['sprintf'] = sprintf\n exports['vsprintf'] = vsprintf\n }\n if (typeof window !== 'undefined') {\n window['sprintf'] = sprintf\n window['vsprintf'] = vsprintf\n\n if (typeof define === 'function' && define['amd']) {\n define(function() {\n return {\n 'sprintf': sprintf,\n 'vsprintf': vsprintf\n }\n })\n }\n }\n /* eslint-enable quote-props */\n}(); // eslint-disable-line\n","/**\n * Memize options object.\n *\n * @typedef MemizeOptions\n *\n * @property {number} [maxSize] Maximum size of the cache.\n */\n\n/**\n * Internal cache entry.\n *\n * @typedef MemizeCacheNode\n *\n * @property {?MemizeCacheNode|undefined} [prev] Previous node.\n * @property {?MemizeCacheNode|undefined} [next] Next node.\n * @property {Array<*>} args Function arguments for cache\n * entry.\n * @property {*} val Function result.\n */\n\n/**\n * Properties of the enhanced function for controlling cache.\n *\n * @typedef MemizeMemoizedFunction\n *\n * @property {()=>void} clear Clear the cache.\n */\n\n/**\n * Accepts a function to be memoized, and returns a new memoized function, with\n * optional options.\n *\n * @template {(...args: any[]) => any} F\n *\n * @param {F} fn Function to memoize.\n * @param {MemizeOptions} [options] Options object.\n *\n * @return {((...args: Parameters<F>) => ReturnType<F>) & MemizeMemoizedFunction} Memoized function.\n */\nfunction memize(fn, options) {\n\tvar size = 0;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar head;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar tail;\n\n\toptions = options || {};\n\n\tfunction memoized(/* ...args */) {\n\t\tvar node = head,\n\t\t\tlen = arguments.length,\n\t\t\targs,\n\t\t\ti;\n\n\t\tsearchCache: while (node) {\n\t\t\t// Perform a shallow equality test to confirm that whether the node\n\t\t\t// under test is a candidate for the arguments passed. Two arrays\n\t\t\t// are shallowly equal if their length matches and each entry is\n\t\t\t// strictly equal between the two sets. Avoid abstracting to a\n\t\t\t// function which could incur an arguments leaking deoptimization.\n\n\t\t\t// Check whether node arguments match arguments length\n\t\t\tif (node.args.length !== arguments.length) {\n\t\t\t\tnode = node.next;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Check whether node arguments match arguments values\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tif (node.args[i] !== arguments[i]) {\n\t\t\t\t\tnode = node.next;\n\t\t\t\t\tcontinue searchCache;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// At this point we can assume we've found a match\n\n\t\t\t// Surface matched node to head if not already\n\t\t\tif (node !== head) {\n\t\t\t\t// As tail, shift to previous. Must only shift if not also\n\t\t\t\t// head, since if both head and tail, there is no previous.\n\t\t\t\tif (node === tail) {\n\t\t\t\t\ttail = node.prev;\n\t\t\t\t}\n\n\t\t\t\t// Adjust siblings to point to each other. If node was tail,\n\t\t\t\t// this also handles new tail's empty `next` assignment.\n\t\t\t\t/** @type {MemizeCacheNode} */ (node.prev).next = node.next;\n\t\t\t\tif (node.next) {\n\t\t\t\t\tnode.next.prev = node.prev;\n\t\t\t\t}\n\n\t\t\t\tnode.next = head;\n\t\t\t\tnode.prev = null;\n\t\t\t\t/** @type {MemizeCacheNode} */ (head).prev = node;\n\t\t\t\thead = node;\n\t\t\t}\n\n\t\t\t// Return immediately\n\t\t\treturn node.val;\n\t\t}\n\n\t\t// No cached value found. Continue to insertion phase:\n\n\t\t// Create a copy of arguments (avoid leaking deoptimization)\n\t\targs = new Array(len);\n\t\tfor (i = 0; i < len; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\n\t\tnode = {\n\t\t\targs: args,\n\n\t\t\t// Generate the result from original function\n\t\t\tval: fn.apply(null, args),\n\t\t};\n\n\t\t// Don't need to check whether node is already head, since it would\n\t\t// have been returned above already if it was\n\n\t\t// Shift existing head down list\n\t\tif (head) {\n\t\t\thead.prev = node;\n\t\t\tnode.next = head;\n\t\t} else {\n\t\t\t// If no head, follows that there's no tail (at initial or reset)\n\t\t\ttail = node;\n\t\t}\n\n\t\t// Trim tail if we're reached max size and are pending cache insertion\n\t\tif (size === /** @type {MemizeOptions} */ (options).maxSize) {\n\t\t\ttail = /** @type {MemizeCacheNode} */ (tail).prev;\n\t\t\t/** @type {MemizeCacheNode} */ (tail).next = null;\n\t\t} else {\n\t\t\tsize++;\n\t\t}\n\n\t\thead = node;\n\n\t\treturn node.val;\n\t}\n\n\tmemoized.clear = function () {\n\t\thead = null;\n\t\ttail = null;\n\t\tsize = 0;\n\t};\n\n\t// Ignore reason: There's not a clear solution to create an intersection of\n\t// the function with additional properties, where the goal is to retain the\n\t// function signature of the incoming argument and add control properties\n\t// on the return value.\n\n\t// @ts-ignore\n\treturn memoized;\n}\n\nexport { memize as default };\n","/**\n * External dependencies\n */\nimport memoize from 'memize';\nimport sprintfjs from 'sprintf-js';\n\n/**\n * Log to console, once per message; or more precisely, per referentially equal\n * argument set. Because Jed throws errors, we log these to the console instead\n * to avoid crashing the application.\n *\n * @param {...*} args Arguments to pass to `console.error`\n */\nconst logErrorOnce = memoize( console.error ); // eslint-disable-line no-console\n\n/**\n * Returns a formatted string. If an error occurs in applying the format, the\n * original format string is returned.\n *\n * @param {string} format The format of the string to generate.\n * @param {...*} args Arguments to apply to the format.\n *\n * @see https://www.npmjs.com/package/sprintf-js\n *\n * @return {string} The formatted string.\n */\nexport function sprintf( format, ...args ) {\n\ttry {\n\t\treturn sprintfjs.sprintf( format, ...args );\n\t} catch ( error ) {\n\t\tif ( error instanceof Error ) {\n\t\t\tlogErrorOnce( 'sprintf error: \\n\\n' + error.toString() );\n\t\t}\n\t\treturn format;\n\t}\n}\n","var PRECEDENCE, OPENERS, TERMINATORS, PATTERN;\n\n/**\n * Operator precedence mapping.\n *\n * @type {Object}\n */\nPRECEDENCE = {\n\t'(': 9,\n\t'!': 8,\n\t'*': 7,\n\t'/': 7,\n\t'%': 7,\n\t'+': 6,\n\t'-': 6,\n\t'<': 5,\n\t'<=': 5,\n\t'>': 5,\n\t'>=': 5,\n\t'==': 4,\n\t'!=': 4,\n\t'&&': 3,\n\t'||': 2,\n\t'?': 1,\n\t'?:': 1,\n};\n\n/**\n * Characters which signal pair opening, to be terminated by terminators.\n *\n * @type {string[]}\n */\nOPENERS = [ '(', '?' ];\n\n/**\n * Characters which signal pair termination, the value an array with the\n * opener as its first member. The second member is an optional operator\n * replacement to push to the stack.\n *\n * @type {string[]}\n */\nTERMINATORS = {\n\t')': [ '(' ],\n\t':': [ '?', '?:' ],\n};\n\n/**\n * Pattern matching operators and openers.\n *\n * @type {RegExp}\n */\nPATTERN = /<=|>=|==|!=|&&|\\|\\||\\?:|\\(|!|\\*|\\/|%|\\+|-|<|>|\\?|\\)|:/;\n\n/**\n * Given a C expression, returns the equivalent postfix (Reverse Polish)\n * notation terms as an array.\n *\n * If a postfix string is desired, simply `.join( ' ' )` the result.\n *\n * @example\n *\n * ```js\n * import postfix from '@tannin/postfix';\n *\n * postfix( 'n > 1' );\n * // ⇒ [ 'n', '1', '>' ]\n * ```\n *\n * @param {string} expression C expression.\n *\n * @return {string[]} Postfix terms.\n */\nexport default function postfix( expression ) {\n\tvar terms = [],\n\t\tstack = [],\n\t\tmatch, operator, term, element;\n\n\twhile ( ( match = expression.match( PATTERN ) ) ) {\n\t\toperator = match[ 0 ];\n\n\t\t// Term is the string preceding the operator match. It may contain\n\t\t// whitespace, and may be empty (if operator is at beginning).\n\t\tterm = expression.substr( 0, match.index ).trim();\n\t\tif ( term ) {\n\t\t\tterms.push( term );\n\t\t}\n\n\t\twhile ( ( element = stack.pop() ) ) {\n\t\t\tif ( TERMINATORS[ operator ] ) {\n\t\t\t\tif ( TERMINATORS[ operator ][ 0 ] === element ) {\n\t\t\t\t\t// Substitution works here under assumption that because\n\t\t\t\t\t// the assigned operator will no longer be a terminator, it\n\t\t\t\t\t// will be pushed to the stack during the condition below.\n\t\t\t\t\toperator = TERMINATORS[ operator ][ 1 ] || operator;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if ( OPENERS.indexOf( element ) >= 0 || PRECEDENCE[ element ] < PRECEDENCE[ operator ] ) {\n\t\t\t\t// Push to stack if either an opener or when pop reveals an\n\t\t\t\t// element of lower precedence.\n\t\t\t\tstack.push( element );\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// For each popped from stack, push to terms.\n\t\t\tterms.push( element );\n\t\t}\n\n\t\tif ( ! TERMINATORS[ operator ] ) {\n\t\t\tstack.push( operator );\n\t\t}\n\n\t\t// Slice matched fragment from expression to continue match.\n\t\texpression = expression.substr( match.index + operator.length );\n\t}\n\n\t// Push remainder of operand, if exists, to terms.\n\texpression = expression.trim();\n\tif ( expression ) {\n\t\tterms.push( expression );\n\t}\n\n\t// Pop remaining items from stack into terms.\n\treturn terms.concat( stack.reverse() );\n}\n","/**\n * Operator callback functions.\n *\n * @type {Object}\n */\nvar OPERATORS = {\n\t'!': function( a ) {\n\t\treturn ! a;\n\t},\n\t'*': function( a, b ) {\n\t\treturn a * b;\n\t},\n\t'/': function( a, b ) {\n\t\treturn a / b;\n\t},\n\t'%': function( a, b ) {\n\t\treturn a % b;\n\t},\n\t'+': function( a, b ) {\n\t\treturn a + b;\n\t},\n\t'-': function( a, b ) {\n\t\treturn a - b;\n\t},\n\t'<': function( a, b ) {\n\t\treturn a < b;\n\t},\n\t'<=': function( a, b ) {\n\t\treturn a <= b;\n\t},\n\t'>': function( a, b ) {\n\t\treturn a > b;\n\t},\n\t'>=': function( a, b ) {\n\t\treturn a >= b;\n\t},\n\t'==': function( a, b ) {\n\t\treturn a === b;\n\t},\n\t'!=': function( a, b ) {\n\t\treturn a !== b;\n\t},\n\t'&&': function( a, b ) {\n\t\treturn a && b;\n\t},\n\t'||': function( a, b ) {\n\t\treturn a || b;\n\t},\n\t'?:': function( a, b, c ) {\n\t\tif ( a ) {\n\t\t\tthrow b;\n\t\t}\n\n\t\treturn c;\n\t},\n};\n\n/**\n * Given an array of postfix terms and operand variables, returns the result of\n * the postfix evaluation.\n *\n * @example\n *\n * ```js\n * import evaluate from '@tannin/evaluate';\n *\n * // 3 + 4 * 5 / 6 ⇒ '3 4 5 * 6 / +'\n * const terms = [ '3', '4', '5', '*', '6', '/', '+' ];\n *\n * evaluate( terms, {} );\n * // ⇒ 6.333333333333334\n * ```\n *\n * @param {string[]} postfix Postfix terms.\n * @param {Object} variables Operand variables.\n *\n * @return {*} Result of evaluation.\n */\nexport default function evaluate( postfix, variables ) {\n\tvar stack = [],\n\t\ti, j, args, getOperatorResult, term, value;\n\n\tfor ( i = 0; i < postfix.length; i++ ) {\n\t\tterm = postfix[ i ];\n\n\t\tgetOperatorResult = OPERATORS[ term ];\n\t\tif ( getOperatorResult ) {\n\t\t\t// Pop from stack by number of function arguments.\n\t\t\tj = getOperatorResult.length;\n\t\t\targs = Array( j );\n\t\t\twhile ( j-- ) {\n\t\t\t\targs[ j ] = stack.pop();\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tvalue = getOperatorResult.apply( null, args );\n\t\t\t} catch ( earlyReturn ) {\n\t\t\t\treturn earlyReturn;\n\t\t\t}\n\t\t} else if ( variables.hasOwnProperty( term ) ) {\n\t\t\tvalue = variables[ term ];\n\t\t} else {\n\t\t\tvalue = +term;\n\t\t}\n\n\t\tstack.push( value );\n\t}\n\n\treturn stack[ 0 ];\n}\n","import postfix from '@tannin/postfix';\nimport evaluate from '@tannin/evaluate';\n\n/**\n * Given a C expression, returns a function which can be called to evaluate its\n * result.\n *\n * @example\n *\n * ```js\n * import compile from '@tannin/compile';\n *\n * const evaluate = compile( 'n > 1' );\n *\n * evaluate( { n: 2 } );\n * // ⇒ true\n * ```\n *\n * @param {string} expression C expression.\n *\n * @return {(variables?:{[variable:string]:*})=>*} Compiled evaluator.\n */\nexport default function compile( expression ) {\n\tvar terms = postfix( expression );\n\n\treturn function( variables ) {\n\t\treturn evaluate( terms, variables );\n\t};\n}\n","import pluralForms from '@tannin/plural-forms';\n\n/**\n * Tannin constructor options.\n *\n * @typedef {Object} TanninOptions\n *\n * @property {string} [contextDelimiter] Joiner in string lookup with context.\n * @property {Function} [onMissingKey] Callback to invoke when key missing.\n */\n\n/**\n * Domain metadata.\n *\n * @typedef {Object} TanninDomainMetadata\n *\n * @property {string} [domain] Domain name.\n * @property {string} [lang] Language code.\n * @property {(string|Function)} [plural_forms] Plural forms expression or\n * function evaluator.\n */\n\n/**\n * Domain translation pair respectively representing the singular and plural\n * translation.\n *\n * @typedef {[string,string]} TanninTranslation\n */\n\n/**\n * Locale data domain. The key is used as reference for lookup, the value an\n * array of two string entries respectively representing the singular and plural\n * translation.\n *\n * @typedef {{[key:string]:TanninDomainMetadata|TanninTranslation,'':TanninDomainMetadata|TanninTranslation}} TanninLocaleDomain\n */\n\n/**\n * Jed-formatted locale data.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @typedef {{[domain:string]:TanninLocaleDomain}} TanninLocaleData\n */\n\n/**\n * Default Tannin constructor options.\n *\n * @type {TanninOptions}\n */\nvar DEFAULT_OPTIONS = {\n\tcontextDelimiter: '\\u0004',\n\tonMissingKey: null,\n};\n\n/**\n * Given a specific locale data's config `plural_forms` value, returns the\n * expression.\n *\n * @example\n *\n * ```\n * getPluralExpression( 'nplurals=2; plural=(n != 1);' ) === '(n != 1)'\n * ```\n *\n * @param {string} pf Locale data plural forms.\n *\n * @return {string} Plural forms expression.\n */\nfunction getPluralExpression( pf ) {\n\tvar parts, i, part;\n\n\tparts = pf.split( ';' );\n\n\tfor ( i = 0; i < parts.length; i++ ) {\n\t\tpart = parts[ i ].trim();\n\t\tif ( part.indexOf( 'plural=' ) === 0 ) {\n\t\t\treturn part.substr( 7 );\n\t\t}\n\t}\n}\n\n/**\n * Tannin constructor.\n *\n * @class\n *\n * @param {TanninLocaleData} data Jed-formatted locale data.\n * @param {TanninOptions} [options] Tannin options.\n */\nexport default function Tannin( data, options ) {\n\tvar key;\n\n\t/**\n\t * Jed-formatted locale data.\n\t *\n\t * @name Tannin#data\n\t * @type {TanninLocaleData}\n\t */\n\tthis.data = data;\n\n\t/**\n\t * Plural forms function cache, keyed by plural forms string.\n\t *\n\t * @name Tannin#pluralForms\n\t * @type {Object<string,Function>}\n\t */\n\tthis.pluralForms = {};\n\n\t/**\n\t * Effective options for instance, including defaults.\n\t *\n\t * @name Tannin#options\n\t * @type {TanninOptions}\n\t */\n\tthis.options = {};\n\n\tfor ( key in DEFAULT_OPTIONS ) {\n\t\tthis.options[ key ] = options !== undefined && key in options\n\t\t\t? options[ key ]\n\t\t\t: DEFAULT_OPTIONS[ key ];\n\t}\n}\n\n/**\n * Returns the plural form index for the given domain and value.\n *\n * @param {string} domain Domain on which to calculate plural form.\n * @param {number} n Value for which plural form is to be calculated.\n *\n * @return {number} Plural form index.\n */\nTannin.prototype.getPluralForm = function( domain, n ) {\n\tvar getPluralForm = this.pluralForms[ domain ],\n\t\tconfig, plural, pf;\n\n\tif ( ! getPluralForm ) {\n\t\tconfig = this.data[ domain ][ '' ];\n\n\t\tpf = (\n\t\t\tconfig[ 'Plural-Forms' ] ||\n\t\t\tconfig[ 'plural-forms' ] ||\n\t\t\t// Ignore reason: As known, there's no way to document the empty\n\t\t\t// string property on a key to guarantee this as metadata.\n\t\t\t// @ts-ignore\n\t\t\tconfig.plural_forms\n\t\t);\n\n\t\tif ( typeof pf !== 'function' ) {\n\t\t\tplural = getPluralExpression(\n\t\t\t\tconfig[ 'Plural-Forms' ] ||\n\t\t\t\tconfig[ 'plural-forms' ] ||\n\t\t\t\t// Ignore reason: As known, there's no way to document the empty\n\t\t\t\t// string property on a key to guarantee this as metadata.\n\t\t\t\t// @ts-ignore\n\t\t\t\tconfig.plural_forms\n\t\t\t);\n\n\t\t\tpf = pluralForms( plural );\n\t\t}\n\n\t\tgetPluralForm = this.pluralForms[ domain ] = pf;\n\t}\n\n\treturn getPluralForm( n );\n};\n\n/**\n * Translate a string.\n *\n * @param {string} domain Translation domain.\n * @param {string|void} context Context distinguishing terms of the same name.\n * @param {string} singular Primary key for translation lookup.\n * @param {string=} plural Fallback value used for non-zero plural\n * form index.\n * @param {number=} n Value to use in calculating plural form.\n *\n * @return {string} Translated string.\n */\nTannin.prototype.dcnpgettext = function( domain, context, singular, plural, n ) {\n\tvar index, key, entry;\n\n\tif ( n === undefined ) {\n\t\t// Default to singular.\n\t\tindex = 0;\n\t} else {\n\t\t// Find index by evaluating plural form for value.\n\t\tindex = this.getPluralForm( domain, n );\n\t}\n\n\tkey = singular;\n\n\t// If provided, context is prepended to key with delimiter.\n\tif ( context ) {\n\t\tkey = context + this.options.contextDelimiter + singular;\n\t}\n\n\tentry = this.data[ domain ][ key ];\n\n\t// Verify not only that entry exists, but that the intended index is within\n\t// range and non-empty.\n\tif ( entry && entry[ index ] ) {\n\t\treturn entry[ index ];\n\t}\n\n\tif ( this.options.onMissingKey ) {\n\t\tthis.options.onMissingKey( singular, domain );\n\t}\n\n\t// If entry not found, fall back to singular vs. plural with zero index\n\t// representing the singular value.\n\treturn index === 0 ? singular : plural;\n};\n","import compile from '@tannin/compile';\n\n/**\n * Given a C expression, returns a function which, when called with a value,\n * evaluates the result with the value assumed to be the \"n\" variable of the\n * expression. The result will be coerced to its numeric equivalent.\n *\n * @param {string} expression C expression.\n *\n * @return {Function} Evaluator function.\n */\nexport default function pluralForms( expression ) {\n\tvar evaluate = compile( expression );\n\n\treturn function( n ) {\n\t\treturn +evaluate( { n: n } );\n\t};\n}\n","/**\n * External dependencies\n */\nimport Tannin from 'tannin';\n\n/**\n * @typedef {Record<string,any>} LocaleData\n */\n\n/**\n * Default locale data to use for Tannin domain when not otherwise provided.\n * Assumes an English plural forms expression.\n *\n * @type {LocaleData}\n */\nconst DEFAULT_LOCALE_DATA = {\n\t'': {\n\t\t/** @param {number} n */\n\t\tplural_forms( n ) {\n\t\t\treturn n === 1 ? 0 : 1;\n\t\t},\n\t},\n};\n\n/*\n * Regular expression that matches i18n hooks like `i18n.gettext`, `i18n.ngettext`,\n * `i18n.gettext_domain` or `i18n.ngettext_with_context` or `i18n.has_translation`.\n */\nconst I18N_HOOK_REGEXP = /^i18n\\.(n?gettext|has_translation)(_|$)/;\n\n/**\n * @typedef {(domain?: string) => LocaleData} GetLocaleData\n *\n * Returns locale data by domain in a\n * Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n */\n/**\n * @typedef {(data?: LocaleData, domain?: string) => void} SetLocaleData\n *\n * Merges locale data into the Tannin instance by domain. Note that this\n * function will overwrite the domain configuration. Accepts data in a\n * Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n */\n/**\n * @typedef {(data?: LocaleData, domain?: string) => void} AddLocaleData\n *\n * Merges locale data into the Tannin instance by domain. Note that this\n * function will also merge the domain configuration. Accepts data in a\n * Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n */\n/**\n * @typedef {(data?: LocaleData, domain?: string) => void} ResetLocaleData\n *\n * Resets all current Tannin instance locale data and sets the specified\n * locale data for the domain. Accepts data in a Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n */\n/** @typedef {() => void} SubscribeCallback */\n/** @typedef {() => void} UnsubscribeCallback */\n/**\n * @typedef {(callback: SubscribeCallback) => UnsubscribeCallback} Subscribe\n *\n * Subscribes to changes of locale data\n */\n/**\n * @typedef {(domain?: string) => string} GetFilterDomain\n * Retrieve the domain to use when calling domain-specific filters.\n */\n/**\n * @typedef {(text: string, domain?: string) => string} __\n *\n * Retrieve the translation of text.\n *\n * @see https://developer.wordpress.org/reference/functions/__/\n */\n/**\n * @typedef {(text: string, context: string, domain?: string) => string} _x\n *\n * Retrieve translated string with gettext context.\n *\n * @see https://developer.wordpress.org/reference/functions/_x/\n */\n/**\n * @typedef {(single: string, plural: string, number: number, domain?: string) => string} _n\n *\n * Translates and retrieves the singular or plural form based on the supplied\n * number.\n *\n * @see https://developer.wordpress.org/reference/functions/_n/\n */\n/**\n * @typedef {(single: string, plural: string, number: number, context: string, domain?: string) => string} _nx\n *\n * Translates and retrieves the singular or plural form based on the supplied\n * number, with gettext context.\n *\n * @see https://developer.wordpress.org/reference/functions/_nx/\n */\n/**\n * @typedef {() => boolean} IsRtl\n *\n * Check if current locale is RTL.\n *\n * **RTL (Right To Left)** is a locale property indicating that text is written from right to left.\n * For example, the `he` locale (for Hebrew) specifies right-to-left. Arabic (ar) is another common\n * language written RTL. The opposite of RTL, LTR (Left To Right) is used in other languages,\n * including English (`en`, `en-US`, `en-GB`, etc.), Spanish (`es`), and French (`fr`).\n */\n/**\n * @typedef {(single: string, context?: string, domain?: string) => boolean} HasTranslation\n *\n * Check if there is a translation for a given string in singular form.\n */\n/** @typedef {import('@wordpress/hooks').Hooks} Hooks */\n\n/**\n * An i18n instance\n *\n * @typedef I18n\n * @property {GetLocaleData} getLocaleData Returns locale data by domain in a Jed-formatted JSON object shape.\n * @property {SetLocaleData} setLocaleData Merges locale data into the Tannin instance by domain. Note that this\n * function will overwrite the domain configuration. Accepts data in a\n * Jed-formatted JSON object shape.\n * @property {AddLocaleData} addLocaleData Merges locale data into the Tannin instance by domain. Note that this\n * function will also merge the domain configuration. Accepts data in a\n * Jed-formatted JSON object shape.\n * @property {ResetLocaleData} resetLocaleData Resets all current Tannin instance locale data and sets the specified\n * locale data for the domain. Accepts data in a Jed-formatted JSON object shape.\n * @property {Subscribe} subscribe Subscribes to changes of Tannin locale data.\n * @property {__} __ Retrieve the translation of text.\n * @property {_x} _x Retrieve translated string with gettext context.\n * @property {_n} _n Translates and retrieves the singular or plural form based on the supplied\n * number.\n * @property {_nx} _nx Translates and retrieves the singular or plural form based on the supplied\n * number, with gettext context.\n * @property {IsRtl} isRTL Check if current locale is RTL.\n * @property {HasTranslation} hasTranslation Check if there is a translation for a given string.\n */\n\n/**\n * Create an i18n instance\n *\n * @param {LocaleData} [initialData] Locale data configuration.\n * @param {string} [initialDomain] Domain for which configuration applies.\n * @param {Hooks} [hooks] Hooks implementation.\n *\n * @return {I18n} I18n instance.\n */\nexport const createI18n = ( initialData, initialDomain, hooks ) => {\n\t/**\n\t * The underlying instance of Tannin to which exported functions interface.\n\t *\n\t * @type {Tannin}\n\t */\n\tconst tannin = new Tannin( {} );\n\n\tconst listeners = new Set();\n\n\tconst notifyListeners = () => {\n\t\tlisteners.forEach( ( listener ) => listener() );\n\t};\n\n\t/**\n\t * Subscribe to changes of locale data.\n\t *\n\t * @param {SubscribeCallback} callback Subscription callback.\n\t * @return {UnsubscribeCallback} Unsubscribe callback.\n\t */\n\tconst subscribe = ( callback ) => {\n\t\tlisteners.add( callback );\n\t\treturn () => listeners.delete( callback );\n\t};\n\n\t/** @type {GetLocaleData} */\n\tconst getLocaleData = ( domain = 'default' ) => tannin.data[ domain ];\n\n\t/**\n\t * @param {LocaleData} [data]\n\t * @param {string} [domain]\n\t */\n\tconst doSetLocaleData = ( data, domain = 'default' ) => {\n\t\ttannin.data[ domain ] = {\n\t\t\t...tannin.data[ domain ],\n\t\t\t...data,\n\t\t};\n\n\t\t// Populate default domain configuration (supported locale date which omits\n\t\t// a plural forms expression).\n\t\ttannin.data[ domain ][ '' ] = {\n\t\t\t...DEFAULT_LOCALE_DATA[ '' ],\n\t\t\t...tannin.data[ domain ]?.[ '' ],\n\t\t};\n\n\t\t// Clean up cached plural forms functions cache as it might be updated.\n\t\tdelete tannin.pluralForms[ domain ];\n\t};\n\n\t/** @type {SetLocaleData} */\n\tconst setLocaleData = ( data, domain ) => {\n\t\tdoSetLocaleData( data, domain );\n\t\tnotifyListeners();\n\t};\n\n\t/** @type {AddLocaleData} */\n\tconst addLocaleData = ( data, domain = 'default' ) => {\n\t\ttannin.data[ domain ] = {\n\t\t\t...tannin.data[ domain ],\n\t\t\t...data,\n\t\t\t// Populate default domain configuration (supported locale date which omits\n\t\t\t// a plural forms expression).\n\t\t\t'': {\n\t\t\t\t...DEFAULT_LOCALE_DATA[ '' ],\n\t\t\t\t...tannin.data[ domain ]?.[ '' ],\n\t\t\t\t...data?.[ '' ],\n\t\t\t},\n\t\t};\n\n\t\t// Clean up cached plural forms functions cache as it might be updated.\n\t\tdelete tannin.pluralForms[ domain ];\n\n\t\tnotifyListeners();\n\t};\n\n\t/** @type {ResetLocaleData} */\n\tconst resetLocaleData = ( data, domain ) => {\n\t\t// Reset all current Tannin locale data.\n\t\ttannin.data = {};\n\n\t\t// Reset cached plural forms functions cache.\n\t\ttannin.pluralForms = {};\n\n\t\tsetLocaleData( data, domain );\n\t};\n\n\t/**\n\t * Wrapper for Tannin's `dcnpgettext`. Populates default locale data if not\n\t * otherwise previously assigned.\n\t *\n\t * @param {string|undefined} domain Domain to retrieve the translated text.\n\t * @param {string|undefined} context Context information for the translators.\n\t * @param {string} single Text to translate if non-plural. Used as\n\t * fallback return value on a caught error.\n\t * @param {string} [plural] The text to be used if the number is\n\t * plural.\n\t * @param {number} [number] The number to compare against to use\n\t * either the singular or plural form.\n\t *\n\t * @return {string} The translated string.\n\t */\n\tconst dcnpgettext = (\n\t\tdomain = 'default',\n\t\tcontext,\n\t\tsingle,\n\t\tplural,\n\t\tnumber\n\t) => {\n\t\tif ( ! tannin.data[ domain ] ) {\n\t\t\t// Use `doSetLocaleData` to set silently, without notifying listeners.\n\t\t\tdoSetLocaleData( undefined, domain );\n\t\t}\n\n\t\treturn tannin.dcnpgettext( domain, context, single, plural, number );\n\t};\n\n\t/** @type {GetFilterDomain} */\n\tconst getFilterDomain = ( domain = 'default' ) => domain;\n\n\t/** @type {__} */\n\tconst __ = ( text, domain ) => {\n\t\tlet translation = dcnpgettext( domain, undefined, text );\n\t\tif ( ! hooks ) {\n\t\t\treturn translation;\n\t\t}\n\n\t\t/**\n\t\t * Filters text with its translation.\n\t\t *\n\t\t * @param {string} translation Translated text.\n\t\t * @param {string} text Text to translate.\n\t\t * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n\t\t */\n\t\ttranslation = /** @type {string} */ (\n\t\t\t/** @type {*} */ hooks.applyFilters(\n\t\t\t\t'i18n.gettext',\n\t\t\t\ttranslation,\n\t\t\t\ttext,\n\t\t\t\tdomain\n\t\t\t)\n\t\t);\n\t\treturn /** @type {string} */ (\n\t\t\t/** @type {*} */ hooks.applyFilters(\n\t\t\t\t'i18n.gettext_' + getFilterDomain( domain ),\n\t\t\t\ttranslation,\n\t\t\t\ttext,\n\t\t\t\tdomain\n\t\t\t)\n\t\t);\n\t};\n\n\t/** @type {_x} */\n\tconst _x = ( text, context, domain ) => {\n\t\tlet translation = dcnpgettext( domain, context, text );\n\t\tif ( ! hooks ) {\n\t\t\treturn translation;\n\t\t}\n\n\t\t/**\n\t\t * Filters text with its translation based on context information.\n\t\t *\n\t\t * @param {string} translation Translated text.\n\t\t * @param {string} text Text to translate.\n\t\t * @param {string} context Context information for the translators.\n\t\t * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n\t\t */\n\t\ttranslation = /** @type {string} */ (\n\t\t\t/** @type {*} */ hooks.applyFilters(\n\t\t\t\t'i18n.gettext_with_context',\n\t\t\t\ttranslation,\n\t\t\t\ttext,\n\t\t\t\tcontext,\n\t\t\t\tdomain\n\t\t\t)\n\t\t);\n\t\treturn /** @type {string} */ (\n\t\t\t/** @type {*} */ hooks.applyFilters(\n\t\t\t\t'i18n.gettext_with_context_' + getFilterDomain( domain ),\n\t\t\t\ttranslation,\n\t\t\t\ttext,\n\t\t\t\tcontext,\n\t\t\t\tdomain\n\t\t\t)\n\t\t);\n\t};\n\n\t/** @type {_n} */\n\tconst _n = ( single, plural, number, domain ) => {\n\t\tlet translation = dcnpgettext(\n\t\t\tdomain,\n\t\t\tundefined,\n\t\t\tsingle,\n\t\t\tplural,\n\t\t\tnumber\n\t\t);\n\t\tif ( ! hooks ) {\n\t\t\treturn translation;\n\t\t}\n\n\t\t/**\n\t\t * Filters the singular or plural form of a string.\n\t\t *\n\t\t * @param {string} translation Translated text.\n\t\t * @param {string} single The text to be used if the number is singular.\n\t\t * @param {string} plural The text to be used if the number is plural.\n\t\t * @param {string} number The number to compare against to use either the singular or plural form.\n\t\t * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n\t\t */\n\t\ttranslation = /** @type {string} */ (\n\t\t\t/** @type {*} */ hooks.applyFilters(\n\t\t\t\t'i18n.ngettext',\n\t\t\t\ttranslation,\n\t\t\t\tsingle,\n\t\t\t\tplural,\n\t\t\t\tnumber,\n\t\t\t\tdomain\n\t\t\t)\n\t\t);\n\t\treturn /** @type {string} */ (\n\t\t\t/** @type {*} */ hooks.applyFilters(\n\t\t\t\t'i18n.ngettext_' + getFilterDomain( domain ),\n\t\t\t\ttranslation,\n\t\t\t\tsingle,\n\t\t\t\tplural,\n\t\t\t\tnumber,\n\t\t\t\tdomain\n\t\t\t)\n\t\t);\n\t};\n\n\t/** @type {_nx} */\n\tconst _nx = ( single, plural, number, context, domain ) => {\n\t\tlet translation = dcnpgettext(\n\t\t\tdomain,\n\t\t\tcontext,\n\t\t\tsingle,\n\t\t\tplural,\n\t\t\tnumber\n\t\t);\n\t\tif ( ! hooks ) {\n\t\t\treturn translation;\n\t\t}\n\n\t\t/**\n\t\t * Filters the singular or plural form of a string with gettext context.\n\t\t *\n\t\t * @param {string} translation Translated text.\n\t\t * @param {string} single The text to be used if the number is singular.\n\t\t * @param {string} plural The text to be used if the number is plural.\n\t\t * @param {string} number The number to compare against to use either the singular or plural form.\n\t\t * @param {string} context Context information for the translators.\n\t\t * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n\t\t */\n\t\ttranslation = /** @type {string} */ (\n\t\t\t/** @type {*} */ hooks.applyFilters(\n\t\t\t\t'i18n.ngettext_with_context',\n\t\t\t\ttranslation,\n\t\t\t\tsingle,\n\t\t\t\tplural,\n\t\t\t\tnumber,\n\t\t\t\tcontext,\n\t\t\t\tdomain\n\t\t\t)\n\t\t);\n\n\t\treturn /** @type {string} */ (\n\t\t\t/** @type {*} */ hooks.applyFilters(\n\t\t\t\t'i18n.ngettext_with_context_' + getFilterDomain( domain ),\n\t\t\t\ttranslation,\n\t\t\t\tsingle,\n\t\t\t\tplural,\n\t\t\t\tnumber,\n\t\t\t\tcontext,\n\t\t\t\tdomain\n\t\t\t)\n\t\t);\n\t};\n\n\t/** @type {IsRtl} */\n\tconst isRTL = () => {\n\t\treturn 'rtl' === _x( 'ltr', 'text direction' );\n\t};\n\n\t/** @type {HasTranslation} */\n\tconst hasTranslation = ( single, context, domain ) => {\n\t\tconst key = context ? context + '\\u0004' + single : single;\n\t\tlet result = !! tannin.data?.[ domain ?? 'default' ]?.[ key ];\n\t\tif ( hooks ) {\n\t\t\t/**\n\t\t\t * Filters the presence of a translation in the locale data.\n\t\t\t *\n\t\t\t * @param {boolean} hasTranslation Whether the translation is present or not..\n\t\t\t * @param {string} single The singular form of the translated text (used as key in locale data)\n\t\t\t * @param {string} context Context information for the translators.\n\t\t\t * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n\t\t\t */\n\t\t\tresult = /** @type { boolean } */ (\n\t\t\t\t/** @type {*} */ hooks.applyFilters(\n\t\t\t\t\t'i18n.has_translation',\n\t\t\t\t\tresult,\n\t\t\t\t\tsingle,\n\t\t\t\t\tcontext,\n\t\t\t\t\tdomain\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tresult = /** @type { boolean } */ (\n\t\t\t\t/** @type {*} */ hooks.applyFilters(\n\t\t\t\t\t'i18n.has_translation_' + getFilterDomain( domain ),\n\t\t\t\t\tresult,\n\t\t\t\t\tsingle,\n\t\t\t\t\tcontext,\n\t\t\t\t\tdomain\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t\treturn result;\n\t};\n\n\tif ( initialData ) {\n\t\tsetLocaleData( initialData, initialDomain );\n\t}\n\n\tif ( hooks ) {\n\t\t/**\n\t\t * @param {string} hookName\n\t\t */\n\t\tconst onHookAddedOrRemoved = ( hookName ) => {\n\t\t\tif ( I18N_HOOK_REGEXP.test( hookName ) ) {\n\t\t\t\tnotifyListeners();\n\t\t\t}\n\t\t};\n\n\t\thooks.addAction( 'hookAdded', 'core/i18n', onHookAddedOrRemoved );\n\t\thooks.addAction( 'hookRemoved', 'core/i18n', onHookAddedOrRemoved );\n\t}\n\n\treturn {\n\t\tgetLocaleData,\n\t\tsetLocaleData,\n\t\taddLocaleData,\n\t\tresetLocaleData,\n\t\tsubscribe,\n\t\t__,\n\t\t_x,\n\t\t_n,\n\t\t_nx,\n\t\tisRTL,\n\t\thasTranslation,\n\t};\n};\n","/**\n * Validate a namespace string.\n *\n * @param {string} namespace The namespace to validate - should take the form\n * `vendor/plugin/function`.\n *\n * @return {boolean} Whether the namespace is valid.\n */\nfunction validateNamespace( namespace ) {\n\tif ( 'string' !== typeof namespace || '' === namespace ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error( 'The namespace must be a non-empty string.' );\n\t\treturn false;\n\t}\n\n\tif ( ! /^[a-zA-Z][a-zA-Z0-9_.\\-\\/]*$/.test( namespace ) ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error(\n\t\t\t'The namespace can only contain numbers, letters, dashes, periods, underscores and slashes.'\n\t\t);\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nexport default validateNamespace;\n","/**\n * Validate a hookName string.\n *\n * @param {string} hookName The hook name to validate. Should be a non empty string containing\n * only numbers, letters, dashes, periods and underscores. Also,\n * the hook name cannot begin with `__`.\n *\n * @return {boolean} Whether the hook name is valid.\n */\nfunction validateHookName( hookName ) {\n\tif ( 'string' !== typeof hookName || '' === hookName ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error( 'The hook name must be a non-empty string.' );\n\t\treturn false;\n\t}\n\n\tif ( /^__/.test( hookName ) ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error( 'The hook name cannot begin with `__`.' );\n\t\treturn false;\n\t}\n\n\tif ( ! /^[a-zA-Z][a-zA-Z0-9_.-]*$/.test( hookName ) ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error(\n\t\t\t'The hook name can only contain numbers, letters, dashes, periods and underscores.'\n\t\t);\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nexport default validateHookName;\n","/**\n * Internal dependencies\n */\nimport validateNamespace from './validateNamespace.js';\nimport validateHookName from './validateHookName.js';\n\n/**\n * @callback AddHook\n *\n * Adds the hook to the appropriate hooks container.\n *\n * @param {string} hookName Name of hook to add\n * @param {string} namespace The unique namespace identifying the callback in the form `vendor/plugin/function`.\n * @param {import('.').Callback} callback Function to call when the hook is run\n * @param {number} [priority=10] Priority of this hook\n */\n\n/**\n * Returns a function which, when invoked, will add a hook.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n *\n * @return {AddHook} Function that adds a new hook.\n */\nfunction createAddHook( hooks, storeKey ) {\n\treturn function addHook( hookName, namespace, callback, priority = 10 ) {\n\t\tconst hooksStore = hooks[ storeKey ];\n\n\t\tif ( ! validateHookName( hookName ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! validateNamespace( namespace ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( 'function' !== typeof callback ) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error( 'The hook callback must be a function.' );\n\t\t\treturn;\n\t\t}\n\n\t\t// Validate numeric priority\n\t\tif ( 'number' !== typeof priority ) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(\n\t\t\t\t'If specified, the hook priority must be a number.'\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst handler = { callback, priority, namespace };\n\n\t\tif ( hooksStore[ hookName ] ) {\n\t\t\t// Find the correct insert index of the new hook.\n\t\t\tconst handlers = hooksStore[ hookName ].handlers;\n\n\t\t\t/** @type {number} */\n\t\t\tlet i;\n\t\t\tfor ( i = handlers.length; i > 0; i-- ) {\n\t\t\t\tif ( priority >= handlers[ i - 1 ].priority ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( i === handlers.length ) {\n\t\t\t\t// If append, operate via direct assignment.\n\t\t\t\thandlers[ i ] = handler;\n\t\t\t} else {\n\t\t\t\t// Otherwise, insert before index via splice.\n\t\t\t\thandlers.splice( i, 0, handler );\n\t\t\t}\n\n\t\t\t// We may also be currently executing this hook. If the callback\n\t\t\t// we're adding would come after the current callback, there's no\n\t\t\t// problem; otherwise we need to increase the execution index of\n\t\t\t// any other runs by 1 to account for the added element.\n\t\t\thooksStore.__current.forEach( ( hookInfo ) => {\n\t\t\t\tif (\n\t\t\t\t\thookInfo.name === hookName &&\n\t\t\t\t\thookInfo.currentIndex >= i\n\t\t\t\t) {\n\t\t\t\t\thookInfo.currentIndex++;\n\t\t\t\t}\n\t\t\t} );\n\t\t} else {\n\t\t\t// This is the first hook of its type.\n\t\t\thooksStore[ hookName ] = {\n\t\t\t\thandlers: [ handler ],\n\t\t\t\truns: 0,\n\t\t\t};\n\t\t}\n\n\t\tif ( hookName !== 'hookAdded' ) {\n\t\t\thooks.doAction(\n\t\t\t\t'hookAdded',\n\t\t\t\thookName,\n\t\t\t\tnamespace,\n\t\t\t\tcallback,\n\t\t\t\tpriority\n\t\t\t);\n\t\t}\n\t};\n}\n\nexport default createAddHook;\n","/**\n * Internal dependencies\n */\nimport validateNamespace from './validateNamespace.js';\nimport validateHookName from './validateHookName.js';\n\n/**\n * @callback RemoveHook\n * Removes the specified callback (or all callbacks) from the hook with a given hookName\n * and namespace.\n *\n * @param {string} hookName The name of the hook to modify.\n * @param {string} namespace The unique namespace identifying the callback in the\n * form `vendor/plugin/function`.\n *\n * @return {number | undefined} The number of callbacks removed.\n */\n\n/**\n * Returns a function which, when invoked, will remove a specified hook or all\n * hooks by the given name.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n * @param {boolean} [removeAll=false] Whether to remove all callbacks for a hookName,\n * without regard to namespace. Used to create\n * `removeAll*` functions.\n *\n * @return {RemoveHook} Function that removes hooks.\n */\nfunction createRemoveHook( hooks, storeKey, removeAll = false ) {\n\treturn function removeHook( hookName, namespace ) {\n\t\tconst hooksStore = hooks[ storeKey ];\n\n\t\tif ( ! validateHookName( hookName ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! removeAll && ! validateNamespace( namespace ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Bail if no hooks exist by this name.\n\t\tif ( ! hooksStore[ hookName ] ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tlet handlersRemoved = 0;\n\n\t\tif ( removeAll ) {\n\t\t\thandlersRemoved = hooksStore[ hookName ].handlers.length;\n\t\t\thooksStore[ hookName ] = {\n\t\t\t\truns: hooksStore[ hookName ].runs,\n\t\t\t\thandlers: [],\n\t\t\t};\n\t\t} else {\n\t\t\t// Try to find the specified callback to remove.\n\t\t\tconst handlers = hooksStore[ hookName ].handlers;\n\t\t\tfor ( let i = handlers.length - 1; i >= 0; i-- ) {\n\t\t\t\tif ( handlers[ i ].namespace === namespace ) {\n\t\t\t\t\thandlers.splice( i, 1 );\n\t\t\t\t\thandlersRemoved++;\n\t\t\t\t\t// This callback may also be part of a hook that is\n\t\t\t\t\t// currently executing. If the callback we're removing\n\t\t\t\t\t// comes after the current callback, there's no problem;\n\t\t\t\t\t// otherwise we need to decrease the execution index of any\n\t\t\t\t\t// other runs by 1 to account for the removed element.\n\t\t\t\t\thooksStore.__current.forEach( ( hookInfo ) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\thookInfo.name === hookName &&\n\t\t\t\t\t\t\thookInfo.currentIndex >= i\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\thookInfo.currentIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( hookName !== 'hookRemoved' ) {\n\t\t\thooks.doAction( 'hookRemoved', hookName, namespace );\n\t\t}\n\n\t\treturn handlersRemoved;\n\t};\n}\n\nexport default createRemoveHook;\n","/**\n * @callback HasHook\n *\n * Returns whether any handlers are attached for the given hookName and optional namespace.\n *\n * @param {string} hookName The name of the hook to check for.\n * @param {string} [namespace] Optional. The unique namespace identifying the callback\n * in the form `vendor/plugin/function`.\n *\n * @return {boolean} Whether there are handlers that are attached to the given hook.\n */\n/**\n * Returns a function which, when invoked, will return whether any handlers are\n * attached to a particular hook.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n *\n * @return {HasHook} Function that returns whether any handlers are\n * attached to a particular hook and optional namespace.\n */\nfunction createHasHook( hooks, storeKey ) {\n\treturn function hasHook( hookName, namespace ) {\n\t\tconst hooksStore = hooks[ storeKey ];\n\n\t\t// Use the namespace if provided.\n\t\tif ( 'undefined' !== typeof namespace ) {\n\t\t\treturn (\n\t\t\t\thookName in hooksStore &&\n\t\t\t\thooksStore[ hookName ].handlers.some(\n\t\t\t\t\t( hook ) => hook.namespace === namespace\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\treturn hookName in hooksStore;\n\t};\n}\n\nexport default createHasHook;\n","/**\n * Returns a function which, when invoked, will execute all callbacks\n * registered to a hook of the specified type, optionally returning the final\n * value of the call chain.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n * @param {boolean} [returnFirstArg=false] Whether each hook callback is expected to\n * return its first argument.\n *\n * @return {(hookName:string, ...args: unknown[]) => undefined|unknown} Function that runs hook callbacks.\n */\nfunction createRunHook( hooks, storeKey, returnFirstArg = false ) {\n\treturn function runHooks( hookName, ...args ) {\n\t\tconst hooksStore = hooks[ storeKey ];\n\n\t\tif ( ! hooksStore[ hookName ] ) {\n\t\t\thooksStore[ hookName ] = {\n\t\t\t\thandlers: [],\n\t\t\t\truns: 0,\n\t\t\t};\n\t\t}\n\n\t\thooksStore[ hookName ].runs++;\n\n\t\tconst handlers = hooksStore[ hookName ].handlers;\n\n\t\t// The following code is stripped from production builds.\n\t\tif ( 'production' !== process.env.NODE_ENV ) {\n\t\t\t// Handle any 'all' hooks registered.\n\t\t\tif ( 'hookAdded' !== hookName && hooksStore.all ) {\n\t\t\t\thandlers.push( ...hooksStore.all.handlers );\n\t\t\t}\n\t\t}\n\n\t\tif ( ! handlers || ! handlers.length ) {\n\t\t\treturn returnFirstArg ? args[ 0 ] : undefined;\n\t\t}\n\n\t\tconst hookInfo = {\n\t\t\tname: hookName,\n\t\t\tcurrentIndex: 0,\n\t\t};\n\n\t\thooksStore.__current.push( hookInfo );\n\n\t\twhile ( hookInfo.currentIndex < handlers.length ) {\n\t\t\tconst handler = handlers[ hookInfo.currentIndex ];\n\n\t\t\tconst result = handler.callback.apply( null, args );\n\t\t\tif ( returnFirstArg ) {\n\t\t\t\targs[ 0 ] = result;\n\t\t\t}\n\n\t\t\thookInfo.currentIndex++;\n\t\t}\n\n\t\thooksStore.__current.pop();\n\n\t\tif ( returnFirstArg ) {\n\t\t\treturn args[ 0 ];\n\t\t}\n\n\t\treturn undefined;\n\t};\n}\n\nexport default createRunHook;\n","/**\n * Returns a function which, when invoked, will return the name of the\n * currently running hook, or `null` if no hook of the given type is currently\n * running.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n *\n * @return {() => string | null} Function that returns the current hook name or null.\n */\nfunction createCurrentHook( hooks, storeKey ) {\n\treturn function currentHook() {\n\t\tconst hooksStore = hooks[ storeKey ];\n\n\t\treturn (\n\t\t\thooksStore.__current[ hooksStore.__current.length - 1 ]?.name ??\n\t\t\tnull\n\t\t);\n\t};\n}\n\nexport default createCurrentHook;\n","/**\n * @callback DoingHook\n * Returns whether a hook is currently being executed.\n *\n * @param {string} [hookName] The name of the hook to check for. If\n * omitted, will check for any hook being executed.\n *\n * @return {boolean} Whether the hook is being executed.\n */\n\n/**\n * Returns a function which, when invoked, will return whether a hook is\n * currently being executed.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n *\n * @return {DoingHook} Function that returns whether a hook is currently\n * being executed.\n */\nfunction createDoingHook( hooks, storeKey ) {\n\treturn function doingHook( hookName ) {\n\t\tconst hooksStore = hooks[ storeKey ];\n\n\t\t// If the hookName was not passed, check for any current hook.\n\t\tif ( 'undefined' === typeof hookName ) {\n\t\t\treturn 'undefined' !== typeof hooksStore.__current[ 0 ];\n\t\t}\n\n\t\t// Return the __current hook.\n\t\treturn hooksStore.__current[ 0 ]\n\t\t\t? hookName === hooksStore.__current[ 0 ].name\n\t\t\t: false;\n\t};\n}\n\nexport default createDoingHook;\n","/**\n * Internal dependencies\n */\nimport validateHookName from './validateHookName.js';\n\n/**\n * @callback DidHook\n *\n * Returns the number of times an action has been fired.\n *\n * @param {string} hookName The hook name to check.\n *\n * @return {number | undefined} The number of times the hook has run.\n */\n\n/**\n * Returns a function which, when invoked, will return the number of times a\n * hook has been called.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n *\n * @return {DidHook} Function that returns a hook's call count.\n */\nfunction createDidHook( hooks, storeKey ) {\n\treturn function didHook( hookName ) {\n\t\tconst hooksStore = hooks[ storeKey ];\n\n\t\tif ( ! validateHookName( hookName ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn hooksStore[ hookName ] && hooksStore[ hookName ].runs\n\t\t\t? hooksStore[ hookName ].runs\n\t\t\t: 0;\n\t};\n}\n\nexport default createDidHook;\n","/**\n * Internal dependencies\n */\nimport createAddHook from './createAddHook';\nimport createRemoveHook from './createRemoveHook';\nimport createHasHook from './createHasHook';\nimport createRunHook from './createRunHook';\nimport createCurrentHook from './createCurrentHook';\nimport createDoingHook from './createDoingHook';\nimport createDidHook from './createDidHook';\n\n/**\n * Internal class for constructing hooks. Use `createHooks()` function\n *\n * Note, it is necessary to expose this class to make its type public.\n *\n * @private\n */\nexport class _Hooks {\n\tconstructor() {\n\t\t/** @type {import('.').Store} actions */\n\t\tthis.actions = Object.create( null );\n\t\tthis.actions.__current = [];\n\n\t\t/** @type {import('.').Store} filters */\n\t\tthis.filters = Object.create( null );\n\t\tthis.filters.__current = [];\n\n\t\tthis.addAction = createAddHook( this, 'actions' );\n\t\tthis.addFilter = createAddHook( this, 'filters' );\n\t\tthis.removeAction = createRemoveHook( this, 'actions' );\n\t\tthis.removeFilter = createRemoveHook( this, 'filters' );\n\t\tthis.hasAction = createHasHook( this, 'actions' );\n\t\tthis.hasFilter = createHasHook( this, 'filters' );\n\t\tthis.removeAllActions = createRemoveHook( this, 'actions', true );\n\t\tthis.removeAllFilters = createRemoveHook( this, 'filters', true );\n\t\tthis.doAction = createRunHook( this, 'actions' );\n\t\tthis.applyFilters = createRunHook( this, 'filters', true );\n\t\tthis.currentAction = createCurrentHook( this, 'actions' );\n\t\tthis.currentFilter = createCurrentHook( this, 'filters' );\n\t\tthis.doingAction = createDoingHook( this, 'actions' );\n\t\tthis.doingFilter = createDoingHook( this, 'filters' );\n\t\tthis.didAction = createDidHook( this, 'actions' );\n\t\tthis.didFilter = createDidHook( this, 'filters' );\n\t}\n}\n\n/** @typedef {_Hooks} Hooks */\n\n/**\n * Returns an instance of the hooks object.\n *\n * @return {Hooks} A Hooks instance.\n */\nfunction createHooks() {\n\treturn new _Hooks();\n}\n\nexport default createHooks;\n","/**\n * Internal dependencies\n */\nimport createHooks from './createHooks';\n\n/** @typedef {(...args: any[])=>any} Callback */\n\n/**\n * @typedef Handler\n * @property {Callback} callback The callback\n * @property {string} namespace The namespace\n * @property {number} priority The namespace\n */\n\n/**\n * @typedef Hook\n * @property {Handler[]} handlers Array of handlers\n * @property {number} runs Run counter\n */\n\n/**\n * @typedef Current\n * @property {string} name Hook name\n * @property {number} currentIndex The index\n */\n\n/**\n * @typedef {Record<string, Hook> & {__current: Current[]}} Store\n */\n\n/**\n * @typedef {'actions' | 'filters'} StoreKey\n */\n\n/**\n * @typedef {import('./createHooks').Hooks} Hooks\n */\n\nexport const defaultHooks = createHooks();\n\nconst {\n\taddAction,\n\taddFilter,\n\tremoveAction,\n\tremoveFilter,\n\thasAction,\n\thasFilter,\n\tremoveAllActions,\n\tremoveAllFilters,\n\tdoAction,\n\tapplyFilters,\n\tcurrentAction,\n\tcurrentFilter,\n\tdoingAction,\n\tdoingFilter,\n\tdidAction,\n\tdidFilter,\n\tactions,\n\tfilters,\n} = defaultHooks;\n\nexport {\n\tcreateHooks,\n\taddAction,\n\taddFilter,\n\tremoveAction,\n\tremoveFilter,\n\thasAction,\n\thasFilter,\n\tremoveAllActions,\n\tremoveAllFilters,\n\tdoAction,\n\tapplyFilters,\n\tcurrentAction,\n\tcurrentFilter,\n\tdoingAction,\n\tdoingFilter,\n\tdidAction,\n\tdidFilter,\n\tactions,\n\tfilters,\n};\n","/**\n * Internal dependencies\n */\nimport { createI18n } from './create-i18n';\n\n/**\n * WordPress dependencies\n */\nimport { defaultHooks } from '@wordpress/hooks';\n\nconst i18n = createI18n( undefined, undefined, defaultHooks );\n\n/**\n * Default, singleton instance of `I18n`.\n */\nexport default i18n;\n\n/*\n * Comments in this file are duplicated from ./i18n due to\n * https://github.com/WordPress/gutenberg/pull/20318#issuecomment-590837722\n */\n\n/**\n * @typedef {import('./create-i18n').LocaleData} LocaleData\n * @typedef {import('./create-i18n').SubscribeCallback} SubscribeCallback\n * @typedef {import('./create-i18n').UnsubscribeCallback} UnsubscribeCallback\n */\n\n/**\n * Returns locale data by domain in a Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @param {string} [domain] Domain for which to get the data.\n * @return {LocaleData} Locale data.\n */\nexport const getLocaleData = i18n.getLocaleData.bind( i18n );\n\n/**\n * Merges locale data into the Tannin instance by domain. Accepts data in a\n * Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @param {LocaleData} [data] Locale data configuration.\n * @param {string} [domain] Domain for which configuration applies.\n */\nexport const setLocaleData = i18n.setLocaleData.bind( i18n );\n\n/**\n * Resets all current Tannin instance locale data and sets the specified\n * locale data for the domain. Accepts data in a Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @param {LocaleData} [data] Locale data configuration.\n * @param {string} [domain] Domain for which configuration applies.\n */\nexport const resetLocaleData = i18n.resetLocaleData.bind( i18n );\n\n/**\n * Subscribes to changes of locale data\n *\n * @param {SubscribeCallback} callback Subscription callback\n * @return {UnsubscribeCallback} Unsubscribe callback\n */\nexport const subscribe = i18n.subscribe.bind( i18n );\n\n/**\n * Retrieve the translation of text.\n *\n * @see https://developer.wordpress.org/reference/functions/__/\n *\n * @param {string} text Text to translate.\n * @param {string} [domain] Domain to retrieve the translated text.\n *\n * @return {string} Translated text.\n */\nexport const __ = i18n.__.bind( i18n );\n\n/**\n * Retrieve translated string with gettext context.\n *\n * @see https://developer.wordpress.org/reference/functions/_x/\n *\n * @param {string} text Text to translate.\n * @param {string} context Context information for the translators.\n * @param {string} [domain] Domain to retrieve the translated text.\n *\n * @return {string} Translated context string without pipe.\n */\nexport const _x = i18n._x.bind( i18n );\n\n/**\n * Translates and retrieves the singular or plural form based on the supplied\n * number.\n *\n * @see https://developer.wordpress.org/reference/functions/_n/\n *\n * @param {string} single The text to be used if the number is singular.\n * @param {string} plural The text to be used if the number is plural.\n * @param {number} number The number to compare against to use either the\n * singular or plural form.\n * @param {string} [domain] Domain to retrieve the translated text.\n *\n * @return {string} The translated singular or plural form.\n */\nexport const _n = i18n._n.bind( i18n );\n\n/**\n * Translates and retrieves the singular or plural form based on the supplied\n * number, with gettext context.\n *\n * @see https://developer.wordpress.org/reference/functions/_nx/\n *\n * @param {string} single The text to be used if the number is singular.\n * @param {string} plural The text to be used if the number is plural.\n * @param {number} number The number to compare against to use either the\n * singular or plural form.\n * @param {string} context Context information for the translators.\n * @param {string} [domain] Domain to retrieve the translated text.\n *\n * @return {string} The translated singular or plural form.\n */\nexport const _nx = i18n._nx.bind( i18n );\n\n/**\n * Check if current locale is RTL.\n *\n * **RTL (Right To Left)** is a locale property indicating that text is written from right to left.\n * For example, the `he` locale (for Hebrew) specifies right-to-left. Arabic (ar) is another common\n * language written RTL. The opposite of RTL, LTR (Left To Right) is used in other languages,\n * including English (`en`, `en-US`, `en-GB`, etc.), Spanish (`es`), and French (`fr`).\n *\n * @return {boolean} Whether locale is RTL.\n */\nexport const isRTL = i18n.isRTL.bind( i18n );\n\n/**\n * Check if there is a translation for a given string (in singular form).\n *\n * @param {string} single Singular form of the string to look up.\n * @param {string} [context] Context information for the translators.\n * @param {string} [domain] Domain to retrieve the translated text.\n * @return {boolean} Whether the translation exists or not.\n */\nexport const hasTranslation = i18n.hasTranslation.bind( i18n );\n","import { __ } from \"@wordpress/i18n\";\nexport default class PaymentLink {\n constructor() {\n this.openCheckoutFieldSection();\n }\n\n openCheckoutFieldSection() {\n const url = new URLSearchParams(location.href);\n if (url.has(\"vindi-payment-link\")) {\n const addresses = document.querySelectorAll(\".edit_address\");\n\n addresses.forEach((address) => {\n address.style.display = \"block\";\n });\n\n if (url.has(\"gateway\")) {\n this.updateLinkGateway(url.get(\"gateway\"));\n }\n }\n }\n\n updateLinkGateway(gateway) {\n const select = document.querySelector(\"#_payment_method\");\n select.value = gateway;\n }\n}\n","export class ShippingTracking {\n constructor() {\n this.setEvents();\n }\n\n setEvents() {\n const button = document.querySelector(\"#wvp-tracking-save\");\n\n if (button) {\n button.addEventListener(\"click\", (e) => {\n e.preventDefault();\n\n const code = document.querySelector(\"#wvp-tracking-code\");\n const url = document.querySelector(\"#wvp-tracking-url\");\n const post = document.querySelector(\"#wvp-tracking-post\");\n\n if (code && post) {\n this.saveTrackingCode(code.value, url.value, post.value);\n }\n });\n }\n }\n\n saveTrackingCode(code, url, post) {\n const loader = document.querySelector(\".wvp-tracking\");\n loader?.classList.remove(\"wvp-tracking-hidden\");\n\n const body = new FormData();\n\n body.append(\"action\", \"save_tracking_code\");\n body.append(\"code\", code);\n body.append(\"url\", url);\n body.append(\"post\", post);\n\n if (!ajaxurl) {\n return;\n }\n\n fetch(ajaxurl, {\n method: \"POST\",\n body: body,\n })\n .then((response) => response.json())\n .then((data) => {\n if (data.status) {\n loader?.classList.add(\"wvp-tracking-hidden\");\n\n if (data.status == \"success\") {\n window.location.reload();\n } else {\n if (data.message) {\n this.handleMessage(data.message);\n }\n }\n }\n });\n }\n\n handleMessage(message) {\n const div = document.querySelector(\".wvp-tracking-edit-message\");\n div?.classList.remove(\"wvp-tracking-edit-message-hidden\");\n\n const element = document.querySelector(\"#wvp-tracking-message\");\n if (element) {\n element.innerHTML = message;\n }\n }\n}\n","/** Checks if value is string */\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n\n/** Checks if value is object */\nfunction isObject(obj) {\n var _obj$constructor;\n return typeof obj === 'object' && obj != null && (obj == null || (_obj$constructor = obj.constructor) == null ? void 0 : _obj$constructor.name) === 'Object';\n}\nfunction pick(obj, keys) {\n if (Array.isArray(keys)) return pick(obj, (_, k) => keys.includes(k));\n return Object.entries(obj).reduce((acc, _ref) => {\n let [k, v] = _ref;\n if (keys(v, k)) acc[k] = v;\n return acc;\n }, {});\n}\n\n/** Direction */\nconst DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n\n/** Direction */\n\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n default:\n return direction;\n }\n}\n\n/** Escapes regular expression control chars */\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n}\n\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\nfunction objectIncludes(b, a) {\n if (a === b) return true;\n const arrA = Array.isArray(a),\n arrB = Array.isArray(b);\n let i;\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++) if (!objectIncludes(a[i], b[i])) return false;\n return true;\n }\n if (arrA != arrB) return false;\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n const dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n const regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n const keys = Object.keys(a);\n // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = 0; i < keys.length; i++) if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString();\n }\n return false;\n}\n\n/** Selection range */\n\nexport { DIRECTION, escapeRegExp, forceDirection, isObject, isString, objectIncludes, pick };\n","import { DIRECTION } from './utils.js';\n\n/** Provides details of changing input */\nclass ActionDetails {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n\n constructor(opts) {\n Object.assign(this, opts);\n\n // double check if left part was changed (autofilling, other non-standard input triggers)\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n }\n\n /** Start changing position */\n get startChangePos() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /** Inserted symbols count */\n get insertedCount() {\n return this.cursorPos - this.startChangePos;\n }\n\n /** Inserted symbols */\n get inserted() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /** Removed symbols count */\n get removedCount() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos ||\n // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n\n /** Removed symbols */\n get removed() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /** Unchanged head symbols */\n get head() {\n return this.value.substring(0, this.startChangePos);\n }\n\n /** Unchanged tail symbols */\n get tail() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /** Remove direction */\n get removeDirection() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right\n return (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) &&\n // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n}\n\nexport { ActionDetails as default };\n","/** Applies mask on element */\nfunction IMask(el, opts) {\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n\nexport { IMask as default };\n","import { isString, isObject, pick } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n// export function maskedClass(mask: string): typeof MaskedPattern;\n// export function maskedClass(mask: DateConstructor): typeof MaskedDate;\n// export function maskedClass(mask: NumberConstructor): typeof MaskedNumber;\n// export function maskedClass(mask: Array<any> | ArrayConstructor): typeof MaskedDynamic;\n// export function maskedClass(mask: MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass(mask: Masked): typeof Masked;\n// export function maskedClass(mask: typeof Masked): typeof Masked;\n// export function maskedClass(mask: typeof MaskedDate): typeof MaskedDate;\n// export function maskedClass(mask: typeof MaskedNumber): typeof MaskedNumber;\n// export function maskedClass(mask: typeof MaskedEnum): typeof MaskedEnum;\n// export function maskedClass(mask: typeof MaskedRange): typeof MaskedRange;\n// export function maskedClass(mask: typeof MaskedRegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: typeof MaskedFunction): typeof MaskedFunction;\n// export function maskedClass(mask: typeof MaskedPattern): typeof MaskedPattern;\n// export function maskedClass(mask: typeof MaskedDynamic): typeof MaskedDynamic;\n// export function maskedClass<Mask extends typeof Masked> (mask: Mask): Mask;\n// export function maskedClass(mask: RegExp): typeof MaskedRegExp;\n// export function maskedClass(mask: (value: string, ...args: any[]) => boolean): typeof MaskedFunction;\n/** Get Masked class by mask type */\nfunction maskedClass(mask) /* TODO */{\n if (mask == null) throw new Error('mask property should be defined');\n if (mask instanceof RegExp) return IMask.MaskedRegExp;\n if (isString(mask)) return IMask.MaskedPattern;\n if (mask === Date) return IMask.MaskedDate;\n if (mask === Number) return IMask.MaskedNumber;\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask;\n if (IMask.Masked && mask instanceof IMask.Masked) return mask.constructor;\n if (mask instanceof Function) return IMask.MaskedFunction;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n return IMask.Masked;\n}\nfunction normalizeOpts(opts) {\n if (!opts) throw new Error('Options in not defined');\n if (IMask.Masked) {\n if (opts.prototype instanceof IMask.Masked) return {\n mask: opts\n };\n\n /*\n handle cases like:\n 1) opts = Masked\n 2) opts = { mask: Masked, ...instanceOpts }\n */\n const {\n mask = undefined,\n ...instanceOpts\n } = opts instanceof IMask.Masked ? {\n mask: opts\n } : isObject(opts) && opts.mask instanceof IMask.Masked ? opts : {};\n if (mask) {\n const _mask = mask.mask;\n return {\n ...pick(mask, (_, k) => !k.startsWith('_')),\n mask: mask.constructor,\n _mask,\n ...instanceOpts\n };\n }\n }\n if (!isObject(opts)) return {\n mask: opts\n };\n return {\n ...opts\n };\n}\n\n// TODO can't use overloads here because of https://github.com/microsoft/TypeScript/issues/50754\n\n// From masked\n// export default function createMask<Opts extends Masked, ReturnMasked=Opts> (opts: Opts): ReturnMasked;\n// // From masked class\n// export default function createMask<Opts extends MaskedOptions<typeof Masked>, ReturnMasked extends Masked=InstanceType<Opts['mask']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedDate>, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedNumber>, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedEnum>, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedRange>, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedRegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedFunction>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedPattern>, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<typeof MaskedDynamic>, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n// // From mask opts\n// export default function createMask<Opts extends MaskedOptions<Masked>, ReturnMasked=Opts extends MaskedOptions<infer M> ? M : never> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedNumberOptions, ReturnMasked extends MaskedNumber=MaskedNumber<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedDateFactoryOptions, ReturnMasked extends MaskedDate=MaskedDate<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedEnumOptions, ReturnMasked extends MaskedEnum=MaskedEnum<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedRangeOptions, ReturnMasked extends MaskedRange=MaskedRange<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedPatternOptions, ReturnMasked extends MaskedPattern=MaskedPattern<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedDynamicOptions, ReturnMasked extends MaskedDynamic=MaskedDynamic<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<RegExp>, ReturnMasked extends MaskedRegExp=MaskedRegExp<Opts['parent']>> (opts: Opts): ReturnMasked;\n// export default function createMask<Opts extends MaskedOptions<Function>, ReturnMasked extends MaskedFunction=MaskedFunction<Opts['parent']>> (opts: Opts): ReturnMasked;\n\n/** Creates new {@link Masked} depending on mask type */\nfunction createMask(opts) {\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n const nOpts = normalizeOpts(opts);\n const MaskedClass = maskedClass(nOpts.mask);\n if (!MaskedClass) throw new Error('Masked class is not found for provided mask, appropriate module needs to be imported manually before creating mask.');\n if (nOpts.mask === MaskedClass) delete nOpts.mask;\n if (nOpts._mask) {\n nOpts.mask = nOpts._mask;\n delete nOpts._mask;\n }\n return new MaskedClass(nOpts);\n}\nIMask.createMask = createMask;\n\nexport { createMask as default, maskedClass, normalizeOpts };\n","import IMask from '../core/holder.js';\n\n/** Generic element API to use with mask */\nclass MaskElement {\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n get selectionStart() {\n let start;\n try {\n start = this._unsafeSelectionStart;\n } catch {}\n return start != null ? start : this.value.length;\n }\n\n /** Safely returns selection end */\n get selectionEnd() {\n let end;\n try {\n end = this._unsafeSelectionEnd;\n } catch {}\n return end != null ? end : this.value.length;\n }\n\n /** Safely sets element selection */\n select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n try {\n this._unsafeSelect(start, end);\n } catch {}\n }\n\n /** */\n get isActive() {\n return false;\n }\n /** */\n\n /** */\n\n /** */\n}\n\nIMask.MaskElement = MaskElement;\n\nexport { MaskElement as default };\n","import MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\n/** Bridge between HTMLElement and {@link Masked} */\nclass HTMLMaskElement extends MaskElement {\n /** HTMLElement to use mask on */\n\n constructor(input) {\n super();\n this.input = input;\n this._handlers = {};\n }\n get rootElement() {\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) == null ? void 0 : _this$input$getRootNo2.call(_this$input)) != null ? _this$input$getRootNo : document;\n }\n\n /**\n Is element in focus\n */\n get isActive() {\n return this.input === this.rootElement.activeElement;\n }\n\n /**\n Binds HTMLElement events to mask internal events\n */\n bindEvents(handlers) {\n Object.keys(handlers).forEach(event => this._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event]));\n }\n\n /**\n Unbinds HTMLElement events to mask internal events\n */\n unbindEvents() {\n Object.keys(this._handlers).forEach(event => this._toggleEventHandler(event));\n }\n _toggleEventHandler(event, handler) {\n if (this._handlers[event]) {\n this.input.removeEventListener(event, this._handlers[event]);\n delete this._handlers[event];\n }\n if (handler) {\n this.input.addEventListener(event, handler);\n this._handlers[event] = handler;\n }\n }\n}\n/** Mapping between HTMLElement events and mask internal events */\nHTMLMaskElement.EVENTS_MAP = {\n selectionChange: 'keydown',\n input: 'input',\n drop: 'drop',\n click: 'click',\n focus: 'focus',\n commit: 'blur'\n};\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\n/** Bridge between InputElement and {@link Masked} */\nclass HTMLInputMaskElement extends HTMLMaskElement {\n /** InputElement to use mask on */\n\n constructor(input) {\n super(input);\n this.input = input;\n this._handlers = {};\n }\n\n /** Returns InputElement selection start */\n get _unsafeSelectionStart() {\n return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;\n }\n\n /** Returns InputElement selection end */\n get _unsafeSelectionEnd() {\n return this.input.selectionEnd;\n }\n\n /** Sets InputElement selection */\n _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLInputMaskElement as default };\n","import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nclass HTMLContenteditableMaskElement extends HTMLMaskElement {\n /** Returns HTMLElement selection start */\n get _unsafeSelectionStart() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Returns HTMLElement selection end */\n get _unsafeSelectionEnd() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Sets HTMLElement selection */\n _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n const range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n /** HTMLElement value */\n get value() {\n return this.input.textContent || '';\n }\n set value(value) {\n this.input.textContent = value;\n }\n}\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n","import { objectIncludes, DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLInputMaskElement from './html-input-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './html-mask-element.js';\n\n/** Listens to element events and controls changes between element and {@link Masked} */\nclass InputMask {\n /**\n View element\n */\n\n /** Internal {@link Masked} model */\n\n constructor(el, opts) {\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLInputMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n maskEquals(mask) {\n var _this$masked;\n return mask == null || ((_this$masked = this.masked) == null ? void 0 : _this$masked.maskEquals(mask));\n }\n\n /** Masked */\n get mask() {\n return this.masked.mask;\n }\n set mask(mask) {\n if (this.maskEquals(mask)) return;\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n // TODO \"any\" no idea\n this.masked.updateOptions({\n mask\n });\n return;\n }\n const masked = mask instanceof IMask.Masked ? mask : createMask({\n mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value() {\n return this._value;\n }\n set value(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Unmasked value */\n get unmaskedValue() {\n return this._unmaskedValue;\n }\n set unmaskedValue(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue() {\n return this.masked.typedValue;\n }\n set typedValue(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Display value */\n get displayValue() {\n return this.masked.displayValue;\n }\n\n /** Starts listening to element events */\n _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange\n });\n }\n\n /** Stops listening to element events */\n _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n\n /** Fires custom event */\n _fireEvent(ev, e) {\n const listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(l => l(e));\n }\n\n /** Current selection start */\n get selectionStart() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n }\n set cursorPos(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /** Stores current selection */\n _saveSelection( /* ev */\n ) {\n if (this.displayValue !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl() {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const newDisplayValue = this.displayValue;\n const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\n if (isChanged) this._fireChangeEvents();\n }\n\n /** Updates options with deep equal check, recreates {@link Masked} model if mask type changes */\n updateOptions(opts) {\n const {\n mask,\n ...restOpts\n } = opts;\n const updateMask = !this.maskEquals(mask);\n const updateOpts = !objectIncludes(this.masked, restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts); // TODO\n\n if (updateMask || updateOpts) this.updateControl();\n }\n\n /** Updates cursor */\n updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /** Delays cursor update to support mobile browsers */\n _delayUpdateCursor(cursorPos) {\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(() => {\n if (!this.el) return; // if was destroyed\n this.cursorPos = this._changingCursorPos;\n this._abortUpdateCursor();\n }, 10);\n }\n\n /** Fires custom events */\n _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n\n /** Aborts delayed cursor update */\n _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n\n /** Aligns cursor only if selection is empty */\n alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n off(ev, handler) {\n if (!this._listeners[ev]) return this;\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n const hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n _onInput(e) {\n this._inputEvent = e;\n this._abortUpdateCursor();\n\n // fix strange IE behavior\n if (!this._selection) return this.updateValue();\n const details = new ActionDetails({\n // new state\n value: this.el.value,\n cursorPos: this.cursorPos,\n // old state\n oldValue: this.displayValue,\n oldSelection: this._selection\n });\n const oldRawValue = this.masked.rawInputValue;\n const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset;\n\n // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl();\n this.updateCursor(cursorPos);\n delete this._inputEvent;\n }\n\n /** Handles view change event and commits model value */\n _onChange() {\n if (this.displayValue !== this.el.value) {\n this.updateValue();\n }\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus(ev) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick(ev) {\n this.alignCursorFriendly();\n }\n\n /** Unbind view events and removes element reference */\n destroy() {\n this._unbindEvents();\n this._listeners.length = 0;\n delete this.el;\n }\n}\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n","import IMask from './holder.js';\n\n/** Provides details of changing model value */\nclass ChangeDetails {\n /** Inserted symbols */\n\n /** Can skip chars */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n\n static normalize(prep) {\n return Array.isArray(prep) ? prep : [prep, new ChangeDetails()];\n }\n constructor(details) {\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n skip: false,\n tailShift: 0\n }, details);\n }\n\n /** Aggregate changes */\n aggregate(details) {\n this.rawInserted += details.rawInserted;\n this.skip = this.skip || details.skip;\n this.inserted += details.inserted;\n this.tailShift += details.tailShift;\n return this;\n }\n\n /** Total offset considering all changes */\n get offset() {\n return this.tailShift + this.inserted.length;\n }\n}\nIMask.ChangeDetails = ChangeDetails;\n\nexport { ChangeDetails as default };\n","/** Provides details of continuous extracted tail */\nclass ContinuousTailDetails {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n\n constructor(value, from, stop) {\n if (value === void 0) {\n value = '';\n }\n if (from === void 0) {\n from = 0;\n }\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n toString() {\n return this.value;\n }\n extend(tail) {\n this.value += String(tail);\n }\n appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n get state() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n }\n set state(state) {\n Object.assign(this, state);\n }\n unshift(beforePos) {\n if (!this.value.length || beforePos != null && this.from >= beforePos) return '';\n const shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n shift() {\n if (!this.value.length) return '';\n const shiftChar = this.value[this.value.length - 1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n}\n\nexport { ContinuousTailDetails as default };\n","import ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { isString, DIRECTION, forceDirection } from '../core/utils.js';\nimport IMask from '../core/holder.js';\n\n/** Append flags */\n\n/** Extract flags */\n\n// see https://github.com/microsoft/TypeScript/issues/6223\n\n/** Provides common masking stuff */\nclass Masked {\n /** */\n\n /** */\n\n /** Transforms value before mask processing */\n\n /** Transforms each char before mask processing */\n\n /** Validates if value is acceptable */\n\n /** Does additional processing at the end of editing */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n this._value = '';\n this._update({\n ...Masked.DEFAULTS,\n ...opts\n });\n this._initialized = true;\n }\n\n /** Sets and applies new options */\n updateOptions(opts) {\n if (!Object.keys(opts).length) return;\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /** Sets new options */\n _update(opts) {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset() {\n this._value = '';\n }\n get value() {\n return this._value;\n }\n set value(value) {\n this.resolve(value, {\n input: true\n });\n }\n\n /** Resolve new value */\n resolve(value, flags) {\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n this.reset();\n this.append(value, flags, '');\n this.doCommit();\n }\n get unmaskedValue() {\n return this.value;\n }\n set unmaskedValue(value) {\n this.resolve(value, {});\n }\n get typedValue() {\n return this.parse ? this.parse(this.value, this) : this.unmaskedValue;\n }\n set typedValue(value) {\n if (this.format) {\n this.value = this.format(value, this);\n } else {\n this.unmaskedValue = String(value);\n }\n }\n\n /** Value that includes raw user input */\n get rawInputValue() {\n return this.extractInput(0, this.displayValue.length, {\n raw: true\n });\n }\n set rawInputValue(value) {\n this.resolve(value, {\n raw: true\n });\n }\n get displayValue() {\n return this.value;\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return Math.min(this.displayValue.length, toPos - fromPos);\n }\n\n /** Extracts value in range considering flags */\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return this.displayValue.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n\n /** Appends char */\n _appendCharRaw(ch, flags) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n\n /** Appends char */\n _appendChar(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const consistentState = this.state;\n let details;\n [ch, details] = this.doPrepareChar(ch, flags);\n details = details.aggregate(this._appendCharRaw(ch, flags));\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n if (appended && checkTail != null) {\n // validation ok, check tail\n const beforeTailState = this.state;\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n checkTail.unshift(this.displayValue.length - details.tailShift);\n }\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n checkTail.shift();\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n }\n\n // if ok, rollback state after tail\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n }\n\n // revert all if something went wrong\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n return details;\n }\n\n /** Appends optional placeholder at the end */\n _appendPlaceholder() {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at the end */\n _appendEager() {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags != null && flags.tail) flags._beforeTailState = this.state;\n let details;\n [str, details] = this.doPrepare(str, flags);\n for (let ci = 0; ci < str.length; ++ci) {\n const d = this._appendChar(str[ci], flags, checkTail);\n if (!d.rawInserted && !this.doSkipInvalid(str[ci], flags, checkTail)) break;\n details.aggregate(d);\n }\n if ((this.eager === true || this.eager === 'append') && flags != null && flags.input && str) {\n details.aggregate(this._appendEager());\n }\n\n // append tail but aggregate only tailShift\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift;\n // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n\n return details;\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n this._value = this.displayValue.slice(0, fromPos) + this.displayValue.slice(toPos);\n return new ChangeDetails();\n }\n\n /** Calls function and reapplies current value */\n withValueRefresh(fn) {\n if (this._refreshing || !this._initialized) return fn();\n this._refreshing = true;\n const rawInput = this.rawInputValue;\n const value = this.value;\n const ret = fn();\n this.rawInputValue = rawInput;\n // append lost trailing chars at the end\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.displayValue.length), {}, '');\n }\n delete this._refreshing;\n return ret;\n }\n runIsolated(fn) {\n if (this._isolated || !this._initialized) return fn(this);\n this._isolated = true;\n const state = this.state;\n const ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n doSkipInvalid(ch, flags, checkTail) {\n return Boolean(this.skipInvalid);\n }\n\n /** Prepares string before mask processing */\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepare ? this.prepare(str, this, flags) : str);\n }\n\n /** Prepares each char before mask processing */\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n return ChangeDetails.normalize(this.prepareChar ? this.prepareChar(str, this, flags) : str);\n }\n\n /** Validates if value is acceptable */\n doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n\n /** Does additional processing at the end of editing */\n doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n splice(start, deleteCount, inserted, removeDirection, flags) {\n if (removeDirection === void 0) {\n removeDirection = DIRECTION.NONE;\n }\n if (flags === void 0) {\n flags = {\n input: true\n };\n }\n const tailPos = start + deleteCount;\n const tail = this.extractTail(tailPos);\n const eagerRemove = this.eager === true || this.eager === 'remove';\n let oldRawValue;\n if (eagerRemove) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {\n raw: true\n });\n }\n let startChangePos = start;\n const details = new ChangeDetails();\n\n // if it is just deletion without insertion\n if (removeDirection !== DIRECTION.NONE) {\n startChangePos = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !eagerRemove ? DIRECTION.NONE : removeDirection);\n\n // adjust tailShift if start was aligned\n details.tailShift = startChangePos - start;\n }\n details.aggregate(this.remove(startChangePos));\n if (eagerRemove && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n let valLength;\n while (oldRawValue === this.rawInputValue && (valLength = this.displayValue.length)) {\n details.aggregate(new ChangeDetails({\n tailShift: -1\n })).aggregate(this.remove(valLength - 1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n return details.aggregate(this.append(inserted, flags, tail));\n }\n maskEquals(mask) {\n return this.mask === mask;\n }\n typedValueEquals(value) {\n const tval = this.typedValue;\n return value === tval || Masked.EMPTY_VALUES.includes(value) && Masked.EMPTY_VALUES.includes(tval) || (this.format ? this.format(value, this) === this.format(this.typedValue, this) : false);\n }\n}\nMasked.DEFAULTS = {\n skipInvalid: true\n};\nMasked.EMPTY_VALUES = [undefined, null, ''];\nIMask.Masked = Masked;\n\nexport { Masked as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\nclass ChunksTailDetails {\n /** */\n\n constructor(chunks, from) {\n if (chunks === void 0) {\n chunks = [];\n }\n if (from === void 0) {\n from = 0;\n }\n this.chunks = chunks;\n this.from = from;\n }\n toString() {\n return this.chunks.map(String).join('');\n }\n extend(tailChunk) {\n if (!String(tailChunk)) return;\n tailChunk = isString(tailChunk) ? new ContinuousTailDetails(String(tailChunk)) : tailChunk;\n const lastChunk = this.chunks[this.chunks.length - 1];\n const extendLast = lastChunk && (\n // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) &&\n // if tail chunk goes just after last chunk\n tailChunk.from === lastChunk.from + lastChunk.toString().length;\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n let firstTailChunk;\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift(); // not possible to be `undefined` because length was checked above\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n }\n\n // if tail chunk still has value\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n appendTo(masked) {\n if (!(masked instanceof IMask.MaskedPattern)) {\n const tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n const details = new ChangeDetails();\n for (let ci = 0; ci < this.chunks.length && !details.skip; ++ci) {\n const chunk = this.chunks[ci];\n const lastBlockIter = masked._mapPosToBlock(masked.displayValue.length);\n const stop = chunk.stop;\n let chunkBlock;\n if (stop != null && (\n // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails ||\n // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n const phDetails = masked._appendPlaceholder(stop);\n details.aggregate(phDetails);\n }\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n if (chunkBlock) {\n const tailDetails = chunkBlock.appendTail(chunk);\n tailDetails.skip = false; // always ignore skip, it will be set on last\n details.aggregate(tailDetails);\n masked._value += tailDetails.inserted;\n\n // get not inserted chars\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n return details;\n }\n get state() {\n return {\n chunks: this.chunks.map(c => c.state),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n }\n set state(state) {\n const {\n chunks,\n ...props\n } = state;\n Object.assign(this, props);\n this.chunks = chunks.map(cstate => {\n const chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails();\n chunk.state = cstate;\n return chunk;\n });\n }\n unshift(beforePos) {\n if (!this.chunks.length || beforePos != null && this.from >= beforePos) return '';\n const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n let ci = 0;\n while (ci < this.chunks.length) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.unshift(chunkShiftPos);\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n shift() {\n if (!this.chunks.length) return '';\n let ci = this.chunks.length - 1;\n while (0 <= ci) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.shift();\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n if (shiftChar) return shiftChar;\n }\n return '';\n }\n}\n\nexport { ChunksTailDetails as default };\n","import { DIRECTION } from '../../core/utils.js';\n\nclass PatternCursor {\n constructor(masked, pos) {\n this.masked = masked;\n this._log = [];\n const {\n offset,\n index\n } = masked._mapPosToBlock(pos) || (pos < 0 ?\n // first\n {\n index: 0,\n offset: 0\n } :\n // last\n {\n index: this.masked._blocks.length,\n offset: 0\n });\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n get block() {\n return this.masked._blocks[this.index];\n }\n get pos() {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n get state() {\n return {\n index: this.index,\n offset: this.offset,\n ok: this.ok\n };\n }\n set state(s) {\n Object.assign(this, s);\n }\n pushState() {\n this._log.push(this.state);\n }\n popState() {\n const s = this._log.pop();\n if (s) this.state = s;\n return s;\n }\n bindBlock() {\n if (this.block) return;\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.displayValue.length; // TODO this is stupid type error, `block` depends on index that was changed above\n }\n }\n\n _pushLeft(fn) {\n this.pushState();\n for (this.bindBlock(); 0 <= this.index; --this.index, this.offset = ((_this$block = this.block) == null ? void 0 : _this$block.displayValue.length) || 0) {\n var _this$block;\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n _pushRight(fn) {\n this.pushState();\n for (this.bindBlock(); this.index < this.masked._blocks.length; ++this.index, this.offset = 0) {\n if (fn()) return this.ok = true;\n }\n return this.ok = false;\n }\n pushLeftBeforeFilled() {\n return this._pushLeft(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\n if (this.offset !== 0) return true;\n });\n }\n pushLeftBeforeInput() {\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(() => {\n if (this.block.isFixed) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushLeftBeforeRequired() {\n return this._pushLeft(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n pushRightBeforeFilled() {\n return this._pushRight(() => {\n if (this.block.isFixed || !this.block.value) return;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\n if (this.offset !== this.block.value.length) return true;\n });\n }\n pushRightBeforeInput() {\n return this._pushRight(() => {\n if (this.block.isFixed) return;\n\n // const o = this.offset;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aa<X|[]>X_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n return true;\n });\n }\n pushRightBeforeRequired() {\n return this._pushRight(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n // TODO check |[*]XX_\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n return true;\n });\n }\n}\n\nexport { PatternCursor as default };\n","import ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport '../../core/holder.js';\n\nclass PatternFixedDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n get value() {\n return this._value;\n }\n get unmaskedValue() {\n return this.isUnmasking ? this.value : '';\n }\n get rawInputValue() {\n return this._isRawInput ? this.value : '';\n }\n get displayValue() {\n return this.value;\n }\n reset() {\n this._isRawInput = false;\n this._value = '';\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this._value.length;\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n return this._isRawInput ? toPos - fromPos : 0;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this._value.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n get isComplete() {\n return true;\n }\n get isFilled() {\n return Boolean(this._value);\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n const appendEager = this.eager === true || this.eager === 'append';\n const appended = this.char === ch;\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && (!flags.raw || !appendEager) && !flags.tail;\n if (isResolved) details.rawInserted = this.char;\n this._value = details.inserted = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n return details;\n }\n _appendEager() {\n return this._appendChar(this.char, {\n tail: true\n });\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n extractTail() {\n return new ContinuousTailDetails('');\n }\n appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n append(str, flags, tail) {\n const details = this._appendChar(str[0], flags);\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n return details;\n }\n doCommit() {}\n get state() {\n return {\n _value: this._value,\n _rawInputValue: this.rawInputValue\n };\n }\n set state(state) {\n this._value = state._value;\n this._isRawInput = Boolean(state._rawInputValue);\n }\n}\n\nexport { PatternFixedDefinition as default };\n","import createMask from '../factory.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION } from '../../core/utils.js';\nimport '../../core/holder.js';\n\nclass PatternInputDefinition {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n constructor(opts) {\n const {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager,\n ...maskOpts\n } = opts;\n this.masked = createMask(maskOpts);\n Object.assign(this, {\n parent,\n isOptional,\n placeholderChar,\n displayChar,\n lazy,\n eager\n });\n }\n reset() {\n this.isFilled = false;\n this.masked.reset();\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n return new ChangeDetails();\n }\n get value() {\n return this.masked.value || (this.isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n get unmaskedValue() {\n return this.masked.unmaskedValue;\n }\n get rawInputValue() {\n return this.masked.rawInputValue;\n }\n get displayValue() {\n return this.masked.value && this.displayChar || this.value;\n }\n get isComplete() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n _appendChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (this.isFilled) return new ChangeDetails();\n const state = this.masked.state;\n // simulate input\n const details = this.masked._appendChar(ch, this.currentMaskFlags(flags));\n if (details.inserted && this.doValidate(flags) === false) {\n details.inserted = details.rawInserted = '';\n this.masked.state = state;\n }\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n return details;\n }\n append(str, flags, tail) {\n // TODO probably should be done via _appendChar\n return this.masked.append(str, this.currentMaskFlags(flags), tail);\n }\n _appendPlaceholder() {\n const details = new ChangeDetails();\n if (this.isFilled || this.isOptional) return details;\n this.isFilled = true;\n details.inserted = this.placeholderChar;\n return details;\n }\n _appendEager() {\n return new ChangeDetails();\n }\n extractTail(fromPos, toPos) {\n return this.masked.extractTail(fromPos, toPos);\n }\n appendTail(tail) {\n return this.masked.appendTail(tail);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n const minPos = 0;\n const maxPos = this.value.length;\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.value.length;\n }\n return this.value.slice(fromPos, toPos).length;\n }\n doValidate(flags) {\n return this.masked.doValidate(this.currentMaskFlags(flags)) && (!this.parent || this.parent.doValidate(this.currentMaskFlags(flags)));\n }\n doCommit() {\n this.masked.doCommit();\n }\n get state() {\n return {\n _value: this.value,\n _rawInputValue: this.rawInputValue,\n masked: this.masked.state,\n isFilled: this.isFilled\n };\n }\n set state(state) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta;\n return {\n ...flags,\n _beforeTailState: (flags == null || (_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.masked) || (flags == null ? void 0 : flags._beforeTailState)\n };\n }\n}\nPatternInputDefinition.DEFAULT_DEFINITIONS = {\n '0': /\\d/,\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n\nexport { PatternInputDefinition as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by RegExp */\nclass MaskedRegExp extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const mask = opts.mask;\n if (mask) opts.validate = value => value.search(mask) >= 0;\n super._update(opts);\n }\n}\nIMask.MaskedRegExp = MaskedRegExp;\n\nexport { MaskedRegExp as default };\n","import ChangeDetails from '../core/change-details.js';\nimport IMask from '../core/holder.js';\nimport { DIRECTION } from '../core/utils.js';\nimport Masked from './base.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport PatternCursor from './pattern/cursor.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport PatternInputDefinition from './pattern/input-definition.js';\nimport './regexp.js';\nimport '../core/continuous-tail-details.js';\n\n/** Pattern mask */\nclass MaskedPattern extends Masked {\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Single char for filled input */\n\n /** Show placeholder only when needed */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n constructor(opts) {\n super({\n ...MaskedPattern.DEFAULTS,\n ...opts,\n definitions: Object.assign({}, PatternInputDefinition.DEFAULT_DEFINITIONS, opts == null ? void 0 : opts.definitions)\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n _rebuildMask() {\n const defs = this.definitions;\n this._blocks = [];\n this.exposeBlock = undefined;\n this._stops = [];\n this._maskedBlocks = {};\n const pattern = this.mask;\n if (!pattern || !defs) return;\n let unmaskingBlock = false;\n let optionalBlock = false;\n for (let i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n const p = pattern.slice(i);\n const bNames = Object.keys(this.blocks).filter(bName => p.indexOf(bName) === 0);\n // order by key length\n bNames.sort((a, b) => b.length - a.length);\n // use block name with max length\n const bName = bNames[0];\n if (bName) {\n const {\n expose,\n ...blockOpts\n } = normalizeOpts(this.blocks[bName]);\n const maskedBlock = createMask({\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n overwrite: this.overwrite,\n ...blockOpts,\n parent: this\n });\n if (maskedBlock) {\n this._blocks.push(maskedBlock);\n if (expose) this.exposeBlock = maskedBlock;\n\n // store block index\n if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = [];\n this._maskedBlocks[bName].push(this._blocks.length - 1);\n }\n i += bName.length - 1;\n continue;\n }\n }\n let char = pattern[i];\n let isInput = (char in defs);\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n const def = isInput ? new PatternInputDefinition({\n isOptional: optionalBlock,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n displayChar: this.displayChar,\n ...normalizeOpts(defs[char]),\n parent: this\n }) : new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock\n });\n this._blocks.push(def);\n }\n }\n get state() {\n return {\n ...super.state,\n _blocks: this._blocks.map(b => b.state)\n };\n }\n set state(state) {\n const {\n _blocks,\n ...maskedState\n } = state;\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\n super.state = maskedState;\n }\n reset() {\n super.reset();\n this._blocks.forEach(b => b.reset());\n }\n get isComplete() {\n return this.exposeBlock ? this.exposeBlock.isComplete : this._blocks.every(b => b.isComplete);\n }\n get isFilled() {\n return this._blocks.every(b => b.isFilled);\n }\n get isFixed() {\n return this._blocks.every(b => b.isFixed);\n }\n get isOptional() {\n return this._blocks.every(b => b.isOptional);\n }\n doCommit() {\n this._blocks.forEach(b => b.doCommit());\n super.doCommit();\n }\n get unmaskedValue() {\n return this.exposeBlock ? this.exposeBlock.unmaskedValue : this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.unmaskedValue = unmaskedValue;\n this.appendTail(tail);\n this.doCommit();\n } else super.unmaskedValue = unmaskedValue;\n }\n get value() {\n return this.exposeBlock ? this.exposeBlock.value :\n // TODO return _value when not in change?\n this._blocks.reduce((str, b) => str += b.value, '');\n }\n set value(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.value = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.value = value;\n }\n get typedValue() {\n return this.exposeBlock ? this.exposeBlock.typedValue : super.typedValue;\n }\n set typedValue(value) {\n if (this.exposeBlock) {\n const tail = this.extractTail(this._blockStartPos(this._blocks.indexOf(this.exposeBlock)) + this.exposeBlock.displayValue.length);\n this.exposeBlock.typedValue = value;\n this.appendTail(tail);\n this.doCommit();\n } else super.typedValue = value;\n }\n get displayValue() {\n return this._blocks.reduce((str, b) => str += b.displayValue, '');\n }\n appendTail(tail) {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n _appendEager() {\n var _this$_mapPosToBlock;\n const details = new ChangeDetails();\n let startBlockIndex = (_this$_mapPosToBlock = this._mapPosToBlock(this.displayValue.length)) == null ? void 0 : _this$_mapPosToBlock.index;\n if (startBlockIndex == null) return details;\n\n // TODO test if it works for nested pattern masks\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n for (let bi = startBlockIndex; bi < this._blocks.length; ++bi) {\n const d = this._blocks[bi]._appendEager();\n if (!d.inserted) break;\n details.aggregate(d);\n }\n return details;\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const blockIter = this._mapPosToBlock(this.displayValue.length);\n const details = new ChangeDetails();\n if (!blockIter) return details;\n for (let bi = blockIter.index;; ++bi) {\n var _flags$_beforeTailSta;\n const block = this._blocks[bi];\n if (!block) break;\n const blockDetails = block._appendChar(ch, {\n ...flags,\n _beforeTailState: (_flags$_beforeTailSta = flags._beforeTailState) == null || (_flags$_beforeTailSta = _flags$_beforeTailSta._blocks) == null ? void 0 : _flags$_beforeTailSta[bi]\n });\n const skip = blockDetails.skip;\n details.aggregate(blockDetails);\n if (skip || blockDetails.rawInserted) break; // go next char\n }\n\n return details;\n }\n extractTail(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n this._forEachBlocksInRange(fromPos, toPos, (b, bi, bFromPos, bToPos) => {\n const blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = this._findStopBefore(bi);\n blockChunk.from = this._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n return chunkTail;\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n if (flags === void 0) {\n flags = {};\n }\n if (fromPos === toPos) return '';\n let input = '';\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n return input;\n }\n _findStopBefore(blockIndex) {\n let stopBefore;\n for (let si = 0; si < this._stops.length; ++si) {\n const stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n return stopBefore;\n }\n\n /** Appends placeholder depending on laziness */\n _appendPlaceholder(toBlockIndex) {\n const details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n const startBlockIter = this._mapPosToBlock(this.displayValue.length);\n if (!startBlockIter) return details;\n const startBlockIndex = startBlockIter.index;\n const endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(b => {\n if (!b.lazy || toBlockIndex != null) {\n var _blocks2;\n const bDetails = b._appendPlaceholder((_blocks2 = b._blocks) == null ? void 0 : _blocks2.length);\n this._value += bDetails.inserted;\n details.aggregate(bDetails);\n }\n });\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock(pos) {\n let accVal = '';\n for (let bi = 0; bi < this._blocks.length; ++bi) {\n const block = this._blocks[bi];\n const blockStartPos = accVal.length;\n accVal += block.displayValue;\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce((pos, b) => pos += b.displayValue.length, 0);\n }\n _forEachBlocksInRange(fromPos, toPos, fn) {\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const fromBlockIter = this._mapPosToBlock(fromPos);\n if (fromBlockIter) {\n const toBlockIter = this._mapPosToBlock(toPos);\n // process first block\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n const fromBlockStartPos = fromBlockIter.offset;\n const fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : this._blocks[fromBlockIter.index].displayValue.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (let bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].displayValue.length);\n }\n\n // process last block\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n const removeDetails = super.remove(fromPos, toPos);\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n return removeDetails;\n }\n nearestInputPos(cursorPos, direction) {\n if (direction === void 0) {\n direction = DIRECTION.NONE;\n }\n if (!this._blocks.length) return 0;\n const cursor = new PatternCursor(this, cursorPos);\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.displayValue.length;\n }\n\n // FORCE is only about a|* otherwise is 0\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n }\n\n // forward flow\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled();\n\n // backward flow\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return 0;\n }\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.displayValue.length;\n\n // backward flow\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n return cursorPos;\n }\n totalInputPositions(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n let total = 0;\n this._forEachBlocksInRange(fromPos, toPos, (b, _, bFromPos, bToPos) => {\n total += b.totalInputPositions(bFromPos, bToPos);\n });\n return total;\n }\n\n /** Get block by name */\n maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks(name) {\n const indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(gi => this._blocks[gi]);\n }\n}\nMaskedPattern.DEFAULTS = {\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\nIMask.MaskedPattern = MaskedPattern;\n\nexport { MaskedPattern as default };\n","import IMask from '../core/holder.js';\nimport MaskedPattern from './pattern.js';\nimport '../core/change-details.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which accepts ranges */\nclass MaskedRange extends MaskedPattern {\n /**\n Optionally sets max length of pattern.\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n */\n\n /** Min bound */\n\n /** Max bound */\n\n /** */\n\n get _matchFrom() {\n return this.maxLength - String(this.from).length;\n }\n constructor(opts) {\n super(opts); // mask will be created in _update\n }\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n to = this.to || 0,\n from = this.from || 0,\n maxLength = this.maxLength || 0,\n autofix = this.autofix,\n ...patternOpts\n } = opts;\n this.to = to;\n this.from = from;\n this.maxLength = Math.max(String(to).length, maxLength);\n this.autofix = autofix;\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n let sameCharsCount = 0;\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) ++sameCharsCount;\n patternOpts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(this.maxLength - sameCharsCount);\n super._update(patternOpts);\n }\n get isComplete() {\n return super.isComplete && Boolean(this.value);\n }\n boundaries(str) {\n let minstr = '';\n let maxstr = '';\n const [, placeholder, num] = str.match(/^(\\D*)(\\d*)(\\D*)/) || [];\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let details;\n [ch, details] = super.doPrepareChar(ch.replace(/\\D/g, ''), flags);\n if (!this.autofix || !ch) return [ch, details];\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n const nextVal = this.value + ch;\n if (nextVal.length > this.maxLength) return ['', details];\n const [minstr, maxstr] = this.boundaries(nextVal);\n if (Number(maxstr) < this.from) return [fromStr[nextVal.length - 1], details];\n if (Number(minstr) > this.to) {\n if (this.autofix === 'pad' && nextVal.length < this.maxLength) {\n return ['', details.aggregate(this.append(fromStr[nextVal.length - 1] + ch, flags))];\n }\n return [toStr[nextVal.length - 1], details];\n }\n return [ch, details];\n }\n doValidate(flags) {\n const str = this.value;\n const firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n const [minstr, maxstr] = this.boundaries(str);\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && super.doValidate(flags);\n }\n}\nIMask.MaskedRange = MaskedRange;\n\nexport { MaskedRange as default };\n","import MaskedPattern from './pattern.js';\nimport MaskedRange from './range.js';\nimport IMask from '../core/holder.js';\nimport { isString } from '../core/utils.js';\nimport '../core/change-details.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Date mask */\nclass MaskedDate extends MaskedPattern {\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n const {\n mask,\n pattern,\n ...patternOpts\n } = {\n ...MaskedDate.DEFAULTS,\n ...opts\n };\n super({\n ...patternOpts,\n mask: isString(mask) ? mask : pattern\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n mask,\n pattern,\n blocks,\n ...patternOpts\n } = {\n ...MaskedDate.DEFAULTS,\n ...opts\n };\n const patternBlocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS());\n // adjust year block\n if (opts.min) patternBlocks.Y.from = opts.min.getFullYear();\n if (opts.max) patternBlocks.Y.to = opts.max.getFullYear();\n if (opts.min && opts.max && patternBlocks.Y.from === patternBlocks.Y.to) {\n patternBlocks.m.from = opts.min.getMonth() + 1;\n patternBlocks.m.to = opts.max.getMonth() + 1;\n if (patternBlocks.m.from === patternBlocks.m.to) {\n patternBlocks.d.from = opts.min.getDate();\n patternBlocks.d.to = opts.max.getDate();\n }\n }\n Object.assign(patternBlocks, this.blocks, blocks);\n\n // add autofix\n Object.keys(patternBlocks).forEach(bk => {\n const b = patternBlocks[bk];\n if (!('autofix' in b) && 'autofix' in opts) b.autofix = opts.autofix;\n });\n super._update({\n ...patternOpts,\n mask: isString(mask) ? mask : pattern,\n blocks: patternBlocks\n });\n }\n doValidate(flags) {\n const date = this.date;\n return super.doValidate(flags) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n\n /** Checks if date is exists */\n isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n\n /** Parsed Date */\n get date() {\n return this.typedValue;\n }\n set date(date) {\n this.typedValue = date;\n }\n get typedValue() {\n return this.isComplete ? super.typedValue : null;\n }\n set typedValue(value) {\n super.typedValue = value;\n }\n maskEquals(mask) {\n return mask === Date || super.maskEquals(mask);\n }\n}\nMaskedDate.GET_DEFAULT_BLOCKS = () => ({\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999\n }\n});\nMaskedDate.DEFAULTS = {\n mask: Date,\n pattern: 'd{.}`m{.}`Y',\n format: (date, masked) => {\n if (!date) return '';\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: (str, masked) => {\n const [day, month, year] = str.split('.').map(Number);\n return new Date(year, month - 1, day);\n }\n};\nIMask.MaskedDate = MaskedDate;\n\nexport { MaskedDate as default };\n","import { DIRECTION, objectIncludes } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport createMask, { normalizeOpts } from './factory.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/** Dynamic mask for choosing appropriate mask in run-time */\nclass MaskedDynamic extends Masked {\n /** Currently chosen mask */\n\n /** Currently chosen mask */\n\n /** Compliled {@link Masked} options */\n\n /** Chooses {@link Masked} depending on input value */\n\n constructor(opts) {\n super({\n ...MaskedDynamic.DEFAULTS,\n ...opts\n });\n this.currentMask = undefined;\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n if ('mask' in opts) {\n this.exposeMask = undefined;\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ? opts.mask.map(m => {\n const {\n expose,\n ...maskOpts\n } = normalizeOpts(m);\n const masked = createMask({\n overwrite: this._overwrite,\n eager: this._eager,\n skipInvalid: this._skipInvalid,\n ...maskOpts\n });\n if (expose) this.exposeMask = masked;\n return masked;\n }) : [];\n\n // this.currentMask = this.doDispatch(''); // probably not needed but lets see\n }\n }\n\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const details = this._applyDispatch(ch, flags);\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, this.currentMaskFlags(flags)));\n }\n return details;\n }\n _applyDispatch(appended, flags, tail) {\n if (appended === void 0) {\n appended = '';\n }\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._value : this.value;\n const inputValue = this.rawInputValue;\n const insertValue = flags.tail && flags._beforeTailState != null ? flags._beforeTailState._rawInputValue : inputValue;\n const tailValue = inputValue.slice(insertValue.length);\n const prevMask = this.currentMask;\n const details = new ChangeDetails();\n const prevMaskState = prevMask == null ? void 0 : prevMask.state;\n\n // clone flags to prevent overwriting `_beforeTailState`\n this.currentMask = this.doDispatch(appended, {\n ...flags\n }, tail);\n\n // restore state after dispatch\n if (this.currentMask) {\n if (this.currentMask !== prevMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n if (insertValue) {\n const d = this.currentMask.append(insertValue, {\n raw: true\n });\n details.tailShift = d.inserted.length - prevValueBeforeTail.length;\n }\n if (tailValue) {\n details.tailShift += this.currentMask.append(tailValue, {\n raw: true,\n tail: true\n }).tailShift;\n }\n } else if (prevMaskState) {\n // Dispatch can do something bad with state, so\n // restore prev mask state\n this.currentMask.state = prevMaskState;\n }\n }\n return details;\n }\n _appendPlaceholder() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n return details;\n }\n _appendEager() {\n const details = this._applyDispatch();\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendEager());\n }\n return details;\n }\n appendTail(tail) {\n const details = new ChangeDetails();\n if (tail) details.aggregate(this._applyDispatch('', {}, tail));\n return details.aggregate(this.currentMask ? this.currentMask.appendTail(tail) : super.appendTail(tail));\n }\n currentMaskFlags(flags) {\n var _flags$_beforeTailSta, _flags$_beforeTailSta2;\n return {\n ...flags,\n _beforeTailState: ((_flags$_beforeTailSta = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta.currentMaskRef) === this.currentMask && ((_flags$_beforeTailSta2 = flags._beforeTailState) == null ? void 0 : _flags$_beforeTailSta2.currentMask) || flags._beforeTailState\n };\n }\n doDispatch(appended, flags, tail) {\n if (flags === void 0) {\n flags = {};\n }\n if (tail === void 0) {\n tail = '';\n }\n return this.dispatch(appended, this, flags, tail);\n }\n doValidate(flags) {\n return super.doValidate(flags) && (!this.currentMask || this.currentMask.doValidate(this.currentMaskFlags(flags)));\n }\n doPrepare(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepare(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepare(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n doPrepareChar(str, flags) {\n if (flags === void 0) {\n flags = {};\n }\n let [s, details] = super.doPrepareChar(str, flags);\n if (this.currentMask) {\n let currentDetails;\n [s, currentDetails] = super.doPrepareChar(s, this.currentMaskFlags(flags));\n details = details.aggregate(currentDetails);\n }\n return [s, details];\n }\n reset() {\n var _this$currentMask;\n (_this$currentMask = this.currentMask) == null ? void 0 : _this$currentMask.reset();\n this.compiledMasks.forEach(m => m.reset());\n }\n get value() {\n return this.exposeMask ? this.exposeMask.value : this.currentMask ? this.currentMask.value : '';\n }\n set value(value) {\n if (this.exposeMask) {\n this.exposeMask.value = value;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.value = value;\n }\n get unmaskedValue() {\n return this.exposeMask ? this.exposeMask.unmaskedValue : this.currentMask ? this.currentMask.unmaskedValue : '';\n }\n set unmaskedValue(unmaskedValue) {\n if (this.exposeMask) {\n this.exposeMask.unmaskedValue = unmaskedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n } else super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.exposeMask ? this.exposeMask.typedValue : this.currentMask ? this.currentMask.typedValue : '';\n }\n set typedValue(typedValue) {\n if (this.exposeMask) {\n this.exposeMask.typedValue = typedValue;\n this.currentMask = this.exposeMask;\n this._applyDispatch();\n return;\n }\n let unmaskedValue = String(typedValue);\n\n // double check it\n if (this.currentMask) {\n this.currentMask.typedValue = typedValue;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n this.unmaskedValue = unmaskedValue;\n }\n get displayValue() {\n return this.currentMask ? this.currentMask.displayValue : '';\n }\n get isComplete() {\n var _this$currentMask2;\n return Boolean((_this$currentMask2 = this.currentMask) == null ? void 0 : _this$currentMask2.isComplete);\n }\n get isFilled() {\n var _this$currentMask3;\n return Boolean((_this$currentMask3 = this.currentMask) == null ? void 0 : _this$currentMask3.isFilled);\n }\n remove(fromPos, toPos) {\n const details = new ChangeDetails();\n if (this.currentMask) {\n details.aggregate(this.currentMask.remove(fromPos, toPos))\n // update with dispatch\n .aggregate(this._applyDispatch());\n }\n return details;\n }\n get state() {\n var _this$currentMask4;\n return {\n ...super.state,\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(m => m.state),\n currentMaskRef: this.currentMask,\n currentMask: (_this$currentMask4 = this.currentMask) == null ? void 0 : _this$currentMask4.state\n };\n }\n set state(state) {\n const {\n compiledMasks,\n currentMaskRef,\n currentMask,\n ...maskedState\n } = state;\n if (compiledMasks) this.compiledMasks.forEach((m, mi) => m.state = compiledMasks[mi]);\n if (currentMaskRef != null) {\n this.currentMask = currentMaskRef;\n this.currentMask.state = currentMask;\n }\n super.state = maskedState;\n }\n extractInput(fromPos, toPos, flags) {\n return this.currentMask ? this.currentMask.extractInput(fromPos, toPos, flags) : '';\n }\n extractTail(fromPos, toPos) {\n return this.currentMask ? this.currentMask.extractTail(fromPos, toPos) : super.extractTail(fromPos, toPos);\n }\n doCommit() {\n if (this.currentMask) this.currentMask.doCommit();\n super.doCommit();\n }\n nearestInputPos(cursorPos, direction) {\n return this.currentMask ? this.currentMask.nearestInputPos(cursorPos, direction) : super.nearestInputPos(cursorPos, direction);\n }\n get overwrite() {\n return this.currentMask ? this.currentMask.overwrite : this._overwrite;\n }\n set overwrite(overwrite) {\n this._overwrite = overwrite;\n }\n get eager() {\n return this.currentMask ? this.currentMask.eager : this._eager;\n }\n set eager(eager) {\n this._eager = eager;\n }\n get skipInvalid() {\n return this.currentMask ? this.currentMask.skipInvalid : this._skipInvalid;\n }\n set skipInvalid(skipInvalid) {\n this._skipInvalid = skipInvalid;\n }\n maskEquals(mask) {\n return Array.isArray(mask) ? this.compiledMasks.every((m, mi) => {\n if (!mask[mi]) return;\n const {\n mask: oldMask,\n ...restOpts\n } = mask[mi];\n return objectIncludes(m, restOpts) && m.maskEquals(oldMask);\n }) : super.maskEquals(mask);\n }\n typedValueEquals(value) {\n var _this$currentMask5;\n return Boolean((_this$currentMask5 = this.currentMask) == null ? void 0 : _this$currentMask5.typedValueEquals(value));\n }\n}\nMaskedDynamic.DEFAULTS = void 0;\nMaskedDynamic.DEFAULTS = {\n dispatch: (appended, masked, flags, tail) => {\n if (!masked.compiledMasks.length) return;\n const inputValue = masked.rawInputValue;\n\n // simulate input\n const inputs = masked.compiledMasks.map((m, index) => {\n const isCurrent = masked.currentMask === m;\n const startInputPos = isCurrent ? m.displayValue.length : m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT);\n if (m.rawInputValue !== inputValue) {\n m.reset();\n m.append(inputValue, {\n raw: true\n });\n } else if (!isCurrent) {\n m.remove(startInputPos);\n }\n m.append(appended, masked.currentMaskFlags(flags));\n m.appendTail(tail);\n return {\n index,\n weight: m.rawInputValue.length,\n totalInputPositions: m.totalInputPositions(0, Math.max(startInputPos, m.nearestInputPos(m.displayValue.length, DIRECTION.FORCE_LEFT)))\n };\n });\n\n // pop masks with longer values first\n inputs.sort((i1, i2) => i2.weight - i1.weight || i2.totalInputPositions - i1.totalInputPositions);\n return masked.compiledMasks[inputs[0].index];\n }\n};\nIMask.MaskedDynamic = MaskedDynamic;\n\nexport { MaskedDynamic as default };\n","import MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/utils.js';\nimport './base.js';\nimport '../core/continuous-tail-details.js';\nimport './factory.js';\nimport './pattern/chunk-tail-details.js';\nimport './pattern/cursor.js';\nimport './pattern/fixed-definition.js';\nimport './pattern/input-definition.js';\nimport './regexp.js';\n\n/** Pattern which validates enum values */\nclass MaskedEnum extends MaskedPattern {\n constructor(opts) {\n super(opts); // mask will be created in _update\n }\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n const {\n enum: _enum,\n ...eopts\n } = opts;\n if (_enum) {\n const lengths = _enum.map(e => e.length);\n const requiredLength = Math.min(...lengths);\n const optionalLength = Math.max(...lengths) - requiredLength;\n eopts.mask = '*'.repeat(requiredLength);\n if (optionalLength) eopts.mask += '[' + '*'.repeat(optionalLength) + ']';\n this.enum = _enum;\n }\n super._update(eopts);\n }\n doValidate(flags) {\n return this.enum.some(e => e.indexOf(this.unmaskedValue) === 0) && super.doValidate(flags);\n }\n}\nIMask.MaskedEnum = MaskedEnum;\n\nexport { MaskedEnum as default };\n","import Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/change-details.js';\nimport '../core/continuous-tail-details.js';\nimport '../core/utils.js';\n\n/** Masking by custom Function */\nclass MaskedFunction extends Masked {\n /** */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update({\n ...opts,\n validate: opts.mask\n });\n }\n}\nIMask.MaskedFunction = MaskedFunction;\n\nexport { MaskedFunction as default };\n","import { escapeRegExp, DIRECTION } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked from './base.js';\nimport IMask from '../core/holder.js';\nimport '../core/continuous-tail-details.js';\n\n/** Number mask */\nclass MaskedNumber extends Masked {\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n\n /** Enable characters overwriting */\n\n /** */\n\n /** */\n\n /** Format typed value to string */\n\n /** Parse string to get typed value */\n\n constructor(opts) {\n super({\n ...MaskedNumber.DEFAULTS,\n ...opts\n });\n }\n updateOptions(opts) {\n super.updateOptions(opts);\n }\n _update(opts) {\n super._update(opts);\n this._updateRegExps();\n }\n _updateRegExps() {\n const start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n const mid = '\\\\d*';\n const end = (this.scale ? \"(\" + escapeRegExp(this.radix) + \"\\\\d{0,\" + this.scale + \"})?\" : '') + '$';\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp(\"[\" + this.mapToRadix.map(escapeRegExp).join('') + \"]\", 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n const parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n doPrepareChar(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n const [prepCh, details] = super.doPrepareChar(this._removeThousandsSeparators(this.scale && this.mapToRadix.length && (\n /*\n radix should be mapped when\n 1) input is done from keyboard = flags.input && flags.raw\n 2) unmasked value is set = !flags.input && !flags.raw\n and should not be mapped when\n 1) value is set = flags.input && !flags.raw\n 2) raw value is set = !flags.input && flags.raw\n */\n flags.input && flags.raw || !flags.input && !flags.raw) ? ch.replace(this._mapToRadixRegExp, this.radix) : ch), flags);\n if (ch && !prepCh) details.skip = true;\n if (prepCh && !this.allowPositive && !this.value && prepCh !== '-') details.aggregate(this._appendChar('-'));\n return [prepCh, details];\n }\n _separatorsCount(to, extendOnSeparators) {\n if (extendOnSeparators === void 0) {\n extendOnSeparators = false;\n }\n let count = 0;\n for (let pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n return count;\n }\n _separatorsCountFromSlice(slice) {\n if (slice === void 0) {\n slice = this._value;\n }\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n extractInput(fromPos, toPos, flags) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags));\n }\n _appendCharRaw(ch, flags) {\n if (flags === void 0) {\n flags = {};\n }\n if (!this.thousandsSeparator) return super._appendCharRaw(ch, flags);\n const prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n this._value = this._removeThousandsSeparators(this.value);\n const appendDetails = super._appendCharRaw(ch, flags);\n this._value = this._insertThousandsSeparators(this._value);\n const beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n appendDetails.skip = !appendDetails.rawInserted && ch === this.thousandsSeparator;\n return appendDetails;\n }\n _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n const searchFrom = pos - this.thousandsSeparator.length + 1;\n const separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n return -1;\n }\n _adjustRangeWithSeparators(from, to) {\n const separatorAroundFromPos = this._findSeparatorAround(from);\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n const separatorAroundToPos = this._findSeparatorAround(to);\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n remove(fromPos, toPos) {\n if (fromPos === void 0) {\n fromPos = 0;\n }\n if (toPos === void 0) {\n toPos = this.displayValue.length;\n }\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n const valueBeforePos = this.value.slice(0, fromPos);\n const valueAfterPos = this.value.slice(toPos);\n const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n if (separatorAtLeftPos >= 0) {\n const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n break;\n }\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n const separatorAtRightPos = this._findSeparatorAround(cursorPos);\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n return cursorPos;\n }\n doValidate(flags) {\n // validate as string\n let valid = Boolean(this._removeThousandsSeparators(this.value).match(this._numberRegExp));\n if (valid) {\n // validate as number\n const number = this.number;\n valid = valid && !isNaN(number) && (\n // check min bound for negative values\n this.min == null || this.min >= 0 || this.min <= this.number) && (\n // check max bound for positive values\n this.max == null || this.max <= 0 || this.number <= this.max);\n }\n return valid && super.doValidate(flags);\n }\n doCommit() {\n if (this.value) {\n const number = this.number;\n let validnum = number;\n\n // check bounds\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = this.format(validnum, this);\n let formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n super.doCommit();\n }\n _normalizeZeros(value) {\n const parts = this._removeThousandsSeparators(value).split(this.radix);\n\n // remove leading zeros\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, (match, sign, zeros, num) => sign + num);\n // add leading zero\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n _padFractionalZeros(value) {\n if (!value) return value;\n const parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n doSkipInvalid(ch, flags, checkTail) {\n if (flags === void 0) {\n flags = {};\n }\n const dropFractional = this.scale === 0 && ch !== this.thousandsSeparator && (ch === this.radix || ch === MaskedNumber.UNMASKED_RADIX || this.mapToRadix.includes(ch));\n return super.doSkipInvalid(ch, flags, checkTail) && !dropFractional;\n }\n get unmaskedValue() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, MaskedNumber.UNMASKED_RADIX);\n }\n set unmaskedValue(unmaskedValue) {\n super.unmaskedValue = unmaskedValue;\n }\n get typedValue() {\n return this.parse(this.unmaskedValue, this);\n }\n set typedValue(n) {\n this.rawInputValue = this.format(n, this).replace(MaskedNumber.UNMASKED_RADIX, this.radix);\n }\n\n /** Parsed Number */\n get number() {\n return this.typedValue;\n }\n set number(number) {\n this.typedValue = number;\n }\n\n /**\n Is negative allowed\n */\n get allowNegative() {\n return this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n\n /**\n Is positive allowed\n */\n get allowPositive() {\n return this.min != null && this.min > 0 || this.max != null && this.max > 0;\n }\n typedValueEquals(value) {\n // handle 0 -> '' case (typed = 0 even if value = '')\n // for details see https://github.com/uNmAnNeR/imaskjs/issues/134\n return (super.typedValueEquals(value) || MaskedNumber.EMPTY_VALUES.includes(value) && MaskedNumber.EMPTY_VALUES.includes(this.typedValue)) && !(value === 0 && this.value === '');\n }\n}\nMaskedNumber.UNMASKED_RADIX = '.';\nMaskedNumber.EMPTY_VALUES = [...Masked.EMPTY_VALUES, 0];\nMaskedNumber.DEFAULTS = {\n mask: Number,\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: [MaskedNumber.UNMASKED_RADIX],\n min: Number.MIN_SAFE_INTEGER,\n max: Number.MAX_SAFE_INTEGER,\n scale: 2,\n normalizeZeros: true,\n padFractionalZeros: false,\n parse: Number,\n format: n => n.toLocaleString('en-US', {\n useGrouping: false,\n maximumFractionDigits: 20\n })\n};\nIMask.MaskedNumber = MaskedNumber;\n\nexport { MaskedNumber as default };\n","import createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport '../core/utils.js';\n\n/** Mask pipe source and destination types */\nconst PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue'\n};\n/** Creates new pipe function depending on mask type, source and destination options */\nfunction createPipe(arg, from, to) {\n if (from === void 0) {\n from = PIPE_TYPE.MASKED;\n }\n if (to === void 0) {\n to = PIPE_TYPE.MASKED;\n }\n const masked = createMask(arg);\n return value => masked.runIsolated(m => {\n m[from] = value;\n return m[to];\n });\n}\n\n/** Pipes value through mask depending on mask type, source and destination options */\nfunction pipe(value, mask, from, to) {\n return createPipe(mask, from, to)(value);\n}\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n\nexport { PIPE_TYPE, createPipe, pipe };\n","export { default as InputMask } from './controls/input.js';\nimport IMask from './core/holder.js';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element.js';\nexport { default as HTMLInputMaskElement } from './controls/html-input-mask-element.js';\nexport { default as HTMLMaskElement } from './controls/html-mask-element.js';\nexport { default as MaskElement } from './controls/mask-element.js';\nexport { default as ChangeDetails } from './core/change-details.js';\nexport { DIRECTION, forceDirection } from './core/utils.js';\nexport { default as Masked } from './masked/base.js';\nexport { default as MaskedDate } from './masked/date.js';\nexport { default as MaskedDynamic } from './masked/dynamic.js';\nexport { default as MaskedEnum } from './masked/enum.js';\nexport { default as createMask, normalizeOpts } from './masked/factory.js';\nexport { default as MaskedFunction } from './masked/function.js';\nexport { default as MaskedNumber } from './masked/number.js';\nexport { default as MaskedPattern } from './masked/pattern.js';\nexport { default as ChunksTailDetails } from './masked/pattern/chunk-tail-details.js';\nexport { default as PatternFixedDefinition } from './masked/pattern/fixed-definition.js';\nexport { default as PatternInputDefinition } from './masked/pattern/input-definition.js';\nexport { PIPE_TYPE, createPipe, pipe } from './masked/pipe.js';\nexport { default as MaskedRange } from './masked/range.js';\nexport { default as MaskedRegExp } from './masked/regexp.js';\nimport './core/action-details.js';\nimport './core/continuous-tail-details.js';\nimport './masked/pattern/cursor.js';\n\ntry {\n globalThis.IMask = IMask;\n} catch {}\n\nexport { IMask as default };\n","import IMask from \"imask\";\n\nexport default class Credit {\n constructor() {\n this.setFieldMask();\n }\n\n setFieldMask() {\n const installmentsValue = document.querySelector(\n \"#woocommerce_vindi-pagamentos-credit_installments_value\",\n );\n if (installmentsValue) {\n IMask(installmentsValue, {\n mask: \"R$00,00\",\n });\n }\n }\n}\n","export default class Settings {\n constructor() {\n this.showPasswordContent();\n this.createExportButton();\n this.addPaymentLinkButtonOnSettings();\n this.addPaymentLinkButtonOnOrders();\n this.addPaymentLinkButtonOnGateways();\n }\n\n addPaymentLinkButtonOnSettings() {\n const anchor = document.querySelector(\"#vindi-pagamentos-token\");\n if (anchor) {\n const side = document.querySelector(\"#wvp-export-btn\");\n this.createPaymentLinkButton(side, [\n \"components-button\",\n \"woocommerce-save-button\",\n \"is-primary\"\n ]);\n }\n }\n\n addPaymentLinkButtonOnOrders() {\n const postType = document.querySelector(\"input[name=post_type]\");\n if (postType && postType.value === \"shop_order\") {\n const side = document.querySelector(\".page-title-action\");\n this.createPaymentLinkButton(side, [\n \"button-primary\",\n \"page-title-action\",\n ]);\n }\n }\n\n addPaymentLinkButtonOnGateways() {\n const gateways = [\"billet\", \"credit\", \"pix\", \"bolepix\", \"transfer\"];\n\n gateways.forEach((gateway) => {\n const anchor = document.querySelector(\n `#woocommerce_vindi-pagamentos-${gateway}_enabled`,\n );\n\n if (anchor && anchor.checked) {\n const side = document.querySelector(\"#mainform > .submit > button\");\n this.createPaymentLinkButton(\n side,\n [\"woocommerce-save-button\", \"is-secondary\", \"components-button\"],\n { gateway: `vindi-pagamentos-${gateway}` },\n );\n }\n });\n }\n\n createPaymentLinkButton(side, classes = [], params = {}) {\n if (side) {\n const button = document.createElement(\"a\");\n button.setAttribute(\"target\", \"_blank\");\n button.setAttribute(\"id\", \"wvp-payment-link-btn\");\n\n button.setAttribute(\n \"href\",\n `${location.origin}/wp-admin/post-new.php?${this.getUrlParams({\n post_type: \"shop_order\",\n \"vindi-payment-link\": true,\n ...params,\n })}`,\n );\n\n button.classList.add(...classes);\n button.innerText = \"Gerar Link de Pagamento\";\n\n side.after(button);\n }\n }\n\n getUrlParams(params) {\n const searchParams = {};\n\n for (const key in params) {\n if (Object.hasOwnProperty.call(params, key) && params[key]) {\n searchParams[key] = params[key];\n }\n }\n\n return new URLSearchParams(searchParams).toString();\n }\n\n showPasswordContent() {\n const field = document.querySelector(\"#vindi-pagamentos-token\");\n if (field) {\n field.addEventListener(\"focusin\", () => {\n field.setAttribute(\"type\", \"text\");\n });\n\n field.addEventListener(\"focusout\", () => {\n field.setAttribute(\"type\", \"password\");\n });\n }\n }\n\n createExportButton() {\n const anchor = document.querySelector(\"#vindi-pagamentos-token\");\n\n if (anchor) {\n const button = document.createElement(\"a\");\n button.setAttribute(\"id\", \"wvp-export-btn\");\n button.classList.add(\"wvp-export-btn\", \"woocommerce-save-button\", \"components-button\", \"is-secondary\");\n button.innerText = \"Exportar Configurações\";\n\n const form = document.querySelector(\"#mainform > .submit\");\n form.appendChild(button);\n\n this.exportSettings(button);\n }\n }\n\n exportSettings(button) {\n button.addEventListener(\"click\", () => {\n this.getSettingsContent();\n });\n }\n\n getSettingsContent() {\n const body = new FormData();\n body.append(\"action\", \"export_settings\");\n\n fetch(`${window.location.origin}/wp-admin/admin-ajax.php`, {\n method: \"POST\",\n body: body,\n })\n .then((response) => response.json())\n .then((data) => {\n this.downloadSettingsFile(JSON.stringify(data.content, null, 4));\n\n setTimeout(() => {\n window.location.reload();\n }, 500);\n });\n }\n\n downloadSettingsFile(content) {\n const file = new File([content], \"settings.json\", {\n type: \"application/json\",\n });\n\n const url = URL.createObjectURL(file);\n const element = document.createElement(\"a\");\n\n if (element) {\n element.setAttribute(\"href\", url);\n element.setAttribute(\"download\", \"settings.json\");\n\n document.body.appendChild(element);\n element.click();\n document.body.removeChild(element);\n }\n }\n}\n","export default class ManualRenewal {\n constructor() {\n this.handleManualRenewal();\n }\n\n handleManualRenewal() {\n const button = document.querySelector(\"#manual-renewal-button\");\n const hidden = document.querySelector(\"#manual-renewal-subscription\");\n\n if (button && hidden) {\n button.addEventListener('click', () => {\n const body = new FormData();\n body.append('action', 'manual_renewal');\n body.append('subscription', hidden.value);\n\n this.setLoader();\n button.setAttribute('disabled', true);\n\n fetch(ajaxurl, {\n method: \"POST\",\n body: body,\n })\n .then((response) => response.json())\n .then((data) => {\n if (data.status) {\n if (data.status == \"success\") {\n window.location.reload();\n }\n }\n });\n });\n }\n }\n\n setLoader(active = true) {\n const loader = document.querySelector('#manual-renewal-form .loader');\n\n if (loader) {\n if (active) {\n loader.classList.add('active');\n } else {\n loader.classList.remove('active');\n }\n }\n }\n}\n","export default class RetryRenewal {\n constructor() {\n this.handleRetryRenewal();\n }\n\n handleRetryRenewal() {\n const button = document.querySelector(\"#vindi-retry-renewal-button\");\n const hidden = document.querySelector(\"#vindi-retry-renewal-order\");\n const nonce = document.querySelector(\"#vindi_retry_renewal_nonce\");\n\n if (button && hidden && nonce) {\n button.addEventListener('click', (e) => {\n\n const body = new FormData();\n body.append('action', 'vindi_retry_renewal');\n body.append('order', hidden.value);\n body.append('nonce', nonce.value);\n\n this.setLoader();\n button.setAttribute('disabled', true);\n\n fetch(ajaxurl, {\n method: \"POST\",\n body: body,\n })\n .then((response) => response.json())\n .then((data) => {\n if (data.status) {\n if (data.status == \"success\") {\n window.location.reload();\n }\n }\n });\n });\n }\n }\n\n setLoader(active = true) {\n const loader = document.querySelector('#vindi-retry-renewal-form .loader');\n\n if (loader) {\n if (active) {\n loader.classList.add('active');\n } else {\n loader.classList.remove('active');\n }\n }\n }\n}\n","export default class PaymentMethodDiscount {\n constructor(paymentMethod) {\n this.enableField = document.querySelector(\n `#woocommerce_vindi-pagamentos-${paymentMethod}_discount`\n );\n\n this.showTagField = document.querySelector(\n '#vindi-pagamentos-show_discount_text'\n );\n\n if (this.enableField) {\n this.discountTypeField = document.querySelector(\n `#woocommerce_vindi-pagamentos-${paymentMethod}_discount_type`\n ).closest('tr');\n this.discountValueField = document.querySelector(\n `#woocommerce_vindi-pagamentos-${paymentMethod}_discount_value`\n ).closest('tr');\n }\n\n if (this.showTagField) {\n this.textColorField = document.querySelector(\n '#vindi-pagamentos-text_color'\n ).closest('tr');\n }\n\n this.init();\n }\n\n init() {\n if (this.enableField) {\n this.toggleDiscountFields();\n this.enableField.addEventListener(\"change\", () => {\n this.toggleDiscountFields();\n });\n }\n\n if (this.showTagField) {\n this.toggleColorFields();\n this.showTagField.addEventListener(\"change\", () => {\n this.toggleColorFields();\n });\n }\n }\n\n toggleDiscountFields() {\n const isEnabled = this.enableField.checked;\n this.discountTypeField.style.display = isEnabled ? 'table-row' : 'none';\n this.discountValueField.style.display = isEnabled ? 'table-row' : 'none';\n }\n\n toggleColorFields() {\n const isEnabled = this.showTagField.checked;\n this.backgroundColorField.style.display = isEnabled ? 'table-row' : 'none';\n this.textColorField.style.display = isEnabled ? 'table-row' : 'none';\n }\n}\n\njQuery(document).ready(function ($) {\n new PaymentMethodDiscount('bolepix');\n new PaymentMethodDiscount('pix');\n});","export default class PaymentProfile {\n constructor() {\n this.init();\n }\n\n init() {\n this.setupDefaultSelection();\n this.setupEventListeners();\n }\n\n setupDefaultSelection() {\n const profiles = document.querySelectorAll('input[name=\"payment_profile\"]');\n const hasChecked = Array.from(profiles).some(profile => profile.checked);\n\n if (profiles.length > 0 && !hasChecked) {\n profiles[0].checked = true;\n }\n }\n\n setupEventListeners() {\n const updateButton = document.getElementById('update-payment-profile-button');\n\n if (updateButton) {\n updateButton.addEventListener('click', this.handleUpdateProfile.bind(this));\n }\n }\n\n handleUpdateProfile(event) {\n const subscription = document.getElementById('payment-profile-subscription').value;\n const selectedProfile = document.querySelector('input[name=\"payment_profile\"]:checked');\n const loader = document.querySelector('.loader');\n const messageEl = document.getElementById('update-message');\n\n if (!selectedProfile) {\n messageEl.textContent = vindiTranslations.selectCard || 'Por favor, selecione um cartão.';\n messageEl.classList.add('error');\n messageEl.classList.remove('success');\n return;\n }\n\n event.currentTarget.disabled = true;\n if (loader) loader.style.display = 'block';\n messageEl.textContent = '';\n messageEl.classList.remove('error', 'success');\n\n const formData = new FormData();\n formData.append('action', 'update_payment_profile');\n formData.append('subscription', subscription);\n formData.append('payment_profile', selectedProfile.value);\n\n fetch(ajaxurl, {\n method: 'POST',\n body: formData\n })\n .then(response => response.json())\n .then(response => {\n if (response.status === 'success') {\n messageEl.textContent = response.message || (vindiTranslations.cardUpdated || 'Cartão atualizado com sucesso!');\n messageEl.classList.add('success');\n\n document.querySelectorAll('.vindi-card-row').forEach(row => {\n row.classList.remove('selected-card');\n });\n selectedProfile.closest('.vindi-card-row').classList.add('selected-card');\n } else {\n messageEl.textContent = response.message || (vindiTranslations.updateError || 'Erro ao atualizar cartão.');\n messageEl.classList.add('error');\n }\n })\n .catch(() => {\n messageEl.textContent = vindiTranslations.requestError || 'Erro ao processar requisição.';\n messageEl.classList.add('error');\n })\n .finally(() => {\n document.getElementById('update-payment-profile-button').disabled = false;\n if (loader) loader.style.display = 'none';\n });\n }\n}","export default class MultiPaymentMinControl {\n constructor() {\n this.enableField = document.querySelector(\n `#woocommerce_vindi-pagamentos-multi-payment_enable_multipayment_min_control`\n );\n\n this.minValueField = document.querySelector(\n `#woocommerce_vindi-pagamentos-multi-payment_multipayment_min_amount`\n ).closest('tr');\n\n this.init();\n }\n\n init() {\n if (this.enableField) {\n this.toggleMinValueField();\n this.enableField.addEventListener(\"change\", () => {\n this.toggleMinValueField();\n });\n }\n }\n\n toggleMinValueField() {\n const isEnabled = this.enableField.checked;\n this.minValueField.style.display = isEnabled ? 'table-row' : 'none';\n }\n}","export default class VindiWizard {\n constructor() {\n this.currentStep = this.detectCurrentStep();\n this.formData = {};\n this.init();\n }\n\n detectCurrentStep() {\n const urlParams = new URLSearchParams(window.location.search);\n const page = urlParams.get('page');\n const step = urlParams.get('step');\n\n if (page !== 'vindi-wizard') {\n return null;\n }\n\n return step || 'welcome';\n }\n\n init() {\n if (!this.currentStep) {\n return;\n }\n\n this.initStepSpecific();\n\n this.setupBackButton();\n }\n\n initStepSpecific() {\n switch (this.currentStep) {\n case 'register':\n this.setupPersonTypeToggle();\n this.setupFormSubmission();\n this.setupDocumentMasks();\n break;\n\n case 'address':\n this.loadSavedData();\n this.setupFormSubmission();\n this.setupDocumentMasks();\n break;\n\n case 'welcome':\n break;\n\n case 'login':\n break;\n\n case 'token':\n break;\n\n case 'features':\n this.setupFeatureToggles();\n this.setupFormSubmission();\n break;\n\n case 'success':\n break;\n }\n }\n\n setupFeatureToggles() {\n const toggles = document.querySelectorAll('.vindi-wizard-switch input[type=\"checkbox\"]');\n\n toggles.forEach(toggle => {\n toggle.addEventListener('change', (e) => {\n console.log('Feature toggle changed:', e.target.checked);\n });\n });\n }\n\n setupPersonTypeToggle() {\n const personTypeSelect = document.getElementById('vindi-person-type');\n const cpfField = document.getElementById('cpf-field');\n const cnpjField = document.getElementById('cnpj-field');\n const companyField = document.getElementById('company-field');\n\n if (personTypeSelect) {\n personTypeSelect.addEventListener('change', (e) => {\n const isPF = e.target.value === '1';\n\n if (isPF) {\n cpfField.style.display = 'block';\n cnpjField.style.display = 'none';\n companyField.style.display = 'none';\n } else {\n cpfField.style.display = 'none';\n cnpjField.style.display = 'block';\n companyField.style.display = 'block';\n }\n });\n }\n }\n\n setupDocumentMasks() {\n const cpfInput = document.querySelector('input[name=\"vindi-pagamentos-cpf\"]');\n const cnpjInput = document.querySelector('input[name=\"vindi-pagamentos-cnpj\"]');\n const phoneInput = document.querySelector('input[name=\"vindi-pagamentos-telefone\"]');\n const cepInput = document.querySelector('input[name=\"vindi-pagamentos-cep\"]');\n\n if (cpfInput && typeof IMask !== 'undefined') {\n IMask(cpfInput, { mask: '000.000.000-00' });\n }\n\n if (cnpjInput && typeof IMask !== 'undefined') {\n IMask(cnpjInput, { mask: '00.000.000/0000-00' });\n }\n\n if (phoneInput && typeof IMask !== 'undefined') {\n IMask(phoneInput, { mask: '(00) 0 0000-0000' });\n }\n\n if (cepInput && typeof IMask !== 'undefined') {\n IMask(cepInput, { mask: '00000-000' });\n }\n }\n\n setupFormSubmission() {\n const submitButton = document.querySelector('.vindi-wizard-btn');\n const continueButton = document.querySelector('.vindi-wizard-continue');\n\n if (submitButton) {\n submitButton.addEventListener('click', (e) => {\n e.preventDefault();\n this.handleFormSubmit();\n });\n }\n\n if (continueButton) {\n continueButton.addEventListener('click', (e) => {\n e.preventDefault();\n this.handleFeaturesSubmit();\n });\n }\n }\n\n setupBackButton() {\n const backButton = document.querySelector('.vindi-wizard-back-btn');\n\n if (backButton) {\n backButton.addEventListener('click', (e) => {\n e.preventDefault();\n this.handleBackStep();\n });\n }\n }\n\n validateForm() {\n if (this.currentStep === 'register') {\n return this.validateRegisterStep();\n } else if (this.currentStep === 'address') {\n return this.validateAddressStep();\n }\n return false;\n }\n\n validateRegisterStep() {\n const requiredFields = [\n 'vindi-pagamentos-nome',\n 'vindi-pagamentos-email',\n 'vindi-pagamentos-telefone'\n ];\n\n const personType = document.querySelector('select[name=\"vindi-pagamentos-person-type\"]')?.value;\n\n if (personType === '1') {\n requiredFields.push('vindi-pagamentos-cpf');\n } else if (personType === '2') {\n requiredFields.push('vindi-pagamentos-cnpj', 'vindi-pagamentos-social-name');\n }\n\n const termsAcceptedInput = document.querySelector('input[name=\"vindi-pagamentos-accept-terms\"]');\n\n if (termsAcceptedInput && !termsAcceptedInput.checked) {\n alert('Você deve aceitar os termos e condições para continuar.');\n return false;\n }\n\n for (const fieldName of requiredFields) {\n const field = document.querySelector(`input[name=\"${fieldName}\"], select[name=\"${fieldName}\"]`);\n if (!field || !field.value.trim()) {\n alert(`Por favor, preencha o campo: ${this.getFieldLabel(fieldName)}`);\n field?.focus();\n return false;\n }\n }\n\n return true;\n }\n\n validateAddressStep() {\n const requiredFields = [\n 'vindi-pagamentos-cep',\n 'vindi-pagamentos-endereco',\n 'vindi-pagamentos-numero',\n 'vindi-pagamentos-bairro',\n 'vindi-pagamentos-cidade',\n 'vindi-pagamentos-estado'\n ];\n\n for (const fieldName of requiredFields) {\n const field = document.querySelector(`input[name=\"${fieldName}\"], select[name=\"${fieldName}\"]`);\n if (!field || !field.value.trim()) {\n alert(`Por favor, preencha o campo: ${this.getFieldLabel(fieldName)}`);\n field?.focus();\n return false;\n }\n }\n\n return true;\n }\n\n getFieldLabel(fieldName) {\n const labels = {\n 'vindi-pagamentos-nome': 'Nome',\n 'vindi-pagamentos-email': 'E-mail',\n 'vindi-pagamentos-telefone': 'Telefone',\n 'vindi-pagamentos-cpf': 'CPF',\n 'vindi-pagamentos-cnpj': 'CNPJ',\n 'vindi-pagamentos-social-name': 'Razão Social',\n 'vindi-pagamentos-cep': 'CEP',\n 'vindi-pagamentos-endereco': 'Endereço',\n 'vindi-pagamentos-numero': 'Número',\n 'vindi-pagamentos-bairro': 'Bairro',\n 'vindi-pagamentos-cidade': 'Cidade',\n 'vindi-pagamentos-estado': 'Estado'\n };\n return labels[fieldName] || fieldName;\n }\n\n collectFormData() {\n const formData = {};\n const inputs = document.querySelectorAll('input[name^=\"vindi-pagamentos-\"], select[name^=\"vindi-pagamentos-\"]');\n\n inputs.forEach(input => {\n if (input.type === 'checkbox') {\n formData[input.name] = input.checked;\n } else {\n formData[input.name] = input.value;\n }\n });\n\n return formData;\n }\n\n handleFeaturesSubmit() {\n const features = {};\n const toggles = document.querySelectorAll('.vindi-wizard-switch input[type=\"checkbox\"]');\n\n toggles.forEach((toggle, index) => {\n const featureNames = ['pix', 'credit', 'billet', 'bolepix', 'multipayment'];\n if (featureNames[index]) {\n features[featureNames[index]] = toggle.checked;\n }\n });\n\n localStorage.setItem('vindi-wizard-features', JSON.stringify(features));\n window.location.href = `${window.location.origin}/wp-admin/admin.php?page=vindi-wizard&step=success`;\n }\n\n async handleFormSubmit() {\n if (!this.validateForm()) {\n return;\n }\n\n const formData = this.collectFormData();\n this.formData = { ...this.formData, ...formData };\n\n if (this.currentStep === 'register') {\n this.navigateToAddressStep();\n }\n else if (this.currentStep === 'address') {\n await this.submitToAPI();\n }\n }\n\n navigateToAddressStep() {\n localStorage.setItem('vindi-wizard-data', JSON.stringify(this.formData));\n window.location.href = `${window.location.origin}/wp-admin/admin.php?page=vindi-wizard&step=address`;\n }\n\n async submitToAPI() {\n try {\n const response = await this.callYapayAPI();\n\n if (response.success) {\n window.location.href = `${window.location.origin}/wp-admin/admin.php?page=vindi-wizard&step=token`;\n } else {\n alert('Erro ao criar conta: ' + response.message);\n }\n } catch (error) {\n console.error('Erro:', error);\n alert('Erro ao criar conta. Tente novamente.');\n }\n }\n\n async callYapayAPI() {\n const formData = new FormData();\n formData.append('action', 'vindi_create_user_account');\n formData.append('nonce', vindiWizardConfig.nonce);\n formData.append('wizard_data', JSON.stringify(this.formData));\n\n const response = await fetch(vindiWizardConfig.ajaxUrl, {\n method: 'POST',\n body: formData\n });\n\n return await response.json();\n }\n\n handleBackStep() {\n if (this.currentStep === 'address') {\n window.location.href = `${window.location.origin}/wp-admin/admin.php?page=vindi-wizard&step=register`;\n } else if (this.currentStep === 'register') {\n window.location.href = `${window.location.origin}/wp-admin/admin.php?page=vindi-wizard&step=welcome`;\n } else if (this.currentStep === 'features') {\n window.location.href = `${window.location.origin}/wp-admin/admin.php?page=vindi-wizard&step=token`;\n }\n }\n\n loadSavedData() {\n const savedData = localStorage.getItem('vindi-wizard-data');\n if (savedData) {\n this.formData = JSON.parse(savedData);\n }\n }\n}","import PaymentLink from \"./orders/payment-link\";\nimport { ShippingTracking } from \"./orders/tranking\";\nimport Credit from \"./settings/credit\";\nimport Settings from \"./settings/settings\";\nimport ManualRenewal from \"./subscriptions/manual-renewal\";\nimport RetryRenewal from \"./subscriptions/retry-renewal\";\nimport PaymentMethodDiscount from \"./settings/payment-method-discount\";\nimport PaymentProfile from \"./subscriptions/payment-profile\";\nimport MultiPaymentMinControl from \"./settings/multipayment-min-control\";\nimport VindiWizard from \"./wizard\";\n\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n new Settings();\n new Credit();\n new ShippingTracking();\n new PaymentLink();\n new ManualRenewal();\n new RetryRenewal();\n new PaymentMethodDiscount();\n new PaymentProfile();\n new MultiPaymentMinControl();\n new VindiWizard();\n});\n"],"names":["$c665d93b2532c65d$export$63151d8bb18a49f9","$c665d93b2532c65d$export$790fb69b1a2884f9","re","not_string","not_bool","not_type","not_primitive","number","numeric_arg","json","not_json","text","modulo","placeholder","key","key_access","index_access","sign","sprintf","parse_tree","argv","arg","i","k","ph","pad","pad_character","pad_length","is_positive","cursor","tree_length","length","output","keys","undefined","Error","param_no","test","type","Function","isNaN","TypeError","parseInt","toString","String","fromCharCode","JSON","stringify","width","precision","parseFloat","toExponential","toFixed","Number","toPrecision","substring","Object","prototype","call","slice","toLowerCase","valueOf","toUpperCase","replace","pad_char","charAt","repeat","align","sprintf_format","fmt","sprintf_cache","match","_fmt","arg_names","exec","push","SyntaxError","field_list","replacement_field","field_match","sprintf_parse","arguments","vsprintf","apply","concat","create","window","define","fn","options","head","tail","size","memoized","args","node","len","searchCache","next","prev","val","Array","maxSize","clear","memoize","console","error","$0f4d45ff44486fdb$var$PRECEDENCE","$0f4d45ff44486fdb$var$OPENERS","$0f4d45ff44486fdb$var$TERMINATORS","$0f4d45ff44486fdb$var$PATTERN","$0f4d45ff44486fdb$export$2e2bcd8739ae039","expression","operator","term","element","terms","stack","substr","index","trim","pop","indexOf","reverse","$94eef1b2d5e65686$var$OPERATORS","a","b","c","$94eef1b2d5e65686$export$2e2bcd8739ae039","postfix","variables","j","getOperatorResult","value","earlyReturn","hasOwnProperty","$00d0953cc7be59d8$export$2e2bcd8739ae039","$05530cac947ad0da$var$DEFAULT_OPTIONS","contextDelimiter","onMissingKey","$05530cac947ad0da$export$2e2bcd8739ae039","data","this","pluralForms","getPluralForm","domain","n","config","plural","pf","evaluate","plural_forms","parts","part","split","$05530cac947ad0da$var$getPluralExpression","dcnpgettext","context","singular","entry","DEFAULT_LOCALE_DATA","I18N_HOOK_REGEXP","$5a069099b4672102$export$2e2bcd8739ae039","namespace","$a478171861c8c86e$export$2e2bcd8739ae039","hookName","$fd035fa4006b395f$export$2e2bcd8739ae039","hooks","storeKey","callback","priority","hooksStore","validateHookName","validateNamespace","handler","handlers","splice","__current","forEach","hookInfo","name","currentIndex","runs","doAction","$991de1ff8f7500c1$export$2e2bcd8739ae039","removeAll","handlersRemoved","$797ba1df0a5d77ab$export$2e2bcd8739ae039","some","hook","$2d8581afdd65ecf6$export$2e2bcd8739ae039","returnFirstArg","result","$9c6275b0851c63c2$export$2e2bcd8739ae039","_hooksStore$__current","$c7417ed2fa92e6d4$export$2e2bcd8739ae039","$88ef48e984585ad1$export$2e2bcd8739ae039","_Hooks","constructor","actions","filters","addAction","createAddHook","addFilter","removeAction","createRemoveHook","removeFilter","hasAction","createHasHook","hasFilter","removeAllActions","removeAllFilters","createRunHook","applyFilters","currentAction","createCurrentHook","currentFilter","doingAction","createDoingHook","doingFilter","didAction","createDidHook","didFilter","defaultHooks","i18n","createI18n","initialData","initialDomain","tannin","Tannin","listeners","Set","notifyListeners","listener","doSetLocaleData","setLocaleData","single","getFilterDomain","_x","translation","onHookAddedOrRemoved","getLocaleData","addLocaleData","resetLocaleData","add","delete","__","_n","_nx","isRTL","hasTranslation","bind","subscribe","$30a7d668af984af0$export$2e2bcd8739ae039","openCheckoutFieldSection","url","URLSearchParams","location","href","has","document","querySelectorAll","address","style","display","updateLinkGateway","get","gateway","querySelector","$85a266acb49812d1$export$30ec7020d1366a2d","setEvents","button","addEventListener","e","preventDefault","code","post","saveTrackingCode","loader","classList","remove","body","FormData","append","ajaxurl","fetch","method","then","response","status","reload","message","handleMessage","div","innerHTML","$297913352d90e18e$export$844ec244b1367d54","str","$297913352d90e18e$export$a6cdc56e425d0d0a","obj","_obj$constructor","$297913352d90e18e$export$357523c63a2253b9","isArray","_","includes","entries","reduce","acc","_ref","v","$297913352d90e18e$export$9106728c49045482","NONE","LEFT","FORCE_LEFT","RIGHT","FORCE_RIGHT","$297913352d90e18e$export$32af4dafed14c8ce","direction","$297913352d90e18e$export$7c57da42ce8e346f","$297913352d90e18e$export$7aeb68f71172641d","arrA","arrB","dateA","Date","dateB","getTime","regexpA","RegExp","regexpB","$009600582982b1de$export$2e2bcd8739ae039","opts","assign","startChangePos","oldValue","oldSelection","start","Math","min","cursorPos","insertedCount","inserted","removedCount","max","end","removed","removeDirection","$6935d2fd91e23121$export$2e2bcd8739ae039","el","InputMask","$04eba1c21f72882d$export$81ad4b1539a22420","mask","MaskedRegExp","MaskedPattern","MaskedDate","MaskedNumber","MaskedDynamic","Masked","MaskedFunction","warn","$04eba1c21f72882d$export$a213ae1c699d7230","instanceOpts","_mask","startsWith","$04eba1c21f72882d$export$2e2bcd8739ae039","nOpts","MaskedClass","createMask","$58914a612445e359$export$2e2bcd8739ae039","selectionStart","_unsafeSelectionStart","selectionEnd","_unsafeSelectionEnd","select","_unsafeSelect","isActive","MaskElement","$0b64e8eaf462b1c4$export$2e2bcd8739ae039","input","super","_handlers","rootElement","_this$input$getRootNo","_this$input$getRootNo2","_this$input","getRootNode","activeElement","bindEvents","event","_toggleEventHandler","EVENTS_MAP","unbindEvents","removeEventListener","selectionChange","drop","click","focus","commit","HTMLMaskElement","$f7b3ffebaa825b51$export$2e2bcd8739ae039","setSelectionRange","$1f98d66e42010ceb$export$2e2bcd8739ae039","root","selection","getSelection","anchorOffset","focusOffset","createRange","range","setStart","firstChild","setEnd","lastChild","removeAllRanges","addRange","textContent","HTMLContenteditableMaskElement","isContentEditable","tagName","masked","_listeners","_value","_unmaskedValue","_saveSelection","_onInput","_onChange","_onDrop","_onFocus","_onClick","alignCursor","alignCursorFriendly","_bindEvents","updateValue","maskEquals","_this$masked","updateOptions","unmaskedValue","updateControl","typedValue","typedValueEquals","displayValue","_unbindEvents","_fireEvent","ev","l","_cursorChanging","_changingCursorPos","pos","_selection","newUnmaskedValue","newValue","newDisplayValue","isChanged","_fireChangeEvents","restOpts","updateMask","updateOpts","updateCursor","_delayUpdateCursor","_abortUpdateCursor","setTimeout","_inputEvent","isComplete","clearTimeout","nearestInputPos","on","off","hIndex","details","oldRawValue","rawInputValue","offset","raw","doCommit","stopPropagation","destroy","$42c38c98c80ffb03$export$2e2bcd8739ae039","normalize","prep","rawInserted","skip","tailShift","aggregate","ChangeDetails","$6f0dc42dfe2c31a9$export$2e2bcd8739ae039","from","stop","extend","appendTo","_appendPlaceholder","state","unshift","beforePos","shiftChar","shift","$422a8c2668dc4e1a$export$2e2bcd8739ae039","_update","DEFAULTS","_initialized","withValueRefresh","_rawInputValue","reset","resolve","flags","parse","format","extractInput","isFilled","totalInputPositions","fromPos","toPos","extractTail","appendTail","_appendCharRaw","ch","_appendChar","checkTail","consistentState","doPrepareChar","consistentTail","appended","doValidate","beforeTailState","overwrite","tailDetails","_appendEager","_beforeTailState","doPrepare","ci","d","doSkipInvalid","eager","_refreshing","rawInput","ret","runIsolated","_isolated","Boolean","skipInvalid","prepare","prepareChar","validate","parent","deleteCount","tailPos","eagerRemove","valLength","tval","EMPTY_VALUES","$23b1364d377b0d09$export$2e2bcd8739ae039","chunks","map","join","tailChunk","lastChunk","extendLast","firstTailChunk","blockIndex","chunk","lastBlockIter","_mapPosToBlock","chunkBlock","_stops","phDetails","_blocks","remainChars","props","cstate","chunkShiftPos","$baa6ec98fc1ffec4$export$2e2bcd8739ae039","_log","ok","block","_blockStartPos","s","pushState","popState","bindBlock","_pushLeft","_this$block","_pushRight","pushLeftBeforeFilled","isFixed","pushLeftBeforeInput","pushLeftBeforeRequired","isOptional","pushRightBeforeFilled","pushRightBeforeInput","pushRightBeforeRequired","$f79d78c596426ad8$export$2e2bcd8739ae039","isUnmasking","_isRawInput","maxPos","appendEager","isResolved","char","$e27282e98e221795$export$2e2bcd8739ae039","placeholderChar","displayChar","lazy","maskOpts","currentMaskFlags","boundPos","_flags$_beforeTailSta","DEFAULT_DEFINITIONS","search","$382bf60a70530ec6$export$2e2bcd8739ae039","definitions","_rebuildMask","defs","exposeBlock","_maskedBlocks","pattern","unmaskingBlock","optionalBlock","blocks","p","bNames","filter","bName","sort","expose","blockOpts","maskedBlock","isInput","STOP_CHAR","ESCAPE_CHAR","def","maskedState","bi","every","_this$_mapPosToBlock","startBlockIndex","blockIter","blockDetails","chunkTail","_forEachBlocksInRange","bFromPos","bToPos","blockChunk","_findStopBefore","stopBefore","si","toBlockIndex","startBlockIter","endBlockIndex","_blocks2","bDetails","accVal","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","total","maskedBlocks","indices","gi","InputDefinition","FixedDefinition","$4a0e3cc97ad5300d$export$2e2bcd8739ae039","_matchFrom","maxLength","to","autofix","patternOpts","fromStr","padStart","toStr","sameCharsCount","boundaries","minstr","maxstr","num","padEnd","nextVal","MaskedRange","$dadb0bbe513c82ac$export$2e2bcd8739ae039","patternBlocks","GET_DEFAULT_BLOCKS","Y","getFullYear","m","getMonth","getDate","bk","date","isDateExist","day","month","year","$d72501c5bcba0e7e$export$2e2bcd8739ae039","currentMask","exposeMask","compiledMasks","_overwrite","_eager","_skipInvalid","_applyDispatch","prevValueBeforeTail","inputValue","insertValue","tailValue","prevMask","prevMaskState","doDispatch","_flags$_beforeTailSta2","currentMaskRef","dispatch","currentDetails","_this$currentMask","_this$currentMask2","_this$currentMask3","_this$currentMask4","mi","oldMask","_this$currentMask5","inputs","isCurrent","startInputPos","weight","i1","i2","MaskedEnum","enum","_enum","eopts","lengths","requiredLength","optionalLength","$53a522de03a4a256$export$2e2bcd8739ae039","_updateRegExps","allowNegative","scale","radix","_numberRegExp","_mapToRadixRegExp","mapToRadix","_thousandsSeparatorRegExp","thousandsSeparator","_removeThousandsSeparators","_insertThousandsSeparators","prepCh","allowPositive","_separatorsCount","extendOnSeparators","count","_separatorsCountFromSlice","_adjustRangeWithSeparators","prevBeforeTailValue","prevBeforeTailSeparatorsCount","appendDetails","beforeTailValue","beforeTailSeparatorsCount","_findSeparatorAround","searchFrom","separatorPos","separatorAroundFromPos","separatorAroundToPos","valueBeforePos","valueAfterPos","separatorAtLeftPos","separatorAtLeftEndPos","separatorAtRightPos","valid","validnum","formatted","normalizeZeros","_normalizeZeros","padFractionalZeros","_padFractionalZeros","zeros","dropFractional","UNMASKED_RADIX","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","toLocaleString","useGrouping","maximumFractionDigits","$e2045d7156ea1579$export$90dab59c3d4b6e03","MASKED","UNMASKED","TYPED","$e2045d7156ea1579$export$a504d53a5b99e1b9","PIPE_TYPE","createPipe","pipe","globalThis","IMask","$f77924c6ee192325$export$2e2bcd8739ae039","setFieldMask","installmentsValue","$f893d19fdefe71ee$export$2e2bcd8739ae039","showPasswordContent","createExportButton","addPaymentLinkButtonOnSettings","addPaymentLinkButtonOnOrders","addPaymentLinkButtonOnGateways","side","createPaymentLinkButton","postType","anchor","checked","classes","params","createElement","setAttribute","origin","getUrlParams","post_type","innerText","after","searchParams","field","appendChild","exportSettings","getSettingsContent","downloadSettingsFile","content","file","File","URL","createObjectURL","removeChild","$a69a9d2ebbcbb8b9$export$2e2bcd8739ae039","handleManualRenewal","hidden","setLoader","active","$4690ec4389d1a596$export$2e2bcd8739ae039","handleRetryRenewal","nonce","$3067408d440eb7aa$export$2e2bcd8739ae039","paymentMethod","enableField","showTagField","discountTypeField","closest","discountValueField","textColorField","init","toggleDiscountFields","toggleColorFields","isEnabled","backgroundColorField","jQuery","ready","$","$c883fead058e6344$export$2e2bcd8739ae039","setupDefaultSelection","setupEventListeners","profiles","hasChecked","profile","updateButton","getElementById","handleUpdateProfile","subscription","selectedProfile","messageEl","vindiTranslations","selectCard","currentTarget","disabled","formData","cardUpdated","row","updateError","catch","requestError","finally","$89f4d85481b398f8$export$2e2bcd8739ae039","minValueField","toggleMinValueField","$c95f72f612001b82$export$2e2bcd8739ae039","currentStep","detectCurrentStep","urlParams","page","step","initStepSpecific","setupBackButton","setupPersonTypeToggle","setupFormSubmission","setupDocumentMasks","loadSavedData","setupFeatureToggles","toggle","log","target","personTypeSelect","cpfField","cnpjField","companyField","cpfInput","cnpjInput","phoneInput","cepInput","submitButton","continueButton","handleFormSubmit","handleFeaturesSubmit","backButton","handleBackStep","validateForm","validateRegisterStep","validateAddressStep","requiredFields","personType","termsAcceptedInput","alert","fieldName","getFieldLabel","collectFormData","features","featureNames","localStorage","setItem","navigateToAddressStep","submitToAPI","callYapayAPI","success","vindiWizardConfig","ajaxUrl","savedData","getItem"],"version":3,"file":"index.js.map"} -
vindi-pagamentos/trunk/dist/styles/admin/index.css
r3344656 r3356741 1 .wpl-wrap .notice{display:none}.block-editor-block-list__layout{padding:0!important}#wvp-payment-link-btn{margin:0 5px}. wvp-tracking-edit .wvp-tracking-edit-field{margin:10px 0}.wvp-tracking-edit .wvp-tracking-edit-field input{width:100%;margin-top:5px}.wvp-tracking-edit .wvp-tracking-edit-message{display:inherit}.wvp-tracking-edit .wvp-tracking-edit-message span{font-size:12px!important}.wvp-tracking-edit .wvp-tracking-edit-message i{color:red}.wvp-tracking-edit .wvp-tracking-edit-message-hidden{display:none}.wvp-tracking-edit .wvp-tracking-edit-button{height:20px;margin:10px 0}.wvp-tracking-edit .wvp-tracking-edit-button>div{float:right}.wvp-tracking-edit .wvp-tracking-edit-button>div .wvp-tracking{animation:4s linear infinite spin;position:relative;top:5px;right:5px}.wvp-tracking-edit .wvp-tracking-edit-button>div .wvp-tracking-hidden{display:none}@keyframes spin{to{transform:rotate(360deg)}}div.order_data_column:has(#vindi-payment-link){flex-direction:column!important;display:flex!important}#vindi-payment-link{margin:20px 0}#vindi-payment-link div{flex-direction:row;gap:5px;display:flex}#vindi-payment-link div>a{color:#fff;background:#001a9e;border-radius:3px;align-items:center;padding:5px 10px;text-decoration:none;display:flex}#vindi-payment-link div>button{background:0 0;border:1px solid #001a9e;border-radius:3px;align-items:center;display:flex}#vindi-payment-link div>button>img{width:14px}#vindi-payment-link div>button:hover{cursor:pointer}#vindi-payment-link div.disabled{opacity:.3}#vindi-payment-link div.disabled button,#vindi-payment-link div.disabled a,#vindi-payment-link div.disabled img{cursor:default}#vindi-payment-link .messages span{font-size:10px}.vindi-payment-link-context{justify-content:center;align-items:center;display:flex}.vindi-payment-link-context .vindi-payment-link-button{opacity:1;color:#fff;background:#001a9e;border-radius:3px;align-items:center;gap:3px;width:fit-content;min-width:135px;padding:3px 10px;text-decoration:none;display:flex}.vindi-payment-link-context .vindi-payment-link-button:hover{opacity:.8;color:#fff;transition:all .2s}#manual-renewal-form .loader{box-sizing:border-box;border:3px solid #0000;border-color:#bfbfbf #0000 #0000 #bfbfbf;border-radius:50%;width:15px;height:15px;animation:1s linear infinite rotation;display:none;position:relative;top:5px;left:10px}#manual-renewal-form .loader.active{display:inline-block}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.vindi-payment-profile-container{box-sizing:border-box;background:#fff}.vindi-section-title{font-size:14px}.vindi-th{font-size:12px!important;font-weight:400!important}.vindi-no-cards{color:#777;margin-bottom:0;font-style:italic}.payment-cards-container{margin:15px 0 5px}.payment-cards-container .actions{align-items:center;gap:10px;margin-top:15px;display:flex}.payment-cards-container .loader{border:2px solid #0000001a;border-left-color:#0073aa;border-radius:50%;width:20px;height:20px;animation:.8s linear infinite loader-spin;display:inline-block}.payment-cards-container .update-message{padding:5px 0;font-weight:500;display:inline-block}.payment-cards-container .update-message.success{color:#46b450}.payment-cards-container .update-message.error{color:#dc3232}.vindi-cards-table{border-collapse:collapse;border:1px solid #e5e5e5;width:100%;margin-bottom:15px}.vindi-cards-table th{text-align:left;background:#f9f9f9;border-bottom:1px solid #e5e5e5}.vindi-cards-table td{vertical-align:middle;border-bottom:1px solid #f0f0f0}.vindi-cards-table tr:last-child td{border-bottom:none}.vindi-cards-table .column-select{text-align:center;width:25px}.vindi-cards-table .column-brand{width:25%}.vindi-cards-table input[type=radio]{margin:0}.vindi-card-row:hover{background-color:#f9f9f9}.vindi-card-row.selected-card{background-color:#f0f7ff}#update-payment-profile-button{height:32px;padding:0 12px;line-height:30px}@keyframes loader-spin{to{transform:rotate(360deg)}}1 .wpl-wrap .notice{display:none}.block-editor-block-list__layout{padding:0!important}#wvp-payment-link-btn{margin:0 5px}.vindi-wizard-close-header{z-index:2147483647;position:fixed;top:20px;right:40px}.vindi-wizard-close-btn{color:#fff;cursor:pointer;background:#878787cc;border:none;border-radius:6px;justify-content:center;align-items:center;padding:6px;font-size:12px;transition:all .2s;display:flex}.vindi-wizard-close-btn:hover{background:#4f4f4fe6;transform:scale(1.1)}.wvp-tracking-edit .wvp-tracking-edit-field{margin:10px 0}.wvp-tracking-edit .wvp-tracking-edit-field input{width:100%;margin-top:5px}.wvp-tracking-edit .wvp-tracking-edit-message{display:inherit}.wvp-tracking-edit .wvp-tracking-edit-message span{font-size:12px!important}.wvp-tracking-edit .wvp-tracking-edit-message i{color:red}.wvp-tracking-edit .wvp-tracking-edit-message-hidden{display:none}.wvp-tracking-edit .wvp-tracking-edit-button{height:20px;margin:10px 0}.wvp-tracking-edit .wvp-tracking-edit-button>div{float:right}.wvp-tracking-edit .wvp-tracking-edit-button>div .wvp-tracking{animation:4s linear infinite spin;position:relative;top:5px;right:5px}.wvp-tracking-edit .wvp-tracking-edit-button>div .wvp-tracking-hidden{display:none}@keyframes spin{to{transform:rotate(360deg)}}div.order_data_column:has(#vindi-payment-link){flex-direction:column!important;display:flex!important}#vindi-payment-link{margin:20px 0}#vindi-payment-link div{flex-direction:row;gap:5px;display:flex}#vindi-payment-link div>a{color:#fff;background:#001a9e;border-radius:3px;align-items:center;padding:5px 10px;text-decoration:none;display:flex}#vindi-payment-link div>button{background:0 0;border:1px solid #001a9e;border-radius:3px;align-items:center;display:flex}#vindi-payment-link div>button>img{width:14px}#vindi-payment-link div>button:hover{cursor:pointer}#vindi-payment-link div.disabled{opacity:.3}#vindi-payment-link div.disabled button,#vindi-payment-link div.disabled a,#vindi-payment-link div.disabled img{cursor:default}#vindi-payment-link .messages span{font-size:10px}.vindi-payment-link-context{justify-content:center;align-items:center;display:flex}.vindi-payment-link-context .vindi-payment-link-button{opacity:1;color:#fff;background:#001a9e;border-radius:3px;align-items:center;gap:3px;width:fit-content;min-width:135px;padding:3px 10px;text-decoration:none;display:flex}.vindi-payment-link-context .vindi-payment-link-button:hover{opacity:.8;color:#fff;transition:all .2s}#manual-renewal-form .loader{box-sizing:border-box;border:3px solid #0000;border-color:#bfbfbf #0000 #0000 #bfbfbf;border-radius:50%;width:15px;height:15px;animation:1s linear infinite rotation;display:none;position:relative;top:5px;left:10px}#manual-renewal-form .loader.active{display:inline-block}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.vindi-payment-profile-container{box-sizing:border-box;background:#fff}.vindi-section-title{font-size:14px}.vindi-th{font-size:12px!important;font-weight:400!important}.vindi-no-cards{color:#777;margin-bottom:0;font-style:italic}.payment-cards-container{margin:15px 0 5px}.payment-cards-container .actions{align-items:center;gap:10px;margin-top:15px;display:flex}.payment-cards-container .loader{border:2px solid #0000001a;border-left-color:#0073aa;border-radius:50%;width:20px;height:20px;animation:.8s linear infinite loader-spin;display:inline-block}.payment-cards-container .update-message{padding:5px 0;font-weight:500;display:inline-block}.payment-cards-container .update-message.success{color:#46b450}.payment-cards-container .update-message.error{color:#dc3232}.vindi-cards-table{border-collapse:collapse;border:1px solid #e5e5e5;width:100%;margin-bottom:15px}.vindi-cards-table th{text-align:left;background:#f9f9f9;border-bottom:1px solid #e5e5e5}.vindi-cards-table td{vertical-align:middle;border-bottom:1px solid #f0f0f0}.vindi-cards-table tr:last-child td{border-bottom:none}.vindi-cards-table .column-select{text-align:center;width:25px}.vindi-cards-table .column-brand{width:25%}.vindi-cards-table input[type=radio]{margin:0}.vindi-card-row:hover{background-color:#f9f9f9}.vindi-card-row.selected-card{background-color:#f0f7ff}#update-payment-profile-button{height:32px;padding:0 12px;line-height:30px}@keyframes loader-spin{to{transform:rotate(360deg)}}#vindi-wizard-modal{z-index:99999;scrollbar-width:none;-ms-overflow-style:none;background-color:#fff;width:100%;max-width:none;height:100vh;min-height:100vh;margin:0;overflow:hidden auto;position:fixed!important;top:0!important;left:0!important;right:0!important}#vindi-wizard-modal::-webkit-scrollbar{display:none}#vindi-wizard-container{box-sizing:border-box;background:#fff;min-height:100vh;display:flex;position:relative}#vindi-wizard-container .vindi-wizard-box{border-radius:12px;gap:24px;width:40%;padding:40px 52px;display:flex;position:absolute;top:0;left:0}#vindi-wizard-container #vindi-wizard-login,#vindi-wizard-container #vindi-wizard-register{padding:40px 52px;position:absolute;top:0;left:0}#vindi-wizard-container #vindi-wizard-token{padding:40px 52px}.vindi-wizard-icons{align-items:center;gap:6px;margin-bottom:8px;display:flex}.vindi-wizard-icons img{width:32px}.vindi-wizard-anexo{width:16px!important}.vindi-wizard-close-button{cursor:pointer;color:#666;z-index:1000001;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;font-size:24px;transition:all .3s;display:flex;position:absolute;top:20px;right:20px}.vindi-wizard-close-button:hover{color:#333;background-color:#f0f0f0}.vindi-wizard-icon{height:32px}.vindi-wizard-title{color:#00155b;margin-bottom:24px;font-size:28px;font-weight:700;line-height:1.3}.vindi-wizard-subtitle{color:#666;margin-bottom:32px;font-size:14px}.vindi-wizard-back-btn{color:#666;cursor:pointer;background:#ebebeb;border:none;border-radius:6px;margin-bottom:20px;padding:8px 12px;font-size:14px}.vindi-wizard-back-btn:hover{color:#fff;background:#00103d}.vindi-wizard-btn{color:#fff;cursor:pointer;background-color:#00155b;border:none;border-radius:6px;justify-content:center;align-items:center;padding:10px 28px;font-size:16px;font-weight:500;transition:background-color .3s;display:flex}.vindi-wizard-btn:hover{background-color:#00103d}.vindi-wizard-btn-icon{width:24px;height:24px;margin-left:8px}.vindi-wizard-btn-config{color:#fff;cursor:pointer;background:#00155b;border:none;border-radius:6px;padding:8px 16px;font-size:14px;font-weight:500}.vindi-wizard-btn-config:hover{background:#00103d}.vindi-wizard-btn-login{color:#434343;cursor:pointer;background:#fff;border:1px solid #969696;border-radius:6px;padding:8px 16px;font-size:14px;font-weight:500}.vindi-wizard-btn-login:hover{color:#fff;background:#00155b}.vindi-wizard-continue{color:#fff;cursor:pointer;background:#00155b;border:none;border-radius:8px;margin-top:24px;padding:12px 20px;font-size:14px;font-weight:500}.vindi-wizard-continue:hover{background:#00103d}.vindi-wizard-step-btn{text-decoration:none;transition:background .2s}.vindi-wizard-field{width:100%;margin-bottom:24px}.vindi-wizard-label{color:#2a2a3c;margin-bottom:8px;font-weight:500;display:block}.vindi-wizard-input,.vindi-wizard-select{border:1px solid #e1e1e1!important;border-radius:8px!important;width:100%!important;max-width:100%!important;padding:6px 10px!important;font-size:14px!important}.vindi-wizard-link{color:#00155b;margin-bottom:24px;text-decoration:underline;display:block}.vindi-wizard-options-field{justify-content:space-between;gap:23px;display:flex}.vindi-wizard-terms{margin-top:20px}.vindi-checkbox-wrapper{align-items:flex-start;margin-bottom:12px;display:flex}.vindi-checkbox-wrapper input[type=checkbox]{margin-top:3px;margin-right:10px}.vindi-checkbox-wrapper label{color:#212529;font-size:14px;line-height:1.4}.vindi-checkbox-wrapper a{color:#00155b;text-decoration:underline}.vindi-wizard-side{border-radius:0;position:absolute;top:0;bottom:0;right:0}.vindi-wizard-side img{object-fit:contain;width:100%;height:auto}.vindi-wizard-side.vindi-wizard-box .vindi-wizard-side{width:50%}.vindi-wizard-functionalities{color:#0b0b33;background:0 0;padding:0;font-family:Segoe UI,sans-serif}.vindi-wizard-method{background:#fff;border:1px solid #e5e7eb;border-radius:12px;justify-content:space-between;align-items:center;margin-bottom:16px;padding:16px;display:flex;box-shadow:0 1px 2px #0000000a}.vindi-wizard-method-left{align-items:center;gap:12px;display:flex}.vindi-wizard-method-icon{background:#e2e9ff;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;padding:5px;display:flex}.vindi-wizard-method-icon img{width:70%;height:70%}.vindi-wizard-method-title{color:#111827;font-size:15px;font-weight:600;margin:.5em!important}.vindi-wizard-method-desc{color:#6b7280;font-size:13px;margin:.5em!important}.vindi-wizard-method-header{align-items:center;gap:8px;display:flex}.vindi-wizard-method-header-text{flex-direction:column;align-items:flex-start;display:flex}.vindi-wizard-tag{display:none}.vindi-wizard-tag.active{color:#00155b;background:#e0edff;border-radius:6px;padding:2px 8px;font-size:11px;font-weight:500;display:inline-block}.vindi-wizard-switch{width:42px;height:24px;display:inline-block;position:relative}.vindi-wizard-switch input{opacity:0;width:0;height:0}.vindi-wizard-switch input:checked+.vindi-wizard-slider{background-color:#2563eb}.vindi-wizard-switch input:checked+.vindi-wizard-slider:before{transform:translate(18px)}.vindi-wizard-slider{cursor:pointer;background-color:#d1d5db;border-radius:24px;transition:all .4s;position:absolute;inset:0}.vindi-wizard-slider:before{content:"";background-color:#fff;border-radius:50%;width:18px;height:18px;transition:all .4s;position:absolute;bottom:3px;left:3px}.vindi-wizard-tutorial-card{background:#1f2937;position:relative;overflow:hidden}.vindi-wizard-tutorial-card img{object-fit:cover;width:100%;height:100%}.vindi-wizard-tutorial-content{color:#fff;padding:24px;position:absolute;bottom:0;left:0}.vindi-wizard-tutorial-title{margin-bottom:8px;font-size:16px;font-weight:700}.vindi-wizard-tutorial-container{color:#fff;align-items:center;gap:8px;font-size:16px;font-weight:500;display:flex}.vindi-wizard-success-page{text-align:center;color:#001f3f;box-sizing:border-box;background:#fff;flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:80px 24px;font-family:Segoe UI,sans-serif;display:flex}.vindi-wizard-container-login{max-width:520px}.vindi-wizard-success-icons{justify-content:center;align-items:center;gap:8px;margin-bottom:32px;display:flex}.vindi-wizard-success-title{color:#031252;margin-bottom:16px;font-size:28px;font-weight:700;line-height:1}.vindi-wizard-success-subtitle{color:#666;margin-bottom:32px;font-size:14px;line-height:1.5}.vindi-wizard-success-button{color:#fff;background:#00155b;border-radius:8px;padding:10px 20px;font-weight:500;text-decoration:none;transition:background .2s;display:inline-block}.vindi-wizard-success-button:hover{background:#00103d}.vindi-wizard-content{gap:40px;display:flex}.vindi-wizard-left{flex:1}.vindi-wizard-steps{color:#333;margin-bottom:28px;font-size:14px;line-height:1.8}.vindi-wizard-text{color:#5b5b5b;gap:5px;margin-bottom:8px;display:flex}.vindi-wizard-circle-number{color:#5c81f3;background:#dbe3fc;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;margin-right:8px;display:flex}.vindi-wizard-video{background:#02072e;border-radius:16px;flex:1;min-height:300px;display:flex;position:relative;overflow:hidden}.vindi-wizard-video iframe{border:none;border-radius:16px;width:100%;height:100%;position:absolute;top:0;left:0}@media (width<=1024px){.vindi-wizard-side{display:none}.vindi-wizard-left,#vindi-wizard-login,#vindi-wizard-register{width:100%!important}.vindi-wizard-box{flex-direction:column;gap:0}.vindi-wizard-content{flex-direction:column}#vindi-wizard-container{max-width:100%;padding:24px}}@media (width<=767px){#vindi-wizard-container{padding:16px}#vindi-wizard-login,#vindi-wizard-register{width:100%;padding:20px}.vindi-wizard-title{margin-bottom:16px;font-size:24px}.vindi-wizard-subtitle{margin-bottom:24px;font-size:13px}.vindi-wizard-back-btn{margin-bottom:16px;padding:10px 14px;font-size:13px}.vindi-wizard-continue{width:100%;margin-top:20px;padding:12px 20px;font-size:16px}.vindi-wizard-method{margin-bottom:12px;padding:12px}.vindi-wizard-method-title{font-size:14px}.vindi-wizard-method-desc{font-size:12px}.vindi-wizard-switch{width:35px;height:20px}.vindi-wizard-slider{width:38px;height:20px}.vindi-wizard-slider:before{width:14px;height:14px;bottom:3px;left:3px}.vindi-wizard-switch input:checked+.vindi-wizard-slider:before{transform:translate(14px)}.vindi-wizard-icons{gap:12px;margin-bottom:20px}.vindi-wizard-icons img{width:28px}.vindi-wizard-anexo{width:14px!important}}@media (width<=480px){#vindi-wizard-container{padding:12px}#vindi-wizard-login,#vindi-wizard-register{padding:16px}.vindi-wizard-title{font-size:20px}.vindi-wizard-subtitle{margin-bottom:20px;font-size:12px}.vindi-wizard-method{margin-bottom:10px;padding:10px}.vindi-wizard-method-title{font-size:13px}.vindi-wizard-method-desc{font-size:11px}.vindi-wizard-method-header{flex-direction:column;align-items:flex-start;gap:2px}.vindi-wizard-tag.active{padding:1px 6px;font-size:10px}.vindi-wizard-switch{width:36px;height:20px}.vindi-wizard-continue{padding:10px 16px;font-size:14px}.vindi-wizard-back-btn{padding:8px 12px;font-size:12px}.vindi-wizard-icons{gap:8px}.vindi-wizard-icons img{width:24px}.vindi-wizard-anexo{width:12px!important}}@media (width<=600px){#vindi-wizard-login,#vindi-wizard-container,#vindi-wizard-register{padding:0}.vindi-wizard-continue,.vindi-wizard-back-btn,.vindi-wizard-switch,.vindi-wizard-btn{min-height:44px}.vindi-wizard-method{min-height:60px}.vindi-wizard-input{appearance:none}.vindi-wizard-options-field{flex-direction:column;gap:0}}@media (width<=767px) and (orientation:landscape){.vindi-wizard-method{flex-direction:row;align-items:center}.vindi-wizard-method-left{max-width:75%}.vindi-wizard-switch{align-self:center}#vindi-wizard-container{height:auto;padding:16px}.vindi-wizard-title{font-size:20px}}#vindi-container{background:#fff;max-width:1200px;margin:auto;padding:40px}.vindi-title{color:#111827;margin-bottom:24px;font-size:28px;font-weight:700}.vindi-tabs{border-bottom:1px solid #d9d9d9;margin-bottom:24px;display:flex}.vindi-tab{color:#58524e;cursor:pointer;margin-right:32px;padding-bottom:12px;font-weight:400;text-decoration:none!important}.vindi-tab.active{color:#403833;border-bottom:2px solid #403833;font-weight:500}.vindi-warning-box{background:#ebebeb;border-radius:12px;max-height:450px;padding:24px;display:flex}.vindi-warning-left{width:70%;padding-right:12px}.vindi-warning-text{align-items:flex-start;display:flex}.vindi-warning-icon{margin-right:8px;font-size:24px}.vindi-warning-title{color:#2a2a3c;margin:0;font-size:20px;font-weight:700}.vindi-warning-desc{color:#6b7280;font-size:13px}.vindi-steps{gap:16px;margin-top:32px;display:flex}.vindi-step{background:#fff;border-radius:12px;flex-direction:column;justify-content:space-around;width:100%;padding:20px;display:flex;box-shadow:0 1px 2px #0000000f}.vindi-step-label{color:#6b7280;margin-bottom:8px;font-size:13px}.vindi-step-title{color:#00155b;margin-bottom:40px;font-size:15px;font-weight:700}.vindi-step-btn{cursor:pointer;border:none;border-radius:6px;padding:8px 16px;font-size:14px;font-weight:500;text-decoration:none}.vindi-step.completed{background:#f0f9ff;border:1px solid #bae6fd}.vindi-step.completed .vindi-step-title{color:#075985}.vindi-step.completed .vindi-step-label{color:#0369a1;font-weight:500}.vindi-btn-done{color:#2e7d32;background:#e6f4ea}.vindi-btn-config{color:#04195d;background:#fff;border:1px solid #e7e7e7}.vindi-test-actions{flex-direction:column;gap:8px;display:flex}.vindi-btn-mark-tested{color:#374151;background:#f3f4f6;border:1px solid #d1d5db;padding:6px 12px;font-size:12px}.vindi-btn-mark-tested:hover{background:#e5e7eb;border-color:#9ca3af}.vindi-side{width:30%;padding-left:12px;position:relative}.vindi-tutorial-title{color:#fff;margin-bottom:18px;font-size:22px;font-weight:700}.vindi-tutorial-btn{background:#83838380;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;padding:0;display:inline-flex}.vindi-progress-text{color:#1e1e2f;text-align:end;padding:4px 0;font-size:11px}.vindi-progress-bar{background:#fff;border-radius:2px;width:100px;height:4px;position:relative;overflow:hidden}.vindi-progress-fill{background:#00155b;border-radius:2px;height:100%;transition:width .3s}.vindi-box{border-radius:12px;display:flex}.vindi-box-left{width:50%;padding-right:12px}.vindi-settings-box{max-width:500px}.vindi-btn-save{color:#fff;cursor:pointer;background:#001f3f;border:none;border-radius:6px;margin-bottom:24px;padding:10px 20px;font-weight:600}.vindi-field{margin-bottom:24px}.vindi-label{color:#1f2937;margin-bottom:8px;font-weight:500;display:block}.vindi-input,.vindi-select{border:1px solid #e1e1e1!important;border-radius:8px!important;width:100%!important;max-width:100%!important;padding:6px 10px!important;font-size:14px!important}.vindi-field-desc{color:#6b7280;margin-top:4px;font-size:12px}.vindi-section-title{color:#031252;border-bottom:1px solid #e5e7eb;margin:30px 0 20px;padding-bottom:10px;font-size:18px;font-weight:600}.vindi-btn-authorize{color:#fff;cursor:pointer;background:#4f46e5;border:none;border-radius:4px;margin-top:8px;padding:8px 16px}.vindi-color{min-width:60px;height:36px;padding:0}.vindi-conditional-field{display:none}.vindi-method-header{align-items:center;gap:8px;display:flex}.vindi-method-actions{align-items:center;gap:12px;display:flex}.vindi-tag{color:#2563eb;background:#e0edff;border-radius:6px;padding:2px 8px;font-size:11px;font-weight:500;display:none}.vindi-tag.active{display:inline-block}.vindi-error-message{color:#721c24;background:#f8d7da;border:1px solid #f5c6cb;border-radius:8px;margin-bottom:20px;padding:12px 16px;font-size:14px}@media (width<=1024px){#vindi-container{max-width:100%;padding:24px}.vindi-warning-box{flex-direction:column;max-height:none}.vindi-warning-left{width:100%;margin-bottom:24px;padding-right:0}.vindi-side{width:100%;padding-left:0}.vindi-tutorial-card{height:200px}.vindi-steps{flex-wrap:wrap;gap:12px}.vindi-step{min-height:160px}.vindi-box-left{width:100%}.vindi-settings-box{max-width:100%}.vindi-method{flex-direction:column;align-items:flex-start;gap:12px}.vindi-method-actions{justify-content:space-between;width:100%}}@media (width<=767px){#vindi-container{padding:16px}.vindi-title{margin-bottom:16px;font-size:24px}.vindi-tabs{white-space:nowrap;scrollbar-width:none;-ms-overflow-style:none;overflow-x:auto}.vindi-tabs::-webkit-scrollbar{display:none}.vindi-tab{flex-shrink:0;margin-right:24px;font-size:14px}.vindi-warning-box{padding:16px}.vindi-warning-text{flex-direction:column}.vindi-warning-icon{margin-bottom:8px;margin-right:0;font-size:20px}.vindi-warning-title{font-size:18px}.vindi-steps{gap:12px;margin-top:24px}.vindi-step{width:100%;min-height:auto;padding:16px}.vindi-step-title{margin-bottom:16px;font-size:14px}.vindi-tutorial-title{margin-bottom:12px;font-size:18px}.vindi-tutorial-container{font-size:14px}.vindi-progress-bar{width:80px}.vindi-section-title{margin:24px 0 16px;font-size:16px}.vindi-btn-save{width:100%;padding:12px 20px;font-size:16px}.vindi-toggle-item{padding:12px}.vindi-toggle-title{font-size:14px}.vindi-toggle-desc{font-size:11px}.vindi-input,.vindi-select{padding:10px 12px!important;font-size:16px!important}.vindi-btn-authorize{width:100%;margin-top:12px;padding:10px 16px}.vindi-color{min-width:80px;height:44px}.vindi-method{padding:12px}.vindi-method-left{gap:10px}.vindi-method-icon{width:28px;height:28px}.vindi-method-title{font-size:14px}.vindi-method-desc{font-size:12px}.vindi-step-btn{padding:6px 12px;font-size:13px}.vindi-tag.active{padding:2px 6px;font-size:10px}.vindi-slider{width:38px;height:20px}.vindi-slider:before{width:14px;height:14px;bottom:3px;left:3px}.vindi-switch input:checked+.vindi-slider:before{transform:translate(14px)}}@media (width<=480px){#vindi-container{padding:12px}.vindi-title{font-size:20px}.vindi-tab{margin-right:16px;padding-bottom:8px;font-size:13px}.vindi-warning-box{padding:12px}.vindi-warning-title{font-size:16px}.vindi-warning-desc{font-size:12px}.vindi-step{padding:12px}.vindi-step-title{margin-bottom:12px;font-size:13px}.vindi-step-btn{padding:6px 12px;font-size:13px}.vindi-tutorial-card{height:160px}.vindi-tutorial-content{padding:16px}.vindi-tutorial-title{margin-bottom:10px;font-size:16px}.vindi-tutorial-container{font-size:13px}.vindi-tutorial-btn{width:28px;height:28px}.vindi-progress-text{font-size:10px}.vindi-progress-bar{width:60px;height:3px}.vindi-section-title{margin:20px 0 12px;font-size:14px}.vindi-field{margin-bottom:16px}.vindi-label{margin-bottom:6px;font-size:13px}.vindi-toggle-item{margin-bottom:12px;padding:10px}.vindi-toggle-title{font-size:13px}.vindi-toggle-desc,.vindi-field-desc{font-size:10px}.vindi-switch{width:36px;height:20px}.vindi-btn-save{padding:10px 16px;font-size:14px}.vindi-btn-authorize{padding:8px 12px;font-size:14px}.vindi-color{min-width:70px;height:40px}.vindi-method{margin-bottom:12px;padding:10px}.vindi-method-left{gap:8px}.vindi-method-icon{width:24px;height:24px;padding:4px}.vindi-method-title{font-size:13px}.vindi-method-desc{font-size:11px}.vindi-tag.active{padding:1px 5px;font-size:9px}}@media (width<=600px){.vindi-warning-text>div{max-width:100%!important}.vindi-input,.vindi-select{appearance:none}.vindi-select{background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6,9 12,15 18,9'%3e%3c/polyline%3e%3c/svg%3e");background-position:right 12px center;background-repeat:no-repeat;background-size:16px;padding-right:40px!important}.vindi-btn-save,.vindi-btn-authorize,.vindi-switch{min-height:44px}.vindi-toggle-item,.vindi-method{min-height:60px}.vindi-method-actions{gap:8px}}@media (width<=767px) and (orientation:landscape){.vindi-toggle-item{flex-direction:row;align-items:center}.vindi-toggle-texts{max-width:75%}.vindi-switch{align-self:center}.vindi-method{flex-direction:row;align-items:center}.vindi-method-actions{width:auto}}@media (width<=360px){#vindi-container{padding:8px}.vindi-title{font-size:18px}.vindi-tab{margin-right:12px;font-size:12px}.vindi-method{padding:8px}.vindi-method-icon{width:20px;height:20px;padding:3px}.vindi-method-title{font-size:12px}.vindi-method-desc{font-size:10px}.vindi-step-btn{padding:4px 8px;font-size:11px}.vindi-tag.active{padding:1px 4px;font-size:8px}.vindi-btn-save{padding:8px 12px;font-size:13px}.vindi-label{font-size:12px}.vindi-input{padding:6px 8px!important;font-size:13px!important}}.vindi-switch{width:42px;height:24px;display:inline-block;position:relative}.vindi-switch input{opacity:0;width:0;height:0}.vindi-switch .vindi-slider{cursor:pointer;background-color:#d1d5db;border-radius:24px;transition:all .3s;position:absolute;inset:0}.vindi-switch .vindi-slider:before{content:"";background-color:#fff;border-radius:50%;width:18px;height:18px;transition:all .3s;position:absolute;bottom:3px;left:3px;box-shadow:0 1px 2px #0003}.vindi-switch input:checked+.vindi-slider{background-color:#2563eb}.vindi-switch input:checked+.vindi-slider:before{transform:translate(18px)}.vindi-toggle-item{background:#fff;border:1px solid #e5e7eb;border-radius:12px;justify-content:space-between;align-items:center;margin-bottom:16px;padding:16px;display:flex;box-shadow:0 1px 2px #0000000a}.vindi-toggle-texts{max-width:75%}.vindi-toggle-title{color:#111827;font-weight:600;margin:.5em!important}.vindi-toggle-desc{color:#6b7280;font-size:12px;margin:.5em!important}.vindi-method{background:#fff;border:1px solid #e5e7eb;border-radius:12px;justify-content:space-between;align-items:center;margin-bottom:16px;padding:16px;display:flex;box-shadow:0 1px 2px #0000000a}.vindi-method-left{align-items:center;gap:12px;display:flex}.vindi-method-icon{background:#e2e9ff;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;padding:5px;display:flex}.vindi-method-icon img{width:70%;height:70%}.vindi-method-title{color:#111827;font-size:15px;font-weight:600;margin:.5em!important}.vindi-method-desc{color:#6b7280;font-size:13px;margin:.5em!important}#vindi-container{background:#fff;max-width:1200px;margin:auto;font-family:Segoe UI,sans-serif}.vindi-box{border-radius:12px;gap:24px;display:flex}.vindi-box-left{width:50%}.vindi-side{width:50%;position:relative}.vindi-tutorial-card{background:#1f2937;border-radius:12px;height:100%;position:relative;overflow:hidden}.vindi-tutorial-card img{object-fit:cover;width:100%;height:100%}.vindi-tutorial-content{color:#fff;padding:24px;position:absolute;bottom:0;left:0}.vindi-tutorial-title{margin-bottom:8px;font-size:18px;font-weight:700}.vindi-tutorial-container{color:#fff;align-items:center;gap:8px;font-size:16px;font-weight:500;display:flex}.credit-config{color:#0b0b33;padding:0 20px;font-family:Segoe UI,sans-serif}.vindi-back-btn{color:#666;cursor:pointer;background:#ebebeb;border:none;border-radius:6px;margin-bottom:20px;padding:8px 12px;font-size:14px;transition:background-color .2s}.vindi-back-btn:hover{background:#d4d4d4}.title{color:#1f2937;margin-bottom:24px;font-size:28px;font-weight:700;line-height:1.4}.vindi-method-icon{background:#e2e9ff}.form-label{color:#374151;margin-bottom:6px;font-size:14px;font-weight:500;display:block}.vindi-input{resize:vertical;max-width:600px;max-height:150px;transition:border-color .2s;color:#374151!important;border:1px solid #d1d5db!important;border-radius:8px!important;width:100%!important;padding:10px 12px!important;font-size:14px!important}.vindi-input:focus{outline:none;box-shadow:0 0 0 3px #2563eb1a;border-color:#2563eb!important}.vindi-input[type=textarea],textarea .vindi-input{min-height:80px;font-family:inherit}.vindi-mb{margin-bottom:22px}.btn-primary{color:#fff;cursor:pointer;background:#00155b;border:none;border-radius:8px;width:100%;padding:12px 24px;font-size:14px;font-weight:500;transition:background-color .2s}.btn-primary:hover{background:#1d4ed8}.vindi-success-message{color:#155724;background:#d4edda;border:1px solid #c3e6cb;border-radius:8px;margin-bottom:20px;padding:12px 16px;font-size:14px}.vindi-alert{border-radius:8px;margin-bottom:16px;padding:12px 16px;font-size:14px}.vindi-alert-warning{color:#856404;background-color:#fff3cd;border:1px solid #ffeaa7}.vindi-methods-section{background:#f9fafb;border:1px solid #d9d9d9;border-radius:12px;margin-top:8px;padding:20px}.vindi-section-title{color:#111827;margin-bottom:8px;font-size:16px;font-weight:600}.vindi-section-desc{color:#6b7280;margin-bottom:16px;font-size:14px}.vindi-discount-fields{opacity:1;background:#f8f9fa;border:1px solid #e9ecef;border-radius:12px;max-height:1000px;margin-bottom:20px;padding:20px;transition:all .3s;overflow:hidden}.vindi-discount-fields.hidden{opacity:0;max-height:0;margin-bottom:0;padding:0 20px}.vindi-discount-title{color:#111827;margin-bottom:12px;font-weight:600}.vindi-min-amount-fields{opacity:1;background:#f8f9fa;border:1px solid #e9ecef;border-radius:12px;max-height:1000px;margin-bottom:20px;padding:20px;transition:all .3s;overflow:hidden}.vindi-min-amount-fields.hidden{opacity:0;max-height:0;margin-bottom:0;padding:0 20px}.vindi-checkbox-group{flex-wrap:wrap;gap:12px;margin-top:8px;display:flex}.vindi-checkbox-item{cursor:pointer;background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;align-items:center;padding:8px 12px;transition:all .2s;display:flex}.vindi-checkbox-item:hover{background:#e9ecef}.vindi-checkbox-item input[type=checkbox]{margin-right:8px}.vindi-checkbox-text{color:#495057;font-size:14px}@media (width<=1024px){.vindi-side{display:none}.vindi-box-left{width:100%;padding:0}.vindi-box{flex-direction:column;gap:0}#vindi-container{max-width:100%;padding:24px}.credit-config{padding:0}}@media (width<=767px){#vindi-container{padding:16px}.title{margin-bottom:20px;font-size:24px}.vindi-back-btn{margin-bottom:16px;padding:10px 14px;font-size:13px}.vindi-method,.vindi-toggle-item{margin-bottom:12px;padding:12px}.vindi-method-title,.vindi-toggle-title{font-size:14px}.vindi-method-desc,.vindi-toggle-desc{font-size:12px}.form-label{margin-bottom:5px;font-size:13px}.vindi-input{padding:10px 12px!important;font-size:16px!important}.vindi-mb{margin-bottom:18px}.btn-primary{margin-top:8px;padding:14px 20px;font-size:16px}.vindi-discount-fields,.vindi-methods-section{padding:16px}}@media (width<=480px){#vindi-container{padding:12px}.title{margin-bottom:16px;font-size:20px}.vindi-back-btn{padding:8px 12px;font-size:12px}.vindi-method,.vindi-toggle-item{margin-bottom:10px;padding:10px}.vindi-toggle-texts{max-width:70%}.vindi-discount-fields,.vindi-methods-section{padding:12px}}@media (width<=600px){.btn-primary,.vindi-back-btn,.vindi-switch{min-height:44px}.vindi-method,.vindi-toggle-item{min-height:60px}.vindi-input{min-height:44px}} 2 2 /*# sourceMappingURL=index.css.map */ -
vindi-pagamentos/trunk/dist/styles/admin/index.css.map
r3344656 r3356741 1 {"mappings":"ACAA,+BAIA,qDAIA,mC CPE,0DAEE,4EAMF,8DAEE,4EAGA,0DAIA,kEAKF,uEAGE,6DAEE,qIAME,mFAON,6CAQF,sGAKA,kCAGE,gEAKE,gJAUA,yHAOE,8CAIA,oDAKF,4CAEE,+HASF,kDAKJ,mFAIE,iOAaE,sGCvHF,mPAcE,yDAKF,wEAUF,uEAKA,oCAIA,6DAKA,6DAMA,2CAGE,2FAOA,8LAUA,4FAKE,+DAIA,6DAMJ,mGAME,yFAMA,4EAKA,uDAIA,+DAKA,2CAIA,8CAMA,+CAIA,uDAKF,2EAMA","sources":["styles/admin/index.css","assets/styles/admin/index.scss","assets/styles/admin/orders/index.scss","assets/styles/admin/subscriptions/index.scss"],"sourcesContent":[".wpl-wrap .notice {\n display: none;\n}\n\n.block-editor-block-list__layout {\n padding: 0 !important;\n}\n\n#wvp-payment-link-btn {\n margin: 0 5px;\n}\n\n.wvp-tracking-edit .wvp-tracking-edit-field {\n margin: 10px 0;\n}\n\n.wvp-tracking-edit .wvp-tracking-edit-field input {\n width: 100%;\n margin-top: 5px;\n}\n\n.wvp-tracking-edit .wvp-tracking-edit-message {\n display: inherit;\n}\n\n.wvp-tracking-edit .wvp-tracking-edit-message span {\n font-size: 12px !important;\n}\n\n.wvp-tracking-edit .wvp-tracking-edit-message i {\n color: red;\n}\n\n.wvp-tracking-edit .wvp-tracking-edit-message-hidden {\n display: none;\n}\n\n.wvp-tracking-edit .wvp-tracking-edit-button {\n height: 20px;\n margin: 10px 0;\n}\n\n.wvp-tracking-edit .wvp-tracking-edit-button > div {\n float: right;\n}\n\n.wvp-tracking-edit .wvp-tracking-edit-button > div .wvp-tracking {\n animation: 4s linear infinite spin;\n position: relative;\n top: 5px;\n right: 5px;\n}\n\n.wvp-tracking-edit .wvp-tracking-edit-button > div .wvp-tracking-hidden {\n display: none;\n}\n\n@keyframes spin {\n 100% {\n transform: rotate(360deg);\n }\n}\n\ndiv.order_data_column:has(#vindi-payment-link) {\n flex-direction: column !important;\n display: flex !important;\n}\n\n#vindi-payment-link {\n margin: 20px 0;\n}\n\n#vindi-payment-link div {\n flex-direction: row;\n gap: 5px;\n display: flex;\n}\n\n#vindi-payment-link div > a {\n color: #fff;\n background: #001a9e;\n border-radius: 3px;\n align-items: center;\n padding: 5px 10px;\n text-decoration: none;\n display: flex;\n}\n\n#vindi-payment-link div > button {\n background: none;\n border: 1px solid #001a9e;\n border-radius: 3px;\n align-items: center;\n display: flex;\n}\n\n#vindi-payment-link div > button > img {\n width: 14px;\n}\n\n#vindi-payment-link div > button:hover {\n cursor: pointer;\n}\n\n#vindi-payment-link div.disabled {\n opacity: .3;\n}\n\n#vindi-payment-link div.disabled button, #vindi-payment-link div.disabled a, #vindi-payment-link div.disabled img {\n cursor: default;\n}\n\n#vindi-payment-link .messages span {\n font-size: 10px;\n}\n\n.vindi-payment-link-context {\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.vindi-payment-link-context .vindi-payment-link-button {\n opacity: 1;\n color: #fff;\n background: #001a9e;\n border-radius: 3px;\n align-items: center;\n gap: 3px;\n width: fit-content;\n min-width: 135px;\n padding: 3px 10px;\n text-decoration: none;\n display: flex;\n}\n\n.vindi-payment-link-context .vindi-payment-link-button:hover {\n opacity: .8;\n color: #fff;\n transition: all .2s;\n}\n\n#manual-renewal-form .loader {\n box-sizing: border-box;\n border: 3px solid #0000;\n border-color: #bfbfbf #0000 #0000 #bfbfbf;\n border-radius: 50%;\n width: 15px;\n height: 15px;\n animation: 1s linear infinite rotation;\n display: none;\n position: relative;\n top: 5px;\n left: 10px;\n}\n\n#manual-renewal-form .loader.active {\n display: inline-block;\n}\n\n@keyframes rotation {\n 0% {\n transform: rotate(0);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.vindi-payment-profile-container {\n box-sizing: border-box;\n background: #fff;\n}\n\n.vindi-section-title {\n font-size: 14px;\n}\n\n.vindi-th {\n font-size: 12px !important;\n font-weight: 400 !important;\n}\n\n.vindi-no-cards {\n color: #777;\n margin-bottom: 0;\n font-style: italic;\n}\n\n.payment-cards-container {\n margin: 15px 0 5px;\n}\n\n.payment-cards-container .actions {\n align-items: center;\n gap: 10px;\n margin-top: 15px;\n display: flex;\n}\n\n.payment-cards-container .loader {\n border: 2px solid #0000001a;\n border-left-color: #0073aa;\n border-radius: 50%;\n width: 20px;\n height: 20px;\n animation: .8s linear infinite loader-spin;\n display: inline-block;\n}\n\n.payment-cards-container .update-message {\n padding: 5px 0;\n font-weight: 500;\n display: inline-block;\n}\n\n.payment-cards-container .update-message.success {\n color: #46b450;\n}\n\n.payment-cards-container .update-message.error {\n color: #dc3232;\n}\n\n.vindi-cards-table {\n border-collapse: collapse;\n border: 1px solid #e5e5e5;\n width: 100%;\n margin-bottom: 15px;\n}\n\n.vindi-cards-table th {\n text-align: left;\n background: #f9f9f9;\n border-bottom: 1px solid #e5e5e5;\n}\n\n.vindi-cards-table td {\n vertical-align: middle;\n border-bottom: 1px solid #f0f0f0;\n}\n\n.vindi-cards-table tr:last-child td {\n border-bottom: none;\n}\n\n.vindi-cards-table .column-select {\n text-align: center;\n width: 25px;\n}\n\n.vindi-cards-table .column-brand {\n width: 25%;\n}\n\n.vindi-cards-table input[type=\"radio\"] {\n margin: 0;\n}\n\n.vindi-card-row:hover {\n background-color: #f9f9f9;\n}\n\n.vindi-card-row.selected-card {\n background-color: #f0f7ff;\n}\n\n#update-payment-profile-button {\n height: 32px;\n padding: 0 12px;\n line-height: 30px;\n}\n\n@keyframes loader-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n/*# sourceMappingURL=index.css.map */\n",".wpl-wrap .notice {\n display: none;\n}\n\n.block-editor-block-list__layout {\n padding: 0 !important;\n}\n\n#wvp-payment-link-btn {\n margin: 0 5px;\n}\n\n// Import admin files\n@import \"./orders/index.scss\";\n@import \"./subscriptions/index.scss\";\n",".wvp-tracking-edit {\n .wvp-tracking-edit-field {\n margin: 10px 0 10px 0;\n input {\n margin-top: 5px;\n width: 100%;\n }\n }\n\n .wvp-tracking-edit-message {\n display: inherit;\n span {\n font-size: 12px !important;\n }\n i {\n color: red;\n }\n\n &-hidden {\n display: none;\n }\n }\n\n .wvp-tracking-edit-button {\n height: 20px;\n margin: 10px 0;\n > div {\n float: right;\n .wvp-tracking {\n animation: spin 4s linear infinite;\n position: relative;\n top: 5px;\n right: 5px;\n\n &-hidden {\n display: none;\n }\n }\n }\n }\n\n @keyframes spin {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n }\n}\n\ndiv.order_data_column:has(#vindi-payment-link) {\n display: flex !important;\n flex-direction: column !important;\n}\n\n#vindi-payment-link {\n margin: 20px 0;\n\n div {\n display: flex;\n flex-direction: row;\n gap: 5px;\n\n > a {\n padding: 5px 10px;\n background: #001a9e;\n border-radius: 3px;\n color: #ffff;\n text-decoration: none;\n display: flex;\n align-items: center;\n }\n\n > button {\n border-radius: 3px;\n border: 1px solid #001a9e;\n background: transparent;\n display: flex;\n align-items: center;\n\n > img {\n width: 14px;\n }\n\n &:hover {\n cursor: pointer;\n }\n }\n\n &.disabled {\n opacity: 30%;\n button,\n a,\n img {\n cursor: default;\n }\n }\n }\n\n .messages {\n span {\n font-size: 10px;\n }\n }\n}\n.vindi-payment-link-context {\n display: flex;\n align-items: center;\n justify-content: center;\n .vindi-payment-link-button {\n opacity: 1;\n color: #fff;\n background: #001a9e;\n border-radius: 3px;\n align-items: center;\n gap: 3px;\n min-width: 135px;\n width: fit-content;\n padding: 3px 10px;\n text-decoration: none;\n display: flex;\n\n &:hover {\n opacity: 80%;\n transition: 0.2s;\n color: #fff;\n }\n }\n}\n","\n#manual-renewal-form {\n .loader {\n box-sizing: border-box;\n border: 3px solid transparent;\n border-top-color: #bfbfbf;\n border-left-color: #bfbfbf;\n border-radius: 50%;\n width: 15px;\n height: 15px;\n animation: 1s linear infinite rotation;\n display: none;\n position: relative;\n top: 5px;\n left: 10px;\n\n &.active {\n display: inline-block;\n }\n }\n\n @keyframes rotation {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n}\n\n.vindi-payment-profile-container {\n background: #fff;\n box-sizing: border-box;\n}\n\n.vindi-section-title {\n font-size: 14px;\n}\n\n.vindi-th {\n font-size: 12px !important;\n font-weight: 400 !important;\n}\n\n.vindi-no-cards {\n color: #777;\n font-style: italic;\n margin-bottom: 0;\n}\n\n.payment-cards-container {\n margin: 15px 0 5px;\n\n .actions {\n margin-top: 15px;\n display: flex;\n align-items: center;\n gap: 10px;\n }\n\n .loader {\n display: inline-block;\n width: 20px;\n height: 20px;\n border: 2px solid rgba(0, 0, 0, 0.1);\n border-left-color: #0073aa;\n border-radius: 50%;\n animation: loader-spin 0.8s infinite linear;\n }\n\n .update-message {\n display: inline-block;\n padding: 5px 0;\n font-weight: 500;\n\n &.success {\n color: #46b450;\n }\n\n &.error {\n color: #dc3232;\n }\n }\n}\n\n.vindi-cards-table {\n border-collapse: collapse;\n margin-bottom: 15px;\n width: 100%;\n border: 1px solid #e5e5e5;\n\n th {\n background: #f9f9f9;\n text-align: left;\n border-bottom: 1px solid #e5e5e5;\n }\n\n td {\n vertical-align: middle;\n border-bottom: 1px solid #f0f0f0;\n }\n\n tr:last-child td {\n border-bottom: none;\n }\n\n .column-select {\n width: 25px;\n text-align: center;\n }\n\n .column-brand {\n width: 25%;\n }\n\n input[type=radio] {\n margin: 0;\n }\n}\n\n.vindi-card-row {\n &:hover {\n background-color: #f9f9f9;\n }\n\n &.selected-card {\n background-color: #f0f7ff;\n }\n}\n\n#update-payment-profile-button {\n height: 32px;\n line-height: 30px;\n padding: 0 12px;\n}\n\n@keyframes loader-spin {\n to {\n transform: rotate(360deg);\n }\n}"],"names":[],"version":3,"file":"index.css.map"}1 {"mappings":"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","sources":["styles/admin/index.css","assets/styles/admin/index.scss","assets/styles/admin/orders/index.scss","assets/styles/admin/subscriptions/index.scss","assets/styles/admin/wizard/index.scss","assets/styles/admin/common/_shared.scss","assets/styles/admin/onboarding/index.scss","assets/styles/admin/payment-config/index.scss"],"sourcesContent":[".wpl-wrap .notice {\n display: none;\n}\n\n.block-editor-block-list__layout {\n padding: 0 !important;\n}\n\n#wvp-payment-link-btn {\n margin: 0 5px;\n}\n\n.vindi-wizard-close-header {\n z-index: 2147483647;\n position: fixed;\n top: 20px;\n right: 40px;\n}\n\n.vindi-wizard-close-btn {\n color: #fff;\n cursor: pointer;\n background: #878787cc;\n border: none;\n border-radius: 6px;\n justify-content: center;\n align-items: center;\n padding: 6px;\n font-size: 12px;\n transition: all .2s;\n display: flex;\n}\n\n.vindi-wizard-close-btn:hover {\n background: #4f4f4fe6;\n transform: scale(1.1);\n}\n\n.wvp-tracking-edit .wvp-tracking-edit-field {\n margin: 10px 0;\n}\n\n.wvp-tracking-edit .wvp-tracking-edit-field input {\n width: 100%;\n margin-top: 5px;\n}\n\n.wvp-tracking-edit .wvp-tracking-edit-message {\n display: inherit;\n}\n\n.wvp-tracking-edit .wvp-tracking-edit-message span {\n font-size: 12px !important;\n}\n\n.wvp-tracking-edit .wvp-tracking-edit-message i {\n color: red;\n}\n\n.wvp-tracking-edit .wvp-tracking-edit-message-hidden {\n display: none;\n}\n\n.wvp-tracking-edit .wvp-tracking-edit-button {\n height: 20px;\n margin: 10px 0;\n}\n\n.wvp-tracking-edit .wvp-tracking-edit-button > div {\n float: right;\n}\n\n.wvp-tracking-edit .wvp-tracking-edit-button > div .wvp-tracking {\n animation: 4s linear infinite spin;\n position: relative;\n top: 5px;\n right: 5px;\n}\n\n.wvp-tracking-edit .wvp-tracking-edit-button > div .wvp-tracking-hidden {\n display: none;\n}\n\n@keyframes spin {\n 100% {\n transform: rotate(360deg);\n }\n}\n\ndiv.order_data_column:has(#vindi-payment-link) {\n flex-direction: column !important;\n display: flex !important;\n}\n\n#vindi-payment-link {\n margin: 20px 0;\n}\n\n#vindi-payment-link div {\n flex-direction: row;\n gap: 5px;\n display: flex;\n}\n\n#vindi-payment-link div > a {\n color: #fff;\n background: #001a9e;\n border-radius: 3px;\n align-items: center;\n padding: 5px 10px;\n text-decoration: none;\n display: flex;\n}\n\n#vindi-payment-link div > button {\n background: none;\n border: 1px solid #001a9e;\n border-radius: 3px;\n align-items: center;\n display: flex;\n}\n\n#vindi-payment-link div > button > img {\n width: 14px;\n}\n\n#vindi-payment-link div > button:hover {\n cursor: pointer;\n}\n\n#vindi-payment-link div.disabled {\n opacity: .3;\n}\n\n#vindi-payment-link div.disabled button, #vindi-payment-link div.disabled a, #vindi-payment-link div.disabled img {\n cursor: default;\n}\n\n#vindi-payment-link .messages span {\n font-size: 10px;\n}\n\n.vindi-payment-link-context {\n justify-content: center;\n align-items: center;\n display: flex;\n}\n\n.vindi-payment-link-context .vindi-payment-link-button {\n opacity: 1;\n color: #fff;\n background: #001a9e;\n border-radius: 3px;\n align-items: center;\n gap: 3px;\n width: fit-content;\n min-width: 135px;\n padding: 3px 10px;\n text-decoration: none;\n display: flex;\n}\n\n.vindi-payment-link-context .vindi-payment-link-button:hover {\n opacity: .8;\n color: #fff;\n transition: all .2s;\n}\n\n#manual-renewal-form .loader {\n box-sizing: border-box;\n border: 3px solid #0000;\n border-color: #bfbfbf #0000 #0000 #bfbfbf;\n border-radius: 50%;\n width: 15px;\n height: 15px;\n animation: 1s linear infinite rotation;\n display: none;\n position: relative;\n top: 5px;\n left: 10px;\n}\n\n#manual-renewal-form .loader.active {\n display: inline-block;\n}\n\n@keyframes rotation {\n 0% {\n transform: rotate(0);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.vindi-payment-profile-container {\n box-sizing: border-box;\n background: #fff;\n}\n\n.vindi-section-title {\n font-size: 14px;\n}\n\n.vindi-th {\n font-size: 12px !important;\n font-weight: 400 !important;\n}\n\n.vindi-no-cards {\n color: #777;\n margin-bottom: 0;\n font-style: italic;\n}\n\n.payment-cards-container {\n margin: 15px 0 5px;\n}\n\n.payment-cards-container .actions {\n align-items: center;\n gap: 10px;\n margin-top: 15px;\n display: flex;\n}\n\n.payment-cards-container .loader {\n border: 2px solid #0000001a;\n border-left-color: #0073aa;\n border-radius: 50%;\n width: 20px;\n height: 20px;\n animation: .8s linear infinite loader-spin;\n display: inline-block;\n}\n\n.payment-cards-container .update-message {\n padding: 5px 0;\n font-weight: 500;\n display: inline-block;\n}\n\n.payment-cards-container .update-message.success {\n color: #46b450;\n}\n\n.payment-cards-container .update-message.error {\n color: #dc3232;\n}\n\n.vindi-cards-table {\n border-collapse: collapse;\n border: 1px solid #e5e5e5;\n width: 100%;\n margin-bottom: 15px;\n}\n\n.vindi-cards-table th {\n text-align: left;\n background: #f9f9f9;\n border-bottom: 1px solid #e5e5e5;\n}\n\n.vindi-cards-table td {\n vertical-align: middle;\n border-bottom: 1px solid #f0f0f0;\n}\n\n.vindi-cards-table tr:last-child td {\n border-bottom: none;\n}\n\n.vindi-cards-table .column-select {\n text-align: center;\n width: 25px;\n}\n\n.vindi-cards-table .column-brand {\n width: 25%;\n}\n\n.vindi-cards-table input[type=\"radio\"] {\n margin: 0;\n}\n\n.vindi-card-row:hover {\n background-color: #f9f9f9;\n}\n\n.vindi-card-row.selected-card {\n background-color: #f0f7ff;\n}\n\n#update-payment-profile-button {\n height: 32px;\n padding: 0 12px;\n line-height: 30px;\n}\n\n@keyframes loader-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n#vindi-wizard-modal {\n z-index: 99999;\n scrollbar-width: none;\n -ms-overflow-style: none;\n background-color: #fff;\n width: 100%;\n max-width: none;\n height: 100vh;\n min-height: 100vh;\n margin: 0;\n overflow: hidden auto;\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n right: 0 !important;\n}\n\n#vindi-wizard-modal::-webkit-scrollbar {\n display: none;\n}\n\n#vindi-wizard-container {\n box-sizing: border-box;\n background: #fff;\n min-height: 100vh;\n display: flex;\n position: relative;\n}\n\n#vindi-wizard-container .vindi-wizard-box {\n border-radius: 12px;\n gap: 24px;\n width: 40%;\n padding: 40px 52px;\n display: flex;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n#vindi-wizard-container #vindi-wizard-login, #vindi-wizard-container #vindi-wizard-register {\n padding: 40px 52px;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n#vindi-wizard-container #vindi-wizard-token {\n padding: 40px 52px;\n}\n\n.vindi-wizard-icons {\n align-items: center;\n gap: 6px;\n margin-bottom: 8px;\n display: flex;\n}\n\n.vindi-wizard-icons img {\n width: 32px;\n}\n\n.vindi-wizard-anexo {\n width: 16px !important;\n}\n\n.vindi-wizard-close-button {\n cursor: pointer;\n color: #666;\n z-index: 1000001;\n background: none;\n border: none;\n border-radius: 50%;\n justify-content: center;\n align-items: center;\n width: 40px;\n height: 40px;\n font-size: 24px;\n transition: all .3s;\n display: flex;\n position: absolute;\n top: 20px;\n right: 20px;\n}\n\n.vindi-wizard-close-button:hover {\n color: #333;\n background-color: #f0f0f0;\n}\n\n.vindi-wizard-icon {\n height: 32px;\n}\n\n.vindi-wizard-title {\n color: #00155b;\n margin-bottom: 24px;\n font-size: 28px;\n font-weight: bold;\n line-height: 1.3;\n}\n\n.vindi-wizard-subtitle {\n color: #666;\n margin-bottom: 32px;\n font-size: 14px;\n}\n\n.vindi-wizard-back-btn {\n color: #666;\n cursor: pointer;\n background: #ebebeb;\n border: none;\n border-radius: 6px;\n margin-bottom: 20px;\n padding: 8px 12px;\n font-size: 14px;\n}\n\n.vindi-wizard-back-btn:hover {\n color: #fff;\n background: #00103d;\n}\n\n.vindi-wizard-btn {\n color: #fff;\n cursor: pointer;\n background-color: #00155b;\n border: none;\n border-radius: 6px;\n justify-content: center;\n align-items: center;\n padding: 10px 28px;\n font-size: 16px;\n font-weight: 500;\n transition: background-color .3s;\n display: flex;\n}\n\n.vindi-wizard-btn:hover {\n background-color: #00103d;\n}\n\n.vindi-wizard-btn-icon {\n width: 24px;\n height: 24px;\n margin-left: 8px;\n}\n\n.vindi-wizard-btn-config {\n color: #fff;\n cursor: pointer;\n background: #00155b;\n border: none;\n border-radius: 6px;\n padding: 8px 16px;\n font-size: 14px;\n font-weight: 500;\n}\n\n.vindi-wizard-btn-config:hover {\n background: #00103d;\n}\n\n.vindi-wizard-btn-login {\n color: #434343;\n cursor: pointer;\n background: #fff;\n border: 1px solid #969696;\n border-radius: 6px;\n padding: 8px 16px;\n font-size: 14px;\n font-weight: 500;\n}\n\n.vindi-wizard-btn-login:hover {\n color: #fff;\n background: #00155b;\n}\n\n.vindi-wizard-continue {\n color: #fff;\n cursor: pointer;\n background: #00155b;\n border: none;\n border-radius: 8px;\n margin-top: 24px;\n padding: 12px 20px;\n font-size: 14px;\n font-weight: 500;\n}\n\n.vindi-wizard-continue:hover {\n background: #00103d;\n}\n\n.vindi-wizard-step-btn {\n text-decoration: none;\n transition: background .2s;\n}\n\n.vindi-wizard-field {\n width: 100%;\n margin-bottom: 24px;\n}\n\n.vindi-wizard-label {\n color: #2a2a3c;\n margin-bottom: 8px;\n font-weight: 500;\n display: block;\n}\n\n.vindi-wizard-input, .vindi-wizard-select {\n border: 1px solid #e1e1e1 !important;\n border-radius: 8px !important;\n width: 100% !important;\n max-width: 100% !important;\n padding: 6px 10px !important;\n font-size: 14px !important;\n}\n\n.vindi-wizard-link {\n color: #00155b;\n margin-bottom: 24px;\n text-decoration: underline;\n display: block;\n}\n\n.vindi-wizard-options-field {\n justify-content: space-between;\n gap: 23px;\n display: flex;\n}\n\n.vindi-wizard-terms {\n margin-top: 20px;\n}\n\n.vindi-checkbox-wrapper {\n align-items: flex-start;\n margin-bottom: 12px;\n display: flex;\n}\n\n.vindi-checkbox-wrapper input[type=\"checkbox\"] {\n margin-top: 3px;\n margin-right: 10px;\n}\n\n.vindi-checkbox-wrapper label {\n color: #212529;\n font-size: 14px;\n line-height: 1.4;\n}\n\n.vindi-checkbox-wrapper a {\n color: #00155b;\n text-decoration: underline;\n}\n\n.vindi-wizard-side {\n border-radius: 0;\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n}\n\n.vindi-wizard-side img {\n object-fit: contain;\n width: 100%;\n height: auto;\n}\n\n.vindi-wizard-side.vindi-wizard-box .vindi-wizard-side {\n width: 50%;\n}\n\n.vindi-wizard-functionalities {\n color: #0b0b33;\n background: none;\n padding: 0;\n font-family: Segoe UI, sans-serif;\n}\n\n.vindi-wizard-method {\n background: #fff;\n border: 1px solid #e5e7eb;\n border-radius: 12px;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n padding: 16px;\n display: flex;\n box-shadow: 0 1px 2px #0000000a;\n}\n\n.vindi-wizard-method-left {\n align-items: center;\n gap: 12px;\n display: flex;\n}\n\n.vindi-wizard-method-icon {\n background: #e2e9ff;\n border-radius: 8px;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n padding: 5px;\n display: flex;\n}\n\n.vindi-wizard-method-icon img {\n width: 70%;\n height: 70%;\n}\n\n.vindi-wizard-method-title {\n color: #111827;\n font-size: 15px;\n font-weight: 600;\n margin: .5em !important;\n}\n\n.vindi-wizard-method-desc {\n color: #6b7280;\n font-size: 13px;\n margin: .5em !important;\n}\n\n.vindi-wizard-method-header {\n align-items: center;\n gap: 8px;\n display: flex;\n}\n\n.vindi-wizard-method-header-text {\n flex-direction: column;\n align-items: flex-start;\n display: flex;\n}\n\n.vindi-wizard-tag {\n display: none;\n}\n\n.vindi-wizard-tag.active {\n color: #00155b;\n background: #e0edff;\n border-radius: 6px;\n padding: 2px 8px;\n font-size: 11px;\n font-weight: 500;\n display: inline-block;\n}\n\n.vindi-wizard-switch {\n width: 42px;\n height: 24px;\n display: inline-block;\n position: relative;\n}\n\n.vindi-wizard-switch input {\n opacity: 0;\n width: 0;\n height: 0;\n}\n\n.vindi-wizard-switch input:checked + .vindi-wizard-slider {\n background-color: #2563eb;\n}\n\n.vindi-wizard-switch input:checked + .vindi-wizard-slider:before {\n transform: translateX(18px);\n}\n\n.vindi-wizard-slider {\n cursor: pointer;\n background-color: #d1d5db;\n border-radius: 24px;\n transition: all .4s;\n position: absolute;\n inset: 0;\n}\n\n.vindi-wizard-slider:before {\n content: \"\";\n background-color: #fff;\n border-radius: 50%;\n width: 18px;\n height: 18px;\n transition: all .4s;\n position: absolute;\n bottom: 3px;\n left: 3px;\n}\n\n.vindi-wizard-tutorial-card {\n background: #1f2937;\n position: relative;\n overflow: hidden;\n}\n\n.vindi-wizard-tutorial-card img {\n object-fit: cover;\n width: 100%;\n height: 100%;\n}\n\n.vindi-wizard-tutorial-content {\n color: #fff;\n padding: 24px;\n position: absolute;\n bottom: 0;\n left: 0;\n}\n\n.vindi-wizard-tutorial-title {\n margin-bottom: 8px;\n font-size: 16px;\n font-weight: bold;\n}\n\n.vindi-wizard-tutorial-container {\n color: #fff;\n align-items: center;\n gap: 8px;\n font-size: 16px;\n font-weight: 500;\n display: flex;\n}\n\n.vindi-wizard-success-page {\n text-align: center;\n color: #001f3f;\n box-sizing: border-box;\n background: #fff;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n min-height: 100vh;\n padding: 80px 24px;\n font-family: Segoe UI, sans-serif;\n display: flex;\n}\n\n.vindi-wizard-container-login {\n max-width: 520px;\n}\n\n.vindi-wizard-success-icons {\n justify-content: center;\n align-items: center;\n gap: 8px;\n margin-bottom: 32px;\n display: flex;\n}\n\n.vindi-wizard-success-title {\n color: #031252;\n margin-bottom: 16px;\n font-size: 28px;\n font-weight: bold;\n line-height: 1;\n}\n\n.vindi-wizard-success-subtitle {\n color: #666;\n margin-bottom: 32px;\n font-size: 14px;\n line-height: 1.5;\n}\n\n.vindi-wizard-success-button {\n color: #fff;\n background: #00155b;\n border-radius: 8px;\n padding: 10px 20px;\n font-weight: 500;\n text-decoration: none;\n transition: background .2s;\n display: inline-block;\n}\n\n.vindi-wizard-success-button:hover {\n background: #00103d;\n}\n\n.vindi-wizard-content {\n gap: 40px;\n display: flex;\n}\n\n.vindi-wizard-left {\n flex: 1;\n}\n\n.vindi-wizard-steps {\n color: #333;\n margin-bottom: 28px;\n font-size: 14px;\n line-height: 1.8;\n}\n\n.vindi-wizard-text {\n color: #5b5b5b;\n gap: 5px;\n margin-bottom: 8px;\n display: flex;\n}\n\n.vindi-wizard-circle-number {\n color: #5c81f3;\n background: #dbe3fc;\n border-radius: 50%;\n flex-shrink: 0;\n justify-content: center;\n align-items: center;\n width: 20px;\n height: 20px;\n margin-right: 8px;\n display: flex;\n}\n\n.vindi-wizard-video {\n background: #02072e;\n border-radius: 16px;\n flex: 1;\n min-height: 300px;\n display: flex;\n position: relative;\n overflow: hidden;\n}\n\n.vindi-wizard-video iframe {\n border: none;\n border-radius: 16px;\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n@media (width <= 1024px) {\n .vindi-wizard-side {\n display: none;\n }\n\n .vindi-wizard-left, #vindi-wizard-login, #vindi-wizard-register {\n width: 100% !important;\n }\n\n .vindi-wizard-box {\n flex-direction: column;\n gap: 0;\n }\n\n .vindi-wizard-content {\n flex-direction: column;\n }\n\n #vindi-wizard-container {\n max-width: 100%;\n padding: 24px;\n }\n}\n\n@media (width <= 767px) {\n #vindi-wizard-container {\n padding: 16px;\n }\n\n #vindi-wizard-login, #vindi-wizard-register {\n width: 100%;\n padding: 20px;\n }\n\n .vindi-wizard-title {\n margin-bottom: 16px;\n font-size: 24px;\n }\n\n .vindi-wizard-subtitle {\n margin-bottom: 24px;\n font-size: 13px;\n }\n\n .vindi-wizard-back-btn {\n margin-bottom: 16px;\n padding: 10px 14px;\n font-size: 13px;\n }\n\n .vindi-wizard-continue {\n width: 100%;\n margin-top: 20px;\n padding: 12px 20px;\n font-size: 16px;\n }\n\n .vindi-wizard-method {\n margin-bottom: 12px;\n padding: 12px;\n }\n\n .vindi-wizard-method-title {\n font-size: 14px;\n }\n\n .vindi-wizard-method-desc {\n font-size: 12px;\n }\n\n .vindi-wizard-switch {\n width: 35px;\n height: 20px;\n }\n\n .vindi-wizard-slider {\n width: 38px;\n height: 20px;\n }\n\n .vindi-wizard-slider:before {\n width: 14px;\n height: 14px;\n bottom: 3px;\n left: 3px;\n }\n\n .vindi-wizard-switch input:checked + .vindi-wizard-slider:before {\n transform: translateX(14px);\n }\n\n .vindi-wizard-icons {\n gap: 12px;\n margin-bottom: 20px;\n }\n\n .vindi-wizard-icons img {\n width: 28px;\n }\n\n .vindi-wizard-anexo {\n width: 14px !important;\n }\n}\n\n@media (width <= 480px) {\n #vindi-wizard-container {\n padding: 12px;\n }\n\n #vindi-wizard-login, #vindi-wizard-register {\n padding: 16px;\n }\n\n .vindi-wizard-title {\n font-size: 20px;\n }\n\n .vindi-wizard-subtitle {\n margin-bottom: 20px;\n font-size: 12px;\n }\n\n .vindi-wizard-method {\n margin-bottom: 10px;\n padding: 10px;\n }\n\n .vindi-wizard-method-title {\n font-size: 13px;\n }\n\n .vindi-wizard-method-desc {\n font-size: 11px;\n }\n\n .vindi-wizard-method-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 2px;\n }\n\n .vindi-wizard-tag.active {\n padding: 1px 6px;\n font-size: 10px;\n }\n\n .vindi-wizard-switch {\n width: 36px;\n height: 20px;\n }\n\n .vindi-wizard-continue {\n padding: 10px 16px;\n font-size: 14px;\n }\n\n .vindi-wizard-back-btn {\n padding: 8px 12px;\n font-size: 12px;\n }\n\n .vindi-wizard-icons {\n gap: 8px;\n }\n\n .vindi-wizard-icons img {\n width: 24px;\n }\n\n .vindi-wizard-anexo {\n width: 12px !important;\n }\n}\n\n@media (width <= 600px) {\n #vindi-wizard-login, #vindi-wizard-container, #vindi-wizard-register {\n padding: 0;\n }\n\n .vindi-wizard-continue, .vindi-wizard-back-btn, .vindi-wizard-switch, .vindi-wizard-btn {\n min-height: 44px;\n }\n\n .vindi-wizard-method {\n min-height: 60px;\n }\n\n .vindi-wizard-input {\n appearance: none;\n }\n\n .vindi-wizard-options-field {\n flex-direction: column;\n gap: 0;\n }\n}\n\n@media (width <= 767px) and (orientation: landscape) {\n .vindi-wizard-method {\n flex-direction: row;\n align-items: center;\n }\n\n .vindi-wizard-method-left {\n max-width: 75%;\n }\n\n .vindi-wizard-switch {\n align-self: center;\n }\n\n #vindi-wizard-container {\n height: auto;\n padding: 16px;\n }\n\n .vindi-wizard-title {\n font-size: 20px;\n }\n}\n\n#vindi-container {\n background: #fff;\n max-width: 1200px;\n margin: auto;\n padding: 40px;\n}\n\n.vindi-title {\n color: #111827;\n margin-bottom: 24px;\n font-size: 28px;\n font-weight: bold;\n}\n\n.vindi-tabs {\n border-bottom: 1px solid #d9d9d9;\n margin-bottom: 24px;\n display: flex;\n}\n\n.vindi-tab {\n color: #58524e;\n cursor: pointer;\n margin-right: 32px;\n padding-bottom: 12px;\n font-weight: 400;\n text-decoration: none !important;\n}\n\n.vindi-tab.active {\n color: #403833;\n border-bottom: 2px solid #403833;\n font-weight: 500;\n}\n\n.vindi-warning-box {\n background: #ebebeb;\n border-radius: 12px;\n max-height: 450px;\n padding: 24px;\n display: flex;\n}\n\n.vindi-warning-left {\n width: 70%;\n padding-right: 12px;\n}\n\n.vindi-warning-text {\n align-items: flex-start;\n display: flex;\n}\n\n.vindi-warning-icon {\n margin-right: 8px;\n font-size: 24px;\n}\n\n.vindi-warning-title {\n color: #2a2a3c;\n margin: 0;\n font-size: 20px;\n font-weight: bold;\n}\n\n.vindi-warning-desc {\n color: #6b7280;\n font-size: 13px;\n}\n\n.vindi-steps {\n gap: 16px;\n margin-top: 32px;\n display: flex;\n}\n\n.vindi-step {\n background: #fff;\n border-radius: 12px;\n flex-direction: column;\n justify-content: space-around;\n width: 100%;\n padding: 20px;\n display: flex;\n box-shadow: 0 1px 2px #0000000f;\n}\n\n.vindi-step-label {\n color: #6b7280;\n margin-bottom: 8px;\n font-size: 13px;\n}\n\n.vindi-step-title {\n color: #00155b;\n margin-bottom: 40px;\n font-size: 15px;\n font-weight: bold;\n}\n\n.vindi-step-btn {\n cursor: pointer;\n border: none;\n border-radius: 6px;\n padding: 8px 16px;\n font-size: 14px;\n font-weight: 500;\n text-decoration: none;\n}\n\n.vindi-step.completed {\n background: #f0f9ff;\n border: 1px solid #bae6fd;\n}\n\n.vindi-step.completed .vindi-step-title {\n color: #075985;\n}\n\n.vindi-step.completed .vindi-step-label {\n color: #0369a1;\n font-weight: 500;\n}\n\n.vindi-btn-done {\n color: #2e7d32;\n background: #e6f4ea;\n}\n\n.vindi-btn-config {\n color: #04195d;\n background: #fff;\n border: 1px solid #e7e7e7;\n}\n\n.vindi-test-actions {\n flex-direction: column;\n gap: 8px;\n display: flex;\n}\n\n.vindi-btn-mark-tested {\n color: #374151;\n background: #f3f4f6;\n border: 1px solid #d1d5db;\n padding: 6px 12px;\n font-size: 12px;\n}\n\n.vindi-btn-mark-tested:hover {\n background: #e5e7eb;\n border-color: #9ca3af;\n}\n\n.vindi-side {\n width: 30%;\n padding-left: 12px;\n position: relative;\n}\n\n.vindi-tutorial-title {\n color: #fff;\n margin-bottom: 18px;\n font-size: 22px;\n font-weight: bold;\n}\n\n.vindi-tutorial-btn {\n background: #83838380;\n border-radius: 50%;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n padding: 0;\n display: inline-flex;\n}\n\n.vindi-progress-text {\n color: #1e1e2f;\n text-align: end;\n padding: 4px 0;\n font-size: 11px;\n}\n\n.vindi-progress-bar {\n background: #fff;\n border-radius: 2px;\n width: 100px;\n height: 4px;\n position: relative;\n overflow: hidden;\n}\n\n.vindi-progress-fill {\n background: #00155b;\n border-radius: 2px;\n height: 100%;\n transition: width .3s;\n}\n\n.vindi-box {\n border-radius: 12px;\n display: flex;\n}\n\n.vindi-box-left {\n width: 50%;\n padding-right: 12px;\n}\n\n.vindi-settings-box {\n max-width: 500px;\n}\n\n.vindi-btn-save {\n color: #fff;\n cursor: pointer;\n background: #001f3f;\n border: none;\n border-radius: 6px;\n margin-bottom: 24px;\n padding: 10px 20px;\n font-weight: 600;\n}\n\n.vindi-field {\n margin-bottom: 24px;\n}\n\n.vindi-label {\n color: #1f2937;\n margin-bottom: 8px;\n font-weight: 500;\n display: block;\n}\n\n.vindi-input, .vindi-select {\n border: 1px solid #e1e1e1 !important;\n border-radius: 8px !important;\n width: 100% !important;\n max-width: 100% !important;\n padding: 6px 10px !important;\n font-size: 14px !important;\n}\n\n.vindi-field-desc {\n color: #6b7280;\n margin-top: 4px;\n font-size: 12px;\n}\n\n.vindi-section-title {\n color: #031252;\n border-bottom: 1px solid #e5e7eb;\n margin: 30px 0 20px;\n padding-bottom: 10px;\n font-size: 18px;\n font-weight: 600;\n}\n\n.vindi-btn-authorize {\n color: #fff;\n cursor: pointer;\n background: #4f46e5;\n border: none;\n border-radius: 4px;\n margin-top: 8px;\n padding: 8px 16px;\n}\n\n.vindi-color {\n min-width: 60px;\n height: 36px;\n padding: 0;\n}\n\n.vindi-conditional-field {\n display: none;\n}\n\n.vindi-method-header {\n align-items: center;\n gap: 8px;\n display: flex;\n}\n\n.vindi-method-actions {\n align-items: center;\n gap: 12px;\n display: flex;\n}\n\n.vindi-tag {\n color: #2563eb;\n background: #e0edff;\n border-radius: 6px;\n padding: 2px 8px;\n font-size: 11px;\n font-weight: 500;\n display: none;\n}\n\n.vindi-tag.active {\n display: inline-block;\n}\n\n.vindi-error-message {\n color: #721c24;\n background: #f8d7da;\n border: 1px solid #f5c6cb;\n border-radius: 8px;\n margin-bottom: 20px;\n padding: 12px 16px;\n font-size: 14px;\n}\n\n@media (width <= 1024px) {\n #vindi-container {\n max-width: 100%;\n padding: 24px;\n }\n\n .vindi-warning-box {\n flex-direction: column;\n max-height: none;\n }\n\n .vindi-warning-left {\n width: 100%;\n margin-bottom: 24px;\n padding-right: 0;\n }\n\n .vindi-side {\n width: 100%;\n padding-left: 0;\n }\n\n .vindi-tutorial-card {\n height: 200px;\n }\n\n .vindi-steps {\n flex-wrap: wrap;\n gap: 12px;\n }\n\n .vindi-step {\n min-height: 160px;\n }\n\n .vindi-box-left {\n width: 100%;\n }\n\n .vindi-settings-box {\n max-width: 100%;\n }\n\n .vindi-method {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n\n .vindi-method-actions {\n justify-content: space-between;\n width: 100%;\n }\n}\n\n@media (width <= 767px) {\n #vindi-container {\n padding: 16px;\n }\n\n .vindi-title {\n margin-bottom: 16px;\n font-size: 24px;\n }\n\n .vindi-tabs {\n white-space: nowrap;\n scrollbar-width: none;\n -ms-overflow-style: none;\n overflow-x: auto;\n }\n\n .vindi-tabs::-webkit-scrollbar {\n display: none;\n }\n\n .vindi-tab {\n flex-shrink: 0;\n margin-right: 24px;\n font-size: 14px;\n }\n\n .vindi-warning-box {\n padding: 16px;\n }\n\n .vindi-warning-text {\n flex-direction: column;\n }\n\n .vindi-warning-icon {\n margin-bottom: 8px;\n margin-right: 0;\n font-size: 20px;\n }\n\n .vindi-warning-title {\n font-size: 18px;\n }\n\n .vindi-steps {\n gap: 12px;\n margin-top: 24px;\n }\n\n .vindi-step {\n width: 100%;\n min-height: auto;\n padding: 16px;\n }\n\n .vindi-step-title {\n margin-bottom: 16px;\n font-size: 14px;\n }\n\n .vindi-tutorial-title {\n margin-bottom: 12px;\n font-size: 18px;\n }\n\n .vindi-tutorial-container {\n font-size: 14px;\n }\n\n .vindi-progress-bar {\n width: 80px;\n }\n\n .vindi-section-title {\n margin: 24px 0 16px;\n font-size: 16px;\n }\n\n .vindi-btn-save {\n width: 100%;\n padding: 12px 20px;\n font-size: 16px;\n }\n\n .vindi-toggle-item {\n padding: 12px;\n }\n\n .vindi-toggle-title {\n font-size: 14px;\n }\n\n .vindi-toggle-desc {\n font-size: 11px;\n }\n\n .vindi-input, .vindi-select {\n padding: 10px 12px !important;\n font-size: 16px !important;\n }\n\n .vindi-btn-authorize {\n width: 100%;\n margin-top: 12px;\n padding: 10px 16px;\n }\n\n .vindi-color {\n min-width: 80px;\n height: 44px;\n }\n\n .vindi-method {\n padding: 12px;\n }\n\n .vindi-method-left {\n gap: 10px;\n }\n\n .vindi-method-icon {\n width: 28px;\n height: 28px;\n }\n\n .vindi-method-title {\n font-size: 14px;\n }\n\n .vindi-method-desc {\n font-size: 12px;\n }\n\n .vindi-step-btn {\n padding: 6px 12px;\n font-size: 13px;\n }\n\n .vindi-tag.active {\n padding: 2px 6px;\n font-size: 10px;\n }\n\n .vindi-slider {\n width: 38px;\n height: 20px;\n }\n\n .vindi-slider:before {\n width: 14px;\n height: 14px;\n bottom: 3px;\n left: 3px;\n }\n\n .vindi-switch input:checked + .vindi-slider:before {\n transform: translateX(14px);\n }\n}\n\n@media (width <= 480px) {\n #vindi-container {\n padding: 12px;\n }\n\n .vindi-title {\n font-size: 20px;\n }\n\n .vindi-tab {\n margin-right: 16px;\n padding-bottom: 8px;\n font-size: 13px;\n }\n\n .vindi-warning-box {\n padding: 12px;\n }\n\n .vindi-warning-title {\n font-size: 16px;\n }\n\n .vindi-warning-desc {\n font-size: 12px;\n }\n\n .vindi-step {\n padding: 12px;\n }\n\n .vindi-step-title {\n margin-bottom: 12px;\n font-size: 13px;\n }\n\n .vindi-step-btn {\n padding: 6px 12px;\n font-size: 13px;\n }\n\n .vindi-tutorial-card {\n height: 160px;\n }\n\n .vindi-tutorial-content {\n padding: 16px;\n }\n\n .vindi-tutorial-title {\n margin-bottom: 10px;\n font-size: 16px;\n }\n\n .vindi-tutorial-container {\n font-size: 13px;\n }\n\n .vindi-tutorial-btn {\n width: 28px;\n height: 28px;\n }\n\n .vindi-progress-text {\n font-size: 10px;\n }\n\n .vindi-progress-bar {\n width: 60px;\n height: 3px;\n }\n\n .vindi-section-title {\n margin: 20px 0 12px;\n font-size: 14px;\n }\n\n .vindi-field {\n margin-bottom: 16px;\n }\n\n .vindi-label {\n margin-bottom: 6px;\n font-size: 13px;\n }\n\n .vindi-toggle-item {\n margin-bottom: 12px;\n padding: 10px;\n }\n\n .vindi-toggle-title {\n font-size: 13px;\n }\n\n .vindi-toggle-desc, .vindi-field-desc {\n font-size: 10px;\n }\n\n .vindi-switch {\n width: 36px;\n height: 20px;\n }\n\n .vindi-btn-save {\n padding: 10px 16px;\n font-size: 14px;\n }\n\n .vindi-btn-authorize {\n padding: 8px 12px;\n font-size: 14px;\n }\n\n .vindi-color {\n min-width: 70px;\n height: 40px;\n }\n\n .vindi-method {\n margin-bottom: 12px;\n padding: 10px;\n }\n\n .vindi-method-left {\n gap: 8px;\n }\n\n .vindi-method-icon {\n width: 24px;\n height: 24px;\n padding: 4px;\n }\n\n .vindi-method-title {\n font-size: 13px;\n }\n\n .vindi-method-desc {\n font-size: 11px;\n }\n\n .vindi-tag.active {\n padding: 1px 5px;\n font-size: 9px;\n }\n}\n\n@media (width <= 600px) {\n .vindi-warning-text > div {\n max-width: 100% !important;\n }\n\n .vindi-input, .vindi-select {\n appearance: none;\n }\n\n .vindi-select {\n background-image: url(\"data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6,9 12,15 18,9'%3e%3c/polyline%3e%3c/svg%3e\");\n background-position: right 12px center;\n background-repeat: no-repeat;\n background-size: 16px;\n padding-right: 40px !important;\n }\n\n .vindi-btn-save, .vindi-btn-authorize, .vindi-switch {\n min-height: 44px;\n }\n\n .vindi-toggle-item, .vindi-method {\n min-height: 60px;\n }\n\n .vindi-method-actions {\n gap: 8px;\n }\n}\n\n@media (width <= 767px) and (orientation: landscape) {\n .vindi-toggle-item {\n flex-direction: row;\n align-items: center;\n }\n\n .vindi-toggle-texts {\n max-width: 75%;\n }\n\n .vindi-switch {\n align-self: center;\n }\n\n .vindi-method {\n flex-direction: row;\n align-items: center;\n }\n\n .vindi-method-actions {\n width: auto;\n }\n}\n\n@media (width <= 360px) {\n #vindi-container {\n padding: 8px;\n }\n\n .vindi-title {\n font-size: 18px;\n }\n\n .vindi-tab {\n margin-right: 12px;\n font-size: 12px;\n }\n\n .vindi-method {\n padding: 8px;\n }\n\n .vindi-method-icon {\n width: 20px;\n height: 20px;\n padding: 3px;\n }\n\n .vindi-method-title {\n font-size: 12px;\n }\n\n .vindi-method-desc {\n font-size: 10px;\n }\n\n .vindi-step-btn {\n padding: 4px 8px;\n font-size: 11px;\n }\n\n .vindi-tag.active {\n padding: 1px 4px;\n font-size: 8px;\n }\n\n .vindi-btn-save {\n padding: 8px 12px;\n font-size: 13px;\n }\n\n .vindi-label {\n font-size: 12px;\n }\n\n .vindi-input {\n padding: 6px 8px !important;\n font-size: 13px !important;\n }\n}\n\n.vindi-switch {\n width: 42px;\n height: 24px;\n display: inline-block;\n position: relative;\n}\n\n.vindi-switch input {\n opacity: 0;\n width: 0;\n height: 0;\n}\n\n.vindi-switch .vindi-slider {\n cursor: pointer;\n background-color: #d1d5db;\n border-radius: 24px;\n transition: all .3s;\n position: absolute;\n inset: 0;\n}\n\n.vindi-switch .vindi-slider:before {\n content: \"\";\n background-color: #fff;\n border-radius: 50%;\n width: 18px;\n height: 18px;\n transition: all .3s;\n position: absolute;\n bottom: 3px;\n left: 3px;\n box-shadow: 0 1px 2px #0003;\n}\n\n.vindi-switch input:checked + .vindi-slider {\n background-color: #2563eb;\n}\n\n.vindi-switch input:checked + .vindi-slider:before {\n transform: translateX(18px);\n}\n\n.vindi-toggle-item {\n background: #fff;\n border: 1px solid #e5e7eb;\n border-radius: 12px;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n padding: 16px;\n display: flex;\n box-shadow: 0 1px 2px #0000000a;\n}\n\n.vindi-toggle-texts {\n max-width: 75%;\n}\n\n.vindi-toggle-title {\n color: #111827;\n font-weight: 600;\n margin: .5em !important;\n}\n\n.vindi-toggle-desc {\n color: #6b7280;\n font-size: 12px;\n margin: .5em !important;\n}\n\n.vindi-method {\n background: #fff;\n border: 1px solid #e5e7eb;\n border-radius: 12px;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n padding: 16px;\n display: flex;\n box-shadow: 0 1px 2px #0000000a;\n}\n\n.vindi-method-left {\n align-items: center;\n gap: 12px;\n display: flex;\n}\n\n.vindi-method-icon {\n background: #e2e9ff;\n border-radius: 8px;\n justify-content: center;\n align-items: center;\n width: 32px;\n height: 32px;\n padding: 5px;\n display: flex;\n}\n\n.vindi-method-icon img {\n width: 70%;\n height: 70%;\n}\n\n.vindi-method-title {\n color: #111827;\n font-size: 15px;\n font-weight: 600;\n margin: .5em !important;\n}\n\n.vindi-method-desc {\n color: #6b7280;\n font-size: 13px;\n margin: .5em !important;\n}\n\n#vindi-container {\n background: #fff;\n max-width: 1200px;\n margin: auto;\n font-family: Segoe UI, sans-serif;\n}\n\n.vindi-box {\n border-radius: 12px;\n gap: 24px;\n display: flex;\n}\n\n.vindi-box-left {\n width: 50%;\n}\n\n.vindi-side {\n width: 50%;\n position: relative;\n}\n\n.vindi-tutorial-card {\n background: #1f2937;\n border-radius: 12px;\n height: 100%;\n position: relative;\n overflow: hidden;\n}\n\n.vindi-tutorial-card img {\n object-fit: cover;\n width: 100%;\n height: 100%;\n}\n\n.vindi-tutorial-content {\n color: #fff;\n padding: 24px;\n position: absolute;\n bottom: 0;\n left: 0;\n}\n\n.vindi-tutorial-title {\n margin-bottom: 8px;\n font-size: 18px;\n font-weight: bold;\n}\n\n.vindi-tutorial-container {\n color: #fff;\n align-items: center;\n gap: 8px;\n font-size: 16px;\n font-weight: 500;\n display: flex;\n}\n\n.credit-config {\n color: #0b0b33;\n padding: 0 20px;\n font-family: Segoe UI, sans-serif;\n}\n\n.vindi-back-btn {\n color: #666;\n cursor: pointer;\n background: #ebebeb;\n border: none;\n border-radius: 6px;\n margin-bottom: 20px;\n padding: 8px 12px;\n font-size: 14px;\n transition: background-color .2s;\n}\n\n.vindi-back-btn:hover {\n background: #d4d4d4;\n}\n\n.title {\n color: #1f2937;\n margin-bottom: 24px;\n font-size: 28px;\n font-weight: 700;\n line-height: 1.4;\n}\n\n.vindi-method-icon {\n background: #e2e9ff;\n}\n\n.form-label {\n color: #374151;\n margin-bottom: 6px;\n font-size: 14px;\n font-weight: 500;\n display: block;\n}\n\n.vindi-input {\n resize: vertical;\n max-width: 600px;\n max-height: 150px;\n transition: border-color .2s;\n color: #374151 !important;\n border: 1px solid #d1d5db !important;\n border-radius: 8px !important;\n width: 100% !important;\n padding: 10px 12px !important;\n font-size: 14px !important;\n}\n\n.vindi-input:focus {\n outline: none;\n box-shadow: 0 0 0 3px #2563eb1a;\n border-color: #2563eb !important;\n}\n\n.vindi-input[type=\"textarea\"], textarea .vindi-input {\n min-height: 80px;\n font-family: inherit;\n}\n\n.vindi-mb {\n margin-bottom: 22px;\n}\n\n.btn-primary {\n color: #fff;\n cursor: pointer;\n background: #00155b;\n border: none;\n border-radius: 8px;\n width: 100%;\n padding: 12px 24px;\n font-size: 14px;\n font-weight: 500;\n transition: background-color .2s;\n}\n\n.btn-primary:hover {\n background: #1d4ed8;\n}\n\n.vindi-success-message {\n color: #155724;\n background: #d4edda;\n border: 1px solid #c3e6cb;\n border-radius: 8px;\n margin-bottom: 20px;\n padding: 12px 16px;\n font-size: 14px;\n}\n\n.vindi-alert {\n border-radius: 8px;\n margin-bottom: 16px;\n padding: 12px 16px;\n font-size: 14px;\n}\n\n.vindi-alert-warning {\n color: #856404;\n background-color: #fff3cd;\n border: 1px solid #ffeaa7;\n}\n\n.vindi-methods-section {\n background: #f9fafb;\n border: 1px solid #d9d9d9;\n border-radius: 12px;\n margin-top: 8px;\n padding: 20px;\n}\n\n.vindi-section-title {\n color: #111827;\n margin-bottom: 8px;\n font-size: 16px;\n font-weight: 600;\n}\n\n.vindi-section-desc {\n color: #6b7280;\n margin-bottom: 16px;\n font-size: 14px;\n}\n\n.vindi-discount-fields {\n opacity: 1;\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 12px;\n max-height: 1000px;\n margin-bottom: 20px;\n padding: 20px;\n transition: all .3s;\n overflow: hidden;\n}\n\n.vindi-discount-fields.hidden {\n opacity: 0;\n max-height: 0;\n margin-bottom: 0;\n padding: 0 20px;\n}\n\n.vindi-discount-title {\n color: #111827;\n margin-bottom: 12px;\n font-weight: 600;\n}\n\n.vindi-min-amount-fields {\n opacity: 1;\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 12px;\n max-height: 1000px;\n margin-bottom: 20px;\n padding: 20px;\n transition: all .3s;\n overflow: hidden;\n}\n\n.vindi-min-amount-fields.hidden {\n opacity: 0;\n max-height: 0;\n margin-bottom: 0;\n padding: 0 20px;\n}\n\n.vindi-checkbox-group {\n flex-wrap: wrap;\n gap: 12px;\n margin-top: 8px;\n display: flex;\n}\n\n.vindi-checkbox-item {\n cursor: pointer;\n background: #f8f9fa;\n border: 1px solid #e9ecef;\n border-radius: 8px;\n align-items: center;\n padding: 8px 12px;\n transition: all .2s;\n display: flex;\n}\n\n.vindi-checkbox-item:hover {\n background: #e9ecef;\n}\n\n.vindi-checkbox-item input[type=\"checkbox\"] {\n margin-right: 8px;\n}\n\n.vindi-checkbox-text {\n color: #495057;\n font-size: 14px;\n}\n\n@media (width <= 1024px) {\n .vindi-side {\n display: none;\n }\n\n .vindi-box-left {\n width: 100%;\n padding: 0;\n }\n\n .vindi-box {\n flex-direction: column;\n gap: 0;\n }\n\n #vindi-container {\n max-width: 100%;\n padding: 24px;\n }\n\n .credit-config {\n padding: 0;\n }\n}\n\n@media (width <= 767px) {\n #vindi-container {\n padding: 16px;\n }\n\n .title {\n margin-bottom: 20px;\n font-size: 24px;\n }\n\n .vindi-back-btn {\n margin-bottom: 16px;\n padding: 10px 14px;\n font-size: 13px;\n }\n\n .vindi-method, .vindi-toggle-item {\n margin-bottom: 12px;\n padding: 12px;\n }\n\n .vindi-method-title, .vindi-toggle-title {\n font-size: 14px;\n }\n\n .vindi-method-desc, .vindi-toggle-desc {\n font-size: 12px;\n }\n\n .form-label {\n margin-bottom: 5px;\n font-size: 13px;\n }\n\n .vindi-input {\n padding: 10px 12px !important;\n font-size: 16px !important;\n }\n\n .vindi-mb {\n margin-bottom: 18px;\n }\n\n .btn-primary {\n margin-top: 8px;\n padding: 14px 20px;\n font-size: 16px;\n }\n\n .vindi-discount-fields, .vindi-methods-section {\n padding: 16px;\n }\n}\n\n@media (width <= 480px) {\n #vindi-container {\n padding: 12px;\n }\n\n .title {\n margin-bottom: 16px;\n font-size: 20px;\n }\n\n .vindi-back-btn {\n padding: 8px 12px;\n font-size: 12px;\n }\n\n .vindi-method, .vindi-toggle-item {\n margin-bottom: 10px;\n padding: 10px;\n }\n\n .vindi-toggle-texts {\n max-width: 70%;\n }\n\n .vindi-discount-fields, .vindi-methods-section {\n padding: 12px;\n }\n}\n\n@media (width <= 600px) {\n .btn-primary, .vindi-back-btn, .vindi-switch {\n min-height: 44px;\n }\n\n .vindi-method, .vindi-toggle-item {\n min-height: 60px;\n }\n\n .vindi-input {\n min-height: 44px;\n }\n}\n\n/*# sourceMappingURL=index.css.map */\n",".wpl-wrap .notice {\n display: none;\n}\n\n.block-editor-block-list__layout {\n padding: 0 !important;\n}\n\n#wvp-payment-link-btn {\n margin: 0 5px;\n}\n\n.vindi-wizard-close-header {\n position: fixed;\n top: 20px;\n right: 40px;\n z-index: 999999999999999999;\n}\n\n.vindi-wizard-close-btn {\n color: white;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 12px;\n transition: all 0.2s ease;\n padding: 6px;\n border-radius: 6px;\n background: rgba(135, 135, 135, 0.8);\n}\n\n.vindi-wizard-close-btn:hover {\n background: rgba(79, 79, 79, 0.9);\n transform: scale(1.1);\n}\n\n// Import admin files\n@import \"./orders/index.scss\";\n@import \"./subscriptions/index.scss\";\n@import \"./wizard/index.scss\";\n@import \"./onboarding/index.scss\";\n@import \"./payment-config/index.scss\";\n",".wvp-tracking-edit {\n .wvp-tracking-edit-field {\n margin: 10px 0 10px 0;\n input {\n margin-top: 5px;\n width: 100%;\n }\n }\n\n .wvp-tracking-edit-message {\n display: inherit;\n span {\n font-size: 12px !important;\n }\n i {\n color: red;\n }\n\n &-hidden {\n display: none;\n }\n }\n\n .wvp-tracking-edit-button {\n height: 20px;\n margin: 10px 0;\n > div {\n float: right;\n .wvp-tracking {\n animation: spin 4s linear infinite;\n position: relative;\n top: 5px;\n right: 5px;\n\n &-hidden {\n display: none;\n }\n }\n }\n }\n\n @keyframes spin {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n }\n}\n\ndiv.order_data_column:has(#vindi-payment-link) {\n display: flex !important;\n flex-direction: column !important;\n}\n\n#vindi-payment-link {\n margin: 20px 0;\n\n div {\n display: flex;\n flex-direction: row;\n gap: 5px;\n\n > a {\n padding: 5px 10px;\n background: #001a9e;\n border-radius: 3px;\n color: #ffff;\n text-decoration: none;\n display: flex;\n align-items: center;\n }\n\n > button {\n border-radius: 3px;\n border: 1px solid #001a9e;\n background: transparent;\n display: flex;\n align-items: center;\n\n > img {\n width: 14px;\n }\n\n &:hover {\n cursor: pointer;\n }\n }\n\n &.disabled {\n opacity: 30%;\n button,\n a,\n img {\n cursor: default;\n }\n }\n }\n\n .messages {\n span {\n font-size: 10px;\n }\n }\n}\n.vindi-payment-link-context {\n display: flex;\n align-items: center;\n justify-content: center;\n .vindi-payment-link-button {\n opacity: 1;\n color: #fff;\n background: #001a9e;\n border-radius: 3px;\n align-items: center;\n gap: 3px;\n min-width: 135px;\n width: fit-content;\n padding: 3px 10px;\n text-decoration: none;\n display: flex;\n\n &:hover {\n opacity: 80%;\n transition: 0.2s;\n color: #fff;\n }\n }\n}\n","\n#manual-renewal-form {\n .loader {\n box-sizing: border-box;\n border: 3px solid transparent;\n border-top-color: #bfbfbf;\n border-left-color: #bfbfbf;\n border-radius: 50%;\n width: 15px;\n height: 15px;\n animation: 1s linear infinite rotation;\n display: none;\n position: relative;\n top: 5px;\n left: 10px;\n\n &.active {\n display: inline-block;\n }\n }\n\n @keyframes rotation {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n}\n\n.vindi-payment-profile-container {\n background: #fff;\n box-sizing: border-box;\n}\n\n.vindi-section-title {\n font-size: 14px;\n}\n\n.vindi-th {\n font-size: 12px !important;\n font-weight: 400 !important;\n}\n\n.vindi-no-cards {\n color: #777;\n font-style: italic;\n margin-bottom: 0;\n}\n\n.payment-cards-container {\n margin: 15px 0 5px;\n\n .actions {\n margin-top: 15px;\n display: flex;\n align-items: center;\n gap: 10px;\n }\n\n .loader {\n display: inline-block;\n width: 20px;\n height: 20px;\n border: 2px solid rgba(0, 0, 0, 0.1);\n border-left-color: #0073aa;\n border-radius: 50%;\n animation: loader-spin 0.8s infinite linear;\n }\n\n .update-message {\n display: inline-block;\n padding: 5px 0;\n font-weight: 500;\n\n &.success {\n color: #46b450;\n }\n\n &.error {\n color: #dc3232;\n }\n }\n}\n\n.vindi-cards-table {\n border-collapse: collapse;\n margin-bottom: 15px;\n width: 100%;\n border: 1px solid #e5e5e5;\n\n th {\n background: #f9f9f9;\n text-align: left;\n border-bottom: 1px solid #e5e5e5;\n }\n\n td {\n vertical-align: middle;\n border-bottom: 1px solid #f0f0f0;\n }\n\n tr:last-child td {\n border-bottom: none;\n }\n\n .column-select {\n width: 25px;\n text-align: center;\n }\n\n .column-brand {\n width: 25%;\n }\n\n input[type=radio] {\n margin: 0;\n }\n}\n\n.vindi-card-row {\n &:hover {\n background-color: #f9f9f9;\n }\n\n &.selected-card {\n background-color: #f0f7ff;\n }\n}\n\n#update-payment-profile-button {\n height: 32px;\n line-height: 30px;\n padding: 0 12px;\n}\n\n@keyframes loader-spin {\n to {\n transform: rotate(360deg);\n }\n}","$vindi-primary: #00155b;\n$vindi-primary-hover: #00103d;\n$vindi-text-primary: #2a2a3c;\n$vindi-text-secondary: #666;\n$vindi-text-light: #6b7280;\n$vindi-border: #e1e1e1;\n$vindi-border-light: #e5e7eb;\n$vindi-background-light: #e2e9ff;\n$vindi-background-dark: #1f2937;\n$vindi-background-grey: #ebebeb;\n$vindi-switch-bg: #d1d5db;\n\n#vindi-wizard-modal {\n width: 100%;\n max-width: none;\n margin: 0;\n min-height: 100vh;\n height: 100vh;\n position: fixed !important;\n top: 0 !important;\n left: 0 !important;\n right: 0 !important;\n z-index: 99999;\n background-color: #fff;\n overflow-y: auto;\n overflow-x: hidden;\n scrollbar-width: none;\n -ms-overflow-style: none;\n\n &::-webkit-scrollbar {\n display: none;\n }\n}\n\n#vindi-wizard-container {\n background: #ffffff;\n display: flex;\n min-height: 100vh;\n box-sizing: border-box;\n position: relative;\n\n .vindi-wizard-box {\n border-radius: 12px;\n display: flex;\n gap: 24px;\n padding: 40px 52px;\n position: absolute;\n left: 0;\n top: 0;\n width: 40%;\n }\n\n #vindi-wizard-login,\n #vindi-wizard-register {\n padding: 40px 52px;\n position: absolute;\n left: 0;\n top: 0;\n }\n\n #vindi-wizard-token {\n padding: 40px 52px;\n }\n}\n\n.vindi-wizard-icons {\n display: flex;\n align-items: center;\n margin-bottom: 8px;\n gap: 6px;\n\n img {\n width: 32px;\n }\n}\n\n.vindi-wizard-anexo {\n width: 16px !important;\n}\n\n// Botão de fechar para fullscreen\n.vindi-wizard-close-button {\n position: absolute;\n top: 20px;\n right: 20px;\n background: none;\n border: none;\n font-size: 24px;\n cursor: pointer;\n color: #666;\n z-index: 1000001;\n width: 40px;\n height: 40px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.3s ease;\n\n &:hover {\n background-color: #f0f0f0;\n color: #333;\n }\n}\n\n.vindi-wizard-icon {\n height: 32px;\n}\n\n.vindi-wizard-title {\n font-size: 28px;\n font-weight: bold;\n margin-bottom: 24px;\n color: $vindi-primary;\n line-height: 1.3;\n}\n\n.vindi-wizard-subtitle {\n font-size: 14px;\n color: $vindi-text-secondary;\n margin-bottom: 32px;\n}\n\n.vindi-wizard-back-btn {\n border: none;\n color: $vindi-text-secondary;\n font-size: 14px;\n margin-bottom: 20px;\n cursor: pointer;\n background: $vindi-background-grey;\n border-radius: 6px;\n padding: 8px 12px;\n\n &:hover {\n background: $vindi-primary-hover;\n color: white;\n }\n}\n\n.vindi-wizard-btn {\n background-color: $vindi-primary;\n color: white;\n border: none;\n border-radius: 6px;\n padding: 10px 28px;\n font-size: 16px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background-color 0.3s;\n\n &:hover {\n background-color: $vindi-primary-hover;\n }\n\n &-icon {\n width: 24px;\n height: 24px;\n margin-left: 8px;\n }\n\n &-config {\n background: $vindi-primary;\n color: #fff;\n border: none;\n padding: 8px 16px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n\n &:hover {\n background: $vindi-primary-hover;\n }\n }\n &-login {\n background: #fff;\n color: #434343;\n padding: 8px 16px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n border: 1px solid #969696;\n\n &:hover {\n background: $vindi-primary;\n color: #fff;\n }\n }\n}\n\n.vindi-wizard-continue {\n margin-top: 24px;\n background: $vindi-primary;\n color: #fff;\n border: none;\n padding: 12px 20px;\n font-size: 14px;\n font-weight: 500;\n border-radius: 8px;\n cursor: pointer;\n\n &:hover {\n background: $vindi-primary-hover;\n }\n}\n\n.vindi-wizard-step-btn {\n transition: background 0.2s ease;\n text-decoration: none;\n}\n\n.vindi-wizard-field {\n width: 100%;\n margin-bottom: 24px;\n}\n\n.vindi-wizard-label {\n display: block;\n margin-bottom: 8px;\n font-weight: 500;\n color: $vindi-text-primary;\n}\n\n.vindi-wizard-input,\n.vindi-wizard-select {\n width: 100% !important;\n max-width: 100% !important;\n padding: 6px 10px !important;\n border: 1px solid $vindi-border !important;\n border-radius: 8px !important;\n font-size: 14px !important;\n}\n\n.vindi-wizard-link {\n color: $vindi-primary;\n text-decoration: underline;\n display: block;\n margin-bottom: 24px;\n}\n\n.vindi-wizard-options-field {\n display: flex;\n justify-content: space-between;\n gap: 23px;\n}\n\n.vindi-wizard-terms {\n margin-top: 20px;\n}\n\n.vindi-checkbox-wrapper {\n display: flex;\n align-items: flex-start;\n margin-bottom: 12px;\n\n input[type=\"checkbox\"] {\n margin-right: 10px;\n margin-top: 3px;\n }\n\n label {\n color: #212529;\n font-size: 14px;\n line-height: 1.4;\n }\n\n a {\n color: $vindi-primary;\n text-decoration: underline;\n }\n}\n\n.vindi-wizard-side {\n border-radius: 0;\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n\n img {\n width: 100%;\n height: auto;\n object-fit: contain;\n }\n\n &.vindi-wizard-box & {\n width: 50%;\n }\n}\n\n.vindi-wizard-functionalities {\n padding: 0;\n background: transparent;\n color: #0b0b33;\n font-family: \"Segoe UI\", sans-serif;\n}\n\n.vindi-wizard-method {\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #fff;\n border: 1px solid $vindi-border-light;\n border-radius: 12px;\n padding: 16px;\n margin-bottom: 16px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);\n\n &-left {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n &-icon {\n height: 32px;\n width: 32px;\n background: $vindi-background-light;\n padding: 5px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n\n img {\n width: 70%;\n height: 70%;\n }\n }\n\n &-title {\n font-weight: 600;\n margin: 0.5em !important;\n color: #111827;\n font-size: 15px;\n }\n\n &-desc {\n font-size: 13px;\n color: $vindi-text-light;\n margin: 0.5em !important;\n }\n\n &-header {\n display: flex;\n align-items: center;\n gap: 8px;\n\n &-text {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n }\n}\n\n.vindi-wizard-tag {\n display: none;\n\n &.active {\n display: inline-block;\n background: #e0edff;\n color: $vindi-primary;\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 6px;\n font-weight: 500;\n }\n}\n\n.vindi-wizard-switch {\n position: relative;\n display: inline-block;\n width: 42px;\n height: 24px;\n\n input {\n opacity: 0;\n width: 0;\n height: 0;\n\n &:checked + .vindi-wizard-slider {\n background-color: #2563eb;\n\n &::before {\n transform: translateX(18px);\n }\n }\n }\n}\n\n.vindi-wizard-slider {\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: $vindi-switch-bg;\n transition: 0.4s;\n border-radius: 24px;\n\n &::before {\n position: absolute;\n content: \"\";\n height: 18px;\n width: 18px;\n left: 3px;\n bottom: 3px;\n background-color: white;\n transition: 0.4s;\n border-radius: 50%;\n }\n}\n\n.vindi-wizard-tutorial-card {\n background: $vindi-background-dark;\n overflow: hidden;\n position: relative;\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n}\n\n.vindi-wizard-tutorial-content {\n position: absolute;\n bottom: 0;\n left: 0;\n padding: 24px;\n color: #ffffff;\n}\n\n.vindi-wizard-tutorial-title {\n font-size: 16px;\n font-weight: bold;\n margin-bottom: 8px;\n}\n\n.vindi-wizard-tutorial-container {\n display: flex;\n color: white;\n align-items: center;\n gap: 8px;\n font-size: 16px;\n font-weight: 500;\n}\n\n.vindi-wizard-success-page {\n font-family: \"Segoe UI\", sans-serif;\n text-align: center;\n padding: 80px 24px;\n background: #fff;\n color: #001f3f;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 100vh;\n box-sizing: border-box;\n}\n\n.vindi-wizard-container-login {\n max-width: 520px;\n}\n\n.vindi-wizard-success-icons {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 8px;\n margin-bottom: 32px;\n}\n\n.vindi-wizard-success-title {\n font-size: 28px;\n font-weight: bold;\n margin-bottom: 16px;\n color: #031252ff;\n line-height: 1;\n}\n\n.vindi-wizard-success-subtitle {\n font-size: 14px;\n color: $vindi-text-secondary;\n margin-bottom: 32px;\n line-height: 1.5;\n}\n\n.vindi-wizard-success-button {\n background: $vindi-primary;\n color: #fff;\n padding: 10px 20px;\n border-radius: 8px;\n font-weight: 500;\n text-decoration: none;\n display: inline-block;\n transition: background 0.2s ease;\n\n &:hover {\n background: $vindi-primary-hover;\n }\n}\n\n.vindi-wizard-content {\n display: flex;\n gap: 40px;\n}\n\n.vindi-wizard-left {\n flex: 1;\n}\n\n.vindi-wizard-steps {\n font-size: 14px;\n line-height: 1.8;\n color: #333;\n margin-bottom: 28px;\n}\n\n.vindi-wizard-text {\n display: flex;\n gap: 5px;\n color: #5b5b5b;\n margin-bottom: 8px;\n}\n\n.vindi-wizard-circle-number {\n display: flex;\n width: 20px;\n height: 20px;\n background: #dbe3fc;\n border-radius: 50%;\n align-items: center;\n justify-content: center;\n color: #5c81f3;\n margin-right: 8px;\n flex-shrink: 0;\n}\n\n.vindi-wizard-video {\n flex: 1;\n background: #02072e;\n border-radius: 16px;\n position: relative;\n overflow: hidden;\n min-height: 300px;\n display: flex;\n\n iframe {\n width: 100%;\n height: 100%;\n border: none;\n border-radius: 16px;\n position: absolute;\n top: 0;\n left: 0;\n }\n}\n\n@media (max-width: 1024px) {\n .vindi-wizard-side {\n display: none;\n }\n\n .vindi-wizard-left,\n #vindi-wizard-login,\n #vindi-wizard-register {\n width: 100% !important;\n }\n\n .vindi-wizard-box {\n flex-direction: column;\n gap: 0;\n }\n\n .vindi-wizard-content {\n flex-direction: column;\n }\n\n #vindi-wizard-container {\n padding: 24px;\n max-width: 100%;\n }\n}\n\n@media (max-width: 767px) {\n #vindi-wizard-container {\n padding: 16px;\n }\n\n #vindi-wizard-login,\n #vindi-wizard-register {\n padding: 20px;\n width: 100%;\n }\n\n .vindi-wizard-title {\n font-size: 24px;\n margin-bottom: 16px;\n }\n\n .vindi-wizard-subtitle {\n font-size: 13px;\n margin-bottom: 24px;\n }\n\n .vindi-wizard-back-btn {\n padding: 10px 14px;\n font-size: 13px;\n margin-bottom: 16px;\n }\n\n .vindi-wizard-continue {\n width: 100%;\n padding: 12px 20px;\n font-size: 16px;\n margin-top: 20px;\n }\n\n .vindi-wizard-method {\n padding: 12px;\n margin-bottom: 12px;\n\n &-title {\n font-size: 14px;\n }\n\n &-desc {\n font-size: 12px;\n }\n }\n\n .vindi-wizard-switch {\n width: 35px;\n height: 20px;\n }\n\n .vindi-wizard-slider {\n width: 38px;\n height: 20px;\n\n &::before {\n height: 14px;\n width: 14px;\n left: 3px;\n bottom: 3px;\n }\n }\n\n .vindi-wizard-switch input:checked + .vindi-wizard-slider::before {\n transform: translateX(14px);\n }\n\n .vindi-wizard-icons {\n margin-bottom: 20px;\n gap: 12px;\n\n img {\n width: 28px;\n }\n }\n\n .vindi-wizard-anexo {\n width: 14px !important;\n }\n}\n\n@media (max-width: 480px) {\n #vindi-wizard-container {\n padding: 12px;\n }\n\n #vindi-wizard-login,\n #vindi-wizard-register {\n padding: 16px;\n }\n\n .vindi-wizard-title {\n font-size: 20px;\n }\n\n .vindi-wizard-subtitle {\n font-size: 12px;\n margin-bottom: 20px;\n }\n\n .vindi-wizard-method {\n padding: 10px;\n margin-bottom: 10px;\n\n &-title {\n font-size: 13px;\n }\n\n &-desc {\n font-size: 11px;\n }\n\n &-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 2px;\n }\n }\n\n .vindi-wizard-tag.active {\n font-size: 10px;\n padding: 1px 6px;\n }\n\n .vindi-wizard-switch {\n width: 36px;\n height: 20px;\n }\n\n .vindi-wizard-continue {\n padding: 10px 16px;\n font-size: 14px;\n }\n\n .vindi-wizard-back-btn {\n padding: 8px 12px;\n font-size: 12px;\n }\n\n .vindi-wizard-icons {\n gap: 8px;\n\n img {\n width: 24px;\n }\n }\n\n .vindi-wizard-anexo {\n width: 12px !important;\n }\n}\n\n@media (max-width: 600px) {\n #vindi-wizard-login,\n #vindi-wizard-container,\n #vindi-wizard-register {\n padding: 0;\n }\n\n .vindi-wizard-continue,\n .vindi-wizard-back-btn,\n .vindi-wizard-switch,\n .vindi-wizard-btn {\n min-height: 44px;\n }\n\n .vindi-wizard-method {\n min-height: 60px;\n }\n\n .vindi-wizard-input {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n }\n .vindi-wizard-options-field {\n flex-direction: column;\n gap: 0px;\n }\n}\n\n@media (max-width: 767px) and (orientation: landscape) {\n .vindi-wizard-method {\n flex-direction: row;\n align-items: center;\n }\n\n .vindi-wizard-method-left {\n max-width: 75%;\n }\n\n .vindi-wizard-switch {\n align-self: center;\n }\n\n #vindi-wizard-container {\n height: auto;\n padding: 16px;\n }\n\n .vindi-wizard-title {\n font-size: 20px;\n }\n}\n","$color-white: #ffffff;\n$color-text: #111827;\n$color-muted: #6b7280;\n$color-primary: #00155b;\n$color-border: #e5e7eb;\n$color-switch-bg: #d1d5db;\n$color-switch-checked: #2563eb;\n\n$color-accent: #403833;\n$color-primary-alt: #001f3f;\n$color-box-bg: #fff;\n$color-soft-border: #e1e1e1ff;\n\n$bp-1024: 1024px;\n$bp-767: 767px;\n$bp-600: 600px;\n$bp-480: 480px;\n$bp-360: 360px;\n\n@mixin mq-max($w) {\n @media (max-width: $w) {\n @content;\n }\n}\n\n.vindi-switch {\n position: relative;\n display: inline-block;\n width: 42px;\n height: 24px;\n\n input {\n opacity: 0;\n width: 0;\n height: 0;\n }\n\n .vindi-slider {\n position: absolute;\n cursor: pointer;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: $color-switch-bg;\n transition: 0.3s;\n border-radius: 24px;\n\n &::before {\n position: absolute;\n content: \"\";\n height: 18px;\n width: 18px;\n left: 3px;\n bottom: 3px;\n background-color: $color-white;\n transition: 0.3s;\n border-radius: 50%;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n }\n }\n\n input:checked + .vindi-slider {\n background-color: $color-switch-checked;\n }\n input:checked + .vindi-slider::before {\n transform: translateX(18px);\n }\n}\n\n.vindi-toggle-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: $color-box-bg;\n border: 1px solid $color-border;\n border-radius: 12px;\n padding: 16px;\n margin-bottom: 16px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);\n}\n.vindi-toggle-texts {\n max-width: 75%;\n}\n.vindi-toggle-title {\n font-weight: 600;\n color: $color-text;\n margin: 0.5em !important;\n}\n.vindi-toggle-desc {\n font-size: 12px;\n color: $color-muted;\n margin: 0.5em !important;\n}\n\n.vindi-method {\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: $color-box-bg;\n border: 1px solid $color-border;\n border-radius: 12px;\n padding: 16px;\n margin-bottom: 16px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);\n\n &-left {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n &-icon {\n height: 32px;\n width: 32px;\n background: #e2e9ff;\n padding: 5px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n\n img {\n width: 70%;\n height: 70%;\n }\n }\n &-title {\n font-weight: 600;\n margin: 0.5em !important;\n color: $color-text;\n font-size: 15px;\n }\n &-desc {\n font-size: 13px;\n color: $color-muted;\n margin: 0.5em !important;\n }\n}\n","@use \"../common/shared\" as *;\n\n// Local-only tokens (overrides and extras for onboarding)\n$color-border: #d9d9d9; // overrides default border for this screen\n\n@mixin scrollbar-hide {\n scrollbar-width: none;\n -ms-overflow-style: none;\n &::-webkit-scrollbar {\n display: none;\n }\n}\n\n#vindi-container {\n background: $color-white;\n padding: 40px;\n max-width: 1200px;\n margin: auto;\n}\n\n.vindi-title {\n font-size: 28px;\n font-weight: bold;\n margin-bottom: 24px;\n color: $color-text;\n}\n\n.vindi-tabs {\n display: flex;\n border-bottom: 1px solid $color-border;\n margin-bottom: 24px;\n}\n\n.vindi-tab {\n margin-right: 32px;\n padding-bottom: 12px;\n font-weight: 400;\n color: #58524e;\n cursor: pointer;\n text-decoration: none !important;\n\n &.active {\n border-bottom: 2px solid $color-accent;\n color: $color-accent;\n font-weight: 500;\n }\n}\n\n.vindi-warning-box {\n background: #ebebebff;\n border-radius: 12px;\n display: flex;\n padding: 24px;\n max-height: 450px;\n}\n\n.vindi-warning-left {\n width: 70%;\n padding-right: 12px;\n}\n.vindi-warning-text {\n display: flex;\n align-items: flex-start;\n}\n.vindi-warning-icon {\n font-size: 24px;\n margin-right: 8px;\n}\n.vindi-warning-title {\n font-size: 20px;\n font-weight: bold;\n color: #2a2a3c;\n margin: 0;\n}\n.vindi-warning-desc {\n font-size: 13px;\n color: $color-muted;\n}\n\n.vindi-steps {\n display: flex;\n gap: 16px;\n margin-top: 32px;\n}\n\n.vindi-step {\n background: $color-white;\n border-radius: 12px;\n padding: 20px;\n width: 100%;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);\n display: flex;\n flex-direction: column;\n justify-content: space-around;\n\n &-label {\n color: $color-muted;\n font-size: 13px;\n margin-bottom: 8px;\n }\n &-title {\n font-weight: bold;\n color: $color-primary;\n margin-bottom: 40px;\n font-size: 15px;\n }\n\n &-btn {\n border: none;\n border-radius: 6px;\n padding: 8px 16px;\n font-weight: 500;\n cursor: pointer;\n font-size: 14px;\n text-decoration: none;\n }\n\n &.completed {\n background: #f0f9ff;\n border: 1px solid #bae6fd;\n\n .vindi-step-title {\n color: #075985;\n }\n .vindi-step-label {\n color: #0369a1;\n font-weight: 500;\n }\n }\n}\n\n.vindi-btn-done {\n background: #e6f4ea;\n color: #2e7d32;\n}\n.vindi-btn-config {\n background: $color-white;\n color: #04195d;\n border: 1px solid #e7e7e7ff;\n}\n\n.vindi-test-actions {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.vindi-btn-mark-tested {\n background: #f3f4f6;\n color: #374151;\n border: 1px solid #d1d5db;\n font-size: 12px;\n padding: 6px 12px;\n &:hover {\n background: #e5e7eb;\n border-color: #9ca3af;\n }\n}\n\n.vindi-side {\n width: 30%;\n padding-left: 12px;\n position: relative;\n}\n\n.vindi-tutorial-card {\n background: #1f2937;\n border-radius: 12px;\n overflow: hidden;\n height: 100%;\n position: relative;\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n}\n\n.vindi-tutorial-content {\n position: absolute;\n bottom: 0;\n left: 0;\n padding: 24px;\n color: $color-white;\n}\n.vindi-tutorial-title {\n font-size: 22px;\n font-weight: bold;\n margin-bottom: 18px;\n color: $color-white;\n}\n.vindi-tutorial-container {\n display: flex;\n color: $color-white;\n align-items: center;\n gap: 8px;\n font-size: 16px;\n font-weight: 500;\n}\n.vindi-tutorial-btn {\n background: rgb(131 131 131 / 50%);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 50%;\n padding: 0;\n}\n\n.vindi-progress-text {\n font-size: 11px;\n padding: 4px 0;\n color: #1e1e2f;\n text-align: end;\n}\n.vindi-progress-bar {\n position: relative;\n width: 100px;\n height: 4px;\n background: $color-white;\n border-radius: 2px;\n overflow: hidden;\n}\n.vindi-progress-fill {\n height: 100%;\n background: $color-primary;\n border-radius: 2px;\n transition: width 0.3s ease;\n}\n\n.vindi-box {\n border-radius: 12px;\n display: flex;\n}\n.vindi-box-left {\n width: 50%;\n padding-right: 12px;\n}\n\n.vindi-settings-box {\n max-width: 500px;\n}\n\n.vindi-btn-save {\n background: $color-primary-alt;\n color: $color-white;\n padding: 10px 20px;\n border: none;\n border-radius: 6px;\n font-weight: 600;\n cursor: pointer;\n margin-bottom: 24px;\n}\n\n.vindi-field {\n margin-bottom: 24px;\n}\n.vindi-label {\n display: block;\n margin-bottom: 8px;\n font-weight: 500;\n color: #1f2937;\n}\n\n.vindi-input,\n.vindi-select {\n width: 100% !important;\n max-width: 100% !important;\n padding: 6px 10px !important;\n border: 1px solid $color-soft-border !important;\n border-radius: 8px !important;\n font-size: 14px !important;\n}\n\n.vindi-field-desc {\n font-size: 12px;\n color: $color-muted;\n margin-top: 4px;\n}\n.vindi-section-title {\n font-size: 18px;\n font-weight: 600;\n margin: 30px 0 20px;\n padding-bottom: 10px;\n border-bottom: 1px solid #e5e7eb;\n color: #031252ff;\n}\n.vindi-btn-authorize {\n background: #4f46e5;\n color: $color-white;\n padding: 8px 16px;\n border: none;\n border-radius: 4px;\n margin-top: 8px;\n cursor: pointer;\n}\n.vindi-color {\n height: 36px;\n padding: 0;\n min-width: 60px;\n}\n.vindi-conditional-field {\n display: none;\n}\n\n// Toggle components are imported from shared\n\n// Switch component is imported from shared\n\n// Method card base is imported from shared\n.vindi-method {\n &-header { display: flex; align-items: center; gap: 8px; }\n &-actions { display: flex; align-items: center; gap: 12px; }\n}\n\n.vindi-tag {\n display: none;\n background: #e0edff;\n color: #2563eb;\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 6px;\n font-weight: 500;\n &.active {\n display: inline-block;\n }\n}\n\n.vindi-success-message {\n background: #d4edda;\n color: #155724;\n border: 1px solid #c3e6cb;\n border-radius: 8px;\n padding: 12px 16px;\n margin-bottom: 20px;\n font-size: 14px;\n}\n\n.vindi-error-message {\n background: #f8d7da;\n color: #721c24;\n border: 1px solid #f5c6cb;\n border-radius: 8px;\n padding: 12px 16px;\n margin-bottom: 20px;\n font-size: 14px;\n}\n\n@include mq-max($bp-1024) {\n #vindi-container {\n padding: 24px;\n max-width: 100%;\n }\n\n .vindi-warning-box {\n flex-direction: column;\n max-height: none;\n }\n .vindi-warning-left {\n width: 100%;\n padding-right: 0;\n margin-bottom: 24px;\n }\n .vindi-side {\n width: 100%;\n padding-left: 0;\n }\n .vindi-tutorial-card {\n height: 200px;\n }\n .vindi-steps {\n flex-wrap: wrap;\n gap: 12px;\n }\n .vindi-step {\n min-height: 160px;\n }\n\n .vindi-box-left {\n width: 100%;\n }\n .vindi-settings-box {\n max-width: 100%;\n }\n .vindi-method {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n .vindi-method-actions {\n width: 100%;\n justify-content: space-between;\n }\n}\n\n@include mq-max($bp-767) {\n #vindi-container {\n padding: 16px;\n }\n .vindi-title {\n font-size: 24px;\n margin-bottom: 16px;\n }\n\n .vindi-tabs {\n overflow-x: auto;\n white-space: nowrap;\n @include scrollbar-hide;\n }\n .vindi-tab {\n margin-right: 24px;\n font-size: 14px;\n flex-shrink: 0;\n }\n\n .vindi-warning-box {\n padding: 16px;\n }\n .vindi-warning-text {\n flex-direction: column;\n }\n .vindi-warning-icon {\n font-size: 20px;\n margin-bottom: 8px;\n margin-right: 0;\n }\n .vindi-warning-title {\n font-size: 18px;\n }\n .vindi-steps {\n gap: 12px;\n margin-top: 24px;\n }\n .vindi-step {\n width: 100%;\n padding: 16px;\n min-height: auto;\n }\n .vindi-step-title {\n font-size: 14px;\n margin-bottom: 16px;\n }\n\n .vindi-tutorial-title {\n font-size: 18px;\n margin-bottom: 12px;\n }\n .vindi-tutorial-container {\n font-size: 14px;\n }\n .vindi-progress-bar {\n width: 80px;\n }\n\n .vindi-section-title {\n font-size: 16px;\n margin: 24px 0 16px;\n }\n .vindi-btn-save {\n width: 100%;\n padding: 12px 20px;\n font-size: 16px;\n }\n .vindi-toggle-item {\n padding: 12px;\n }\n .vindi-toggle-title {\n font-size: 14px;\n }\n .vindi-toggle-desc {\n font-size: 11px;\n }\n .vindi-input,\n .vindi-select {\n padding: 10px 12px !important;\n font-size: 16px !important;\n }\n .vindi-btn-authorize {\n width: 100%;\n padding: 10px 16px;\n margin-top: 12px;\n }\n .vindi-color {\n height: 44px;\n min-width: 80px;\n }\n\n .vindi-method {\n padding: 12px;\n }\n .vindi-method-left {\n gap: 10px;\n }\n .vindi-method-icon {\n height: 28px;\n width: 28px;\n }\n .vindi-method-title {\n font-size: 14px;\n }\n .vindi-method-desc {\n font-size: 12px;\n }\n .vindi-step-btn {\n padding: 6px 12px;\n font-size: 13px;\n }\n .vindi-tag.active {\n font-size: 10px;\n padding: 2px 6px;\n }\n\n .vindi-slider {\n width: 38px;\n height: 20px;\n }\n .vindi-slider::before {\n height: 14px;\n width: 14px;\n left: 3px;\n bottom: 3px;\n }\n .vindi-switch input:checked + .vindi-slider::before {\n transform: translateX(14px);\n }\n}\n\n@include mq-max($bp-480) {\n #vindi-container {\n padding: 12px;\n }\n .vindi-title {\n font-size: 20px;\n }\n .vindi-tab {\n margin-right: 16px;\n font-size: 13px;\n padding-bottom: 8px;\n }\n .vindi-warning-box {\n padding: 12px;\n }\n .vindi-warning-title {\n font-size: 16px;\n }\n .vindi-warning-desc {\n font-size: 12px;\n }\n .vindi-step {\n padding: 12px;\n }\n .vindi-step-title {\n font-size: 13px;\n margin-bottom: 12px;\n }\n .vindi-step-btn {\n padding: 6px 12px;\n font-size: 13px;\n }\n .vindi-tutorial-card {\n height: 160px;\n }\n .vindi-tutorial-content {\n padding: 16px;\n }\n .vindi-tutorial-title {\n font-size: 16px;\n margin-bottom: 10px;\n }\n .vindi-tutorial-container {\n font-size: 13px;\n }\n .vindi-tutorial-btn {\n width: 28px;\n height: 28px;\n }\n .vindi-progress-text {\n font-size: 10px;\n }\n .vindi-progress-bar {\n width: 60px;\n height: 3px;\n }\n\n .vindi-section-title {\n font-size: 14px;\n margin: 20px 0 12px;\n }\n .vindi-field {\n margin-bottom: 16px;\n }\n .vindi-label {\n font-size: 13px;\n margin-bottom: 6px;\n }\n .vindi-toggle-item {\n padding: 10px;\n margin-bottom: 12px;\n }\n .vindi-toggle-title {\n font-size: 13px;\n }\n .vindi-toggle-desc {\n font-size: 10px;\n }\n .vindi-field-desc {\n font-size: 10px;\n }\n .vindi-switch {\n width: 36px;\n height: 20px;\n }\n .vindi-btn-save {\n padding: 10px 16px;\n font-size: 14px;\n }\n .vindi-btn-authorize {\n padding: 8px 12px;\n font-size: 14px;\n }\n .vindi-color {\n height: 40px;\n min-width: 70px;\n }\n .vindi-method {\n padding: 10px;\n margin-bottom: 12px;\n }\n .vindi-method-left {\n gap: 8px;\n }\n .vindi-method-icon {\n height: 24px;\n width: 24px;\n padding: 4px;\n }\n .vindi-method-title {\n font-size: 13px;\n }\n .vindi-method-desc {\n font-size: 11px;\n }\n .vindi-tag.active {\n font-size: 9px;\n padding: 1px 5px;\n }\n}\n\n@include mq-max($bp-600) {\n .vindi-warning-text > div {\n max-width: 100% !important;\n }\n\n .vindi-input,\n .vindi-select {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n }\n .vindi-select {\n background-image: url(\"data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6,9 12,15 18,9'%3e%3c/polyline%3e%3c/svg%3e\");\n background-repeat: no-repeat;\n background-position: right 12px center;\n background-size: 16px;\n padding-right: 40px !important;\n }\n\n .vindi-btn-save,\n .vindi-btn-authorize,\n .vindi-switch {\n min-height: 44px;\n }\n .vindi-toggle-item {\n min-height: 60px;\n }\n .vindi-method {\n min-height: 60px;\n }\n .vindi-method-actions {\n gap: 8px;\n }\n}\n\n@media (max-width: #{$bp-767}) and (orientation: landscape) {\n .vindi-toggle-item {\n flex-direction: row;\n align-items: center;\n }\n .vindi-toggle-texts {\n max-width: 75%;\n }\n .vindi-switch {\n align-self: center;\n }\n .vindi-method {\n flex-direction: row;\n align-items: center;\n }\n .vindi-method-actions {\n width: auto;\n }\n}\n\n@include mq-max($bp-360) {\n #vindi-container {\n padding: 8px;\n }\n .vindi-title {\n font-size: 18px;\n }\n .vindi-tab {\n margin-right: 12px;\n font-size: 12px;\n }\n .vindi-method {\n padding: 8px;\n }\n .vindi-method-icon {\n height: 20px;\n width: 20px;\n padding: 3px;\n }\n .vindi-method-title {\n font-size: 12px;\n }\n .vindi-method-desc {\n font-size: 10px;\n }\n .vindi-step-btn {\n padding: 4px 8px;\n font-size: 11px;\n }\n .vindi-tag.active {\n font-size: 8px;\n padding: 1px 4px;\n }\n .vindi-btn-save {\n font-size: 13px;\n padding: 8px 12px;\n }\n .vindi-label {\n font-size: 12px;\n }\n .vindi-input {\n font-size: 13px !important;\n padding: 6px 8px !important;\n }\n}\n","@use \"../common/shared\" as *;\n\n$color-headline: #1f2937;\n$color-primary-hover: #1d4ed8;\n$color-soft-border: #e9ecef;\n$color-soft-bg: #f8f9fa;\n$color-panel-bg: #f9fafb;\n$color-method-icon-bg: #e2e9ff;\n$color-tutorial-bg: #1f2937;\n\n$color-success-bg: #d4edda;\n$color-success-text: #155724;\n$color-success-border: #c3e6cb;\n$color-warn-bg: #fff3cd;\n$color-warn-border: #ffeaa7;\n$color-warn-text: #856404;\n@mixin collapsible {\n transition: all 0.3s ease;\n opacity: 1;\n max-height: 1000px;\n overflow: hidden;\n &.hidden {\n opacity: 0;\n max-height: 0;\n padding: 0 20px;\n margin-bottom: 0;\n }\n}\n\n#vindi-container {\n font-family: \"Segoe UI\", sans-serif;\n background: $color-white;\n max-width: 1200px;\n margin: auto;\n}\n\n.vindi-box {\n border-radius: 12px;\n display: flex;\n gap: 24px;\n &-left {\n width: 50%;\n }\n}\n.vindi-side {\n width: 50%;\n position: relative;\n}\n\n.vindi-tutorial-card {\n background: $color-tutorial-bg;\n overflow: hidden;\n height: 100%;\n position: relative;\n border-radius: 12px;\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n}\n.vindi-tutorial-content {\n position: absolute;\n bottom: 0;\n left: 0;\n padding: 24px;\n color: $color-white;\n}\n.vindi-tutorial-title {\n font-size: 18px;\n font-weight: bold;\n margin-bottom: 8px;\n}\n.vindi-tutorial-container {\n display: flex;\n color: $color-white;\n align-items: center;\n gap: 8px;\n font-size: 16px;\n font-weight: 500;\n}\n\n.credit-config {\n font-family: \"Segoe UI\", sans-serif;\n color: #0b0b33;\n padding: 0 20px;\n}\n\n.vindi-back-btn {\n border: none;\n color: #666;\n font-size: 14px;\n margin-bottom: 20px;\n cursor: pointer;\n background: #ebebeb;\n border-radius: 6px;\n padding: 8px 12px;\n transition: background-color 0.2s ease;\n &:hover {\n background: #d4d4d4;\n }\n}\n\n.title {\n font-size: 28px;\n font-weight: 700;\n margin-bottom: 24px;\n line-height: 1.4;\n color: $color-headline;\n}\n\n.vindi-method {\n &-icon { background: $color-method-icon-bg; }\n}\n\n.form-label {\n font-size: 14px;\n font-weight: 500;\n margin-bottom: 6px;\n display: block;\n color: #374151;\n}\n.vindi-input {\n width: 100% !important;\n padding: 10px 12px !important;\n border: 1px solid #d1d5db !important;\n border-radius: 8px !important;\n font-size: 14px !important;\n color: #374151 !important;\n resize: vertical;\n transition: border-color 0.2s ease;\n max-height: 150px;\n max-width: 600px;\n &:focus {\n outline: none;\n border-color: $color-switch-checked !important;\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n }\n &[type=\"textarea\"],\n textarea & {\n min-height: 80px;\n font-family: inherit;\n }\n}\n.vindi-mb {\n margin-bottom: 22px;\n}\n.btn-primary {\n background: $color-primary;\n color: $color-white;\n border: none;\n font-size: 14px;\n font-weight: 500;\n padding: 12px 24px;\n border-radius: 8px;\n cursor: pointer;\n transition: background-color 0.2s ease;\n width: 100%;\n &:hover {\n background: $color-primary-hover;\n }\n}\n\n.vindi-success-message {\n background: $color-success-bg;\n color: $color-success-text;\n border: 1px solid $color-success-border;\n border-radius: 8px;\n padding: 12px 16px;\n margin-bottom: 20px;\n font-size: 14px;\n}\n.vindi-alert {\n padding: 12px 16px;\n border-radius: 8px;\n margin-bottom: 16px;\n font-size: 14px;\n &-warning {\n background-color: $color-warn-bg;\n border: 1px solid $color-warn-border;\n color: $color-warn-text;\n }\n}\n\n.vindi-methods-section {\n background: $color-panel-bg;\n border: 1px solid $color-border;\n border-radius: 12px;\n padding: 20px;\n margin-top: 8px;\n}\n.vindi-section-title {\n font-size: 16px;\n font-weight: 600;\n margin-bottom: 8px;\n color: $color-text;\n}\n.vindi-section-desc {\n font-size: 14px;\n color: $color-muted;\n margin-bottom: 16px;\n}\n.vindi-discount-fields {\n background: $color-soft-bg;\n border: 1px solid $color-soft-border;\n border-radius: 12px;\n padding: 20px;\n margin-bottom: 20px;\n @include collapsible;\n}\n.vindi-discount-title {\n font-weight: 600;\n margin-bottom: 12px;\n color: $color-text;\n}\n.vindi-min-amount-fields {\n background: $color-soft-bg;\n border: 1px solid $color-soft-border;\n border-radius: 12px;\n padding: 20px;\n margin-bottom: 20px;\n @include collapsible;\n}\n\n.vindi-checkbox-group {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n margin-top: 8px;\n}\n.vindi-checkbox-item {\n display: flex;\n align-items: center;\n background: $color-soft-bg;\n border: 1px solid $color-soft-border;\n border-radius: 8px;\n padding: 8px 12px;\n cursor: pointer;\n transition: all 0.2s ease;\n &:hover {\n background: $color-soft-border;\n }\n input[type=\"checkbox\"] {\n margin-right: 8px;\n }\n}\n.vindi-checkbox-text {\n font-size: 14px;\n color: #495057;\n}\n\n@include mq-max($bp-1024) {\n .vindi-side {\n display: none;\n }\n .vindi-box-left {\n width: 100%;\n padding: 0;\n }\n .vindi-box {\n flex-direction: column;\n gap: 0;\n }\n #vindi-container {\n padding: 24px;\n max-width: 100%;\n }\n .credit-config {\n padding: 0;\n }\n}\n@include mq-max($bp-767) {\n #vindi-container {\n padding: 16px;\n }\n .title {\n font-size: 24px;\n margin-bottom: 20px;\n }\n .vindi-back-btn {\n padding: 10px 14px;\n font-size: 13px;\n margin-bottom: 16px;\n }\n .vindi-method,\n .vindi-toggle-item {\n padding: 12px;\n margin-bottom: 12px;\n }\n .vindi-method-title,\n .vindi-toggle-title {\n font-size: 14px;\n }\n .vindi-method-desc,\n .vindi-toggle-desc {\n font-size: 12px;\n }\n .form-label {\n font-size: 13px;\n margin-bottom: 5px;\n }\n .vindi-input {\n padding: 10px 12px !important;\n font-size: 16px !important;\n }\n .vindi-mb {\n margin-bottom: 18px;\n }\n .btn-primary {\n padding: 14px 20px;\n font-size: 16px;\n margin-top: 8px;\n }\n .vindi-discount-fields,\n .vindi-methods-section {\n padding: 16px;\n }\n}\n@include mq-max($bp-480) {\n #vindi-container {\n padding: 12px;\n }\n .title {\n font-size: 20px;\n margin-bottom: 16px;\n }\n .vindi-back-btn {\n padding: 8px 12px;\n font-size: 12px;\n }\n .vindi-method,\n .vindi-toggle-item {\n padding: 10px;\n margin-bottom: 10px;\n }\n .vindi-toggle-texts {\n max-width: 70%;\n }\n .vindi-discount-fields,\n .vindi-methods-section {\n padding: 12px;\n }\n}\n@include mq-max($bp-600) {\n .btn-primary,\n .vindi-back-btn,\n .vindi-switch {\n min-height: 44px;\n }\n .vindi-method,\n .vindi-toggle-item {\n min-height: 60px;\n }\n .vindi-input {\n min-height: 44px;\n }\n}\n"],"names":[],"version":3,"file":"index.css.map"} -
vindi-pagamentos/trunk/package.json
r3352041 r3356741 1 1 { 2 2 "name": "vindi-pagamentos", 3 "version": "1.0. 3",3 "version": "1.0.4", 4 4 "description": "WooCommerce payment plugin using Vindi gateways", 5 5 "repository": "https://github.com/vindi/vindi-pagamentos", -
vindi-pagamentos/trunk/readme.txt
r3352041 r3356741 1 1 === Vindi Pagamentos === 2 Contributors: a guiart0, lucastgama, andrenascimento03122 Contributors: apiki, aguiart0, lucastgama, andrenascimento0312 3 3 Tags: woocommerce, payment, gateways, vindi, pagamentos 4 4 Requires at least: 6.0 5 5 Tested up to: 6.8 6 Stable tag: 1.0. 36 Stable tag: 1.0.4 7 7 Requires PHP: 7.4 8 8 License: GPLv3 … … 56 56 57 57 == Changelog == 58 = 1.0.4 = 04-09-2025 59 * Melhoria: Adição de novas paginas de configurações 60 * Correção: Captura do person type melhorado nos blocks. 61 58 62 = 1.0.3 = 27-08-2025 59 63 * Correção: Captura do person type melhorado -
vindi-pagamentos/trunk/vendor/autoload.php
r3352041 r3356741 23 23 require_once __DIR__ . '/composer/autoload_real.php'; 24 24 25 return ComposerAutoloaderInit 2fb7a1a268e6a6f6c30ac83495a07535::getLoader();25 return ComposerAutoloaderInit404aa493158294a6d290734782aa5ec6::getLoader(); -
vindi-pagamentos/trunk/vendor/composer/autoload_real.php
r3352041 r3356741 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit 2fb7a1a268e6a6f6c30ac83495a075355 class ComposerAutoloaderInit404aa493158294a6d290734782aa5ec6 6 6 { 7 7 private static $loader; … … 23 23 } 24 24 25 spl_autoload_register(array('ComposerAutoloaderInit 2fb7a1a268e6a6f6c30ac83495a07535', 'loadClassLoader'), true, true);25 spl_autoload_register(array('ComposerAutoloaderInit404aa493158294a6d290734782aa5ec6', 'loadClassLoader'), true, true); 26 26 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 27 spl_autoload_unregister(array('ComposerAutoloaderInit 2fb7a1a268e6a6f6c30ac83495a07535', 'loadClassLoader'));27 spl_autoload_unregister(array('ComposerAutoloaderInit404aa493158294a6d290734782aa5ec6', 'loadClassLoader')); 28 28 29 29 require __DIR__ . '/autoload_static.php'; 30 call_user_func(\Composer\Autoload\ComposerStaticInit 2fb7a1a268e6a6f6c30ac83495a07535::getInitializer($loader));30 call_user_func(\Composer\Autoload\ComposerStaticInit404aa493158294a6d290734782aa5ec6::getInitializer($loader)); 31 31 32 32 $loader->register(true); 33 33 34 $filesToLoad = \Composer\Autoload\ComposerStaticInit 2fb7a1a268e6a6f6c30ac83495a07535::$files;34 $filesToLoad = \Composer\Autoload\ComposerStaticInit404aa493158294a6d290734782aa5ec6::$files; 35 35 $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { 36 36 if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { -
vindi-pagamentos/trunk/vendor/composer/autoload_static.php
r3352041 r3356741 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit 2fb7a1a268e6a6f6c30ac83495a075357 class ComposerStaticInit404aa493158294a6d290734782aa5ec6 8 8 { 9 9 public static $files = array ( … … 32 32 { 33 33 return \Closure::bind(function () use ($loader) { 34 $loader->prefixLengthsPsr4 = ComposerStaticInit 2fb7a1a268e6a6f6c30ac83495a07535::$prefixLengthsPsr4;35 $loader->prefixDirsPsr4 = ComposerStaticInit 2fb7a1a268e6a6f6c30ac83495a07535::$prefixDirsPsr4;36 $loader->classMap = ComposerStaticInit 2fb7a1a268e6a6f6c30ac83495a07535::$classMap;34 $loader->prefixLengthsPsr4 = ComposerStaticInit404aa493158294a6d290734782aa5ec6::$prefixLengthsPsr4; 35 $loader->prefixDirsPsr4 = ComposerStaticInit404aa493158294a6d290734782aa5ec6::$prefixDirsPsr4; 36 $loader->classMap = ComposerStaticInit404aa493158294a6d290734782aa5ec6::$classMap; 37 37 38 38 }, null, ClassLoader::class); -
vindi-pagamentos/trunk/vendor/composer/installed.php
r3352041 r3356741 2 2 'root' => array( 3 3 'name' => 'vindi/vindi-pagamentos', 4 'pretty_version' => '1.0. 3',5 'version' => '1.0. 3.0',4 'pretty_version' => '1.0.4', 5 'version' => '1.0.4.0', 6 6 'reference' => NULL, 7 7 'type' => 'wordpress-plugin', … … 12 12 'versions' => array( 13 13 'vindi/vindi-pagamentos' => array( 14 'pretty_version' => '1.0. 3',15 'version' => '1.0. 3.0',14 'pretty_version' => '1.0.4', 15 'version' => '1.0.4.0', 16 16 'reference' => NULL, 17 17 'type' => 'wordpress-plugin', -
vindi-pagamentos/trunk/vindi-pagamentos.php
r3352041 r3356741 7 7 * Author: Apiki WordPress 8 8 * Author URI: https://github.com/vindi/ 9 * Version: 1.0. 39 * Version: 1.0.4 10 10 * Requires PHP: 7.4 11 11 * Requires at least: 6.0 … … 15 15 * 16 16 * @link https://vindi.com.br/ 17 * @since 1.0. 317 * @since 1.0.4 18 18 * @package VindiPagamentos 19 19 */
Note: See TracChangeset
for help on using the changeset viewer.