{"version":3,"file":"onboarding-e8022c32.js","sources":["../../../engines/web/app/assets/javascripts/fiscal_info/controller.js","../../../engines/web/app/assets/javascripts/fiscal_info/index.js"],"sourcesContent":["/* eslint-disable class-methods-use-this */\nimport { Controller } from '@hotwired/stimulus';\n\nexport default class extends Controller {\n static targets = [\n 'usPersonCheckbox',\n 'usPersonDetails',\n 'usPersonTaxId',\n 'taxResidenceInOcdeCheckbox',\n 'taxResidenceInOcdeDetails',\n 'taxResidenceInOcdeItem',\n 'taxResidenceInOcdeRemoveCountry',\n 'taxResidenceInOcdeCountry',\n 'taxResidenceInOcdeTaxId',\n 'taxResidenceInOcdeAddCountryButton',\n ];\n\n static values = { formClass: String, taxResidenceInOcdeCountryTemplatePath: String };\n\n async connect() {\n const templateResponse = await fetch(this.taxResidenceInOcdeCountryTemplatePathValue);\n this.newCountryTemplate = await templateResponse.text();\n\n $(this.usPersonTaxIdTarget).mask('000-00-0000', { reverse: false });\n\n this.toggleTaxResidenceInOcdeDetails();\n this.toggleUsPersonDetails();\n\n $(`.${this.formClassValue}`).on('submit', (e) => {\n const isUsPersonTaxIdValid = this.validateUsPersonTaxIdInput();\n const areOcdeTaxIdInputsValid = this.validateOcdeTaxIdInputs();\n\n if (isUsPersonTaxIdValid && areOcdeTaxIdInputsValid) { return; }\n\n e.preventDefault();\n });\n }\n\n setupCountryFields() {\n $(this.taxResidenceInOcdeCountryTargets).select2({\n language: {\n noResults() {\n return 'País não listado na OCDE';\n },\n },\n });\n\n $(this.taxResidenceInOcdeCountryTargets).on('select2:select', this.filterCountries.bind(this));\n\n this.filterCountries();\n\n if (this.taxResidenceInOcdeRemoveCountryTargets.length > 1) {\n $(this.taxResidenceInOcdeRemoveCountryTargets).removeClass('hidden');\n }\n }\n\n addNewCountryField() {\n const $addCountryButton = $(this.taxResidenceInOcdeAddCountryButtonTarget);\n\n $addCountryButton.before(this.newCountryTemplate);\n\n this.setupCountryFields();\n\n $(`.${this.formClassValue}`).trigger('change');\n }\n\n removeCountryField(e) {\n $(e.target).closest($(this.taxResidenceInOcdeItemTargets)).remove();\n $(`.${this.formClassValue}`).trigger('change');\n\n this.filterCountries();\n\n if ($(this.taxResidenceInOcdeCountryTargets).length === 1) {\n $(this.taxResidenceInOcdeRemoveCountryTargets).addClass('hidden');\n }\n }\n\n filterCountries() {\n $(this.taxResidenceInOcdeCountryTargets).find('option[value!=\"\"]').prop('disabled', false);\n\n this.taxResidenceInOcdeCountryTargets.forEach((element) => {\n const selectedCountry = element.value;\n\n $(this.taxResidenceInOcdeCountryTargets)\n .not($(element))\n .find(`option[value=\"${selectedCountry}\"]`)\n .prop('disabled', true);\n });\n }\n\n toggleUsPersonDetails() {\n if ($(this.usPersonCheckboxTarget).is(':checked')) {\n $(this.usPersonDetailsTarget).removeClass('hidden');\n\n $(this.usPersonTaxIdTarget)\n .prop('required', true)\n .prop('disabled', false);\n } else {\n $(this.usPersonDetailsTarget).addClass('hidden');\n\n $(this.usPersonTaxIdTarget)\n .prop('required', false)\n .prop('disabled', true);\n }\n }\n\n toggleTaxResidenceInOcdeDetails() {\n if ($(this.taxResidenceInOcdeCheckboxTarget).is(':checked')) {\n $(this.taxResidenceInOcdeDetailsTarget).removeClass('hidden');\n\n if ($(this.taxResidenceInOcdeItemTargets).length === 0) {\n this.addNewCountryField();\n }\n\n this.setupCountryFields();\n\n $([...this.taxResidenceInOcdeTaxIdTargets, ...this.taxResidenceInOcdeCountryTargets]).each(function () {\n $(this).prop('disabled', false);\n $(this).prop('required', true);\n });\n } else {\n $(this.taxResidenceInOcdeDetailsTarget).addClass('hidden');\n\n $([...this.taxResidenceInOcdeTaxIdTargets, ...this.taxResidenceInOcdeCountryTargets]).each(function () {\n $(this).prop('disabled', true);\n $(this).prop('required', false);\n });\n }\n }\n\n validateUsTaxId(value) {\n // Regex from https://uibakery.io/regex-library/ssn\n const ssnRegex = /^(?!666|000|9\\d{2})\\d{3}-(?!00)\\d{2}-(?!0{4})\\d{4}$/;\n\n const rules = [\n {\n isValid: (val) => val.length === 11,\n errorMessage: 'Número de caracteres insuficiente',\n },\n {\n isValid: (val) => ssnRegex.test(val),\n errorMessage: 'Taxpayer identification number inválido',\n },\n ];\n\n const failedRule = rules.find((rule) => !rule.isValid(value));\n\n return failedRule ? [false, failedRule.errorMessage] : [true];\n }\n\n validateUsPersonTaxIdInput() {\n if (!$(this.usPersonCheckboxTarget).is(':checked')) {\n return [true];\n }\n\n const [isValid, errorMessage] = this.validateUsTaxId($(this.usPersonTaxIdTarget).val());\n\n if (isValid) {\n $(this.usPersonTaxIdTarget)\n .addClass('is-valid')\n .removeClass('is-invalid');\n\n $(this.usPersonTaxIdTarget)\n .siblings('.h-form__feedback--invalid')\n .addClass('hidden')\n .text('');\n } else {\n $(this.usPersonTaxIdTarget)\n .addClass('is-invalid')\n .removeClass('is-valid');\n\n $(this.usPersonTaxIdTarget)\n .siblings('.h-form__feedback--invalid')\n .removeClass('hidden')\n .text(errorMessage);\n }\n\n return isValid;\n }\n\n validateOcdeTaxId(value) {\n const rules = [\n {\n isValid: (val) => val.length >= 5,\n errorMessage: 'Número de caracteres insuficiente',\n },\n {\n isValid: (val) => val.length <= 19,\n errorMessage: 'Número de caracteres acima do esperado',\n },\n ];\n\n const failedRule = rules.find((rule) => !rule.isValid(value));\n\n return failedRule ? [false, failedRule.errorMessage] : [true];\n }\n\n validateOcdeTaxIdInputs() {\n if (!$(this.taxResidenceInOcdeCheckboxTarget).is(':checked')) {\n return [true];\n }\n\n const $invalidInputs = $(this.taxResidenceInOcdeTaxIdTargets).filter((_, el) => {\n const [isValid, errorMessage] = this.validateOcdeTaxId($(el).val());\n\n if (isValid) {\n $(el).addClass('is-valid').removeClass('is-invalid');\n\n $(el).siblings('.h-form__feedback--invalid').addClass('hidden').text('');\n } else {\n $(el).addClass('is-invalid').removeClass('is-valid');\n\n $(el).siblings('.h-form__feedback--invalid').removeClass('hidden').text(errorMessage);\n }\n\n return !isValid;\n });\n\n return $invalidInputs.length === 0;\n }\n}\n","import Stimulus from '@root/javascripts/stimulus';\n\nimport FiscalInfoController from './controller';\n\nStimulus.register('fiscal-info', FiscalInfoController);\n"],"names":["FiscalInfoController","Controller","__async","templateResponse","e","isUsPersonTaxIdValid","areOcdeTaxIdInputsValid","element","selectedCountry","value","ssnRegex","failedRule","val","rule","isValid","errorMessage","_","el","__publicField","Stimulus"],"mappings":"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"}