{"version":3,"file":"js/vat-lower-limit-calculator.4e88c95c.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/VatLowerLimitCalculator.vue?a63d","webpack://vero/./src/sites/tax_fi/js/vue/components/calculators/partials/CalculatorTotal.vue?7309","webpack://vero/src/sites/tax_fi/js/vue/components/calculators/partials/CalculatorTotal.vue","webpack://vero/./src/sites/tax_fi/js/vue/components/calculators/partials/CalculatorTotal.vue?f6af","webpack://vero/./src/sites/tax_fi/js/vue/components/calculators/partials/CalculatorTotal.vue","webpack://vero/src/sites/tax_fi/js/vue/components/calculators/VatLowerLimitCalculator.vue","webpack://vero/./src/sites/tax_fi/js/vue/components/calculators/VatLowerLimitCalculator.vue?d1cb","webpack://vero/./src/sites/tax_fi/js/vue/components/calculators/VatLowerLimitCalculator.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/./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 vat-lower-limit-calculator\"},[_c('ValidationObserver',{ref:\"observer\",attrs:{\"tag\":\"form\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.onSubmit($event)}}},[_c('fieldset',{staticClass:\"calculator__group vat-lower-limit-calculator__group\"},[_c('legend',[_vm._v(\"1. \"+_vm._s(_vm.$trans('/calculators/Tilikausi_otsikko')))]),_c('Tooltip',{attrs:{\"tooltip-text\":_vm.content.Tooltips.Tilikauden_pituus_infotext}},[_c('label',{attrs:{\"for\":\"tilikaudenPituus\"}},[_vm._v(_vm._s(_vm.$trans('/calculators/Tilikauden_pituus')))])]),_c('calculator-field',{ref:\"tilikaudenPituus\",attrs:{\"name\":\"tilikaudenPituus\",\"rules\":\"required|valid_financial_year_in_months\"},model:{value:(_vm.liikevaihto.tilikaudenPituus),callback:function ($$v) {_vm.$set(_vm.liikevaihto, \"tilikaudenPituus\", $$v)},expression:\"liikevaihto.tilikaudenPituus\"}}),_c('Tooltip',{attrs:{\"tooltip-text\":_vm.content.Tooltips.Verollinen_liikevaihto_infotext}},[_c('label',{attrs:{\"for\":\"verollinenLiikevaihto\"}},[_vm._v(_vm._s(_vm.$trans('/calculators/Verollinen_liikevaihto')))])]),_c('calculator-field',{ref:\"verollinenLiikevaihto\",attrs:{\"name\":\"verollinenLiikevaihto\",\"rules\":(\"currency|financial_year_given:\" + (_vm.liikevaihto.tilikaudenPituus) + \"|total_turnover:\" + (this.huojennukseenOikeuttavaLiikevaihto_sum) + \",\" + (this.flexibleUpperLimit) + \"|required\")},model:{value:(_vm.liikevaihto.verollinenLiikevaihto),callback:function ($$v) {_vm.$set(_vm.liikevaihto, \"verollinenLiikevaihto\", $$v)},expression:\"liikevaihto.verollinenLiikevaihto\"}}),_c('Tooltip',{attrs:{\"tooltip-text\":_vm.content.Tooltips.Veroton_liikevaihto_infotext}},[_c('label',{attrs:{\"for\":\"verotonLiikevaihto\"},domProps:{\"textContent\":_vm._s(_vm.$trans('/calculators/Veroton_liikevaihto'))}})]),_c('calculator-field',{ref:\"verotonLiikevaihto\",attrs:{\"name\":\"verotonLiikevaihto\",\"rules\":(\"currency|total_turnover:\" + (this.huojennukseenOikeuttavaLiikevaihto_sum) + \",\" + (this.flexibleUpperLimit))},model:{value:(_vm.liikevaihto.verotonLiikevaihto),callback:function ($$v) {_vm.$set(_vm.liikevaihto, \"verotonLiikevaihto\", $$v)},expression:\"liikevaihto.verotonLiikevaihto\"}}),_c('fieldset',{staticClass:\"calculator__group vat-lower-limit-calculator__subgroup\"},[_c('div',{staticClass:\"calculator__group vat-lower-limit-calculator__sublegend\"},[_c('legend',[_vm._v(\" \"+_vm._s(_vm.$trans('/calculators/Liikevaihtoon_ei_lueta_otsikko'))+\" \")]),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.content.Tooltips.Liikevaihtoon_ei_lueta_otsikko_infotext)}})]),_c('Tooltip',{attrs:{\"tooltip-text\":_vm.content.Tooltips.Kayttoomaisuuden_myynti_infotext}},[_c('label',{attrs:{\"for\":\"kayttoomaisuudenMyynti\"},domProps:{\"textContent\":_vm._s(_vm.$trans('/calculators/Kayttoomaisuuden_myynti'))}})]),_c('calculator-field',{ref:\"kayttoomaisuudenMyynti\",attrs:{\"name\":\"kayttoomaisuudenMyynti\",\"rules\":\"currency\"},model:{value:(_vm.liikevaihto.kayttoomaisuudenMyynti),callback:function ($$v) {_vm.$set(_vm.liikevaihto, \"kayttoomaisuudenMyynti\", $$v)},expression:\"liikevaihto.kayttoomaisuudenMyynti\"}}),_c('Tooltip',{attrs:{\"tooltip-text\":_vm.content.Tooltips.Kiinteiston_kayttooikeuden_luovutus_infotext}},[_c('label',{attrs:{\"for\":\"kiinteistonKayttooikeudenLuovutus\"},domProps:{\"textContent\":_vm._s(_vm.$trans('/calculators/Kiinteiston_kayttooikeuden_luovutus'))}})]),_c('calculator-field',{ref:\"kiinteistonKayttooikeudenLuovutus\",attrs:{\"name\":\"kiinteistonKayttooikeudenLuovutus\",\"rules\":\"currency\"},model:{value:(_vm.liikevaihto.kiinteistonKayttooikeudenLuovutus),callback:function ($$v) {_vm.$set(_vm.liikevaihto, \"kiinteistonKayttooikeudenLuovutus\", $$v)},expression:\"liikevaihto.kiinteistonKayttooikeudenLuovutus\"}}),_c('Tooltip',{attrs:{\"tooltip-text\":_vm.content.Tooltips.Metsatalouden_myynti_infotext}},[_c('label',{attrs:{\"for\":\"metsataloudenMyynti\"},domProps:{\"textContent\":_vm._s(_vm.$trans('/calculators/Metsatalouden_myynti'))}})]),_c('calculator-field',{ref:\"metsataloudenMyynti\",attrs:{\"name\":\"metsataloudenMyynti\",\"rules\":\"currency\"},model:{value:(_vm.liikevaihto.metsataloudenMyynti),callback:function ($$v) {_vm.$set(_vm.liikevaihto, \"metsataloudenMyynti\", $$v)},expression:\"liikevaihto.metsataloudenMyynti\"}}),_c('Tooltip',{attrs:{\"tooltip-text\":_vm.content.Tooltips.Eraat_verottomat_myynnit_infotext}},[_c('label',{attrs:{\"for\":\"eraatVerottomatMyynnit\"},domProps:{\"textContent\":_vm._s(_vm.$trans('/calculators/Eraat_verottomat_myynnit'))}})]),_c('calculator-field',{ref:\"eraatVerottomatMyynnit\",attrs:{\"name\":\"eraatVerottomatMyynnit\",\"rules\":\"currency\"},model:{value:(_vm.liikevaihto.eraatVerottomatMyynnit),callback:function ($$v) {_vm.$set(_vm.liikevaihto, \"eraatVerottomatMyynnit\", $$v)},expression:\"liikevaihto.eraatVerottomatMyynnit\"}})],1),_c('calculator-total',{attrs:{\"sum\":_vm.huojennukseenOikeuttavaLiikevaihto_suhteutettu,\"title\":_vm.$trans('/calculators/Huojennukseen_oikeuttava_liikevaihto_yhteensa')}})],1),_c('fieldset',{staticClass:\"calculator__group vat-lower-limit-calculator__group\"},[_c('legend',[_vm._v(\"2. \"+_vm._s(_vm.$trans('/calculators/Tilikaudelta_suoritettava_vero_otsikko')))]),_c('Tooltip',{attrs:{\"tooltip-text\":_vm.content.Tooltips.Suoritettavat_arvonlisaverot_yhteensa_infotext}},[_c('label',{attrs:{\"for\":\"suoritettavatArvonlisaverotYhteensa\"},domProps:{\"textContent\":_vm._s(_vm.$trans('/calculators/Suoritettavat_arvonlisaverot_yhteensa'))}})]),_c('calculator-field',{ref:\"suoritettavatArvonlisaverotYhteensa\",attrs:{\"name\":\"suoritettavatArvonlisaverotYhteensa\",\"rules\":\"currency|required\"},model:{value:(_vm.suoritettavaVero.suoritettavatArvonlisaverotYhteensa),callback:function ($$v) {_vm.$set(_vm.suoritettavaVero, \"suoritettavatArvonlisaverotYhteensa\", $$v)},expression:\"suoritettavaVero.suoritettavatArvonlisaverotYhteensa\"}}),_c('fieldset',{staticClass:\"calculator__group vat-lower-limit-calculator__subgroup\"},[_c('div',{staticClass:\"calculator__group vat-lower-limit-calculator__sublegend\"},[_c('legend',[_vm._v(\" \"+_vm._s(_vm.$trans('/calculators/Suoritettavissa_veroissa_ei_huomioida'))+\" \")]),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.content.Tooltips.Suoritettavissa_veroissa_ei_huomioida_otsikko_infotext)}})]),_c('Tooltip',{attrs:{\"tooltip-text\":_vm.content.Tooltips.Kayttoomaisuuden_myynnin_vero_infotext}},[_c('label',{attrs:{\"for\":\"kayttoomaisuudenMyynninVero\"},domProps:{\"textContent\":_vm._s(_vm.$trans('/calculators/Kayttoomaisuuden_myynnin_vero'))}})]),_c('calculator-field',{ref:\"kayttoomaisuudenMyynninVero\",attrs:{\"name\":\"kayttoomaisuudenMyynninVero\",\"rules\":\"currency\"},model:{value:(_vm.suoritettavaVero.kayttoomaisuudenMyynninVero),callback:function ($$v) {_vm.$set(_vm.suoritettavaVero, \"kayttoomaisuudenMyynninVero\", $$v)},expression:\"suoritettavaVero.kayttoomaisuudenMyynninVero\"}}),_c('Tooltip',{attrs:{\"tooltip-text\":_vm.content.Tooltips.Metsatalouden_myynnin_vero_infotext}},[_c('label',{attrs:{\"for\":\"metsataloudenMyynninVero\"},domProps:{\"textContent\":_vm._s(_vm.$trans('/calculators/Metsatalouden_myynnin_vero'))}})]),_c('calculator-field',{ref:\"metsataloudenMyynninVero\",attrs:{\"name\":\"metsataloudenMyynninVero\",\"rules\":\"currency\"},model:{value:(_vm.suoritettavaVero.metsataloudenMyynninVero),callback:function ($$v) {_vm.$set(_vm.suoritettavaVero, \"metsataloudenMyynninVero\", $$v)},expression:\"suoritettavaVero.metsataloudenMyynninVero\"}}),_c('Tooltip',{attrs:{\"tooltip-text\":_vm.content.Tooltips.Kiinteiston_kayttooikeuden_luovutus_suoritettava_vero_infotext}},[_c('label',{attrs:{\"for\":\"kiinteistonKayttooikeudenLuovutusSuoritettavaVero\"},domProps:{\"textContent\":_vm._s(_vm.$trans('/calculators/Kiinteiston_kayttooikeuden_luovutus_suoritettava_vero'))}})]),_c('calculator-field',{ref:\"kiinteistonKayttooikeudenLuovutusSuoritettavaVero\",attrs:{\"name\":\"kiinteistonKayttooikeudenLuovutusSuoritettavaVero\",\"rules\":\"currency\"},model:{value:(_vm.suoritettavaVero.kiinteistonKayttooikeudenLuovutusSuoritettavaVero),callback:function ($$v) {_vm.$set(_vm.suoritettavaVero, \"kiinteistonKayttooikeudenLuovutusSuoritettavaVero\", $$v)},expression:\"suoritettavaVero.kiinteistonKayttooikeudenLuovutusSuoritettavaVero\"}}),_c('Tooltip',{attrs:{\"tooltip-text\":_vm.content.Tooltips.Kaannetty_verovelvollisuus_infotext}},[_c('label',{attrs:{\"for\":\"kaannettyVerovelvollisuus\"},domProps:{\"textContent\":_vm._s(_vm.$trans('/calculators/Kaannetty_verovelvollisuus'))}})]),_c('calculator-field',{ref:\"kaannettyVerovelvollisuus\",attrs:{\"name\":\"kaannettyVerovelvollisuus\",\"rules\":\"currency\"},model:{value:(_vm.suoritettavaVero.kaannettyVerovelvollisuus),callback:function ($$v) {_vm.$set(_vm.suoritettavaVero, \"kaannettyVerovelvollisuus\", $$v)},expression:\"suoritettavaVero.kaannettyVerovelvollisuus\"}}),_c('Tooltip',{attrs:{\"tooltip-text\":_vm.content.Tooltips.Eu_tavara_ja_palveluostojen_vero_infotext}},[_c('label',{attrs:{\"for\":\"euTavaraJaPalveluostojenVero\"},domProps:{\"textContent\":_vm._s(_vm.$trans('/calculators/Eu_tavara_ja_palveluostojen_vero'))}})]),_c('calculator-field',{ref:\"euTavaraJaPalveluostojenVero\",attrs:{\"name\":\"euTavaraJaPalveluostojenVero\",\"rules\":\"currency\"},model:{value:(_vm.suoritettavaVero.euTavaraJaPalveluostojenVero),callback:function ($$v) {_vm.$set(_vm.suoritettavaVero, \"euTavaraJaPalveluostojenVero\", $$v)},expression:\"suoritettavaVero.euTavaraJaPalveluostojenVero\"}}),_c('Tooltip',{attrs:{\"tooltip-text\":_vm.content.Tooltips.Tavaran_maahantuonnista_suoritettava_vero_infotext}},[_c('label',{attrs:{\"for\":\"tavaranMaahantuonnistaSuoritettavaVero\"},domProps:{\"textContent\":_vm._s(_vm.$trans('/calculators/Tavaran_maahantuonnista_suoritettava_vero'))}})]),_c('calculator-field',{ref:\"tavaranMaahantuonnistaSuoritettavaVero\",attrs:{\"name\":\"tavaranMaahantuonnistaSuoritettavaVero\",\"rules\":\"currency\"},model:{value:(_vm.suoritettavaVero.tavaranMaahantuonnistaSuoritettavaVero),callback:function ($$v) {_vm.$set(_vm.suoritettavaVero, \"tavaranMaahantuonnistaSuoritettavaVero\", $$v)},expression:\"suoritettavaVero.tavaranMaahantuonnistaSuoritettavaVero\"}})],1),_c('calculator-total',{attrs:{\"sum\":_vm.tilikaudeltaSuoritettavaVero_sum,\"title\":_vm.$trans('/calculators/Tilikaudelta_suoritettava_vero_yhteensa')}})],1),_c('fieldset',{staticClass:\"calculator__group vat-lower-limit-calculator__group\"},[_c('legend',[_vm._v(\"3. \"+_vm._s(_vm.$trans('/calculators/Tilikauden_ostojen_vero_otsikko')))]),_c('Tooltip',{attrs:{\"tooltip-text\":_vm.content.Tooltips.Vahennettavat_arvonlisaverot_yhteensa_infotext}},[_c('label',{attrs:{\"for\":\"vahennettavatArvonlisaverotYhteensa\"},domProps:{\"textContent\":_vm._s(_vm.$trans('/calculators/Vahennettavat_arvonlisaverot_yhteensa'))}})]),_c('calculator-field',{ref:\"vahennettavatArvonlisaverotYhteensa\",attrs:{\"name\":\"vahennettavatArvonlisaverotYhteensa\",\"rules\":\"currency|required\"},model:{value:(_vm.ostojenVero.vahennettavatArvonlisaverotYhteensa),callback:function ($$v) {_vm.$set(_vm.ostojenVero, \"vahennettavatArvonlisaverotYhteensa\", $$v)},expression:\"ostojenVero.vahennettavatArvonlisaverotYhteensa\"}}),_c('fieldset',{staticClass:\"calculator__group vat-lower-limit-calculator__subgroup\"},[_c('div',{staticClass:\"calculator__group vat-lower-limit-calculator__sublegend\"},[_c('legend',[_vm._v(\" \"+_vm._s(_vm.$trans('/calculators/Vahennettavissa_veroissa_ei_huomioida'))+\" \")]),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.content.Tooltips.Vahennettavissa_veroissa_ei_huomioida_otsikko_infotext)}})]),_c('Tooltip',{attrs:{\"tooltip-text\":_vm.content.Tooltips.Metsatalouden_ostojen_vero_infotext}},[_c('label',{attrs:{\"for\":\"metsataloudenOstojenVero\"},domProps:{\"textContent\":_vm._s(_vm.$trans('/calculators/Metsatalouden_ostojen_vero'))}})]),_c('calculator-field',{ref:\"metsataloudenOstojenVero\",attrs:{\"name\":\"metsataloudenOstojenVero\",\"rules\":\"currency\"},model:{value:(_vm.ostojenVero.metsataloudenOstojenVero),callback:function ($$v) {_vm.$set(_vm.ostojenVero, \"metsataloudenOstojenVero\", $$v)},expression:\"ostojenVero.metsataloudenOstojenVero\"}}),_c('Tooltip',{attrs:{\"tooltip-text\":_vm.content.Tooltips.Kiinteiston_kayttooikeuden_luovutus_ostojen_vero_infotext}},[_c('label',{attrs:{\"for\":\"kiinteistonKayttooikeudenLuovutusOstojenVero\"},domProps:{\"textContent\":_vm._s(_vm.$trans('/calculators/Kiinteiston_kayttooikeuden_luovutus_ostojen_vero'))}})]),_c('calculator-field',{ref:\"kiinteistonKayttooikeudenLuovutusOstojenVero\",attrs:{\"name\":\"kiinteistonKayttooikeudenLuovutusOstojenVero\",\"rules\":\"currency\"},model:{value:(_vm.ostojenVero.kiinteistonKayttooikeudenLuovutusOstojenVero),callback:function ($$v) {_vm.$set(_vm.ostojenVero, \"kiinteistonKayttooikeudenLuovutusOstojenVero\", $$v)},expression:\"ostojenVero.kiinteistonKayttooikeudenLuovutusOstojenVero\"}})],1),_c('calculator-total',{attrs:{\"sum\":_vm.tilikaudenOstojenVero_sum,\"title\":_vm.$trans('/calculators/Tilikauden_ostojen_vero_yhteensa')}})],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/Huojennuksen_maara_otsikko'))}}),_c('div',{attrs:{\"data-cy\":\"huojennuksenMaaraResult\"}},[(_vm.showHuojennuksenMaara)?_c('span',{staticClass:\"calculator-result__value\"},[_vm._v(\" \"+_vm._s((\"\" + (_vm.addThousandSeparators(_vm.result.huojennuksenMaara))))+\" € \")]):_vm._e(),(_vm.getResultText)?_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.getResultText)}}):_vm._e()])]),_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/Huojennukseen_oikeuttava_liikevaihto_otsikko'))}}),_c('span',{staticClass:\"calculator-result__value\"},[_vm._v(_vm._s((\"\" + (_vm.addThousandSeparators(_vm.result.huojennukseenOikeuttavaLiikevaihto))))+\" €\")])]),_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/Alarajahuojennukseen_oikeuttava_vero_otsikko'))}}),_c('span',{staticClass:\"calculator-result__value\",attrs:{\"data-cy\":\"alarajahuojennukseenOikeuttavaVeroYhteensaResult\"}},[_vm._v(_vm._s((\"\" + (_vm.addThousandSeparators(_vm.result.alarajahuojennukseenOikeuttavaVeroYhteensa))))+\" €\")])]),_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/Huojennukseen_oikeuttava_liikevaihto_otsikko'))+\" \"),_c('span',{staticClass:\"lowercase\"},[_vm._v(_vm._s(_vm.$trans('/calculators/InTotal')))]),_vm._v(\": \")]),_c('div',{staticClass:\"calculator-breakdown__cell\"},[_c('span',{attrs:{\"data-cy\":\"huojennukseenOikeuttavaLiikevaihtoResult\"}},[_vm._v(\" \"+_vm._s((\"\" + (_vm.addThousandSeparators(_vm.result.huojennukseenOikeuttavaLiikevaihto))))+\" €\")])])]),_c('li',[_c('div',{staticClass:\"calculator-breakdown__cell\"},[_vm._v(\" \"+_vm._s(_vm.$trans('/calculators/Tilikaudelta_suoritettava_vero_otsikko'))+\" \"),_c('span',{staticClass:\"lowercase\"},[_vm._v(_vm._s(_vm.$trans('/calculators/InTotal')))]),_vm._v(\": \")]),_c('div',{staticClass:\"calculator-breakdown__cell\"},[_c('span',{attrs:{\"data-cy\":\"tilikaudeltaSuoritettavaVeroYhteensaResult\"}},[_vm._v(\" \"+_vm._s((\"\" + (_vm.addThousandSeparators(_vm.result.tilikaudeltaSuoritettavaVeroYhteensa))))+\" €\")])])]),_c('li',[_c('div',{staticClass:\"calculator-breakdown__cell\"},[_vm._v(\" \"+_vm._s(_vm.$trans('/calculators/Tilikauden_ostojen_vero_otsikko'))+\" \"),_c('span',{staticClass:\"lowercase\"},[_vm._v(_vm._s(_vm.$trans('/calculators/InTotal')))]),_vm._v(\": \")]),_c('div',{staticClass:\"calculator-breakdown__cell\"},[_c('span',{attrs:{\"data-cy\":\"tilikaudenOstojenVeroYhteensaResult\"}},[_vm._v(\" \"+_vm._s((\"\" + (_vm.addThousandSeparators(_vm.result.tilikaudenOstojenVeroYhteensa))))+\" €\")])])])])])]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"calculator__total\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \"),(_vm.isValid)?_c('span',[_vm._v(_vm._s(_vm.calculatorHelpers.formatDecimal(_vm.sum))+\" €\")]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n  <div class=\"calculator__total\">\r\n    {{ title }}\r\n    <span v-if=\"isValid\">{{ calculatorHelpers.formatDecimal(sum) }} &euro;</span>\r\n  </div>\r\n</template>\r\n<script>\r\nimport * as calculatorHelpers from '../utils/calculatorHelpers';\r\nexport default {\r\n  name: 'calculatorTotal',\r\n  props: {\r\n    sum: { type: Number },\r\n    title: { type: String, default: 'Yhteensä' },\r\n    isValid: { type: Boolean, default: true }\r\n  },\r\n  data() {\r\n    return {\r\n      calculatorHelpers\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!./CalculatorTotal.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!./CalculatorTotal.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CalculatorTotal.vue?vue&type=template&id=a13e5b70\"\nimport script from \"./CalculatorTotal.vue?vue&type=script&lang=js\"\nexport * from \"./CalculatorTotal.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","<template>\r\n  <div class=\"calculator vat-lower-limit-calculator\">\r\n    <ValidationObserver ref=\"observer\" tag=\"form\" @submit.prevent=\"onSubmit\">\r\n      <fieldset class=\"calculator__group vat-lower-limit-calculator__group\">\r\n        <!-- Tilikauden tai sen osan -->\r\n        <legend>1. {{ $trans('/calculators/Tilikausi_otsikko') }}</legend>\r\n        <!-- Kuukausien määrä -->\r\n        <Tooltip :tooltip-text=\"content.Tooltips.Tilikauden_pituus_infotext\">\r\n          <label for=\"tilikaudenPituus\">{{ $trans('/calculators/Tilikauden_pituus') }}</label>\r\n        </Tooltip>\r\n        <calculator-field\r\n          name=\"tilikaudenPituus\"\r\n          :rules=\"`required|valid_financial_year_in_months`\"\r\n          ref=\"tilikaudenPituus\"\r\n          v-model=\"liikevaihto.tilikaudenPituus\"\r\n        />\r\n        <!-- Verollinen liikevaihto -->\r\n        <Tooltip :tooltip-text=\"content.Tooltips.Verollinen_liikevaihto_infotext\">\r\n          <label for=\"verollinenLiikevaihto\">{{\r\n            $trans('/calculators/Verollinen_liikevaihto')\r\n          }}</label>\r\n        </Tooltip>\r\n        <calculator-field\r\n          name=\"verollinenLiikevaihto\"\r\n          :rules=\"`currency|financial_year_given:${liikevaihto.tilikaudenPituus}|total_turnover:${this.huojennukseenOikeuttavaLiikevaihto_sum},${this.flexibleUpperLimit}|required`\"\r\n          ref=\"verollinenLiikevaihto\"\r\n          v-model=\"liikevaihto.verollinenLiikevaihto\"\r\n        />\r\n\r\n        <!-- Veroton liikevaihto -->\r\n        <Tooltip :tooltip-text=\"content.Tooltips.Veroton_liikevaihto_infotext\">\r\n          <label for=\"verotonLiikevaihto\" v-text=\"$trans('/calculators/Veroton_liikevaihto')\" />\r\n        </Tooltip>\r\n        <calculator-field\r\n          name=\"verotonLiikevaihto\"\r\n          :rules=\"`currency|total_turnover:${this.huojennukseenOikeuttavaLiikevaihto_sum},${this.flexibleUpperLimit}`\"\r\n          ref=\"verotonLiikevaihto\"\r\n          v-model=\"liikevaihto.verotonLiikevaihto\"\r\n        />\r\n\r\n        <fieldset class=\"calculator__group vat-lower-limit-calculator__subgroup\">\r\n          <!-- Liikevaihtoon ei lueta -->\r\n          <div class=\"calculator__group vat-lower-limit-calculator__sublegend\">\r\n            <legend>\r\n              {{ $trans('/calculators/Liikevaihtoon_ei_lueta_otsikko') }}\r\n            </legend>\r\n            <div v-html=\"content.Tooltips.Liikevaihtoon_ei_lueta_otsikko_infotext\"></div>\r\n          </div>\r\n          <!-- Käyttöomaisuuden myynti -->\r\n          <Tooltip :tooltip-text=\"content.Tooltips.Kayttoomaisuuden_myynti_infotext\">\r\n            <label\r\n              for=\"kayttoomaisuudenMyynti\"\r\n              v-text=\"$trans('/calculators/Kayttoomaisuuden_myynti')\"\r\n            />\r\n          </Tooltip>\r\n          <calculator-field\r\n            name=\"kayttoomaisuudenMyynti\"\r\n            rules=\"currency\"\r\n            ref=\"kayttoomaisuudenMyynti\"\r\n            v-model=\"liikevaihto.kayttoomaisuudenMyynti\"\r\n          />\r\n          <!-- Kiinteistön käyttöoikeuden luovutus (AVL 30 §) -->\r\n          <Tooltip :tooltip-text=\"content.Tooltips.Kiinteiston_kayttooikeuden_luovutus_infotext\">\r\n            <label\r\n              for=\"kiinteistonKayttooikeudenLuovutus\"\r\n              v-text=\"$trans('/calculators/Kiinteiston_kayttooikeuden_luovutus')\"\r\n            />\r\n          </Tooltip>\r\n          <calculator-field\r\n            name=\"kiinteistonKayttooikeudenLuovutus\"\r\n            rules=\"currency\"\r\n            ref=\"kiinteistonKayttooikeudenLuovutus\"\r\n            v-model=\"liikevaihto.kiinteistonKayttooikeudenLuovutus\"\r\n          />\r\n          <!-- Metsätalouden myynti -->\r\n          <Tooltip :tooltip-text=\"content.Tooltips.Metsatalouden_myynti_infotext\">\r\n            <label for=\"metsataloudenMyynti\" v-text=\"$trans('/calculators/Metsatalouden_myynti')\" />\r\n          </Tooltip>\r\n          <calculator-field\r\n            name=\"metsataloudenMyynti\"\r\n            rules=\"currency\"\r\n            ref=\"metsataloudenMyynti\"\r\n            v-model=\"liikevaihto.metsataloudenMyynti\"\r\n          />\r\n          <!-- Eräät verottomat myynnit -->\r\n          <Tooltip :tooltip-text=\"content.Tooltips.Eraat_verottomat_myynnit_infotext\">\r\n            <label\r\n              for=\"eraatVerottomatMyynnit\"\r\n              v-text=\"$trans('/calculators/Eraat_verottomat_myynnit')\"\r\n            />\r\n          </Tooltip>\r\n          <calculator-field\r\n            name=\"eraatVerottomatMyynnit\"\r\n            rules=\"currency\"\r\n            ref=\"eraatVerottomatMyynnit\"\r\n            v-model=\"liikevaihto.eraatVerottomatMyynnit\"\r\n          />\r\n        </fieldset>\r\n        <calculator-total\r\n          :sum=\"huojennukseenOikeuttavaLiikevaihto_suhteutettu\"\r\n          :title=\"$trans('/calculators/Huojennukseen_oikeuttava_liikevaihto_yhteensa')\"\r\n        >\r\n        </calculator-total>\r\n      </fieldset>\r\n      <fieldset class=\"calculator__group vat-lower-limit-calculator__group\">\r\n        <!-- Tililkaudelta suoritettava vero -->\r\n        <legend>2. {{ $trans('/calculators/Tilikaudelta_suoritettava_vero_otsikko') }}</legend>\r\n        <!-- Suoritettavat arvonlisäverot yhteensä -->\r\n        <Tooltip :tooltip-text=\"content.Tooltips.Suoritettavat_arvonlisaverot_yhteensa_infotext\">\r\n          <label\r\n            for=\"suoritettavatArvonlisaverotYhteensa\"\r\n            v-text=\"$trans('/calculators/Suoritettavat_arvonlisaverot_yhteensa')\"\r\n          />\r\n        </Tooltip>\r\n        <calculator-field\r\n          name=\"suoritettavatArvonlisaverotYhteensa\"\r\n          rules=\"currency|required\"\r\n          ref=\"suoritettavatArvonlisaverotYhteensa\"\r\n          v-model=\"suoritettavaVero.suoritettavatArvonlisaverotYhteensa\"\r\n        />\r\n        <fieldset class=\"calculator__group vat-lower-limit-calculator__subgroup\">\r\n          <div class=\"calculator__group vat-lower-limit-calculator__sublegend\">\r\n            <legend>\r\n              {{ $trans('/calculators/Suoritettavissa_veroissa_ei_huomioida') }}\r\n            </legend>\r\n            <div\r\n              v-html=\"content.Tooltips.Suoritettavissa_veroissa_ei_huomioida_otsikko_infotext\"\r\n            ></div>\r\n          </div>\r\n          <!-- Käyttöomaisuuden myynnin vero -->\r\n          <Tooltip :tooltip-text=\"content.Tooltips.Kayttoomaisuuden_myynnin_vero_infotext\">\r\n            <label\r\n              for=\"kayttoomaisuudenMyynninVero\"\r\n              v-text=\"$trans('/calculators/Kayttoomaisuuden_myynnin_vero')\"\r\n            />\r\n          </Tooltip>\r\n          <calculator-field\r\n            name=\"kayttoomaisuudenMyynninVero\"\r\n            rules=\"currency\"\r\n            ref=\"kayttoomaisuudenMyynninVero\"\r\n            v-model=\"suoritettavaVero.kayttoomaisuudenMyynninVero\"\r\n          />\r\n          <!-- Metsätalouden myynnin vero -->\r\n          <Tooltip :tooltip-text=\"content.Tooltips.Metsatalouden_myynnin_vero_infotext\">\r\n            <label\r\n              for=\"metsataloudenMyynninVero\"\r\n              v-text=\"$trans('/calculators/Metsatalouden_myynnin_vero')\"\r\n            />\r\n          </Tooltip>\r\n          <calculator-field\r\n            name=\"metsataloudenMyynninVero\"\r\n            rules=\"currency\"\r\n            ref=\"metsataloudenMyynninVero\"\r\n            v-model=\"suoritettavaVero.metsataloudenMyynninVero\"\r\n          />\r\n          <!-- Kiinteistön käyttöoikeuden luovutus (AVL 30 §) -->\r\n          <Tooltip\r\n            :tooltip-text=\"\r\n              content.Tooltips.Kiinteiston_kayttooikeuden_luovutus_suoritettava_vero_infotext\r\n            \"\r\n          >\r\n            <label\r\n              for=\"kiinteistonKayttooikeudenLuovutusSuoritettavaVero\"\r\n              v-text=\"$trans('/calculators/Kiinteiston_kayttooikeuden_luovutus_suoritettava_vero')\"\r\n            />\r\n          </Tooltip>\r\n          <calculator-field\r\n            name=\"kiinteistonKayttooikeudenLuovutusSuoritettavaVero\"\r\n            rules=\"currency\"\r\n            ref=\"kiinteistonKayttooikeudenLuovutusSuoritettavaVero\"\r\n            v-model=\"suoritettavaVero.kiinteistonKayttooikeudenLuovutusSuoritettavaVero\"\r\n          />\r\n          <!-- Käännetty verovelvollisuus -->\r\n          <Tooltip :tooltip-text=\"content.Tooltips.Kaannetty_verovelvollisuus_infotext\">\r\n            <label\r\n              for=\"kaannettyVerovelvollisuus\"\r\n              v-text=\"$trans('/calculators/Kaannetty_verovelvollisuus')\"\r\n            />\r\n          </Tooltip>\r\n          <calculator-field\r\n            name=\"kaannettyVerovelvollisuus\"\r\n            rules=\"currency\"\r\n            ref=\"kaannettyVerovelvollisuus\"\r\n            v-model=\"suoritettavaVero.kaannettyVerovelvollisuus\"\r\n          />\r\n          <!-- EU tavara- ja palveluostojen vero -->\r\n          <Tooltip :tooltip-text=\"content.Tooltips.Eu_tavara_ja_palveluostojen_vero_infotext\">\r\n            <label\r\n              for=\"euTavaraJaPalveluostojenVero\"\r\n              v-text=\"$trans('/calculators/Eu_tavara_ja_palveluostojen_vero')\"\r\n            />\r\n          </Tooltip>\r\n          <calculator-field\r\n            name=\"euTavaraJaPalveluostojenVero\"\r\n            rules=\"currency\"\r\n            ref=\"euTavaraJaPalveluostojenVero\"\r\n            v-model=\"suoritettavaVero.euTavaraJaPalveluostojenVero\"\r\n          />\r\n          <!-- Tavaran maahantuonnista suoritettava vero -->\r\n          <Tooltip\r\n            :tooltip-text=\"content.Tooltips.Tavaran_maahantuonnista_suoritettava_vero_infotext\"\r\n          >\r\n            <label\r\n              for=\"tavaranMaahantuonnistaSuoritettavaVero\"\r\n              v-text=\"$trans('/calculators/Tavaran_maahantuonnista_suoritettava_vero')\"\r\n            />\r\n          </Tooltip>\r\n          <calculator-field\r\n            name=\"tavaranMaahantuonnistaSuoritettavaVero\"\r\n            rules=\"currency\"\r\n            ref=\"tavaranMaahantuonnistaSuoritettavaVero\"\r\n            v-model=\"suoritettavaVero.tavaranMaahantuonnistaSuoritettavaVero\"\r\n          />\r\n        </fieldset>\r\n        <calculator-total\r\n          :sum=\"tilikaudeltaSuoritettavaVero_sum\"\r\n          :title=\"$trans('/calculators/Tilikaudelta_suoritettava_vero_yhteensa')\"\r\n        >\r\n        </calculator-total>\r\n      </fieldset>\r\n      <fieldset class=\"calculator__group vat-lower-limit-calculator__group\">\r\n        <!--Tilikauden ostojen vero-->\r\n        <legend>3. {{ $trans('/calculators/Tilikauden_ostojen_vero_otsikko') }}</legend>\r\n        <!-- Vähennettävät arvonlisäverot yhteensä -->\r\n        <Tooltip :tooltip-text=\"content.Tooltips.Vahennettavat_arvonlisaverot_yhteensa_infotext\">\r\n          <label\r\n            for=\"vahennettavatArvonlisaverotYhteensa\"\r\n            v-text=\"$trans('/calculators/Vahennettavat_arvonlisaverot_yhteensa')\"\r\n          />\r\n        </Tooltip>\r\n        <calculator-field\r\n          name=\"vahennettavatArvonlisaverotYhteensa\"\r\n          rules=\"currency|required\"\r\n          ref=\"vahennettavatArvonlisaverotYhteensa\"\r\n          v-model=\"ostojenVero.vahennettavatArvonlisaverotYhteensa\"\r\n        />\r\n        <fieldset class=\"calculator__group vat-lower-limit-calculator__subgroup\">\r\n          <div class=\"calculator__group vat-lower-limit-calculator__sublegend\">\r\n            <legend>\r\n              {{ $trans('/calculators/Vahennettavissa_veroissa_ei_huomioida') }}\r\n            </legend>\r\n            <div\r\n              v-html=\"content.Tooltips.Vahennettavissa_veroissa_ei_huomioida_otsikko_infotext\"\r\n            ></div>\r\n          </div>\r\n          <!-- Metsätalouden ostojen vero -->\r\n          <Tooltip :tooltip-text=\"content.Tooltips.Metsatalouden_ostojen_vero_infotext\">\r\n            <label\r\n              for=\"metsataloudenOstojenVero\"\r\n              v-text=\"$trans('/calculators/Metsatalouden_ostojen_vero')\"\r\n            />\r\n          </Tooltip>\r\n          <calculator-field\r\n            name=\"metsataloudenOstojenVero\"\r\n            rules=\"currency\"\r\n            ref=\"metsataloudenOstojenVero\"\r\n            v-model=\"ostojenVero.metsataloudenOstojenVero\"\r\n          />\r\n          <!-- Kiinteistön käyttöoikeuden luovutus (AVL 30 §) -->\r\n          <Tooltip\r\n            :tooltip-text=\"\r\n              content.Tooltips.Kiinteiston_kayttooikeuden_luovutus_ostojen_vero_infotext\r\n            \"\r\n          >\r\n            <label\r\n              for=\"kiinteistonKayttooikeudenLuovutusOstojenVero\"\r\n              v-text=\"$trans('/calculators/Kiinteiston_kayttooikeuden_luovutus_ostojen_vero')\"\r\n            />\r\n          </Tooltip>\r\n          <calculator-field\r\n            name=\"kiinteistonKayttooikeudenLuovutusOstojenVero\"\r\n            rules=\"currency\"\r\n            ref=\"kiinteistonKayttooikeudenLuovutusOstojenVero\"\r\n            v-model=\"ostojenVero.kiinteistonKayttooikeudenLuovutusOstojenVero\"\r\n          />\r\n        </fieldset>\r\n        <calculator-total\r\n          :sum=\"tilikaudenOstojenVero_sum\"\r\n          :title=\"$trans('/calculators/Tilikauden_ostojen_vero_yhteensa')\"\r\n        >\r\n        </calculator-total>\r\n      </fieldset>\r\n      <!-- Buttons -->\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/Huojennuksen_maara_otsikko')\"\r\n          class=\"calculator-result__heading\"\r\n        ></h2>\r\n        <div data-cy=\"huojennuksenMaaraResult\">\r\n          <span class=\"calculator-result__value\" v-if=\"showHuojennuksenMaara\">\r\n            {{ `${addThousandSeparators(result.huojennuksenMaara)}` }} &euro;\r\n          </span>\r\n          <div v-html=\"getResultText\" v-if=\"getResultText\"></div>\r\n        </div>\r\n      </div>\r\n      <div class=\"calculator-result__value-container calculator-result__value-container--white\">\r\n        <h2\r\n          v-text=\"$trans('/calculators/Huojennukseen_oikeuttava_liikevaihto_otsikko')\"\r\n          class=\"calculator-result__heading\"\r\n        ></h2>\r\n        <span class=\"calculator-result__value\"\r\n          >{{ `${addThousandSeparators(result.huojennukseenOikeuttavaLiikevaihto)}` }} &euro;</span\r\n        >\r\n      </div>\r\n      <div class=\"calculator-result__value-container calculator-result__value-container--white\">\r\n        <h2\r\n          v-text=\"$trans('/calculators/Alarajahuojennukseen_oikeuttava_vero_otsikko')\"\r\n          class=\"calculator-result__heading\"\r\n        ></h2>\r\n        <span\r\n          class=\"calculator-result__value\"\r\n          data-cy=\"alarajahuojennukseenOikeuttavaVeroYhteensaResult\"\r\n          >{{\r\n            `${addThousandSeparators(result.alarajahuojennukseenOikeuttavaVeroYhteensa)}`\r\n          }}\r\n          &euro;</span\r\n        >\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          <li>\r\n            <div class=\"calculator-breakdown__cell\">\r\n              {{ $trans('/calculators/Huojennukseen_oikeuttava_liikevaihto_otsikko') }}\r\n              <span class=\"lowercase\">{{ $trans('/calculators/InTotal') }}</span\r\n              >:\r\n            </div>\r\n            <div class=\"calculator-breakdown__cell\">\r\n              <span data-cy=\"huojennukseenOikeuttavaLiikevaihtoResult\">\r\n                {{ `${addThousandSeparators(result.huojennukseenOikeuttavaLiikevaihto)}` }}\r\n                &euro;</span\r\n              >\r\n            </div>\r\n          </li>\r\n          <li>\r\n            <div class=\"calculator-breakdown__cell\">\r\n              {{ $trans('/calculators/Tilikaudelta_suoritettava_vero_otsikko') }}\r\n              <span class=\"lowercase\">{{ $trans('/calculators/InTotal') }}</span\r\n              >:\r\n            </div>\r\n            <div class=\"calculator-breakdown__cell\">\r\n              <span data-cy=\"tilikaudeltaSuoritettavaVeroYhteensaResult\">\r\n                {{ `${addThousandSeparators(result.tilikaudeltaSuoritettavaVeroYhteensa)}` }}\r\n                &euro;</span\r\n              >\r\n            </div>\r\n          </li>\r\n          <li>\r\n            <div class=\"calculator-breakdown__cell\">\r\n              {{ $trans('/calculators/Tilikauden_ostojen_vero_otsikko') }}\r\n              <span class=\"lowercase\">{{ $trans('/calculators/InTotal') }}</span\r\n              >:\r\n            </div>\r\n            <div class=\"calculator-breakdown__cell\">\r\n              <span data-cy=\"tilikaudenOstojenVeroYhteensaResult\">\r\n                {{ `${addThousandSeparators(result.tilikaudenOstojenVeroYhteensa)}` }}\r\n                &euro;</span\r\n              >\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 CalculatorField from './partials/CalculatorField';\r\nimport A11YAnnouncer from '../A11YAnnouncer';\r\nimport { addThousandSeparators, parseStringToFloat } from './utils/calculatorHelpers';\r\n\r\nimport CalculatorTotal from './partials/CalculatorTotal';\r\n\r\nimport 'utils/vee-validate';\r\nimport {\r\n  validationMessages,\r\n  dateFormatValidator,\r\n  mustNotBeSameDateValidator,\r\n  dateMustBeGreaterOrEqualValidator,\r\n  financialYearInMonthsValidator,\r\n  financialYearGivenBeforeRevenue,\r\n  dateMustBeGreaterValidator,\r\n  totalTurnoverValidator\r\n} from 'utils/vee-validate';\r\nimport { localize, ValidationObserver, extend } from 'vee-validate3';\r\nimport { vatLowerLimitReliefCalculatorModel as calculatorModel } from './models/calculatorModels';\r\n\r\nimport calculatorAPI from 'api/CalculatorApi';\r\nimport _isNil from 'lodash/isNil';\r\n// import _debounce from 'lodash/debounce';\r\n\r\nexport default {\r\n  name: 'vatLowerLimitCalculator',\r\n  components: {\r\n    CalculatorField,\r\n    Tooltip,\r\n    ValidationObserver,\r\n    A11YAnnouncer,\r\n    CalculatorTotal\r\n  },\r\n  props: {\r\n    content: { type: Object, default: () => {} }\r\n  },\r\n  data() {\r\n    return {\r\n      liikevaihto: calculatorModel.liikevaihto,\r\n      suoritettavaVero: calculatorModel.suoritettavaVero,\r\n      ostojenVero: calculatorModel.ostojenVero,\r\n      limits: calculatorModel.limits,\r\n      huojennukseenOikeuttavaLiikevaihto_sum: 0,\r\n      huojennukseenOikeuttavaLiikevaihto_suhteutettu: 0,\r\n      tilikaudeltaSuoritettavaVero_sum: 0,\r\n      tilikaudenOstojenVero_sum: 0,\r\n      addThousandSeparators,\r\n      result: null,\r\n      isCalculating: false,\r\n      language: window.site_locale,\r\n      resultText: null,\r\n      resultCalculated: false,\r\n      calculatorError: false,\r\n      flexibleUpperLimit: calculatorModel.limits.huojennukseenOikeuttavanLiikevaihdonYlaraja\r\n    };\r\n  },\r\n  created() {\r\n    // Custom rules\r\n    extend('date_format', dateFormatValidator);\r\n    extend('not_same_date', mustNotBeSameDateValidator);\r\n    extend('valid_end_date', dateMustBeGreaterOrEqualValidator);\r\n    extend('valid_financial_year_in_months', financialYearInMonthsValidator);\r\n    extend('valid_dividend_resolution_date', dateMustBeGreaterValidator);\r\n    extend('valid_dividend_withdrawal_date', dateMustBeGreaterOrEqualValidator);\r\n    extend('financial_year_given', financialYearGivenBeforeRevenue);\r\n    extend('total_turnover', totalTurnoverValidator);\r\n    localize(this.language, validationMessages());\r\n    this.getLimitValues();\r\n  },\r\n  watch: {\r\n    liikevaihto: {\r\n      handler() {\r\n        this.huojennukseenOikeuttavaLiikevaihto_sum = this.getTotalRevenue();\r\n        if (this.liikevaihto.tilikaudenPituus != '') {\r\n          this.flexibleUpperLimit =\r\n            this.limits.huojennukseenOikeuttavanLiikevaihdonYlaraja *\r\n            (this.parseFieldToFloat(this.liikevaihto.tilikaudenPituus) / 12);\r\n          this.huojennukseenOikeuttavaLiikevaihto_suhteutettu = (\r\n            (12 * this.huojennukseenOikeuttavaLiikevaihto_sum) /\r\n            this.liikevaihto.tilikaudenPituus\r\n          ).toFixed(2);\r\n        } else {\r\n          this.flexibleUpperLimit = this.limits.huojennukseenOikeuttavanLiikevaihdonYlaraja;\r\n        }\r\n      },\r\n      deep: true\r\n    },\r\n    suoritettavaVero: {\r\n      handler() {\r\n        this.tilikaudeltaSuoritettavaVero_sum = this.getTaxDue();\r\n      },\r\n      deep: true\r\n    },\r\n    ostojenVero: {\r\n      handler() {\r\n        this.tilikaudenOstojenVero_sum = this.getPurchaseTax();\r\n      },\r\n      deep: true\r\n    }\r\n  },\r\n  computed: {\r\n    showResult() {\r\n      return this.resultCalculated && !this.calculatorError && !_isNil(this.result);\r\n    },\r\n    showHuojennuksenMaara() {\r\n      return (\r\n        this.showResult &&\r\n        !_isNil(this.result.huojennuksenMaara) &&\r\n        parseFloat(this.result.huojennuksenMaara) >= 0\r\n      );\r\n    },\r\n    getResultText() {\r\n      if (_isNil(this.result)) {\r\n        return '';\r\n      }\r\n      const resultSum = parseFloat(this.result.alarajahuojennukseenOikeuttavaVeroYhteensa);\r\n      if (resultSum < 0) {\r\n        return this.content.ResultTexts.HuojennuksenMaaraZeroResultText;\r\n      }\r\n      if (resultSum > 0) {\r\n        return this.content.ResultTexts.HuojennuksenMaaraResultText;\r\n      }\r\n      return '';\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  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.calculateTax();\r\n    },\r\n    calculateTax() {\r\n      const _observer = this.$refs.observer;\r\n      this.isCalculating = true;\r\n      this.resultCalculated = false;\r\n      this.calculatorError = false;\r\n      this.result = null;\r\n      const params = {\r\n        ...this.liikevaihto,\r\n        ...this.suoritettavaVero,\r\n        ...this.ostojenVero,\r\n        ...this.limits\r\n      };\r\n      calculatorAPI\r\n        .calculateVatLowerLimitRelief(this.language, params)\r\n        .then(data => {\r\n          this.resultCalculated = true;\r\n          this.result = data.SumFields;\r\n          _observer.reset();\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      for (const prop of Object.keys(this.liikevaihto)) {\r\n        this.liikevaihto[prop] = '';\r\n      }\r\n      for (const prop of Object.keys(this.suoritettavaVero)) {\r\n        this.suoritettavaVero[prop] = '';\r\n      }\r\n      for (const prop of Object.keys(this.ostojenVero)) {\r\n        this.ostojenVero[prop] = '';\r\n      }\r\n      // Focus to first components input field\r\n      this.$refs.tilikaudenPituus.$el.childNodes[0].focus();\r\n    },\r\n    parseFieldToFloat(property) {\r\n      if (!property) {\r\n        return parseFloat(0);\r\n      }\r\n      return parseStringToFloat(property.replace(/ /g, ''));\r\n    },\r\n    getTotalRevenue() {\r\n      let value = 0;\r\n      value += this.parseFieldToFloat(this.liikevaihto.verollinenLiikevaihto);\r\n      value += this.parseFieldToFloat(this.liikevaihto.verotonLiikevaihto);\r\n      value -= this.parseFieldToFloat(this.liikevaihto.kayttoomaisuudenMyynti);\r\n      value -= this.parseFieldToFloat(this.liikevaihto.kiinteistonKayttooikeudenLuovutus);\r\n      value -= this.parseFieldToFloat(this.liikevaihto.metsataloudenMyynti);\r\n      value -= this.parseFieldToFloat(this.liikevaihto.eraatVerottomatMyynnit);\r\n      return parseFloat(value.toFixed(2));\r\n    },\r\n    getTaxDue() {\r\n      let value = 0;\r\n      value += this.parseFieldToFloat(this.suoritettavaVero.suoritettavatArvonlisaverotYhteensa);\r\n      value -= this.parseFieldToFloat(this.suoritettavaVero.kayttoomaisuudenMyynninVero);\r\n      value -= this.parseFieldToFloat(this.suoritettavaVero.metsataloudenMyynninVero);\r\n      value -= this.parseFieldToFloat(\r\n        this.suoritettavaVero.kiinteistonKayttooikeudenLuovutusSuoritettavaVero\r\n      );\r\n      value -= this.parseFieldToFloat(this.suoritettavaVero.kaannettyVerovelvollisuus);\r\n      value -= this.parseFieldToFloat(this.suoritettavaVero.euTavaraJaPalveluostojenVero);\r\n      value -= this.parseFieldToFloat(this.suoritettavaVero.tavaranMaahantuonnistaSuoritettavaVero);\r\n      return parseFloat(value.toFixed(2));\r\n    },\r\n    getPurchaseTax() {\r\n      let value = 0;\r\n      value += this.parseFieldToFloat(this.ostojenVero.vahennettavatArvonlisaverotYhteensa);\r\n      value -= this.parseFieldToFloat(this.ostojenVero.metsataloudenOstojenVero);\r\n      value -= this.parseFieldToFloat(\r\n        this.ostojenVero.kiinteistonKayttooikeudenLuovutusOstojenVero\r\n      );\r\n      return parseFloat(value.toFixed(2));\r\n    },\r\n    getLimitValues() {\r\n      if (this.content.LimitValues.HuojennukseenOikeuttavanLiikevaihdonAlaraja != 0) {\r\n        this.limits.huojennukseenOikeuttavanLiikevaihdonAlaraja =\r\n          this.content.LimitValues.HuojennukseenOikeuttavanLiikevaihdonAlaraja;\r\n      }\r\n      if (this.content.LimitValues.HuojennukseenOikeuttavanLiikevaihdonYlaraja != 0) {\r\n        this.limits.huojennukseenOikeuttavanLiikevaihdonYlaraja =\r\n          this.content.LimitValues.HuojennukseenOikeuttavanLiikevaihdonYlaraja;\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!./VatLowerLimitCalculator.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!./VatLowerLimitCalculator.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./VatLowerLimitCalculator.vue?vue&type=template&id=5dab2520\"\nimport script from \"./VatLowerLimitCalculator.vue?vue&type=script&lang=js\"\nexport * from \"./VatLowerLimitCalculator.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 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","Tilikauden_pituus_infotext","model","liikevaihto","callback","$$v","$set","Verollinen_liikevaihto_infotext","Veroton_liikevaihto_infotext","Liikevaihtoon_ei_lueta_otsikko_infotext","Kayttoomaisuuden_myynti_infotext","Kiinteiston_kayttooikeuden_luovutus_infotext","Metsatalouden_myynti_infotext","Eraat_verottomat_myynnit_infotext","huojennukseenOikeuttavaLiikevaihto_suhteutettu","Suoritettavat_arvonlisaverot_yhteensa_infotext","suoritettavaVero","Suoritettavissa_veroissa_ei_huomioida_otsikko_infotext","Kayttoomaisuuden_myynnin_vero_infotext","Metsatalouden_myynnin_vero_infotext","Kiinteiston_kayttooikeuden_luovutus_suoritettava_vero_infotext","Kaannetty_verovelvollisuus_infotext","Eu_tavara_ja_palveluostojen_vero_infotext","Tavaran_maahantuonnista_suoritettava_vero_infotext","tilikaudeltaSuoritettavaVero_sum","Vahennettavat_arvonlisaverot_yhteensa_infotext","ostojenVero","Vahennettavissa_veroissa_ei_huomioida_otsikko_infotext","Metsatalouden_ostojen_vero_infotext","Kiinteiston_kayttooikeuden_luovutus_ostojen_vero_infotext","tilikaudenOstojenVero_sum","isCalculating","resetCalculator","ariaMessage","addThousandSeparators","result","huojennuksenMaara","getResultText","huojennukseenOikeuttavaLiikevaihto","alarajahuojennukseenOikeuttavaVeroYhteensa","tilikaudeltaSuoritettavaVeroYhteensa","tilikaudenOstojenVeroYhteensa","title","calculatorHelpers","formatDecimal","sum","isValid","components","CalculatorField","Tooltip","ValidationObserver","A11YAnnouncer","CalculatorTotal","limits","huojennukseenOikeuttavaLiikevaihto_sum","language","resultText","resultCalculated","calculatorError","flexibleUpperLimit","created","extend","localize","watch","handler","toFixed","deep","computed","showResult","showHuojennuksenMaara","parseFloat","isFormDirty","firstError","calculateTax","calculatorAPI","calculateVatLowerLimitRelief","then","_observer","catch","parseFieldToFloat","getTotalRevenue","getTaxDue","getPurchaseTax","getLimitValues","rules","mode","scopedSlots","_u","key","fn","errors","ariaInput","ariaMsg","invalid","_b","length","isDisabled","$emit","target","ValidationProvider","isCurrency","makeBuiltIn","defineProperty","module","exports","descriptor","get","getter","set","setter","f","global","DESCRIPTORS","defineBuiltInAccessor","regExpFlags","fails","RegExp","RegExpPrototype","prototype","FORCED","INDICES_SUPPORT","error","O","calls","expected","addGetter","chr","Object","pairs","dotAll","ignoreCase","multiline","sticky","hasIndices","getOwnPropertyDescriptor","call","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","calculatorUrl","API","calculateGiftTax","calculateInheritanceTax","deductionType","calculateAlcoholTax","amount","percentage","categoryId","alcoholTaxRateInEuroCents","packagingTaxRateInEuroCents","eaclBasedTax","company","calculateInterestTax","dueDate","paymentDate","taxAmount","isInheritanceTax","calculateVat","taxFreePrice","taxablePrice","Language","calculateHouseholdExpense","calculateHouseholdExpense2022","calculateElectricityDeduction","vatLowerLimitReliefCalculatorModel","huojennukseenOikeuttavanLiikevaihdonAlaraja","huojennukseenOikeuttavanLiikevaihdonYlaraja","tilikaudenPituus","verollinenLiikevaihto","verotonLiikevaihto","kayttoomaisuudenMyynti","kiinteistonKayttooikeudenLuovutus","metsataloudenMyynti","eraatVerottomatMyynnit","arvonlisaveronOsuus","suoritettavatArvonlisaverotYhteensa","kayttoomaisuudenMyynninVero","metsataloudenMyynninVero","kiinteistonKayttooikeudenLuovutusSuoritettavaVero","kaannettyVerovelvollisuus","euTavaraJaPalveluostojenVero","tavaranMaahantuonnistaSuoritettavaVero","vahennettavatArvonlisaverotYhteensa","metsataloudenOstojenVero","kiinteistonKayttooikeudenLuovutusOstojenVero","sumFields","liikevaihtoYhteensa","liikevaihtoonEiLuetaYhteensa","annualInformationCalculatorModel","inputFields","mostRecentFinancialYearStartDate","mostRecentFinancialYearEndDate","dividendResolutionDate","dividendWithdrawalDate","mostRecentFinancialYear","taxYear","paymentYear","deadlineForSelfAssessedTaxes","deadlineForAnnualInformationReport","alcoholTaxCalculatorModel","selectedCategory","assetTransferTaxCalculatorModel","taxPercent","inheritanceTaxCalculatorModel","inheritanceTaxValue","selectedDeduction","interestCalculatorModel","householdExpenseCalculatorModel","expense","limitValues","treshold","limit","householdExpenseCalculatorModel2022","selectedType","vatCalculatorModel","param","_isNil","containsString","input","searchString","position","indexOf","decimalToString","str","convertStringToDate","dateStr","day","month","year","split","Date","convertDateToString","parseStringToFloat","convertDecimalSeparatorToDot","roundToTwo","Math","round","validate$8","_a","multiple","re","Array","isArray","map","emailStr","trim","every","val","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","_value","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","__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","options","createLocator","join","castFn","locator","crossTable","extractLocators","filter","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","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","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","o","splice","provider","$delete","silent","results","all","obs","handleSubmit","cb","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":""}