{"version":3,"file":"js/household-expense-calcuator-2022.841f73ba.js","mappings":"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","sources":["webpack://vero/./src/sites/tax_fi/js/vue/components/A11YAnnouncer.vue?5eb3","webpack://vero/src/sites/tax_fi/js/vue/components/A11YAnnouncer.vue","webpack://vero/./src/sites/tax_fi/js/vue/components/A11YAnnouncer.vue?dd87","webpack://vero/./src/sites/tax_fi/js/vue/components/A11YAnnouncer.vue","webpack://vero/./src/sites/tax_fi/js/vue/components/Tooltip.vue?51c3","webpack://vero/src/sites/tax_fi/js/vue/components/Tooltip.vue","webpack://vero/./src/sites/tax_fi/js/vue/components/Tooltip.vue?e35d","webpack://vero/./src/sites/tax_fi/js/vue/components/Tooltip.vue","webpack://vero/./src/sites/tax_fi/js/vue/components/calculators/HouseholdExpenseCalculator2022.vue?7398","webpack://vero/src/sites/tax_fi/js/vue/components/calculators/HouseholdExpenseCalculator2022.vue","webpack://vero/./src/sites/tax_fi/js/vue/components/calculators/HouseholdExpenseCalculator2022.vue?8a4d","webpack://vero/./src/sites/tax_fi/js/vue/components/calculators/HouseholdExpenseCalculator2022.vue","webpack://vero/./src/sites/tax_fi/js/vue/components/calculators/partials/CalculatorField.vue?02f9","webpack://vero/src/sites/tax_fi/js/vue/components/calculators/partials/CalculatorField.vue","webpack://vero/./src/sites/tax_fi/js/vue/components/calculators/partials/CalculatorField.vue?2967","webpack://vero/./src/sites/tax_fi/js/vue/components/calculators/partials/CalculatorField.vue","webpack://vero/./src/sites/tax_fi/js/vue/components/calculators/partials/CalculatorSelect.vue?2cf5","webpack://vero/src/sites/tax_fi/js/vue/components/calculators/partials/CalculatorSelect.vue","webpack://vero/./src/sites/tax_fi/js/vue/components/calculators/partials/CalculatorSelect.vue?bbb7","webpack://vero/./src/sites/tax_fi/js/vue/components/calculators/partials/CalculatorSelect.vue","webpack://vero/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://vero/./node_modules/core-js/modules/es.regexp.flags.js","webpack://vero/./node_modules/core-js/modules/es.symbol.description.js","webpack://vero/./src/api/CalculatorApi.js","webpack://vero/./src/sites/tax_fi/js/vue/components/calculators/models/calculatorModels.js","webpack://vero/./src/sites/tax_fi/js/vue/components/calculators/utils/calculatorHelpers.js","webpack://vero/./node_modules/vee-validate3/dist/rules.js","webpack://vero/./src/utils/vee-validate.js","webpack://vero/./node_modules/vee-validate3/dist/vee-validate.esm.js","webpack://vero/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://vero/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://vero/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://vero/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://vero/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js"],"sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"announcer sr-only\",attrs:{\"role\":\"status\",\"aria-live\":\"polite\"}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"announcer sr-only\" role=\"status\" aria-live=\"polite\">\r\n <slot></slot>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: 'A11YAnnouncer'\r\n};\r\n</script>\r\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./A11YAnnouncer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./A11YAnnouncer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./A11YAnnouncer.vue?vue&type=template&id=c84bc734\"\nimport script from \"./A11YAnnouncer.vue?vue&type=script&lang=js\"\nexport * from \"./A11YAnnouncer.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tooltip\"},[_vm._t(\"default\"),(_vm.tooltipText)?_c('button',{staticClass:\"tooltip__button\",attrs:{\"type\":\"button\",\"aria-label\":_vm.ariaLabel,\"aria-describedby\":(\"tooltip_\" + _vm.id),\"aria-controls\":(\"tooltip_\" + _vm.id),\"aria-haspopup\":\"true\",\"aria-expanded\":_vm.isOpen ? 'true' : 'false'},on:{\"click\":function($event){$event.preventDefault();return _vm.toggle($event)}}},[_c('icon',{attrs:{\"glyph\":\"#icon-info\"}})],1):_vm._e(),(_vm.tooltipText)?_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isOpen && _vm.tooltipText),expression:\"isOpen && tooltipText\"}],staticClass:\"tooltip__text\",attrs:{\"role\":\"tooltip\",\"id\":(\"tooltip_\" + _vm.id)}},[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.tooltipText)}}),_c('div',{staticClass:\"u-flex u-flex-right\"},[_c('span',{staticClass:\"btn-close\",attrs:{\"aria-label\":_vm.$trans('/common/close')},on:{\"click\":function($event){$event.preventDefault();return _vm.toggle($event)}}},[_vm._v(\" \"+_vm._s(_vm.$trans('/common/close'))+\" \")])])]):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"tooltip\">\r\n <slot></slot>\r\n <button\r\n type=\"button\"\r\n class=\"tooltip__button\"\r\n :aria-label=\"ariaLabel\"\r\n :aria-describedby=\"`tooltip_${id}`\"\r\n :aria-controls=\"`tooltip_${id}`\"\r\n aria-haspopup=\"true\"\r\n :aria-expanded=\"isOpen ? 'true' : 'false'\"\r\n v-if=\"tooltipText\"\r\n @click.prevent=\"toggle\"\r\n >\r\n <icon glyph=\"#icon-info\" />\r\n </button>\r\n <div\r\n role=\"tooltip\"\r\n class=\"tooltip__text\"\r\n :id=\"`tooltip_${id}`\"\r\n v-show=\"isOpen && tooltipText\"\r\n v-if=\"tooltipText\"\r\n v-cloak\r\n >\r\n <div v-html=\"tooltipText\"></div>\r\n <div class=\"u-flex u-flex-right\">\r\n <span class=\"btn-close\" :aria-label=\"$trans('/common/close')\" @click.prevent=\"toggle\">\r\n {{ $trans('/common/close') }}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: 'Tooltip',\r\n props: {\r\n tooltipText: { type: String, default: null },\r\n tooltipAriaLabel: {\r\n type: String,\r\n default: ''\r\n }\r\n },\r\n data() {\r\n return {\r\n id: null,\r\n isOpen: false,\r\n ariaLabel: ''\r\n };\r\n },\r\n mounted() {\r\n // eslint-disable-next-line no-underscore-dangle\r\n this.id = this._uid;\r\n this.ariaLabel = this.tooltipAriaLabel || this.$trans('/common/MoreInfo');\r\n },\r\n methods: {\r\n toggle() {\r\n this.isOpen = !this.isOpen;\r\n }\r\n }\r\n};\r\n</script>\r\n","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Tooltip.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Tooltip.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Tooltip.vue?vue&type=template&id=058c9445\"\nimport script from \"./Tooltip.vue?vue&type=script&lang=js\"\nexport * from \"./Tooltip.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"calculator household-expense-calculator\"},[_c('ValidationObserver',{ref:\"observer\",attrs:{\"tag\":\"form\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.onSubmit($event)}}},[_c('fieldset',{staticClass:\"calculator__group\"},[_c('Tooltip',{attrs:{\"tooltip-text\":this.content.Tooltips.Expense_type_infotext}},[_c('label',{attrs:{\"for\":\"expenseTypeId\"}},[_vm._v(_vm._s(_vm.$trans('/calculators/HouseholdExpenseCalculatorExpenseType')))])]),_c('calculator-select',{ref:\"expenseTypeId\",attrs:{\"name\":\"expenseTypeId\",\"rules\":\"required\",\"isKeyValuePair\":_vm.keyValuePair,\"options\":this.content.ExpenseTypes},model:{value:(_vm.selectedType),callback:function ($$v) {_vm.selectedType=$$v},expression:\"selectedType\"}}),_c('Tooltip',{attrs:{\"tooltip-text\":this.content.Tooltips.Expense_infotext}},[_c('label',{attrs:{\"for\":\"expense\"}},[_vm._v(_vm._s(_vm.$trans('/calculators/HouseholdExpenseCalculatorGivenValue')))])]),_c('calculator-field',{ref:\"expense\",attrs:{\"name\":\"expense\",\"rules\":\"required|currency\"},model:{value:(_vm.expense),callback:function ($$v) {_vm.expense=$$v},expression:\"expense\"}})],1),_c('fieldset',{staticClass:\"calculator__group calculator__group--buttons\"},[_c('button',{staticClass:\"btn\",attrs:{\"type\":\"submit\",\"data-cy\":\"calculatorSubmit\",\"disabled\":_vm.isCalculating}},[_vm._v(\" \"+_vm._s(_vm.$trans('/calculators/Calculate'))+\" \")]),_c('button',{staticClass:\"calculator-reset\",attrs:{\"data-cy\":\"calculatorReset\"},on:{\"click\":function($event){$event.preventDefault();return _vm.resetCalculator($event)}}},[_vm._v(\" \"+_vm._s(_vm.$trans('/calculators/ResetForm'))+\" \")])])]),_c('A11YAnnouncer',[_vm._v(_vm._s(_vm.ariaMessage))]),(_vm.showResult)?_c('div',{staticClass:\"calculator-result\"},[_c('div',{staticClass:\"calculator-result__value-container calculator-result__value-container--white\"},[_c('h2',{staticClass:\"calculator-result__heading\",domProps:{\"textContent\":_vm._s(_vm.$trans('/calculators/HouseholdExpenseFirstResult'))}}),_c('span',{staticClass:\"calculator-result__value\",attrs:{\"data-cy\":\"individualResult\"}},[_vm._v(\" \"+_vm._s(_vm.addThousandSeparators(_vm.result.taxCredit))+\" € \")])]),_c('div',{staticClass:\"calculator-breakdown\"},[_c('h2',{staticClass:\"calculator-breakdown__heading\",domProps:{\"textContent\":_vm._s(_vm.$trans('/calculators/InheritanceTaxCalculatorUsedValueHeading'))}}),_c('ul',[_c('li',[_c('div',{staticClass:\"calculator-breakdown__cell\"},[_vm._v(\" \"+_vm._s(_vm.$trans('/calculators/HouseholdExpenseCalculatorResultExpense'))+\": \")]),_c('div',{staticClass:\"calculator-breakdown__cell\"},[_vm._v(\" \"+_vm._s(_vm.addThousandSeparators(_vm.expense))+\" € \")])]),_c('li',[_c('div',{staticClass:\"calculator-breakdown__cell\"},[_vm._v(\" \"+_vm._s(_vm.$trans('/calculators/HouseholdExpenseCalculatorPercentage'))+\": \")]),_c('div',{staticClass:\"calculator-breakdown__cell\"},[_vm._v(\" \"+_vm._s(_vm.addThousandSeparators(_vm.limitValues.percentage))+\" % \")])]),_c('li',[_c('div',{staticClass:\"calculator-breakdown__cell\"},[_vm._v(\" \"+_vm._s(_vm.$trans('/calculators/HouseholdExpenseCalculatorTreshold'))+\": \")]),_c('div',{staticClass:\"calculator-breakdown__cell\"},[_vm._v(\" \"+_vm._s(_vm.addThousandSeparators(_vm.limitValues.treshold))+\" € \")])]),_c('li',[_c('div',{staticClass:\"calculator-breakdown__cell\"},[_vm._v(\" \"+_vm._s(_vm.$trans('/calculators/HouseholdExpenseCalculatorResultFormulaTitle'))+\": \")]),_c('div',{staticClass:\"calculator-breakdown__cell\"},[_vm._v(\" \"+_vm._s(_vm.$trans('/calculators/HouseholdExpenseCalculatorResultFormula'))+\" \")])]),_c('li',[_c('div',{staticClass:\"calculator-breakdown__cell\"},[_vm._v(\" \"+_vm._s(_vm.$trans('/calculators/HouseholdExpenseCalculatorResultFormulaWithValueTitle'))+\": \")]),_c('div',{staticClass:\"calculator-breakdown__cell\"},[_vm._v(\" \"+_vm._s(_vm.addThousandSeparators(_vm.expense))+\" € * \"+_vm._s(_vm.addThousandSeparators(_vm.limitValues.percentage))+\" % - \"+_vm._s(_vm.addThousandSeparators(_vm.limitValues.treshold))+\" € \")])]),_c('li',[(this.selectedType.Key == 1)?_c('div',{staticClass:\"calculator-breakdown__cell\"},[_vm._v(\" \"+_vm._s(_vm.$trans( '/calculators/HouseholdExpenseCalculatorResultMaxAmountHouseholdNursingCaregiving' ))+\": \")]):(this.selectedType.Key == 2)?_c('div',{staticClass:\"calculator-breakdown__cell\"},[_vm._v(\" \"+_vm._s(_vm.$trans( '/calculators/HouseholdExpenseCalculatorResultMaxAmountMaintenanceModernisation' ))+\": \")]):_c('div',{staticClass:\"calculator-breakdown__cell\"},[_vm._v(\" \"+_vm._s(_vm.$trans('/calculators/HouseholdExpenseCalculatorResultMaxAmountOil'))+\": \")]),_c('div',{staticClass:\"calculator-breakdown__cell\"},[_vm._v(\" \"+_vm._s(_vm.addThousandSeparators(_vm.limitValues.limit))+\" € \")])])])])]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"calculator household-expense-calculator\">\r\n <ValidationObserver ref=\"observer\" tag=\"form\" @submit.prevent=\"onSubmit\">\r\n <fieldset class=\"calculator__group\">\r\n <Tooltip :tooltip-text=\"this.content.Tooltips.Expense_type_infotext\">\r\n <label for=\"expenseTypeId\">{{\r\n $trans('/calculators/HouseholdExpenseCalculatorExpenseType')\r\n }}</label>\r\n </Tooltip>\r\n <calculator-select\r\n name=\"expenseTypeId\"\r\n v-model=\"selectedType\"\r\n rules=\"required\"\r\n ref=\"expenseTypeId\"\r\n :isKeyValuePair=\"keyValuePair\"\r\n :options=\"this.content.ExpenseTypes\"\r\n ></calculator-select>\r\n <Tooltip :tooltip-text=\"this.content.Tooltips.Expense_infotext\">\r\n <label for=\"expense\">{{\r\n $trans('/calculators/HouseholdExpenseCalculatorGivenValue')\r\n }}</label>\r\n </Tooltip>\r\n <calculator-field\r\n name=\"expense\"\r\n rules=\"required|currency\"\r\n ref=\"expense\"\r\n v-model=\"expense\"\r\n />\r\n </fieldset>\r\n <fieldset class=\"calculator__group calculator__group--buttons\">\r\n <button class=\"btn\" type=\"submit\" data-cy=\"calculatorSubmit\" :disabled=\"isCalculating\">\r\n {{ $trans('/calculators/Calculate') }}\r\n </button>\r\n <button class=\"calculator-reset\" data-cy=\"calculatorReset\" @click.prevent=\"resetCalculator\">\r\n {{ $trans('/calculators/ResetForm') }}\r\n </button>\r\n </fieldset>\r\n </ValidationObserver>\r\n <!-- Announcer -->\r\n <A11YAnnouncer>{{ ariaMessage }}</A11YAnnouncer>\r\n <!-- Result -->\r\n <div class=\"calculator-result\" v-if=\"showResult\">\r\n <div class=\"calculator-result__value-container calculator-result__value-container--white\">\r\n <h2\r\n v-text=\"$trans('/calculators/HouseholdExpenseFirstResult')\"\r\n class=\"calculator-result__heading\"\r\n ></h2>\r\n <span class=\"calculator-result__value\" data-cy=\"individualResult\">\r\n {{ addThousandSeparators(result.taxCredit) }} €\r\n </span>\r\n </div>\r\n <div class=\"calculator-breakdown\">\r\n <h2\r\n v-text=\"$trans('/calculators/InheritanceTaxCalculatorUsedValueHeading')\"\r\n class=\"calculator-breakdown__heading\"\r\n ></h2>\r\n <ul>\r\n <!-- Työn osuus -->\r\n <li>\r\n <div class=\"calculator-breakdown__cell\">\r\n {{ $trans('/calculators/HouseholdExpenseCalculatorResultExpense') }}:\r\n </div>\r\n <div class=\"calculator-breakdown__cell\">\r\n {{ addThousandSeparators(expense) }} €\r\n </div>\r\n </li>\r\n <!-- Prosenttiosuus -->\r\n <li>\r\n <div class=\"calculator-breakdown__cell\">\r\n {{ $trans('/calculators/HouseholdExpenseCalculatorPercentage') }}:\r\n </div>\r\n <div class=\"calculator-breakdown__cell\">\r\n {{ addThousandSeparators(limitValues.percentage) }} %\r\n </div>\r\n </li>\r\n <!-- Omavastuu -->\r\n <li>\r\n <div class=\"calculator-breakdown__cell\">\r\n {{ $trans('/calculators/HouseholdExpenseCalculatorTreshold') }}:\r\n </div>\r\n <div class=\"calculator-breakdown__cell\">\r\n {{ addThousandSeparators(limitValues.treshold) }} €\r\n </div>\r\n </li>\r\n <!-- Laskentakaava -->\r\n <li>\r\n <div class=\"calculator-breakdown__cell\">\r\n {{ $trans('/calculators/HouseholdExpenseCalculatorResultFormulaTitle') }}:\r\n </div>\r\n <div class=\"calculator-breakdown__cell\">\r\n {{ $trans('/calculators/HouseholdExpenseCalculatorResultFormula') }}\r\n </div>\r\n </li>\r\n <!-- Laskentakaavassa luvut -->\r\n <li>\r\n <div class=\"calculator-breakdown__cell\">\r\n {{ $trans('/calculators/HouseholdExpenseCalculatorResultFormulaWithValueTitle') }}:\r\n </div>\r\n <div class=\"calculator-breakdown__cell\">\r\n {{ addThousandSeparators(expense) }} € *\r\n {{ addThousandSeparators(limitValues.percentage) }} % -\r\n {{ addThousandSeparators(limitValues.treshold) }} €\r\n </div>\r\n </li>\r\n <!-- Maksimivähennys -->\r\n <li>\r\n <div v-if=\"this.selectedType.Key == 1\" class=\"calculator-breakdown__cell\">\r\n {{\r\n $trans(\r\n '/calculators/HouseholdExpenseCalculatorResultMaxAmountHouseholdNursingCaregiving'\r\n )\r\n }}:\r\n </div>\r\n <div v-else-if=\"this.selectedType.Key == 2\" class=\"calculator-breakdown__cell\">\r\n {{\r\n $trans(\r\n '/calculators/HouseholdExpenseCalculatorResultMaxAmountMaintenanceModernisation'\r\n )\r\n }}:\r\n </div>\r\n <div v-else class=\"calculator-breakdown__cell\">\r\n {{ $trans('/calculators/HouseholdExpenseCalculatorResultMaxAmountOil') }}:\r\n </div>\r\n <div class=\"calculator-breakdown__cell\">\r\n {{ addThousandSeparators(limitValues.limit) }} €\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport Tooltip from '../Tooltip';\r\nimport CalculatorSelect from './partials/CalculatorSelect';\r\nimport 'utils/vee-validate';\r\nimport { validationMessages } from 'utils/vee-validate';\r\nimport { localize, ValidationObserver } from 'vee-validate3';\r\n\r\nimport A11YAnnouncer from '../A11YAnnouncer';\r\nimport CalculatorField from './partials/CalculatorField';\r\n\r\nimport {\r\n addThousandSeparators,\r\n parseStringToFloat,\r\n decimalToString\r\n} from './utils/calculatorHelpers';\r\nimport { householdExpenseCalculatorModel2022 as calculatorModel } from './models/calculatorModels';\r\n\r\nimport calculatorAPI from 'api/CalculatorApi';\r\n\r\nexport default {\r\n name: 'HouseholdExpenseCalculator2022',\r\n components: { Tooltip, CalculatorField, CalculatorSelect, ValidationObserver, A11YAnnouncer },\r\n props: {\r\n content: { type: Object, default: () => {} }\r\n },\r\n data() {\r\n return {\r\n expense: calculatorModel.inputFields.expense,\r\n selectedType: calculatorModel.inputFields.selectedType,\r\n resultCalculated: false,\r\n calculatorError: false,\r\n isCalculating: false,\r\n result: null,\r\n limitValues: calculatorModel.limitValues,\r\n addThousandSeparators,\r\n keyValuePair: true\r\n };\r\n },\r\n computed: {\r\n showResult() {\r\n return this.resultCalculated && !this.calculatorError && !this.isFormDirty;\r\n },\r\n ariaMessage() {\r\n return this.resultCalculated && !this.isFormDirty\r\n ? this.$trans('/accessibility/ResultCalculated')\r\n : '';\r\n },\r\n isFormDirty() {\r\n const _observer = this.$refs.observer;\r\n return _observer.flags.dirty || false;\r\n }\r\n },\r\n watch: {\r\n selectedType: function () {\r\n if (this.selectedType) {\r\n if (this.selectedType.Key == 1) {\r\n this.setLimitValues(\r\n this.content.LimitValues.LimitHouseholdNursingCaregiving,\r\n this.content.LimitValues.PercentageHouseholdNursingCaregiving\r\n );\r\n } else if (this.selectedType.Key == 2) {\r\n this.setLimitValues(\r\n this.content.LimitValues.LimitMaintenanceModernisation,\r\n this.content.LimitValues.PercentageMaintenanceModernisation\r\n );\r\n } else if (this.selectedType.Key == 3) {\r\n this.setLimitValues(\r\n this.content.LimitValues.LimitOil,\r\n this.content.LimitValues.PercentageOil\r\n );\r\n }\r\n }\r\n }\r\n },\r\n created() {\r\n localize(window.site_locale, validationMessages());\r\n },\r\n methods: {\r\n async onSubmit() {\r\n this.resultCalculated = false;\r\n const _observer = this.$refs.observer;\r\n const isValid = await _observer.validate();\r\n if (!isValid) {\r\n const firstError = this.$el.querySelector('[aria-invalid=true]');\r\n firstError.focus();\r\n this.isCalculating = false;\r\n return;\r\n }\r\n this.calculateCredit();\r\n },\r\n calculateCredit() {\r\n const _observer = this.$refs.observer;\r\n this.resultCalculated = false;\r\n this.isCalculating = true;\r\n const params = { expense: this.expense, ...this.limitValues };\r\n\r\n calculatorAPI\r\n .calculateHouseholdExpense2022(params)\r\n .then(data => {\r\n this.result = data;\r\n this.resultCalculated = true;\r\n _observer.reset();\r\n this.resultCalculated = true;\r\n this.isCalculating = false;\r\n })\r\n .catch(() => {\r\n this.isCalculating = false;\r\n this.calculatorError = true;\r\n });\r\n },\r\n resetCalculator() {\r\n this.resultCalculated = false;\r\n this.calculatorError = false;\r\n this.expense = '';\r\n this.selectedType = null;\r\n this.result = null;\r\n this.$refs.expenseTypeId.$el.childNodes[0].focus();\r\n },\r\n setLimitValues(limit, percentage) {\r\n if (limit > 0) {\r\n this.limitValues.limit = limit;\r\n }\r\n if (percentage > 0) {\r\n this.limitValues.percentage = percentage;\r\n }\r\n if (this.content.LimitValues.Treshold > 0) {\r\n this.limitValues.treshold = this.content.LimitValues.Treshold;\r\n }\r\n }\r\n }\r\n};\r\n</script>\r\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HouseholdExpenseCalculator2022.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HouseholdExpenseCalculator2022.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./HouseholdExpenseCalculator2022.vue?vue&type=template&id=732a45fc\"\nimport script from \"./HouseholdExpenseCalculator2022.vue?vue&type=script&lang=js\"\nexport * from \"./HouseholdExpenseCalculator2022.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ValidationProvider',{ref:\"provider\",attrs:{\"rules\":_vm.rules,\"mode\":_vm.mode,\"vid\":_vm.name},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nvar ariaInput = ref.ariaInput;\nvar invalid = ref.invalid;\nvar ariaMsg = ref.ariaMsg;\nreturn [_c('input',_vm._b({attrs:{\"type\":\"text\",\"id\":_vm.name,\"data-cy\":_vm.name,\"name\":_vm.name,\"aria-invalid\":errors.length > 0,\"disabled\":_vm.isDisabled},domProps:{\"value\":_vm.value},on:{\"input\":function($event){return _vm.$emit('input', $event.target.value)}}},'input',ariaInput,false)),_c('div',_vm._b({staticClass:\"calculator__inputerror\"},'div',ariaMsg,false),[_vm._v(\" \"+_vm._s(errors[0])+\" \")])]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <ValidationProvider\r\n :rules=\"rules\"\r\n :mode=\"mode\"\r\n :vid=\"name\"\r\n ref=\"provider\"\r\n v-slot=\"{ errors, ariaInput, invalid, ariaMsg }\"\r\n >\r\n <input\r\n :value=\"value\"\r\n @input=\"$emit('input', $event.target.value)\"\r\n type=\"text\"\r\n :id=\"name\"\r\n :data-cy=\"name\"\r\n :name=\"name\"\r\n v-bind=\"ariaInput\"\r\n :aria-invalid=\"errors.length > 0\"\r\n :disabled=\"isDisabled\"\r\n />\r\n <div v-bind=\"ariaMsg\" class=\"calculator__inputerror\">\r\n {{ errors[0] }}\r\n </div>\r\n </ValidationProvider>\r\n</template>\r\n\r\n<script>\r\nimport { ValidationProvider } from 'vee-validate3';\r\n\r\nexport default {\r\n name: 'calculatorField',\r\n components: {\r\n ValidationProvider\r\n },\r\n props: {\r\n name: { type: String, default: '' },\r\n value: { type: String, default: '' },\r\n mode: { type: String, default: 'aggressive' },\r\n rules: { type: String, default: '' },\r\n isCurrency: { type: Boolean, default: false },\r\n isDisabled: { type: Boolean, default: false }\r\n }\r\n};\r\n</script>\r\n","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CalculatorField.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CalculatorField.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CalculatorField.vue?vue&type=template&id=0c4b1f11\"\nimport script from \"./CalculatorField.vue?vue&type=script&lang=js\"\nexport * from \"./CalculatorField.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ValidationProvider',{attrs:{\"rules\":_vm.rules,\"mode\":_vm.mode,\"vid\":_vm.name},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar errors = ref.errors;\nvar ariaInput = ref.ariaInput;\nvar ariaMsg = ref.ariaMsg;\nreturn [_c('select',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selected),expression:\"selected\"}],ref:_vm.name,attrs:{\"id\":_vm.name,\"name\":_vm.name,\"data-cy\":_vm.name,\"aria-invalid\":errors.length > 0},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selected=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){return _vm.$emit('input', _vm.selected)}]}},'select',ariaInput,false),[_c('option',{domProps:{\"value\":null,\"selected\":_vm.value === null}},[_vm._v(_vm._s(_vm.$trans('/calculators/Select')))]),_vm._l((_vm.options),function(option){return _c('option',{key:_vm.isKeyValuePair ? option.Key : option.Id,domProps:{\"value\":option}},[_vm._v(\" \"+_vm._s(_vm.isKeyValuePair ? option.Value : option.Label)+\" \")])})],2),_c('div',_vm._b({staticClass:\"calculator__inputerror\"},'div',ariaMsg,false),[_vm._v(\" \"+_vm._s(errors[0])+\" \")])]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <ValidationProvider\r\n :rules=\"rules\"\r\n :mode=\"mode\"\r\n :vid=\"name\"\r\n v-slot=\"{ errors, ariaInput, ariaMsg }\"\r\n >\r\n <select\r\n :id=\"name\"\r\n :name=\"name\"\r\n :data-cy=\"name\"\r\n :ref=\"name\"\r\n @change=\"$emit('input', selected)\"\r\n v-bind=\"ariaInput\"\r\n :aria-invalid=\"errors.length > 0\"\r\n v-model=\"selected\"\r\n >\r\n <option :value=\"null\" :selected=\"value === null\">{{ $trans('/calculators/Select') }}</option>\r\n <option\r\n v-for=\"option in options\"\r\n :value=\"option\"\r\n :key=\"isKeyValuePair ? option.Key : option.Id\"\r\n >\r\n {{ isKeyValuePair ? option.Value : option.Label }}\r\n </option>\r\n </select>\r\n\r\n <div v-bind=\"ariaMsg\" class=\"calculator__inputerror\">\r\n {{ errors[0] }}\r\n </div>\r\n </ValidationProvider>\r\n</template>\r\n\r\n<script>\r\nimport { ValidationProvider } from 'vee-validate3';\r\n\r\nexport default {\r\n name: 'calculatorSelect',\r\n components: {\r\n ValidationProvider\r\n },\r\n data() {\r\n return {\r\n selected: null\r\n };\r\n },\r\n watch: {\r\n value(newVal, oldVal) {\r\n if (newVal === oldVal) {\r\n return;\r\n }\r\n this.selected = newVal;\r\n }\r\n },\r\n props: {\r\n name: { type: String, default: '' },\r\n value: { type: Object, default: () => {} },\r\n options: { type: Array, default: () => [] },\r\n mode: { type: String, default: 'aggressive' },\r\n rules: { type: String, default: '' },\r\n isKeyValuePair: { type: Boolean, default: false }\r\n }\r\n};\r\n</script>\r\n","import mod from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CalculatorSelect.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CalculatorSelect.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CalculatorSelect.vue?vue&type=template&id=c6ca6d1c\"\nimport script from \"./CalculatorSelect.vue?vue&type=script&lang=js\"\nexport * from \"./CalculatorSelect.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = global.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n var INDICES_SUPPORT = true;\n try {\n RegExp('.', 'd');\n } catch (error) {\n INDICES_SUPPORT = false;\n }\n\n var O = {};\n // modern V8 bug\n var calls = '';\n var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n var addGetter = function (key, chr) {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(O, key, { get: function () {\n calls += chr;\n return true;\n } });\n };\n\n var pairs = {\n dotAll: 's',\n global: 'g',\n ignoreCase: 'i',\n multiline: 'm',\n sticky: 'y'\n };\n\n if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n for (var key in pairs) addGetter(key, pairs[key]);\n\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n configurable: true,\n get: regExpFlags\n});\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar toString = require('../internals/to-string');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n var result = isPrototypeOf(SymbolPrototype, this)\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n SymbolWrapper.prototype = SymbolPrototype;\n SymbolPrototype.constructor = SymbolWrapper;\n\n var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';\n var thisSymbolValue = uncurryThis(SymbolPrototype.valueOf);\n var symbolDescriptiveString = uncurryThis(SymbolPrototype.toString);\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n var replace = uncurryThis(''.replace);\n var stringSlice = uncurryThis(''.slice);\n\n defineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = thisSymbolValue(this);\n if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n var string = symbolDescriptiveString(symbol);\n var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, constructor: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","import API from 'utils/api';\r\nimport * as calculatorHelpers from '../sites/tax_fi/js/vue/components/calculators/utils/calculatorHelpers';\r\nconst apiBaseUrl = '/api/calculate';\r\n\r\n/**\r\n *\r\n * @export\r\n * @param {string } sellingPrice\r\n * @param {string } taxRate - tax percentage (0-100)\r\n * @returns\r\n */\r\nexport function calculateAssetTransferTax(sellingPrice, taxRate) {\r\n const params = {\r\n sellingPrice: calculatorHelpers.formatDecimal(sellingPrice),\r\n taxRate: calculatorHelpers.formatDecimal(taxRate)\r\n };\r\n\r\n const calculatorUrl = `${apiBaseUrl}/assettransfertax`;\r\n const result = API.get(calculatorUrl, {\r\n params\r\n });\r\n return calculatorHelpers.formatDecimal(result);\r\n}\r\n\r\n/**\r\n *\r\n * @param {string } value - Taxable value\r\n */\r\nexport function calculateGiftTax(value) {\r\n const params = {\r\n value: calculatorHelpers.formatDecimal(value)\r\n };\r\n\r\n const calculatorUrl = `${apiBaseUrl}/gifttax`;\r\n const result = API.get(calculatorUrl, {\r\n params\r\n });\r\n return result;\r\n}\r\n\r\n/**\r\n *\r\n * @param {string } value - Taxable value\r\n * @param {string } deductionType - Inheritance tax deduction type\r\n */\r\nexport function calculateInheritanceTax(value, deductionType) {\r\n const params = {\r\n value: calculatorHelpers.formatDecimal(value),\r\n deductionType\r\n };\r\n\r\n const calculatorUrl = `${apiBaseUrl}/inheritancetax`;\r\n const result = API.get(calculatorUrl, {\r\n params\r\n });\r\n return result;\r\n}\r\n\r\nexport function calculateAlcoholTax(\r\n amount,\r\n percentage,\r\n categoryId,\r\n alcoholTaxRateInEuroCents,\r\n packagingTaxRateInEuroCents,\r\n eaclBasedTax,\r\n company\r\n) {\r\n const params = {\r\n amount: calculatorHelpers.formatDecimal(amount),\r\n percentage: calculatorHelpers.formatDecimal(percentage),\r\n categoryId: categoryId,\r\n alcoholTaxRateInEuroCents: calculatorHelpers.decimalToString(alcoholTaxRateInEuroCents),\r\n packagingTaxRateInEuroCents: calculatorHelpers.decimalToString(packagingTaxRateInEuroCents),\r\n eaclBasedTax,\r\n company\r\n };\r\n\r\n const calculatorUrl = `${apiBaseUrl}/alcoholtax`;\r\n const result = API.get(calculatorUrl, {\r\n params\r\n });\r\n return result;\r\n}\r\n\r\n/**\r\n *\r\n * @param {string } language - Language\r\n * @param {string } interestType - Interest type\r\n * @param {string } dueDate - Due date\r\n * @param {string } paymentDate - Payment date\r\n * @param {string } taxAmount - Tax Amount\r\n * @param {boolean} isInheritanceTax - Is inheritance tax\r\n */\r\nexport function calculateInterestTax(language, dueDate, paymentDate, taxAmount, isInheritanceTax) {\r\n const params = {\r\n language,\r\n dueDate,\r\n paymentDate,\r\n taxAmount: calculatorHelpers.formatDecimal(taxAmount),\r\n isInheritanceTax\r\n };\r\n\r\n const calculatorUrl = `${apiBaseUrl}/interest`;\r\n const result = API.get(calculatorUrl, {\r\n params\r\n });\r\n return result;\r\n}\r\n\r\n/**\r\n *\r\n * @param {string } taxFreePrice - Tax-free price\r\n * @param {string } taxablePrice - Taxable price\r\n * @param {string } taxAmount - The amount of tax\r\n * @param {string } taxRate - Tax rate\r\n */\r\nexport function calculateVat(taxFreePrice, taxablePrice, taxAmount, taxRate) {\r\n const params = {\r\n taxFreePrice: calculatorHelpers.formatDecimal(taxFreePrice),\r\n taxablePrice: calculatorHelpers.formatDecimal(taxablePrice),\r\n taxAmount: calculatorHelpers.formatDecimal(taxAmount),\r\n taxRate: calculatorHelpers.formatDecimal(taxRate)\r\n };\r\n\r\n const calculatorUrl = `${apiBaseUrl}/vat`;\r\n const result = API.get(calculatorUrl, {\r\n params\r\n });\r\n return result;\r\n}\r\n\r\n/**\r\n *\r\n */\r\nexport function calculateVatLowerLimitRelief(language, params) {\r\n params.Language = language;\r\n const calculatorUrl = `${apiBaseUrl}/vatlowerlimitofrelief`;\r\n const result = API.get(calculatorUrl, {\r\n params\r\n });\r\n return result;\r\n}\r\n\r\nexport function calculateHouseholdExpense(params) {\r\n const calculatorUrl = `${apiBaseUrl}/householdExpense`;\r\n const result = API.get(calculatorUrl, {\r\n params\r\n });\r\n return result;\r\n}\r\n\r\nexport function calculateHouseholdExpense2022(params) {\r\n const calculatorUrl = `${apiBaseUrl}/householdExpense2022`;\r\n const result = API.get(calculatorUrl, {\r\n params\r\n });\r\n return result;\r\n}\r\n\r\nexport function calculateElectricityDeduction(params) {\r\n const calculatorUrl = `${apiBaseUrl}/electricitydeduction`;\r\n const result = API.get(calculatorUrl, {\r\n params\r\n });\r\n return result;\r\n}\r\n\r\nexport default {\r\n calculateAssetTransferTax,\r\n calculateGiftTax,\r\n calculateInheritanceTax,\r\n calculateAlcoholTax,\r\n calculateInterestTax,\r\n calculateVatLowerLimitRelief,\r\n calculateHouseholdExpense,\r\n calculateHouseholdExpense2022,\r\n calculateVat,\r\n calculateVatLowerLimitRelief,\r\n calculateElectricityDeduction\r\n};\r\n","export const vatLowerLimitReliefCalculatorModel = {\r\n limits: {\r\n huojennukseenOikeuttavanLiikevaihdonAlaraja: 10000,\r\n huojennukseenOikeuttavanLiikevaihdonYlaraja: 30000\r\n },\r\n liikevaihto: {\r\n tilikaudenPituus: '',\r\n verollinenLiikevaihto: '',\r\n verotonLiikevaihto: '',\r\n kayttoomaisuudenMyynti: '',\r\n kiinteistonKayttooikeudenLuovutus: '',\r\n metsataloudenMyynti: '',\r\n eraatVerottomatMyynnit: ''\r\n },\r\n suoritettavaVero: {\r\n arvonlisaveronOsuus: '',\r\n suoritettavatArvonlisaverotYhteensa: '',\r\n kayttoomaisuudenMyynninVero: '',\r\n metsataloudenMyynninVero: '',\r\n kiinteistonKayttooikeudenLuovutusSuoritettavaVero: '',\r\n kaannettyVerovelvollisuus: '',\r\n euTavaraJaPalveluostojenVero: '',\r\n tavaranMaahantuonnistaSuoritettavaVero: ''\r\n },\r\n ostojenVero: {\r\n vahennettavatArvonlisaverotYhteensa: '',\r\n metsataloudenOstojenVero: '',\r\n kiinteistonKayttooikeudenLuovutusOstojenVero: ''\r\n },\r\n sumFields: {\r\n liikevaihtoYhteensa: '0',\r\n liikevaihtoonEiLuetaYhteensa: '0',\r\n huojennukseenOikeuttavaLiikevaihto: '0',\r\n tilikaudeltaSuoritettavaVeroYhteensa: '0',\r\n tilikaudenOstojenVeroYhteensa: '0',\r\n huojennuksenMaara: '0'\r\n }\r\n};\r\n\r\nexport const annualInformationCalculatorModel = {\r\n inputFields: {\r\n mostRecentFinancialYearStartDate: '',\r\n mostRecentFinancialYearEndDate: '',\r\n dividendResolutionDate: '',\r\n dividendWithdrawalDate: ''\r\n },\r\n sumFields: {\r\n mostRecentFinancialYear: '',\r\n dividendResolutionDate: '',\r\n dividendWithdrawalDate: '',\r\n taxYear: '',\r\n paymentYear: '',\r\n deadlineForSelfAssessedTaxes: '',\r\n deadlineForAnnualInformationReport: ''\r\n }\r\n};\r\n\r\nexport const alcoholTaxCalculatorModel = {\r\n inputFields: {\r\n selectedCategory: null,\r\n percentage: '',\r\n amount: ''\r\n }\r\n};\r\n\r\nexport const assetTransferTaxCalculatorModel = {\r\n inputFields: {\r\n sellingPrice: '',\r\n taxPercent: '3'\r\n }\r\n};\r\n\r\nexport const inheritanceTaxCalculatorModel = {\r\n inputFields: {\r\n inheritanceTaxValue: '',\r\n selectedDeduction: null\r\n }\r\n};\r\n\r\nexport const interestCalculatorModel = {\r\n inputFields: {\r\n dueDate: '',\r\n paymentDate: '',\r\n taxAmount: '',\r\n isInheritanceTax: false\r\n }\r\n};\r\n\r\nexport const householdExpenseCalculatorModel = {\r\n inputFields: {\r\n expense: ''\r\n },\r\n limitValues: {\r\n percentage: 40,\r\n treshold: 100,\r\n limit: 2250\r\n }\r\n};\r\n\r\nexport const householdExpenseCalculatorModel2022 = {\r\n inputFields: {\r\n expense: '',\r\n selectedType: null\r\n },\r\n limitValues: {\r\n percentage: 40,\r\n treshold: 100,\r\n limit: 2250\r\n }\r\n};\r\n\r\nexport const vatCalculatorModel = {\r\n inputFields: {\r\n taxFreePrice: '',\r\n taxablePrice: '',\r\n taxAmount: '',\r\n taxRate: ''\r\n }\r\n};\r\n\r\nexport default {\r\n vatLowerLimitReliefCalculatorModel,\r\n annualInformationCalculatorModel,\r\n alcoholTaxCalculatorModel,\r\n assetTransferTaxCalculatorModel,\r\n inheritanceTaxCalculatorModel,\r\n interestCalculatorModel,\r\n householdExpenseCalculatorModel2022,\r\n householdExpenseCalculatorModel,\r\n vatCalculatorModel\r\n};\r\n","import _isNil from 'lodash/isNil';\r\n\r\nexport const addThousandSeparators = param => {\r\n if (_isNil(param)) {\r\n return '';\r\n }\r\n return param.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1 ');\r\n};\r\n\r\nexport const containsString = (input, searchString) => {\r\n if (_isNil(input) || _isNil(searchString)) {\r\n return false;\r\n }\r\n const position = input.toString().indexOf(searchString);\r\n return position && position > 0;\r\n};\r\n\r\nexport const decimalToString = input => {\r\n const str = `${input}`;\r\n if (!containsString(str, '.')) {\r\n return str;\r\n }\r\n return str.toString().replace('.', ',');\r\n};\r\n\r\nexport const formatDecimal = input => {\r\n if (!containsString(input, '.')) {\r\n return input;\r\n }\r\n return input.toString().replace('.', ',');\r\n};\r\n\r\nexport const convertStringToDate = dateStr => {\r\n if (!dateStr) {\r\n return null;\r\n }\r\n const [day, month, year] = dateStr.toString().split('.');\r\n return new Date(year, month - 1, day);\r\n};\r\n\r\nexport const convertDateToString = (day, month, year) => {\r\n return `${day.toString()}.${month.toString()}.${year.toString()}`;\r\n};\r\n\r\nexport const parseStringToFloat = value => {\r\n if (!value) {\r\n return value;\r\n }\r\n return parseFloat(value.toString().replace(',', '.')) || 0;\r\n};\r\n\r\nexport const convertDecimalSeparatorToDot = input => {\r\n if (!input) {\r\n return input;\r\n }\r\n return parseFloat(input.toString().replace(',', '.'));\r\n};\r\n\r\nexport const roundToTwo = input => {\r\n return +(Math.round(input.toString() + 'e+2') + 'e-2');\r\n};\r\n\r\nexport default {\r\n addThousandSeparators,\r\n containsString,\r\n decimalToString,\r\n formatDecimal,\r\n convertStringToDate,\r\n convertDateToString,\r\n parseStringToFloat,\r\n convertDecimalSeparatorToDot,\r\n roundToTwo\r\n};\r\n","/**\n * vee-validate v3.3.0\n * (c) 2020 Abdelrahman Awad\n * @license MIT\n */\n/**\r\n * Some Alpha Regex helpers.\r\n * https://github.com/chriso/validator.js/blob/master/src/lib/alpha.js\r\n */\r\n/* eslint-disable no-misleading-character-class */\r\nvar alpha = {\r\n en: /^[A-Z]*$/i,\r\n cs: /^[A-ZÃČĎÉĚÃŇÓŘŠŤÚŮÃŽ]*$/i,\r\n da: /^[A-ZÆØÅ]*$/i,\r\n de: /^[A-ZÄÖÜß]*$/i,\r\n es: /^[A-ZÃÉÃÑÓÚÜ]*$/i,\r\n fa: /^[ءآأؤإئابةتثجØخدذرزسشصضطظعغÙقكلمنهوىيًٌÙÙŽÙÙّْٰپژگچکی]*$/,\r\n fr: /^[A-ZÀÂÆÇÉÈÊËÃÎÔŒÙÛÜŸ]*$/i,\r\n it: /^[A-Z\\xC0-\\xFF]*$/i,\r\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ]*$/i,\r\n nl: /^[A-ZÉËÃÓÖÜ]*$/i,\r\n hu: /^[A-ZÃÉÃÓÖÅÚÜŰ]*$/i,\r\n pl: /^[A-ZĄĆĘŚÅŃÓŻŹ]*$/i,\r\n pt: /^[A-ZÃÃÀÂÇÉÊÃÕÓÔÚÜ]*$/i,\r\n ru: /^[Ð-ЯÐ]*$/i,\r\n sk: /^[A-ZÃÄČĎÉÃĹĽŇÓŔŠŤÚÃŽ]*$/i,\r\n sr: /^[A-ZČĆŽŠÄ]*$/i,\r\n sv: /^[A-ZÅÄÖ]*$/i,\r\n tr: /^[A-ZÇĞİıÖŞÜ]*$/i,\r\n uk: /^[Ð-ЩЬЮЯЄІЇÒ]*$/i,\r\n ar: /^[ءآأؤإئابةتثجØخدذرزسشصضطظعغÙقكلمنهوىيًٌÙÙŽÙÙّْٰ]*$/,\r\n az: /^[A-ZÇÆĞİıÖŞÜ]*$/i\r\n};\r\nvar alphaSpaces = {\r\n en: /^[A-Z\\s]*$/i,\r\n cs: /^[A-ZÃČĎÉĚÃŇÓŘŠŤÚŮÃŽ\\s]*$/i,\r\n da: /^[A-ZÆØÅ\\s]*$/i,\r\n de: /^[A-ZÄÖÜß\\s]*$/i,\r\n es: /^[A-ZÃÉÃÑÓÚÜ\\s]*$/i,\r\n fa: /^[ءآأؤإئابةتثجØخدذرزسشصضطظعغÙقكلمنهوىيًٌÙÙŽÙÙّْٰپژگچکی]*$/,\r\n fr: /^[A-ZÀÂÆÇÉÈÊËÃÎÔŒÙÛÜŸ\\s]*$/i,\r\n it: /^[A-Z\\xC0-\\xFF\\s]*$/i,\r\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ\\s]*$/i,\r\n nl: /^[A-ZÉËÃÓÖÜ\\s]*$/i,\r\n hu: /^[A-ZÃÉÃÓÖÅÚÜŰ\\s]*$/i,\r\n pl: /^[A-ZĄĆĘŚÅŃÓŻŹ\\s]*$/i,\r\n pt: /^[A-ZÃÃÀÂÇÉÊÃÕÓÔÚÜ\\s]*$/i,\r\n ru: /^[Ð-ЯÐ\\s]*$/i,\r\n sk: /^[A-ZÃÄČĎÉÃĹĽŇÓŔŠŤÚÃŽ\\s]*$/i,\r\n sr: /^[A-ZČĆŽŠÄ\\s]*$/i,\r\n sv: /^[A-ZÅÄÖ\\s]*$/i,\r\n tr: /^[A-ZÇĞİıÖŞÜ\\s]*$/i,\r\n uk: /^[Ð-ЩЬЮЯЄІЇÒ\\s]*$/i,\r\n ar: /^[ءآأؤإئابةتثجØخدذرزسشصضطظعغÙقكلمنهوىيًٌÙÙŽÙÙّْٰ\\s]*$/,\r\n az: /^[A-ZÇÆĞİıÖŞÜ\\s]*$/i\r\n};\r\nvar alphanumeric = {\r\n en: /^[0-9A-Z]*$/i,\r\n cs: /^[0-9A-ZÃČĎÉĚÃŇÓŘŠŤÚŮÃŽ]*$/i,\r\n da: /^[0-9A-ZÆØÅ]$/i,\r\n de: /^[0-9A-ZÄÖÜß]*$/i,\r\n es: /^[0-9A-ZÃÉÃÑÓÚÜ]*$/i,\r\n fa: /^[ءآأؤإئابةتثجØخدذرزسشصضطظعغÙقكلمنهوىيًٌÙÙŽÙÙّْٰپژگچکی]*$/,\r\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÃÎÔŒÙÛÜŸ]*$/i,\r\n it: /^[0-9A-Z\\xC0-\\xFF]*$/i,\r\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ]*$/i,\r\n hu: /^[0-9A-ZÃÉÃÓÖÅÚÜŰ]*$/i,\r\n nl: /^[0-9A-ZÉËÃÓÖÜ]*$/i,\r\n pl: /^[0-9A-ZĄĆĘŚÅŃÓŻŹ]*$/i,\r\n pt: /^[0-9A-ZÃÃÀÂÇÉÊÃÕÓÔÚÜ]*$/i,\r\n ru: /^[0-9Ð-ЯÐ]*$/i,\r\n sk: /^[0-9A-ZÃÄČĎÉÃĹĽŇÓŔŠŤÚÃŽ]*$/i,\r\n sr: /^[0-9A-ZČĆŽŠÄ]*$/i,\r\n sv: /^[0-9A-ZÅÄÖ]*$/i,\r\n tr: /^[0-9A-ZÇĞİıÖŞÜ]*$/i,\r\n uk: /^[0-9Ð-ЩЬЮЯЄІЇÒ]*$/i,\r\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجØخدذرزسشصضطظعغÙقكلمنهوىيًٌÙÙŽÙÙّْٰ]*$/,\r\n az: /^[0-9A-ZÇÆĞİıÖŞÜ]*$/i\r\n};\r\nvar alphaDash = {\r\n en: /^[0-9A-Z_-]*$/i,\r\n cs: /^[0-9A-ZÃČĎÉĚÃŇÓŘŠŤÚŮÃŽ_-]*$/i,\r\n da: /^[0-9A-ZÆØÅ_-]*$/i,\r\n de: /^[0-9A-ZÄÖÜß_-]*$/i,\r\n es: /^[0-9A-ZÃÉÃÑÓÚÜ_-]*$/i,\r\n fa: /^[ءآأؤإئابةتثجØخدذرزسشصضطظعغÙقكلمنهوىيًٌÙÙŽÙÙّْٰپژگچکی]*$/,\r\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÃÎÔŒÙÛÜŸ_-]*$/i,\r\n it: /^[0-9A-Z\\xC0-\\xFF_-]*$/i,\r\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ_-]*$/i,\r\n nl: /^[0-9A-ZÉËÃÓÖÜ_-]*$/i,\r\n hu: /^[0-9A-ZÃÉÃÓÖÅÚÜŰ_-]*$/i,\r\n pl: /^[0-9A-ZĄĆĘŚÅŃÓŻŹ_-]*$/i,\r\n pt: /^[0-9A-ZÃÃÀÂÇÉÊÃÕÓÔÚÜ_-]*$/i,\r\n ru: /^[0-9Ð-ЯÐ_-]*$/i,\r\n sk: /^[0-9A-ZÃÄČĎÉÃĹĽŇÓŔŠŤÚÃŽ_-]*$/i,\r\n sr: /^[0-9A-ZČĆŽŠÄ_-]*$/i,\r\n sv: /^[0-9A-ZÅÄÖ_-]*$/i,\r\n tr: /^[0-9A-ZÇĞİıÖŞÜ_-]*$/i,\r\n uk: /^[0-9Ð-ЩЬЮЯЄІЇÒ_-]*$/i,\r\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجØخدذرزسشصضطظعغÙقكلمنهوىيًٌÙÙŽÙÙّْٰ_-]*$/,\r\n az: /^[0-9A-ZÇÆĞİıÖŞÜ_-]*$/i\r\n};\n\nvar validate = function (value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate(val, { locale: locale }); });\r\n }\r\n // Match at least one locale.\r\n if (!locale) {\r\n return Object.keys(alpha).some(function (loc) { return alpha[loc].test(value); });\r\n }\r\n return (alpha[locale] || alpha.en).test(value);\r\n};\r\nvar params = [\r\n {\r\n name: 'locale'\r\n }\r\n];\r\nvar alpha$1 = {\r\n validate: validate,\r\n params: params\r\n};\n\nvar validate$1 = function (value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$1(val, { locale: locale }); });\r\n }\r\n // Match at least one locale.\r\n if (!locale) {\r\n return Object.keys(alphaDash).some(function (loc) { return alphaDash[loc].test(value); });\r\n }\r\n return (alphaDash[locale] || alphaDash.en).test(value);\r\n};\r\nvar params$1 = [\r\n {\r\n name: 'locale'\r\n }\r\n];\r\nvar alpha_dash = {\r\n validate: validate$1,\r\n params: params$1\r\n};\n\nvar validate$2 = function (value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$2(val, { locale: locale }); });\r\n }\r\n // Match at least one locale.\r\n if (!locale) {\r\n return Object.keys(alphanumeric).some(function (loc) { return alphanumeric[loc].test(value); });\r\n }\r\n return (alphanumeric[locale] || alphanumeric.en).test(value);\r\n};\r\nvar params$2 = [\r\n {\r\n name: 'locale'\r\n }\r\n];\r\nvar alpha_num = {\r\n validate: validate$2,\r\n params: params$2\r\n};\n\nvar validate$3 = function (value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$3(val, { locale: locale }); });\r\n }\r\n // Match at least one locale.\r\n if (!locale) {\r\n return Object.keys(alphaSpaces).some(function (loc) { return alphaSpaces[loc].test(value); });\r\n }\r\n return (alphaSpaces[locale] || alphaSpaces.en).test(value);\r\n};\r\nvar params$3 = [\r\n {\r\n name: 'locale'\r\n }\r\n];\r\nvar alpha_spaces = {\r\n validate: validate$3,\r\n params: params$3\r\n};\n\nvar validate$4 = function (value, _a) {\r\n var _b = _a === void 0 ? {} : _a, min = _b.min, max = _b.max;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return !!validate$4(val, { min: min, max: max }); });\r\n }\r\n return Number(min) <= value && Number(max) >= value;\r\n};\r\nvar params$4 = [\r\n {\r\n name: 'min'\r\n },\r\n {\r\n name: 'max'\r\n }\r\n];\r\nvar between = {\r\n validate: validate$4,\r\n params: params$4\r\n};\n\nvar validate$5 = function (value, _a) {\r\n var target = _a.target;\r\n return String(value) === String(target);\r\n};\r\nvar params$5 = [\r\n {\r\n name: 'target',\r\n isTarget: true\r\n }\r\n];\r\nvar confirmed = {\r\n validate: validate$5,\r\n params: params$5\r\n};\n\nvar validate$6 = function (value, _a) {\r\n var length = _a.length;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$6(val, { length: length }); });\r\n }\r\n var strVal = String(value);\r\n return /^[0-9]*$/.test(strVal) && strVal.length === length;\r\n};\r\nvar params$6 = [\r\n {\r\n name: 'length',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar digits = {\r\n validate: validate$6,\r\n params: params$6\r\n};\n\nvar validateImage = function (file, width, height) {\r\n var URL = window.URL || window.webkitURL;\r\n return new Promise(function (resolve) {\r\n var image = new Image();\r\n image.onerror = function () { return resolve(false); };\r\n image.onload = function () { return resolve(image.width === width && image.height === height); };\r\n image.src = URL.createObjectURL(file);\r\n });\r\n};\r\nvar validate$7 = function (files, _a) {\r\n var width = _a.width, height = _a.height;\r\n var list = [];\r\n files = Array.isArray(files) ? files : [files];\r\n for (var i = 0; i < files.length; i++) {\r\n // if file is not an image, reject.\r\n if (!/\\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(files[i].name)) {\r\n return Promise.resolve(false);\r\n }\r\n list.push(files[i]);\r\n }\r\n return Promise.all(list.map(function (file) { return validateImage(file, width, height); })).then(function (values) {\r\n return values.every(function (v) { return v; });\r\n });\r\n};\r\nvar params$7 = [\r\n {\r\n name: 'width',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n },\r\n {\r\n name: 'height',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar dimensions = {\r\n validate: validate$7,\r\n params: params$7\r\n};\n\nvar validate$8 = function (value, _a) {\r\n var multiple = (_a === void 0 ? {} : _a).multiple;\r\n // eslint-disable-next-line\r\n var re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n if (multiple && !Array.isArray(value)) {\r\n value = String(value)\r\n .split(',')\r\n .map(function (emailStr) { return emailStr.trim(); });\r\n }\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return re.test(String(val)); });\r\n }\r\n return re.test(String(value));\r\n};\r\nvar params$8 = [\r\n {\r\n name: 'multiple',\r\n default: false\r\n }\r\n];\r\nvar email = {\r\n validate: validate$8,\r\n params: params$8\r\n};\n\nfunction isNullOrUndefined(value) {\r\n return value === null || value === undefined;\r\n}\r\nfunction isEmptyArray(arr) {\r\n return Array.isArray(arr) && arr.length === 0;\r\n}\r\nfunction isCallable(fn) {\r\n return typeof fn === 'function';\r\n}\n\nfunction includes(collection, item) {\r\n return collection.indexOf(item) !== -1;\r\n}\r\n/**\r\n * Converts an array-like object to array, provides a simple polyfill for Array.from\r\n */\r\nfunction toArray(arrayLike) {\r\n if (isCallable(Array.from)) {\r\n return Array.from(arrayLike);\r\n }\r\n /* istanbul ignore next */\r\n return _copyArray(arrayLike);\r\n}\r\n/* istanbul ignore next */\r\nfunction _copyArray(arrayLike) {\r\n var array = [];\r\n var length = arrayLike.length;\r\n for (var i = 0; i < length; i++) {\r\n array.push(arrayLike[i]);\r\n }\r\n return array;\r\n}\n\nvar validate$9 = function (value, options) {\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$9(val, options); });\r\n }\r\n return toArray(options).some(function (item) {\r\n // eslint-disable-next-line\r\n return item == value;\r\n });\r\n};\r\nvar oneOf = {\r\n validate: validate$9\r\n};\n\nvar validate$a = function (value, args) {\r\n return !validate$9(value, args);\r\n};\r\nvar excluded = {\r\n validate: validate$a\r\n};\n\nvar validate$b = function (files, extensions) {\r\n var regex = new RegExp(\".(\" + extensions.join('|') + \")$\", 'i');\r\n if (Array.isArray(files)) {\r\n return files.every(function (file) { return regex.test(file.name); });\r\n }\r\n return regex.test(files.name);\r\n};\r\nvar ext = {\r\n validate: validate$b\r\n};\n\nvar validate$c = function (files) {\r\n var regex = /\\.(jpg|svg|jpeg|png|bmp|gif)$/i;\r\n if (Array.isArray(files)) {\r\n return files.every(function (file) { return regex.test(file.name); });\r\n }\r\n return regex.test(files.name);\r\n};\r\nvar image = {\r\n validate: validate$c\r\n};\n\nvar validate$d = function (value) {\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return /^-?[0-9]+$/.test(String(val)); });\r\n }\r\n return /^-?[0-9]+$/.test(String(value));\r\n};\r\nvar integer = {\r\n validate: validate$d\r\n};\n\nvar validate$e = function (value, _a) {\r\n var other = _a.other;\r\n return value === other;\r\n};\r\nvar params$9 = [\r\n {\r\n name: 'other'\r\n }\r\n];\r\nvar is = {\r\n validate: validate$e,\r\n params: params$9\r\n};\n\nvar validate$f = function (value, _a) {\r\n var other = _a.other;\r\n return value !== other;\r\n};\r\nvar params$a = [\r\n {\r\n name: 'other'\r\n }\r\n];\r\nvar is_not = {\r\n validate: validate$f,\r\n params: params$a\r\n};\n\nvar validate$g = function (value, _a) {\r\n var length = _a.length;\r\n if (isNullOrUndefined(value)) {\r\n return false;\r\n }\r\n if (typeof value === 'number') {\r\n value = String(value);\r\n }\r\n if (!value.length) {\r\n value = toArray(value);\r\n }\r\n return value.length === length;\r\n};\r\nvar params$b = [\r\n {\r\n name: 'length',\r\n cast: function (value) { return Number(value); }\r\n }\r\n];\r\nvar length = {\r\n validate: validate$g,\r\n params: params$b\r\n};\n\nvar validate$h = function (value, _a) {\r\n var length = _a.length;\r\n if (isNullOrUndefined(value)) {\r\n return length >= 0;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$h(val, { length: length }); });\r\n }\r\n return String(value).length <= length;\r\n};\r\nvar params$c = [\r\n {\r\n name: 'length',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar max = {\r\n validate: validate$h,\r\n params: params$c\r\n};\n\nvar validate$i = function (value, _a) {\r\n var max = _a.max;\r\n if (isNullOrUndefined(value) || value === '') {\r\n return false;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.length > 0 && value.every(function (val) { return validate$i(val, { max: max }); });\r\n }\r\n return Number(value) <= max;\r\n};\r\nvar params$d = [\r\n {\r\n name: 'max',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar max_value = {\r\n validate: validate$i,\r\n params: params$d\r\n};\n\nvar validate$j = function (files, mimes) {\r\n var regex = new RegExp(mimes.join('|').replace('*', '.+') + \"$\", 'i');\r\n if (Array.isArray(files)) {\r\n return files.every(function (file) { return regex.test(file.type); });\r\n }\r\n return regex.test(files.type);\r\n};\r\nvar mimes = {\r\n validate: validate$j\r\n};\n\nvar validate$k = function (value, _a) {\r\n var length = _a.length;\r\n if (isNullOrUndefined(value)) {\r\n return false;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$k(val, { length: length }); });\r\n }\r\n return String(value).length >= length;\r\n};\r\nvar params$e = [\r\n {\r\n name: 'length',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar min = {\r\n validate: validate$k,\r\n params: params$e\r\n};\n\nvar validate$l = function (value, _a) {\r\n var min = _a.min;\r\n if (isNullOrUndefined(value) || value === '') {\r\n return false;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.length > 0 && value.every(function (val) { return validate$l(val, { min: min }); });\r\n }\r\n return Number(value) >= min;\r\n};\r\nvar params$f = [\r\n {\r\n name: 'min',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar min_value = {\r\n validate: validate$l,\r\n params: params$f\r\n};\n\nvar ar = /^[٠١٢٣٤٥٦٧٨٩]+$/;\r\nvar en = /^[0-9]+$/;\r\nvar validate$m = function (value) {\r\n var testValue = function (val) {\r\n var strValue = String(val);\r\n return en.test(strValue) || ar.test(strValue);\r\n };\r\n if (Array.isArray(value)) {\r\n return value.every(testValue);\r\n }\r\n return testValue(value);\r\n};\r\nvar numeric = {\r\n validate: validate$m\r\n};\n\nvar validate$n = function (value, _a) {\r\n var regex = _a.regex;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$n(val, { regex: regex }); });\r\n }\r\n return regex.test(String(value));\r\n};\r\nvar params$g = [\r\n {\r\n name: 'regex',\r\n cast: function (value) {\r\n if (typeof value === 'string') {\r\n return new RegExp(value);\r\n }\r\n return value;\r\n }\r\n }\r\n];\r\nvar regex = {\r\n validate: validate$n,\r\n params: params$g\r\n};\n\nvar validate$o = function (value, _a) {\r\n var allowFalse = (_a === void 0 ? { allowFalse: true } : _a).allowFalse;\r\n var result = {\r\n valid: false,\r\n required: true\r\n };\r\n if (isNullOrUndefined(value) || isEmptyArray(value)) {\r\n return result;\r\n }\r\n // incase a field considers `false` as an empty value like checkboxes.\r\n if (value === false && !allowFalse) {\r\n return result;\r\n }\r\n result.valid = !!String(value).trim().length;\r\n return result;\r\n};\r\nvar computesRequired = true;\r\nvar params$h = [\r\n {\r\n name: 'allowFalse',\r\n default: true\r\n }\r\n];\r\nvar required = {\r\n validate: validate$o,\r\n params: params$h,\r\n computesRequired: computesRequired\r\n};\n\nvar testEmpty = function (value) {\r\n return isEmptyArray(value) || includes([false, null, undefined], value) || !String(value).trim().length;\r\n};\r\nvar validate$p = function (value, _a) {\r\n var target = _a.target, values = _a.values;\r\n var required;\r\n if (values && values.length) {\r\n if (!Array.isArray(values) && typeof values === 'string') {\r\n values = [values];\r\n }\r\n // eslint-disable-next-line\r\n required = values.some(function (val) { return val == String(target).trim(); });\r\n }\r\n else {\r\n required = !testEmpty(target);\r\n }\r\n if (!required) {\r\n return {\r\n valid: true,\r\n required: required\r\n };\r\n }\r\n return {\r\n valid: !testEmpty(value),\r\n required: required\r\n };\r\n};\r\nvar params$i = [\r\n {\r\n name: 'target',\r\n isTarget: true\r\n },\r\n {\r\n name: 'values'\r\n }\r\n];\r\nvar computesRequired$1 = true;\r\nvar required_if = {\r\n validate: validate$p,\r\n params: params$i,\r\n computesRequired: computesRequired$1\r\n};\n\nvar validate$q = function (files, _a) {\r\n var size = _a.size;\r\n if (isNaN(size)) {\r\n return false;\r\n }\r\n var nSize = size * 1024;\r\n if (!Array.isArray(files)) {\r\n return files.size <= nSize;\r\n }\r\n for (var i = 0; i < files.length; i++) {\r\n if (files[i].size > nSize) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\nvar params$j = [\r\n {\r\n name: 'size',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar size = {\r\n validate: validate$q,\r\n params: params$j\r\n};\n\nexport { alpha$1 as alpha, alpha_dash, alpha_num, alpha_spaces, between, confirmed, digits, dimensions, email, excluded, ext, image, integer, is, is_not, length, max, max_value, mimes, min, min_value, numeric, oneOf, regex, required, required_if, size };\n","import Vue from 'vue';\r\nimport { ValidationProvider, extend } from 'vee-validate3';\r\nimport { required, email } from 'vee-validate3/dist/rules';\r\nimport _isNil from 'lodash/isNil';\r\nimport {\r\n parseStringToFloat,\r\n addThousandSeparators,\r\n convertStringToDate,\r\n convertDateToString\r\n} from 'src/sites/tax_fi/js/vue/components/calculators/utils/calculatorHelpers';\r\n\r\nVue.component('ValidationProvider', ValidationProvider);\r\n\r\nexport const currencyValidator = {\r\n validate(value) {\r\n if (_isNil(value)) {\r\n return true;\r\n }\r\n const regex = /(^[0-9 ]+([,]\\d{1,2})?)$/;\r\n return regex.test(value);\r\n }\r\n};\r\n\r\nexport const dateFormatValidator = {\r\n validate(value) {\r\n if (_isNil(value)) {\r\n return true;\r\n }\r\n // eslint-disable-next-line no-useless-escape\r\n const regex = /^(0?[1-9]|[12][0-9]|3[01])[\\.](0?[1-9]|1[012])[\\.]\\d{4}$/;\r\n return regex.test(value);\r\n }\r\n};\r\n\r\nexport const mustNotBeSameDateValidator = {\r\n validate: (value, { other }) => {\r\n if (_isNil(value) || _isNil(other)) {\r\n return true;\r\n }\r\n return value.getTime() !== other.getTime();\r\n },\r\n castValue: convertStringToDate,\r\n params: [{ name: 'other', isTarget: true, cast: convertStringToDate }]\r\n};\r\n\r\nexport const dateMustBeGreaterValidator = {\r\n validate: (value, { other }) => {\r\n if (_isNil(value) || _isNil(other)) {\r\n return true;\r\n }\r\n return value > other;\r\n },\r\n castValue: convertStringToDate,\r\n params: [{ name: 'other', isTarget: true, cast: convertStringToDate }]\r\n};\r\n\r\nexport const taxFreePriceValidator = {\r\n validate: (value, params) => {\r\n if (value == '' || (params.taxable == 0 && params.taxAmount == 0)) {\r\n return true;\r\n }\r\n if (params.taxable != 0) {\r\n return value < params.taxable;\r\n }\r\n return params.taxAmount < value;\r\n },\r\n castValue: parseStringToFloat,\r\n params: [\r\n { name: 'taxable', isTarget: false, cast: parseStringToFloat },\r\n { name: 'taxAmount', isTarget: false, cast: parseStringToFloat }\r\n ]\r\n};\r\nexport const taxablePriceValidator = {\r\n validate: (value, params) => {\r\n if (value == '' || (params.taxFree == 0 && params.taxAmount == 0)) {\r\n return true;\r\n }\r\n if (params.taxFree != 0) {\r\n return value > params.taxFree;\r\n }\r\n return params.taxAmount < value;\r\n },\r\n castValue: parseStringToFloat,\r\n params: [\r\n { name: 'taxFree', isTarget: false, cast: parseStringToFloat },\r\n { name: 'taxAmount', isTarget: false, cast: parseStringToFloat }\r\n ]\r\n};\r\nexport const taxAmountValidator = {\r\n validate: (value, params) => {\r\n if (value == '' || (params.taxFree == 0 && params.taxable == 0)) {\r\n return true;\r\n }\r\n if (params.taxFree != 0) {\r\n return value < params.taxFree;\r\n }\r\n return value < params.taxable;\r\n },\r\n castValue: parseStringToFloat,\r\n params: [\r\n { name: 'taxFree', isTarget: false, cast: parseStringToFloat },\r\n { name: 'taxable', isTarget: false, cast: parseStringToFloat }\r\n ]\r\n};\r\n\r\nexport const dateBetweenValidator = {\r\n validate: (value, params) => {\r\n if (_isNil(value) || _isNil(params) || _isNil(params.minDate) || _isNil(params.maxDate)) {\r\n return true;\r\n }\r\n return value >= params.minDate && value <= params.maxDate;\r\n },\r\n castValue: convertStringToDate,\r\n params: [\r\n {\r\n name: 'minDate',\r\n isTarget: false,\r\n cast: convertStringToDate\r\n },\r\n {\r\n name: 'maxDate',\r\n isTarget: false,\r\n cast: convertStringToDate\r\n }\r\n ],\r\n message: (_value, params) => {\r\n if (_isNil(params) || _isNil(params.minDate) || _isNil(params.maxDate)) {\r\n return '';\r\n }\r\n return Vue.prototype.$trans(\r\n '/calculators/ValidateDateBetween',\r\n convertDateToString(\r\n params.minDate.getDate(),\r\n params.minDate.getMonth() + 1,\r\n params.minDate.getFullYear()\r\n ),\r\n convertDateToString(\r\n params.maxDate.getDate(),\r\n params.maxDate.getMonth() + 1,\r\n params.maxDate.getFullYear()\r\n )\r\n );\r\n }\r\n};\r\n\r\nexport const dateMustBeGreaterOrEqualValidator = {\r\n validate: (value, { other }) => {\r\n if (_isNil(value) || _isNil(other)) {\r\n return true;\r\n }\r\n return value >= other;\r\n },\r\n castValue: convertStringToDate,\r\n params: [{ name: 'other', isTarget: true, cast: convertStringToDate }]\r\n};\r\n\r\nexport const financialYearRangeValidator = {\r\n validate: (value, { startDate }) => {\r\n if (_isNil(value) || _isNil(startDate)) {\r\n return true;\r\n }\r\n const financialYearsMaxLenghtInMonths = 18;\r\n var firstDateOutOfRange = new Date(\r\n startDate.setMonth(startDate.getMonth() + financialYearsMaxLenghtInMonths)\r\n );\r\n return value < firstDateOutOfRange;\r\n },\r\n castValue: convertStringToDate,\r\n params: [{ name: 'startDate', isTarget: true, cast: convertStringToDate }]\r\n};\r\n\r\nexport const financialYearInMonthsValidator = {\r\n validate(value) {\r\n if (_isNil(value)) {\r\n return true;\r\n }\r\n const regex = /(^[1-9]$|^[1][0-8])$/;\r\n return regex.test(value);\r\n }\r\n};\r\n\r\nexport const financialYearGivenBeforeRevenue = {\r\n validate(value, params) {\r\n if (params.tilikaudenPituus == '') {\r\n return false;\r\n }\r\n return true;\r\n },\r\n params: [{ name: 'tilikaudenPituus', isTarget: false, cast: parseStringToFloat }]\r\n};\r\n\r\nexport const totalTurnoverValidator = {\r\n validate(value, params) {\r\n if (\r\n _isNil(params) ||\r\n _isNil(params.huojennukseenOikeuttavaLiikevaihto) ||\r\n _isNil(params.maxValue)\r\n ) {\r\n return true;\r\n }\r\n return params.huojennukseenOikeuttavaLiikevaihto <= params.maxValue;\r\n },\r\n params: [\r\n {\r\n name: 'huojennukseenOikeuttavaLiikevaihto',\r\n isTarget: false,\r\n cast: parseStringToFloat\r\n },\r\n { name: 'maxValue', isTarget: false, cast: parseStringToFloat }\r\n ],\r\n message: (_value, params) => {\r\n if (_isNil(params) || _isNil(params.maxValue)) {\r\n return '';\r\n }\r\n return Vue.prototype.$trans(\r\n '/calculators/Liikevaihto_yhteensa_ylaraja',\r\n addThousandSeparators(params.maxValue)\r\n );\r\n }\r\n};\r\n\r\nexport const decimalValidator = {\r\n validate(value) {\r\n if (_isNil(value)) {\r\n return true;\r\n }\r\n const regex = /(^\\d+([,]\\d{1,2})?)$/;\r\n return regex.test(value);\r\n }\r\n};\r\n\r\nexport const percentageValidator = {\r\n validate(value) {\r\n if (_isNil(value)) {\r\n return true;\r\n }\r\n const regex = /(^100([,]0{1,2})?)$|(^\\d{1,2}([,]\\d{1,2})?)$/;\r\n return regex.test(value);\r\n }\r\n};\r\n\r\nexport const dividendResolutionDateNotInFinancialYear = {\r\n validate: (value, { mostRecentFinancialYearStartDate, mostRecentFinancialYearEndDate }) => {\r\n if (\r\n _isNil(value) ||\r\n _isNil(mostRecentFinancialYearStartDate) ||\r\n _isNil(mostRecentFinancialYearEndDate)\r\n ) {\r\n return true;\r\n }\r\n const dateInFinancialYear =\r\n mostRecentFinancialYearStartDate <= value && value <= mostRecentFinancialYearEndDate;\r\n return !dateInFinancialYear;\r\n },\r\n castValue: convertStringToDate,\r\n params: [\r\n { name: 'mostRecentFinancialYearStartDate', isTarget: false, cast: convertStringToDate },\r\n { name: 'mostRecentFinancialYearEndDate', isTarget: false, cast: convertStringToDate }\r\n ]\r\n};\r\n\r\nexport const dividendResolutionDateValidator = {\r\n validate: (value, { other }) => {\r\n if (_isNil(value) || _isNil(other)) {\r\n return true;\r\n }\r\n const dateIsGreater = value > other;\r\n const isSameOrFollowingYear =\r\n value.getFullYear() === other.getFullYear() ||\r\n value.getFullYear() === other.getFullYear() + 1;\r\n return dateIsGreater && isSameOrFollowingYear;\r\n },\r\n castValue: convertStringToDate,\r\n params: [{ name: 'other', isTarget: true, cast: convertStringToDate }]\r\n};\r\n\r\nexport const householdExpenseOwnShareValidator = {\r\n validate: (value, { expense }) => {\r\n if (_isNil(value) || _isNil(expense)) {\r\n return true;\r\n }\r\n return expense > value;\r\n },\r\n castValue: parseStringToFloat,\r\n params: [{ name: 'expense', isTarget: false, cast: parseStringToFloat }]\r\n};\r\n\r\nexport const validationMessages = () => {\r\n const translation = Vue.prototype.$trans;\r\n return {\r\n messages: {\r\n required: translation('/calculators/MissingValue'),\r\n currency: translation('/calculators/ValidateDecimalNumber'),\r\n date_format: translation('/calculators/ValidateDateFormat'),\r\n not_same_date: translation('/calculators/ValidateSameDate'),\r\n valid_end_date: translation('/calculators/ValidateEndDate'),\r\n valid_financial_year_length: translation('/calculators/ValidateFinancialYear'),\r\n dividend_resolution_date_not_in_financial_year: translation(\r\n '/calculators/DividendResolutionDateInsideFinancialYear'\r\n ),\r\n valid_dividend_resolution_date: translation('/calculators/ValidateDividendResolution'),\r\n valid_dividend_withdrawal_date: translation('/calculators/ValidateDividendWithdrawal'),\r\n valid_decimal: translation('/calculators/ValidateDecimalNumber'),\r\n percentage: translation('/calculators/ValidatePercent'),\r\n payment_date_after: translation('/calculators/ValidateDueDate'),\r\n valid_share_of_expense: translation('/calculators/ValidateShareOfExpense'),\r\n valid_financial_year_in_months: translation('/calculators/financialYearInMonthsValidator'),\r\n financial_year_given: translation('/calculators/financialYearGivenBeforeRevenue'),\r\n tax_free_validator: translation('/calculators/ValidateTaxFreePrice'),\r\n taxable_validator: translation('/calculators/ValidateTaxablePrice'),\r\n tax_amount_validator: translation('/calculators/ValidateTaxAmount')\r\n }\r\n };\r\n};\r\n\r\n// OOTB and mostly used rules extended always\r\nextend('required', required);\r\nextend('email', email);\r\nextend('currency', currencyValidator);\r\n\r\n// Install validators\r\nexport default {\r\n currencyValidator,\r\n dateFormatValidator,\r\n mustNotBeSameDateValidator,\r\n dateMustBeGreaterValidator,\r\n dateMustBeGreaterOrEqualValidator,\r\n financialYearRangeValidator,\r\n financialYearInMonthsValidator,\r\n financialYearGivenBeforeRevenue,\r\n totalTurnoverValidator,\r\n decimalValidator,\r\n dateBetweenValidator,\r\n dividendResolutionDateNotInFinancialYear,\r\n dividendResolutionDateValidator,\r\n householdExpenseOwnShareValidator,\r\n taxFreePriceValidator,\r\n taxablePriceValidator,\r\n taxAmountValidator\r\n};\r\n","/**\n * vee-validate v3.3.0\n * (c) 2020 Abdelrahman Awad\n * @license MIT\n */\nimport Vue from 'vue';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\n\nfunction isNaN(value) {\r\n // NaN is the one value that does not equal itself.\r\n // eslint-disable-next-line\r\n return value !== value;\r\n}\r\nfunction isNullOrUndefined(value) {\r\n return value === null || value === undefined;\r\n}\r\nfunction isEmptyArray(arr) {\r\n return Array.isArray(arr) && arr.length === 0;\r\n}\r\nvar isObject = function (obj) {\r\n return obj !== null && obj && typeof obj === 'object' && !Array.isArray(obj);\r\n};\r\n/**\r\n * Shallow object comparison.\r\n */\r\nfunction isEqual(lhs, rhs) {\r\n if (lhs instanceof RegExp && rhs instanceof RegExp) {\r\n return isEqual(lhs.source, rhs.source) && isEqual(lhs.flags, rhs.flags);\r\n }\r\n if (Array.isArray(lhs) && Array.isArray(rhs)) {\r\n if (lhs.length !== rhs.length)\r\n return false;\r\n for (var i = 0; i < lhs.length; i++) {\r\n if (!isEqual(lhs[i], rhs[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // if both are objects, compare each key recursively.\r\n if (isObject(lhs) && isObject(rhs)) {\r\n return (Object.keys(lhs).every(function (key) {\r\n return isEqual(lhs[key], rhs[key]);\r\n }) &&\r\n Object.keys(rhs).every(function (key) {\r\n return isEqual(lhs[key], rhs[key]);\r\n }));\r\n }\r\n if (isNaN(lhs) && isNaN(rhs)) {\r\n return true;\r\n }\r\n return lhs === rhs;\r\n}\r\n// Checks if a given value is not an empty string or null or undefined.\r\nfunction isSpecified(val) {\r\n if (val === '') {\r\n return false;\r\n }\r\n return !isNullOrUndefined(val);\r\n}\r\nfunction isCallable(fn) {\r\n return typeof fn === 'function';\r\n}\r\nfunction isLocator(value) {\r\n return isCallable(value) && !!value.__locatorRef;\r\n}\n\nfunction findIndex(arrayLike, predicate) {\r\n var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\r\n if (isCallable(array.findIndex)) {\r\n return array.findIndex(predicate);\r\n }\r\n /* istanbul ignore next */\r\n for (var i = 0; i < array.length; i++) {\r\n if (predicate(array[i], i)) {\r\n return i;\r\n }\r\n }\r\n /* istanbul ignore next */\r\n return -1;\r\n}\r\n/**\r\n * finds the first element that satisfies the predicate callback, polyfills array.find\r\n */\r\nfunction find(arrayLike, predicate) {\r\n var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\r\n var idx = findIndex(array, predicate);\r\n return idx === -1 ? undefined : array[idx];\r\n}\r\nfunction includes(collection, item) {\r\n return collection.indexOf(item) !== -1;\r\n}\r\n/**\r\n * Converts an array-like object to array, provides a simple polyfill for Array.from\r\n */\r\nfunction toArray(arrayLike) {\r\n if (isCallable(Array.from)) {\r\n return Array.from(arrayLike);\r\n }\r\n /* istanbul ignore next */\r\n return _copyArray(arrayLike);\r\n}\r\n/* istanbul ignore next */\r\nfunction _copyArray(arrayLike) {\r\n var array = [];\r\n var length = arrayLike.length;\r\n for (var i = 0; i < length; i++) {\r\n array.push(arrayLike[i]);\r\n }\r\n return array;\r\n}\r\nfunction values(obj) {\r\n if (isCallable(Object.values)) {\r\n return Object.values(obj);\r\n }\r\n // fallback to keys()\r\n /* istanbul ignore next */\r\n return Object.keys(obj).map(function (k) { return obj[k]; });\r\n}\r\nfunction merge(target, source) {\r\n Object.keys(source).forEach(function (key) {\r\n if (isObject(source[key])) {\r\n if (!target[key]) {\r\n target[key] = {};\r\n }\r\n merge(target[key], source[key]);\r\n return;\r\n }\r\n target[key] = source[key];\r\n });\r\n return target;\r\n}\n\nfunction createFlags() {\r\n return {\r\n untouched: true,\r\n touched: false,\r\n dirty: false,\r\n pristine: true,\r\n valid: false,\r\n invalid: false,\r\n validated: false,\r\n pending: false,\r\n required: false,\r\n changed: false,\r\n passed: false,\r\n failed: false\r\n };\r\n}\n\nfunction identity(x) {\r\n return x;\r\n}\r\nfunction debounce(fn, wait, token) {\r\n if (wait === void 0) { wait = 0; }\r\n if (token === void 0) { token = { cancelled: false }; }\r\n if (wait === 0) {\r\n return fn;\r\n }\r\n var timeout;\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var later = function () {\r\n timeout = undefined;\r\n // check if the fn call was cancelled.\r\n if (!token.cancelled)\r\n fn.apply(void 0, args);\r\n };\r\n // because we might want to use Node.js setTimout for SSR.\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n };\r\n}\n\n/**\r\n * Emits a warning to the console\r\n */\r\nfunction warn(message) {\r\n console.warn(\"[vee-validate] \" + message);\r\n}\r\n/**\r\n * Replaces placeholder values in a string with their actual values\r\n */\r\nfunction interpolate(template, values) {\r\n return template.replace(/{([^}]+)}/g, function (_, p) {\r\n return p in values ? values[p] : \"{\" + p + \"}\";\r\n });\r\n}\n\nvar RULES = {};\r\nfunction normalizeSchema(schema) {\r\n var _a;\r\n if ((_a = schema.params) === null || _a === void 0 ? void 0 : _a.length) {\r\n schema.params = schema.params.map(function (param) {\r\n if (typeof param === 'string') {\r\n return { name: param };\r\n }\r\n return param;\r\n });\r\n }\r\n return schema;\r\n}\r\nvar RuleContainer = /** @class */ (function () {\r\n function RuleContainer() {\r\n }\r\n RuleContainer.extend = function (name, schema) {\r\n // if rule already exists, overwrite it.\r\n var rule = normalizeSchema(schema);\r\n if (RULES[name]) {\r\n RULES[name] = merge(RULES[name], schema);\r\n return;\r\n }\r\n RULES[name] = __assign({ lazy: false, computesRequired: false }, rule);\r\n };\r\n RuleContainer.isLazy = function (name) {\r\n var _a;\r\n return !!((_a = RULES[name]) === null || _a === void 0 ? void 0 : _a.lazy);\r\n };\r\n RuleContainer.isRequireRule = function (name) {\r\n var _a;\r\n return !!((_a = RULES[name]) === null || _a === void 0 ? void 0 : _a.computesRequired);\r\n };\r\n RuleContainer.getRuleDefinition = function (ruleName) {\r\n return RULES[ruleName];\r\n };\r\n return RuleContainer;\r\n}());\r\n/**\r\n * Adds a custom validator to the list of validation rules.\r\n */\r\nfunction extend(name, schema) {\r\n // makes sure new rules are properly formatted.\r\n guardExtend(name, schema);\r\n // Full schema object.\r\n if (typeof schema === 'object') {\r\n RuleContainer.extend(name, schema);\r\n return;\r\n }\r\n RuleContainer.extend(name, {\r\n validate: schema\r\n });\r\n}\r\n/**\r\n * Guards from extension violations.\r\n */\r\nfunction guardExtend(name, validator) {\r\n if (isCallable(validator)) {\r\n return;\r\n }\r\n if (isCallable(validator.validate)) {\r\n return;\r\n }\r\n if (RuleContainer.getRuleDefinition(name)) {\r\n return;\r\n }\r\n throw new Error(\"Extension Error: The validator '\" + name + \"' must be a function or have a 'validate' method.\");\r\n}\n\nvar DEFAULT_CONFIG = {\r\n defaultMessage: \"{_field_} is not valid.\",\r\n skipOptional: true,\r\n classes: {\r\n touched: 'touched',\r\n untouched: 'untouched',\r\n valid: 'valid',\r\n invalid: 'invalid',\r\n pristine: 'pristine',\r\n dirty: 'dirty' // control has been interacted with\r\n },\r\n bails: true,\r\n mode: 'aggressive',\r\n useConstraintAttrs: true\r\n};\r\nvar currentConfig = __assign({}, DEFAULT_CONFIG);\r\nvar getConfig = function () { return currentConfig; };\r\nvar setConfig = function (newConf) {\r\n currentConfig = __assign(__assign({}, currentConfig), newConf);\r\n};\r\nvar configure = function (cfg) {\r\n setConfig(cfg);\r\n};\n\n/**\r\n * Normalizes the given rules expression.\r\n */\r\nfunction normalizeRules(rules) {\r\n // if falsy value return an empty object.\r\n var acc = {};\r\n Object.defineProperty(acc, '_$$isNormalized', {\r\n value: true,\r\n writable: false,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n if (!rules) {\r\n return acc;\r\n }\r\n // Object is already normalized, skip.\r\n if (isObject(rules) && rules._$$isNormalized) {\r\n return rules;\r\n }\r\n if (isObject(rules)) {\r\n return Object.keys(rules).reduce(function (prev, curr) {\r\n var params = [];\r\n var preserveArrayParams = false;\r\n if (rules[curr] === true) {\r\n params = [];\r\n }\r\n else if (Array.isArray(rules[curr])) {\r\n params = rules[curr];\r\n preserveArrayParams = true;\r\n }\r\n else if (isObject(rules[curr])) {\r\n params = rules[curr];\r\n }\r\n else {\r\n params = [rules[curr]];\r\n }\r\n if (rules[curr] !== false) {\r\n prev[curr] = buildParams(curr, params, preserveArrayParams);\r\n }\r\n return prev;\r\n }, acc);\r\n }\r\n /* istanbul ignore if */\r\n if (typeof rules !== 'string') {\r\n warn('rules must be either a string or an object.');\r\n return acc;\r\n }\r\n return rules.split('|').reduce(function (prev, rule) {\r\n var parsedRule = parseRule(rule);\r\n if (!parsedRule.name) {\r\n return prev;\r\n }\r\n prev[parsedRule.name] = buildParams(parsedRule.name, parsedRule.params);\r\n return prev;\r\n }, acc);\r\n}\r\nfunction buildParams(ruleName, provided, preserveArrayParams) {\r\n if (preserveArrayParams === void 0) { preserveArrayParams = false; }\r\n var ruleSchema = RuleContainer.getRuleDefinition(ruleName);\r\n if (!ruleSchema) {\r\n return provided;\r\n }\r\n var params = {};\r\n if (!ruleSchema.params && !Array.isArray(provided)) {\r\n throw new Error('You provided an object params to a rule that has no defined schema.');\r\n }\r\n // Rule probably uses an array for their args, keep it as is.\r\n if (Array.isArray(provided) && !ruleSchema.params) {\r\n return provided;\r\n }\r\n var definedParams;\r\n // collect the params schema.\r\n if (!ruleSchema.params || (ruleSchema.params.length < provided.length && Array.isArray(provided))) {\r\n var lastDefinedParam_1;\r\n // collect any additional parameters in the last item.\r\n definedParams = provided.map(function (_, idx) {\r\n var _a;\r\n var param = (_a = ruleSchema.params) === null || _a === void 0 ? void 0 : _a[idx];\r\n lastDefinedParam_1 = param || lastDefinedParam_1;\r\n if (!param) {\r\n param = lastDefinedParam_1;\r\n }\r\n return param;\r\n });\r\n }\r\n else {\r\n definedParams = ruleSchema.params;\r\n }\r\n // Match the provided array length with a temporary schema.\r\n for (var i = 0; i < definedParams.length; i++) {\r\n var options = definedParams[i];\r\n var value = options.default;\r\n // if the provided is an array, map element value.\r\n if (Array.isArray(provided) && !preserveArrayParams) {\r\n if (i in provided) {\r\n value = provided[i];\r\n }\r\n }\r\n else {\r\n // If the param exists in the provided object.\r\n if (options.name in provided) {\r\n value = provided[options.name];\r\n // if the provided is the first param value.\r\n }\r\n else if (definedParams.length === 1) {\r\n value = provided;\r\n }\r\n }\r\n // if the param is a target, resolve the target value.\r\n if (options.isTarget) {\r\n value = createLocator(value, options.cast);\r\n }\r\n // A target param using interpolation\r\n if (typeof value === 'string' && value[0] === '@') {\r\n value = createLocator(value.slice(1), options.cast);\r\n }\r\n // If there is a transformer defined.\r\n if (!isLocator(value) && options.cast) {\r\n value = options.cast(value);\r\n }\r\n // already been set, probably multiple values.\r\n if (params[options.name]) {\r\n params[options.name] = Array.isArray(params[options.name]) ? params[options.name] : [params[options.name]];\r\n params[options.name].push(value);\r\n }\r\n else {\r\n // set the value.\r\n params[options.name] = value;\r\n }\r\n }\r\n return params;\r\n}\r\n/**\r\n * Parses a rule string expression.\r\n */\r\nvar parseRule = function (rule) {\r\n var params = [];\r\n var name = rule.split(':')[0];\r\n if (includes(rule, ':')) {\r\n params = rule\r\n .split(':')\r\n .slice(1)\r\n .join(':')\r\n .split(',');\r\n }\r\n return { name: name, params: params };\r\n};\r\nfunction createLocator(value, castFn) {\r\n var locator = function (crossTable) {\r\n var val = crossTable[value];\r\n return castFn ? castFn(val) : val;\r\n };\r\n locator.__locatorRef = value;\r\n return locator;\r\n}\r\nfunction extractLocators(params) {\r\n if (Array.isArray(params)) {\r\n return params.filter(isLocator);\r\n }\r\n return Object.keys(params)\r\n .filter(function (key) { return isLocator(params[key]); })\r\n .map(function (key) { return params[key]; });\r\n}\n\n/**\r\n * Validates a value against the rules.\r\n */\r\nfunction validate(value, rules, options) {\r\n if (options === void 0) { options = {}; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var shouldBail, skipIfEmpty, field, result, errors, failedRules, regenerateMap;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n shouldBail = options === null || options === void 0 ? void 0 : options.bails;\r\n skipIfEmpty = options === null || options === void 0 ? void 0 : options.skipIfEmpty;\r\n field = {\r\n name: (options === null || options === void 0 ? void 0 : options.name) || '{field}',\r\n rules: normalizeRules(rules),\r\n bails: shouldBail !== null && shouldBail !== void 0 ? shouldBail : true,\r\n skipIfEmpty: skipIfEmpty !== null && skipIfEmpty !== void 0 ? skipIfEmpty : true,\r\n forceRequired: false,\r\n crossTable: (options === null || options === void 0 ? void 0 : options.values) || {},\r\n names: (options === null || options === void 0 ? void 0 : options.names) || {},\r\n customMessages: (options === null || options === void 0 ? void 0 : options.customMessages) || {}\r\n };\r\n return [4 /*yield*/, _validate(field, value, options)];\r\n case 1:\r\n result = _a.sent();\r\n errors = [];\r\n failedRules = {};\r\n regenerateMap = {};\r\n result.errors.forEach(function (e) {\r\n var msg = e.msg();\r\n errors.push(msg);\r\n failedRules[e.rule] = msg;\r\n regenerateMap[e.rule] = e.msg;\r\n });\r\n return [2 /*return*/, {\r\n valid: result.valid,\r\n errors: errors,\r\n failedRules: failedRules,\r\n regenerateMap: regenerateMap\r\n }];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Starts the validation process.\r\n */\r\nfunction _validate(field, value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).isInitial, isInitial = _b === void 0 ? false : _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _c, shouldSkip, errors, rules, length, i, rule, result;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0: return [4 /*yield*/, _shouldSkip(field, value)];\r\n case 1:\r\n _c = _d.sent(), shouldSkip = _c.shouldSkip, errors = _c.errors;\r\n if (shouldSkip) {\r\n return [2 /*return*/, {\r\n valid: !errors.length,\r\n errors: errors\r\n }];\r\n }\r\n rules = Object.keys(field.rules).filter(function (rule) { return !RuleContainer.isRequireRule(rule); });\r\n length = rules.length;\r\n i = 0;\r\n _d.label = 2;\r\n case 2:\r\n if (!(i < length)) return [3 /*break*/, 5];\r\n if (isInitial && RuleContainer.isLazy(rules[i])) {\r\n return [3 /*break*/, 4];\r\n }\r\n rule = rules[i];\r\n return [4 /*yield*/, _test(field, value, {\r\n name: rule,\r\n params: field.rules[rule]\r\n })];\r\n case 3:\r\n result = _d.sent();\r\n if (!result.valid && result.error) {\r\n errors.push(result.error);\r\n if (field.bails) {\r\n return [2 /*return*/, {\r\n valid: false,\r\n errors: errors\r\n }];\r\n }\r\n }\r\n _d.label = 4;\r\n case 4:\r\n i++;\r\n return [3 /*break*/, 2];\r\n case 5: return [2 /*return*/, {\r\n valid: !errors.length,\r\n errors: errors\r\n }];\r\n }\r\n });\r\n });\r\n}\r\nfunction _shouldSkip(field, value) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requireRules, length, errors, isEmpty, isEmptyAndOptional, isRequired, i, rule, result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n requireRules = Object.keys(field.rules).filter(RuleContainer.isRequireRule);\r\n length = requireRules.length;\r\n errors = [];\r\n isEmpty = isNullOrUndefined(value) || value === '' || isEmptyArray(value);\r\n isEmptyAndOptional = isEmpty && field.skipIfEmpty;\r\n isRequired = false;\r\n i = 0;\r\n _a.label = 1;\r\n case 1:\r\n if (!(i < length)) return [3 /*break*/, 4];\r\n rule = requireRules[i];\r\n return [4 /*yield*/, _test(field, value, {\r\n name: rule,\r\n params: field.rules[rule]\r\n })];\r\n case 2:\r\n result = _a.sent();\r\n if (!isObject(result)) {\r\n throw new Error('Require rules has to return an object (see docs)');\r\n }\r\n if (result.required) {\r\n isRequired = true;\r\n }\r\n if (!result.valid && result.error) {\r\n errors.push(result.error);\r\n // Exit early as the field is required and failed validation.\r\n if (field.bails) {\r\n return [2 /*return*/, {\r\n shouldSkip: true,\r\n errors: errors\r\n }];\r\n }\r\n }\r\n _a.label = 3;\r\n case 3:\r\n i++;\r\n return [3 /*break*/, 1];\r\n case 4:\r\n if (isEmpty && !isRequired && !field.skipIfEmpty) {\r\n return [2 /*return*/, {\r\n shouldSkip: false,\r\n errors: errors\r\n }];\r\n }\r\n // field is configured to run through the pipeline regardless\r\n if (!field.bails && !isEmptyAndOptional) {\r\n return [2 /*return*/, {\r\n shouldSkip: false,\r\n errors: errors\r\n }];\r\n }\r\n // skip if the field is not required and has an empty value.\r\n return [2 /*return*/, {\r\n shouldSkip: !isRequired && isEmpty,\r\n errors: errors\r\n }];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Tests a single input value against a rule.\r\n */\r\nfunction _test(field, value, rule) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var ruleSchema, normalizedValue, params, result, values_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ruleSchema = RuleContainer.getRuleDefinition(rule.name);\r\n if (!ruleSchema || !ruleSchema.validate) {\r\n throw new Error(\"No such validator '\" + rule.name + \"' exists.\");\r\n }\r\n normalizedValue = ruleSchema.castValue ? ruleSchema.castValue(value) : value;\r\n params = fillTargetValues(rule.params, field.crossTable);\r\n return [4 /*yield*/, ruleSchema.validate(normalizedValue, params)];\r\n case 1:\r\n result = _a.sent();\r\n if (typeof result === 'string') {\r\n values_1 = __assign(__assign({}, (params || {})), { _field_: field.name, _value_: value, _rule_: rule.name });\r\n return [2 /*return*/, {\r\n valid: false,\r\n error: { rule: rule.name, msg: function () { return interpolate(result, values_1); } }\r\n }];\r\n }\r\n if (!isObject(result)) {\r\n result = { valid: result };\r\n }\r\n return [2 /*return*/, {\r\n valid: result.valid,\r\n required: result.required,\r\n error: result.valid ? undefined : _generateFieldError(field, value, ruleSchema, rule.name, params)\r\n }];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Generates error messages.\r\n */\r\nfunction _generateFieldError(field, value, ruleSchema, ruleName, params) {\r\n var _a;\r\n var message = (_a = field.customMessages[ruleName]) !== null && _a !== void 0 ? _a : ruleSchema.message;\r\n var ruleTargets = _getRuleTargets(field, ruleSchema, ruleName);\r\n var _b = _getUserTargets(field, ruleSchema, ruleName, message), userTargets = _b.userTargets, userMessage = _b.userMessage;\r\n var values = __assign(__assign(__assign(__assign({}, (params || {})), { _field_: field.name, _value_: value, _rule_: ruleName }), ruleTargets), userTargets);\r\n return {\r\n msg: function () { return _normalizeMessage(userMessage || getConfig().defaultMessage, field.name, values); },\r\n rule: ruleName\r\n };\r\n}\r\nfunction _getRuleTargets(field, ruleSchema, ruleName) {\r\n var params = ruleSchema.params;\r\n if (!params) {\r\n return {};\r\n }\r\n var numTargets = params.filter(function (param) { return param.isTarget; }).length;\r\n if (numTargets <= 0) {\r\n return {};\r\n }\r\n var names = {};\r\n var ruleConfig = field.rules[ruleName];\r\n if (!Array.isArray(ruleConfig) && isObject(ruleConfig)) {\r\n ruleConfig = params.map(function (param) {\r\n return ruleConfig[param.name];\r\n });\r\n }\r\n for (var index = 0; index < params.length; index++) {\r\n var param = params[index];\r\n var key = ruleConfig[index];\r\n if (!isLocator(key)) {\r\n continue;\r\n }\r\n key = key.__locatorRef;\r\n var name_1 = field.names[key] || key;\r\n names[param.name] = name_1;\r\n names[\"_\" + param.name + \"_\"] = field.crossTable[key];\r\n }\r\n return names;\r\n}\r\nfunction _getUserTargets(field, ruleSchema, ruleName, userMessage) {\r\n var userTargets = {};\r\n var rules = field.rules[ruleName];\r\n var params = ruleSchema.params || [];\r\n // early return if no rules\r\n if (!rules) {\r\n return {};\r\n }\r\n // check all rules to convert targets\r\n Object.keys(rules).forEach(function (key, index) {\r\n // get the rule\r\n var rule = rules[key];\r\n if (!isLocator(rule)) {\r\n return {};\r\n }\r\n // get associated parameter\r\n var param = params[index];\r\n if (!param) {\r\n return {};\r\n }\r\n // grab the name of the target\r\n var name = rule.__locatorRef;\r\n userTargets[param.name] = field.names[name] || name;\r\n userTargets[\"_\" + param.name + \"_\"] = field.crossTable[name];\r\n });\r\n return {\r\n userTargets: userTargets,\r\n userMessage: userMessage\r\n };\r\n}\r\nfunction _normalizeMessage(template, field, values) {\r\n if (typeof template === 'function') {\r\n return template(field, values);\r\n }\r\n return interpolate(template, __assign(__assign({}, values), { _field_: field }));\r\n}\r\nfunction fillTargetValues(params, crossTable) {\r\n if (Array.isArray(params)) {\r\n return params;\r\n }\r\n var values = {};\r\n var normalize = function (value) {\r\n if (isLocator(value)) {\r\n return value(crossTable);\r\n }\r\n return value;\r\n };\r\n Object.keys(params).forEach(function (param) {\r\n values[param] = normalize(params[param]);\r\n });\r\n return values;\r\n}\n\nvar aggressive = function () { return ({\r\n on: ['input', 'blur']\r\n}); };\r\nvar lazy = function () { return ({\r\n on: ['change']\r\n}); };\r\nvar eager = function (_a) {\r\n var errors = _a.errors;\r\n if (errors.length) {\r\n return {\r\n on: ['input', 'change']\r\n };\r\n }\r\n return {\r\n on: ['change', 'blur']\r\n };\r\n};\r\nvar passive = function () { return ({\r\n on: []\r\n}); };\r\nvar modes = {\r\n aggressive: aggressive,\r\n eager: eager,\r\n passive: passive,\r\n lazy: lazy\r\n};\r\nvar setInteractionMode = function (mode, implementation) {\r\n setConfig({ mode: mode });\r\n if (!implementation) {\r\n return;\r\n }\r\n if (!isCallable(implementation)) {\r\n throw new Error('A mode implementation must be a function');\r\n }\r\n modes[mode] = implementation;\r\n};\n\nvar EVENT_BUS = new Vue();\r\nfunction localeChanged() {\r\n EVENT_BUS.$emit('change:locale');\r\n}\n\nvar Dictionary = /** @class */ (function () {\r\n function Dictionary(locale, dictionary) {\r\n this.container = {};\r\n this.locale = locale;\r\n this.merge(dictionary);\r\n }\r\n Dictionary.prototype.resolve = function (field, rule, values) {\r\n return this.format(this.locale, field, rule, values);\r\n };\r\n Dictionary.prototype.format = function (locale, field, rule, values) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h;\r\n var message;\r\n // find if specific message for that field was specified.\r\n message = ((_c = (_b = (_a = this.container[locale]) === null || _a === void 0 ? void 0 : _a.fields) === null || _b === void 0 ? void 0 : _b[field]) === null || _c === void 0 ? void 0 : _c[rule]) || ((_e = (_d = this.container[locale]) === null || _d === void 0 ? void 0 : _d.messages) === null || _e === void 0 ? void 0 : _e[rule]);\r\n if (!message) {\r\n message = '{_field_} is not valid';\r\n }\r\n field = (_h = (_g = (_f = this.container[locale]) === null || _f === void 0 ? void 0 : _f.names) === null || _g === void 0 ? void 0 : _g[field]) !== null && _h !== void 0 ? _h : field;\r\n return isCallable(message) ? message(field, values) : interpolate(message, __assign(__assign({}, values), { _field_: field }));\r\n };\r\n Dictionary.prototype.merge = function (dictionary) {\r\n merge(this.container, dictionary);\r\n };\r\n Dictionary.prototype.hasRule = function (name) {\r\n var _a, _b;\r\n return !!((_b = (_a = this.container[this.locale]) === null || _a === void 0 ? void 0 : _a.messages) === null || _b === void 0 ? void 0 : _b[name]);\r\n };\r\n return Dictionary;\r\n}());\r\nvar DICTIONARY;\r\nfunction localize(locale, dictionary) {\r\n var _a;\r\n if (!DICTIONARY) {\r\n DICTIONARY = new Dictionary('en', {});\r\n setConfig({\r\n defaultMessage: function (field, values) {\r\n return DICTIONARY.resolve(field, values === null || values === void 0 ? void 0 : values._rule_, values || {});\r\n }\r\n });\r\n }\r\n if (typeof locale === 'string') {\r\n DICTIONARY.locale = locale;\r\n if (dictionary) {\r\n DICTIONARY.merge((_a = {}, _a[locale] = dictionary, _a));\r\n }\r\n localeChanged();\r\n return;\r\n }\r\n DICTIONARY.merge(locale);\r\n}\n\nvar isEvent = function (evt) {\r\n if (!evt) {\r\n return false;\r\n }\r\n if (typeof Event !== 'undefined' && isCallable(Event) && evt instanceof Event) {\r\n return true;\r\n }\r\n // this is for IE\r\n /* istanbul ignore next */\r\n if (evt && evt.srcElement) {\r\n return true;\r\n }\r\n return false;\r\n};\r\nfunction normalizeEventValue(value) {\r\n var _a, _b;\r\n if (!isEvent(value)) {\r\n return value;\r\n }\r\n var input = value.target;\r\n if (input.type === 'file' && input.files) {\r\n return toArray(input.files);\r\n }\r\n // If the input has a `v-model.number` modifier applied.\r\n if ((_a = input._vModifiers) === null || _a === void 0 ? void 0 : _a.number) {\r\n // as per the spec the v-model.number uses parseFloat\r\n var valueAsNumber = parseFloat(input.value);\r\n if (isNaN(valueAsNumber)) {\r\n return input.value;\r\n }\r\n return valueAsNumber;\r\n }\r\n if ((_b = input._vModifiers) === null || _b === void 0 ? void 0 : _b.trim) {\r\n var trimmedValue = typeof input.value === 'string' ? input.value.trim() : input.value;\r\n return trimmedValue;\r\n }\r\n return input.value;\r\n}\n\nvar isTextInput = function (vnode) {\r\n var _a;\r\n var attrs = ((_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs) || vnode.elm;\r\n // it will fallback to being a text input per browsers spec.\r\n if (vnode.tag === 'input' && (!attrs || !attrs.type)) {\r\n return true;\r\n }\r\n if (vnode.tag === 'textarea') {\r\n return true;\r\n }\r\n return includes(['text', 'password', 'search', 'email', 'tel', 'url', 'number'], attrs === null || attrs === void 0 ? void 0 : attrs.type);\r\n};\r\n// export const isCheckboxOrRadioInput = (vnode: VNode): boolean => {\r\n// const attrs = (vnode.data && vnode.data.attrs) || vnode.elm;\r\n// return includes(['radio', 'checkbox'], attrs && attrs.type);\r\n// };\r\n// Gets the model object on the vnode.\r\nfunction findModel(vnode) {\r\n if (!vnode.data) {\r\n return undefined;\r\n }\r\n // Component Model\r\n // THIS IS NOT TYPED IN OFFICIAL VUE TYPINGS\r\n // eslint-disable-next-line\r\n var nonStandardVNodeData = vnode.data;\r\n if ('model' in nonStandardVNodeData) {\r\n return nonStandardVNodeData.model;\r\n }\r\n if (!vnode.data.directives) {\r\n return undefined;\r\n }\r\n return find(vnode.data.directives, function (d) { return d.name === 'model'; });\r\n}\r\nfunction findValue(vnode) {\r\n var _a, _b;\r\n var model = findModel(vnode);\r\n if (model) {\r\n return { value: model.value };\r\n }\r\n var config = findModelConfig(vnode);\r\n var prop = (config === null || config === void 0 ? void 0 : config.prop) || 'value';\r\n if (((_a = vnode.componentOptions) === null || _a === void 0 ? void 0 : _a.propsData) && prop in vnode.componentOptions.propsData) {\r\n var propsDataWithValue = vnode.componentOptions.propsData;\r\n return { value: propsDataWithValue[prop] };\r\n }\r\n if (((_b = vnode.data) === null || _b === void 0 ? void 0 : _b.domProps) && 'value' in vnode.data.domProps) {\r\n return { value: vnode.data.domProps.value };\r\n }\r\n return undefined;\r\n}\r\nfunction extractChildren(vnode) {\r\n if (Array.isArray(vnode)) {\r\n return vnode;\r\n }\r\n if (Array.isArray(vnode.children)) {\r\n return vnode.children;\r\n }\r\n /* istanbul ignore next */\r\n if (vnode.componentOptions && Array.isArray(vnode.componentOptions.children)) {\r\n return vnode.componentOptions.children;\r\n }\r\n return [];\r\n}\r\nfunction findInputNode(vnode) {\r\n if (!Array.isArray(vnode) && findValue(vnode) !== undefined) {\r\n return vnode;\r\n }\r\n var children = extractChildren(vnode);\r\n return children.reduce(function (candidate, node) {\r\n if (candidate) {\r\n return candidate;\r\n }\r\n return findInputNode(node);\r\n }, null);\r\n}\r\n// Resolves v-model config if exists.\r\nfunction findModelConfig(vnode) {\r\n /* istanbul ignore next */\r\n if (!vnode.componentOptions)\r\n return null;\r\n // This is also not typed in the standard Vue TS.\r\n return vnode.componentOptions.Ctor.options.model;\r\n}\r\n// Adds a listener to vnode listener object.\r\nfunction mergeVNodeListeners(obj, eventName, handler) {\r\n // no listener at all.\r\n if (isNullOrUndefined(obj[eventName])) {\r\n obj[eventName] = [handler];\r\n return;\r\n }\r\n // Is an invoker.\r\n if (isCallable(obj[eventName]) && obj[eventName].fns) {\r\n var invoker = obj[eventName];\r\n invoker.fns = Array.isArray(invoker.fns) ? invoker.fns : [invoker.fns];\r\n if (!includes(invoker.fns, handler)) {\r\n invoker.fns.push(handler);\r\n }\r\n return;\r\n }\r\n if (isCallable(obj[eventName])) {\r\n var prev = obj[eventName];\r\n obj[eventName] = [prev];\r\n }\r\n if (Array.isArray(obj[eventName]) && !includes(obj[eventName], handler)) {\r\n obj[eventName].push(handler);\r\n }\r\n}\r\n// Adds a listener to a native HTML vnode.\r\nfunction addNativeNodeListener(node, eventName, handler) {\r\n /* istanbul ignore next */\r\n if (!node.data) {\r\n node.data = {};\r\n }\r\n if (isNullOrUndefined(node.data.on)) {\r\n node.data.on = {};\r\n }\r\n mergeVNodeListeners(node.data.on, eventName, handler);\r\n}\r\n// Adds a listener to a Vue component vnode.\r\nfunction addComponentNodeListener(node, eventName, handler) {\r\n /* istanbul ignore next */\r\n if (!node.componentOptions) {\r\n return;\r\n }\r\n /* istanbul ignore next */\r\n if (!node.componentOptions.listeners) {\r\n node.componentOptions.listeners = {};\r\n }\r\n mergeVNodeListeners(node.componentOptions.listeners, eventName, handler);\r\n}\r\nfunction addVNodeListener(vnode, eventName, handler) {\r\n if (vnode.componentOptions) {\r\n addComponentNodeListener(vnode, eventName, handler);\r\n return;\r\n }\r\n addNativeNodeListener(vnode, eventName, handler);\r\n}\r\n// Determines if `change` should be used over `input` for listeners.\r\nfunction getInputEventName(vnode, model) {\r\n var _a;\r\n // Is a component.\r\n if (vnode.componentOptions) {\r\n var event_1 = (findModelConfig(vnode) || { event: 'input' }).event;\r\n return event_1;\r\n }\r\n // Lazy Models typically use change event\r\n if ((_a = model === null || model === void 0 ? void 0 : model.modifiers) === null || _a === void 0 ? void 0 : _a.lazy) {\r\n return 'change';\r\n }\r\n // is a textual-type input.\r\n if (isTextInput(vnode)) {\r\n return 'input';\r\n }\r\n return 'change';\r\n}\r\nfunction isHTMLNode(node) {\r\n return includes(['input', 'select', 'textarea'], node.tag);\r\n}\r\n// TODO: Type this one properly.\r\nfunction normalizeSlots(slots, ctx) {\r\n var acc = [];\r\n return Object.keys(slots).reduce(function (arr, key) {\r\n slots[key].forEach(function (vnode) {\r\n if (!vnode.context) {\r\n slots[key].context = ctx;\r\n if (!vnode.data) {\r\n vnode.data = {};\r\n }\r\n vnode.data.slot = key;\r\n }\r\n });\r\n return arr.concat(slots[key]);\r\n }, acc);\r\n}\r\nfunction resolveTextualRules(vnode) {\r\n var _a;\r\n var attrs = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs;\r\n var rules = {};\r\n if (!attrs)\r\n return rules;\r\n if (attrs.type === 'email' && RuleContainer.getRuleDefinition('email')) {\r\n rules.email = ['multiple' in attrs];\r\n }\r\n if (attrs.pattern && RuleContainer.getRuleDefinition('regex')) {\r\n rules.regex = attrs.pattern;\r\n }\r\n if (attrs.maxlength >= 0 && RuleContainer.getRuleDefinition('max')) {\r\n rules.max = attrs.maxlength;\r\n }\r\n if (attrs.minlength >= 0 && RuleContainer.getRuleDefinition('min')) {\r\n rules.min = attrs.minlength;\r\n }\r\n if (attrs.type === 'number') {\r\n if (isSpecified(attrs.min) && RuleContainer.getRuleDefinition('min_value')) {\r\n rules.min_value = Number(attrs.min);\r\n }\r\n if (isSpecified(attrs.max) && RuleContainer.getRuleDefinition('max_value')) {\r\n rules.max_value = Number(attrs.max);\r\n }\r\n }\r\n return rules;\r\n}\r\nfunction resolveRules(vnode) {\r\n var _a;\r\n var htmlTags = ['input', 'select', 'textarea'];\r\n var attrs = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs;\r\n if (!includes(htmlTags, vnode.tag) || !attrs) {\r\n return {};\r\n }\r\n var rules = {};\r\n if ('required' in attrs && attrs.required !== false && RuleContainer.getRuleDefinition('required')) {\r\n rules.required = attrs.type === 'checkbox' ? [true] : true;\r\n }\r\n if (isTextInput(vnode)) {\r\n return normalizeRules(__assign(__assign({}, rules), resolveTextualRules(vnode)));\r\n }\r\n return normalizeRules(rules);\r\n}\r\nfunction normalizeChildren(context, slotProps) {\r\n if (context.$scopedSlots.default) {\r\n return context.$scopedSlots.default(slotProps) || [];\r\n }\r\n return context.$slots.default || [];\r\n}\n\n/**\r\n * Determines if a provider needs to run validation.\r\n */\r\nfunction shouldValidate(ctx, value) {\r\n // when an immediate/initial validation is needed and wasn't done before.\r\n if (!ctx._ignoreImmediate && ctx.immediate) {\r\n return true;\r\n }\r\n // when the value changes for whatever reason.\r\n if (ctx.value !== value && ctx.normalizedEvents.length) {\r\n return true;\r\n }\r\n // when it needs validation due to props/cross-fields changes.\r\n if (ctx._needsValidation) {\r\n return true;\r\n }\r\n // when the initial value is undefined and the field wasn't rendered yet.\r\n if (!ctx.initialized && value === undefined) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction createValidationCtx(ctx) {\r\n return __assign(__assign({}, ctx.flags), { errors: ctx.errors, classes: ctx.classes, failedRules: ctx.failedRules, reset: function () { return ctx.reset(); }, validate: function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return ctx.validate.apply(ctx, args);\r\n }, ariaInput: {\r\n 'aria-invalid': ctx.flags.invalid ? 'true' : 'false',\r\n 'aria-required': ctx.isRequired ? 'true' : 'false',\r\n 'aria-errormessage': \"vee_\" + ctx.id\r\n }, ariaMsg: {\r\n id: \"vee_\" + ctx.id,\r\n 'aria-live': ctx.errors.length ? 'assertive' : 'off'\r\n } });\r\n}\r\nfunction onRenderUpdate(vm, value) {\r\n if (!vm.initialized) {\r\n vm.initialValue = value;\r\n }\r\n var validateNow = shouldValidate(vm, value);\r\n vm._needsValidation = false;\r\n vm.value = value;\r\n vm._ignoreImmediate = true;\r\n if (!validateNow) {\r\n return;\r\n }\r\n var validate = function () {\r\n if (vm.immediate || vm.flags.validated) {\r\n return triggerThreadSafeValidation(vm);\r\n }\r\n vm.validateSilent();\r\n };\r\n if (vm.initialized) {\r\n validate();\r\n return;\r\n }\r\n vm.$once('hook:mounted', function () { return validate(); });\r\n}\r\nfunction computeModeSetting(ctx) {\r\n var compute = (isCallable(ctx.mode) ? ctx.mode : modes[ctx.mode]);\r\n return compute(ctx);\r\n}\r\nfunction triggerThreadSafeValidation(vm) {\r\n var pendingPromise = vm.validateSilent();\r\n // avoids race conditions between successive validations.\r\n vm._pendingValidation = pendingPromise;\r\n return pendingPromise.then(function (result) {\r\n if (pendingPromise === vm._pendingValidation) {\r\n vm.applyResult(result);\r\n vm._pendingValidation = undefined;\r\n }\r\n return result;\r\n });\r\n}\r\n// Creates the common handlers for a validatable context.\r\nfunction createCommonHandlers(vm) {\r\n if (!vm.$veeOnInput) {\r\n vm.$veeOnInput = function (e) {\r\n vm.syncValue(e); // track and keep the value updated.\r\n vm.setFlags({ dirty: true, pristine: false });\r\n };\r\n }\r\n var onInput = vm.$veeOnInput;\r\n if (!vm.$veeOnBlur) {\r\n vm.$veeOnBlur = function () {\r\n vm.setFlags({ touched: true, untouched: false });\r\n };\r\n }\r\n // Blur event listener.\r\n var onBlur = vm.$veeOnBlur;\r\n var onValidate = vm.$veeHandler;\r\n var mode = computeModeSetting(vm);\r\n // Handle debounce changes.\r\n if (!onValidate || vm.$veeDebounce !== vm.debounce) {\r\n onValidate = debounce(function () {\r\n vm.$nextTick(function () {\r\n if (!vm._pendingReset) {\r\n triggerThreadSafeValidation(vm);\r\n }\r\n vm._pendingReset = false;\r\n });\r\n }, mode.debounce || vm.debounce);\r\n // Cache the handler so we don't create it each time.\r\n vm.$veeHandler = onValidate;\r\n // cache the debounce value so we detect if it was changed.\r\n vm.$veeDebounce = vm.debounce;\r\n }\r\n return { onInput: onInput, onBlur: onBlur, onValidate: onValidate };\r\n}\r\n// Adds all plugin listeners to the vnode.\r\nfunction addListeners(vm, node) {\r\n var value = findValue(node);\r\n // cache the input eventName.\r\n vm._inputEventName = vm._inputEventName || getInputEventName(node, findModel(node));\r\n onRenderUpdate(vm, value === null || value === void 0 ? void 0 : value.value);\r\n var _a = createCommonHandlers(vm), onInput = _a.onInput, onBlur = _a.onBlur, onValidate = _a.onValidate;\r\n addVNodeListener(node, vm._inputEventName, onInput);\r\n addVNodeListener(node, 'blur', onBlur);\r\n // add the validation listeners.\r\n vm.normalizedEvents.forEach(function (evt) {\r\n addVNodeListener(node, evt, onValidate);\r\n });\r\n vm.initialized = true;\r\n}\n\nvar PROVIDER_COUNTER = 0;\r\nfunction data() {\r\n var errors = [];\r\n var fieldName = '';\r\n var defaultValues = {\r\n errors: errors,\r\n value: undefined,\r\n initialized: false,\r\n initialValue: undefined,\r\n flags: createFlags(),\r\n failedRules: {},\r\n isActive: true,\r\n fieldName: fieldName,\r\n id: ''\r\n };\r\n return defaultValues;\r\n}\r\nvar ValidationProvider = Vue.extend({\r\n inject: {\r\n $_veeObserver: {\r\n from: '$_veeObserver',\r\n default: function () {\r\n if (!this.$vnode.context.$_veeObserver) {\r\n this.$vnode.context.$_veeObserver = createObserver();\r\n }\r\n return this.$vnode.context.$_veeObserver;\r\n }\r\n }\r\n },\r\n props: {\r\n vid: {\r\n type: String,\r\n default: ''\r\n },\r\n name: {\r\n type: String,\r\n default: null\r\n },\r\n mode: {\r\n type: [String, Function],\r\n default: function () {\r\n return getConfig().mode;\r\n }\r\n },\r\n rules: {\r\n type: [Object, String],\r\n default: null\r\n },\r\n immediate: {\r\n type: Boolean,\r\n default: false\r\n },\r\n bails: {\r\n type: Boolean,\r\n default: function () { return getConfig().bails; }\r\n },\r\n skipIfEmpty: {\r\n type: Boolean,\r\n default: function () { return getConfig().skipOptional; }\r\n },\r\n debounce: {\r\n type: Number,\r\n default: 0\r\n },\r\n tag: {\r\n type: String,\r\n default: 'span'\r\n },\r\n slim: {\r\n type: Boolean,\r\n default: false\r\n },\r\n disabled: {\r\n type: Boolean,\r\n default: false\r\n },\r\n customMessages: {\r\n type: Object,\r\n default: function () {\r\n return {};\r\n }\r\n }\r\n },\r\n watch: {\r\n rules: {\r\n deep: true,\r\n handler: function (val, oldVal) {\r\n this._needsValidation = !isEqual(val, oldVal);\r\n }\r\n }\r\n },\r\n data: data,\r\n computed: {\r\n fieldDeps: function () {\r\n var _this = this;\r\n return Object.keys(this.normalizedRules).reduce(function (acc, rule) {\r\n var deps = extractLocators(_this.normalizedRules[rule]).map(function (dep) { return dep.__locatorRef; });\r\n acc.push.apply(acc, deps);\r\n deps.forEach(function (depName) {\r\n watchCrossFieldDep(_this, depName);\r\n });\r\n return acc;\r\n }, []);\r\n },\r\n normalizedEvents: function () {\r\n var _this = this;\r\n var on = computeModeSetting(this).on;\r\n return (on || []).map(function (e) {\r\n if (e === 'input') {\r\n return _this._inputEventName;\r\n }\r\n return e;\r\n });\r\n },\r\n isRequired: function () {\r\n var rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);\r\n var isRequired = Object.keys(rules).some(RuleContainer.isRequireRule);\r\n this.flags.required = !!isRequired;\r\n return isRequired;\r\n },\r\n classes: function () {\r\n var names = getConfig().classes;\r\n return computeClassObj(names, this.flags);\r\n },\r\n normalizedRules: function () {\r\n return normalizeRules(this.rules);\r\n }\r\n },\r\n mounted: function () {\r\n var _this = this;\r\n var onLocaleChanged = function () {\r\n if (!_this.flags.validated) {\r\n return;\r\n }\r\n var regenerateMap = _this._regenerateMap;\r\n if (regenerateMap) {\r\n var errors_1 = [];\r\n var failedRules_1 = {};\r\n Object.keys(regenerateMap).forEach(function (rule) {\r\n var msg = regenerateMap[rule]();\r\n errors_1.push(msg);\r\n failedRules_1[rule] = msg;\r\n });\r\n _this.applyResult({ errors: errors_1, failedRules: failedRules_1, regenerateMap: regenerateMap });\r\n return;\r\n }\r\n _this.validate();\r\n };\r\n EVENT_BUS.$on('change:locale', onLocaleChanged);\r\n this.$on('hook:beforeDestroy', function () {\r\n EVENT_BUS.$off('change:locale', onLocaleChanged);\r\n });\r\n },\r\n render: function (h) {\r\n var _a, _b, _c, _d;\r\n this.registerField();\r\n var ctx = createValidationCtx(this);\r\n var children = normalizeChildren(this, ctx);\r\n var input = findInputNode(children);\r\n if (!input) {\r\n // Silent exit if no input was found.\r\n return this.slim && children.length <= 1 ? children[0] : h(this.tag, children);\r\n }\r\n var resolved = getConfig().useConstraintAttrs ? resolveRules(input) : {};\r\n if (!isEqual(this._resolvedRules, resolved)) {\r\n this._needsValidation = true;\r\n }\r\n if (isHTMLNode(input)) {\r\n this.fieldName = ((_b = (_a = input.data) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b.name) || ((_d = (_c = input.data) === null || _c === void 0 ? void 0 : _c.attrs) === null || _d === void 0 ? void 0 : _d.id);\r\n }\r\n this._resolvedRules = resolved;\r\n addListeners(this, input);\r\n return this.slim && children.length <= 1 ? children[0] : h(this.tag, children);\r\n },\r\n beforeDestroy: function () {\r\n // cleanup reference.\r\n this.$_veeObserver.unobserve(this.id);\r\n },\r\n activated: function () {\r\n this.isActive = true;\r\n },\r\n deactivated: function () {\r\n this.isActive = false;\r\n },\r\n methods: {\r\n setFlags: function (flags) {\r\n var _this = this;\r\n Object.keys(flags).forEach(function (flag) {\r\n _this.flags[flag] = flags[flag];\r\n });\r\n },\r\n syncValue: function (v) {\r\n var value = normalizeEventValue(v);\r\n this.value = value;\r\n this.flags.changed = this.initialValue !== value;\r\n },\r\n reset: function () {\r\n var _this = this;\r\n this.errors = [];\r\n this.initialValue = this.value;\r\n var flags = createFlags();\r\n flags.required = this.isRequired;\r\n this.setFlags(flags);\r\n this.failedRules = {};\r\n this.validateSilent();\r\n this._pendingValidation = undefined;\r\n this._pendingReset = true;\r\n setTimeout(function () {\r\n _this._pendingReset = false;\r\n }, this.debounce);\r\n },\r\n validate: function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (args.length > 0) {\r\n this.syncValue(args[0]);\r\n }\r\n return [2 /*return*/, triggerThreadSafeValidation(this)];\r\n });\r\n });\r\n },\r\n validateSilent: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var rules, result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.setFlags({ pending: true });\r\n rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);\r\n Object.defineProperty(rules, '_$$isNormalized', {\r\n value: true,\r\n writable: false,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n return [4 /*yield*/, validate(this.value, rules, __assign(__assign({ name: this.name || this.fieldName }, createLookup(this)), { bails: this.bails, skipIfEmpty: this.skipIfEmpty, isInitial: !this.initialized, customMessages: this.customMessages }))];\r\n case 1:\r\n result = _a.sent();\r\n this.setFlags({\r\n pending: false,\r\n valid: result.valid,\r\n invalid: !result.valid\r\n });\r\n return [2 /*return*/, result];\r\n }\r\n });\r\n });\r\n },\r\n setErrors: function (errors) {\r\n this.applyResult({ errors: errors, failedRules: {} });\r\n },\r\n applyResult: function (_a) {\r\n var errors = _a.errors, failedRules = _a.failedRules, regenerateMap = _a.regenerateMap;\r\n this.errors = errors;\r\n this._regenerateMap = regenerateMap;\r\n this.failedRules = __assign({}, (failedRules || {}));\r\n this.setFlags({\r\n valid: !errors.length,\r\n passed: !errors.length,\r\n invalid: !!errors.length,\r\n failed: !!errors.length,\r\n validated: true,\r\n changed: this.value !== this.initialValue\r\n });\r\n },\r\n registerField: function () {\r\n updateRenderingContextRefs(this);\r\n }\r\n }\r\n});\r\nfunction computeClassObj(names, flags) {\r\n var acc = {};\r\n var keys = Object.keys(flags);\r\n var length = keys.length;\r\n var _loop_1 = function (i) {\r\n var flag = keys[i];\r\n var className = (names && names[flag]) || flag;\r\n var value = flags[flag];\r\n if (isNullOrUndefined(value)) {\r\n return \"continue\";\r\n }\r\n if ((flag === 'valid' || flag === 'invalid') && !flags.validated) {\r\n return \"continue\";\r\n }\r\n if (typeof className === 'string') {\r\n acc[className] = value;\r\n }\r\n else if (Array.isArray(className)) {\r\n className.forEach(function (cls) {\r\n acc[cls] = value;\r\n });\r\n }\r\n };\r\n for (var i = 0; i < length; i++) {\r\n _loop_1(i);\r\n }\r\n return acc;\r\n}\r\nfunction createLookup(vm) {\r\n var providers = vm.$_veeObserver.refs;\r\n var reduced = {\r\n names: {},\r\n values: {}\r\n };\r\n return vm.fieldDeps.reduce(function (acc, depName) {\r\n if (!providers[depName]) {\r\n return acc;\r\n }\r\n acc.values[depName] = providers[depName].value;\r\n acc.names[depName] = providers[depName].name;\r\n return acc;\r\n }, reduced);\r\n}\r\nfunction extractId(vm) {\r\n if (vm.vid) {\r\n return vm.vid;\r\n }\r\n if (vm.name) {\r\n return vm.name;\r\n }\r\n if (vm.id) {\r\n return vm.id;\r\n }\r\n if (vm.fieldName) {\r\n return vm.fieldName;\r\n }\r\n PROVIDER_COUNTER++;\r\n return \"_vee_\" + PROVIDER_COUNTER;\r\n}\r\nfunction updateRenderingContextRefs(vm) {\r\n var providedId = extractId(vm);\r\n var id = vm.id;\r\n // Nothing has changed.\r\n if (!vm.isActive || (id === providedId && vm.$_veeObserver.refs[id])) {\r\n return;\r\n }\r\n // vid was changed.\r\n if (id !== providedId && vm.$_veeObserver.refs[id] === vm) {\r\n vm.$_veeObserver.unobserve(id);\r\n }\r\n vm.id = providedId;\r\n vm.$_veeObserver.observe(vm);\r\n}\r\nfunction createObserver() {\r\n return {\r\n refs: {},\r\n observe: function (vm) {\r\n this.refs[vm.id] = vm;\r\n },\r\n unobserve: function (id) {\r\n delete this.refs[id];\r\n }\r\n };\r\n}\r\nfunction watchCrossFieldDep(ctx, depName, withHooks) {\r\n if (withHooks === void 0) { withHooks = true; }\r\n var providers = ctx.$_veeObserver.refs;\r\n if (!ctx._veeWatchers) {\r\n ctx._veeWatchers = {};\r\n }\r\n if (!providers[depName] && withHooks) {\r\n return ctx.$once('hook:mounted', function () {\r\n watchCrossFieldDep(ctx, depName, false);\r\n });\r\n }\r\n if (!isCallable(ctx._veeWatchers[depName]) && providers[depName]) {\r\n ctx._veeWatchers[depName] = providers[depName].$watch('value', function () {\r\n if (ctx.flags.validated) {\r\n ctx._needsValidation = true;\r\n ctx.validate();\r\n }\r\n });\r\n }\r\n}\n\nvar FLAGS_STRATEGIES = [\r\n ['pristine', 'every'],\r\n ['dirty', 'some'],\r\n ['touched', 'some'],\r\n ['untouched', 'every'],\r\n ['valid', 'every'],\r\n ['invalid', 'some'],\r\n ['pending', 'some'],\r\n ['validated', 'every'],\r\n ['changed', 'some'],\r\n ['passed', 'every'],\r\n ['failed', 'some']\r\n];\r\nvar OBSERVER_COUNTER = 0;\r\nfunction data$1() {\r\n var refs = {};\r\n var errors = {};\r\n var flags = createObserverFlags();\r\n var fields = {};\r\n // FIXME: Not sure of this one can be typed, circular type reference.\r\n var observers = [];\r\n return {\r\n id: '',\r\n refs: refs,\r\n observers: observers,\r\n errors: errors,\r\n flags: flags,\r\n fields: fields\r\n };\r\n}\r\nfunction provideSelf() {\r\n return {\r\n $_veeObserver: this\r\n };\r\n}\r\nvar ValidationObserver = Vue.extend({\r\n name: 'ValidationObserver',\r\n provide: provideSelf,\r\n inject: {\r\n $_veeObserver: {\r\n from: '$_veeObserver',\r\n default: function () {\r\n if (!this.$vnode.context.$_veeObserver) {\r\n return null;\r\n }\r\n return this.$vnode.context.$_veeObserver;\r\n }\r\n }\r\n },\r\n props: {\r\n tag: {\r\n type: String,\r\n default: 'span'\r\n },\r\n vid: {\r\n type: String,\r\n default: function () {\r\n return \"obs_\" + OBSERVER_COUNTER++;\r\n }\r\n },\r\n slim: {\r\n type: Boolean,\r\n default: false\r\n },\r\n disabled: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data: data$1,\r\n created: function () {\r\n var _this = this;\r\n this.id = this.vid;\r\n register(this);\r\n var onChange = debounce(function (_a) {\r\n var errors = _a.errors, flags = _a.flags, fields = _a.fields;\r\n _this.errors = errors;\r\n _this.flags = flags;\r\n _this.fields = fields;\r\n }, 16);\r\n this.$watch(computeObserverState, onChange);\r\n },\r\n activated: function () {\r\n register(this);\r\n },\r\n deactivated: function () {\r\n unregister(this);\r\n },\r\n beforeDestroy: function () {\r\n unregister(this);\r\n },\r\n render: function (h) {\r\n var children = normalizeChildren(this, prepareSlotProps(this));\r\n return this.slim && children.length <= 1 ? children[0] : h(this.tag, { on: this.$listeners }, children);\r\n },\r\n methods: {\r\n observe: function (subscriber, kind) {\r\n var _a;\r\n if (kind === void 0) { kind = 'provider'; }\r\n if (kind === 'observer') {\r\n this.observers.push(subscriber);\r\n return;\r\n }\r\n this.refs = __assign(__assign({}, this.refs), (_a = {}, _a[subscriber.id] = subscriber, _a));\r\n },\r\n unobserve: function (id, kind) {\r\n if (kind === void 0) { kind = 'provider'; }\r\n if (kind === 'provider') {\r\n var provider = this.refs[id];\r\n if (!provider) {\r\n return;\r\n }\r\n this.$delete(this.refs, id);\r\n return;\r\n }\r\n var idx = findIndex(this.observers, function (o) { return o.id === id; });\r\n if (idx !== -1) {\r\n this.observers.splice(idx, 1);\r\n }\r\n },\r\n validate: function (_a) {\r\n var _b = (_a === void 0 ? {} : _a).silent, silent = _b === void 0 ? false : _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var results;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0: return [4 /*yield*/, Promise.all(__spreadArrays(values(this.refs)\r\n .filter(function (r) { return !r.disabled; })\r\n .map(function (ref) { return ref[silent ? 'validateSilent' : 'validate']().then(function (r) { return r.valid; }); }), this.observers.filter(function (o) { return !o.disabled; }).map(function (obs) { return obs.validate({ silent: silent }); })))];\r\n case 1:\r\n results = _c.sent();\r\n return [2 /*return*/, results.every(function (r) { return r; })];\r\n }\r\n });\r\n });\r\n },\r\n handleSubmit: function (cb) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var isValid;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validate()];\r\n case 1:\r\n isValid = _a.sent();\r\n if (!isValid || !cb) {\r\n return [2 /*return*/];\r\n }\r\n return [2 /*return*/, cb()];\r\n }\r\n });\r\n });\r\n },\r\n reset: function () {\r\n return __spreadArrays(values(this.refs), this.observers).forEach(function (ref) { return ref.reset(); });\r\n },\r\n setErrors: function (errors) {\r\n var _this = this;\r\n Object.keys(errors).forEach(function (key) {\r\n var provider = _this.refs[key];\r\n if (!provider)\r\n return;\r\n var errorArr = errors[key] || [];\r\n errorArr = typeof errorArr === 'string' ? [errorArr] : errorArr;\r\n provider.setErrors(errorArr);\r\n });\r\n this.observers.forEach(function (observer) {\r\n observer.setErrors(errors);\r\n });\r\n }\r\n }\r\n});\r\nfunction unregister(vm) {\r\n if (vm.$_veeObserver) {\r\n vm.$_veeObserver.unobserve(vm.id, 'observer');\r\n }\r\n}\r\nfunction register(vm) {\r\n if (vm.$_veeObserver) {\r\n vm.$_veeObserver.observe(vm, 'observer');\r\n }\r\n}\r\nfunction prepareSlotProps(vm) {\r\n return __assign(__assign({}, vm.flags), { errors: vm.errors, fields: vm.fields, validate: vm.validate, passes: vm.handleSubmit, handleSubmit: vm.handleSubmit, reset: vm.reset });\r\n}\r\n// Creates a modified version of validation flags\r\nfunction createObserverFlags() {\r\n return __assign(__assign({}, createFlags()), { valid: true, invalid: false });\r\n}\r\nfunction computeObserverState() {\r\n var vms = __spreadArrays(values(this.refs), this.observers);\r\n var errors = {};\r\n var flags = createObserverFlags();\r\n var fields = {};\r\n var length = vms.length;\r\n for (var i = 0; i < length; i++) {\r\n var vm = vms[i];\r\n // validation provider\r\n if (Array.isArray(vm.errors)) {\r\n errors[vm.id] = vm.errors;\r\n fields[vm.id] = __assign({ id: vm.id, name: vm.name, failedRules: vm.failedRules }, vm.flags);\r\n continue;\r\n }\r\n // Nested observer, merge errors and fields\r\n errors = __assign(__assign({}, errors), vm.errors);\r\n fields = __assign(__assign({}, fields), vm.fields);\r\n }\r\n FLAGS_STRATEGIES.forEach(function (_a) {\r\n var flag = _a[0], method = _a[1];\r\n flags[flag] = vms[method](function (vm) { return vm.flags[flag]; });\r\n });\r\n return { errors: errors, flags: flags, fields: fields };\r\n}\n\nfunction withValidation(component, mapProps) {\r\n if (mapProps === void 0) { mapProps = identity; }\r\n var _a;\r\n var options = 'options' in component ? component.options : component;\r\n var providerOpts = ValidationProvider.options;\r\n var hoc = {\r\n name: (options.name || 'AnonymousHoc') + \"WithValidation\",\r\n props: __assign({}, providerOpts.props),\r\n data: providerOpts.data,\r\n computed: __assign({}, providerOpts.computed),\r\n methods: __assign({}, providerOpts.methods),\r\n beforeDestroy: providerOpts.beforeDestroy,\r\n inject: providerOpts.inject\r\n };\r\n var eventName = ((_a = options === null || options === void 0 ? void 0 : options.model) === null || _a === void 0 ? void 0 : _a.event) || 'input';\r\n hoc.render = function (h) {\r\n var _a;\r\n this.registerField();\r\n var vctx = createValidationCtx(this);\r\n var listeners = __assign({}, this.$listeners);\r\n var model = findModel(this.$vnode);\r\n this._inputEventName = this._inputEventName || getInputEventName(this.$vnode, model);\r\n var value = findValue(this.$vnode);\r\n onRenderUpdate(this, value === null || value === void 0 ? void 0 : value.value);\r\n var _b = createCommonHandlers(this), onInput = _b.onInput, onBlur = _b.onBlur, onValidate = _b.onValidate;\r\n mergeVNodeListeners(listeners, eventName, onInput);\r\n mergeVNodeListeners(listeners, 'blur', onBlur);\r\n this.normalizedEvents.forEach(function (evt) {\r\n mergeVNodeListeners(listeners, evt, onValidate);\r\n });\r\n // Props are any attrs not associated with ValidationProvider Plus the model prop.\r\n // WARNING: Accidental prop overwrite will probably happen.\r\n var prop = (findModelConfig(this.$vnode) || { prop: 'value' }).prop;\r\n var props = __assign(__assign(__assign({}, this.$attrs), (_a = {}, _a[prop] = model === null || model === void 0 ? void 0 : model.value, _a)), mapProps(vctx));\r\n return h(options, {\r\n attrs: this.$attrs,\r\n props: props,\r\n on: listeners\r\n }, normalizeSlots(this.$slots, this.$vnode.context));\r\n };\r\n return hoc;\r\n}\n\nvar version = '3.3.0';\n\nexport { ValidationObserver, ValidationProvider, configure, extend, localeChanged, localize, normalizeRules, setInteractionMode, validate, version, withValidation };\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","_t","staticRenderFns","name","component","ariaLabel","id","isOpen","on","$event","preventDefault","toggle","_e","directives","rawName","value","tooltipText","expression","domProps","_s","$trans","_v","props","type","default","tooltipAriaLabel","data","mounted","methods","ref","onSubmit","content","Tooltips","Expense_type_infotext","keyValuePair","ExpenseTypes","model","callback","$$v","selectedType","Expense_infotext","expense","isCalculating","resetCalculator","ariaMessage","addThousandSeparators","result","taxCredit","limitValues","percentage","treshold","Key","limit","components","Tooltip","CalculatorField","CalculatorSelect","ValidationObserver","A11YAnnouncer","resultCalculated","calculatorError","computed","showResult","isFormDirty","watch","created","localize","firstError","calculateCredit","calculatorAPI","calculateHouseholdExpense2022","then","_observer","catch","setLimitValues","rules","mode","scopedSlots","_u","key","fn","errors","ariaInput","ariaMsg","invalid","_b","length","isDisabled","$emit","target","ValidationProvider","isCurrency","$$selectedVal","Array","prototype","filter","call","options","o","selected","map","val","_value","multiple","_l","option","isKeyValuePair","Id","Value","Label","makeBuiltIn","defineProperty","module","exports","descriptor","get","getter","set","setter","f","global","DESCRIPTORS","defineBuiltInAccessor","regExpFlags","fails","RegExp","RegExpPrototype","FORCED","INDICES_SUPPORT","error","O","calls","expected","addGetter","chr","Object","pairs","dotAll","ignoreCase","multiline","sticky","hasIndices","getOwnPropertyDescriptor","configurable","$","uncurryThis","hasOwn","isCallable","isPrototypeOf","toString","copyConstructorProperties","NativeSymbol","Symbol","SymbolPrototype","undefined","description","EmptyStringDescriptionStore","SymbolWrapper","arguments","constructor","NATIVE_SYMBOL","String","thisSymbolValue","valueOf","symbolDescriptiveString","regexp","replace","stringSlice","slice","symbol","string","desc","forced","apiBaseUrl","calculateAssetTransferTax","sellingPrice","taxRate","params","calculatorHelpers","calculatorUrl","API","calculateGiftTax","calculateInheritanceTax","deductionType","calculateAlcoholTax","amount","categoryId","alcoholTaxRateInEuroCents","packagingTaxRateInEuroCents","eaclBasedTax","company","calculateInterestTax","language","dueDate","paymentDate","taxAmount","isInheritanceTax","calculateVat","taxFreePrice","taxablePrice","calculateVatLowerLimitRelief","Language","calculateHouseholdExpense","calculateElectricityDeduction","vatLowerLimitReliefCalculatorModel","limits","huojennukseenOikeuttavanLiikevaihdonAlaraja","huojennukseenOikeuttavanLiikevaihdonYlaraja","liikevaihto","tilikaudenPituus","verollinenLiikevaihto","verotonLiikevaihto","kayttoomaisuudenMyynti","kiinteistonKayttooikeudenLuovutus","metsataloudenMyynti","eraatVerottomatMyynnit","suoritettavaVero","arvonlisaveronOsuus","suoritettavatArvonlisaverotYhteensa","kayttoomaisuudenMyynninVero","metsataloudenMyynninVero","kiinteistonKayttooikeudenLuovutusSuoritettavaVero","kaannettyVerovelvollisuus","euTavaraJaPalveluostojenVero","tavaranMaahantuonnistaSuoritettavaVero","ostojenVero","vahennettavatArvonlisaverotYhteensa","metsataloudenOstojenVero","kiinteistonKayttooikeudenLuovutusOstojenVero","sumFields","liikevaihtoYhteensa","liikevaihtoonEiLuetaYhteensa","huojennukseenOikeuttavaLiikevaihto","tilikaudeltaSuoritettavaVeroYhteensa","tilikaudenOstojenVeroYhteensa","huojennuksenMaara","annualInformationCalculatorModel","inputFields","mostRecentFinancialYearStartDate","mostRecentFinancialYearEndDate","dividendResolutionDate","dividendWithdrawalDate","mostRecentFinancialYear","taxYear","paymentYear","deadlineForSelfAssessedTaxes","deadlineForAnnualInformationReport","alcoholTaxCalculatorModel","selectedCategory","assetTransferTaxCalculatorModel","taxPercent","inheritanceTaxCalculatorModel","inheritanceTaxValue","selectedDeduction","interestCalculatorModel","householdExpenseCalculatorModel","householdExpenseCalculatorModel2022","vatCalculatorModel","param","_isNil","containsString","input","searchString","position","indexOf","decimalToString","str","formatDecimal","convertStringToDate","dateStr","day","month","year","split","Date","convertDateToString","parseStringToFloat","parseFloat","convertDecimalSeparatorToDot","roundToTwo","Math","round","validate$8","_a","re","isArray","emailStr","trim","every","test","params$8","email","validate","isNullOrUndefined","isEmptyArray","arr","validate$o","allowFalse","valid","required","computesRequired","params$h","Vue","currencyValidator","regex","dateFormatValidator","mustNotBeSameDateValidator","other","getTime","castValue","isTarget","cast","dateMustBeGreaterValidator","taxFreePriceValidator","taxable","taxablePriceValidator","taxFree","taxAmountValidator","dateBetweenValidator","minDate","maxDate","message","getDate","getMonth","getFullYear","dateMustBeGreaterOrEqualValidator","financialYearRangeValidator","startDate","financialYearsMaxLenghtInMonths","firstDateOutOfRange","setMonth","financialYearInMonthsValidator","financialYearGivenBeforeRevenue","totalTurnoverValidator","maxValue","decimalValidator","percentageValidator","dividendResolutionDateNotInFinancialYear","dateInFinancialYear","dividendResolutionDateValidator","dateIsGreater","isSameOrFollowingYear","validationMessages","translation","messages","currency","date_format","not_same_date","valid_end_date","valid_financial_year_length","dividend_resolution_date_not_in_financial_year","valid_dividend_resolution_date","valid_dividend_withdrawal_date","valid_decimal","payment_date_after","valid_share_of_expense","valid_financial_year_in_months","financial_year_given","tax_free_validator","taxable_validator","tax_amount_validator","extend","__assign","assign","t","s","i","n","p","hasOwnProperty","apply","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","done","__generator","body","y","g","_","label","sent","trys","ops","verb","iterator","v","op","TypeError","pop","push","__spreadArrays","il","r","k","a","j","jl","isNaN","isObject","obj","isEqual","lhs","rhs","source","flags","keys","isSpecified","isLocator","__locatorRef","findIndex","arrayLike","predicate","array","toArray","find","idx","includes","collection","item","from","_copyArray","values","merge","forEach","createFlags","untouched","touched","dirty","pristine","validated","pending","changed","passed","failed","debounce","wait","token","cancelled","args","_i","later","timeout","clearTimeout","setTimeout","warn","console","interpolate","template","RULES","normalizeSchema","schema","RuleContainer","rule","lazy","isLazy","isRequireRule","getRuleDefinition","ruleName","guardExtend","validator","Error","DEFAULT_CONFIG","defaultMessage","skipOptional","classes","bails","useConstraintAttrs","currentConfig","getConfig","setConfig","newConf","normalizeRules","acc","writable","enumerable","_$$isNormalized","reduce","prev","curr","preserveArrayParams","buildParams","parsedRule","parseRule","provided","ruleSchema","definedParams","lastDefinedParam_1","createLocator","join","castFn","locator","crossTable","extractLocators","shouldBail","skipIfEmpty","field","failedRules","regenerateMap","forceRequired","names","customMessages","_validate","msg","isInitial","shouldSkip","_d","_shouldSkip","_test","requireRules","isEmpty","isEmptyAndOptional","isRequired","normalizedValue","values_1","fillTargetValues","_field_","_value_","_rule_","_generateFieldError","ruleTargets","_getRuleTargets","_getUserTargets","userTargets","userMessage","_normalizeMessage","numTargets","ruleConfig","index","name_1","normalize","aggressive","eager","passive","modes","EVENT_BUS","localeChanged","DICTIONARY","Dictionary","locale","dictionary","container","format","_f","_g","fields","hasRule","isEvent","evt","Event","srcElement","normalizeEventValue","files","_vModifiers","number","valueAsNumber","trimmedValue","isTextInput","vnode","elm","tag","findModel","nonStandardVNodeData","d","findValue","config","findModelConfig","prop","componentOptions","propsData","propsDataWithValue","extractChildren","children","findInputNode","candidate","node","Ctor","mergeVNodeListeners","eventName","handler","fns","invoker","addNativeNodeListener","addComponentNodeListener","listeners","addVNodeListener","getInputEventName","event_1","event","modifiers","isHTMLNode","resolveTextualRules","pattern","maxlength","max","minlength","min","min_value","Number","max_value","resolveRules","htmlTags","normalizeChildren","context","slotProps","$scopedSlots","$slots","shouldValidate","ctx","_ignoreImmediate","immediate","normalizedEvents","_needsValidation","initialized","createValidationCtx","reset","onRenderUpdate","vm","initialValue","validateNow","triggerThreadSafeValidation","validateSilent","$once","computeModeSetting","compute","pendingPromise","_pendingValidation","applyResult","createCommonHandlers","$veeOnInput","syncValue","setFlags","onInput","$veeOnBlur","onBlur","onValidate","$veeHandler","$veeDebounce","$nextTick","_pendingReset","addListeners","_inputEventName","PROVIDER_COUNTER","fieldName","defaultValues","isActive","inject","$_veeObserver","$vnode","createObserver","vid","Function","Boolean","slim","disabled","deep","oldVal","fieldDeps","_this","normalizedRules","deps","dep","depName","watchCrossFieldDep","_resolvedRules","some","computeClassObj","onLocaleChanged","_regenerateMap","errors_1","failedRules_1","$on","$off","h","registerField","resolved","beforeDestroy","unobserve","activated","deactivated","flag","createLookup","setErrors","updateRenderingContextRefs","_loop_1","className","cls","providers","refs","reduced","extractId","providedId","observe","withHooks","_veeWatchers","$watch","FLAGS_STRATEGIES","OBSERVER_COUNTER","data$1","createObserverFlags","observers","provideSelf","provide","register","onChange","computeObserverState","unregister","prepareSlotProps","$listeners","subscriber","kind","splice","provider","$delete","silent","results","all","obs","handleSubmit","cb","isValid","errorArr","observer","passes","vms","method","_typeof","_toPrimitive","hint","prim","toPrimitive","res","_toPropertyKey","arg","_defineProperty","toPropertyKey","ownKeys","object","enumerableOnly","getOwnPropertySymbols","symbols","sym","_objectSpread2","getOwnPropertyDescriptors","defineProperties"],"sourceRoot":""}