mapa-library-ui 0.64.0 → 0.65.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/esm2020/lib/core/elements/element-base.mjs +2 -1
  2. package/esm2020/src/lib/components/capability/lib/core/elements/element-base.mjs +2 -1
  3. package/esm2020/src/lib/components/chart/lib/core/elements/element-base.mjs +2 -1
  4. package/esm2020/src/lib/components/dropdown/lib/core/elements/element-base.mjs +2 -1
  5. package/esm2020/src/lib/components/dropdown-tree/lib/core/elements/element-base.mjs +2 -1
  6. package/esm2020/src/lib/components/form/lib/components/input/src/input.component.mjs +3 -3
  7. package/esm2020/src/lib/components/form/lib/core/elements/element-base.mjs +2 -1
  8. package/esm2020/src/lib/components/group-report/lib/core/elements/element-base.mjs +2 -1
  9. package/esm2020/src/lib/components/input/src/input.component.mjs +3 -3
  10. package/esm2020/src/lib/components/radio-button/lib/core/elements/element-base.mjs +2 -1
  11. package/esm2020/src/lib/components/scale/lib/core/elements/element-base.mjs +2 -1
  12. package/esm2020/src/lib/components/scale-parameterization/lib/core/elements/element-base.mjs +2 -1
  13. package/esm2020/src/lib/components/slide-toggle/lib/core/elements/element-base.mjs +2 -1
  14. package/esm2020/src/lib/components/textarea/lib/core/elements/element-base.mjs +2 -1
  15. package/fesm2015/mapa-library-ui-src-lib-components-dropdown-tree.mjs +1 -0
  16. package/fesm2015/mapa-library-ui-src-lib-components-dropdown-tree.mjs.map +1 -1
  17. package/fesm2015/mapa-library-ui-src-lib-components-dropdown.mjs +1 -0
  18. package/fesm2015/mapa-library-ui-src-lib-components-dropdown.mjs.map +1 -1
  19. package/fesm2015/mapa-library-ui-src-lib-components-form.mjs +2 -2
  20. package/fesm2015/mapa-library-ui-src-lib-components-form.mjs.map +1 -1
  21. package/fesm2015/mapa-library-ui-src-lib-components-input.mjs +2 -2
  22. package/fesm2015/mapa-library-ui-src-lib-components-input.mjs.map +1 -1
  23. package/fesm2015/mapa-library-ui.mjs +1 -0
  24. package/fesm2015/mapa-library-ui.mjs.map +1 -1
  25. package/fesm2020/mapa-library-ui-src-lib-components-dropdown-tree.mjs +1 -0
  26. package/fesm2020/mapa-library-ui-src-lib-components-dropdown-tree.mjs.map +1 -1
  27. package/fesm2020/mapa-library-ui-src-lib-components-dropdown.mjs +1 -0
  28. package/fesm2020/mapa-library-ui-src-lib-components-dropdown.mjs.map +1 -1
  29. package/fesm2020/mapa-library-ui-src-lib-components-form.mjs +2 -2
  30. package/fesm2020/mapa-library-ui-src-lib-components-form.mjs.map +1 -1
  31. package/fesm2020/mapa-library-ui-src-lib-components-input.mjs +2 -2
  32. package/fesm2020/mapa-library-ui-src-lib-components-input.mjs.map +1 -1
  33. package/fesm2020/mapa-library-ui.mjs +1 -0
  34. package/fesm2020/mapa-library-ui.mjs.map +1 -1
  35. package/lib/core/elements/element-base.d.ts +2 -0
  36. package/mapa-library-ui-0.65.0.tgz +0 -0
  37. package/package.json +1 -1
  38. package/src/lib/components/capability/lib/core/elements/element-base.d.ts +2 -0
  39. package/src/lib/components/chart/lib/core/elements/element-base.d.ts +2 -0
  40. package/src/lib/components/dropdown/lib/core/elements/element-base.d.ts +2 -0
  41. package/src/lib/components/dropdown-tree/lib/core/elements/element-base.d.ts +2 -0
  42. package/src/lib/components/form/lib/core/elements/element-base.d.ts +2 -0
  43. package/src/lib/components/group-report/lib/core/elements/element-base.d.ts +2 -0
  44. package/src/lib/components/radio-button/lib/core/elements/element-base.d.ts +2 -0
  45. package/src/lib/components/scale/lib/core/elements/element-base.d.ts +2 -0
  46. package/src/lib/components/scale-parameterization/lib/core/elements/element-base.d.ts +2 -0
  47. package/src/lib/components/slide-toggle/lib/core/elements/element-base.d.ts +2 -0
  48. package/src/lib/components/textarea/lib/core/elements/element-base.d.ts +2 -0
  49. package/mapa-library-ui-0.64.0.tgz +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"mapa-library-ui.mjs","sources":["../../../projects/mapa-library-ui/src/lib/core/elements/element-base.ts","../../../projects/mapa-library-ui/src/lib/core/elements/dropdown.ts","../../../projects/mapa-library-ui/src/lib/core/elements/dropdown-tree.ts","../../../projects/mapa-library-ui/src/lib/core/elements/input-text.ts","../../../projects/mapa-library-ui/src/lib/core/elements/radio-button.ts","../../../projects/mapa-library-ui/src/lib/core/elements/slide-toggle.ts","../../../projects/mapa-library-ui/src/lib/core/elements/textarea.ts","../../../projects/mapa-library-ui/src/lib/core/directives/mat-input-autosize.directive.ts","../../../projects/mapa-library-ui/src/lib/core/directives/custom-paginator-legacy.directive.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/estados.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/utils.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/inscricaoestadual.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/placa.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/create.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/rg.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/iptu_mask.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/iptu_create.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/iptu_validate.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/iptu.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/validate.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/createNumberMask.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/mask.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/index.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/name.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/saude.ts","../../../projects/mapa-library-ui/src/lib/core/pipes/cpf.ts","../../../projects/mapa-library-ui/src/public-api.ts","../../../projects/mapa-library-ui/src/mapa-library-ui.ts"],"sourcesContent":["import { ElementGroup } from \"../interfaces/element-group.interface\";\nimport { ElementOption } from \"../interfaces/element-option.interface\";\nimport { ActionButton } from \"./action-button\";\nimport { ElementSearch } from \"./element-search\";\nimport { Errors } from \"./errors\";\nexport interface Status {\n label: string;\n}\n\nexport class ElementBase {\n value: string;\n key: string;\n label: string;\n required: boolean;\n order: number;\n controlType: string;\n type: string;\n placeholder?: string;\n hint?: string;\n prefix?: string;\n suffix?: string;\n autosize?: boolean;\n autosizeMinWidth?: string;\n autosizeMaxWidth?: string;\n autosizeMinRow?: number;\n autosizeMaxRow?: number;\n options: ElementOption[] | ElementGroup[];\n tree: any[];\n multiple?: boolean;\n search?: ElementSearch;\n maxLength!: string | number | null;\n errors?: Errors;\n actionButton?: ActionButton;\n mask?: string;\n autocomplete?: string;\n clearValue?: boolean;\n status?: Status[];\n checkParent?: boolean;\n checkChildren?: boolean;\n\n constructor(\n options: {\n value?: string;\n key?: string;\n label?: string;\n required?: boolean;\n order?: number;\n controlType?: string;\n type?: string;\n placeholder?: string;\n hint?: string;\n prefix?: string;\n suffix?: string;\n autosize?: boolean;\n autosizeMinWidth?: string;\n autosizeMaxWidth?: string;\n autosizeMinRow?: number;\n autosizeMaxRow?: number;\n options?: ElementOption[] | ElementGroup[];\n tree?: any[];\n multiple?: boolean;\n search?: ElementSearch;\n maxLength?: string | number | null;\n errors?: Errors;\n actionButton?: ActionButton;\n mask?: string;\n autocomplete?: string;\n clearValue?: boolean;\n status?: Status[];\n checkParent?: boolean;\n checkChildren?: boolean;\n } = {}\n ) {\n this.value = options.value || \"\";\n this.key = options.key || \"\";\n this.label = options.label || \"\";\n this.required = !!options.required;\n this.order = options.order === undefined ? 1 : options.order;\n this.controlType = options.controlType || \"\";\n this.type = options.type || \"\";\n this.placeholder = options.placeholder || \"\";\n this.hint = options.hint || \"\";\n this.prefix = options.prefix || \"\";\n this.suffix = options.suffix || \"\";\n this.autosize = options.autosize || false;\n this.autosizeMinWidth = options.autosizeMinWidth || \"212px\";\n this.autosizeMaxWidth = options.autosizeMaxWidth || \"400px\";\n this.autosizeMinRow = options.autosizeMinRow || 2;\n this.autosizeMaxRow = options.autosizeMaxRow || 5;\n this.options = options.options || [];\n this.tree = options.tree || [];\n this.multiple = options.multiple || false;\n this.search = options.search || undefined;\n this.maxLength = options.maxLength || null;\n this.errors = options.errors || undefined;\n this.actionButton = options.actionButton || undefined;\n this.mask = options.mask || undefined;\n this.autocomplete = options.autocomplete || \"\";\n this.clearValue =\n options.clearValue !== undefined ? options.clearValue : true;\n this.status = options.status || undefined;\n this.checkParent = options.checkParent || false;\n this.checkChildren = options.checkChildren || false;\n }\n}\n","import { ElementBase } from './element-base';\n\nexport class Dropdown extends ElementBase {\n override controlType = 'dropdown';\n}\n","import { ElementBase } from './element-base';\n\nexport class DropdownTree extends ElementBase {\n override controlType = 'dropdown-tree';\n}\n","import { ElementBase } from './element-base';\n\nexport class InputText extends ElementBase {\n override controlType = 'input';\n}\n","import { ElementBase } from './element-base';\n\nexport class RadioButton extends ElementBase {\n override controlType = 'radio-button';\n}\n","import { ElementBase } from './element-base';\n\nexport class SlideToggle extends ElementBase {\n override controlType = 'slide-toggle';\n}\n","import { ElementBase } from './element-base';\n\nexport class Textarea extends ElementBase {\n override controlType = 'textarea';\n}\n","/*\n* Originally from: https://github.com/anotherkitten/mat-input-autosize\n* @author: Ellie Larson (anotherkitten)\n*/\n\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n Optional,\n Self,\n} from '@angular/core';\nimport { NgModel } from '@angular/forms';\nimport { MatInput } from '@angular/material/input';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n selector: '[matInputAutosize]',\n standalone: true,\n})\nexport class MatInputAutosizeDirective implements AfterViewInit, OnDestroy {\n inputElement: HTMLInputElement;\n hiddenText!: Text;\n changeDetectSub!: Subscription;\n\n @Input() matInputAutosizeMaxWidth: any;\n @Input() matInputAutosizeMinWidth = '120px';\n @Input() matInputAutosizeFontStyle: any;\n\n constructor(\n el: ElementRef<HTMLInputElement>,\n @Self() private childMatInput: MatInput,\n @Optional() @Self() private childNgModel: NgModel\n ) {\n this.inputElement = el.nativeElement;\n }\n\n ngAfterViewInit(): void {\n this.checkErrors();\n this.overwriteParentWidth();\n this.createHiddenTextContainer();\n this.setOwnStyles();\n this.subscribeToChanges();\n }\n\n ngOnDestroy(): void {\n if (this.changeDetectSub) {\n this.changeDetectSub.unsubscribe();\n }\n }\n\n checkErrors(): void {\n if (!(this.inputElement instanceof HTMLInputElement)) {\n throw new Error('matInputAutosize directive must be on an input element');\n }\n\n if (!this.childMatInput) {\n throw new Error(\n 'Element with matInputAutosize directive must also have the matInput directive'\n );\n }\n }\n\n overwriteParentWidth(): void {\n Object.assign((this.inputElement.parentNode as HTMLElement).style, {\n width: '100%',\n });\n }\n\n createHiddenTextContainer(): void {\n const textContainer = document.createElement('div');\n Object.assign(textContainer.style, {\n display: 'inline-block',\n 'max-width': this.matInputAutosizeMaxWidth || null,\n 'min-width': this.matInputAutosizeMinWidth,\n font: this.matInputAutosizeFontStyle || null,\n visibility: 'hidden',\n 'white-space': 'pre',\n });\n this.inputElement.parentNode?.appendChild(textContainer);\n\n this.hiddenText = document.createTextNode(' ');\n textContainer.appendChild(this.hiddenText);\n }\n\n setOwnStyles(): void {\n Object.assign(this.inputElement.style, {\n position: 'absolute',\n left: '0',\n });\n }\n\n subscribeToChanges(): void {\n if (this.childNgModel) {\n this.changeDetectSub = this.childNgModel.control.valueChanges.subscribe(\n this.changeHiddenText\n );\n } else {\n this.inputElement.addEventListener('input', () =>\n this.changeHiddenText(this.inputElement.value)\n );\n }\n }\n\n changeHiddenText = (newValue: string): void => {\n if (this.hiddenText) {\n this.hiddenText.data = newValue + ' ';\n }\n };\n}\n","import {\n AfterViewInit,\n Directive,\n DoCheck,\n Host,\n Optional,\n Renderer2,\n Self,\n ViewContainerRef,\n} from '@angular/core';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { MatButton } from '@angular/material/button';\n\n@Directive({\n selector: '[appStylePaginatorMv]',\n standalone: true\n})\nexport class PaginatorLegacyDirective implements DoCheck, AfterViewInit {\n private currentPage: number;\n private pageGapTxt: string[];\n private rangeStart!: number;\n private rangeEnd!: number;\n private buttons: MatButton[] = [];\n private showTotalPages: number;\n private checkPage: number[];\n\n constructor(\n @Host() @Self() @Optional() private readonly matPag: MatPaginator,\n private readonly ViewContainer: ViewContainerRef,\n private readonly renderer: Renderer2\n ) {\n this.currentPage = 1;\n this.pageGapTxt = ['•••', '---'];\n this.showTotalPages = 2;\n this.checkPage = [0, 0, 0];\n // Display custom range label text\n this.matPag._intl.getRangeLabel = (\n page: number,\n pageSize: number,\n length: number\n ): string => {\n const startIndex = page * pageSize;\n const endIndex =\n startIndex < length\n ? Math.min(startIndex + pageSize, length)\n : startIndex + pageSize;\n if (length === 0) {\n return 'Mostrando 0 – 0 de 0 item';\n }\n if (length === 1) {\n return (\n 'Mostrando ' +\n (startIndex + 1) +\n ' – ' +\n endIndex +\n ' de ' +\n length +\n ' item'\n );\n } else {\n return (\n 'Mostrando ' +\n (startIndex + 1) +\n ' – ' +\n endIndex +\n ' de ' +\n length +\n ' itens'\n );\n }\n };\n // Subscribe to rerender buttons when next page and last page button is used\n this.matPag.page.subscribe((paginator: PageEvent) => {\n this.currentPage = paginator.pageIndex;\n this.matPag.pageIndex = paginator.pageIndex;\n this.initPageRange();\n });\n this.matPag._intl.itemsPerPageLabel = 'Itens por página';\n const paginatorIntl = this.matPag._intl;\n paginatorIntl.nextPageLabel = '';\n paginatorIntl.previousPageLabel = '';\n }\n\n ngDoCheck(): void {\n // Reset paginator if the pageSize, pageIndex, length changes\n if (\n this.matPag?.length !== this.checkPage[0] ||\n this.matPag?.pageSize !== this.checkPage[1] ||\n this.matPag?.pageIndex !== this.checkPage[2]\n ) {\n const pageCount = this.matPag.getNumberOfPages();\n if (this.currentPage > pageCount && pageCount !== 0) {\n this.currentPage = 1;\n this.matPag.pageIndex = 0;\n }\n this.currentPage = this.matPag.pageIndex;\n this.initPageRange();\n this.checkPage = [\n this.matPag.length,\n this.matPag.pageSize,\n this.matPag.pageIndex,\n ];\n }\n }\n\n private buildPageNumbers = () => {\n let dots: boolean[];\n let page: number;\n let pageDifference: number;\n let startIndex: number;\n let totalPages: number;\n totalPages = this.matPag.getNumberOfPages();\n // Container div with paginator elements\n const actionContainer =\n this.ViewContainer.element.nativeElement.querySelector(\n 'div.mat-paginator-range-actions'\n );\n // Button that triggers the next page action\n const nextPageNode = this.ViewContainer.element.nativeElement.querySelector(\n 'button.mat-paginator-navigation-next'\n );\n // Label showing the page range\n const pageRange = this.ViewContainer.element.nativeElement.querySelector(\n 'div.mat-paginator-range-label'\n );\n\n let prevButtonCount = this.buttons.length;\n\n // Remove buttons before creating new ones\n if (prevButtonCount > 0) {\n this.buttons.forEach((button) => {\n this.renderer.removeChild(actionContainer, button);\n });\n // Empty state array\n prevButtonCount = 0;\n }\n\n this.renderer.addClass(pageRange, 'custom-paginator-counter');\n this.renderer.addClass(actionContainer, 'custom-paginator-container');\n\n // Initialize next page and last page buttons\n if (prevButtonCount === 0) {\n const nodeArray = actionContainer.childNodes;\n setTimeout(() => {\n for (const node of nodeArray) {\n if (node.nodeName === 'BUTTON') {\n // Next Button styles\n if (node.innerHTML.length > 100 && node.disabled) {\n this.renderer.addClass(node, 'custom-paginator-arrow-disabled');\n this.renderer.removeClass(node, 'custom-paginator-arrow-enabled');\n } else if (node.innerHTML.length > 100 && !node.disabled) {\n this.renderer.addClass(node, 'custom-paginator-arrow-enabled');\n this.renderer.removeClass(\n node,\n 'custom-paginator-arrow-disabled'\n );\n }\n }\n }\n });\n }\n\n dots = [false, false];\n\n if (totalPages > 0) {\n this.renderer.insertBefore(\n actionContainer,\n this.createButton('0', this.matPag.pageIndex),\n nextPageNode\n );\n }\n\n page = this.showTotalPages + 2;\n pageDifference = totalPages - page;\n startIndex = Math.max(this.currentPage - this.showTotalPages - 2, 1);\n\n for (let index = startIndex; index < totalPages - 1; index = index + 1) {\n if (\n (index < page && this.currentPage <= this.showTotalPages) ||\n (index >= this.rangeStart && index <= this.rangeEnd) ||\n (this.currentPage > pageDifference && index >= pageDifference) ||\n totalPages < this.showTotalPages + page\n ) {\n this.renderer.insertBefore(\n actionContainer,\n this.createButton(`${index}`, this.matPag.pageIndex),\n nextPageNode\n );\n } else {\n if (index > this.rangeEnd && !dots[0]) {\n this.renderer.insertBefore(\n actionContainer,\n this.createButton(this.pageGapTxt[0], this.matPag.pageIndex),\n nextPageNode\n );\n dots[0] = true;\n break;\n }\n if (index < this.rangeEnd && !dots[1]) {\n this.renderer.insertBefore(\n actionContainer,\n this.createButton(this.pageGapTxt[1], this.matPag.pageIndex),\n nextPageNode\n );\n dots[1] = true;\n }\n }\n }\n\n if (totalPages > 1) {\n this.renderer.insertBefore(\n actionContainer,\n this.createButton(`${totalPages - 1}`, this.matPag.pageIndex),\n nextPageNode\n );\n }\n };\n\n private createButton(index: string, pageIndex: number): MatButton {\n const linkBtn: MatButton = this.renderer.createElement('button');\n this.renderer.setAttribute(linkBtn, 'class', 'custom-paginator-page');\n this.renderer.addClass(linkBtn, 'custom-paginator-page-enabled');\n if (index === this.pageGapTxt[0] || index === this.pageGapTxt[1]) {\n this.renderer.addClass(linkBtn, 'custom-paginator-arrow-enabled');\n }\n const pagingTxt = isNaN(+index) ? this.pageGapTxt[0] : +index + 1;\n const text = this.renderer.createText(pagingTxt + '');\n this.renderer.addClass(linkBtn, 'mat-custom-page');\n switch (index) {\n case `${pageIndex}`:\n this.renderer.setAttribute(linkBtn, 'disabled', 'disabled');\n this.renderer.removeClass(linkBtn, 'custom-paginator-page-enabled');\n this.renderer.addClass(linkBtn, 'custom-paginator-page-disabled');\n break;\n case this.pageGapTxt[0]:\n this.renderer.listen(linkBtn, 'click', () => {\n this.switchPage(\n this.currentPage < this.showTotalPages + 1\n ? this.showTotalPages + 2\n : this.currentPage + this.showTotalPages - 1\n );\n });\n break;\n case this.pageGapTxt[1]:\n this.renderer.listen(linkBtn, 'click', () => {\n this.switchPage(\n this.currentPage >\n this.matPag.getNumberOfPages() - this.showTotalPages - 2\n ? this.matPag.getNumberOfPages() - this.showTotalPages - 3\n : this.currentPage - this.showTotalPages + 1\n );\n });\n break;\n default:\n this.renderer.listen(linkBtn, 'click', () => {\n this.switchPage(+index);\n });\n break;\n }\n this.renderer.appendChild(linkBtn, text);\n // Add button to private array for state\n this.buttons.push(linkBtn);\n return linkBtn;\n }\n\n /**\n * @description calculates the button range based on class input parameters and based on current page index value.\n */\n private initPageRange(): void {\n this.rangeStart = this.currentPage - this.showTotalPages / 2;\n this.rangeEnd = this.currentPage + this.showTotalPages / 2;\n this.buildPageNumbers();\n }\n\n private switchPage(index: number): void {\n this.matPag.pageIndex = index;\n this.matPag.page.emit({\n previousPageIndex: this.currentPage,\n pageIndex: index,\n pageSize: this.matPag.pageSize,\n length: this.matPag.length,\n });\n this.currentPage = index;\n this.initPageRange();\n }\n\n public ngAfterViewInit(): void {\n this.rangeStart = 0;\n this.rangeEnd = this.showTotalPages - 1;\n this.initPageRange();\n }\n}\n","export const ESTADOS_SIGLA: any = ['ac', 'al', 'am', 'ap', 'ba', 'ce', 'df', 'es', 'go', 'ma',\n 'mg', 'ms', 'mt', 'pa', 'pb', 'pe', 'pi', 'pr', 'rj', 'rn', 'ro', 'rr', 'rs',\n 'sc', 'se', 'sp', 'to'\n];\n\n\nexport type EstadosType = 'ac'| 'al'| 'am'| 'ap'| 'ba'| 'ce'| 'df'| 'es'| 'go'| 'ma'|\n'mg'| 'ms'| 'mt'| 'pa'| 'pb'| 'pe'| 'pi'| 'pr'| 'rj'| 'rn'| 'ro'| 'rr'| 'rs'|\n'sc'| 'se'| 'sp'| 'to';\n\n\nexport const ESTADOS = [\n { name: 'Acre', shortname: 'AC', slug: 'acre' },\n { name: 'Alagoas', shortname: 'AL', slug: 'alagoas' },\n { name: 'Amapá', shortname: 'AP', slug: 'amapa' },\n { name: 'Amazonas', shortname: 'AM', slug: 'amazonas' },\n { name: 'Bahia', shortname: 'BA', slug: 'bahia' },\n { name: 'Ceará', shortname: 'CE', slug: 'ceara' },\n { name: 'Distrito Federal', shortname: 'DF', slug: 'distrito-federal' },\n { name: 'Espírito Santo', shortname: 'ES', slug: 'espirito-santo' },\n { name: 'Goiás', shortname: 'GO', slug: 'goias' },\n { name: 'Maranhão', shortname: 'MA', slug: 'maranhao' },\n { name: 'Mato Grosso', shortname: 'MT', slug: 'mato-grosso' },\n { name: 'Mato Grosso do Sul', shortname: 'MS', slug: 'mato-grosso-do-sul' },\n { name: 'Minas Gerais', shortname: 'MG', slug: 'minas-gerais' },\n { name: 'Pará', shortname: 'PA', slug: 'para' },\n { name: 'Paraíba', shortname: 'PB', slug: 'paraiba' },\n { name: 'Paraná', shortname: 'PR', slug: 'parana' },\n { name: 'Pernambuco', shortname: 'PE', slug: 'pernambuco' },\n { name: 'Piauí', shortname: 'PI', slug: 'piaui' },\n { name: 'Rio de Janeiro', shortname: 'RJ', slug: 'rio-de-janeiro' },\n { name: 'Rio Grande do Norte', shortname: 'RN', slug: 'rio-grande-do-norte' },\n { name: 'Rio Grande do Sul', shortname: 'RS', slug: 'rio-grande-do-sul' },\n { name: 'Rondônia', shortname: 'RO', slug: 'rondonia' },\n { name: 'Roraima', shortname: 'RR', slug: 'roraima' },\n { name: 'Santa Catarina', shortname: 'SC', slug: 'santa-catarina' },\n { name: 'São Paulo', shortname: 'SP', slug: 'sao-paulo' },\n { name: 'Sergipe', shortname: 'SE', slug: 'sergipe' },\n { name: 'Tocantins', shortname: 'TO', slug: 'tocantins' }\n]","import { ESTADOS_SIGLA } from './estados';\nimport { BigObject } from './interfaces';\n\nexport function isPresent(obj: any): boolean {\n return obj !== undefined && obj !== null;\n}\n\nexport function isArray(value: any) {\n return (Array.isArray && Array.isArray(value)) || value instanceof Array\n}\n\nexport function isString(value: any) {\n return typeof value === 'string' || value instanceof String\n}\n\nexport function isNumber(value: any) {\n return typeof value === 'number' && !isNaN(value); // && value.length === undefined\n}\n\nexport function isNil(value: any) {\n return typeof value === 'undefined' || value === null\n}\n\n\n\n\nconst strCaretTrap = '[]'\nexport function processCaretTraps(mask: any) {\n const indexes = []\n\n let indexOfCaretTrap: number\n while (indexOfCaretTrap = mask.indexOf(strCaretTrap), indexOfCaretTrap !== -1) { // eslint-disable-line\n indexes.push(indexOfCaretTrap)\n\n mask.splice(indexOfCaretTrap, 1)\n }\n\n return { maskWithoutCaretTraps: mask, indexes }\n}\n\nexport const modulo11 = (value: string) => {\n let mults: any = []\n let weightVal = 2\n for (let i = 0; i < value.length; i++) {\n // mults = [weightVal, ...mults]\n mults.push(weightVal)\n weightVal++\n if (weightVal > 9) weightVal = 2\n }\n\n mults = mults.reverse()\n\n let sum = 0\n for (let i = 0; i < value.length; i++) {\n sum += parseInt(value[i]) * mults[i]\n }\n const digit = (sum *10) % 11\n return digit\n}\n\nexport const modulo11Custom = (string: string, size: number, maxMult = string.length, by10 = true) => {\n if (!by10) size = 1\n for (let n = 1; n <= size; n++) {\n let soma = 0\n let mult = 2\n for (let i = string.length - 1; i >= 0; i--) {\n soma += (mult * parseInt(string.charAt(i)))\n mult++\n if (mult > maxMult) mult = 2\n }\n let dig\n if (by10) {\n dig = ((soma * 10) % 11) % 10;\n } else {\n dig = soma % 11;\n if (dig == 10) dig = 0;\n }\n string += dig;\n }\n return string.substr(string.length - size, size);\n}\n\n\nexport const modulo11a = (string: string, size: number, mod: number) => {\n let soma = 0;\n for (let i = 1; i <= size; i++) {\n // tslint:disable-next-line:radix\n soma = soma + parseInt(string.substring(i - 1, i)) * (mod - i);\n }\n let resto = (soma * 10) % 11;\n\n if ((resto === 10) || (resto === 11)) {\n resto = 0;\n }\n return resto;\n}\n\n/**\n * \n * @param input \n * ^ - Match line start\n (\\d) - match first digit and capture it in back reference #1 i.e. \\1\n (?!..) is a negative lookahead\n (?!\\1+$) means disallow the match if first digit is followed by same digit (captured group) till end.\n \\d{11}$ match next 11 digit followed by line end\n */\nexport function allNumbersAreSame(inputValue: string) {\n const input: string | void = getAllDigits(inputValue);\n if (typeof input === 'string') {\n const reg = new RegExp('^(\\\\d)(?!\\\\1+$)\\\\d{' + ((<string>input).length - 1) + '}$');\n return reg.test(input);\n }\n return false;\n}\n\nexport function getAllDigits(input: string) {\n if (!input.match) {\n input = input.toString();\n }\n const match = input.match(/\\d/g);\n if (match) {\n return match.join(\"\");\n }\n return '';\n}\n\nexport function getAllWords(input: string) {\n const match = input.match(/\\w/g);\n if (match) {\n return match.join(\"\");\n }\n return '';\n}\n\nexport function currencyToNumber(input: string | number) {\n if (typeof input === 'number') {\n return input;\n }\n input = input.replace(/ /g, '');\n if (input.indexOf('$') !== -1) {\n const vals = input.split('$');\n input = vals[1];\n }\n\n // Keeping just numbers . and ,\n input = input.replace(/[^0-9.,]+/, '');\n\n // eua format\n if (input.indexOf('.') === (input.length - 1) - 2) {\n input = input.replace(/\\,/g, '')\n }\n // br format\n else {\n input = input.replace(/\\./g, '').replace(',', '.');\n }\n\n return parseFloat(input);\n}\n\nexport function numberToCurrency(value: number) {\n return ' R$ ' + value.toFixed(2).replace('.', ',') + ' ';\n};\n\nexport function slugify(value: string) {\n\n return value.toString().toLowerCase()\n .replace(/[àÀáÁâÂãäÄÅåª]+/g, 'a') // Special Characters #1\n .replace(/[èÈéÉêÊëË]+/g, 'e') \t// Special Characters #2\n .replace(/[ìÌíÍîÎïÏ]+/g, 'i') \t// Special Characters #3\n .replace(/[òÒóÓôÔõÕöÖº]+/g, 'o') \t// Special Characters #4\n .replace(/[ùÙúÚûÛüÜ]+/g, 'u') \t// Special Characters #5\n .replace(/[ýÝÿŸ]+/g, 'y') \t\t// Special Characters #6\n .replace(/[ñÑ]+/g, 'n') \t\t\t// Special Characters #7\n .replace(/[çÇ]+/g, 'c') \t\t\t// Special Characters #8\n .replace(/[ß]+/g, 'ss') \t\t\t// Special Characters #9\n .replace(/[Ææ]+/g, 'ae') \t\t\t// Special Characters #10\n .replace(/[Øøœ]+/g, 'oe') \t\t// Special Characters #11\n .replace(/[%]+/g, 'pct') \t\t\t// Special Characters #12\n .replace(/\\s+/g, '-') \t\t// Replace spaces with -\n .replace(/[^\\w\\-]+/g, '') \t\t// Remove all non-word chars\n .replace(/\\-\\-+/g, '-') \t\t// Replace multiple - with single -\n .replace(/^-+/, '') \t\t// Trim - from start of text\n .replace(/-+$/, ''); \t\t// Trim - from end of text\n\n};\n/**\n * \n * @param string ex. 12345\n * @param size 11\n * @param fill 0\n * \n * Returns: 00000012345\n */\nexport function fillString(string: string, size: number, fill: string) {\n if (string.length < size) {\n const dif = size - string.length;\n for (let i = 0; i < dif; i++) {\n string = fill + string\n }\n }\n return string;\n}\n\n\nexport function randArray(array: string | any[]) {\n const index = randomNumber(0, array.length);\n return array[index];\n}\n\n\nexport function rand(length: number, ...ranges: any[]) {\n var str = \"\"; // the string (initialized to \"\")\n while (length--) { // repeat this length of times\n var ind = Math.floor(Math.random() * ranges.length); // get a random range from the ranges object\n var min = ranges[ind][0].charCodeAt(0), // get the minimum char code allowed for this range\n max = ranges[ind][1].charCodeAt(0); // get the maximum char code allowed for this range\n var c = Math.floor(Math.random() * (max - min + 1)) + min; // get a random char code between min and max\n str += String.fromCharCode(c); // convert it back into a character and append it to the string str\n }\n return str; // return str\n}\n\nexport function randomNumber(begin: number, end: number) {\n const dif = end - begin;\n const number = Math.floor(Math.random() * dif) + begin;\n return number;\n}\n\n\nexport function randomLetter(size = 1, onlyCapitals = false) {\n var text = \"\";\n let possible: any = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n if (onlyCapitals == false) {\n possible += \"abcdefghijklmnopqrstuvwxyz\";\n }\n possible = possible.split('');\n for (let i = 0; i < size; i++) {\n const pos = Math.floor(Math.random() * possible.length);\n text += possible[pos];\n }\n return text;\n}\n\n\nexport function randomLetterOrNumber(size = 1, onlyCapitals = false) {\n var text = \"\";\n let possible: any = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n if (onlyCapitals == false) {\n possible += \"abcdefghijklmnopqrstuvwxyz0123456789\";\n }\n possible = possible.split('');\n for (let i = 0; i < size; i++) {\n const pos = Math.floor(Math.random() * possible.length);\n text += possible[pos];\n }\n return text;\n}\n\nexport const randomEstadoSigla = () => {\n const total = ESTADOS_SIGLA.length;\n return ESTADOS_SIGLA[Math.floor(Math.random() * total)];\n}\n\nexport const CORES = [\"AMARELO\", \"AZUL\", \"BEGE\", \"BRANCA\", \"CINZA\", \"DOURADA\", \"GRENA\", \"LARANJA\", \"MARROM\", \"PRATA\",\n \"PRETA\", \"ROSA\", \"ROXA\", \"VERDE\", \"VERMELHA\", \"FANTASIA\"];\n\n\nexport function getSpecialProperty<TModel, TKey extends keyof TModel>(\n model: TModel,\n key: TKey\n) {\n return model[key];\n}\n\n/**\n * \n */\nexport const makeGenericFaker = (val: any, options: BigObject<Function> | null = null) => {\n return () => {\n if (!val.textMask || !val.textMask.map) {\n return '';\n }\n const newData = val.textMask.map((c: string | any[], index: number) => {\n if (options && options[index]) {\n return options[index]();\n }\n c = c.toString();\n if (c === /\\d/.toString()) {\n return Math.floor(Math.random() * 10).toString()\n } else if (c === /[A-Za-z]/.toString()) {\n return randomLetter(1).toString();\n } else if (c === /\\w/.toString()) {\n return randomLetterOrNumber(1).toString();\n } else if (c.indexOf('/[') === 0) { // /[1-9]/ ou /[5-9]/\n c = c.replace('/[', '').replace(']/', '');\n\n if (c.indexOf('-') > 0) {\n c = c.split('-');\n if (parseInt(c[1])) {\n const mult = c[1] - c[0];\n const plus = parseInt(c[0]);\n return (Math.floor(Math.random() * mult) + plus).toString();\n } else {\n return rand(1, [c[0], c[1]]);\n }\n } else if (c.indexOf('|') > 0) {\n c = c.split('|');\n const index = Math.floor(Math.random() * c.length);\n return c[index];\n }\n\n } else {\n return c;\n }\n });\n return newData.join('');\n };\n}\n\nconst utilsBr = {\n isPresent,\n isArray,\n isString,\n isNumber,\n isNil,\n processCaretTraps,\n allNumbersAreSame,\n getAllDigits,\n getAllWords,\n currencyToNumber,\n numberToCurrency,\n slugify,\n fillString,\n randArray,\n rand,\n randomNumber,\n randomLetter,\n randomLetterOrNumber,\n getSpecialProperty\n}\n\nexport default utilsBr;","import { allNumbersAreSame } from './utils';\nimport { BigObject, MaskType } from './interfaces';\n\n/**\n * BASED ON https://github.com/gammasoft/ie/\n */\n\n\nexport const generateInscricaoEstadual: BigObject<Function> = {\n ac: function (valor: any) {\n if (tamanhoNaoE(valor, 13)) {\n return false;\n }\n\n if (naoComecaCom(valor, '01')) {\n return false;\n }\n\n const base = primeiros(valor, 11);\n\n const primeiroDigito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base));\n const segundoDigito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base + primeiroDigito));\n\n return base + primeiroDigito + segundoDigito;\n },\n\n am: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n\n al: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n if (naoComecaCom(valor, '24')) {\n return false;\n }\n\n // FORMAÇÃO: 24XNNNNND, sendo:\n // 24 – Código do Estado\n // X – Tipo de empresa (0-Normal, 3-Produtor Rural, 5-Substituta, 7- Micro-Empresa Ambulante, 8-Micro-Empresa)\n // NNNNN – Número da empresa\n // D – Dígito de verificação calculado pelo Módulo11, pêsos 2 à 9 da direita para a esquerda, exceto D\n // Exemplo: Número 2 4 0 0 0 0 0 4 D\n // 2 4 X N N N N N D\n // Fonte: http://www.sintegra.gov.br/Cad_Estados/cad_AL.html\n\n const base: any = primeiros(valor);\n\n // Pesos 9 8 7 6 5 4 3 2\n // SOMA = (2 * 4) + (3 * 0) + (4 * 0) + (5 * 0) + (6 * 0) + (7 * 0) + (8 * 4) + (9 * 2) = 58\n const soma = base.split('').reduce((acc: number, v: string, i: number) => {\n return acc + (9 - i) * Number(v)\n }, 0)\n // PRODUTO = 58 * 10 = 580\n const produto = soma * 10\n // RESTO = 580 – INTEIRO(580 / 11)*11 = 580 – (52*11) = 8\n const resto = produto - Math.floor(produto / 11) * 11\n // DÍGITO = 8 - Caso RESTO seja igual a 10 o DÍGITO será 0 (zero)\n const digito = resto === 10 ? 0 : resto\n return base + digito;\n },\n\n ap: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n if (naoComecaCom(valor, '03')) {\n return false;\n }\n\n const base: any = primeiros(valor);\n\n let p: number, d: number;\n\n if (entre(base, 3000001, 3017000)) {\n p = 5;\n d = 0;\n } else if (entre(base, 3017001, 3019022)) {\n p = 9;\n d = 1;\n } else {\n p = 0;\n d = 0;\n }\n\n const resto = mod(p + base, [2, 3, 4, 5, 6, 7, 8, 9, 1]);\n\n let digito: number;\n if (resto === 1) {\n digito = 0;\n } else if (resto === 0) {\n digito = d;\n } else {\n digito = 11 - resto;\n }\n\n return base + digito;\n },\n\n ba: function (valor: any) {\n if (tamanhoNaoE(valor, 8) && tamanhoNaoE(valor)) {\n return false;\n }\n\n const base: any = primeiros(valor, valor.length - 2);\n let primeiroDigito: number, segundoDigito: number;\n\n const segundoMultiplicador = serie(2, 7);\n const primeiroMultiplicador = serie(2, 8);\n\n let primeiroResto: number, segundoResto: number;\n let digitoComparacao = valor.substring(0, 1);\n\n if (tamanhoE(valor, 9)) {\n segundoMultiplicador.push(8);\n primeiroMultiplicador.push(9);\n digitoComparacao = valor.substring(1, 2);\n }\n\n if ('0123458'.split('').indexOf(digitoComparacao) !== -1) {\n segundoResto = mod(base, segundoMultiplicador, 10);\n segundoDigito = segundoResto === 0 ? 0 : 10 - segundoResto;\n\n primeiroResto = mod(base + segundoDigito, primeiroMultiplicador, 10);\n primeiroDigito = primeiroResto === 0 ? 0 : 10 - primeiroResto;\n } else {\n segundoResto = mod(base, segundoMultiplicador);\n segundoDigito = substracaoPor11SeMaiorQue2CasoContrario0(segundoResto);\n\n primeiroResto = mod(base + segundoDigito, primeiroMultiplicador);\n primeiroDigito = substracaoPor11SeMaiorQue2CasoContrario0(primeiroResto);\n }\n\n return base + primeiroDigito + segundoDigito;\n },\n\n ce: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n return calculoTrivialGenerate(valor);\n },\n\n df: function (valor: any) {\n if (tamanhoNaoE(valor, 13)) {\n return false;\n }\n\n if (naoComecaCom(valor, '07') && naoComecaCom(valor, '08')) {\n return false;\n }\n const base: any = primeiros(valor, 11);\n\n const primeiro = substracaoPor11SeMaiorQue2CasoContrario0(mod(base));\n const segundo = substracaoPor11SeMaiorQue2CasoContrario0(mod(base + primeiro));\n return base + primeiro + segundo;\n },\n\n es: function (valor: any) {\n return calculoTrivialGenerate(valor);\n },\n go: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n // Verifica os digitos iniciais do estado\n // Fonte: https://appasp.economia.go.gov.br/Legislacao/arquivos/Secretario/IN/IN_1535_2022.htm\n\n if (['10', '11', '15', '20'].indexOf(valor.substring(0, 2)) === -1) {\n return false;\n }\n\n const base: any = primeiros(valor);\n\n if (base === '11094402') {\n return valor.substr(8) === '1' || valor.substr(8) === '0';\n }\n\n const resto = mod(base);\n let digito: number;\n\n if (resto === 0) {\n digito = 0;\n } else if (resto === 1) {\n if (entre(base, 10103105, 10119997)) {\n digito = 1;\n } else {\n digito = 0;\n }\n } else {\n digito = 11 - resto;\n }\n\n return base + digito;\n },\n ma: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n if (naoComecaCom(valor, '12')) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n\n mg: function (valor: any) {\n if (tamanhoNaoE(valor, 13)) {\n return false;\n }\n\n const base = primeiros(valor, 11);\n\n const baseComZero = valor.substring(0, 3) + '0' + valor.substring(3, 11);\n\n let i = 0;\n const produtorioLiteral = baseComZero.split('').reduceRight(function (anterior, atual) {\n if (i > [2, 1].length - 1) {\n i = 0;\n }\n\n return ([2, 1][i++] * parseInt(atual, 10)).toString() + anterior.toString();\n }, '').split('').reduce(function (anterior, atual) {\n return anterior + parseInt(atual, 10);\n }, 0);\n\n let primeiro: any = ((Math.floor(produtorioLiteral / 10) + 1) * 10) - produtorioLiteral;\n if (primeiro === 10) {\n primeiro = 0;\n }\n\n const segundo = substracaoPor11SeMaiorQue2CasoContrario0(mod(base + primeiro, serie(2, 11)));\n\n return base + primeiro + segundo;\n },\n\n ms: function (valor: any) {\n if (naoComecaCom(valor, '28')) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n mt: function (valor: any) {\n if (tamanhoNaoE(valor, 11) && tamanhoNaoE(valor)) {\n return false;\n }\n\n const base = tamanhoE(valor, 11) ? valor.substring(0, 10) : primeiros(valor);\n return calculoTrivialGenerate(valor, base, true);\n },\n pa: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n if (naoComecaCom(valor, '15') && naoComecaCom(valor, '75')) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n\n pb: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n\n pe: function (valor: any) {\n const base: any = valor.substring(0, valor.length - 2);\n\n const restoPrimeiro = mod(base);\n const primeiro = 11 - restoPrimeiro >= 10 ? 0 : 11 - restoPrimeiro;\n\n const restoSegundo = mod(base + primeiro);\n const segundo = 11 - restoSegundo >= 10 ? 0 : 11 - restoSegundo;\n\n return base + primeiro + segundo;\n },\n\n pi: function (valor: any) {\n return calculoTrivialGenerate(valor);\n },\n\n pr: function (valor: any) {\n if (tamanhoNaoE(valor, 10)) {\n return false;\n }\n\n const base = primeiros(valor);\n\n const restoPrimeiro = mod(base, serie(2, 7));\n const primeiro = 11 - restoPrimeiro >= 10 ? 0 : 11 - restoPrimeiro;\n\n const restoSegundo = mod(base + primeiro, serie(2, 7));\n const segundo = 11 - restoSegundo >= 10 ? 0 : 11 - restoSegundo;\n\n return base + primeiro + segundo;\n },\n rj: function (valor: any) {\n if (tamanhoNaoE(valor, 8)) {\n return false;\n }\n\n const base = primeiros(valor, 7);\n const digito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base, serie(2, 7)));\n\n return base + digito;\n },\n\n rn: function (valor: any) {\n if (tamanhoNaoE(valor) && tamanhoNaoE(valor, 10)) {\n return false;\n }\n\n if (naoComecaCom(valor, '20')) {\n return false;\n }\n\n const base = valor.substring(0, valor.length - 1);\n\n const multiplicadores = serie(2, 9);\n if (tamanhoE(valor, 10)) {\n multiplicadores.push(10);\n }\n\n const resto = (mod(base, multiplicadores) * 10) % 11;\n const digito = resto === 10 ? 0 : resto;\n\n return base + digito;\n },\n ro: function (valor: any) {\n let base: any, digito: number, resultadoMod: number;\n\n if (tamanhoE(valor, 9)) {\n base = valor.substring(3, 8);\n digito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base));\n\n return valor === valor.substring(0, 3) + base + digito;\n } else if (tamanhoE(valor, 14)) {\n base = primeiros(valor, 13);\n resultadoMod = mod(base);\n digito = resultadoMod <= 1 ? 1 : 11 - resultadoMod;\n\n return base + digito;\n } else {\n return false;\n }\n },\n rr: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n if (naoComecaCom(valor, '24')) {\n return false;\n }\n\n const base = primeiros(valor);\n const digito = mod(base, [8, 7, 6, 5, 4, 3, 2, 1], 9);\n\n return base + digito;\n },\n\n rs: function (valor: any) {\n if (tamanhoNaoE(valor, 10)) {\n return false;\n }\n\n const base = primeiros(valor, 9);\n return calculoTrivialGenerate(valor, base, true);\n },\n\n sc: function (valor: any) {\n return calculoTrivialGenerate(valor);\n },\n\n se: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n\n sp: function (valor: any) {\n valor = valor.toUpperCase();\n\n let segundaBase: string;\n\n if (valor.substr(0, 1) === 'P') {\n if (tamanhoNaoE(valor, 13)) {\n return false;\n }\n\n const base = valor.substring(1, 9);\n segundaBase = valor.substring(10, 13);\n const resto = mod(base, [10, 8, 7, 6, 5, 4, 3, 1]).toString();\n const digito = resto.length > 1 ? resto[1] : resto[0];\n\n return 'P' + base + digito + segundaBase;\n } else {\n if (tamanhoNaoE(valor, 12)) {\n return false;\n }\n\n const primeiraBase = primeiros(valor);\n segundaBase = valor.substring(9, 11);\n\n const primeiroResto = mod(primeiraBase, [10, 8, 7, 6, 5, 4, 3, 1]).toString();\n const primeiro = primeiroResto.length > 1 ? primeiroResto[1] : primeiroResto[0];\n\n const segundoResto = mod(primeiraBase + primeiro + segundaBase, serie(2, 10)).toString();\n const segundo = segundoResto.length > 1 ? segundoResto[1] : segundoResto[0];\n\n return primeiraBase + primeiro + segundaBase + segundo;\n }\n },\n\n to: function (valor: any) {\n if (tamanhoNaoE(valor) && tamanhoNaoE(valor, 11)) {\n return false;\n }\n\n let base: any;\n\n if (tamanhoE(valor, 11)) {\n if (['01', '02', '03', '99'].indexOf(valor.substring(2, 4)) === -1) {\n return false;\n }\n\n base = valor.substring(0, 2) + valor.substring(4, 10);\n } else {\n base = primeiros(valor);\n }\n\n const digito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base));\n\n return valor.substring(0, valor.length - 1) + digito;\n },\n};\n\n\n\n\nconst funcoes: BigObject<Function> = {\n ac: function (valor: any) {\n return valor === generateInscricaoEstadual['ac'](valor);\n },\n\n am: function (valor: any) {\n return valor === generateInscricaoEstadual['am'](valor);\n },\n\n al: function (valor: any) {\n return valor === generateInscricaoEstadual['al'](valor);\n },\n\n ap: function (valor: any) {\n return valor === generateInscricaoEstadual['ap'](valor);\n },\n\n ba: function (valor: any) {\n return valor === generateInscricaoEstadual['ba'](valor);\n },\n\n ce: function (valor: any) {\n return valor === generateInscricaoEstadual['ce'](valor);\n },\n\n df: function (valor: any) {\n return valor === generateInscricaoEstadual['df'](valor);\n },\n\n es: function (valor: any) {\n return valor === generateInscricaoEstadual['es'](valor);\n },\n go: function (valor: any) {\n return valor === generateInscricaoEstadual['go'](valor);\n },\n ma: function (valor: any) {\n return valor === generateInscricaoEstadual['ma'](valor);\n },\n\n mg: function (valor: any) {\n return valor === generateInscricaoEstadual['mg'](valor);\n },\n\n ms: function (valor: any) {\n return valor === generateInscricaoEstadual['ms'](valor);\n },\n mt: function (valor: any) {\n return valor === generateInscricaoEstadual['mt'](valor);\n },\n pa: function (valor: any) {\n return valor === generateInscricaoEstadual['pa'](valor);\n },\n\n pb: function (valor: any) {\n return valor === generateInscricaoEstadual['pb'](valor);\n },\n\n pe: function (valor: any) {\n return valor === generateInscricaoEstadual['pe'](valor);\n },\n\n pi: function (valor: any) {\n return valor === generateInscricaoEstadual['pi'](valor);\n },\n\n pr: function (valor: any) {\n return valor === generateInscricaoEstadual['pr'](valor);\n },\n rj: function (valor: any) {\n return valor === generateInscricaoEstadual['rj'](valor);\n },\n\n rn: function (valor: any) {\n return valor === generateInscricaoEstadual['rn'](valor);\n },\n ro: function (valor: any) {\n return valor === generateInscricaoEstadual['ro'](valor);\n },\n rr: function (valor: any) {\n return valor === generateInscricaoEstadual['rr'](valor);\n },\n\n rs: function (valor: any) {\n return valor === generateInscricaoEstadual['rs'](valor);\n },\n\n sc: function (valor: any) {\n return valor === generateInscricaoEstadual['sc'](valor);\n },\n\n se: function (valor: any) {\n return valor === generateInscricaoEstadual['se'](valor);\n },\n\n sp: function (valor: string | boolean) {\n return valor === generateInscricaoEstadual['sp'](valor);\n },\n\n to: function (valor: any) {\n return valor === generateInscricaoEstadual['to'](valor);\n },\n};\n\n\n\n\nexport function validate_inscricaoestadual(ie: string | Array<string>, estado: any) {\n if (eIndefinido(estado) || estado === null) {\n estado = '';\n }\n\n estado = estado.toLowerCase();\n\n if (estado !== '' && !(estado in funcoes)) {\n return new Error('estado não é válido');\n }\n\n if (eIndefinido(ie)) {\n return new Error('ie deve ser fornecida');\n }\n\n if (Array.isArray(ie)) {\n let retorno = true;\n ie.forEach(function (i) {\n if (!validate_inscricaoestadual(i, estado)) {\n retorno = false;\n }\n });\n return retorno;\n }\n\n if (typeof ie !== 'string') {\n return new Error('ie deve ser string ou array de strings');\n }\n\n if (!allNumbersAreSame(ie)) {\n return new Error('ie com todos dígitos iguais');\n }\n\n if (ie.match(/^ISENTO$/i)) {\n return true;\n }\n\n ie = ie.replace(/[\\.|\\-|\\/|\\s]/g, '');\n\n if (estado === '') {\n if (lookup(ie)) {\n return true;\n } else {\n return false;\n }\n }\n\n if (/^\\d+$/.test(ie) || estado === 'sp' || funcoes[estado]) {\n return funcoes[estado](ie);\n }\n\n\n return false;\n}\n\nexport const MASKSIE: BigObject<MaskType> = {\n ac: {\n text: '01.004.823/001-12',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n al: {\n text: '240000048',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n am: {\n text: '04.145.871-0',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n ap: {\n text: '240000048',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n ba: {\n text: '1234567-48',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numberLength = getSizeNumbers(userInput);\n if (!userInput || numberLength > 8) {\n return [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n } else {\n return [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n }\n }\n },\n ce: {\n text: '06.000001-5',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n df: {\n text: '06 000001 123-55',\n textMask: [/\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n es: {\n text: '082.560.67-6',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, '-', /\\d/]\n },\n go: {\n text: '06.000.001-5',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n ma: {\n text: '12.104.376-2',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n mg: {\n text: '001.819.263/0048',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/]\n },\n ms: {\n text: '001819263',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n mt: {\n text: '0018192630-1',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n pa: {\n text: '06-000001-5',\n textMask: [/\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n pb: {\n text: '06000001-5',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n pe: {\n text: '0192310-24',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n pi: {\n text: '19.301.656-7',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n pr: {\n text: '19301656-78',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n rj: {\n text: '20.040.04-1',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, '-', /\\d/]\n },\n rn: {\n text: '20.040.040-1',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numberLength = getSizeNumbers(userInput);\n\n if (!userInput || numberLength > 9) {\n return [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n } else {\n return [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/];\n }\n }\n },\n ro: {\n text: '101.62521-3',\n textMask: [/\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n rr: {\n text: '24006628-1',\n textMask: [/\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n rs: {\n text: '024/0440013',\n textMask: [/\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n sc: {\n text: '271.234.563',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/]\n },\n se: {\n text: '27123456-3',\n textMask: [/\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n sp: {\n text: '114.814.878.119',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/]\n },\n to: {\n text: '11 81 4878119',\n textMask: [/\\d/, /\\d/, ' ', /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n};\n\nfunction getSizeNumbers(userInput: string) {\n const numbers: any = userInput.match(/\\d/g);\n let numberLength = 0;\n if (numbers) {\n numberLength = numbers.join('').length;\n }\n return numberLength\n}\n\nfunction eIndefinido(objeto: any) {\n return typeof objeto === typeof undefined;\n}\n\nfunction tamanhoNaoE(string: { length: number; }, tamanho = 9) {\n if (eIndefinido(tamanho)) {\n tamanho = 9;\n }\n\n return string.length !== tamanho;\n}\n\nfunction tamanhoE(string: any[], tamanho: number) {\n return !tamanhoNaoE(string, tamanho);\n}\n\nfunction serie(de: number, ate: number) {\n const resultado = [];\n\n while (de <= ate) {\n resultado.push(de++);\n }\n\n return resultado;\n}\n\nfunction primeiros(string: any, quantidade = 8) {\n if (eIndefinido(quantidade)) {\n quantidade = 8;\n }\n\n return string.substring(0, quantidade);\n}\n\nfunction substracaoPor11SeMaiorQue2CasoContrario0(valor: number) {\n return valor < 2 ? 0 : 11 - valor;\n}\n\nfunction mod(valor: string, multiplicadores = serie(2, 9), divisor = 11) {\n if (eIndefinido(divisor)) {\n divisor = 11;\n }\n\n if (eIndefinido(multiplicadores)) {\n multiplicadores = serie(2, 9);\n }\n\n let i = 0;\n\n return valor.split('').reduceRight(function (anterior: number, atual: string) {\n if (i > multiplicadores.length - 1) {\n i = 0;\n }\n\n return (multiplicadores[i++] * parseInt(atual, 10)) + anterior;\n }, 0) % divisor;\n}\n\nfunction calculoTrivialGenerate(valor: any, base: any = null, validarTamanho = false) {\n if (!validarTamanho && tamanhoNaoE(valor)) {\n return false;\n }\n if (eIndefinido(base)) {\n base = primeiros(valor);\n }\n if (!base) {\n base = primeiros(valor);\n }\n\n const digito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base));\n\n return base + digito;\n}\n\nfunction naoComecaCom(string: any, valor: string) {\n return string.substring(0, valor.length) !== valor;\n}\n\nfunction entre(valor: string | number, limiteInferior: number, limiteSuperior: number) {\n if (typeof valor === 'string') {\n valor = parseInt(valor, 10);\n }\n\n return valor >= limiteInferior && valor <= limiteSuperior;\n}\n\n\nfunction lookup(ie: any) {\n const resultado = [];\n\n for (const estado in funcoes) {\n if (funcoes[estado](ie)) {\n resultado.push(estado);\n }\n }\n\n if (tamanhoE(resultado, 0)) {\n return false;\n } else {\n return resultado;\n }\n}\n\n","\n\nexport const PLACAS_RANGE = [\n ['AAA0001', 'BEZ9999', 'PR', '02/1990'],\n ['BFA0001', 'GKI9999', 'SP', '10/1991'],\n ['GKJ0001', 'HOK9999', 'MG', '09/1991'],\n ['HOL0001', 'HQE9999', 'MA', '01/1992'],\n ['HQF0001', 'HTW9999', 'MS', '03/1992'],\n ['HTX0001', 'HZA9999', 'CE', '10/1992'],\n ['HZB0001', 'IAP9999', 'SE', '09/1993'],\n ['IAQ0001', 'JDO9999', 'RS', '03/1992'],\n ['JDP0001', 'JKR9999', 'DF', '04/1994'],\n ['JKS0001', 'JSZ9999', 'BA', '08/1993'],\n ['JTA0001', 'JWE9999', 'PA', '07/1993'],\n ['JWF0001', 'JXY9999', 'AM', '09/1993'],\n ['JXZ0001', 'KAU9999', 'MT', '09/1993'],\n ['KAV0001', 'KFC9999', 'GO', '05/1994'],\n ['KFD0001', 'KME9999', 'PE', '08/1994'],\n ['KMF0001', 'LVE9999', 'RJ', '05/1994'],\n ['LVF0001', 'LWQ9999', 'PI', '04/1996'],\n ['LWR0001', 'MMM9999', 'SC', '06/1996'],\n ['MMN0001', 'MOW9999', 'PB', '07/1996'],\n ['MOX0001', 'MTZ9999', 'ES', '12/1995'],\n ['MUA0001', 'MVK9999', 'AL', '08/1996'],\n ['MVL0001', 'MXG9999', 'TO', '11/1996'],\n ['MXH0001', 'MZM9999', 'RN', '06/1998'],\n ['MZN0001', 'NAG9999', 'AC', '06/1998'],\n ['NAH0001', 'NBA9999', 'RR', '07/1998'],\n ['NBB0001', 'NEH9999', 'RO', '07/1998'],\n ['NEI0001', 'NFB9999', 'AP', '09/1998'],\n ['NFC0001', 'NGZ9999', 'GO', '08/2003'],\n ['NHA0001', 'NHT9999', 'MA', '12/2006'],\n ['NHU0001', 'NIX9999', 'PI', '05/2007'],\n ['NIY0001', 'NJW9999', 'MT', '10/2007'],\n ['NJX0001', 'NLU9999', 'GO', '11/2007'],\n ['NLV0001', 'NMO9999', 'AL', '01/2008'],\n ['NMP0001', 'NNI9999', 'MA', '05/2008'],\n ['NNJ0001', 'NOH9999', 'RN', '07/2008'],\n ['NOI0001', 'NPB9999', 'AM', '07/2008'],\n ['NPC0001', 'NPQ9999', 'MT', '09/2008'],\n ['NPR0001', 'NQK9999', 'PB', '11/2008'],\n ['NQL0001', 'NRE9999', 'CE', '12/2008'],\n ['NRF0001', 'NSD9999', 'MS', '11/2009'],\n ['NSE0001', 'NTC9999', 'PA', '11/2009'],\n ['NTD0001', 'NTW9999', 'BA', '02/2010'],\n ['NTX0001', 'NUG9999', 'MT', '03/2010'],\n ['NUH0001', 'NUL9999', 'RR', '06/2010'],\n ['NUM0001', 'NVF9999', 'CE', '06/2010'],\n ['NVG0001', 'NVN9999', 'SE', '03/2010'],\n ['NVO0001', 'NWR9999', 'GO', '03/2010'],\n ['NWS0001', 'NXQ9999', 'MA', '07/2010'],\n ['NXR0001', 'NXT9999', 'AC', '05/2011'],\n ['NXU0001', 'NXW9999', 'PE', '07/2010'],\n ['NXX0001', 'NYG9999', 'MG', '10/2011'],\n ['NYH0001', 'NZZ9999', 'BA', '10/2010'],\n ['OAA0001', 'OAO9999', 'AM', '12/2010'],\n ['OAP0001', 'OBS9999', 'MT', '05/2011'],\n ['OBT0001', 'OCA9999', 'PA', '07/2011'],\n ['OCB0001', 'OCU9999', 'CE', '02/2011'],\n ['OCV0001', 'ODT9999', 'ES', '05/2011'],\n ['ODU0001', 'OEI9999', 'PI', '09/2011'],\n ['OEJ0001', 'OES9999', 'SE', '08/2011'],\n ['OET0001', 'OFH9999', 'PB', '04/2011'],\n ['OFI0001', 'OFW9999', 'PA', '03/2011'],\n ['OFX0001', 'OGG9999', 'PB', '06/2011'],\n ['OGH0001', 'OHA9999', 'GO', '04/2011'],\n ['OHB0001', 'OHK9999', 'AL', '09/2011'],\n ['OHL0001', 'OHW9999', 'RO', '11/2011'],\n ['OHX0001', 'OIQ9999', 'CE', '12/2011'],\n ['OIR0001', 'OJQ9999', 'MA', '01/2012'],\n ['OJR0001', 'OKC9999', 'RN', '04/2012'],\n ['OKD0001', 'OKH9999', 'SC', '02/2014'],\n ['OKI0001', 'OLG9999', 'BA', '10/2011'],\n ['OLH0001', 'OLN9999', 'TO', '02/2012'],\n ['OLO0001', 'OMH9999', 'MG', '03/2012'],\n ['OMI0001', 'OOF9999', 'GO', '04/2012'],\n ['OOG0001', 'OOU9999', 'MS', '02/2012'],\n ['OOV0001', 'ORC9999', 'MG', '06/2012'],\n ['ORD0001', 'ORM9999', 'AL', '01/2012'],\n ['ORN0001', 'OSV9999', 'CE', '07/2012'],\n ['OSW0001', 'OTZ9999', 'PA', '08/2012'],\n ['OUA0001', 'OUE9999', 'PI', '11/2012'],\n ['OUF0001', 'OVD9999', 'BA', '12/2012'],\n ['OVE0001', 'OVF9999', 'ES', '12/2012'],\n ['OVG0001', 'OVG9999', 'AC', '05/2013'],\n ['OVH0001', 'OVL9999', 'ES', '07/2013'],\n ['OVM0001', 'OVV9999', 'DF', '11/2013'],\n ['OVW0001', 'OVY9999', 'PI', '10/2013'],\n ['OVZ0001', 'OWG9999', 'RN', '06/2013'],\n ['OWH0001', 'OXK9999', 'MG', '10/2013'],\n ['OXL0001', 'OXL9999', 'RO', '11/2013'],\n ['OXM0001', 'OXM9999', 'AM', '11/2013'],\n ['OXN0001', 'OXN9999', 'AL', '11/2013'],\n ['OXO0001', 'OXO9999', 'PB', '11/2013'],\n ['OXP0001', 'OXP9999', 'AC', '12/2013'],\n ['OXQ0001', 'OXZ9999', 'MA', '04/2014'],\n ['OYA0001', 'OYC9999', 'TO', '11/2013'],\n ['OYD0001', 'OYK9999', 'ES', '12/2013'],\n ['OYL0001', 'OYZ9999', 'PE', '02/2014'],\n ['OZA0001', 'OZA9999', 'CE', '01/2014'],\n ['OZB0001', 'OZB9999', 'SE', '01/2014'],\n ['OZC0001', 'OZV9999', 'BA', '03/2014'],\n ['OZW0001', 'PBZ9999', 'DF', '05/2014'],\n ['PCA0001', 'PED9999', 'PE', '12/2014'],\n ['PEE0001', 'PFQ9999', 'PE', '09/2010'],\n ['PFR0001', 'PGK9999', 'PE', '07/2012'],\n ['PGL0001', 'PGU9999', 'PE', '10/2013'],\n ['PGV0001', 'PGZ9999', 'PE', '12/2014'],\n ['PHA0001', 'PHZ9999', 'AM', '06/2014'],\n ['PIA0001', 'PIZ9999', 'PI', '06/2014'],\n ['PJA0001', 'PLZ9999', 'BA', '10/2014'],\n ['PMA0001', 'POZ9999', 'CE', '06/2014'],\n ['PPA0001', 'PPZ9999', 'ES', '08/2014'],\n ['PQA0001', 'PRZ9999', 'GO', '03/2015'],\n ['PSA0001', 'PTZ9999', 'MA', '12/2014'],\n ['PUA0001', 'PZZ9999', 'MG', '05/2014'],\n ['QAA0001', 'QAZ9999', 'MS', '12/2014'],\n ['QBA0001', 'QCZ9999', 'MT', '05/2014'],\n ['QDA0001', 'QEZ9999', 'PA', '10/2014'],\n ['QFA0001', 'QFZ9999', 'PB', '05/2014'],\n ['QGA0001', 'QGZ9999', 'RN', '09/2014'],\n ['QHA0001', 'QJZ9999', 'SC', '05/2014'],\n ['QKA0001', 'QKM9999', 'TO', '11/2014'],\n ['QKN0001', 'QKZ9999', 'SE', '06/2014'],\n ['QLA0001', 'QLM9999', 'AL', '09/2015'],\n ['QLN0001', 'QLT9999', 'AP', '01/2015'],\n ['QLU0001', 'QLZ9999', 'AC', '08/2014'],\n ['QMA0001', 'QMP9999', 'SE', '03/2017'],\n ['QMQ0001', 'QQZ9999', 'MG', '07/2017'],\n ['QRA0001', 'QRA9999', 'RO', '11/2017'],\n ['QRB0001', 'QRZ9999', 'ES', '05/2018'],\n ['QSA0001', 'QSZ9999', 'PB', '04/2018'],\n ['QTA0001', 'QTB9999', 'RO', '08/2018'],\n ['QTC0001', 'RIN9999', 'BR', '00/0000'],\n ['RIO0001', 'RIO9999', 'RJ', '09/2018'],\n ['RLA0001', 'SAU9999', 'BR', '00/0000'],\n ['SAV0001', 'SAV9999', 'SP', '09/2009'],\n];\n\nexport const PLACAS_INVALID = { start: 'SAW0001', end: 'ZZZ9999' } // || Sequências ainda não definidas\n\nexport function validate_placa(placa: string | number, incluiMercosul?: boolean) {\n const placaClean = placa.toString()\n .replace(/-/g, '')\n .replace(/ /g, '')\n .toUpperCase();\n const regex = {\n legadoBR: /^[A-Z]{3}[0-9]{4}$/,\n mercosulBR: /^[A-Z]{3}[0-9]{1}[A-Z]{1}[0-9]{2}$/,\n mercosulAR: /^[A-Z]{2}[0-9]{3}[A-Z]{2}$|^[A-Z]{1}[0-9]{3}[A-Z]{3}$/,\n mercosulBO: /^[A-Z]{2}[0-9]{5}$/,\n mercosulPY: /^[A-Z]{4}[0-9]{3}$|^[0-9]{3}[A-Z]{4}$/,\n mercosulUY: /^[A-Z]{3}[0-9]{4}$/,\n }\n const isLegadoBRInvalid =\n placaClean >= PLACAS_INVALID.start && placaClean <= PLACAS_INVALID.end;\n if ((regex.legadoBR.test(placaClean) && !isLegadoBRInvalid)\n || (regex.mercosulBR.test(placaClean))\n || (incluiMercosul && (\n (regex.mercosulAR.test(placaClean))\n || (regex.mercosulBO.test(placaClean))\n || (regex.mercosulPY.test(placaClean))\n || (regex.mercosulUY.test(placaClean))\n ))) {\n return true;\n }\n return false;\n}\n","import { ESTADOS_SIGLA } from './estados';\nimport { getAllDigits, fillString, modulo11Custom } from './utils';\n\n/**\n * \n * @param uf - UF do número da guia. Ex: 35(SP), 81(PE)\n * @param ano - ANO do número da guia. Ex: 2018, 2019\n * @param tipo - TIPO da guia. Aih = 1, APAC = 2\n */\nexport function create_aih(value: string | number | any[]) {\n value = getAllDigits(value.toString());\n if (value.length > 12) {\n value = value.toString().substr(0, value.length - 1);\n }\n const cod = parseInt(value);\n const calc = Math.ceil(cod - (cod / 11));\n const digito = calc.toString().substr(-1);\n return digito;\n}\n\nexport function create_certidao(value: string) {\n\n if (value.length > 30) {\n value = value.substring(0, value.length - 2);\n }\n let b1 = parseInt(value.slice(29));\n let b2 = parseInt(value.slice(28, 29));\n let b3 = parseInt(value.slice(27, 28));\n let b4 = parseInt(value.slice(26, 27));\n let b5 = parseInt(value.slice(25, 26));\n let b6 = parseInt(value.slice(24, 25));\n let b7 = parseInt(value.slice(23, 24));\n let b8 = parseInt(value.slice(22, 23));\n let b9 = parseInt(value.slice(21, 22));\n let b10 = parseInt(value.slice(20, 21));\n let b11 = parseInt(value.slice(19, 20));\n let b12 = parseInt(value.slice(18, 19));\n let b13 = parseInt(value.slice(17, 18));\n let b14 = parseInt(value.slice(16, 17));\n let b15 = parseInt(value.slice(15, 16));\n let b16 = parseInt(value.slice(14, 15));\n let b17 = parseInt(value.slice(13, 14));\n let b18 = parseInt(value.slice(12, 13));\n let b19 = parseInt(value.slice(11, 12));\n let b20 = parseInt(value.slice(10, 11));\n let b21 = parseInt(value.slice(9, 10));\n let b22 = parseInt(value.slice(8, 9));\n let b23 = parseInt(value.slice(7, 8));\n let b24 = parseInt(value.slice(6, 7));\n let b25 = parseInt(value.slice(5, 6));\n let b26 = parseInt(value.slice(4, 5));\n let b27 = parseInt(value.slice(3, 4));\n let b28 = parseInt(value.slice(2, 3));\n let b29 = parseInt(value.slice(1, 2));\n let b30 = parseInt(value.slice(0, 1));\n\n let certPriDig = (b1 * 9 + b2 * 8 + b3 * 7 + b4 * 6 + b5 * 5 + b6 * 4 + b7 * 3 + b8 * 2 + b9 * 1 + b10 * 0 + b11 * 10 + b12 * 9 + b13 * 8 + b14 * 7 + b15 * 6 + b16 * 5 + b17 * 4 + b18 * 3 + b19 * 2 + b20 * 1 + b21 * 0 + b22 * 10 + b23 * 9 + b24 * 8 + b25 * 7 + b26 * 6 + b27 * 5 + b28 * 4 + b29 * 3 + b30 * 2) % 11;\n if (certPriDig == 10) { certPriDig = 1; }\n let certSegDig = (certPriDig * 9 + b1 * 8 + b2 * 7 + b3 * 6 + b4 * 5 + b5 * 4 + b6 * 3 + b7 * 2 + b8 * 1 + b9 * 0 + b10 * 10 + b11 * 9 + b12 * 8 + b13 * 7 + b14 * 6 + b15 * 5 + b16 * 4 + b17 * 3 + b18 * 2 + b19 * 1 + b20 * 0 + b21 * 10 + b22 * 9 + b23 * 8 + b24 * 7 + b25 * 6 + b26 * 5 + b27 * 4 + b28 * 3 + b29 * 2 + b30 * 1) % 11;\n if (certSegDig == 10) { certSegDig = 1; }\n let certDV: any = certPriDig * 10 + certSegDig;\n if (certDV == 0) { certDV = \"00\"; }\n if (certDV > 0 && certDV < 10) { certDV = \"0\" + certDV; }\n\n return certDV.toString();\n}\n\nexport function create_cnhespelho(value: string) {\n let v1 = modulo11Custom(value.substr(0, value.length - 1), 1, 8, false);\n return v1\n}\n\nexport function create_renachestadual(value: string) {\n\n const state = value.substr(0, 2).toLowerCase()\n if (!ESTADOS_SIGLA.includes(state)) {\n return false\n }\n\n let digits = value.substr(2)\n digits = digits.replace(/[^\\d]/g, '');\n if (digits.length !== 9) {\n return false;\n }\n\n let v1 = modulo11Custom(digits.substr(0, digits.length - 1), 1, 11);\n return '' + v1\n}\n\n/**\n * \n * @param value \n * @returns \n */\nexport function create_renachseguranca(value: string) {\n value = value.replace(/[^\\d]+/g, '');\n if (value.length !== 11) {\n return false;\n }\n\n let v1 = modulo11Custom(value.substr(0, value.length - 1), 1, 11);\n return \"\" + v1;\n}\n\n/**\n * Dígito verificador da CNH não é mais o módulo 11 conforme últimas resoluções\n * @param value \n * @returns \n */\nexport function create_cnh(value: string) {\n value = value.replace(/[^\\d]+/g, '');\n\n if (value.length != 11 || value === '0') {\n return false;\n }\n // let v1 = modulo11Custom(value.substr(0, value.length - 2), 2);\n // if (v1 === '10') v1 = '00'\n let v1 = value.substr(-2)\n return v1;\n}\n\nexport function create_cnpj(cnpj: string) {\n cnpj = cnpj.replace(/[^\\d]+/g, '');\n\n if (cnpj === '') {\n return false;\n }\n\n if (cnpj.length !== 14) {\n return false;\n }\n\n // Elimina CNPJs invalidos conhecidos\n if (cnpj === '00000000000000' ||\n cnpj === '11111111111111' ||\n cnpj === '22222222222222' ||\n cnpj === '33333333333333' ||\n cnpj === '44444444444444' ||\n cnpj === '55555555555555' ||\n cnpj === '66666666666666' ||\n cnpj === '77777777777777' ||\n cnpj === '88888888888888' ||\n cnpj === '99999999999999') {\n return false;\n }\n\n // Valida DVs\n let tamanho: number = cnpj.length - 2\n let numeros: any = cnpj.substring(0, tamanho);\n let soma: any = 0;\n let pos = tamanho - 7;\n for (let i = tamanho; i >= 1; i--) {\n soma += numeros.charAt(tamanho - i) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n\n }\n const resultados = [0, 0];\n resultados[0] = soma % 11 < 2 ? 0 : 11 - soma % 11;\n\n tamanho = tamanho + 1;\n numeros = cnpj.substring(0, tamanho);\n soma = 0;\n pos = tamanho - 7;\n for (let i = tamanho; i >= 1; i--) {\n soma += numeros.charAt(tamanho - i) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n }\n resultados[1] = soma % 11 < 2 ? 0 : 11 - soma % 11;\n return resultados;\n}\n\nexport function create_cns(number: string) {\n number = getAllDigits(number);\n let somaInicial = 0;\n for (let i = 0; i < number.length - 1; i++) {\n somaInicial += parseInt(number[i]) * (15 - i);\n }\n let soma = somaInicial;\n let rest = 0;\n while (soma % 11 !== 0) {\n rest++;\n soma = somaInicial + (rest * 1)\n }\n return number.substr(-2, 1) + rest;\n}\n\nexport function create_cpf(strCPF: string) {\n strCPF = strCPF.replace(/[^\\d]+/g, '');\n if (strCPF === '00000000000') {\n return false;\n }\n\n // const r1 = modulo11(strCPF.substr(0, strCPF.length - 2))\n // const r2 = modulo11(strCPF.substr(0, strCPF.length - 2) + '' + r1)\n // const restos = [\n // r1, r2\n // ];\n\n const restoscustom = modulo11Custom(strCPF.substr(0, strCPF.length - 2), 2, 12);\n return restoscustom\n}\n\nexport function create_cartaocredito(number: string) {\n\n // if (number.length > 18) { alert(\"Erro. A rotina não abrange cartões\\ncom mais de 18 dígitos (fora o DV).\\nIntroduza 18 dígitos, no máximo.\"); }\n\n number = \"00000000000000000\" + number;\n number = number.slice(number.length - 18);\n\n let b1 = parseInt(number.slice(17));\n let b2 = parseInt(number.slice(16, 17));\n let b3 = parseInt(number.slice(15, 16));\n let b4 = parseInt(number.slice(14, 15));\n let b5 = parseInt(number.slice(13, 14));\n let b6 = parseInt(number.slice(12, 13));\n let b7 = parseInt(number.slice(11, 12));\n let b8 = parseInt(number.slice(10, 11));\n let b9 = parseInt(number.slice(9, 10));\n let b10 = parseInt(number.slice(8, 9));\n let b11 = parseInt(number.slice(7, 8));\n let b12 = parseInt(number.slice(6, 7));\n let b13 = parseInt(number.slice(5, 6));\n let b14 = parseInt(number.slice(4, 5));\n let b15 = parseInt(number.slice(3, 4));\n let b16 = parseInt(number.slice(2, 3));\n let b17 = parseInt(number.slice(1, 2));\n let b18 = parseInt(number.slice(0, 1));\n\n\n let ci17 = b1 * 2; if (ci17 > 9) { ci17 = ci17 - 9; }\n let ci1516 = b3 * 2; if (ci1516 > 9) { ci1516 = ci1516 - 9; }\n let ci1314 = b5 * 2; if (ci1314 > 9) { ci1314 = ci1314 - 9; }\n let ci1112 = b7 * 2; if (ci1112 > 9) { ci1112 = ci1112 - 9; }\n let ci910 = b9 * 2; if (ci910 > 9) { ci910 = ci910 - 9; }\n let ci78 = b11 * 2; if (ci78 > 9) { ci78 = ci78 - 9; }\n let ci56 = b13 * 2; if (ci56 > 9) { ci56 = ci56 - 9; }\n let ci34 = b15 * 2; if (ci34 > 9) { ci34 = ci34 - 9; }\n let ci12 = b17 * 2; if (ci12 > 9) { ci12 = ci12 - 9; }\n let ci1617 = b2;\n let ci1415 = b4;\n let ci1213 = b6;\n let ci1011 = b8;\n let ci89 = b10;\n let ci67 = b12;\n let ci45 = b14;\n let ci23 = b16;\n let ci01 = b18;\n\n let ccredDig = (ci1617 + ci1415 + ci1213 + ci1011 + ci89 + ci67 + ci45 + ci23 + ci01 + ci17 + ci1516 + ci1314 + ci1112 + ci910 + ci78 + ci56 + ci34 + ci12) % 10;\n ccredDig = 10 - ccredDig; if (ccredDig == 10) { ccredDig = 0; }\n\n return ccredDig;\n}\n\nexport function create_ect(number: string) {\n number = getAllDigits(number);\n number = \"0000000\" + number;\n number = number.slice(number.length - 8);\n\n let b1 = parseInt(number.slice(7));\n let b2 = parseInt(number.slice(6, 7));\n let b3 = parseInt(number.slice(5, 6));\n let b4 = parseInt(number.slice(4, 5));\n let b5 = parseInt(number.slice(3, 4));\n let b6 = parseInt(number.slice(2, 3));\n let b7 = parseInt(number.slice(1, 2));\n let b8 = parseInt(number.slice(0, 1));\n\n let regEctDig = (b1 * 7 + b2 * 9 + b3 * 5 + b4 * 3 + b5 * 2 + b6 * 4 + b7 * 6 + b8 * 8) % 11;\n regEctDig = 11 - regEctDig;\n if (regEctDig == 11) { regEctDig = 5; }\n if (regEctDig == 10) { regEctDig = 0; }\n return regEctDig;\n}\n\nexport function create_pispasep(number: string) {\n\n number = getAllDigits(number);\n let nis = fillString(number, 11, '0');\n\n let d;\n let p = 2, c = 9;\n for (d = 0; c >= 0; c--, (p < 9) ? p++ : p = 2) {\n d += parseInt(nis[c]) * p;\n }\n\n const digit = (((10 * d) % 11) % 10);\n return digit;\n}\n\nexport function create_renavam(renavam: string) {\n let dig1 = 0;\n while (renavam.length < 11) {\n renavam = '0' + renavam;\n }\n\n dig1 = (renavam.charCodeAt(0) - 48) * 3 + (renavam.charCodeAt(1) - 48) * 2 + (renavam.charCodeAt(2) - 48) * 9 + (renavam.charCodeAt(3) - 48) * 8 +\n (renavam.charCodeAt(4) - 48) * 7 + (renavam.charCodeAt(5) - 48) * 6 + (renavam.charCodeAt(6) - 48) * 5 +\n (renavam.charCodeAt(7) - 48) * 4 + (renavam.charCodeAt(8) - 48) * 3 + (renavam.charCodeAt(9) - 48) * 2;\n dig1 = dig1 * 10;\n let resto = (dig1 % 11);\n if (resto === 10) {\n return 0;\n } else {\n return resto;\n }\n}\n\n\n\n/**\n * \n * Font: http://ghiorzi.org/index.htm\n * @param number \n */\nexport function create_processo(number: string) {\n number = getAllDigits(number);\n number = \"00000000000000000\" + number;\n number = number.slice(number.length - 18);\n\n let b1 = parseInt(number.slice(0, 1)) * 10000000000;\n let b2 = parseInt(number.slice(1, 2)) * 1000000000;\n let b3 = parseInt(number.slice(2, 3)) * 100000000;\n let b4 = parseInt(number.slice(3, 4)) * 10000000;\n let b5 = parseInt(number.slice(4, 5)) * 1000000;\n let b6 = parseInt(number.slice(5, 6)) * 100000;\n let b7 = parseInt(number.slice(6, 7)) * 10000;\n let b8 = parseInt(number.slice(7, 8)) * 1000;\n let b9 = parseInt(number.slice(8, 9)) * 100;\n let b10 = parseInt(number.slice(9, 10)) * 10;\n let b11 = parseInt(number.slice(10, 11));\n\n const proc1a11 = b1 + b2 + b3 + b4 + b5 + b6 + b7 + b8 + b9 + b10 + b11;\n const resto1 = proc1a11 % 97;\n\n let b12 = parseInt(number.slice(11, 12)) * 1000000;\n let b13 = parseInt(number.slice(12, 13)) * 100000;\n let b14 = parseInt(number.slice(13, 14)) * 10000;\n let b15 = parseInt(number.slice(14, 15)) * 1000;\n let b16 = parseInt(number.slice(15, 16)) * 100;\n let b17 = parseInt(number.slice(16, 17)) * 10;\n let b18 = parseInt(number.slice(17));\n\n const proc12a18 = b12 + b13 + b14 + b15 + b16 + b17 + b18;\n const resto2 = (resto1 * 10000000 * 100 + proc12a18 * 100) % 97;\n\n let procJudDV: any = 98 - resto2;\n\n if (procJudDV < 10) {\n procJudDV = \"0\" + procJudDV;\n }\n\n let procJudCompl = b1 / 10000 + b2 / 10000 + b3 / 10000 + b4 / 10000 + b5 / 10000 + b6 / 10000 + b7 / 10000 + \"-\" + procJudDV + \".\" + b8 / 1000 + b9 / 100 + b10 / 10 + b11 + \".\" + b12 / 1000000 + \".\" + b13 / 100000 + b14 / 10000 + \".\" + b15 / 1000 + b16 / 100 + b17 / 10 + b18;\n\n procJudCompl = \"000000\" + procJudCompl;\n const result = procJudCompl.slice(procJudCompl.length - 25);\n return result;\n}\n\n\nexport function create_titulo_atual(titulo: string) {\n const tit = titulo;\n let dig1 = 0;\n let dig2 = 0;\n const tam = tit.length;\n const estado = tit.substr(tam - 4, 2);\n titulo = tit.substr(0, tam - 2);\n titulo = '000000000000' + titulo;\n titulo = titulo.substr(titulo.length - 11, titulo.length - 1);\n const exce = (estado === '01') || (estado === '02');\n dig1 = (titulo.charCodeAt(0) - 48) * 2 + (titulo.charCodeAt(1) - 48) * 9 + (titulo.charCodeAt(2) - 48) * 8 +\n (titulo.charCodeAt(3) - 48) * 7 + (titulo.charCodeAt(4) - 48) * 6 + (titulo.charCodeAt(5) - 48) * 5 +\n (titulo.charCodeAt(6) - 48) * 4 + (titulo.charCodeAt(7) - 48) * 3 + (titulo.charCodeAt(8) - 48) * 2;\n let resto = (dig1 % 11);\n if (resto === 0) {\n if (exce) {\n dig1 = 1;\n } else {\n dig1 = 0;\n }\n } else {\n if (resto === 1) {\n dig1 = 0;\n } else {\n dig1 = 11 - resto;\n }\n }\n dig2 = (titulo.charCodeAt(9) - 48) * 4 + (titulo.charCodeAt(10) - 48) * 3 + dig1 * 2;\n resto = (dig2 % 11);\n if (resto === 0) {\n if (exce) {\n dig2 = 1;\n } else {\n dig2 = 0;\n }\n } else {\n if (resto === 1) {\n dig2 = 0;\n } else {\n dig2 = 11 - resto;\n }\n }\n return dig1.toString() + dig2.toString();\n}\n\nexport function create_titulo(titNum: string) {\n titNum = getAllDigits(titNum);\n\n if (titNum.length > 11) {\n titNum = titNum.substr(0, 11);\n }\n\n titNum = \"00000000\" + titNum;\n titNum = titNum.slice(titNum.length - 11);\n\n let a1 = parseInt(titNum.slice(10));\n let a2 = parseInt(titNum.slice(9, 10));\n let a3 = parseInt(titNum.slice(8, 9));\n let a4 = parseInt(titNum.slice(7, 8));\n let a5 = parseInt(titNum.slice(6, 7));\n let a6 = parseInt(titNum.slice(5, 6));\n let a7 = parseInt(titNum.slice(4, 5));\n let a8 = parseInt(titNum.slice(3, 4));\n let a9 = parseInt(titNum.slice(2, 3));\n let a10 = parseInt(titNum.slice(1, 2));\n let a11 = parseInt(titNum.slice(0, 1));\n\n if (a2 * 10 + a1 == 0 || a2 * 10 + a1 > 28) {\n throw new Error(\"Esse nº é suspeito, porque a identificação da \\nUF (últimos 2 dígitos) deve estar entre 01 e 28.\");\n }\n\n let titExcecao1 = 0;\n let titExcecao2 = 0;\n\n let titPriDig = (a3 * 9 + a4 * 8 + a5 * 7 + a6 * 6 + a7 * 5 + a8 * 4 + a9 * 3 + a10 * 2 + a11 * 9) % 11;\n if (titPriDig == 0) { titExcecao1 = 1; }\n if (titPriDig == 10) { titPriDig = 0; }\n if ((a2 * 10 + a1 == 1 || a2 * 10 + a1 == 2) && (titExcecao1 == 1)) { titPriDig = 1; }\n\n let titSegDig = (titPriDig * 9 + a1 * 8 + a2 * 7) % 11;\n if (titSegDig == 0) { titExcecao2 = 1; }\n if (titSegDig == 10) { titSegDig = 0; }\n if ((a2 * 10 + a1 == 1 || a2 * 10 + a1 == 2) && (titExcecao2 == 1)) { titSegDig = 1; }\n\n let titDV: any = titPriDig * 10 + titSegDig;\n if (titDV == 0) { titDV = \"00\"; }\n if (titDV > 0 && titDV < 10) { titDV = \"0\" + titDV; }\n\n return titDV.toString();\n}","import { BigObject } from './interfaces';\n\nexport function rg_sp(number: string) {\n // if(number.length>8){alert(\"Erro. Não existe RG SP\\ncom mais de 8 dígitos.\");}\n\n number = \"0000000\" + number;\n number = number.slice(number.length - 8);\n\n let b1 = parseInt(number.slice(7));\n let b2 = parseInt(number.slice(6, 7));\n let b3 = parseInt(number.slice(5, 6));\n let b4 = parseInt(number.slice(4, 5));\n let b5 = parseInt(number.slice(3, 4));\n let b6 = parseInt(number.slice(2, 3));\n let b7 = parseInt(number.slice(1, 2));\n let b8 = parseInt(number.slice(0, 1));\n\n let cispDig: any = (b1 * 2 + b2 * 3 + b3 * 4 + b4 * 5 + b5 * 6 + b6 * 7 + b7 * 8 + b8 * 9) % 11;\n if (cispDig == 10) {\n cispDig = \"X\";\n }\n\n return cispDig;\n}\n\nexport function rg_rj(number: string) {\n\n\n // if(number.length>8){alert(\"Erro. Não existe RG-RJ/MaSP-MG\\ncom mais de 8 dígitos.\");}\n\n number = \"0000000\" + number;\n number = number.slice(number.length - 8);\n\n let b1 = parseInt(number.slice(7));\n let b2 = parseInt(number.slice(6, 7));\n let b3 = parseInt(number.slice(5, 6));\n let b4 = parseInt(number.slice(4, 5));\n let b5 = parseInt(number.slice(3, 4));\n let b6 = parseInt(number.slice(2, 3));\n let b7 = parseInt(number.slice(1, 2));\n let b8 = parseInt(number.slice(0, 1));\n\n let ci7 = b1 * 2; if (ci7 > 9) { ci7 = ci7 - 9; }\n let ci56 = b3 * 2; if (ci56 > 9) { ci56 = ci56 - 9; }\n let ci34 = b5 * 2; if (ci34 > 9) { ci34 = ci34 - 9; }\n let ci12 = b7 * 2; if (ci12 > 9) { ci12 = ci12 - 9; }\n let ci67 = b2;\n let ci45 = b4;\n let ci23 = b6;\n let ci01 = b8;\n\n let cirjDig = (ci7 + ci56 + ci34 + ci12 + ci67 + ci45 + ci23 + ci01) % 10;\n cirjDig = 10 - cirjDig; if (cirjDig == 10) { cirjDig = 0; }\n\n return cirjDig;\n}\n\nconst RG: BigObject<Function> = {\n sp: rg_sp,\n rj: rg_rj\n}\n\nexport default RG;\n","import { BigObject, MaskType } from './interfaces';\n\nexport const IPTUMASKS: BigObject<BigObject<MaskType>> = {\n 'minas-gerais': {\n 'belo-horizonte': {\n text: '000.000.000.000.0', //123.456.789.012.3\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/]\n },\n 'contagem': {\n text: '20.040.040-1',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numbers: any = userInput.match(/\\d/g);\n let numberLength = 0;\n if (numbers) {\n numberLength = numbers.join('').length;\n }\n\n if (!userInput || numberLength > 9) {\n return [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n } else {\n return [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/];\n }\n }\n }\n },\n 'sao-paulo': {\n 'sao-paulo': {\n text: '00000000000-0',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n }\n },\n 'parana': {\n 'curitiba': {\n text: '00000000000-0',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n }\n }\n};\n","import { getAllDigits, makeGenericFaker } from './utils';\nimport { IPTUMASKS } from './iptu_mask';\nimport { BigObject } from './interfaces';\n\nexport function create_iptu_ctba(number: string) {\n number = getAllDigits(number);\n let a1 = parseInt(number.slice(10));\n let a2 = parseInt(number.slice(9, 10));\n let a3 = parseInt(number.slice(8, 9));\n let a4 = parseInt(number.slice(7, 8));\n let a5 = parseInt(number.slice(6, 7));\n let a6 = parseInt(number.slice(5, 6));\n let a7 = parseInt(number.slice(4, 5));\n let a8 = parseInt(number.slice(3, 4));\n let a9 = parseInt(number.slice(2, 3));\n let a10 = parseInt(number.slice(1, 2));\n let a11 = parseInt(number.slice(0, 1));\n\n let iptuctbaDV = 10 - ((a1 * 2 + a2 * 3 + a3 * 4 + a4 * 7 + a5 * 8 + a6 * 9 + a7 * 2 + a8 * 3 + a9 * 4 + a10 * 7 + a11 * 8) % 10);\n if (iptuctbaDV == 10) { iptuctbaDV = 0; }\n return iptuctbaDV;\n}\n\nexport function create_iptu_sp(number: string) {\n let a1 = parseInt(number.slice(9));\n let a2 = parseInt(number.slice(8, 9));\n let a3 = parseInt(number.slice(7, 8));\n let a4 = parseInt(number.slice(6, 7));\n let a5 = parseInt(number.slice(5, 6));\n let a6 = parseInt(number.slice(4, 5));\n let a7 = parseInt(number.slice(3, 4));\n let a8 = parseInt(number.slice(2, 3));\n let a9 = parseInt(number.slice(1, 2));\n let a10 = parseInt(number.slice(0, 1));\n\n let iptuspDV = (a1 * 9 + a2 * 8 + a3 * 7 + a4 * 6 + a5 * 5 + a6 * 4 + a7 * 3 + a8 * 2 + a9 + a10 * 10) % 11;\n if (iptuspDV == 10) { iptuspDV = 1; }\n return iptuspDV;\n}\n\n\nexport const faker_iptu = (estado: string | number, cidade: string | number) => {\n if (!IPTUMASKS[estado] || !IPTUMASKS[estado][cidade]) {\n return;\n }\n let iptu = makeGenericFaker(IPTUMASKS[estado][cidade])();\n if (IPTUCREATE[estado] && IPTUCREATE[estado][cidade]) {\n const dv = IPTUCREATE[estado][cidade](iptu);\n const values = iptu.split('');\n values[values.length - 1] = dv;\n iptu = values.join('');\n }\n return iptu;\n}\n\nexport const IPTUCREATE: BigObject<BigObject<Function>> = {\n 'sao-paulo': {\n 'sao-paulo': create_iptu_sp,\n },\n 'parana': {\n 'curitiba': create_iptu_ctba\n }\n}","import { getAllDigits } from './utils';\nimport { IPTUCREATE } from './iptu_create';\nimport { BigObject } from './interfaces';\n\nconst validateRemoveDigito = (number: string | any[], max: number) => {\n number = getAllDigits(number.toString());\n if (number.length > max) {\n return false;\n } else if (number.length === max) {\n number = number.slice(0, -1)\n }\n return number;\n}\n\nexport function validate_iptu_ctba(value: string | any[]) {\n let number = validateRemoveDigito(value, 12);\n if (!number) {\n return false;\n }\n\n const dv = IPTUCREATE['parana']['curitiba'](number);\n return parseInt(value[value.length - 1]) === dv;\n}\n\n/**\n * Índice Cadastral, ou inscrição imobiliária, é o número de identificação do imóvel no cadastro da Prefeitura de Contagem. \n * O índice é composto por 12 (doze) ou 13 (treze) números, sendo: 2 (dois) para a zona fiscal; \n * 3 (três) ou 4 (quatro) para a quadra fiscal; 4 (quatro) para o lote fiscal; e 3 (três) para a unidade.\n */\nexport function validate_iptu_contagem(number: any) {\n number = validateRemoveDigito(number, 12);\n if (!number) {\n return false;\n }\n return true;\n}\n\nexport function validate_iptu_sp(value: string | any[]) {\n let number = validateRemoveDigito(value, 12);\n if (!number) {\n return false;\n }\n const dv = IPTUCREATE['sao-paulo']['sao-paulo'](number);\n return parseInt(value[value.length - 1]) === dv;\n}\n\n// export function validate_iptu(iptu: string) {\n// let iptuClean = iptu.replace(/\\./g, '');\n// iptuClean = iptuClean.replace(/-/g, '');\n// const exp = /[a-z]{2}\\-\\d{2}\\.\\d{3}\\.\\d{3}/;\n// const expClean = /[a-z]{2}\\d{8}/;\n// const state = iptu.substr(0, 2).toUpperCase();\n\n// if (!exp.test(iptu) && !expClean.test(iptuClean) && !(state in CEPRange)) {\n// return false;\n// }\n// if (IPTU[state]) {\n// const validateState = IPTU[state];\n// return validateState(iptu);\n// }\n// return true;\n// }\n\nexport const IPTUVALIDATE: BigObject<BigObject<Function>> = {\n 'sao-paulo': {\n 'sao-paulo': validate_iptu_sp,\n },\n 'minas-gerais': {\n 'contagem': validate_iptu_contagem,\n },\n 'parana': {\n 'curitiba': validate_iptu_ctba\n }\n}","import { IPTUVALIDATE } from './iptu_validate';\nimport { IPTUMASKS } from './iptu_mask';\nimport { getAllDigits } from './utils';\nimport { IPTUCREATE } from './iptu_create';\n\nexport const create_iptu = (number: string, estado: string | number, cidade: string | number) => {\n if (!IPTUCREATE[estado] || !IPTUCREATE[estado][cidade]) {\n return true;\n }\n number = getAllDigits(number);\n return IPTUCREATE[estado][cidade](number);\n};\n\nexport const mask_iptu = (number: string, estado: string, cidade: string) => {\n if (!IPTUMASKS[estado] || !IPTUMASKS[estado][cidade]) {\n return number;\n }\n return IPTUMASKS[estado][cidade];\n};\nexport const validate_iptu = (number: string, estado: string | number, cidade: string | number) => {\n if (!IPTUVALIDATE[estado] || !IPTUVALIDATE[estado][cidade]) {\n return true;\n }\n number = getAllDigits(number);\n return IPTUVALIDATE[estado][cidade](number);\n};","import { getAllDigits, fillString, getAllWords } from './utils';\nimport { BigObject } from './interfaces';\nimport { validate_inscricaoestadual } from './inscricaoestadual';\nimport { validate_placa } from './placa';\nimport {\n create_cnpj, create_cpf,\n create_renavam, create_ect, create_processo, create_titulo_atual, create_cnh, create_certidao, create_aih, create_pispasep, create_cnhespelho, create_renachestadual, create_renachseguranca\n} from './create';\nimport RG from './rg';\nimport { validate_iptu } from './iptu';\nimport { ESTADOS_SIGLA } from './estados';\n\n\nexport function validate_aih(aih: string) {\n const aihClean = aih.replace(/[^\\d]+/g, '');\n const dvOriginal = aihClean.substr(-1);\n const dv = create_aih(aihClean);\n return dvOriginal === dv;\n}\n\nexport function validate_celular(cel: any) {\n let celClean = cel.replace(/[^\\d]+/g, '');\n celClean = celClean.replace(/_/g, '');\n if (celClean.length !== 11) {\n return false;\n }\n if (celClean[0] == 0 || celClean[2] < 5) {\n return false;\n }\n return true;\n}\n\nexport const CEPRange: BigObject<RegExp> = {\n 'SP': /^([1][0-9]{3}|[01][0-9]{4})[0-9]{3}$/g,\n 'RJ': /^[2][0-8][0-9]{3}[0-9]{3}$/g,\n 'MS': /^[7][9][0-9]{3}[0-9]{3}$/g,\n 'MG': /^[3][0-9]{4}[0-9]{3}$/g,\n 'MT': /^[7][8][8][0-9]{2}[0-9]{3}$/g,\n 'AC': /^[6][9]{2}[0-9]{2}[0-9]{3}$/g,\n 'AL': /^[5][7][0-9]{3}[0-9]{3}$/g,\n 'AM': /^[6][9][0-8][0-9]{2}[0-9]{3}$/g,\n 'AP': /^[6][89][9][0-9]{2}[0-9]{3}$/g,\n 'BA': /^[4][0-8][0-9]{3}[0-9]{3}$/g,\n 'CE': /^[6][0-3][0-9]{3}[0-9]{3}$/g,\n 'DF': /^[7][0-3][0-6][0-9]{2}[0-9]{3}$/g,\n 'ES': /^[2][9][0-9]{3}[0-9]{3}$/g,\n 'GO': /^[7][3-6][7-9][0-9]{2}[0-9]{3}$/g,\n 'MA': /^[6][5][0-9]{3}[0-9]{3}$/g,\n 'PA': /^[6][6-8][0-8][0-9]{2}[0-9]{3}$/g,\n 'PB': /^[5][8][0-9]{3}[0-9]{3}$/g,\n 'PE': /^[5][0-6][0-9]{2}[0-9]{3}$/g,\n 'PI': /^[6][4][0-9]{3}[0-9]{3}$/g,\n 'PR': /^[8][0-7][0-9]{3}[0-9]{3}$/g,\n 'RN': /^[5][9][0-9]{3}[0-9]{3}$/g,\n 'RO': /^[7][8][9][0-9]{2}[0-9]{3}$/g,\n 'RR': /^[6][9][3][0-9]{2}[0-9]{3}$/g,\n 'RS': /^[9][0-9]{4}[0-9]{3}$/g,\n 'SC': /^[8][89][0-9]{3}[0-9]{3}$/g,\n 'SE': /^[4][9][0-9]{3}[0-9]{3}$/g,\n 'TO': /^[7][7][0-9]{3}[0-9]{3}$/g,\n}\n\nexport function validate_cep(cep: string) {\n const cepClean = cep.replace(/[^\\d]+/g, '');\n const exp = /\\d{2}\\.\\d{3}\\-\\d{3}/;\n if (!exp.test(cep) && cepClean.length !== 8) {\n return false;\n }\n return true;\n}\n\n\nexport function cep_ranges(cep: string | number) {\n cep = (cep.toString()).replace(/[^\\d]+/g, '');\n cep = parseInt(cep, 10);\n const cepString: string = cep.toString();\n let found: any;\n for (let estado in CEPRange) {\n const v = CEPRange[estado];\n const r = new RegExp(v).test(cepString);\n if (r) {\n found = r;\n return true;\n }\n }\n\n if (!found) {\n return false;\n }\n return true;\n}\n\n\n\n\nexport function validate_certidao(value: string) {\n let certidao = getAllDigits(value);\n\n const format = /[0-9]{32}/;\n if (!format.test(certidao)) {\n return false;\n }\n\n let dvOriginal = certidao.substr(-2);\n const dv = create_certidao(certidao);\n\n return dv === dvOriginal;\n}\n\n\n/**\n * \n * @param chassi \n */\nexport function validate_chassi(chassi: string) {\n\n // 1 - Possuir o número \"0\" (ZERO) como 1º dígito.\n const zeroNoPrimeiroDigito = /^0/;\n if (zeroNoPrimeiroDigito.test(chassi)) {\n return false;\n }\n\n // 2 - Possuir espaço no chassi\n chassi = getAllWords(chassi); // espacoNoChassi\n\n // 3 - Se, a partir do 4º dígito, houver uma repetição consecutiva, por mais de seis vezes, do mesmo dígito \n // (alfabético ou numérico). Exemplos: 9BW11111119452687 e 9BWZZZ5268AAAAAAA.\n const repeticaoMaisDe6Vezes = /^.{4,}([0-9A-Z])\\1{5,}/\n if (repeticaoMaisDe6Vezes.test(chassi)) {\n return false;\n }\n\n // 4 - Apresente os caracteres \"i\", \"I\", \"o\", \"O\", \"q\", \"Q\".\n const caracteresiIoOqQ = /[iIoOqQ]/;\n if (caracteresiIoOqQ.test(chassi)) {\n return false;\n }\n\n // 5 - Os quatro últimos caracteres devem ser obrigatoriamente numéricos\n const ultimos4Numericos = /[0-9]{4}$/;\n if (!ultimos4Numericos.test(chassi)) {\n return false;\n }\n\n // 6 - Se possuir número de dígitos diferente de 17 (alfanuméricos). \n if (chassi.length > 17) {\n return false;\n }\n\n return true;\n}\n\nfunction validate_cnae(number: any) {\n if (!number) return true;\n return false\n}\n\n/**\n * \n * II - Número do Espelho da CNH - segundo número de identificação nacional, \n * que será formado por 9 (nove) caracteres mais 1 (um) dígito verificador de segurança, \n * autorizado e controlado pelo DENATRAN, e identificará cada espelho de CNH expedida.\n * https://www.gov.br/infraestrutura/pt-br/assuntos/transito/conteudo-denatran/resolucoes-contran\n * https://www.gov.br/infraestrutura/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao5112014.pdf\n * 598: https://www.gov.br/infraestrutura/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao59820162.pdf\n * @param value \n */\nexport function validate_cnhespelho(value: string) {\n value = value.replace(/[^\\d]/g, '')\n if (value.length !== 10) {\n return false\n }\n\n let check = create_cnhespelho(value)\n if (check === '0' || check === '1') check = '0'\n return value.substr(-1) == check\n}\n\n/**\n * \n * III – Número do formulário RENACH - número de identificação\n* estadual, documento de coleta de dados do candidato/condutor gerado a cada serviço,\n* composto, obrigatoriamente, por 11 (onze) caracteres, sendo as duas primeiras\n* posições formadas pela sigla da Unidade de Federação expedidora, facultada a\n* utilização da última posição como dígito verificador de segurança.\n* a) O número do formulário RENACH identificará a Unidade da\n* Federação onde o condutor foi habilitado ou realizou alterações de dados no seu\n* cadastro pela última vez.\n* b) O Formulário RENACH que dá origem às informações na\n* BINCO e autorização para a impressão da CNH deverá ficar arquivado em seg\n* 598 - https://www.gov.br/infraestrutura/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao59820162.pdf\n* 718 - https://www.gov.br/infraestrutura/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao7182017.pdf\n* @param value \n */\nexport function validate_renachestadual(value: string) {\n const state = value.substr(0, 2).toLowerCase()\n if (!ESTADOS_SIGLA.includes(state)) {\n return false\n }\n\n let digits = value.substr(2)\n digits = digits.replace(/[^\\d]/g, '');\n if (digits.length !== 9) {\n return false;\n }\n let check = create_renachestadual(value)\n if (check === '0' || check === '1') check = '0'\n return value.substr(-1) == check;\n}\n\nexport function validate_renachseguranca(value: string) {\n value = value.replace(/[^\\d]/g, '');\n\n if (value.length !== 11) {\n return false;\n }\n\n let check = create_renachseguranca(value)\n return value.substr(-1) == check;\n}\n\n/**\n * BINCO\n * I – o primeiro número de identificação nacional – Registro Nacional, \n * será gerado pelo sistema informatizado da Base Índice Nacional de Condutores – \n * BINCO, composto de 9 (nove) caracteres mais 2 (dois) dígitos verificadores de \n * segurança, sendo único para cada condutor e o acompanhará durante toda a \n * sua existência como condutor, não sendo permitida a sua reutilização para \n * outro condutor.\n * @param value \n * @returns \n */\nexport function validate_cnh(value: string) {\n value = value.toString().replace(/[^\\d]/g, '');\n if (value.length !== 11) {\n return false;\n }\n let check = create_cnh(value);\n return value.substr(-2) == check;\n}\n\nexport function validate_cnpj(cnpj: any) {\n // Valida se tem apenas número, - ou .\n let precisaFicarVazio = cnpj.replace(/^[0-9./-]*$/gm, '')\n if (precisaFicarVazio != '')\n return false\n\n cnpj = cnpj.replace(/[^\\d]+/g, '');\n let tamanho = cnpj.length - 2\n const digitos = cnpj.substring(tamanho);\n const resultados = create_cnpj(cnpj);\n if (!resultados ||\n resultados[0] !== parseInt(digitos.charAt(0), 10) ||\n resultados[1] !== parseInt(digitos.charAt(1), 10)\n ) {\n return false\n }\n\n return true;\n}\n\nfunction validate_contabanco(number: any) {\n if (!number) return false\n return true;\n}\n\n/**\n * Referencia: http://www.receita.fazenda.gov.br/aplicacoes/atcta/funcoes.js\n * @param strCPF \n * @returns \n */\nexport function validate_cpf(strCPF: any) {\n // Valida se tem apenas número, - ou .\n let precisaFicarVazio = strCPF.replace(/^[0-9.-]*$/gm, '')\n if (precisaFicarVazio != '')\n return false\n\n strCPF = strCPF.replace(/[^\\d]+/g, '');\n if (strCPF.length !== 11) {\n return false;\n }\n\n //verifica se todos os numeros sao iguais\n const expIguais = /^(?!.*(\\d)\\1{10}).*$/;\n if (!strCPF.match(expIguais)) {\n return false;\n }\n\n // valida digito verificados\n const restos = create_cpf(strCPF);\n if (!restos || restos != strCPF.substr(-2)) {\n return false;\n }\n return true;\n}\n\nfunction validate_cpfcnpj(number: any) {\n return validate_cpf(number) || validate_cnpj(number);\n}\n\nexport function validate_cns(value: string) {\n const cns = getAllDigits(value);\n const definitivo = /[1-2][0-9]{10}00[0-1][0-9]/; // começam com 1 ou 2\n const provisorio = /[7-9][0-9]{14}/; // começam com 7,8 ou 9\n if (!definitivo.test(cns) && !provisorio.test(cns)) {\n return false;\n }\n\n let soma = 0;\n for (let i = 0; i < cns.length; i++) {\n soma += parseInt(cns[i]) * (15 - i);\n }\n\n return soma % 11 == 0;\n}\n\n\nexport function validate_cartaocredito(input: string | number) {\n let value: string;\n if (typeof input == 'string') {\n value = getAllDigits(input);\n } else {\n value = input.toString();\n }\n\n const number = value.slice(0, 16);\n const mes = parseInt(value.slice(16, 18));\n const ano = parseInt(value.slice(18, 20));\n const cvv = value.slice(20, 23);\n\n const d = new Date();\n const anoAtual = (d.getFullYear() - 2000);\n if (ano && ano < anoAtual) {\n return false;\n }\n if (mes && mes < d.getMonth() + 1 && ano === anoAtual) {\n return false;\n }\n\n if (cvv) {\n const validcvv = validate_cvv(cvv);\n if (validcvv.isValid === false) {\n return false;\n }\n }\n\n let found;\n Object.keys(creditCardValidator).forEach(key => {\n if (creditCardValidator[key].test(number)) {\n found = key;\n }\n });\n return !!found;\n\n}\n\nfunction validate_cvv(value: string | any[], maxLength: any = 3) {\n maxLength = maxLength instanceof Array ? maxLength : [maxLength];\n\n if (typeof value !== 'string') {\n return { isValid: false, isPotentiallyValid: false };\n }\n if (!/^\\d*$/.test(value)) {\n return { isValid: false, isPotentiallyValid: false };\n }\n\n var i = 0;\n const max = value.length;\n for (; i < maxLength.length; i++) {\n if (max === maxLength[i]) {\n return { isValid: true, isPotentiallyValid: true };\n }\n }\n\n if (value.length < Math.min.apply(null, maxLength)) {\n return { isValid: false, isPotentiallyValid: true };\n }\n\n var maximum = maxLength;\n var i = 0;\n\n for (; i < maxLength.length; i++) {\n maximum = maxLength[i] > maximum ? maxLength[i] : maximum;\n }\n\n if (value.length > maximum) {\n return { isValid: false, isPotentiallyValid: false };\n }\n\n return { isValid: true, isPotentiallyValid: true };\n}\n\n\n/**\n * A hash of valid CC abbreviations and regular expressions\n mc: Mastercard\n ec: Eurocard\n vi: Visa\n ax: American Express\n dc: Diners Club\n bl: Carte Blanch\n di: Discover\n jcb: JCB\n er: Enroute\n*/\nexport const creditCardValidator: BigObject<RegExp> = {\n 'mc': /5[1-5][0-9]{14}/,\n 'ec': /5[1-5][0-9]{14}/,\n 'vi': /4(?:[0-9]{12}|[0-9]{15})/,\n 'ax': /3[47][0-9]{13}/,\n 'dc': /3(?:0[0-5][0-9]{11}|[68][0-9]{12})/,\n 'bl': /3(?:0[0-5][0-9]{11}|[68][0-9]{12})/,\n 'di': /6011[0-9]{12}/,\n 'jcb': /(?:3[0-9]{15}|(2131|1800)[0-9]{11})/,\n 'er': /2(?:014|149)[0-9]{11}/\n};\n\n\nexport function validate_currency(currency: string | number) {\n if (typeof currency === 'number') {\n return true;\n }\n const regex = /^(R\\$|R\\$ )?(-)?(?!0(\\.)?00)\\d{1,3}((\\.)?\\d{3})*(,\\d\\d)?$/g;\n return regex.test(currency);\n}\n\n\nfunction validate_data(value: string | null) {\n if (!value) {\n return false;\n }\n const values = value.split('/');\n if (values.length !== 3) {\n return false;\n }\n const testData: Date = new Date(values[1] + '/' + values[0] + '/' + values[2])\n if (!testData.getTime()) {\n return false;\n }\n // if (parseInt(values[0]) > 31 || parseInt(values[1]) > 12 || parseInt(values[2]) < 1000) return false;\n return true;\n}\n\n\nfunction validate_date(value: string | null) {\n if (!value || value.length < 10) {\n return false;\n }\n const testData: Date = new Date(value)\n if (!testData.getTime()) {\n return false;\n }\n return true;\n}\n\nexport function validate_datetime(time: string | number, options: any = {}) {\n if (!time) {\n return false;\n }\n time = time.toString();\n const values = time.split(' ');\n if (validate_date(values[0]) && validate_time(values[1], options)) {\n return true;\n }\n return false;\n}\n\n\nexport function validate_datahora(time: string | number, options: any = {}) {\n if (!time) {\n return false;\n }\n time = time.toString();\n const values = time.split(' ');\n if (validate_data(values[0]) && validate_time(values[1], options)) {\n return true;\n }\n return false;\n}\n\nexport function validate_ect(number: string) {\n number = getAllDigits(number);\n if (number.length > 9) {\n return false\n }\n\n const nodigit = number.substr(0, number.length - 1);\n const dg = create_ect(nodigit);\n\n if (parseInt(number[number.length - 1]) === dg) {\n return true;\n }\n return false;\n}\n\nfunction validate_email(email: any) {\n var re = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n return re.test(String(email).toLowerCase())\n}\n\nfunction validate_endereco(number: any) {\n if (!number) return false\n return true\n}\n\nexport function validate_number(number: string) {\n if (number.split(',').length > 2) {\n return false\n }\n const regexDecimal = /^\\d+(?:\\.\\d{0,2})$/;\n const regex = /^[0-9]{0,10}[,]{1,1}[0-9]{0,4}/;\n const regexNumero = /^[0-9]{0,10}/;\n return regexDecimal.test(number) || regex.test(number) || regexNumero.test(number);\n}\n\n\nexport function validate_porcentagem(porcentagem: string) {\n porcentagem = porcentagem.split('%')[0];\n return validate_number(porcentagem);\n}\n\n\nexport function validate_processo(processo: any) {\n let processoClean = processo.replace(/\\./g, '');\n processoClean = processoClean.replace(/\\-/g, '');\n // const exp = /\\d{7}\\-\\d{2}\\.\\d{4}\\.\\w{3}\\.\\d{4}/;\n // const expClean = /\\d{13}\\w{3}\\d{4}/;\n // if (!exp.test(processo) && !expClean.test(processoClean)) {\n // return false;\n // }\n let processoValidado = create_processo(processo);\n if (parseInt(processoClean) !== parseInt(getAllDigits(processoValidado))) {\n return false;\n }\n return true;\n}\n\n\nexport function validate_pispasep(number: string) {\n number = getAllDigits(number);\n let nis = fillString(number, 11, '0');\n const regex = /\\d{11}/; // /^\\d{3}\\.\\d{5}\\.\\d{2}\\-\\d{1}$/;\n if (!regex.test(nis)) {\n return false;\n }\n\n const digit = create_pispasep(number);\n return nis[10].toString() == digit.toString();\n}\n\n\nexport function validate_renavam(renavam: any) {\n let renavamClean = renavam.replace(/\\./g, '');\n renavamClean = renavamClean.replace(/\\-/g, '');\n const dv = create_renavam(renavam);\n const tam = renavam.length;\n const digitos = renavam.substr(tam - 1, 1);\n if (digitos.charCodeAt(0) - 48 === dv) {\n return true;\n } else {\n return false;\n }\n}\n\n\n\nexport function validate_rg(rg: string) {\n let rgClean = rg.replace(/\\./g, '');\n rgClean = rgClean.replace(/-/g, '');\n const exp = /[a-z]{2}\\-\\d{2}\\.\\d{3}\\.\\d{3}/;\n const expClean = /[a-z]{2}\\d{8}/;\n const state = rg.substr(0, 2).toUpperCase();\n\n if (!exp.test(rg) && !expClean.test(rgClean) && !(state in CEPRange)) {\n return false;\n }\n const validateState = RG[state];\n if (validateState) {\n return validateState(rg);\n }\n return true;\n}\n\nfunction validate_senha(value: string, options: any = {}) {\n let finalregex = '^';\n // ^\tThe password string will start this way\n // (?=.*[a-z])\tThe string must contain at least 1 lowercase alphabetical character\n if (options.lowercase !== false) {\n finalregex = finalregex + '(?=.*[a-z])';\n }\n // (?=.*[A-Z])\tThe string must contain at least 1 uppercase alphabetical character\n if (options.uppercase !== false) {\n finalregex = finalregex + '(?=.*[A-Z])';\n }\n // (?=.*[0-9])\tThe string must contain at least 1 numeric character\n if (options.numeric !== false) {\n finalregex = finalregex + '(?=.*[0-9])';\n }\n // (?=.*[!@#\\$%\\^&\\*])\tThe string must contain at least one special character, but we are escaping reserved RegEx characters to avoid conflict\n if (options.numeric !== false) {\n finalregex = finalregex + '(?=.*[!@#\\\\$%\\\\^&\\\\*])';\n }\n // (?=.{8,})\tThe string must be eight characters or longer\n if (!options.size) {\n options.size = 8;\n }\n\n finalregex = finalregex + `(?=.{${options.size},})`;\n\n const regex = new RegExp(finalregex);\n return regex.test(value);\n}\n\n\nfunction validate_site(value: any) {\n var re = /(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&=]*)/g;\n return re.test(String(value).toLowerCase());\n}\n\nexport function validate_sped(sped: string) {\n if (!sped) return false\n return true\n}\n\nexport function validate_telefone(tel: any) {\n const telClean = tel.replace(/[^\\d]+/g, '');\n tel = tel.replace(/_/g, '');\n if (!(telClean.length === 10 || telClean.length === 11)) {\n return false;\n }\n if (telClean[0] == 0 || telClean[2] == 0) {\n return false;\n }\n return true;\n}\n\nexport function validate_time(time: string | number, options: any = {}) {\n const value = time.toString();\n if (options.diario) {\n const expression = /^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/;\n return expression.test(value);\n } else {\n const expression = /^([0-9]?[0-9]):([0-5][0-9])(:[0-5][0-9])?$/;\n return expression.test(value);\n }\n\n}\n\nexport function validate_titulo(titulo: any) {\n if (!titulo) {\n return false;\n }\n const tituloClean = titulo.replace(/\\./g, '');\n const exp = /\\d{4}\\.\\d{4}\\.\\d{4}/;\n const expClean = /\\d{4}\\d{4}\\d{4}/;\n if (!exp.test(tituloClean) && !expClean.test(tituloClean)) {\n return false;\n }\n\n const tam = tituloClean.length;\n\n let dig;\n try {\n dig = create_titulo_atual(tituloClean);\n // const noDv = tituloClean.substr(0, tam - 2);\n // dig = create_titulo(noDv);\n } catch (e) {\n return false;\n }\n\n const digitos = tituloClean.substr(tam - 2, 2);\n if (digitos === dig) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction validate_username(value: any) {\n var re = /^[a-z0-9_-]{3,16}$/igm;\n return re.test(String(value).toLowerCase());\n}\n\nexport const validateBr: BigObject<Function> = {\n aih: validate_aih,\n cartaocredito: validate_cartaocredito,\n celular: validate_celular,\n cep: validate_cep,\n certidao: validate_certidao,\n chassi: validate_chassi,\n cnae: validate_cnae,\n cnh: validate_cnh,\n cnhespelho: validate_cnhespelho,\n renachestadual: validate_renachestadual,\n renachseguranca: validate_renachseguranca,\n cnpj: validate_cnpj,\n cns: validate_cns,\n contabanco: validate_contabanco,\n cpf: validate_cpf,\n cpfcnpj: validate_cpfcnpj,\n currency: validate_currency,\n data: validate_data,\n date: validate_date,\n datetime: validate_datetime,\n datahora: validate_datahora,\n ect: validate_ect,\n email: validate_email,\n endereco: validate_endereco,\n inscricaoestadual: validate_inscricaoestadual,\n iptu: validate_iptu,\n number: validate_number,\n porcentagem: validate_porcentagem,\n pispasep: validate_pispasep,\n placa: validate_placa,\n processo: validate_processo,\n renavam: validate_renavam,\n rg: validate_rg,\n senha: validate_senha,\n site: validate_site,\n sped: validate_sped,\n telefone: validate_telefone,\n time: validate_time,\n titulo: validate_titulo,\n username: validate_username\n};\n","const dollarSign = \"$\";\nconst emptyString = \"\";\nconst comma = \",\";\nconst period = \".\";\nconst minus = \"-\";\nconst minusRegExp = /-/;\nconst nonDigitsRegExp = /\\D+/g;\nconst number = \"number\";\nconst digitRegExp = /\\d/;\nconst caretTrap = \"[]\";\n\nexport default function createNumberMask({\n prefix = dollarSign,\n suffix = emptyString,\n includeThousandsSeparator = true,\n thousandsSeparatorSymbol = comma,\n allowDecimal = false,\n decimalSymbol = period,\n decimalLimit = 2,\n requireDecimal = false,\n allowNegative = false,\n allowLeadingZeroes = false,\n integerLimit = null,\n} = {}) {\n const prefixLength = (prefix && prefix.length) || 0;\n const suffixLength = (suffix && suffix.length) || 0;\n const thousandsSeparatorSymbolLength =\n (thousandsSeparatorSymbol && thousandsSeparatorSymbol.length) || 0;\n\n function numberMask(rawValue = emptyString) {\n const rawValueLength = rawValue.length;\n\n if (\n rawValue === emptyString ||\n (rawValue[0] === prefix[0] && rawValueLength === 1)\n ) {\n return prefix\n .split(emptyString)\n .concat([\"\" + digitRegExp])\n .concat(suffix.split(emptyString));\n } else if (rawValue === decimalSymbol && allowDecimal) {\n return prefix\n .split(emptyString)\n .concat([\"0\", decimalSymbol, \"\" + digitRegExp])\n .concat(suffix.split(emptyString));\n }\n\n const isNegative = rawValue[0] === minus && allowNegative;\n //If negative remove \"-\" sign\n if (isNegative) {\n rawValue = rawValue.toString().substr(1);\n }\n\n const indexOfLastDecimal = rawValue.lastIndexOf(decimalSymbol);\n const hasDecimal = indexOfLastDecimal !== -1;\n\n let integer;\n let fraction;\n let mask;\n\n // remove the suffix\n if (rawValue.slice(suffixLength * -1) === suffix) {\n rawValue = rawValue.slice(0, suffixLength * -1);\n }\n\n if (hasDecimal && (allowDecimal || requireDecimal)) {\n integer = rawValue.slice(\n rawValue.slice(0, prefixLength) === prefix ? prefixLength : 0,\n indexOfLastDecimal\n );\n\n fraction = rawValue.slice(indexOfLastDecimal + 1, rawValueLength);\n fraction = convertToMask(fraction.replace(nonDigitsRegExp, emptyString));\n } else {\n if (rawValue.slice(0, prefixLength) === prefix) {\n integer = rawValue.slice(prefixLength);\n } else {\n integer = rawValue;\n }\n }\n\n if (integerLimit && typeof integerLimit === number) {\n const thousandsSeparatorRegex =\n thousandsSeparatorSymbol === \".\"\n ? \"[.]\"\n : `${thousandsSeparatorSymbol}`;\n const numberOfThousandSeparators = (\n integer.match(new RegExp(thousandsSeparatorRegex, \"g\")) || []\n ).length;\n\n integer = integer.slice(\n 0,\n integerLimit +\n numberOfThousandSeparators * thousandsSeparatorSymbolLength\n );\n }\n\n integer = integer.replace(nonDigitsRegExp, emptyString);\n\n if (!allowLeadingZeroes) {\n integer = integer.replace(/^0+(0$|[^0])/, \"$1\");\n }\n\n integer = includeThousandsSeparator\n ? addThousandsSeparator(integer, thousandsSeparatorSymbol)\n : integer;\n\n mask = convertToMask(integer);\n\n if ((hasDecimal && allowDecimal) || requireDecimal === true) {\n if (rawValue[indexOfLastDecimal - 1] !== decimalSymbol) {\n mask.push(caretTrap);\n }\n\n mask.push(decimalSymbol, caretTrap);\n\n if (fraction) {\n if (typeof decimalLimit === number) {\n fraction = fraction.slice(0, decimalLimit);\n }\n\n mask = mask.concat(fraction);\n }\n\n if (\n requireDecimal === true &&\n rawValue[indexOfLastDecimal - 1] === decimalSymbol\n ) {\n mask.push(digitRegExp);\n }\n }\n\n if (prefixLength > 0) {\n mask = prefix.split(emptyString).concat(\"\" + mask);\n }\n\n if (isNegative) {\n // If user is entering a negative number, add a mask placeholder spot to attract the caret to it.\n if (mask.length === prefixLength) {\n mask.push(digitRegExp);\n }\n\n mask = [minusRegExp].concat(new RegExp(\"\" + mask));\n }\n\n if (suffix.length > 0) {\n mask = mask.concat(suffix.split(emptyString));\n }\n\n return mask;\n }\n\n //numberMask.instanceOf = \"createNumberMask\";\n\n return numberMask;\n}\n\nfunction convertToMask(strNumber: string) {\n return strNumber\n .split(emptyString)\n .map((char: string) => (digitRegExp.test(char) ? digitRegExp : char));\n}\n\nfunction addThousandsSeparator(n: string, thousandsSeparatorSymbol: string) {\n return n.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparatorSymbol);\n}\n","import { isArray, processCaretTraps } from './utils';\nimport { BigObject, MaskType } from './interfaces';\nexport { MASKSIE } from './inscricaoestadual';\nimport createNumberMask from './createNumberMask';\nimport { mask_iptu } from './iptu';\nimport { MASKSIE } from './inscricaoestadual';\n\nconst maskNumber: any = {\n decimalLimit: 2,\n thousandsSeparatorSymbol: '.',\n decimalSymbol: ',',\n allowDecimal: true,\n integerLimit: 17,\n prefix: '',\n suffix: ''\n}\n\nexport const MASKS: BigObject<MaskType> = {\n aih: {\n text: '000000000000-0', // 351923414312-8\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n cartaocredito: {\n text: '0000 0000 0000 0000 00/00 000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, '0', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, '/', /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/]\n },\n celular: {\n text: '(00) 00000-0000',\n textMask: ['(', /[1-9]/, /\\d/, ')', ' ', /[5-9]/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/],\n },\n cep: {\n text: '00.000-000',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/]\n },\n // certidao Certidões de Nascimento, Casamento ou Óbito \n certidao: {\n text: '000000.00.00.0000.0.00000.000.0000000-00', // 104539.01.55.2013.1.00012.021.0000123-21\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, '.', /\\d/, /\\d/, '.',\n /\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '.',\n /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n chassi: {\n text: 'AAA AAAAAA AA AA0000', // 9BW ZZZ377 VT 004251\n textMask: [/[1-9]/, /\\w/, /\\w/, ' ', /\\w/, /\\w/, /\\w/, /\\w/, /\\w/, /\\w/, ' ', /\\w/, /\\w/, ' ', /\\w/, /\\w/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n cid: {\n textMask: false\n },\n cnae: {\n text: '0000-0/00', // 6821-8/01\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, '/', /\\d/, /\\d/]\n },\n cnh: {\n text: '000000000-00', // 123456789-1\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n renachseguranca: {\n text: '00000000000', // 51474546854\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n renachestadual: {\n text: 'AA000000000', // MG597812560\n textMask: [/[A-S]/, /[A-Z]/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n cnhespelho: {\n text: '0000000000', // 123456789-1\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n cnpj: {\n text: '00.000.000/0000-00',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n cns: {\n text: '000 0000 0000 00-00',\n textMask: [/[1|2|7|8|9]/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n contabanco: {\n text: '000 00000-0 00000-0',\n textMask: [/\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-',\n /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n cpf: {\n text: '000.000.000-00',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n cpfcnpj: {\n text: '00.000.000/0000-00',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numbers = userInput.match(/\\d/g);\n let numberLength = 0;\n if (numbers) {\n numberLength = numbers.join('').length;\n }\n if (!userInput || numberLength > 12) {\n return [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n } else {\n return [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n }\n }\n },\n currency: {\n text: '0.000,00',\n textMask: createNumberMask({\n ...maskNumber,\n prefix: 'R$ ',\n allowNegative: true\n })\n },\n data: {\n text: '00/00/0000',\n textMask: [/[0-3]/, /[0-9]/, '/', /[0-1]/, /[0-9]/, '/', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n date: {\n text: '00/00/0000',\n textMask: [/[0-1]/, /[0-9]/, '/', /[0-3]/, /[0-9]/, '/', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n datetime: {\n text: '00/00/0000 00:00',\n textMask: [/[0-1]/, /[0-9]/, '/', /[0-3]/, /[0-9]/, '/', /[0-2]/, /[0-9]/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, ':', /[0-5]/, /\\d/]\n },\n datahora: {\n text: '00/00/0000 00:00',\n textMask: [/[0-3]/, /[0-9]/, '/', /[0-1]/, /[0-9]/, '/', /[0-2]/, /[0-9]/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, ':', /[0-5]/, /\\d/]\n },\n ect: {\n text: '00000000-0',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n endereco: {\n text: '0000.0000.0000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, '.', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n iptu: {\n text: '0000.0000.0000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, '.', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n number: {\n text: '0.000,00',\n textMask: createNumberMask(maskNumber)\n },\n porcentagem: {\n text: '00,00%',\n textMask: createNumberMask({\n ...maskNumber,\n suffix: '%'\n })\n },\n pispasep: {\n text: '000.00000.00-0',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, '-', /\\d/]\n },\n placa: {\n text: 'AAA-0000',\n textMask: [/[A-S]/, /[A-Z]/, /[A-Z]/, '-', /\\d/, /\\d/, /\\d/, /\\d/]\n },\n processo: {\n text: '0000000-00.0000.AAA.0000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, '.', /[A-Za-z]/, /[A-Za-z]/, /[A-Za-z]/, '.', /\\d/, /\\d/, /\\d/, /\\d/]\n },\n renavam: {\n text: '0000000000-00',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numbers = userInput.match(/\\d/g);\n let numberLength = 0;\n if (numbers) {\n numberLength = numbers.join('').length;\n }\n if (!userInput || numberLength < 9) {\n return [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/];\n } else {\n return [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/];\n }\n }\n },\n rg: {\n text: 'AA-00.000.000',\n textMask: [/[A-Za-z]/, /[A-Za-z]/, '-', /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/]\n },\n sped: {\n text: '0000.0000.0000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, '.', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n telefone: {\n text: '(00) 00000-0000',\n textMask: ['(', /[1-9]/, /\\d/, ')', ' ', /[1-9]/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numbers = userInput.match(/\\d/g);\n let numberLength = 0;\n if (numbers) {\n numberLength = numbers.join('').length;\n }\n if (!userInput || numberLength > 10) {\n return ['(', /[1-9]/, /\\d/, ')', ' ', /[1-9]/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/];\n } else {\n return ['(', /[1-9]/, /\\d/, ')', ' ', /[1-9]/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/];\n }\n }\n },\n time: {\n text: '00:00',\n textMask: [/\\d/, /\\d/, ':', /[0-5]/, /\\d/]\n },\n titulo: {\n text: '0000.0000.0000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, '.', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n utils: {\n numberToString: (n: number) => {\n if (!n || typeof n === 'string') {\n return n;\n }\n return (n.toString()).replace('.', ',');\n },\n textMask: false\n }\n}\n\n\nconst makeGeneric = (key: string) => {\n return (value: string) => {\n if (!value) {\n return '';\n }\n let mask = MASKS[key].textMask\n let textMaskFunction = MASKS[key].textMaskFunction\n if (typeof textMaskFunction === 'function') {\n mask = textMaskFunction(value);\n }\n\n\n return conformToMask(\n value,\n mask,\n { guide: false }\n ).conformedValue;\n }\n}\n\nexport const maskBr = {\n aih: makeGeneric('aih'),\n celular: makeGeneric('celular'),\n cep: makeGeneric('cep'),\n certidao: makeGeneric('certidao'),\n chassi: makeGeneric('chassi'),\n cnae: makeGeneric('cnae'),\n cnh: makeGeneric('cnh'),\n renachseguranca: makeGeneric('renachseguranca'),\n renachestadual: makeGeneric('renachestadual'),\n cnhespelho: makeGeneric('cnhespelho'),\n cnpj: makeGeneric('cnpj'),\n cns: makeGeneric('cns'),\n contabanco: makeGeneric('contabanco'),\n cpf: makeGeneric('cpf'),\n cpfcnpj: makeGeneric('cpfcnpj'),\n cartaocredito: makeGeneric('cartaocredito'),\n currency: (currencyValueInput: string | number, decimalsFormat: number = 2) => {\n return formatNumber(MASKS['currency'], currencyValueInput, decimalsFormat);\n },\n data: makeGeneric('data'),\n date: makeGeneric('date'),\n datetime: makeGeneric('datetime'),\n datahora: makeGeneric('datahora'),\n ect: makeGeneric('ect'),\n endereco: makeGeneric('endereco'),\n inscricaoestadual: (inscricaoestadualValue: string, estado: string) => {\n const ie = MASKSIE;\n const ieState = ie[estado]\n\n if (!inscricaoestadualValue || !estado || !ieState ||\n !ieState.textMask) {\n return '';\n }\n\n let mask = ieState.textMask;\n let textMaskFunction = ieState.textMaskFunction\n if (typeof textMaskFunction === 'function') {\n mask = textMaskFunction(inscricaoestadualValue);\n }\n\n return conformToMask(\n inscricaoestadualValue,\n mask,\n { guide: false }\n ).conformedValue;\n },\n iptu: (iptuValue: string, estado: string, cidade: string) => {\n const mask = mask_iptu(iptuValue, estado, cidade);\n if (!mask || typeof mask === 'string') {\n return '';\n }\n return conformToMask(\n iptuValue,\n mask.textMask,\n { guide: false }\n ).conformedValue;\n },\n number: (numberValue: any, decimalsFormat: number = 2) => {\n return formatNumber(MASKS['number'], numberValue, decimalsFormat);\n },\n porcentagem: (porcentagemValue: string, decimalsFormat: number = 2) => {\n return formatNumber(MASKS['porcentagem'], porcentagemValue, decimalsFormat);\n },\n pispasep: makeGeneric('pispasep'),\n placa: makeGeneric('placa'),\n processo: makeGeneric('processo'),\n renavam: makeGeneric('renavam'),\n rg: makeGeneric('rg'),\n sped: makeGeneric('sped'),\n telefone: makeGeneric('telefone'),\n time: (value: string | Date) => {\n if (value instanceof Date) {\n value = value.toTimeString().split(' ')[0]\n }\n return makeGeneric('time')(value)\n },\n titulo: makeGeneric('titulo')\n};\n\n\n\n/**\n * FROM TEXT-MASK\n */\nexport const placeholderChar = '_'\nexport const strFunction = 'function'\n\nconst defaultPlaceholderChar = placeholderChar;\nconst emptyArray: any = []\nconst emptyString = ''\n\nexport function conformToMask(inputValue: String | Date = emptyString, mask = emptyArray, config: any = {}) {\n let rawValue = inputValue.toString();\n if (typeof inputValue === 'number') {\n rawValue = (<number>inputValue).toString();\n }\n if (inputValue instanceof Date) {\n rawValue = (<Date>inputValue).toLocaleString(\"pt-br\")\n }\n\n if (!isArray(mask)) {\n // If someone passes a function as the mask property, we should call the\n // function to get the mask array - Normally this is handled by the\n // `createTextMaskInputElement:update` function - this allows mask functions\n // to be used directly with `conformToMask`\n\n if (typeof mask === strFunction) {\n // call the mask function to get the mask array\n mask = mask(inputValue, config)\n\n // mask functions can setup caret traps to have some control over how the caret moves. We need to process\n // the mask for any caret traps. `processCaretTraps` will remove the caret traps from the mask\n mask = processCaretTraps(mask).maskWithoutCaretTraps\n } else {\n throw new Error(\n 'Text-mask:conformToMask; The mask property must be an array.'\n )\n }\n }\n\n // These configurations tell us how to conform the mask\n\n const guide = config.guide || true;\n const previousConformedValue = config.previousConformedValue || emptyString;\n const placeholder = convertMaskToPlaceholder(mask, placeholderChar);\n const currentCaretPosition = config.currentCaretPosition;\n const keepCharPositions = config.keepCharPositions;\n\n // The configs below indicate that the user wants the algorithm to work in *no guide* mode\n const suppressGuide = guide === false && previousConformedValue !== undefined\n\n // Calculate lengths once for performance\n const rawValueLength = rawValue.length\n const previousConformedValueLength = previousConformedValue.length\n const placeholderLength = placeholder.length\n const maskLength = mask.length\n\n // This tells us the number of edited characters and the direction in which they were edited (+/-)\n const editDistance = rawValueLength - previousConformedValueLength\n\n // In *no guide* mode, we need to know if the user is trying to add a character or not\n const isAddition = editDistance > 0\n\n // Tells us the index of the first change. For (438) 394-4938 to (38) 394-4938, that would be 1\n const indexOfFirstChange = currentCaretPosition + (isAddition ? -editDistance : 0)\n\n // We're also gonna need the index of last change, which we can derive as follows...\n const indexOfLastChange = indexOfFirstChange + Math.abs(editDistance)\n\n // If `conformToMask` is configured to keep character positions, that is, for mask 111, previous value\n // _2_ and raw value 3_2_, the new conformed value should be 32_, not 3_2 (default behavior). That's in the case of\n // addition. And in the case of deletion, previous value _23, raw value _3, the new conformed string should be\n // __3, not _3_ (default behavior)\n //\n // The next block of logic handles keeping character positions for the case of deletion. (Keeping\n // character positions for the case of addition is further down since it is handled differently.)\n // To do this, we want to compensate for all characters that were deleted\n if (keepCharPositions === true && !isAddition) {\n // We will be storing the new placeholder characters in this variable.\n let compensatingPlaceholderChars = emptyString\n\n // For every character that was deleted from a placeholder position, we add a placeholder char\n for (let i = indexOfFirstChange; i < indexOfLastChange; i++) {\n if (placeholder[i] === placeholderChar) {\n compensatingPlaceholderChars += placeholderChar\n }\n }\n\n // Now we trick our algorithm by modifying the raw value to make it contain additional placeholder characters\n // That way when the we start laying the characters again on the mask, it will keep the non-deleted characters\n // in their positions.\n rawValue = (\n rawValue.slice(0, indexOfFirstChange) +\n compensatingPlaceholderChars +\n rawValue.slice(indexOfFirstChange, rawValueLength)\n )\n }\n\n // Convert `rawValue` string to an array, and mark characters based on whether they are newly added or have\n // existed in the previous conformed value. Identifying new and old characters is needed for `conformToMask`\n // to work if it is configured to keep character positions.\n const rawValueArr = rawValue\n .split(emptyString)\n .map((char, i) => ({ char, isNew: i >= indexOfFirstChange && i < indexOfLastChange }))\n\n // The loop below removes masking characters from user input. For example, for mask\n // `00 (111)`, the placeholder would be `00 (___)`. If user input is `00 (234)`, the loop below\n // would remove all characters but `234` from the `rawValueArr`. The rest of the algorithm\n // then would lay `234` on top of the available placeholder positions in the mask.\n for (let i = rawValueLength - 1; i >= 0; i--) {\n const { char } = rawValueArr[i]\n\n if (char !== placeholderChar) {\n const shouldOffset = i >= indexOfFirstChange && previousConformedValueLength === maskLength\n\n if (char === placeholder[(shouldOffset) ? i - editDistance : i]) {\n rawValueArr.splice(i, 1)\n }\n }\n }\n\n // This is the variable that we will be filling with characters as we figure them out\n // in the algorithm below\n let conformedValue = emptyString\n let someCharsRejected = false\n\n // Ok, so first we loop through the placeholder looking for placeholder characters to fill up.\n placeholderLoop: for (let i = 0; i < placeholderLength; i++) {\n const charInPlaceholder = placeholder[i]\n\n // We see one. Let's find out what we can put in it.\n if (charInPlaceholder === placeholderChar) {\n // But before that, do we actually have any user characters that need a place?\n if (rawValueArr.length > 0) {\n // We will keep chipping away at user input until either we run out of characters\n // or we find at least one character that we can map.\n while (rawValueArr.length > 0) {\n // Let's retrieve the first user character in the queue of characters we have left\n const shift = rawValueArr.shift();\n let rawValueChar: string = '', isNew: boolean = false;\n if (shift) {\n rawValueChar = shift.char;\n isNew = shift.isNew;\n }\n\n // If the character we got from the user input is a placeholder character (which happens\n // regularly because user input could be something like (540) 90_-____, which includes\n // a bunch of `_` which are placeholder characters) and we are not in *no guide* mode,\n // then we map this placeholder character to the current spot in the placeholder\n if (rawValueChar === placeholderChar && suppressGuide !== true) {\n conformedValue += placeholderChar\n\n // And we go to find the next placeholder character that needs filling\n continue placeholderLoop\n\n // Else if, the character we got from the user input is not a placeholder, let's see\n // if the current position in the mask can accept it.\n } else if (mask[i].test(rawValueChar)) {\n // we map the character differently based on whether we are keeping character positions or not.\n // If any of the conditions below are met, we simply map the raw value character to the\n // placeholder position.\n if (\n keepCharPositions !== true ||\n isNew === false ||\n previousConformedValue === emptyString ||\n guide === false ||\n !isAddition\n ) {\n conformedValue += rawValueChar\n } else {\n // We enter this block of code if we are trying to keep character positions and none of the conditions\n // above is met. In this case, we need to see if there's an available spot for the raw value character\n // to be mapped to. If we couldn't find a spot, we will discard the character.\n //\n // For example, for mask `1111`, previous conformed value `_2__`, raw value `942_2__`. We can map the\n // `9`, to the first available placeholder position, but then, there are no more spots available for the\n // `4` and `2`. So, we discard them and end up with a conformed value of `92__`.\n const rawValueArrLength = rawValueArr.length\n let indexOfNextAvailablePlaceholderChar = null\n\n // Let's loop through the remaining raw value characters. We are looking for either a suitable spot, ie,\n // a placeholder character or a non-suitable spot, ie, a non-placeholder character that is not new.\n // If we see a suitable spot first, we store its position and exit the loop. If we see a non-suitable\n // spot first, we exit the loop and our `indexOfNextAvailablePlaceholderChar` will stay as `null`.\n for (let i = 0; i < rawValueArrLength; i++) {\n const charData = rawValueArr[i]\n\n if (charData.char !== placeholderChar && charData.isNew === false) {\n break\n }\n\n if (charData.char === placeholderChar) {\n indexOfNextAvailablePlaceholderChar = i\n break\n }\n }\n\n // If `indexOfNextAvailablePlaceholderChar` is not `null`, that means the character is not blocked.\n // We can map it. And to keep the character positions, we remove the placeholder character\n // from the remaining characters\n if (indexOfNextAvailablePlaceholderChar !== null) {\n conformedValue += rawValueChar\n rawValueArr.splice(indexOfNextAvailablePlaceholderChar, 1)\n\n // If `indexOfNextAvailablePlaceholderChar` is `null`, that means the character is blocked. We have to\n // discard it.\n } else {\n i--\n }\n }\n\n // Since we've mapped this placeholder position. We move on to the next one.\n continue placeholderLoop\n } else {\n someCharsRejected = true\n }\n }\n }\n\n // We reach this point when we've mapped all the user input characters to placeholder\n // positions in the mask. In *guide* mode, we append the left over characters in the\n // placeholder to the `conformedString`, but in *no guide* mode, we don't wanna do that.\n //\n // That is, for mask `(111)` and user input `2`, we want to return `(2`, not `(2__)`.\n if (suppressGuide === false) {\n conformedValue += placeholder.substr(i, placeholderLength)\n }\n\n // And we break\n break\n\n // Else, the charInPlaceholder is not a placeholderChar. That is, we cannot fill it\n // with user input. So we just map it to the final output\n } else {\n conformedValue += charInPlaceholder\n }\n }\n\n // The following logic is needed to deal with the case of deletion in *no guide* mode.\n //\n // Consider the silly mask `(111) /// 1`. What if user tries to delete the last placeholder\n // position? Something like `(589) /// `. We want to conform that to `(589`. Not `(589) /// `.\n // That's why the logic below finds the last filled placeholder character, and removes everything\n // from that point on.\n if (suppressGuide && isAddition === false) {\n let indexOfLastFilledPlaceholderChar = null\n\n // Find the last filled placeholder position and substring from there\n for (let i = 0; i < conformedValue.length; i++) {\n if (placeholder[i] === placeholderChar) {\n indexOfLastFilledPlaceholderChar = i\n }\n }\n\n if (indexOfLastFilledPlaceholderChar !== null) {\n // We substring from the beginning until the position after the last filled placeholder char.\n conformedValue = conformedValue.substr(0, indexOfLastFilledPlaceholderChar + 1)\n } else {\n // If we couldn't find `indexOfLastFilledPlaceholderChar` that means the user deleted\n // the first character in the mask. So we return an empty string.\n conformedValue = emptyString\n }\n }\n\n return { conformedValue, meta: { someCharsRejected } }\n}\n\n\nexport function convertMaskToPlaceholder(mask = emptyArray, placeholderChar = defaultPlaceholderChar) {\n if (!isArray(mask)) {\n throw new Error(\n 'Text-mask:convertMaskToPlaceholder; The mask property must be an array.'\n )\n }\n\n if (mask.indexOf(placeholderChar) !== -1) {\n throw new Error(\n 'Placeholder character must not be used as part of the mask. Please specify a character ' +\n 'that is not present in your mask as your placeholder character.\\n\\n' +\n `The placeholder character that was received is: ${JSON.stringify(placeholderChar)}\\n\\n` +\n `The mask that was received is: ${JSON.stringify(mask)}`\n )\n }\n\n return mask.map((char: any) => {\n return (char instanceof RegExp) ? placeholderChar : char\n }).join('')\n}\n\n/**\n * Due to a bug on textmask, the requireDecimal its not working, so this function solves this problem\n * @param maskType \n * @param numberValue \n * @param decimalsFormat \n * @returns \n */\nfunction formatNumber(maskType: any, numberValue: any, decimalsFormat: number = 2) {\n if (!numberValue && numberValue !== 0) {\n return '';\n }\n\n if (!numberValue.split) {\n numberValue += '';\n numberValue = numberValue.replace('.', ',');\n }\n\n const vals = numberValue.split(',');\n\n if (!maskType.textMask || typeof maskType.textMask !== 'function') {\n return '';\n }\n\n const mask = maskType.textMask(vals[0]);\n\n let decimals = ''\n if (decimalsFormat == undefined) {\n decimals = vals.length > 1 ? ',' + vals[1] : '';\n } else {\n decimals = vals.length > 1 ? (vals[1] < 10 ? vals[1].toString() + '0' : vals[1].toString()) : '00';\n if (decimals.length > decimalsFormat) {\n decimals = decimals.substring(0, decimalsFormat);\n }\n }\n\n let conformedValue = conformToMask(\n numberValue,\n mask,\n { guide: false }\n ).conformedValue\n\n\n let suffix = ''\n if (conformedValue.indexOf('%') >= 0) {\n conformedValue = conformedValue.replace('%', '')\n suffix = '%'\n }\n return conformedValue + (decimalsFormat > 0 ? ',' + decimals : '') + suffix;\n}","import {\n isPresent,\n isArray,\n isString,\n isNumber,\n isNil,\n processCaretTraps,\n allNumbersAreSame,\n getAllDigits,\n getAllWords,\n currencyToNumber,\n modulo11,\n numberToCurrency,\n slugify,\n fillString,\n randArray,\n rand,\n randomNumber,\n randomLetter,\n randomLetterOrNumber,\n getSpecialProperty\n} from './utils';\nexport { validateBr } from './validate';\nimport * as mask from './mask';\nimport { MASKS, MASKSIE } from './mask';\nimport { PLACAS_RANGE } from './placa';\nimport { ESTADOS } from './estados';\nimport { BigObject } from './interfaces';\n\nexport const utilsBr = {\n isPresent,\n isArray,\n isString,\n isNumber,\n isNil,\n processCaretTraps,\n allNumbersAreSame,\n getAllDigits,\n getAllWords,\n currencyToNumber,\n modulo11,\n numberToCurrency,\n slugify,\n fillString,\n randArray,\n rand,\n randomNumber,\n randomLetter,\n randomLetterOrNumber,\n getSpecialProperty,\n MASKS,\n MASKSIE,\n PLACAS_RANGE,\n ESTADOS\n};\n\nexport const maskBr: BigObject<Function> = mask.maskBr;","export const LOCALIZACAO_RUAS = ['Dois', 'Um', 'Principal', 'São José', 'Onze', 'São Paulo', 'Doze', 'Treze',\n 'Santo Antônio', 'Brasil', 'A', 'São Pedro', 'Quinze', 'São João',\n 'Quatorze', 'São Francisco', 'Sete de Setembro', 'Dezesseis', 'Quinze de Novembro',\n 'Tiradentes', 'Dezessete', 'Vinte', 'Bahia', 'Amazonas', 'Dezoito', 'São Sebastião', 'Paraná', 'Bela Vista', 'Santa Luzia', 'São Jorge',\n 'Castro Alves', 'Duque de Caxias', 'Projetada', 'Rui Barbosa', 'Santa Catarina', 'Minas Gerais', 'Santos Dumont',\n 'Espírito Santo', 'Vinte e Um', 'Vinte e Dois', 'da Paz', 'Treze de Maio', 'Rio de Janeiro',\n 'Goiás', 'Ceará', 'Belo Horizonte', 'das Flores', 'Sergipe', 'Vitória', 'José Bonifácio',\n 'Pernambuco', 'Piauí', 'Vinte e Três', 'Mato Grosso', 'Santa Maria', 'Dom Pedro II',\n 'Primeiro de Maio', 'Pará', 'Maranhão', 'Alagoas', 'Boa Vista', 'São Luiz', 'Vinte e Quatro', 'Paraíba', 'Santa Rita'];\n\nexport const LOCALIZACAO_LOGRADOUROS = ['Avenida', 'Rua', 'Marginal'];\n\nexport const LOCALIZACAO_COMPLEMENTOS = [`Apartamento`, 'Aeroporto', 'Anexo', `Andar`, `Bloco`, `Conjunto`, 'Cobertura', `Casa`,\n 'Fazenda', 'Fundos', 'Galeria', `Galpão`, `Lote`, `Loja`, `Portão`, `Quadra`, `Sala`, `Sobreloja`, 'Subsolo', 'Terreo'];\n\nexport const LOCALIZACAO_BAIRROS = ['Centro', 'Bela Vista', 'São José', 'Santo Antônio', 'São Francisco', 'Vila Nova',\n 'Boa Vista', 'Industrial', 'São Cristóvão', 'Planalto'];\n\nexport const LOCALIZACAO_ESTADOS = [\n { \"nome\": \"Acre\", \"uf\": \"AC\" },\n { \"nome\": \"Alagoas\", \"uf\": \"AL\" },\n { \"nome\": \"Amapá\", \"uf\": \"AP\" },\n { \"nome\": \"Amazonas\", \"uf\": \"AM\" },\n { \"nome\": \"Bahia\", \"uf\": \"BA\" },\n { \"nome\": \"Ceará\", \"uf\": \"CE\" },\n { \"nome\": \"Distrito Federal\", \"uf\": \"DF\" },\n { \"nome\": \"Espírito Santo\", \"uf\": \"ES\" },\n { \"nome\": \"Goiás\", \"uf\": \"GO\" },\n { \"nome\": \"Maranhão\", \"uf\": \"MA\" },\n { \"nome\": \"Mato Grosso\", \"uf\": \"MT\" },\n { \"nome\": \"Mato Grosso do Sul\", \"uf\": \"MS\" },\n { \"nome\": \"Minas Gerais\", \"uf\": \"MG\" },\n { \"nome\": \"Pará\", \"uf\": \"PA\" },\n { \"nome\": \"Paraíba\", \"uf\": \"PB\" },\n { \"nome\": \"Paraná\", \"uf\": \"PR\" },\n { \"nome\": \"Pernambuco\", \"uf\": \"PE\" },\n { \"nome\": \"Piauí\", \"uf\": \"PI\" },\n { \"nome\": \"Rio de Janeiro\", \"uf\": \"RJ\" },\n { \"nome\": \"Rio Grande do Norte\", \"uf\": \"RN\" },\n { \"nome\": \"Rio Grande do Sul\", \"uf\": \"RS\" },\n { \"nome\": \"Rondônia\", \"uf\": \"RO\" },\n { \"nome\": \"Roraima\", \"uf\": \"RR\" },\n { \"nome\": \"Santa Catarina\", \"uf\": \"SC\" },\n { \"nome\": \"São Paulo\", \"uf\": \"SP\" },\n { \"nome\": \"Sergipe\", \"uf\": \"SE\" },\n { \"nome\": \"Tocantins\", \"uf\": \"TO\" }\n];\nexport const LOCALIZACAO_CIDADES = [\n ['São Paulo', 'São Paulo'],\n ['Rio de Janeiro', 'Rio de Janeiro'],\n ['Brasília', 'Distrito Federal'],\n ['Salvador', 'Bahia'],\n ['Fortaleza', 'Ceará'],\n ['Belo Horizonte', 'Minas Gerais'],\n ['Manaus', 'Amazonas'],\n ['Curitiba', 'Paraná'],\n ['Recife', 'Pernambuco'],\n ['Goiânia', 'Goiás'],\n ['Belém', 'Pará'],\n ['Porto Alegre', 'Rio Grande do Sul'],\n ['Guarulhos', 'São Paulo'],\n ['Campinas', 'São Paulo'],\n ['São Luís', 'Maranhão'],\n ['São Gonçalo', 'Rio de Janeiro'],\n ['Maceió', 'Alagoas'],\n ['Duque de Caxias', 'Rio de Janeiro'],\n ['Cuiabá', 'Mato Grosso'],\n ['Campo Grande', 'Mato Grosso do Sul'],\n ['Natal', 'Rio Grande do Norte'],\n ['Teresina', 'Piauí'],\n ['São Bernardo do Campo', 'São Paulo'],\n ['Nova Iguaçu', 'Rio de Janeiro'],\n ['João Pessoa', 'Paraíba'],\n ['São José dos Campos', 'São Paulo'],\n ['Santo André', 'São Paulo'],\n ['Ribeirão Preto', 'São Paulo'],\n ['Jaboatão dos Guararapes', 'Pernambuco'],\n ['Osasco', 'São Paulo'],\n ['Uberlândia', 'Minas Gerais'],\n ['Sorocaba', 'São Paulo'],\n ['Contagem', 'Minas Gerais'],\n ['Aracaju', 'Sergipe'],\n ['Feira de Santana', 'Bahia'],\n ['Cuiabá', 'Mato Grosso'],\n ['Joinville', 'Santa Catarina'],\n ['Aparecida de Goiânia', 'Goiás'],\n ['Londrina', 'Paraná'],\n ['Juiz de Fora', 'Minas Gerais'],\n ['Ananindeua', 'Pará'],\n ['Porto Velho', 'Rondônia'],\n ['Serra', 'Espírito Santo'],\n ['Niterói', 'Rio de Janeiro'],\n ['Belford Roxo', 'Rio de Janeiro'],\n ['Caxias do Sul', 'Rio Grande do Sul'],\n ['Campos dos Goytacazes Campos dos Goytacazes', 'Rio de Janeiro'],\n ['Macapá', 'Amapá'],\n ['Florianópolis', 'Santa Catarina'],\n ['Vila Velha', 'Espírito Santo'],\n ['Mauá', 'São Paulo'],\n ['São João de Meriti', 'Rio de Janeiro'],\n ['São José do Rio Preto', 'São Paulo'],\n ['Mogi das Cruzes', 'São Paulo'],\n ['Betim', 'Minas Gerais'],\n ['Santos', 'São Paulo'],\n ['Diadema', 'São Paulo'],\n ['Maringá', 'Paraná'],\n ['Jundiaí', 'São Paulo'],\n ['Campina Grande', 'Paraíba'],\n ['Montes Claros', 'Minas Gerais'],\n ['Rio Branco', 'Acre'],\n ['Piracicaba', 'São Paulo'],\n ['Carapicuíba', 'São Paulo'],\n ['Boa Vista', 'Roraima'],\n ['Olinda', 'Pernambuco'],\n ['Anápolis', 'Goiás'],\n ['Cariacica', 'Espírito Santo'],\n ['Bauru', 'São Paulo'],\n ['Itaquaquecetuba', 'São Paulo'],\n ['São Vicente', 'São Paulo'],\n ['Vitória', 'Espírito Santo'],\n ['Caucaia', 'Ceará'],\n ['Caruaru', 'Pernambuco'],\n ['Blumenau', 'Santa Catarina'],\n ['Franca', 'São Paulo'],\n ['Ponta Grossa', 'Paraná'],\n ['Petrolina', 'Pernambuco'],\n ['Canoas', 'Rio Grande do Sul'],\n ['Pelotas', 'Rio Grande do Sul'],\n ['Vitória da Conquista', 'Bahia'],\n ['Ribeirão das Neves', 'Minas Gerais'],\n ['Uberaba', 'Minas Gerais'],\n ['Paulista', 'Pernambuco'],\n ['Cascavel', 'Paraná'],\n ['Praia Grande', 'São Paulo'],\n ['São José dos Pinhais', 'Paraná'],\n ['Guarujá', 'São Paulo'],\n ['Taubaté', 'São Paulo'],\n ['Petrópolis', 'Rio de Janeiro'],\n ['Limeira', 'São Paulo'],\n ['Santarém', 'Pará'],\n ['Camaçari', 'Bahia'],\n ['Palmas', 'Tocantins'],\n ['Suzano', 'São Paulo'],\n ['Mossoró', 'Rio Grande do Norte'],\n ['Taboão da Serra', 'São Paulo'],\n ['Várzea Grande', 'Mato Grosso'],\n ['Sumaré', 'São Paulo'],\n ['Santa Maria', 'Rio Grande do Sul'],\n ['Gravataí', 'Rio Grande do Sul'],\n ['Governador Valadares', 'Minas Gerais'],\n ['Marabá', 'Pará'],\n ['Juazeiro do Norte', 'Ceará'],\n ['Barueri', 'São Paulo'],\n ['Embu das Artes', 'São Paulo'],\n ['Volta Redonda', 'Rio de Janeiro'],\n ['Ipatinga', 'Minas Gerais'],\n ['Parnamirim', 'Rio Grande do Norte'],\n ['Imperatriz', 'Maranhão'],\n ['Foz do Iguaçu', 'Paraná'],\n ['Macaé', 'Rio de Janeiro'],\n ['Viamão', 'Rio Grande do Sul'],\n ['São Carlos', 'São Paulo'],\n ['Indaiatuba', 'São Paulo'],\n ['Cotia', 'São Paulo'],\n ['Novo Hamburgo', 'Rio Grande do Sul'],\n ['São José', 'Santa Catarina'],\n ['Magé', 'Rio de Janeiro'],\n ['Colombo', 'Paraná'],\n ['Itaboraí', 'Rio de Janeiro'],\n ['Sete Lagoas', 'Minas Gerais'],\n ['Americana', 'São Paulo'],\n ['Marília', 'São Paulo'],\n ['Divinópolis', 'Minas Gerais'],\n ['Itapevi', 'São Paulo'],\n ['São Leopoldo', 'Rio Grande do Sul'],\n ['Araraquara', 'São Paulo'],\n ['Rio Verde', 'Goiás'],\n ['Jacareí', 'São Paulo'],\n ['Rondonópolis', 'Mato Grosso'],\n ['Arapiraca', 'Alagoas'],\n ['Hortolândia', 'São Paulo'],\n ['Presidente Prudente', 'São Paulo'],\n ['Maracanaú', 'Ceará'],\n ['Dourados', 'Mato Grosso do Sul'],\n ['Chapecó Chapecó', 'Santa Catarina'],\n ['Cabo Frio', 'Rio de Janeiro'],\n ['Itajaí', 'Santa Catarina'],\n ['Santa Luzia', 'Minas Gerais'],\n ['Juazeiro', 'Bahia'],\n ['Criciúma', 'Santa Catarina'],\n ['Itabuna', 'Bahia'],\n ['Águas Lindas de Goiás', 'Goiás'],\n ['Rio Grande', 'Rio Grande do Sul'],\n ['Alvorada', 'Rio Grande do Sul'],\n ['Cachoeiro de Itapemirim', 'Espírito Santo'],\n ['Sobral', 'Ceará'],\n ['Luziânia', 'Goiás'],\n ['Parauapebas', 'Pará'],\n ['Cabo de Santo Agostinho', 'Pernambuco'],\n ['Rio Claro', 'São Paulo'],\n ['Angra dos Reis', 'Rio de Janeiro'],\n ['Passo Fundo', 'Rio Grande do Sul'],\n ['Castanhal', 'Pará'],\n ['Lauro de Freitas', 'Bahia'],\n ['Araçatuba', 'São Paulo'],\n ['Ferraz de Vasconcelos', 'São Paulo'],\n ['Santa Bárbara do Oeste', 'São Paulo'],\n ['Nova Friburgo', 'Rio de Janeiro'],\n ['Barra Mansa', 'Rio de Janeiro'],\n ['Nossa Senhora do Socorro', 'Sergipe'],\n ['Teresópolis', 'Rio de Janeiro'],\n ['Guarapuava', 'Paraná'],\n ['Araguaína', 'Tocantins'],\n ['Ibirité', 'Minas Gerais'],\n ['Jaraguá do Sul', 'Santa Catarina'],\n ['São José de Ribamar', 'Maranhão'],\n ['Mesquita', 'Rio de Janeiro'],\n ['Francisco Morato', 'São Paulo'],\n ['Itapecerica da Serra', 'São Paulo'],\n ['Itu', 'São Paulo'],\n ['Linhares', 'Espírito Santo'],\n ['Palhoça', 'Santa Catarina'],\n ['Timon', 'Maranhão'],\n ['Bragança Paulista', 'São Paulo'],\n ['Valparaíso de Goiás', 'Goiás'],\n ['Pindamonhangaba', 'São Paulo'],\n ['Poços de Caldas', 'Minas Gerais'],\n ['Caxias', 'Maranhão'],\n ['Itapetininga', 'São Paulo'],\n ['Nilópolis', 'Rio de Janeiro'],\n ['Ilhéus', 'Bahia'],\n ['Maricá', 'Rio de Janeiro'],\n ['São Caetano do Sul', 'São Paulo'],\n ['Teixeira de Freitas', 'Bahia'],\n ['Camaragibe', 'Pernambuco'],\n ['Abaetetuba', 'Pará'],\n ['Lages', 'Santa Catarina'],\n ['Jequié', 'Bahia'],\n ['Barreiras', 'Bahia'],\n ['Paranaguá', 'Paraná'],\n ['Franco da Rocha', 'São Paulo'],\n ['Parnaíba', 'Piauí'],\n ['Patos de Minas', 'Minas Gerais'],\n ['Mogi Guaçu', 'São Paulo'],\n ['Alagoinhas', 'Bahia'],\n ['Pouso Alegre', 'Minas Gerais'],\n ['Rio das Ostras', 'Rio de Janeiro'],\n ['Queimados', 'Rio de Janeiro'],\n ['Jaú', 'São Paulo'],\n ['Porto Seguro', 'Bahia'],\n ['Botucatu', 'São Paulo'],\n ['Araucária', 'Paraná'],\n ['Sinop', 'Mato Grosso'],\n ['Atibaia', 'São Paulo'],\n ['Balneário Camboriú', 'Santa Catarina'],\n ['Sapucaia do Sul', 'Rio Grande do Sul'],\n ['Toledo', 'Paraná'],\n ['Teófilo Otoni', 'Minas Gerais'],\n ['Garanhuns', 'Pernambuco'],\n ['Santana de Parnaíba', 'São Paulo'],\n ['Vitória de Santo Antão', 'Pernambuco'],\n ['Cametá', 'Pará'],\n ['Barbacena', 'Minas Gerais'],\n ['Santa Rita', 'Paraíba'],\n ['Sabará', 'Minas Gerais'],\n ['Varginha', 'Minas Gerais'],\n ['Apucarana', 'Paraná'],\n ['Brusque', 'Santa Catarina'],\n ['Simões Filho', 'Bahia'],\n ['Araras', 'São Paulo'],\n ['Itaguaí', 'Rio de Janeiro'],\n ['Araruama', 'Rio de Janeiro'],\n ['Pinhais', 'Paraná'],\n ['Crato', 'Ceará'],\n ['Campo Largo', 'Paraná'],\n ['Marituba', 'Pará'],\n ['Resende', 'Rio de Janeiro'],\n ['Cubatão', 'São Paulo'],\n ['São Mateus', 'Espírito Santo'],\n ['Santa Cruz do Sul', 'Rio Grande do Sul'],\n ['Cachoeirinha', 'Rio Grande do Sul'],\n ['Itapipoca', 'Ceará'],\n ['Valinhos', 'São Paulo'],\n ['Maranguape', 'Ceará'],\n ['Ji-Paraná', 'Rondônia'],\n ['Conselheiro Lafaiete', 'Minas Gerais'],\n ['São Félix do Xingu', 'Pará'],\n ['Bragança', 'Pará'],\n ['Vespasiano', 'Minas Gerais'],\n ['Trindade', 'Goiás'],\n ['Uruguaiana', 'Rio Grande do Sul'],\n ['Sertãozinho', 'São Paulo'],\n ['Jandira', 'São Paulo'],\n ['Guarapari', 'Espírito Santo'],\n ['Barcarena', 'Pará'],\n ['Birigui', 'São Paulo'],\n ['Ribeirão Pires', 'São Paulo'],\n ['Arapongas', 'Paraná'],\n ['Codó', 'Maranhão'],\n ['Colatina', 'Espírito Santo'],\n ['Votorantim', 'São Paulo'],\n ['Paço do Lumiar', 'Maranhão'],\n ['Barretos', 'São Paulo'],\n ['Catanduva', 'São Paulo'],\n ['Várzea Paulista', 'São Paulo'],\n ['Guaratinguetá', 'São Paulo'],\n ['Tatuí', 'São Paulo'],\n ['Formosa', 'Goiás'],\n ['Caraguatatuba', 'São Paulo'],\n ['Três Lagoas', 'Mato Grosso do Sul'],\n ['Santana', 'Amapá'],\n ['Bagé', 'Rio Grande do Sul'],\n ['Itatiba', 'São Paulo'],\n ['Bento Gonçalves', 'Rio Grande do Sul'],\n ['Itabira', 'Minas Gerais'],\n ['Salto', 'São Paulo'],\n ['Almirante Tamandaré', 'Paraná'],\n ['Paulo Afonso', 'Bahia'],\n ['Poá', 'São Paulo'],\n ['Araguari', 'Minas Gerais'],\n ['Igarassu', 'Pernambuco'],\n ['Novo Gama', 'Goiás'],\n ['Ubá', 'Minas Gerais'],\n ['Senador Canedo', 'Goiás'],\n ['Passos', 'Minas Gerais'],\n ['Altamira', 'Pará'],\n ['Parintins', 'Amazonas'],\n ['Tucuruí', 'Pará'],\n ['Ourinhos', 'São Paulo'],\n ['Eunápolis', 'Bahia'],\n ['São Lourenço da Mata', 'Pernambuco'],\n ['Paragominas', 'Pará'],\n ['Piraquara', 'Paraná'],\n ['Açailândia', 'Maranhão'],\n ['Umuarama', 'Paraná'],\n ['Corumbá', 'Mato Grosso do Sul'],\n ['Coronel Fabriciano', 'Minas Gerais'],\n ['Paulínia', 'São Paulo'],\n ['Catalão', 'Goiás'],\n ['Muriaé', 'Minas Gerais'],\n ['Santa Cruz do Capibaribe', 'Pernambuco'],\n ['Ariquemes', 'Rondônia'],\n ['Patos', 'Paraíba'],\n ['Cambé', 'Paraná'],\n ['Tailândia', 'Pará'],\n ['Araxá', 'Minas Gerais'],\n ['Erechim', 'Rio Grande do Sul'],\n ['Tubarão', 'Santa Catarina'],\n ['Bacabal', 'Maranhão'],\n ['Japeri', 'Rio de Janeiro'],\n ['Itumbiara', 'Goiás'],\n ['Ituiutaba', 'Minas Gerais'],\n ['São Pedro da Aldeia', 'Rio de Janeiro'],\n ['Lagarto', 'Sergipe'],\n ['Assis', 'São Paulo'],\n ['Lavras', 'Minas Gerais'],\n ['Tangará da Serra', 'Mato Grosso'],\n ['Leme', 'São Paulo'],\n ['Itaperuna', 'Rio de Janeiro'],\n ['Breves', 'Pará'],\n ['Nova Serrana', 'Minas Gerais'],\n ['Iguatu', 'Ceará'],\n ['São Gonçalo do Amarante', 'Rio Grande do Norte'],\n ['Itanhaém', 'São Paulo'],\n ['Santo Antônio de Jesus', 'Bahia'],\n ['Caieiras', 'São Paulo'],\n ['Itacoatiara', 'Amazonas'],\n ['Itaituba', 'Pará'],\n ['Aracruz', 'Espírito Santo'],\n ['Jataí', 'Goiás'],\n ['Barra do Piraí', 'Rio de Janeiro'],\n ['Fazenda Rio Grande', 'Paraná'],\n ['Mairiporã', 'São Paulo']\n];","\nexport const AIH_ESTADOS = {\n 'AC': '12', 'AL': '27', 'AP': '16', 'AM': '13', 'BA': '29', 'CE': '23', 'DF': '53',\n 'ES': '32', 'GO': '52', 'MA': '21', 'MT': '51', 'MS': '50', 'MG': '31', 'PA': '15',\n 'PB': '25', 'PR': '41', 'PE': '26', 'PI': '22', 'RJ': '33', 'RN': '24', 'RS': '43',\n 'RO': '11', 'RR': '14', 'SC': '42', 'SP': '35', 'SE': '28', 'TO': '17'\n};\nexport const AIH_TIPOS = {\n '1': 'AIH Normal',\n '2': 'APACs',\n '3': 'Códigos de procedimentos específicos da CNRAC',\n '4': 'APACs da CNRAC',\n '5': 'Procedimentos de longa permanência na AIH'\n};\n\nexport const CID_NAME = {\n 'A00-B99': 'Algumas doenças infecciosas e parasitárias',\n 'C00-D48': 'Neoplasmas (tumores)',\n 'D50-D89': 'Doenças do sangue e dos órgãos hematopoéticos e alguns transtornos imunitários',\n 'E00-E90': 'Doenças endócrinas, nutricionais e metabólicas',\n 'F00-F99': 'Transtornos mentais e comportamentais',\n 'G00-G99': 'Doenças do sistema nervoso',\n 'H00-H59': 'Doenças do olho e anexos',\n 'H60-H95': 'Doenças do ouvido e da apófise mastoide',\n 'I00-I99': 'Doenças do aparelho circulatório',\n 'J00-J99': 'Doenças do aparelho respiratório',\n 'K00-K93': 'Doenças do aparelho digestivo',\n 'L00-L99': 'Doenças da pele e do tecido subcutâneo',\n 'M00-M99': 'Doenças do sistema osteomuscular e do tecido conjuntivo',\n 'N00-N99': 'Doenças do aparelho geniturinário',\n 'O00-O99': 'Gravidez, parto e puerpério',\n 'P00-P96': 'Algumas afecções originadas no período perinatal',\n 'Q00-Q99': 'Malformações congênitas, deformidades e anomalias cromossômicas',\n 'R00-R99': 'Sintomas, sinais e achados anormais de exames clínicos e de laboratório, não classificados em outra parte',\n 'S00-T98': 'Lesões, envenenamentos e algumas outras conseqüências de causas externas',\n 'V01-Y98': 'Causas externas de morbidade e de mortalidade',\n 'Z00-Z99': 'Fatores que influenciam o estado de saúde e o contato com os serviços de saúde',\n 'U00-U99': 'Códigos para propósitos especiais',\n}\n\nexport const CID_REGEX = {\n 'A00-B99': /[A|B][0-9][0-9]/g,\n 'C00-D48': /[C0-90-9|[D0-90-9]/g,\n 'D50-D89': /[A|B][0-9][0-9]/g,\n 'E00-E90': /[A|B][0-9][0-9]/g,\n 'F00-F99': /[A|B][0-9][0-9]/g,\n 'G00-G99': /[A|B][0-9][0-9]/g,\n 'H00-H59': /[A|B][0-9][0-9]/g,\n 'H60-H95': /[A|B][0-9][0-9]/g,\n 'I00-I99': /[A|B][0-9][0-9]/g,\n 'J00-J99': /[A|B][0-9][0-9]/g,\n 'K00-K93': /[A|B][0-9][0-9]/g,\n 'L00-L99': /[A|B][0-9][0-9]/g,\n 'M00-M99': /[A|B][0-9][0-9]/g,\n 'N00-N99': /[A|B][0-9][0-9]/g,\n 'O00-O99': /[A|B][0-9][0-9]/g,\n 'P00-P96': /[A|B][0-9][0-9]/g,\n 'Q00-Q99': /[A|B][0-9][0-9]/g,\n 'R00-R99': /[A|B][0-9][0-9]/g,\n 'S00-T98': /[A|B][0-9][0-9]/g,\n 'V01-Y98': /[A|B][0-9][0-9]/g,\n 'Z00-Z99': /[A|B][0-9][0-9]/g,\n 'U00-U99': /[A|B][0-9][0-9]/g,\n}\n\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { maskBr } from \"./../js-brasil\";\n\n@Pipe({\n name: \"cpf\",\n})\nexport class CPFPipe implements PipeTransform {\n transform(cpfValue: any) {\n return maskBr['cpf'](cpfValue);\n }\n}\n","/*\n * Public API Surface of mapa-library-ui\n */\n\nexport * from './lib/core/elements/element-search';\nexport * from './lib/core/elements/element-base';\nexport * from './lib/core/elements/dropdown';\nexport * from './lib/core/elements/dropdown-tree';\nexport * from './lib/core/elements/input-text';\nexport * from './lib/core/elements/radio-button';\nexport * from './lib/core/elements/slide-toggle';\nexport * from './lib/core/elements/textarea';\n\nexport * from './lib/core/interfaces/button-icon.interface';\nexport * from './lib/core/interfaces/chart-options.interface';\nexport * from './lib/core/interfaces/dialog-data.interface';\nexport * from './lib/core/interfaces/element-option.interface';\n\nexport * from './lib/core/directives/mat-input-autosize.directive';\nexport * from './lib/core/directives/custom-paginator-legacy.directive';\n\nexport * from './lib/core/pipes/cpf';\nexport * from './lib/core/js-brasil';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","utilsBr","emptyString","maskBr","mask.maskBr"],"mappings":"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AAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SA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K,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACvC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC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"}
1
+ {"version":3,"file":"mapa-library-ui.mjs","sources":["../../../projects/mapa-library-ui/src/lib/core/elements/element-base.ts","../../../projects/mapa-library-ui/src/lib/core/elements/dropdown.ts","../../../projects/mapa-library-ui/src/lib/core/elements/dropdown-tree.ts","../../../projects/mapa-library-ui/src/lib/core/elements/input-text.ts","../../../projects/mapa-library-ui/src/lib/core/elements/radio-button.ts","../../../projects/mapa-library-ui/src/lib/core/elements/slide-toggle.ts","../../../projects/mapa-library-ui/src/lib/core/elements/textarea.ts","../../../projects/mapa-library-ui/src/lib/core/directives/mat-input-autosize.directive.ts","../../../projects/mapa-library-ui/src/lib/core/directives/custom-paginator-legacy.directive.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/estados.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/utils.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/inscricaoestadual.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/placa.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/create.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/rg.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/iptu_mask.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/iptu_create.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/iptu_validate.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/iptu.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/validate.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/createNumberMask.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/mask.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/index.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/name.ts","../../../projects/mapa-library-ui/src/lib/core/js-brasil/src/saude.ts","../../../projects/mapa-library-ui/src/lib/core/pipes/cpf.ts","../../../projects/mapa-library-ui/src/public-api.ts","../../../projects/mapa-library-ui/src/mapa-library-ui.ts"],"sourcesContent":["import { ElementGroup } from \"../interfaces/element-group.interface\";\nimport { ElementOption } from \"../interfaces/element-option.interface\";\nimport { ActionButton } from \"./action-button\";\nimport { ElementSearch } from \"./element-search\";\nimport { Errors } from \"./errors\";\nexport interface Status {\n label: string;\n}\n\nexport class ElementBase {\n value: string;\n key: string;\n label: string;\n required: boolean;\n order: number;\n controlType: string;\n type: string;\n placeholder?: string;\n readonly: boolean;\n hint?: string;\n prefix?: string;\n suffix?: string;\n autosize?: boolean;\n autosizeMinWidth?: string;\n autosizeMaxWidth?: string;\n autosizeMinRow?: number;\n autosizeMaxRow?: number;\n options: ElementOption[] | ElementGroup[];\n tree: any[];\n multiple?: boolean;\n search?: ElementSearch;\n maxLength!: string | number | null;\n errors?: Errors;\n actionButton?: ActionButton;\n mask?: string;\n autocomplete?: string;\n clearValue?: boolean;\n status?: Status[];\n checkParent?: boolean;\n checkChildren?: boolean;\n\n constructor(\n options: {\n value?: string;\n key?: string;\n label?: string;\n required?: boolean;\n order?: number;\n controlType?: string;\n type?: string;\n placeholder?: string;\n readonly?: boolean;\n hint?: string;\n prefix?: string;\n suffix?: string;\n autosize?: boolean;\n autosizeMinWidth?: string;\n autosizeMaxWidth?: string;\n autosizeMinRow?: number;\n autosizeMaxRow?: number;\n options?: ElementOption[] | ElementGroup[];\n tree?: any[];\n multiple?: boolean;\n search?: ElementSearch;\n maxLength?: string | number | null;\n errors?: Errors;\n actionButton?: ActionButton;\n mask?: string;\n autocomplete?: string;\n clearValue?: boolean;\n status?: Status[];\n checkParent?: boolean;\n checkChildren?: boolean;\n } = {}\n ) {\n this.value = options.value || \"\";\n this.key = options.key || \"\";\n this.label = options.label || \"\";\n this.required = !!options.required;\n this.order = options.order === undefined ? 1 : options.order;\n this.controlType = options.controlType || \"\";\n this.type = options.type || \"\";\n this.placeholder = options.placeholder || \"\";\n this.readonly = options.readonly || false;\n this.hint = options.hint || \"\";\n this.prefix = options.prefix || \"\";\n this.suffix = options.suffix || \"\";\n this.autosize = options.autosize || false;\n this.autosizeMinWidth = options.autosizeMinWidth || \"212px\";\n this.autosizeMaxWidth = options.autosizeMaxWidth || \"400px\";\n this.autosizeMinRow = options.autosizeMinRow || 2;\n this.autosizeMaxRow = options.autosizeMaxRow || 5;\n this.options = options.options || [];\n this.tree = options.tree || [];\n this.multiple = options.multiple || false;\n this.search = options.search || undefined;\n this.maxLength = options.maxLength || null;\n this.errors = options.errors || undefined;\n this.actionButton = options.actionButton || undefined;\n this.mask = options.mask || undefined;\n this.autocomplete = options.autocomplete || \"\";\n this.clearValue =\n options.clearValue !== undefined ? options.clearValue : true;\n this.status = options.status || undefined;\n this.checkParent = options.checkParent || false;\n this.checkChildren = options.checkChildren || false;\n }\n}\n","import { ElementBase } from './element-base';\n\nexport class Dropdown extends ElementBase {\n override controlType = 'dropdown';\n}\n","import { ElementBase } from './element-base';\n\nexport class DropdownTree extends ElementBase {\n override controlType = 'dropdown-tree';\n}\n","import { ElementBase } from './element-base';\n\nexport class InputText extends ElementBase {\n override controlType = 'input';\n}\n","import { ElementBase } from './element-base';\n\nexport class RadioButton extends ElementBase {\n override controlType = 'radio-button';\n}\n","import { ElementBase } from './element-base';\n\nexport class SlideToggle extends ElementBase {\n override controlType = 'slide-toggle';\n}\n","import { ElementBase } from './element-base';\n\nexport class Textarea extends ElementBase {\n override controlType = 'textarea';\n}\n","/*\n* Originally from: https://github.com/anotherkitten/mat-input-autosize\n* @author: Ellie Larson (anotherkitten)\n*/\n\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n Input,\n OnDestroy,\n Optional,\n Self,\n} from '@angular/core';\nimport { NgModel } from '@angular/forms';\nimport { MatInput } from '@angular/material/input';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n selector: '[matInputAutosize]',\n standalone: true,\n})\nexport class MatInputAutosizeDirective implements AfterViewInit, OnDestroy {\n inputElement: HTMLInputElement;\n hiddenText!: Text;\n changeDetectSub!: Subscription;\n\n @Input() matInputAutosizeMaxWidth: any;\n @Input() matInputAutosizeMinWidth = '120px';\n @Input() matInputAutosizeFontStyle: any;\n\n constructor(\n el: ElementRef<HTMLInputElement>,\n @Self() private childMatInput: MatInput,\n @Optional() @Self() private childNgModel: NgModel\n ) {\n this.inputElement = el.nativeElement;\n }\n\n ngAfterViewInit(): void {\n this.checkErrors();\n this.overwriteParentWidth();\n this.createHiddenTextContainer();\n this.setOwnStyles();\n this.subscribeToChanges();\n }\n\n ngOnDestroy(): void {\n if (this.changeDetectSub) {\n this.changeDetectSub.unsubscribe();\n }\n }\n\n checkErrors(): void {\n if (!(this.inputElement instanceof HTMLInputElement)) {\n throw new Error('matInputAutosize directive must be on an input element');\n }\n\n if (!this.childMatInput) {\n throw new Error(\n 'Element with matInputAutosize directive must also have the matInput directive'\n );\n }\n }\n\n overwriteParentWidth(): void {\n Object.assign((this.inputElement.parentNode as HTMLElement).style, {\n width: '100%',\n });\n }\n\n createHiddenTextContainer(): void {\n const textContainer = document.createElement('div');\n Object.assign(textContainer.style, {\n display: 'inline-block',\n 'max-width': this.matInputAutosizeMaxWidth || null,\n 'min-width': this.matInputAutosizeMinWidth,\n font: this.matInputAutosizeFontStyle || null,\n visibility: 'hidden',\n 'white-space': 'pre',\n });\n this.inputElement.parentNode?.appendChild(textContainer);\n\n this.hiddenText = document.createTextNode(' ');\n textContainer.appendChild(this.hiddenText);\n }\n\n setOwnStyles(): void {\n Object.assign(this.inputElement.style, {\n position: 'absolute',\n left: '0',\n });\n }\n\n subscribeToChanges(): void {\n if (this.childNgModel) {\n this.changeDetectSub = this.childNgModel.control.valueChanges.subscribe(\n this.changeHiddenText\n );\n } else {\n this.inputElement.addEventListener('input', () =>\n this.changeHiddenText(this.inputElement.value)\n );\n }\n }\n\n changeHiddenText = (newValue: string): void => {\n if (this.hiddenText) {\n this.hiddenText.data = newValue + ' ';\n }\n };\n}\n","import {\n AfterViewInit,\n Directive,\n DoCheck,\n Host,\n Optional,\n Renderer2,\n Self,\n ViewContainerRef,\n} from '@angular/core';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { MatButton } from '@angular/material/button';\n\n@Directive({\n selector: '[appStylePaginatorMv]',\n standalone: true\n})\nexport class PaginatorLegacyDirective implements DoCheck, AfterViewInit {\n private currentPage: number;\n private pageGapTxt: string[];\n private rangeStart!: number;\n private rangeEnd!: number;\n private buttons: MatButton[] = [];\n private showTotalPages: number;\n private checkPage: number[];\n\n constructor(\n @Host() @Self() @Optional() private readonly matPag: MatPaginator,\n private readonly ViewContainer: ViewContainerRef,\n private readonly renderer: Renderer2\n ) {\n this.currentPage = 1;\n this.pageGapTxt = ['•••', '---'];\n this.showTotalPages = 2;\n this.checkPage = [0, 0, 0];\n // Display custom range label text\n this.matPag._intl.getRangeLabel = (\n page: number,\n pageSize: number,\n length: number\n ): string => {\n const startIndex = page * pageSize;\n const endIndex =\n startIndex < length\n ? Math.min(startIndex + pageSize, length)\n : startIndex + pageSize;\n if (length === 0) {\n return 'Mostrando 0 – 0 de 0 item';\n }\n if (length === 1) {\n return (\n 'Mostrando ' +\n (startIndex + 1) +\n ' – ' +\n endIndex +\n ' de ' +\n length +\n ' item'\n );\n } else {\n return (\n 'Mostrando ' +\n (startIndex + 1) +\n ' – ' +\n endIndex +\n ' de ' +\n length +\n ' itens'\n );\n }\n };\n // Subscribe to rerender buttons when next page and last page button is used\n this.matPag.page.subscribe((paginator: PageEvent) => {\n this.currentPage = paginator.pageIndex;\n this.matPag.pageIndex = paginator.pageIndex;\n this.initPageRange();\n });\n this.matPag._intl.itemsPerPageLabel = 'Itens por página';\n const paginatorIntl = this.matPag._intl;\n paginatorIntl.nextPageLabel = '';\n paginatorIntl.previousPageLabel = '';\n }\n\n ngDoCheck(): void {\n // Reset paginator if the pageSize, pageIndex, length changes\n if (\n this.matPag?.length !== this.checkPage[0] ||\n this.matPag?.pageSize !== this.checkPage[1] ||\n this.matPag?.pageIndex !== this.checkPage[2]\n ) {\n const pageCount = this.matPag.getNumberOfPages();\n if (this.currentPage > pageCount && pageCount !== 0) {\n this.currentPage = 1;\n this.matPag.pageIndex = 0;\n }\n this.currentPage = this.matPag.pageIndex;\n this.initPageRange();\n this.checkPage = [\n this.matPag.length,\n this.matPag.pageSize,\n this.matPag.pageIndex,\n ];\n }\n }\n\n private buildPageNumbers = () => {\n let dots: boolean[];\n let page: number;\n let pageDifference: number;\n let startIndex: number;\n let totalPages: number;\n totalPages = this.matPag.getNumberOfPages();\n // Container div with paginator elements\n const actionContainer =\n this.ViewContainer.element.nativeElement.querySelector(\n 'div.mat-paginator-range-actions'\n );\n // Button that triggers the next page action\n const nextPageNode = this.ViewContainer.element.nativeElement.querySelector(\n 'button.mat-paginator-navigation-next'\n );\n // Label showing the page range\n const pageRange = this.ViewContainer.element.nativeElement.querySelector(\n 'div.mat-paginator-range-label'\n );\n\n let prevButtonCount = this.buttons.length;\n\n // Remove buttons before creating new ones\n if (prevButtonCount > 0) {\n this.buttons.forEach((button) => {\n this.renderer.removeChild(actionContainer, button);\n });\n // Empty state array\n prevButtonCount = 0;\n }\n\n this.renderer.addClass(pageRange, 'custom-paginator-counter');\n this.renderer.addClass(actionContainer, 'custom-paginator-container');\n\n // Initialize next page and last page buttons\n if (prevButtonCount === 0) {\n const nodeArray = actionContainer.childNodes;\n setTimeout(() => {\n for (const node of nodeArray) {\n if (node.nodeName === 'BUTTON') {\n // Next Button styles\n if (node.innerHTML.length > 100 && node.disabled) {\n this.renderer.addClass(node, 'custom-paginator-arrow-disabled');\n this.renderer.removeClass(node, 'custom-paginator-arrow-enabled');\n } else if (node.innerHTML.length > 100 && !node.disabled) {\n this.renderer.addClass(node, 'custom-paginator-arrow-enabled');\n this.renderer.removeClass(\n node,\n 'custom-paginator-arrow-disabled'\n );\n }\n }\n }\n });\n }\n\n dots = [false, false];\n\n if (totalPages > 0) {\n this.renderer.insertBefore(\n actionContainer,\n this.createButton('0', this.matPag.pageIndex),\n nextPageNode\n );\n }\n\n page = this.showTotalPages + 2;\n pageDifference = totalPages - page;\n startIndex = Math.max(this.currentPage - this.showTotalPages - 2, 1);\n\n for (let index = startIndex; index < totalPages - 1; index = index + 1) {\n if (\n (index < page && this.currentPage <= this.showTotalPages) ||\n (index >= this.rangeStart && index <= this.rangeEnd) ||\n (this.currentPage > pageDifference && index >= pageDifference) ||\n totalPages < this.showTotalPages + page\n ) {\n this.renderer.insertBefore(\n actionContainer,\n this.createButton(`${index}`, this.matPag.pageIndex),\n nextPageNode\n );\n } else {\n if (index > this.rangeEnd && !dots[0]) {\n this.renderer.insertBefore(\n actionContainer,\n this.createButton(this.pageGapTxt[0], this.matPag.pageIndex),\n nextPageNode\n );\n dots[0] = true;\n break;\n }\n if (index < this.rangeEnd && !dots[1]) {\n this.renderer.insertBefore(\n actionContainer,\n this.createButton(this.pageGapTxt[1], this.matPag.pageIndex),\n nextPageNode\n );\n dots[1] = true;\n }\n }\n }\n\n if (totalPages > 1) {\n this.renderer.insertBefore(\n actionContainer,\n this.createButton(`${totalPages - 1}`, this.matPag.pageIndex),\n nextPageNode\n );\n }\n };\n\n private createButton(index: string, pageIndex: number): MatButton {\n const linkBtn: MatButton = this.renderer.createElement('button');\n this.renderer.setAttribute(linkBtn, 'class', 'custom-paginator-page');\n this.renderer.addClass(linkBtn, 'custom-paginator-page-enabled');\n if (index === this.pageGapTxt[0] || index === this.pageGapTxt[1]) {\n this.renderer.addClass(linkBtn, 'custom-paginator-arrow-enabled');\n }\n const pagingTxt = isNaN(+index) ? this.pageGapTxt[0] : +index + 1;\n const text = this.renderer.createText(pagingTxt + '');\n this.renderer.addClass(linkBtn, 'mat-custom-page');\n switch (index) {\n case `${pageIndex}`:\n this.renderer.setAttribute(linkBtn, 'disabled', 'disabled');\n this.renderer.removeClass(linkBtn, 'custom-paginator-page-enabled');\n this.renderer.addClass(linkBtn, 'custom-paginator-page-disabled');\n break;\n case this.pageGapTxt[0]:\n this.renderer.listen(linkBtn, 'click', () => {\n this.switchPage(\n this.currentPage < this.showTotalPages + 1\n ? this.showTotalPages + 2\n : this.currentPage + this.showTotalPages - 1\n );\n });\n break;\n case this.pageGapTxt[1]:\n this.renderer.listen(linkBtn, 'click', () => {\n this.switchPage(\n this.currentPage >\n this.matPag.getNumberOfPages() - this.showTotalPages - 2\n ? this.matPag.getNumberOfPages() - this.showTotalPages - 3\n : this.currentPage - this.showTotalPages + 1\n );\n });\n break;\n default:\n this.renderer.listen(linkBtn, 'click', () => {\n this.switchPage(+index);\n });\n break;\n }\n this.renderer.appendChild(linkBtn, text);\n // Add button to private array for state\n this.buttons.push(linkBtn);\n return linkBtn;\n }\n\n /**\n * @description calculates the button range based on class input parameters and based on current page index value.\n */\n private initPageRange(): void {\n this.rangeStart = this.currentPage - this.showTotalPages / 2;\n this.rangeEnd = this.currentPage + this.showTotalPages / 2;\n this.buildPageNumbers();\n }\n\n private switchPage(index: number): void {\n this.matPag.pageIndex = index;\n this.matPag.page.emit({\n previousPageIndex: this.currentPage,\n pageIndex: index,\n pageSize: this.matPag.pageSize,\n length: this.matPag.length,\n });\n this.currentPage = index;\n this.initPageRange();\n }\n\n public ngAfterViewInit(): void {\n this.rangeStart = 0;\n this.rangeEnd = this.showTotalPages - 1;\n this.initPageRange();\n }\n}\n","export const ESTADOS_SIGLA: any = ['ac', 'al', 'am', 'ap', 'ba', 'ce', 'df', 'es', 'go', 'ma',\n 'mg', 'ms', 'mt', 'pa', 'pb', 'pe', 'pi', 'pr', 'rj', 'rn', 'ro', 'rr', 'rs',\n 'sc', 'se', 'sp', 'to'\n];\n\n\nexport type EstadosType = 'ac'| 'al'| 'am'| 'ap'| 'ba'| 'ce'| 'df'| 'es'| 'go'| 'ma'|\n'mg'| 'ms'| 'mt'| 'pa'| 'pb'| 'pe'| 'pi'| 'pr'| 'rj'| 'rn'| 'ro'| 'rr'| 'rs'|\n'sc'| 'se'| 'sp'| 'to';\n\n\nexport const ESTADOS = [\n { name: 'Acre', shortname: 'AC', slug: 'acre' },\n { name: 'Alagoas', shortname: 'AL', slug: 'alagoas' },\n { name: 'Amapá', shortname: 'AP', slug: 'amapa' },\n { name: 'Amazonas', shortname: 'AM', slug: 'amazonas' },\n { name: 'Bahia', shortname: 'BA', slug: 'bahia' },\n { name: 'Ceará', shortname: 'CE', slug: 'ceara' },\n { name: 'Distrito Federal', shortname: 'DF', slug: 'distrito-federal' },\n { name: 'Espírito Santo', shortname: 'ES', slug: 'espirito-santo' },\n { name: 'Goiás', shortname: 'GO', slug: 'goias' },\n { name: 'Maranhão', shortname: 'MA', slug: 'maranhao' },\n { name: 'Mato Grosso', shortname: 'MT', slug: 'mato-grosso' },\n { name: 'Mato Grosso do Sul', shortname: 'MS', slug: 'mato-grosso-do-sul' },\n { name: 'Minas Gerais', shortname: 'MG', slug: 'minas-gerais' },\n { name: 'Pará', shortname: 'PA', slug: 'para' },\n { name: 'Paraíba', shortname: 'PB', slug: 'paraiba' },\n { name: 'Paraná', shortname: 'PR', slug: 'parana' },\n { name: 'Pernambuco', shortname: 'PE', slug: 'pernambuco' },\n { name: 'Piauí', shortname: 'PI', slug: 'piaui' },\n { name: 'Rio de Janeiro', shortname: 'RJ', slug: 'rio-de-janeiro' },\n { name: 'Rio Grande do Norte', shortname: 'RN', slug: 'rio-grande-do-norte' },\n { name: 'Rio Grande do Sul', shortname: 'RS', slug: 'rio-grande-do-sul' },\n { name: 'Rondônia', shortname: 'RO', slug: 'rondonia' },\n { name: 'Roraima', shortname: 'RR', slug: 'roraima' },\n { name: 'Santa Catarina', shortname: 'SC', slug: 'santa-catarina' },\n { name: 'São Paulo', shortname: 'SP', slug: 'sao-paulo' },\n { name: 'Sergipe', shortname: 'SE', slug: 'sergipe' },\n { name: 'Tocantins', shortname: 'TO', slug: 'tocantins' }\n]","import { ESTADOS_SIGLA } from './estados';\nimport { BigObject } from './interfaces';\n\nexport function isPresent(obj: any): boolean {\n return obj !== undefined && obj !== null;\n}\n\nexport function isArray(value: any) {\n return (Array.isArray && Array.isArray(value)) || value instanceof Array\n}\n\nexport function isString(value: any) {\n return typeof value === 'string' || value instanceof String\n}\n\nexport function isNumber(value: any) {\n return typeof value === 'number' && !isNaN(value); // && value.length === undefined\n}\n\nexport function isNil(value: any) {\n return typeof value === 'undefined' || value === null\n}\n\n\n\n\nconst strCaretTrap = '[]'\nexport function processCaretTraps(mask: any) {\n const indexes = []\n\n let indexOfCaretTrap: number\n while (indexOfCaretTrap = mask.indexOf(strCaretTrap), indexOfCaretTrap !== -1) { // eslint-disable-line\n indexes.push(indexOfCaretTrap)\n\n mask.splice(indexOfCaretTrap, 1)\n }\n\n return { maskWithoutCaretTraps: mask, indexes }\n}\n\nexport const modulo11 = (value: string) => {\n let mults: any = []\n let weightVal = 2\n for (let i = 0; i < value.length; i++) {\n // mults = [weightVal, ...mults]\n mults.push(weightVal)\n weightVal++\n if (weightVal > 9) weightVal = 2\n }\n\n mults = mults.reverse()\n\n let sum = 0\n for (let i = 0; i < value.length; i++) {\n sum += parseInt(value[i]) * mults[i]\n }\n const digit = (sum *10) % 11\n return digit\n}\n\nexport const modulo11Custom = (string: string, size: number, maxMult = string.length, by10 = true) => {\n if (!by10) size = 1\n for (let n = 1; n <= size; n++) {\n let soma = 0\n let mult = 2\n for (let i = string.length - 1; i >= 0; i--) {\n soma += (mult * parseInt(string.charAt(i)))\n mult++\n if (mult > maxMult) mult = 2\n }\n let dig\n if (by10) {\n dig = ((soma * 10) % 11) % 10;\n } else {\n dig = soma % 11;\n if (dig == 10) dig = 0;\n }\n string += dig;\n }\n return string.substr(string.length - size, size);\n}\n\n\nexport const modulo11a = (string: string, size: number, mod: number) => {\n let soma = 0;\n for (let i = 1; i <= size; i++) {\n // tslint:disable-next-line:radix\n soma = soma + parseInt(string.substring(i - 1, i)) * (mod - i);\n }\n let resto = (soma * 10) % 11;\n\n if ((resto === 10) || (resto === 11)) {\n resto = 0;\n }\n return resto;\n}\n\n/**\n * \n * @param input \n * ^ - Match line start\n (\\d) - match first digit and capture it in back reference #1 i.e. \\1\n (?!..) is a negative lookahead\n (?!\\1+$) means disallow the match if first digit is followed by same digit (captured group) till end.\n \\d{11}$ match next 11 digit followed by line end\n */\nexport function allNumbersAreSame(inputValue: string) {\n const input: string | void = getAllDigits(inputValue);\n if (typeof input === 'string') {\n const reg = new RegExp('^(\\\\d)(?!\\\\1+$)\\\\d{' + ((<string>input).length - 1) + '}$');\n return reg.test(input);\n }\n return false;\n}\n\nexport function getAllDigits(input: string) {\n if (!input.match) {\n input = input.toString();\n }\n const match = input.match(/\\d/g);\n if (match) {\n return match.join(\"\");\n }\n return '';\n}\n\nexport function getAllWords(input: string) {\n const match = input.match(/\\w/g);\n if (match) {\n return match.join(\"\");\n }\n return '';\n}\n\nexport function currencyToNumber(input: string | number) {\n if (typeof input === 'number') {\n return input;\n }\n input = input.replace(/ /g, '');\n if (input.indexOf('$') !== -1) {\n const vals = input.split('$');\n input = vals[1];\n }\n\n // Keeping just numbers . and ,\n input = input.replace(/[^0-9.,]+/, '');\n\n // eua format\n if (input.indexOf('.') === (input.length - 1) - 2) {\n input = input.replace(/\\,/g, '')\n }\n // br format\n else {\n input = input.replace(/\\./g, '').replace(',', '.');\n }\n\n return parseFloat(input);\n}\n\nexport function numberToCurrency(value: number) {\n return ' R$ ' + value.toFixed(2).replace('.', ',') + ' ';\n};\n\nexport function slugify(value: string) {\n\n return value.toString().toLowerCase()\n .replace(/[àÀáÁâÂãäÄÅåª]+/g, 'a') // Special Characters #1\n .replace(/[èÈéÉêÊëË]+/g, 'e') \t// Special Characters #2\n .replace(/[ìÌíÍîÎïÏ]+/g, 'i') \t// Special Characters #3\n .replace(/[òÒóÓôÔõÕöÖº]+/g, 'o') \t// Special Characters #4\n .replace(/[ùÙúÚûÛüÜ]+/g, 'u') \t// Special Characters #5\n .replace(/[ýÝÿŸ]+/g, 'y') \t\t// Special Characters #6\n .replace(/[ñÑ]+/g, 'n') \t\t\t// Special Characters #7\n .replace(/[çÇ]+/g, 'c') \t\t\t// Special Characters #8\n .replace(/[ß]+/g, 'ss') \t\t\t// Special Characters #9\n .replace(/[Ææ]+/g, 'ae') \t\t\t// Special Characters #10\n .replace(/[Øøœ]+/g, 'oe') \t\t// Special Characters #11\n .replace(/[%]+/g, 'pct') \t\t\t// Special Characters #12\n .replace(/\\s+/g, '-') \t\t// Replace spaces with -\n .replace(/[^\\w\\-]+/g, '') \t\t// Remove all non-word chars\n .replace(/\\-\\-+/g, '-') \t\t// Replace multiple - with single -\n .replace(/^-+/, '') \t\t// Trim - from start of text\n .replace(/-+$/, ''); \t\t// Trim - from end of text\n\n};\n/**\n * \n * @param string ex. 12345\n * @param size 11\n * @param fill 0\n * \n * Returns: 00000012345\n */\nexport function fillString(string: string, size: number, fill: string) {\n if (string.length < size) {\n const dif = size - string.length;\n for (let i = 0; i < dif; i++) {\n string = fill + string\n }\n }\n return string;\n}\n\n\nexport function randArray(array: string | any[]) {\n const index = randomNumber(0, array.length);\n return array[index];\n}\n\n\nexport function rand(length: number, ...ranges: any[]) {\n var str = \"\"; // the string (initialized to \"\")\n while (length--) { // repeat this length of times\n var ind = Math.floor(Math.random() * ranges.length); // get a random range from the ranges object\n var min = ranges[ind][0].charCodeAt(0), // get the minimum char code allowed for this range\n max = ranges[ind][1].charCodeAt(0); // get the maximum char code allowed for this range\n var c = Math.floor(Math.random() * (max - min + 1)) + min; // get a random char code between min and max\n str += String.fromCharCode(c); // convert it back into a character and append it to the string str\n }\n return str; // return str\n}\n\nexport function randomNumber(begin: number, end: number) {\n const dif = end - begin;\n const number = Math.floor(Math.random() * dif) + begin;\n return number;\n}\n\n\nexport function randomLetter(size = 1, onlyCapitals = false) {\n var text = \"\";\n let possible: any = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n if (onlyCapitals == false) {\n possible += \"abcdefghijklmnopqrstuvwxyz\";\n }\n possible = possible.split('');\n for (let i = 0; i < size; i++) {\n const pos = Math.floor(Math.random() * possible.length);\n text += possible[pos];\n }\n return text;\n}\n\n\nexport function randomLetterOrNumber(size = 1, onlyCapitals = false) {\n var text = \"\";\n let possible: any = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n if (onlyCapitals == false) {\n possible += \"abcdefghijklmnopqrstuvwxyz0123456789\";\n }\n possible = possible.split('');\n for (let i = 0; i < size; i++) {\n const pos = Math.floor(Math.random() * possible.length);\n text += possible[pos];\n }\n return text;\n}\n\nexport const randomEstadoSigla = () => {\n const total = ESTADOS_SIGLA.length;\n return ESTADOS_SIGLA[Math.floor(Math.random() * total)];\n}\n\nexport const CORES = [\"AMARELO\", \"AZUL\", \"BEGE\", \"BRANCA\", \"CINZA\", \"DOURADA\", \"GRENA\", \"LARANJA\", \"MARROM\", \"PRATA\",\n \"PRETA\", \"ROSA\", \"ROXA\", \"VERDE\", \"VERMELHA\", \"FANTASIA\"];\n\n\nexport function getSpecialProperty<TModel, TKey extends keyof TModel>(\n model: TModel,\n key: TKey\n) {\n return model[key];\n}\n\n/**\n * \n */\nexport const makeGenericFaker = (val: any, options: BigObject<Function> | null = null) => {\n return () => {\n if (!val.textMask || !val.textMask.map) {\n return '';\n }\n const newData = val.textMask.map((c: string | any[], index: number) => {\n if (options && options[index]) {\n return options[index]();\n }\n c = c.toString();\n if (c === /\\d/.toString()) {\n return Math.floor(Math.random() * 10).toString()\n } else if (c === /[A-Za-z]/.toString()) {\n return randomLetter(1).toString();\n } else if (c === /\\w/.toString()) {\n return randomLetterOrNumber(1).toString();\n } else if (c.indexOf('/[') === 0) { // /[1-9]/ ou /[5-9]/\n c = c.replace('/[', '').replace(']/', '');\n\n if (c.indexOf('-') > 0) {\n c = c.split('-');\n if (parseInt(c[1])) {\n const mult = c[1] - c[0];\n const plus = parseInt(c[0]);\n return (Math.floor(Math.random() * mult) + plus).toString();\n } else {\n return rand(1, [c[0], c[1]]);\n }\n } else if (c.indexOf('|') > 0) {\n c = c.split('|');\n const index = Math.floor(Math.random() * c.length);\n return c[index];\n }\n\n } else {\n return c;\n }\n });\n return newData.join('');\n };\n}\n\nconst utilsBr = {\n isPresent,\n isArray,\n isString,\n isNumber,\n isNil,\n processCaretTraps,\n allNumbersAreSame,\n getAllDigits,\n getAllWords,\n currencyToNumber,\n numberToCurrency,\n slugify,\n fillString,\n randArray,\n rand,\n randomNumber,\n randomLetter,\n randomLetterOrNumber,\n getSpecialProperty\n}\n\nexport default utilsBr;","import { allNumbersAreSame } from './utils';\nimport { BigObject, MaskType } from './interfaces';\n\n/**\n * BASED ON https://github.com/gammasoft/ie/\n */\n\n\nexport const generateInscricaoEstadual: BigObject<Function> = {\n ac: function (valor: any) {\n if (tamanhoNaoE(valor, 13)) {\n return false;\n }\n\n if (naoComecaCom(valor, '01')) {\n return false;\n }\n\n const base = primeiros(valor, 11);\n\n const primeiroDigito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base));\n const segundoDigito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base + primeiroDigito));\n\n return base + primeiroDigito + segundoDigito;\n },\n\n am: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n\n al: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n if (naoComecaCom(valor, '24')) {\n return false;\n }\n\n // FORMAÇÃO: 24XNNNNND, sendo:\n // 24 – Código do Estado\n // X – Tipo de empresa (0-Normal, 3-Produtor Rural, 5-Substituta, 7- Micro-Empresa Ambulante, 8-Micro-Empresa)\n // NNNNN – Número da empresa\n // D – Dígito de verificação calculado pelo Módulo11, pêsos 2 à 9 da direita para a esquerda, exceto D\n // Exemplo: Número 2 4 0 0 0 0 0 4 D\n // 2 4 X N N N N N D\n // Fonte: http://www.sintegra.gov.br/Cad_Estados/cad_AL.html\n\n const base: any = primeiros(valor);\n\n // Pesos 9 8 7 6 5 4 3 2\n // SOMA = (2 * 4) + (3 * 0) + (4 * 0) + (5 * 0) + (6 * 0) + (7 * 0) + (8 * 4) + (9 * 2) = 58\n const soma = base.split('').reduce((acc: number, v: string, i: number) => {\n return acc + (9 - i) * Number(v)\n }, 0)\n // PRODUTO = 58 * 10 = 580\n const produto = soma * 10\n // RESTO = 580 – INTEIRO(580 / 11)*11 = 580 – (52*11) = 8\n const resto = produto - Math.floor(produto / 11) * 11\n // DÍGITO = 8 - Caso RESTO seja igual a 10 o DÍGITO será 0 (zero)\n const digito = resto === 10 ? 0 : resto\n return base + digito;\n },\n\n ap: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n if (naoComecaCom(valor, '03')) {\n return false;\n }\n\n const base: any = primeiros(valor);\n\n let p: number, d: number;\n\n if (entre(base, 3000001, 3017000)) {\n p = 5;\n d = 0;\n } else if (entre(base, 3017001, 3019022)) {\n p = 9;\n d = 1;\n } else {\n p = 0;\n d = 0;\n }\n\n const resto = mod(p + base, [2, 3, 4, 5, 6, 7, 8, 9, 1]);\n\n let digito: number;\n if (resto === 1) {\n digito = 0;\n } else if (resto === 0) {\n digito = d;\n } else {\n digito = 11 - resto;\n }\n\n return base + digito;\n },\n\n ba: function (valor: any) {\n if (tamanhoNaoE(valor, 8) && tamanhoNaoE(valor)) {\n return false;\n }\n\n const base: any = primeiros(valor, valor.length - 2);\n let primeiroDigito: number, segundoDigito: number;\n\n const segundoMultiplicador = serie(2, 7);\n const primeiroMultiplicador = serie(2, 8);\n\n let primeiroResto: number, segundoResto: number;\n let digitoComparacao = valor.substring(0, 1);\n\n if (tamanhoE(valor, 9)) {\n segundoMultiplicador.push(8);\n primeiroMultiplicador.push(9);\n digitoComparacao = valor.substring(1, 2);\n }\n\n if ('0123458'.split('').indexOf(digitoComparacao) !== -1) {\n segundoResto = mod(base, segundoMultiplicador, 10);\n segundoDigito = segundoResto === 0 ? 0 : 10 - segundoResto;\n\n primeiroResto = mod(base + segundoDigito, primeiroMultiplicador, 10);\n primeiroDigito = primeiroResto === 0 ? 0 : 10 - primeiroResto;\n } else {\n segundoResto = mod(base, segundoMultiplicador);\n segundoDigito = substracaoPor11SeMaiorQue2CasoContrario0(segundoResto);\n\n primeiroResto = mod(base + segundoDigito, primeiroMultiplicador);\n primeiroDigito = substracaoPor11SeMaiorQue2CasoContrario0(primeiroResto);\n }\n\n return base + primeiroDigito + segundoDigito;\n },\n\n ce: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n return calculoTrivialGenerate(valor);\n },\n\n df: function (valor: any) {\n if (tamanhoNaoE(valor, 13)) {\n return false;\n }\n\n if (naoComecaCom(valor, '07') && naoComecaCom(valor, '08')) {\n return false;\n }\n const base: any = primeiros(valor, 11);\n\n const primeiro = substracaoPor11SeMaiorQue2CasoContrario0(mod(base));\n const segundo = substracaoPor11SeMaiorQue2CasoContrario0(mod(base + primeiro));\n return base + primeiro + segundo;\n },\n\n es: function (valor: any) {\n return calculoTrivialGenerate(valor);\n },\n go: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n // Verifica os digitos iniciais do estado\n // Fonte: https://appasp.economia.go.gov.br/Legislacao/arquivos/Secretario/IN/IN_1535_2022.htm\n\n if (['10', '11', '15', '20'].indexOf(valor.substring(0, 2)) === -1) {\n return false;\n }\n\n const base: any = primeiros(valor);\n\n if (base === '11094402') {\n return valor.substr(8) === '1' || valor.substr(8) === '0';\n }\n\n const resto = mod(base);\n let digito: number;\n\n if (resto === 0) {\n digito = 0;\n } else if (resto === 1) {\n if (entre(base, 10103105, 10119997)) {\n digito = 1;\n } else {\n digito = 0;\n }\n } else {\n digito = 11 - resto;\n }\n\n return base + digito;\n },\n ma: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n if (naoComecaCom(valor, '12')) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n\n mg: function (valor: any) {\n if (tamanhoNaoE(valor, 13)) {\n return false;\n }\n\n const base = primeiros(valor, 11);\n\n const baseComZero = valor.substring(0, 3) + '0' + valor.substring(3, 11);\n\n let i = 0;\n const produtorioLiteral = baseComZero.split('').reduceRight(function (anterior, atual) {\n if (i > [2, 1].length - 1) {\n i = 0;\n }\n\n return ([2, 1][i++] * parseInt(atual, 10)).toString() + anterior.toString();\n }, '').split('').reduce(function (anterior, atual) {\n return anterior + parseInt(atual, 10);\n }, 0);\n\n let primeiro: any = ((Math.floor(produtorioLiteral / 10) + 1) * 10) - produtorioLiteral;\n if (primeiro === 10) {\n primeiro = 0;\n }\n\n const segundo = substracaoPor11SeMaiorQue2CasoContrario0(mod(base + primeiro, serie(2, 11)));\n\n return base + primeiro + segundo;\n },\n\n ms: function (valor: any) {\n if (naoComecaCom(valor, '28')) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n mt: function (valor: any) {\n if (tamanhoNaoE(valor, 11) && tamanhoNaoE(valor)) {\n return false;\n }\n\n const base = tamanhoE(valor, 11) ? valor.substring(0, 10) : primeiros(valor);\n return calculoTrivialGenerate(valor, base, true);\n },\n pa: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n if (naoComecaCom(valor, '15') && naoComecaCom(valor, '75')) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n\n pb: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n\n pe: function (valor: any) {\n const base: any = valor.substring(0, valor.length - 2);\n\n const restoPrimeiro = mod(base);\n const primeiro = 11 - restoPrimeiro >= 10 ? 0 : 11 - restoPrimeiro;\n\n const restoSegundo = mod(base + primeiro);\n const segundo = 11 - restoSegundo >= 10 ? 0 : 11 - restoSegundo;\n\n return base + primeiro + segundo;\n },\n\n pi: function (valor: any) {\n return calculoTrivialGenerate(valor);\n },\n\n pr: function (valor: any) {\n if (tamanhoNaoE(valor, 10)) {\n return false;\n }\n\n const base = primeiros(valor);\n\n const restoPrimeiro = mod(base, serie(2, 7));\n const primeiro = 11 - restoPrimeiro >= 10 ? 0 : 11 - restoPrimeiro;\n\n const restoSegundo = mod(base + primeiro, serie(2, 7));\n const segundo = 11 - restoSegundo >= 10 ? 0 : 11 - restoSegundo;\n\n return base + primeiro + segundo;\n },\n rj: function (valor: any) {\n if (tamanhoNaoE(valor, 8)) {\n return false;\n }\n\n const base = primeiros(valor, 7);\n const digito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base, serie(2, 7)));\n\n return base + digito;\n },\n\n rn: function (valor: any) {\n if (tamanhoNaoE(valor) && tamanhoNaoE(valor, 10)) {\n return false;\n }\n\n if (naoComecaCom(valor, '20')) {\n return false;\n }\n\n const base = valor.substring(0, valor.length - 1);\n\n const multiplicadores = serie(2, 9);\n if (tamanhoE(valor, 10)) {\n multiplicadores.push(10);\n }\n\n const resto = (mod(base, multiplicadores) * 10) % 11;\n const digito = resto === 10 ? 0 : resto;\n\n return base + digito;\n },\n ro: function (valor: any) {\n let base: any, digito: number, resultadoMod: number;\n\n if (tamanhoE(valor, 9)) {\n base = valor.substring(3, 8);\n digito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base));\n\n return valor === valor.substring(0, 3) + base + digito;\n } else if (tamanhoE(valor, 14)) {\n base = primeiros(valor, 13);\n resultadoMod = mod(base);\n digito = resultadoMod <= 1 ? 1 : 11 - resultadoMod;\n\n return base + digito;\n } else {\n return false;\n }\n },\n rr: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n if (naoComecaCom(valor, '24')) {\n return false;\n }\n\n const base = primeiros(valor);\n const digito = mod(base, [8, 7, 6, 5, 4, 3, 2, 1], 9);\n\n return base + digito;\n },\n\n rs: function (valor: any) {\n if (tamanhoNaoE(valor, 10)) {\n return false;\n }\n\n const base = primeiros(valor, 9);\n return calculoTrivialGenerate(valor, base, true);\n },\n\n sc: function (valor: any) {\n return calculoTrivialGenerate(valor);\n },\n\n se: function (valor: any) {\n if (tamanhoNaoE(valor)) {\n return false;\n }\n\n return calculoTrivialGenerate(valor);\n },\n\n sp: function (valor: any) {\n valor = valor.toUpperCase();\n\n let segundaBase: string;\n\n if (valor.substr(0, 1) === 'P') {\n if (tamanhoNaoE(valor, 13)) {\n return false;\n }\n\n const base = valor.substring(1, 9);\n segundaBase = valor.substring(10, 13);\n const resto = mod(base, [10, 8, 7, 6, 5, 4, 3, 1]).toString();\n const digito = resto.length > 1 ? resto[1] : resto[0];\n\n return 'P' + base + digito + segundaBase;\n } else {\n if (tamanhoNaoE(valor, 12)) {\n return false;\n }\n\n const primeiraBase = primeiros(valor);\n segundaBase = valor.substring(9, 11);\n\n const primeiroResto = mod(primeiraBase, [10, 8, 7, 6, 5, 4, 3, 1]).toString();\n const primeiro = primeiroResto.length > 1 ? primeiroResto[1] : primeiroResto[0];\n\n const segundoResto = mod(primeiraBase + primeiro + segundaBase, serie(2, 10)).toString();\n const segundo = segundoResto.length > 1 ? segundoResto[1] : segundoResto[0];\n\n return primeiraBase + primeiro + segundaBase + segundo;\n }\n },\n\n to: function (valor: any) {\n if (tamanhoNaoE(valor) && tamanhoNaoE(valor, 11)) {\n return false;\n }\n\n let base: any;\n\n if (tamanhoE(valor, 11)) {\n if (['01', '02', '03', '99'].indexOf(valor.substring(2, 4)) === -1) {\n return false;\n }\n\n base = valor.substring(0, 2) + valor.substring(4, 10);\n } else {\n base = primeiros(valor);\n }\n\n const digito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base));\n\n return valor.substring(0, valor.length - 1) + digito;\n },\n};\n\n\n\n\nconst funcoes: BigObject<Function> = {\n ac: function (valor: any) {\n return valor === generateInscricaoEstadual['ac'](valor);\n },\n\n am: function (valor: any) {\n return valor === generateInscricaoEstadual['am'](valor);\n },\n\n al: function (valor: any) {\n return valor === generateInscricaoEstadual['al'](valor);\n },\n\n ap: function (valor: any) {\n return valor === generateInscricaoEstadual['ap'](valor);\n },\n\n ba: function (valor: any) {\n return valor === generateInscricaoEstadual['ba'](valor);\n },\n\n ce: function (valor: any) {\n return valor === generateInscricaoEstadual['ce'](valor);\n },\n\n df: function (valor: any) {\n return valor === generateInscricaoEstadual['df'](valor);\n },\n\n es: function (valor: any) {\n return valor === generateInscricaoEstadual['es'](valor);\n },\n go: function (valor: any) {\n return valor === generateInscricaoEstadual['go'](valor);\n },\n ma: function (valor: any) {\n return valor === generateInscricaoEstadual['ma'](valor);\n },\n\n mg: function (valor: any) {\n return valor === generateInscricaoEstadual['mg'](valor);\n },\n\n ms: function (valor: any) {\n return valor === generateInscricaoEstadual['ms'](valor);\n },\n mt: function (valor: any) {\n return valor === generateInscricaoEstadual['mt'](valor);\n },\n pa: function (valor: any) {\n return valor === generateInscricaoEstadual['pa'](valor);\n },\n\n pb: function (valor: any) {\n return valor === generateInscricaoEstadual['pb'](valor);\n },\n\n pe: function (valor: any) {\n return valor === generateInscricaoEstadual['pe'](valor);\n },\n\n pi: function (valor: any) {\n return valor === generateInscricaoEstadual['pi'](valor);\n },\n\n pr: function (valor: any) {\n return valor === generateInscricaoEstadual['pr'](valor);\n },\n rj: function (valor: any) {\n return valor === generateInscricaoEstadual['rj'](valor);\n },\n\n rn: function (valor: any) {\n return valor === generateInscricaoEstadual['rn'](valor);\n },\n ro: function (valor: any) {\n return valor === generateInscricaoEstadual['ro'](valor);\n },\n rr: function (valor: any) {\n return valor === generateInscricaoEstadual['rr'](valor);\n },\n\n rs: function (valor: any) {\n return valor === generateInscricaoEstadual['rs'](valor);\n },\n\n sc: function (valor: any) {\n return valor === generateInscricaoEstadual['sc'](valor);\n },\n\n se: function (valor: any) {\n return valor === generateInscricaoEstadual['se'](valor);\n },\n\n sp: function (valor: string | boolean) {\n return valor === generateInscricaoEstadual['sp'](valor);\n },\n\n to: function (valor: any) {\n return valor === generateInscricaoEstadual['to'](valor);\n },\n};\n\n\n\n\nexport function validate_inscricaoestadual(ie: string | Array<string>, estado: any) {\n if (eIndefinido(estado) || estado === null) {\n estado = '';\n }\n\n estado = estado.toLowerCase();\n\n if (estado !== '' && !(estado in funcoes)) {\n return new Error('estado não é válido');\n }\n\n if (eIndefinido(ie)) {\n return new Error('ie deve ser fornecida');\n }\n\n if (Array.isArray(ie)) {\n let retorno = true;\n ie.forEach(function (i) {\n if (!validate_inscricaoestadual(i, estado)) {\n retorno = false;\n }\n });\n return retorno;\n }\n\n if (typeof ie !== 'string') {\n return new Error('ie deve ser string ou array de strings');\n }\n\n if (!allNumbersAreSame(ie)) {\n return new Error('ie com todos dígitos iguais');\n }\n\n if (ie.match(/^ISENTO$/i)) {\n return true;\n }\n\n ie = ie.replace(/[\\.|\\-|\\/|\\s]/g, '');\n\n if (estado === '') {\n if (lookup(ie)) {\n return true;\n } else {\n return false;\n }\n }\n\n if (/^\\d+$/.test(ie) || estado === 'sp' || funcoes[estado]) {\n return funcoes[estado](ie);\n }\n\n\n return false;\n}\n\nexport const MASKSIE: BigObject<MaskType> = {\n ac: {\n text: '01.004.823/001-12',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n al: {\n text: '240000048',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n am: {\n text: '04.145.871-0',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n ap: {\n text: '240000048',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n ba: {\n text: '1234567-48',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numberLength = getSizeNumbers(userInput);\n if (!userInput || numberLength > 8) {\n return [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n } else {\n return [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n }\n }\n },\n ce: {\n text: '06.000001-5',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n df: {\n text: '06 000001 123-55',\n textMask: [/\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n es: {\n text: '082.560.67-6',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, '-', /\\d/]\n },\n go: {\n text: '06.000.001-5',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n ma: {\n text: '12.104.376-2',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n mg: {\n text: '001.819.263/0048',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/]\n },\n ms: {\n text: '001819263',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n mt: {\n text: '0018192630-1',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n pa: {\n text: '06-000001-5',\n textMask: [/\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n pb: {\n text: '06000001-5',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n pe: {\n text: '0192310-24',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n pi: {\n text: '19.301.656-7',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n pr: {\n text: '19301656-78',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n rj: {\n text: '20.040.04-1',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, '-', /\\d/]\n },\n rn: {\n text: '20.040.040-1',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numberLength = getSizeNumbers(userInput);\n\n if (!userInput || numberLength > 9) {\n return [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n } else {\n return [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/];\n }\n }\n },\n ro: {\n text: '101.62521-3',\n textMask: [/\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n rr: {\n text: '24006628-1',\n textMask: [/\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n rs: {\n text: '024/0440013',\n textMask: [/\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n sc: {\n text: '271.234.563',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/]\n },\n se: {\n text: '27123456-3',\n textMask: [/\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n sp: {\n text: '114.814.878.119',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/]\n },\n to: {\n text: '11 81 4878119',\n textMask: [/\\d/, /\\d/, ' ', /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n};\n\nfunction getSizeNumbers(userInput: string) {\n const numbers: any = userInput.match(/\\d/g);\n let numberLength = 0;\n if (numbers) {\n numberLength = numbers.join('').length;\n }\n return numberLength\n}\n\nfunction eIndefinido(objeto: any) {\n return typeof objeto === typeof undefined;\n}\n\nfunction tamanhoNaoE(string: { length: number; }, tamanho = 9) {\n if (eIndefinido(tamanho)) {\n tamanho = 9;\n }\n\n return string.length !== tamanho;\n}\n\nfunction tamanhoE(string: any[], tamanho: number) {\n return !tamanhoNaoE(string, tamanho);\n}\n\nfunction serie(de: number, ate: number) {\n const resultado = [];\n\n while (de <= ate) {\n resultado.push(de++);\n }\n\n return resultado;\n}\n\nfunction primeiros(string: any, quantidade = 8) {\n if (eIndefinido(quantidade)) {\n quantidade = 8;\n }\n\n return string.substring(0, quantidade);\n}\n\nfunction substracaoPor11SeMaiorQue2CasoContrario0(valor: number) {\n return valor < 2 ? 0 : 11 - valor;\n}\n\nfunction mod(valor: string, multiplicadores = serie(2, 9), divisor = 11) {\n if (eIndefinido(divisor)) {\n divisor = 11;\n }\n\n if (eIndefinido(multiplicadores)) {\n multiplicadores = serie(2, 9);\n }\n\n let i = 0;\n\n return valor.split('').reduceRight(function (anterior: number, atual: string) {\n if (i > multiplicadores.length - 1) {\n i = 0;\n }\n\n return (multiplicadores[i++] * parseInt(atual, 10)) + anterior;\n }, 0) % divisor;\n}\n\nfunction calculoTrivialGenerate(valor: any, base: any = null, validarTamanho = false) {\n if (!validarTamanho && tamanhoNaoE(valor)) {\n return false;\n }\n if (eIndefinido(base)) {\n base = primeiros(valor);\n }\n if (!base) {\n base = primeiros(valor);\n }\n\n const digito = substracaoPor11SeMaiorQue2CasoContrario0(mod(base));\n\n return base + digito;\n}\n\nfunction naoComecaCom(string: any, valor: string) {\n return string.substring(0, valor.length) !== valor;\n}\n\nfunction entre(valor: string | number, limiteInferior: number, limiteSuperior: number) {\n if (typeof valor === 'string') {\n valor = parseInt(valor, 10);\n }\n\n return valor >= limiteInferior && valor <= limiteSuperior;\n}\n\n\nfunction lookup(ie: any) {\n const resultado = [];\n\n for (const estado in funcoes) {\n if (funcoes[estado](ie)) {\n resultado.push(estado);\n }\n }\n\n if (tamanhoE(resultado, 0)) {\n return false;\n } else {\n return resultado;\n }\n}\n\n","\n\nexport const PLACAS_RANGE = [\n ['AAA0001', 'BEZ9999', 'PR', '02/1990'],\n ['BFA0001', 'GKI9999', 'SP', '10/1991'],\n ['GKJ0001', 'HOK9999', 'MG', '09/1991'],\n ['HOL0001', 'HQE9999', 'MA', '01/1992'],\n ['HQF0001', 'HTW9999', 'MS', '03/1992'],\n ['HTX0001', 'HZA9999', 'CE', '10/1992'],\n ['HZB0001', 'IAP9999', 'SE', '09/1993'],\n ['IAQ0001', 'JDO9999', 'RS', '03/1992'],\n ['JDP0001', 'JKR9999', 'DF', '04/1994'],\n ['JKS0001', 'JSZ9999', 'BA', '08/1993'],\n ['JTA0001', 'JWE9999', 'PA', '07/1993'],\n ['JWF0001', 'JXY9999', 'AM', '09/1993'],\n ['JXZ0001', 'KAU9999', 'MT', '09/1993'],\n ['KAV0001', 'KFC9999', 'GO', '05/1994'],\n ['KFD0001', 'KME9999', 'PE', '08/1994'],\n ['KMF0001', 'LVE9999', 'RJ', '05/1994'],\n ['LVF0001', 'LWQ9999', 'PI', '04/1996'],\n ['LWR0001', 'MMM9999', 'SC', '06/1996'],\n ['MMN0001', 'MOW9999', 'PB', '07/1996'],\n ['MOX0001', 'MTZ9999', 'ES', '12/1995'],\n ['MUA0001', 'MVK9999', 'AL', '08/1996'],\n ['MVL0001', 'MXG9999', 'TO', '11/1996'],\n ['MXH0001', 'MZM9999', 'RN', '06/1998'],\n ['MZN0001', 'NAG9999', 'AC', '06/1998'],\n ['NAH0001', 'NBA9999', 'RR', '07/1998'],\n ['NBB0001', 'NEH9999', 'RO', '07/1998'],\n ['NEI0001', 'NFB9999', 'AP', '09/1998'],\n ['NFC0001', 'NGZ9999', 'GO', '08/2003'],\n ['NHA0001', 'NHT9999', 'MA', '12/2006'],\n ['NHU0001', 'NIX9999', 'PI', '05/2007'],\n ['NIY0001', 'NJW9999', 'MT', '10/2007'],\n ['NJX0001', 'NLU9999', 'GO', '11/2007'],\n ['NLV0001', 'NMO9999', 'AL', '01/2008'],\n ['NMP0001', 'NNI9999', 'MA', '05/2008'],\n ['NNJ0001', 'NOH9999', 'RN', '07/2008'],\n ['NOI0001', 'NPB9999', 'AM', '07/2008'],\n ['NPC0001', 'NPQ9999', 'MT', '09/2008'],\n ['NPR0001', 'NQK9999', 'PB', '11/2008'],\n ['NQL0001', 'NRE9999', 'CE', '12/2008'],\n ['NRF0001', 'NSD9999', 'MS', '11/2009'],\n ['NSE0001', 'NTC9999', 'PA', '11/2009'],\n ['NTD0001', 'NTW9999', 'BA', '02/2010'],\n ['NTX0001', 'NUG9999', 'MT', '03/2010'],\n ['NUH0001', 'NUL9999', 'RR', '06/2010'],\n ['NUM0001', 'NVF9999', 'CE', '06/2010'],\n ['NVG0001', 'NVN9999', 'SE', '03/2010'],\n ['NVO0001', 'NWR9999', 'GO', '03/2010'],\n ['NWS0001', 'NXQ9999', 'MA', '07/2010'],\n ['NXR0001', 'NXT9999', 'AC', '05/2011'],\n ['NXU0001', 'NXW9999', 'PE', '07/2010'],\n ['NXX0001', 'NYG9999', 'MG', '10/2011'],\n ['NYH0001', 'NZZ9999', 'BA', '10/2010'],\n ['OAA0001', 'OAO9999', 'AM', '12/2010'],\n ['OAP0001', 'OBS9999', 'MT', '05/2011'],\n ['OBT0001', 'OCA9999', 'PA', '07/2011'],\n ['OCB0001', 'OCU9999', 'CE', '02/2011'],\n ['OCV0001', 'ODT9999', 'ES', '05/2011'],\n ['ODU0001', 'OEI9999', 'PI', '09/2011'],\n ['OEJ0001', 'OES9999', 'SE', '08/2011'],\n ['OET0001', 'OFH9999', 'PB', '04/2011'],\n ['OFI0001', 'OFW9999', 'PA', '03/2011'],\n ['OFX0001', 'OGG9999', 'PB', '06/2011'],\n ['OGH0001', 'OHA9999', 'GO', '04/2011'],\n ['OHB0001', 'OHK9999', 'AL', '09/2011'],\n ['OHL0001', 'OHW9999', 'RO', '11/2011'],\n ['OHX0001', 'OIQ9999', 'CE', '12/2011'],\n ['OIR0001', 'OJQ9999', 'MA', '01/2012'],\n ['OJR0001', 'OKC9999', 'RN', '04/2012'],\n ['OKD0001', 'OKH9999', 'SC', '02/2014'],\n ['OKI0001', 'OLG9999', 'BA', '10/2011'],\n ['OLH0001', 'OLN9999', 'TO', '02/2012'],\n ['OLO0001', 'OMH9999', 'MG', '03/2012'],\n ['OMI0001', 'OOF9999', 'GO', '04/2012'],\n ['OOG0001', 'OOU9999', 'MS', '02/2012'],\n ['OOV0001', 'ORC9999', 'MG', '06/2012'],\n ['ORD0001', 'ORM9999', 'AL', '01/2012'],\n ['ORN0001', 'OSV9999', 'CE', '07/2012'],\n ['OSW0001', 'OTZ9999', 'PA', '08/2012'],\n ['OUA0001', 'OUE9999', 'PI', '11/2012'],\n ['OUF0001', 'OVD9999', 'BA', '12/2012'],\n ['OVE0001', 'OVF9999', 'ES', '12/2012'],\n ['OVG0001', 'OVG9999', 'AC', '05/2013'],\n ['OVH0001', 'OVL9999', 'ES', '07/2013'],\n ['OVM0001', 'OVV9999', 'DF', '11/2013'],\n ['OVW0001', 'OVY9999', 'PI', '10/2013'],\n ['OVZ0001', 'OWG9999', 'RN', '06/2013'],\n ['OWH0001', 'OXK9999', 'MG', '10/2013'],\n ['OXL0001', 'OXL9999', 'RO', '11/2013'],\n ['OXM0001', 'OXM9999', 'AM', '11/2013'],\n ['OXN0001', 'OXN9999', 'AL', '11/2013'],\n ['OXO0001', 'OXO9999', 'PB', '11/2013'],\n ['OXP0001', 'OXP9999', 'AC', '12/2013'],\n ['OXQ0001', 'OXZ9999', 'MA', '04/2014'],\n ['OYA0001', 'OYC9999', 'TO', '11/2013'],\n ['OYD0001', 'OYK9999', 'ES', '12/2013'],\n ['OYL0001', 'OYZ9999', 'PE', '02/2014'],\n ['OZA0001', 'OZA9999', 'CE', '01/2014'],\n ['OZB0001', 'OZB9999', 'SE', '01/2014'],\n ['OZC0001', 'OZV9999', 'BA', '03/2014'],\n ['OZW0001', 'PBZ9999', 'DF', '05/2014'],\n ['PCA0001', 'PED9999', 'PE', '12/2014'],\n ['PEE0001', 'PFQ9999', 'PE', '09/2010'],\n ['PFR0001', 'PGK9999', 'PE', '07/2012'],\n ['PGL0001', 'PGU9999', 'PE', '10/2013'],\n ['PGV0001', 'PGZ9999', 'PE', '12/2014'],\n ['PHA0001', 'PHZ9999', 'AM', '06/2014'],\n ['PIA0001', 'PIZ9999', 'PI', '06/2014'],\n ['PJA0001', 'PLZ9999', 'BA', '10/2014'],\n ['PMA0001', 'POZ9999', 'CE', '06/2014'],\n ['PPA0001', 'PPZ9999', 'ES', '08/2014'],\n ['PQA0001', 'PRZ9999', 'GO', '03/2015'],\n ['PSA0001', 'PTZ9999', 'MA', '12/2014'],\n ['PUA0001', 'PZZ9999', 'MG', '05/2014'],\n ['QAA0001', 'QAZ9999', 'MS', '12/2014'],\n ['QBA0001', 'QCZ9999', 'MT', '05/2014'],\n ['QDA0001', 'QEZ9999', 'PA', '10/2014'],\n ['QFA0001', 'QFZ9999', 'PB', '05/2014'],\n ['QGA0001', 'QGZ9999', 'RN', '09/2014'],\n ['QHA0001', 'QJZ9999', 'SC', '05/2014'],\n ['QKA0001', 'QKM9999', 'TO', '11/2014'],\n ['QKN0001', 'QKZ9999', 'SE', '06/2014'],\n ['QLA0001', 'QLM9999', 'AL', '09/2015'],\n ['QLN0001', 'QLT9999', 'AP', '01/2015'],\n ['QLU0001', 'QLZ9999', 'AC', '08/2014'],\n ['QMA0001', 'QMP9999', 'SE', '03/2017'],\n ['QMQ0001', 'QQZ9999', 'MG', '07/2017'],\n ['QRA0001', 'QRA9999', 'RO', '11/2017'],\n ['QRB0001', 'QRZ9999', 'ES', '05/2018'],\n ['QSA0001', 'QSZ9999', 'PB', '04/2018'],\n ['QTA0001', 'QTB9999', 'RO', '08/2018'],\n ['QTC0001', 'RIN9999', 'BR', '00/0000'],\n ['RIO0001', 'RIO9999', 'RJ', '09/2018'],\n ['RLA0001', 'SAU9999', 'BR', '00/0000'],\n ['SAV0001', 'SAV9999', 'SP', '09/2009'],\n];\n\nexport const PLACAS_INVALID = { start: 'SAW0001', end: 'ZZZ9999' } // || Sequências ainda não definidas\n\nexport function validate_placa(placa: string | number, incluiMercosul?: boolean) {\n const placaClean = placa.toString()\n .replace(/-/g, '')\n .replace(/ /g, '')\n .toUpperCase();\n const regex = {\n legadoBR: /^[A-Z]{3}[0-9]{4}$/,\n mercosulBR: /^[A-Z]{3}[0-9]{1}[A-Z]{1}[0-9]{2}$/,\n mercosulAR: /^[A-Z]{2}[0-9]{3}[A-Z]{2}$|^[A-Z]{1}[0-9]{3}[A-Z]{3}$/,\n mercosulBO: /^[A-Z]{2}[0-9]{5}$/,\n mercosulPY: /^[A-Z]{4}[0-9]{3}$|^[0-9]{3}[A-Z]{4}$/,\n mercosulUY: /^[A-Z]{3}[0-9]{4}$/,\n }\n const isLegadoBRInvalid =\n placaClean >= PLACAS_INVALID.start && placaClean <= PLACAS_INVALID.end;\n if ((regex.legadoBR.test(placaClean) && !isLegadoBRInvalid)\n || (regex.mercosulBR.test(placaClean))\n || (incluiMercosul && (\n (regex.mercosulAR.test(placaClean))\n || (regex.mercosulBO.test(placaClean))\n || (regex.mercosulPY.test(placaClean))\n || (regex.mercosulUY.test(placaClean))\n ))) {\n return true;\n }\n return false;\n}\n","import { ESTADOS_SIGLA } from './estados';\nimport { getAllDigits, fillString, modulo11Custom } from './utils';\n\n/**\n * \n * @param uf - UF do número da guia. Ex: 35(SP), 81(PE)\n * @param ano - ANO do número da guia. Ex: 2018, 2019\n * @param tipo - TIPO da guia. Aih = 1, APAC = 2\n */\nexport function create_aih(value: string | number | any[]) {\n value = getAllDigits(value.toString());\n if (value.length > 12) {\n value = value.toString().substr(0, value.length - 1);\n }\n const cod = parseInt(value);\n const calc = Math.ceil(cod - (cod / 11));\n const digito = calc.toString().substr(-1);\n return digito;\n}\n\nexport function create_certidao(value: string) {\n\n if (value.length > 30) {\n value = value.substring(0, value.length - 2);\n }\n let b1 = parseInt(value.slice(29));\n let b2 = parseInt(value.slice(28, 29));\n let b3 = parseInt(value.slice(27, 28));\n let b4 = parseInt(value.slice(26, 27));\n let b5 = parseInt(value.slice(25, 26));\n let b6 = parseInt(value.slice(24, 25));\n let b7 = parseInt(value.slice(23, 24));\n let b8 = parseInt(value.slice(22, 23));\n let b9 = parseInt(value.slice(21, 22));\n let b10 = parseInt(value.slice(20, 21));\n let b11 = parseInt(value.slice(19, 20));\n let b12 = parseInt(value.slice(18, 19));\n let b13 = parseInt(value.slice(17, 18));\n let b14 = parseInt(value.slice(16, 17));\n let b15 = parseInt(value.slice(15, 16));\n let b16 = parseInt(value.slice(14, 15));\n let b17 = parseInt(value.slice(13, 14));\n let b18 = parseInt(value.slice(12, 13));\n let b19 = parseInt(value.slice(11, 12));\n let b20 = parseInt(value.slice(10, 11));\n let b21 = parseInt(value.slice(9, 10));\n let b22 = parseInt(value.slice(8, 9));\n let b23 = parseInt(value.slice(7, 8));\n let b24 = parseInt(value.slice(6, 7));\n let b25 = parseInt(value.slice(5, 6));\n let b26 = parseInt(value.slice(4, 5));\n let b27 = parseInt(value.slice(3, 4));\n let b28 = parseInt(value.slice(2, 3));\n let b29 = parseInt(value.slice(1, 2));\n let b30 = parseInt(value.slice(0, 1));\n\n let certPriDig = (b1 * 9 + b2 * 8 + b3 * 7 + b4 * 6 + b5 * 5 + b6 * 4 + b7 * 3 + b8 * 2 + b9 * 1 + b10 * 0 + b11 * 10 + b12 * 9 + b13 * 8 + b14 * 7 + b15 * 6 + b16 * 5 + b17 * 4 + b18 * 3 + b19 * 2 + b20 * 1 + b21 * 0 + b22 * 10 + b23 * 9 + b24 * 8 + b25 * 7 + b26 * 6 + b27 * 5 + b28 * 4 + b29 * 3 + b30 * 2) % 11;\n if (certPriDig == 10) { certPriDig = 1; }\n let certSegDig = (certPriDig * 9 + b1 * 8 + b2 * 7 + b3 * 6 + b4 * 5 + b5 * 4 + b6 * 3 + b7 * 2 + b8 * 1 + b9 * 0 + b10 * 10 + b11 * 9 + b12 * 8 + b13 * 7 + b14 * 6 + b15 * 5 + b16 * 4 + b17 * 3 + b18 * 2 + b19 * 1 + b20 * 0 + b21 * 10 + b22 * 9 + b23 * 8 + b24 * 7 + b25 * 6 + b26 * 5 + b27 * 4 + b28 * 3 + b29 * 2 + b30 * 1) % 11;\n if (certSegDig == 10) { certSegDig = 1; }\n let certDV: any = certPriDig * 10 + certSegDig;\n if (certDV == 0) { certDV = \"00\"; }\n if (certDV > 0 && certDV < 10) { certDV = \"0\" + certDV; }\n\n return certDV.toString();\n}\n\nexport function create_cnhespelho(value: string) {\n let v1 = modulo11Custom(value.substr(0, value.length - 1), 1, 8, false);\n return v1\n}\n\nexport function create_renachestadual(value: string) {\n\n const state = value.substr(0, 2).toLowerCase()\n if (!ESTADOS_SIGLA.includes(state)) {\n return false\n }\n\n let digits = value.substr(2)\n digits = digits.replace(/[^\\d]/g, '');\n if (digits.length !== 9) {\n return false;\n }\n\n let v1 = modulo11Custom(digits.substr(0, digits.length - 1), 1, 11);\n return '' + v1\n}\n\n/**\n * \n * @param value \n * @returns \n */\nexport function create_renachseguranca(value: string) {\n value = value.replace(/[^\\d]+/g, '');\n if (value.length !== 11) {\n return false;\n }\n\n let v1 = modulo11Custom(value.substr(0, value.length - 1), 1, 11);\n return \"\" + v1;\n}\n\n/**\n * Dígito verificador da CNH não é mais o módulo 11 conforme últimas resoluções\n * @param value \n * @returns \n */\nexport function create_cnh(value: string) {\n value = value.replace(/[^\\d]+/g, '');\n\n if (value.length != 11 || value === '0') {\n return false;\n }\n // let v1 = modulo11Custom(value.substr(0, value.length - 2), 2);\n // if (v1 === '10') v1 = '00'\n let v1 = value.substr(-2)\n return v1;\n}\n\nexport function create_cnpj(cnpj: string) {\n cnpj = cnpj.replace(/[^\\d]+/g, '');\n\n if (cnpj === '') {\n return false;\n }\n\n if (cnpj.length !== 14) {\n return false;\n }\n\n // Elimina CNPJs invalidos conhecidos\n if (cnpj === '00000000000000' ||\n cnpj === '11111111111111' ||\n cnpj === '22222222222222' ||\n cnpj === '33333333333333' ||\n cnpj === '44444444444444' ||\n cnpj === '55555555555555' ||\n cnpj === '66666666666666' ||\n cnpj === '77777777777777' ||\n cnpj === '88888888888888' ||\n cnpj === '99999999999999') {\n return false;\n }\n\n // Valida DVs\n let tamanho: number = cnpj.length - 2\n let numeros: any = cnpj.substring(0, tamanho);\n let soma: any = 0;\n let pos = tamanho - 7;\n for (let i = tamanho; i >= 1; i--) {\n soma += numeros.charAt(tamanho - i) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n\n }\n const resultados = [0, 0];\n resultados[0] = soma % 11 < 2 ? 0 : 11 - soma % 11;\n\n tamanho = tamanho + 1;\n numeros = cnpj.substring(0, tamanho);\n soma = 0;\n pos = tamanho - 7;\n for (let i = tamanho; i >= 1; i--) {\n soma += numeros.charAt(tamanho - i) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n }\n resultados[1] = soma % 11 < 2 ? 0 : 11 - soma % 11;\n return resultados;\n}\n\nexport function create_cns(number: string) {\n number = getAllDigits(number);\n let somaInicial = 0;\n for (let i = 0; i < number.length - 1; i++) {\n somaInicial += parseInt(number[i]) * (15 - i);\n }\n let soma = somaInicial;\n let rest = 0;\n while (soma % 11 !== 0) {\n rest++;\n soma = somaInicial + (rest * 1)\n }\n return number.substr(-2, 1) + rest;\n}\n\nexport function create_cpf(strCPF: string) {\n strCPF = strCPF.replace(/[^\\d]+/g, '');\n if (strCPF === '00000000000') {\n return false;\n }\n\n // const r1 = modulo11(strCPF.substr(0, strCPF.length - 2))\n // const r2 = modulo11(strCPF.substr(0, strCPF.length - 2) + '' + r1)\n // const restos = [\n // r1, r2\n // ];\n\n const restoscustom = modulo11Custom(strCPF.substr(0, strCPF.length - 2), 2, 12);\n return restoscustom\n}\n\nexport function create_cartaocredito(number: string) {\n\n // if (number.length > 18) { alert(\"Erro. A rotina não abrange cartões\\ncom mais de 18 dígitos (fora o DV).\\nIntroduza 18 dígitos, no máximo.\"); }\n\n number = \"00000000000000000\" + number;\n number = number.slice(number.length - 18);\n\n let b1 = parseInt(number.slice(17));\n let b2 = parseInt(number.slice(16, 17));\n let b3 = parseInt(number.slice(15, 16));\n let b4 = parseInt(number.slice(14, 15));\n let b5 = parseInt(number.slice(13, 14));\n let b6 = parseInt(number.slice(12, 13));\n let b7 = parseInt(number.slice(11, 12));\n let b8 = parseInt(number.slice(10, 11));\n let b9 = parseInt(number.slice(9, 10));\n let b10 = parseInt(number.slice(8, 9));\n let b11 = parseInt(number.slice(7, 8));\n let b12 = parseInt(number.slice(6, 7));\n let b13 = parseInt(number.slice(5, 6));\n let b14 = parseInt(number.slice(4, 5));\n let b15 = parseInt(number.slice(3, 4));\n let b16 = parseInt(number.slice(2, 3));\n let b17 = parseInt(number.slice(1, 2));\n let b18 = parseInt(number.slice(0, 1));\n\n\n let ci17 = b1 * 2; if (ci17 > 9) { ci17 = ci17 - 9; }\n let ci1516 = b3 * 2; if (ci1516 > 9) { ci1516 = ci1516 - 9; }\n let ci1314 = b5 * 2; if (ci1314 > 9) { ci1314 = ci1314 - 9; }\n let ci1112 = b7 * 2; if (ci1112 > 9) { ci1112 = ci1112 - 9; }\n let ci910 = b9 * 2; if (ci910 > 9) { ci910 = ci910 - 9; }\n let ci78 = b11 * 2; if (ci78 > 9) { ci78 = ci78 - 9; }\n let ci56 = b13 * 2; if (ci56 > 9) { ci56 = ci56 - 9; }\n let ci34 = b15 * 2; if (ci34 > 9) { ci34 = ci34 - 9; }\n let ci12 = b17 * 2; if (ci12 > 9) { ci12 = ci12 - 9; }\n let ci1617 = b2;\n let ci1415 = b4;\n let ci1213 = b6;\n let ci1011 = b8;\n let ci89 = b10;\n let ci67 = b12;\n let ci45 = b14;\n let ci23 = b16;\n let ci01 = b18;\n\n let ccredDig = (ci1617 + ci1415 + ci1213 + ci1011 + ci89 + ci67 + ci45 + ci23 + ci01 + ci17 + ci1516 + ci1314 + ci1112 + ci910 + ci78 + ci56 + ci34 + ci12) % 10;\n ccredDig = 10 - ccredDig; if (ccredDig == 10) { ccredDig = 0; }\n\n return ccredDig;\n}\n\nexport function create_ect(number: string) {\n number = getAllDigits(number);\n number = \"0000000\" + number;\n number = number.slice(number.length - 8);\n\n let b1 = parseInt(number.slice(7));\n let b2 = parseInt(number.slice(6, 7));\n let b3 = parseInt(number.slice(5, 6));\n let b4 = parseInt(number.slice(4, 5));\n let b5 = parseInt(number.slice(3, 4));\n let b6 = parseInt(number.slice(2, 3));\n let b7 = parseInt(number.slice(1, 2));\n let b8 = parseInt(number.slice(0, 1));\n\n let regEctDig = (b1 * 7 + b2 * 9 + b3 * 5 + b4 * 3 + b5 * 2 + b6 * 4 + b7 * 6 + b8 * 8) % 11;\n regEctDig = 11 - regEctDig;\n if (regEctDig == 11) { regEctDig = 5; }\n if (regEctDig == 10) { regEctDig = 0; }\n return regEctDig;\n}\n\nexport function create_pispasep(number: string) {\n\n number = getAllDigits(number);\n let nis = fillString(number, 11, '0');\n\n let d;\n let p = 2, c = 9;\n for (d = 0; c >= 0; c--, (p < 9) ? p++ : p = 2) {\n d += parseInt(nis[c]) * p;\n }\n\n const digit = (((10 * d) % 11) % 10);\n return digit;\n}\n\nexport function create_renavam(renavam: string) {\n let dig1 = 0;\n while (renavam.length < 11) {\n renavam = '0' + renavam;\n }\n\n dig1 = (renavam.charCodeAt(0) - 48) * 3 + (renavam.charCodeAt(1) - 48) * 2 + (renavam.charCodeAt(2) - 48) * 9 + (renavam.charCodeAt(3) - 48) * 8 +\n (renavam.charCodeAt(4) - 48) * 7 + (renavam.charCodeAt(5) - 48) * 6 + (renavam.charCodeAt(6) - 48) * 5 +\n (renavam.charCodeAt(7) - 48) * 4 + (renavam.charCodeAt(8) - 48) * 3 + (renavam.charCodeAt(9) - 48) * 2;\n dig1 = dig1 * 10;\n let resto = (dig1 % 11);\n if (resto === 10) {\n return 0;\n } else {\n return resto;\n }\n}\n\n\n\n/**\n * \n * Font: http://ghiorzi.org/index.htm\n * @param number \n */\nexport function create_processo(number: string) {\n number = getAllDigits(number);\n number = \"00000000000000000\" + number;\n number = number.slice(number.length - 18);\n\n let b1 = parseInt(number.slice(0, 1)) * 10000000000;\n let b2 = parseInt(number.slice(1, 2)) * 1000000000;\n let b3 = parseInt(number.slice(2, 3)) * 100000000;\n let b4 = parseInt(number.slice(3, 4)) * 10000000;\n let b5 = parseInt(number.slice(4, 5)) * 1000000;\n let b6 = parseInt(number.slice(5, 6)) * 100000;\n let b7 = parseInt(number.slice(6, 7)) * 10000;\n let b8 = parseInt(number.slice(7, 8)) * 1000;\n let b9 = parseInt(number.slice(8, 9)) * 100;\n let b10 = parseInt(number.slice(9, 10)) * 10;\n let b11 = parseInt(number.slice(10, 11));\n\n const proc1a11 = b1 + b2 + b3 + b4 + b5 + b6 + b7 + b8 + b9 + b10 + b11;\n const resto1 = proc1a11 % 97;\n\n let b12 = parseInt(number.slice(11, 12)) * 1000000;\n let b13 = parseInt(number.slice(12, 13)) * 100000;\n let b14 = parseInt(number.slice(13, 14)) * 10000;\n let b15 = parseInt(number.slice(14, 15)) * 1000;\n let b16 = parseInt(number.slice(15, 16)) * 100;\n let b17 = parseInt(number.slice(16, 17)) * 10;\n let b18 = parseInt(number.slice(17));\n\n const proc12a18 = b12 + b13 + b14 + b15 + b16 + b17 + b18;\n const resto2 = (resto1 * 10000000 * 100 + proc12a18 * 100) % 97;\n\n let procJudDV: any = 98 - resto2;\n\n if (procJudDV < 10) {\n procJudDV = \"0\" + procJudDV;\n }\n\n let procJudCompl = b1 / 10000 + b2 / 10000 + b3 / 10000 + b4 / 10000 + b5 / 10000 + b6 / 10000 + b7 / 10000 + \"-\" + procJudDV + \".\" + b8 / 1000 + b9 / 100 + b10 / 10 + b11 + \".\" + b12 / 1000000 + \".\" + b13 / 100000 + b14 / 10000 + \".\" + b15 / 1000 + b16 / 100 + b17 / 10 + b18;\n\n procJudCompl = \"000000\" + procJudCompl;\n const result = procJudCompl.slice(procJudCompl.length - 25);\n return result;\n}\n\n\nexport function create_titulo_atual(titulo: string) {\n const tit = titulo;\n let dig1 = 0;\n let dig2 = 0;\n const tam = tit.length;\n const estado = tit.substr(tam - 4, 2);\n titulo = tit.substr(0, tam - 2);\n titulo = '000000000000' + titulo;\n titulo = titulo.substr(titulo.length - 11, titulo.length - 1);\n const exce = (estado === '01') || (estado === '02');\n dig1 = (titulo.charCodeAt(0) - 48) * 2 + (titulo.charCodeAt(1) - 48) * 9 + (titulo.charCodeAt(2) - 48) * 8 +\n (titulo.charCodeAt(3) - 48) * 7 + (titulo.charCodeAt(4) - 48) * 6 + (titulo.charCodeAt(5) - 48) * 5 +\n (titulo.charCodeAt(6) - 48) * 4 + (titulo.charCodeAt(7) - 48) * 3 + (titulo.charCodeAt(8) - 48) * 2;\n let resto = (dig1 % 11);\n if (resto === 0) {\n if (exce) {\n dig1 = 1;\n } else {\n dig1 = 0;\n }\n } else {\n if (resto === 1) {\n dig1 = 0;\n } else {\n dig1 = 11 - resto;\n }\n }\n dig2 = (titulo.charCodeAt(9) - 48) * 4 + (titulo.charCodeAt(10) - 48) * 3 + dig1 * 2;\n resto = (dig2 % 11);\n if (resto === 0) {\n if (exce) {\n dig2 = 1;\n } else {\n dig2 = 0;\n }\n } else {\n if (resto === 1) {\n dig2 = 0;\n } else {\n dig2 = 11 - resto;\n }\n }\n return dig1.toString() + dig2.toString();\n}\n\nexport function create_titulo(titNum: string) {\n titNum = getAllDigits(titNum);\n\n if (titNum.length > 11) {\n titNum = titNum.substr(0, 11);\n }\n\n titNum = \"00000000\" + titNum;\n titNum = titNum.slice(titNum.length - 11);\n\n let a1 = parseInt(titNum.slice(10));\n let a2 = parseInt(titNum.slice(9, 10));\n let a3 = parseInt(titNum.slice(8, 9));\n let a4 = parseInt(titNum.slice(7, 8));\n let a5 = parseInt(titNum.slice(6, 7));\n let a6 = parseInt(titNum.slice(5, 6));\n let a7 = parseInt(titNum.slice(4, 5));\n let a8 = parseInt(titNum.slice(3, 4));\n let a9 = parseInt(titNum.slice(2, 3));\n let a10 = parseInt(titNum.slice(1, 2));\n let a11 = parseInt(titNum.slice(0, 1));\n\n if (a2 * 10 + a1 == 0 || a2 * 10 + a1 > 28) {\n throw new Error(\"Esse nº é suspeito, porque a identificação da \\nUF (últimos 2 dígitos) deve estar entre 01 e 28.\");\n }\n\n let titExcecao1 = 0;\n let titExcecao2 = 0;\n\n let titPriDig = (a3 * 9 + a4 * 8 + a5 * 7 + a6 * 6 + a7 * 5 + a8 * 4 + a9 * 3 + a10 * 2 + a11 * 9) % 11;\n if (titPriDig == 0) { titExcecao1 = 1; }\n if (titPriDig == 10) { titPriDig = 0; }\n if ((a2 * 10 + a1 == 1 || a2 * 10 + a1 == 2) && (titExcecao1 == 1)) { titPriDig = 1; }\n\n let titSegDig = (titPriDig * 9 + a1 * 8 + a2 * 7) % 11;\n if (titSegDig == 0) { titExcecao2 = 1; }\n if (titSegDig == 10) { titSegDig = 0; }\n if ((a2 * 10 + a1 == 1 || a2 * 10 + a1 == 2) && (titExcecao2 == 1)) { titSegDig = 1; }\n\n let titDV: any = titPriDig * 10 + titSegDig;\n if (titDV == 0) { titDV = \"00\"; }\n if (titDV > 0 && titDV < 10) { titDV = \"0\" + titDV; }\n\n return titDV.toString();\n}","import { BigObject } from './interfaces';\n\nexport function rg_sp(number: string) {\n // if(number.length>8){alert(\"Erro. Não existe RG SP\\ncom mais de 8 dígitos.\");}\n\n number = \"0000000\" + number;\n number = number.slice(number.length - 8);\n\n let b1 = parseInt(number.slice(7));\n let b2 = parseInt(number.slice(6, 7));\n let b3 = parseInt(number.slice(5, 6));\n let b4 = parseInt(number.slice(4, 5));\n let b5 = parseInt(number.slice(3, 4));\n let b6 = parseInt(number.slice(2, 3));\n let b7 = parseInt(number.slice(1, 2));\n let b8 = parseInt(number.slice(0, 1));\n\n let cispDig: any = (b1 * 2 + b2 * 3 + b3 * 4 + b4 * 5 + b5 * 6 + b6 * 7 + b7 * 8 + b8 * 9) % 11;\n if (cispDig == 10) {\n cispDig = \"X\";\n }\n\n return cispDig;\n}\n\nexport function rg_rj(number: string) {\n\n\n // if(number.length>8){alert(\"Erro. Não existe RG-RJ/MaSP-MG\\ncom mais de 8 dígitos.\");}\n\n number = \"0000000\" + number;\n number = number.slice(number.length - 8);\n\n let b1 = parseInt(number.slice(7));\n let b2 = parseInt(number.slice(6, 7));\n let b3 = parseInt(number.slice(5, 6));\n let b4 = parseInt(number.slice(4, 5));\n let b5 = parseInt(number.slice(3, 4));\n let b6 = parseInt(number.slice(2, 3));\n let b7 = parseInt(number.slice(1, 2));\n let b8 = parseInt(number.slice(0, 1));\n\n let ci7 = b1 * 2; if (ci7 > 9) { ci7 = ci7 - 9; }\n let ci56 = b3 * 2; if (ci56 > 9) { ci56 = ci56 - 9; }\n let ci34 = b5 * 2; if (ci34 > 9) { ci34 = ci34 - 9; }\n let ci12 = b7 * 2; if (ci12 > 9) { ci12 = ci12 - 9; }\n let ci67 = b2;\n let ci45 = b4;\n let ci23 = b6;\n let ci01 = b8;\n\n let cirjDig = (ci7 + ci56 + ci34 + ci12 + ci67 + ci45 + ci23 + ci01) % 10;\n cirjDig = 10 - cirjDig; if (cirjDig == 10) { cirjDig = 0; }\n\n return cirjDig;\n}\n\nconst RG: BigObject<Function> = {\n sp: rg_sp,\n rj: rg_rj\n}\n\nexport default RG;\n","import { BigObject, MaskType } from './interfaces';\n\nexport const IPTUMASKS: BigObject<BigObject<MaskType>> = {\n 'minas-gerais': {\n 'belo-horizonte': {\n text: '000.000.000.000.0', //123.456.789.012.3\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/]\n },\n 'contagem': {\n text: '20.040.040-1',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numbers: any = userInput.match(/\\d/g);\n let numberLength = 0;\n if (numbers) {\n numberLength = numbers.join('').length;\n }\n\n if (!userInput || numberLength > 9) {\n return [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n } else {\n return [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/];\n }\n }\n }\n },\n 'sao-paulo': {\n 'sao-paulo': {\n text: '00000000000-0',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n }\n },\n 'parana': {\n 'curitiba': {\n text: '00000000000-0',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n }\n }\n};\n","import { getAllDigits, makeGenericFaker } from './utils';\nimport { IPTUMASKS } from './iptu_mask';\nimport { BigObject } from './interfaces';\n\nexport function create_iptu_ctba(number: string) {\n number = getAllDigits(number);\n let a1 = parseInt(number.slice(10));\n let a2 = parseInt(number.slice(9, 10));\n let a3 = parseInt(number.slice(8, 9));\n let a4 = parseInt(number.slice(7, 8));\n let a5 = parseInt(number.slice(6, 7));\n let a6 = parseInt(number.slice(5, 6));\n let a7 = parseInt(number.slice(4, 5));\n let a8 = parseInt(number.slice(3, 4));\n let a9 = parseInt(number.slice(2, 3));\n let a10 = parseInt(number.slice(1, 2));\n let a11 = parseInt(number.slice(0, 1));\n\n let iptuctbaDV = 10 - ((a1 * 2 + a2 * 3 + a3 * 4 + a4 * 7 + a5 * 8 + a6 * 9 + a7 * 2 + a8 * 3 + a9 * 4 + a10 * 7 + a11 * 8) % 10);\n if (iptuctbaDV == 10) { iptuctbaDV = 0; }\n return iptuctbaDV;\n}\n\nexport function create_iptu_sp(number: string) {\n let a1 = parseInt(number.slice(9));\n let a2 = parseInt(number.slice(8, 9));\n let a3 = parseInt(number.slice(7, 8));\n let a4 = parseInt(number.slice(6, 7));\n let a5 = parseInt(number.slice(5, 6));\n let a6 = parseInt(number.slice(4, 5));\n let a7 = parseInt(number.slice(3, 4));\n let a8 = parseInt(number.slice(2, 3));\n let a9 = parseInt(number.slice(1, 2));\n let a10 = parseInt(number.slice(0, 1));\n\n let iptuspDV = (a1 * 9 + a2 * 8 + a3 * 7 + a4 * 6 + a5 * 5 + a6 * 4 + a7 * 3 + a8 * 2 + a9 + a10 * 10) % 11;\n if (iptuspDV == 10) { iptuspDV = 1; }\n return iptuspDV;\n}\n\n\nexport const faker_iptu = (estado: string | number, cidade: string | number) => {\n if (!IPTUMASKS[estado] || !IPTUMASKS[estado][cidade]) {\n return;\n }\n let iptu = makeGenericFaker(IPTUMASKS[estado][cidade])();\n if (IPTUCREATE[estado] && IPTUCREATE[estado][cidade]) {\n const dv = IPTUCREATE[estado][cidade](iptu);\n const values = iptu.split('');\n values[values.length - 1] = dv;\n iptu = values.join('');\n }\n return iptu;\n}\n\nexport const IPTUCREATE: BigObject<BigObject<Function>> = {\n 'sao-paulo': {\n 'sao-paulo': create_iptu_sp,\n },\n 'parana': {\n 'curitiba': create_iptu_ctba\n }\n}","import { getAllDigits } from './utils';\nimport { IPTUCREATE } from './iptu_create';\nimport { BigObject } from './interfaces';\n\nconst validateRemoveDigito = (number: string | any[], max: number) => {\n number = getAllDigits(number.toString());\n if (number.length > max) {\n return false;\n } else if (number.length === max) {\n number = number.slice(0, -1)\n }\n return number;\n}\n\nexport function validate_iptu_ctba(value: string | any[]) {\n let number = validateRemoveDigito(value, 12);\n if (!number) {\n return false;\n }\n\n const dv = IPTUCREATE['parana']['curitiba'](number);\n return parseInt(value[value.length - 1]) === dv;\n}\n\n/**\n * Índice Cadastral, ou inscrição imobiliária, é o número de identificação do imóvel no cadastro da Prefeitura de Contagem. \n * O índice é composto por 12 (doze) ou 13 (treze) números, sendo: 2 (dois) para a zona fiscal; \n * 3 (três) ou 4 (quatro) para a quadra fiscal; 4 (quatro) para o lote fiscal; e 3 (três) para a unidade.\n */\nexport function validate_iptu_contagem(number: any) {\n number = validateRemoveDigito(number, 12);\n if (!number) {\n return false;\n }\n return true;\n}\n\nexport function validate_iptu_sp(value: string | any[]) {\n let number = validateRemoveDigito(value, 12);\n if (!number) {\n return false;\n }\n const dv = IPTUCREATE['sao-paulo']['sao-paulo'](number);\n return parseInt(value[value.length - 1]) === dv;\n}\n\n// export function validate_iptu(iptu: string) {\n// let iptuClean = iptu.replace(/\\./g, '');\n// iptuClean = iptuClean.replace(/-/g, '');\n// const exp = /[a-z]{2}\\-\\d{2}\\.\\d{3}\\.\\d{3}/;\n// const expClean = /[a-z]{2}\\d{8}/;\n// const state = iptu.substr(0, 2).toUpperCase();\n\n// if (!exp.test(iptu) && !expClean.test(iptuClean) && !(state in CEPRange)) {\n// return false;\n// }\n// if (IPTU[state]) {\n// const validateState = IPTU[state];\n// return validateState(iptu);\n// }\n// return true;\n// }\n\nexport const IPTUVALIDATE: BigObject<BigObject<Function>> = {\n 'sao-paulo': {\n 'sao-paulo': validate_iptu_sp,\n },\n 'minas-gerais': {\n 'contagem': validate_iptu_contagem,\n },\n 'parana': {\n 'curitiba': validate_iptu_ctba\n }\n}","import { IPTUVALIDATE } from './iptu_validate';\nimport { IPTUMASKS } from './iptu_mask';\nimport { getAllDigits } from './utils';\nimport { IPTUCREATE } from './iptu_create';\n\nexport const create_iptu = (number: string, estado: string | number, cidade: string | number) => {\n if (!IPTUCREATE[estado] || !IPTUCREATE[estado][cidade]) {\n return true;\n }\n number = getAllDigits(number);\n return IPTUCREATE[estado][cidade](number);\n};\n\nexport const mask_iptu = (number: string, estado: string, cidade: string) => {\n if (!IPTUMASKS[estado] || !IPTUMASKS[estado][cidade]) {\n return number;\n }\n return IPTUMASKS[estado][cidade];\n};\nexport const validate_iptu = (number: string, estado: string | number, cidade: string | number) => {\n if (!IPTUVALIDATE[estado] || !IPTUVALIDATE[estado][cidade]) {\n return true;\n }\n number = getAllDigits(number);\n return IPTUVALIDATE[estado][cidade](number);\n};","import { getAllDigits, fillString, getAllWords } from './utils';\nimport { BigObject } from './interfaces';\nimport { validate_inscricaoestadual } from './inscricaoestadual';\nimport { validate_placa } from './placa';\nimport {\n create_cnpj, create_cpf,\n create_renavam, create_ect, create_processo, create_titulo_atual, create_cnh, create_certidao, create_aih, create_pispasep, create_cnhespelho, create_renachestadual, create_renachseguranca\n} from './create';\nimport RG from './rg';\nimport { validate_iptu } from './iptu';\nimport { ESTADOS_SIGLA } from './estados';\n\n\nexport function validate_aih(aih: string) {\n const aihClean = aih.replace(/[^\\d]+/g, '');\n const dvOriginal = aihClean.substr(-1);\n const dv = create_aih(aihClean);\n return dvOriginal === dv;\n}\n\nexport function validate_celular(cel: any) {\n let celClean = cel.replace(/[^\\d]+/g, '');\n celClean = celClean.replace(/_/g, '');\n if (celClean.length !== 11) {\n return false;\n }\n if (celClean[0] == 0 || celClean[2] < 5) {\n return false;\n }\n return true;\n}\n\nexport const CEPRange: BigObject<RegExp> = {\n 'SP': /^([1][0-9]{3}|[01][0-9]{4})[0-9]{3}$/g,\n 'RJ': /^[2][0-8][0-9]{3}[0-9]{3}$/g,\n 'MS': /^[7][9][0-9]{3}[0-9]{3}$/g,\n 'MG': /^[3][0-9]{4}[0-9]{3}$/g,\n 'MT': /^[7][8][8][0-9]{2}[0-9]{3}$/g,\n 'AC': /^[6][9]{2}[0-9]{2}[0-9]{3}$/g,\n 'AL': /^[5][7][0-9]{3}[0-9]{3}$/g,\n 'AM': /^[6][9][0-8][0-9]{2}[0-9]{3}$/g,\n 'AP': /^[6][89][9][0-9]{2}[0-9]{3}$/g,\n 'BA': /^[4][0-8][0-9]{3}[0-9]{3}$/g,\n 'CE': /^[6][0-3][0-9]{3}[0-9]{3}$/g,\n 'DF': /^[7][0-3][0-6][0-9]{2}[0-9]{3}$/g,\n 'ES': /^[2][9][0-9]{3}[0-9]{3}$/g,\n 'GO': /^[7][3-6][7-9][0-9]{2}[0-9]{3}$/g,\n 'MA': /^[6][5][0-9]{3}[0-9]{3}$/g,\n 'PA': /^[6][6-8][0-8][0-9]{2}[0-9]{3}$/g,\n 'PB': /^[5][8][0-9]{3}[0-9]{3}$/g,\n 'PE': /^[5][0-6][0-9]{2}[0-9]{3}$/g,\n 'PI': /^[6][4][0-9]{3}[0-9]{3}$/g,\n 'PR': /^[8][0-7][0-9]{3}[0-9]{3}$/g,\n 'RN': /^[5][9][0-9]{3}[0-9]{3}$/g,\n 'RO': /^[7][8][9][0-9]{2}[0-9]{3}$/g,\n 'RR': /^[6][9][3][0-9]{2}[0-9]{3}$/g,\n 'RS': /^[9][0-9]{4}[0-9]{3}$/g,\n 'SC': /^[8][89][0-9]{3}[0-9]{3}$/g,\n 'SE': /^[4][9][0-9]{3}[0-9]{3}$/g,\n 'TO': /^[7][7][0-9]{3}[0-9]{3}$/g,\n}\n\nexport function validate_cep(cep: string) {\n const cepClean = cep.replace(/[^\\d]+/g, '');\n const exp = /\\d{2}\\.\\d{3}\\-\\d{3}/;\n if (!exp.test(cep) && cepClean.length !== 8) {\n return false;\n }\n return true;\n}\n\n\nexport function cep_ranges(cep: string | number) {\n cep = (cep.toString()).replace(/[^\\d]+/g, '');\n cep = parseInt(cep, 10);\n const cepString: string = cep.toString();\n let found: any;\n for (let estado in CEPRange) {\n const v = CEPRange[estado];\n const r = new RegExp(v).test(cepString);\n if (r) {\n found = r;\n return true;\n }\n }\n\n if (!found) {\n return false;\n }\n return true;\n}\n\n\n\n\nexport function validate_certidao(value: string) {\n let certidao = getAllDigits(value);\n\n const format = /[0-9]{32}/;\n if (!format.test(certidao)) {\n return false;\n }\n\n let dvOriginal = certidao.substr(-2);\n const dv = create_certidao(certidao);\n\n return dv === dvOriginal;\n}\n\n\n/**\n * \n * @param chassi \n */\nexport function validate_chassi(chassi: string) {\n\n // 1 - Possuir o número \"0\" (ZERO) como 1º dígito.\n const zeroNoPrimeiroDigito = /^0/;\n if (zeroNoPrimeiroDigito.test(chassi)) {\n return false;\n }\n\n // 2 - Possuir espaço no chassi\n chassi = getAllWords(chassi); // espacoNoChassi\n\n // 3 - Se, a partir do 4º dígito, houver uma repetição consecutiva, por mais de seis vezes, do mesmo dígito \n // (alfabético ou numérico). Exemplos: 9BW11111119452687 e 9BWZZZ5268AAAAAAA.\n const repeticaoMaisDe6Vezes = /^.{4,}([0-9A-Z])\\1{5,}/\n if (repeticaoMaisDe6Vezes.test(chassi)) {\n return false;\n }\n\n // 4 - Apresente os caracteres \"i\", \"I\", \"o\", \"O\", \"q\", \"Q\".\n const caracteresiIoOqQ = /[iIoOqQ]/;\n if (caracteresiIoOqQ.test(chassi)) {\n return false;\n }\n\n // 5 - Os quatro últimos caracteres devem ser obrigatoriamente numéricos\n const ultimos4Numericos = /[0-9]{4}$/;\n if (!ultimos4Numericos.test(chassi)) {\n return false;\n }\n\n // 6 - Se possuir número de dígitos diferente de 17 (alfanuméricos). \n if (chassi.length > 17) {\n return false;\n }\n\n return true;\n}\n\nfunction validate_cnae(number: any) {\n if (!number) return true;\n return false\n}\n\n/**\n * \n * II - Número do Espelho da CNH - segundo número de identificação nacional, \n * que será formado por 9 (nove) caracteres mais 1 (um) dígito verificador de segurança, \n * autorizado e controlado pelo DENATRAN, e identificará cada espelho de CNH expedida.\n * https://www.gov.br/infraestrutura/pt-br/assuntos/transito/conteudo-denatran/resolucoes-contran\n * https://www.gov.br/infraestrutura/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao5112014.pdf\n * 598: https://www.gov.br/infraestrutura/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao59820162.pdf\n * @param value \n */\nexport function validate_cnhespelho(value: string) {\n value = value.replace(/[^\\d]/g, '')\n if (value.length !== 10) {\n return false\n }\n\n let check = create_cnhespelho(value)\n if (check === '0' || check === '1') check = '0'\n return value.substr(-1) == check\n}\n\n/**\n * \n * III – Número do formulário RENACH - número de identificação\n* estadual, documento de coleta de dados do candidato/condutor gerado a cada serviço,\n* composto, obrigatoriamente, por 11 (onze) caracteres, sendo as duas primeiras\n* posições formadas pela sigla da Unidade de Federação expedidora, facultada a\n* utilização da última posição como dígito verificador de segurança.\n* a) O número do formulário RENACH identificará a Unidade da\n* Federação onde o condutor foi habilitado ou realizou alterações de dados no seu\n* cadastro pela última vez.\n* b) O Formulário RENACH que dá origem às informações na\n* BINCO e autorização para a impressão da CNH deverá ficar arquivado em seg\n* 598 - https://www.gov.br/infraestrutura/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao59820162.pdf\n* 718 - https://www.gov.br/infraestrutura/pt-br/assuntos/transito/conteudo-contran/resolucoes/resolucao7182017.pdf\n* @param value \n */\nexport function validate_renachestadual(value: string) {\n const state = value.substr(0, 2).toLowerCase()\n if (!ESTADOS_SIGLA.includes(state)) {\n return false\n }\n\n let digits = value.substr(2)\n digits = digits.replace(/[^\\d]/g, '');\n if (digits.length !== 9) {\n return false;\n }\n let check = create_renachestadual(value)\n if (check === '0' || check === '1') check = '0'\n return value.substr(-1) == check;\n}\n\nexport function validate_renachseguranca(value: string) {\n value = value.replace(/[^\\d]/g, '');\n\n if (value.length !== 11) {\n return false;\n }\n\n let check = create_renachseguranca(value)\n return value.substr(-1) == check;\n}\n\n/**\n * BINCO\n * I – o primeiro número de identificação nacional – Registro Nacional, \n * será gerado pelo sistema informatizado da Base Índice Nacional de Condutores – \n * BINCO, composto de 9 (nove) caracteres mais 2 (dois) dígitos verificadores de \n * segurança, sendo único para cada condutor e o acompanhará durante toda a \n * sua existência como condutor, não sendo permitida a sua reutilização para \n * outro condutor.\n * @param value \n * @returns \n */\nexport function validate_cnh(value: string) {\n value = value.toString().replace(/[^\\d]/g, '');\n if (value.length !== 11) {\n return false;\n }\n let check = create_cnh(value);\n return value.substr(-2) == check;\n}\n\nexport function validate_cnpj(cnpj: any) {\n // Valida se tem apenas número, - ou .\n let precisaFicarVazio = cnpj.replace(/^[0-9./-]*$/gm, '')\n if (precisaFicarVazio != '')\n return false\n\n cnpj = cnpj.replace(/[^\\d]+/g, '');\n let tamanho = cnpj.length - 2\n const digitos = cnpj.substring(tamanho);\n const resultados = create_cnpj(cnpj);\n if (!resultados ||\n resultados[0] !== parseInt(digitos.charAt(0), 10) ||\n resultados[1] !== parseInt(digitos.charAt(1), 10)\n ) {\n return false\n }\n\n return true;\n}\n\nfunction validate_contabanco(number: any) {\n if (!number) return false\n return true;\n}\n\n/**\n * Referencia: http://www.receita.fazenda.gov.br/aplicacoes/atcta/funcoes.js\n * @param strCPF \n * @returns \n */\nexport function validate_cpf(strCPF: any) {\n // Valida se tem apenas número, - ou .\n let precisaFicarVazio = strCPF.replace(/^[0-9.-]*$/gm, '')\n if (precisaFicarVazio != '')\n return false\n\n strCPF = strCPF.replace(/[^\\d]+/g, '');\n if (strCPF.length !== 11) {\n return false;\n }\n\n //verifica se todos os numeros sao iguais\n const expIguais = /^(?!.*(\\d)\\1{10}).*$/;\n if (!strCPF.match(expIguais)) {\n return false;\n }\n\n // valida digito verificados\n const restos = create_cpf(strCPF);\n if (!restos || restos != strCPF.substr(-2)) {\n return false;\n }\n return true;\n}\n\nfunction validate_cpfcnpj(number: any) {\n return validate_cpf(number) || validate_cnpj(number);\n}\n\nexport function validate_cns(value: string) {\n const cns = getAllDigits(value);\n const definitivo = /[1-2][0-9]{10}00[0-1][0-9]/; // começam com 1 ou 2\n const provisorio = /[7-9][0-9]{14}/; // começam com 7,8 ou 9\n if (!definitivo.test(cns) && !provisorio.test(cns)) {\n return false;\n }\n\n let soma = 0;\n for (let i = 0; i < cns.length; i++) {\n soma += parseInt(cns[i]) * (15 - i);\n }\n\n return soma % 11 == 0;\n}\n\n\nexport function validate_cartaocredito(input: string | number) {\n let value: string;\n if (typeof input == 'string') {\n value = getAllDigits(input);\n } else {\n value = input.toString();\n }\n\n const number = value.slice(0, 16);\n const mes = parseInt(value.slice(16, 18));\n const ano = parseInt(value.slice(18, 20));\n const cvv = value.slice(20, 23);\n\n const d = new Date();\n const anoAtual = (d.getFullYear() - 2000);\n if (ano && ano < anoAtual) {\n return false;\n }\n if (mes && mes < d.getMonth() + 1 && ano === anoAtual) {\n return false;\n }\n\n if (cvv) {\n const validcvv = validate_cvv(cvv);\n if (validcvv.isValid === false) {\n return false;\n }\n }\n\n let found;\n Object.keys(creditCardValidator).forEach(key => {\n if (creditCardValidator[key].test(number)) {\n found = key;\n }\n });\n return !!found;\n\n}\n\nfunction validate_cvv(value: string | any[], maxLength: any = 3) {\n maxLength = maxLength instanceof Array ? maxLength : [maxLength];\n\n if (typeof value !== 'string') {\n return { isValid: false, isPotentiallyValid: false };\n }\n if (!/^\\d*$/.test(value)) {\n return { isValid: false, isPotentiallyValid: false };\n }\n\n var i = 0;\n const max = value.length;\n for (; i < maxLength.length; i++) {\n if (max === maxLength[i]) {\n return { isValid: true, isPotentiallyValid: true };\n }\n }\n\n if (value.length < Math.min.apply(null, maxLength)) {\n return { isValid: false, isPotentiallyValid: true };\n }\n\n var maximum = maxLength;\n var i = 0;\n\n for (; i < maxLength.length; i++) {\n maximum = maxLength[i] > maximum ? maxLength[i] : maximum;\n }\n\n if (value.length > maximum) {\n return { isValid: false, isPotentiallyValid: false };\n }\n\n return { isValid: true, isPotentiallyValid: true };\n}\n\n\n/**\n * A hash of valid CC abbreviations and regular expressions\n mc: Mastercard\n ec: Eurocard\n vi: Visa\n ax: American Express\n dc: Diners Club\n bl: Carte Blanch\n di: Discover\n jcb: JCB\n er: Enroute\n*/\nexport const creditCardValidator: BigObject<RegExp> = {\n 'mc': /5[1-5][0-9]{14}/,\n 'ec': /5[1-5][0-9]{14}/,\n 'vi': /4(?:[0-9]{12}|[0-9]{15})/,\n 'ax': /3[47][0-9]{13}/,\n 'dc': /3(?:0[0-5][0-9]{11}|[68][0-9]{12})/,\n 'bl': /3(?:0[0-5][0-9]{11}|[68][0-9]{12})/,\n 'di': /6011[0-9]{12}/,\n 'jcb': /(?:3[0-9]{15}|(2131|1800)[0-9]{11})/,\n 'er': /2(?:014|149)[0-9]{11}/\n};\n\n\nexport function validate_currency(currency: string | number) {\n if (typeof currency === 'number') {\n return true;\n }\n const regex = /^(R\\$|R\\$ )?(-)?(?!0(\\.)?00)\\d{1,3}((\\.)?\\d{3})*(,\\d\\d)?$/g;\n return regex.test(currency);\n}\n\n\nfunction validate_data(value: string | null) {\n if (!value) {\n return false;\n }\n const values = value.split('/');\n if (values.length !== 3) {\n return false;\n }\n const testData: Date = new Date(values[1] + '/' + values[0] + '/' + values[2])\n if (!testData.getTime()) {\n return false;\n }\n // if (parseInt(values[0]) > 31 || parseInt(values[1]) > 12 || parseInt(values[2]) < 1000) return false;\n return true;\n}\n\n\nfunction validate_date(value: string | null) {\n if (!value || value.length < 10) {\n return false;\n }\n const testData: Date = new Date(value)\n if (!testData.getTime()) {\n return false;\n }\n return true;\n}\n\nexport function validate_datetime(time: string | number, options: any = {}) {\n if (!time) {\n return false;\n }\n time = time.toString();\n const values = time.split(' ');\n if (validate_date(values[0]) && validate_time(values[1], options)) {\n return true;\n }\n return false;\n}\n\n\nexport function validate_datahora(time: string | number, options: any = {}) {\n if (!time) {\n return false;\n }\n time = time.toString();\n const values = time.split(' ');\n if (validate_data(values[0]) && validate_time(values[1], options)) {\n return true;\n }\n return false;\n}\n\nexport function validate_ect(number: string) {\n number = getAllDigits(number);\n if (number.length > 9) {\n return false\n }\n\n const nodigit = number.substr(0, number.length - 1);\n const dg = create_ect(nodigit);\n\n if (parseInt(number[number.length - 1]) === dg) {\n return true;\n }\n return false;\n}\n\nfunction validate_email(email: any) {\n var re = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n return re.test(String(email).toLowerCase())\n}\n\nfunction validate_endereco(number: any) {\n if (!number) return false\n return true\n}\n\nexport function validate_number(number: string) {\n if (number.split(',').length > 2) {\n return false\n }\n const regexDecimal = /^\\d+(?:\\.\\d{0,2})$/;\n const regex = /^[0-9]{0,10}[,]{1,1}[0-9]{0,4}/;\n const regexNumero = /^[0-9]{0,10}/;\n return regexDecimal.test(number) || regex.test(number) || regexNumero.test(number);\n}\n\n\nexport function validate_porcentagem(porcentagem: string) {\n porcentagem = porcentagem.split('%')[0];\n return validate_number(porcentagem);\n}\n\n\nexport function validate_processo(processo: any) {\n let processoClean = processo.replace(/\\./g, '');\n processoClean = processoClean.replace(/\\-/g, '');\n // const exp = /\\d{7}\\-\\d{2}\\.\\d{4}\\.\\w{3}\\.\\d{4}/;\n // const expClean = /\\d{13}\\w{3}\\d{4}/;\n // if (!exp.test(processo) && !expClean.test(processoClean)) {\n // return false;\n // }\n let processoValidado = create_processo(processo);\n if (parseInt(processoClean) !== parseInt(getAllDigits(processoValidado))) {\n return false;\n }\n return true;\n}\n\n\nexport function validate_pispasep(number: string) {\n number = getAllDigits(number);\n let nis = fillString(number, 11, '0');\n const regex = /\\d{11}/; // /^\\d{3}\\.\\d{5}\\.\\d{2}\\-\\d{1}$/;\n if (!regex.test(nis)) {\n return false;\n }\n\n const digit = create_pispasep(number);\n return nis[10].toString() == digit.toString();\n}\n\n\nexport function validate_renavam(renavam: any) {\n let renavamClean = renavam.replace(/\\./g, '');\n renavamClean = renavamClean.replace(/\\-/g, '');\n const dv = create_renavam(renavam);\n const tam = renavam.length;\n const digitos = renavam.substr(tam - 1, 1);\n if (digitos.charCodeAt(0) - 48 === dv) {\n return true;\n } else {\n return false;\n }\n}\n\n\n\nexport function validate_rg(rg: string) {\n let rgClean = rg.replace(/\\./g, '');\n rgClean = rgClean.replace(/-/g, '');\n const exp = /[a-z]{2}\\-\\d{2}\\.\\d{3}\\.\\d{3}/;\n const expClean = /[a-z]{2}\\d{8}/;\n const state = rg.substr(0, 2).toUpperCase();\n\n if (!exp.test(rg) && !expClean.test(rgClean) && !(state in CEPRange)) {\n return false;\n }\n const validateState = RG[state];\n if (validateState) {\n return validateState(rg);\n }\n return true;\n}\n\nfunction validate_senha(value: string, options: any = {}) {\n let finalregex = '^';\n // ^\tThe password string will start this way\n // (?=.*[a-z])\tThe string must contain at least 1 lowercase alphabetical character\n if (options.lowercase !== false) {\n finalregex = finalregex + '(?=.*[a-z])';\n }\n // (?=.*[A-Z])\tThe string must contain at least 1 uppercase alphabetical character\n if (options.uppercase !== false) {\n finalregex = finalregex + '(?=.*[A-Z])';\n }\n // (?=.*[0-9])\tThe string must contain at least 1 numeric character\n if (options.numeric !== false) {\n finalregex = finalregex + '(?=.*[0-9])';\n }\n // (?=.*[!@#\\$%\\^&\\*])\tThe string must contain at least one special character, but we are escaping reserved RegEx characters to avoid conflict\n if (options.numeric !== false) {\n finalregex = finalregex + '(?=.*[!@#\\\\$%\\\\^&\\\\*])';\n }\n // (?=.{8,})\tThe string must be eight characters or longer\n if (!options.size) {\n options.size = 8;\n }\n\n finalregex = finalregex + `(?=.{${options.size},})`;\n\n const regex = new RegExp(finalregex);\n return regex.test(value);\n}\n\n\nfunction validate_site(value: any) {\n var re = /(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&=]*)/g;\n return re.test(String(value).toLowerCase());\n}\n\nexport function validate_sped(sped: string) {\n if (!sped) return false\n return true\n}\n\nexport function validate_telefone(tel: any) {\n const telClean = tel.replace(/[^\\d]+/g, '');\n tel = tel.replace(/_/g, '');\n if (!(telClean.length === 10 || telClean.length === 11)) {\n return false;\n }\n if (telClean[0] == 0 || telClean[2] == 0) {\n return false;\n }\n return true;\n}\n\nexport function validate_time(time: string | number, options: any = {}) {\n const value = time.toString();\n if (options.diario) {\n const expression = /^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/;\n return expression.test(value);\n } else {\n const expression = /^([0-9]?[0-9]):([0-5][0-9])(:[0-5][0-9])?$/;\n return expression.test(value);\n }\n\n}\n\nexport function validate_titulo(titulo: any) {\n if (!titulo) {\n return false;\n }\n const tituloClean = titulo.replace(/\\./g, '');\n const exp = /\\d{4}\\.\\d{4}\\.\\d{4}/;\n const expClean = /\\d{4}\\d{4}\\d{4}/;\n if (!exp.test(tituloClean) && !expClean.test(tituloClean)) {\n return false;\n }\n\n const tam = tituloClean.length;\n\n let dig;\n try {\n dig = create_titulo_atual(tituloClean);\n // const noDv = tituloClean.substr(0, tam - 2);\n // dig = create_titulo(noDv);\n } catch (e) {\n return false;\n }\n\n const digitos = tituloClean.substr(tam - 2, 2);\n if (digitos === dig) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction validate_username(value: any) {\n var re = /^[a-z0-9_-]{3,16}$/igm;\n return re.test(String(value).toLowerCase());\n}\n\nexport const validateBr: BigObject<Function> = {\n aih: validate_aih,\n cartaocredito: validate_cartaocredito,\n celular: validate_celular,\n cep: validate_cep,\n certidao: validate_certidao,\n chassi: validate_chassi,\n cnae: validate_cnae,\n cnh: validate_cnh,\n cnhespelho: validate_cnhespelho,\n renachestadual: validate_renachestadual,\n renachseguranca: validate_renachseguranca,\n cnpj: validate_cnpj,\n cns: validate_cns,\n contabanco: validate_contabanco,\n cpf: validate_cpf,\n cpfcnpj: validate_cpfcnpj,\n currency: validate_currency,\n data: validate_data,\n date: validate_date,\n datetime: validate_datetime,\n datahora: validate_datahora,\n ect: validate_ect,\n email: validate_email,\n endereco: validate_endereco,\n inscricaoestadual: validate_inscricaoestadual,\n iptu: validate_iptu,\n number: validate_number,\n porcentagem: validate_porcentagem,\n pispasep: validate_pispasep,\n placa: validate_placa,\n processo: validate_processo,\n renavam: validate_renavam,\n rg: validate_rg,\n senha: validate_senha,\n site: validate_site,\n sped: validate_sped,\n telefone: validate_telefone,\n time: validate_time,\n titulo: validate_titulo,\n username: validate_username\n};\n","const dollarSign = \"$\";\nconst emptyString = \"\";\nconst comma = \",\";\nconst period = \".\";\nconst minus = \"-\";\nconst minusRegExp = /-/;\nconst nonDigitsRegExp = /\\D+/g;\nconst number = \"number\";\nconst digitRegExp = /\\d/;\nconst caretTrap = \"[]\";\n\nexport default function createNumberMask({\n prefix = dollarSign,\n suffix = emptyString,\n includeThousandsSeparator = true,\n thousandsSeparatorSymbol = comma,\n allowDecimal = false,\n decimalSymbol = period,\n decimalLimit = 2,\n requireDecimal = false,\n allowNegative = false,\n allowLeadingZeroes = false,\n integerLimit = null,\n} = {}) {\n const prefixLength = (prefix && prefix.length) || 0;\n const suffixLength = (suffix && suffix.length) || 0;\n const thousandsSeparatorSymbolLength =\n (thousandsSeparatorSymbol && thousandsSeparatorSymbol.length) || 0;\n\n function numberMask(rawValue = emptyString) {\n const rawValueLength = rawValue.length;\n\n if (\n rawValue === emptyString ||\n (rawValue[0] === prefix[0] && rawValueLength === 1)\n ) {\n return prefix\n .split(emptyString)\n .concat([\"\" + digitRegExp])\n .concat(suffix.split(emptyString));\n } else if (rawValue === decimalSymbol && allowDecimal) {\n return prefix\n .split(emptyString)\n .concat([\"0\", decimalSymbol, \"\" + digitRegExp])\n .concat(suffix.split(emptyString));\n }\n\n const isNegative = rawValue[0] === minus && allowNegative;\n //If negative remove \"-\" sign\n if (isNegative) {\n rawValue = rawValue.toString().substr(1);\n }\n\n const indexOfLastDecimal = rawValue.lastIndexOf(decimalSymbol);\n const hasDecimal = indexOfLastDecimal !== -1;\n\n let integer;\n let fraction;\n let mask;\n\n // remove the suffix\n if (rawValue.slice(suffixLength * -1) === suffix) {\n rawValue = rawValue.slice(0, suffixLength * -1);\n }\n\n if (hasDecimal && (allowDecimal || requireDecimal)) {\n integer = rawValue.slice(\n rawValue.slice(0, prefixLength) === prefix ? prefixLength : 0,\n indexOfLastDecimal\n );\n\n fraction = rawValue.slice(indexOfLastDecimal + 1, rawValueLength);\n fraction = convertToMask(fraction.replace(nonDigitsRegExp, emptyString));\n } else {\n if (rawValue.slice(0, prefixLength) === prefix) {\n integer = rawValue.slice(prefixLength);\n } else {\n integer = rawValue;\n }\n }\n\n if (integerLimit && typeof integerLimit === number) {\n const thousandsSeparatorRegex =\n thousandsSeparatorSymbol === \".\"\n ? \"[.]\"\n : `${thousandsSeparatorSymbol}`;\n const numberOfThousandSeparators = (\n integer.match(new RegExp(thousandsSeparatorRegex, \"g\")) || []\n ).length;\n\n integer = integer.slice(\n 0,\n integerLimit +\n numberOfThousandSeparators * thousandsSeparatorSymbolLength\n );\n }\n\n integer = integer.replace(nonDigitsRegExp, emptyString);\n\n if (!allowLeadingZeroes) {\n integer = integer.replace(/^0+(0$|[^0])/, \"$1\");\n }\n\n integer = includeThousandsSeparator\n ? addThousandsSeparator(integer, thousandsSeparatorSymbol)\n : integer;\n\n mask = convertToMask(integer);\n\n if ((hasDecimal && allowDecimal) || requireDecimal === true) {\n if (rawValue[indexOfLastDecimal - 1] !== decimalSymbol) {\n mask.push(caretTrap);\n }\n\n mask.push(decimalSymbol, caretTrap);\n\n if (fraction) {\n if (typeof decimalLimit === number) {\n fraction = fraction.slice(0, decimalLimit);\n }\n\n mask = mask.concat(fraction);\n }\n\n if (\n requireDecimal === true &&\n rawValue[indexOfLastDecimal - 1] === decimalSymbol\n ) {\n mask.push(digitRegExp);\n }\n }\n\n if (prefixLength > 0) {\n mask = prefix.split(emptyString).concat(\"\" + mask);\n }\n\n if (isNegative) {\n // If user is entering a negative number, add a mask placeholder spot to attract the caret to it.\n if (mask.length === prefixLength) {\n mask.push(digitRegExp);\n }\n\n mask = [minusRegExp].concat(new RegExp(\"\" + mask));\n }\n\n if (suffix.length > 0) {\n mask = mask.concat(suffix.split(emptyString));\n }\n\n return mask;\n }\n\n //numberMask.instanceOf = \"createNumberMask\";\n\n return numberMask;\n}\n\nfunction convertToMask(strNumber: string) {\n return strNumber\n .split(emptyString)\n .map((char: string) => (digitRegExp.test(char) ? digitRegExp : char));\n}\n\nfunction addThousandsSeparator(n: string, thousandsSeparatorSymbol: string) {\n return n.replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandsSeparatorSymbol);\n}\n","import { isArray, processCaretTraps } from './utils';\nimport { BigObject, MaskType } from './interfaces';\nexport { MASKSIE } from './inscricaoestadual';\nimport createNumberMask from './createNumberMask';\nimport { mask_iptu } from './iptu';\nimport { MASKSIE } from './inscricaoestadual';\n\nconst maskNumber: any = {\n decimalLimit: 2,\n thousandsSeparatorSymbol: '.',\n decimalSymbol: ',',\n allowDecimal: true,\n integerLimit: 17,\n prefix: '',\n suffix: ''\n}\n\nexport const MASKS: BigObject<MaskType> = {\n aih: {\n text: '000000000000-0', // 351923414312-8\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n cartaocredito: {\n text: '0000 0000 0000 0000 00/00 000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, '0', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, '/', /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/]\n },\n celular: {\n text: '(00) 00000-0000',\n textMask: ['(', /[1-9]/, /\\d/, ')', ' ', /[5-9]/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/],\n },\n cep: {\n text: '00.000-000',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/]\n },\n // certidao Certidões de Nascimento, Casamento ou Óbito \n certidao: {\n text: '000000.00.00.0000.0.00000.000.0000000-00', // 104539.01.55.2013.1.00012.021.0000123-21\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, '.', /\\d/, /\\d/, '.',\n /\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '.',\n /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n chassi: {\n text: 'AAA AAAAAA AA AA0000', // 9BW ZZZ377 VT 004251\n textMask: [/[1-9]/, /\\w/, /\\w/, ' ', /\\w/, /\\w/, /\\w/, /\\w/, /\\w/, /\\w/, ' ', /\\w/, /\\w/, ' ', /\\w/, /\\w/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n cid: {\n textMask: false\n },\n cnae: {\n text: '0000-0/00', // 6821-8/01\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, '/', /\\d/, /\\d/]\n },\n cnh: {\n text: '000000000-00', // 123456789-1\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n renachseguranca: {\n text: '00000000000', // 51474546854\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n renachestadual: {\n text: 'AA000000000', // MG597812560\n textMask: [/[A-S]/, /[A-Z]/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n cnhespelho: {\n text: '0000000000', // 123456789-1\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/]\n },\n cnpj: {\n text: '00.000.000/0000-00',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n cns: {\n text: '000 0000 0000 00-00',\n textMask: [/[1|2|7|8|9]/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n contabanco: {\n text: '000 00000-0 00000-0',\n textMask: [/\\d/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-',\n /\\d/, ' ', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n cpf: {\n text: '000.000.000-00',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/]\n },\n cpfcnpj: {\n text: '00.000.000/0000-00',\n textMask: [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numbers = userInput.match(/\\d/g);\n let numberLength = 0;\n if (numbers) {\n numberLength = numbers.join('').length;\n }\n if (!userInput || numberLength > 12) {\n return [/\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n } else {\n return [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\n }\n }\n },\n currency: {\n text: '0.000,00',\n textMask: createNumberMask({\n ...maskNumber,\n prefix: 'R$ ',\n allowNegative: true\n })\n },\n data: {\n text: '00/00/0000',\n textMask: [/[0-3]/, /[0-9]/, '/', /[0-1]/, /[0-9]/, '/', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n date: {\n text: '00/00/0000',\n textMask: [/[0-1]/, /[0-9]/, '/', /[0-3]/, /[0-9]/, '/', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n datetime: {\n text: '00/00/0000 00:00',\n textMask: [/[0-1]/, /[0-9]/, '/', /[0-3]/, /[0-9]/, '/', /[0-2]/, /[0-9]/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, ':', /[0-5]/, /\\d/]\n },\n datahora: {\n text: '00/00/0000 00:00',\n textMask: [/[0-3]/, /[0-9]/, '/', /[0-1]/, /[0-9]/, '/', /[0-2]/, /[0-9]/, /\\d/, /\\d/, ' ', /\\d/, /\\d/, ':', /[0-5]/, /\\d/]\n },\n ect: {\n text: '00000000-0',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/]\n },\n endereco: {\n text: '0000.0000.0000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, '.', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n iptu: {\n text: '0000.0000.0000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, '.', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n number: {\n text: '0.000,00',\n textMask: createNumberMask(maskNumber)\n },\n porcentagem: {\n text: '00,00%',\n textMask: createNumberMask({\n ...maskNumber,\n suffix: '%'\n })\n },\n pispasep: {\n text: '000.00000.00-0',\n textMask: [/\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, '-', /\\d/]\n },\n placa: {\n text: 'AAA-0000',\n textMask: [/[A-S]/, /[A-Z]/, /[A-Z]/, '-', /\\d/, /\\d/, /\\d/, /\\d/]\n },\n processo: {\n text: '0000000-00.0000.AAA.0000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, '.', /[A-Za-z]/, /[A-Za-z]/, /[A-Za-z]/, '.', /\\d/, /\\d/, /\\d/, /\\d/]\n },\n renavam: {\n text: '0000000000-00',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numbers = userInput.match(/\\d/g);\n let numberLength = 0;\n if (numbers) {\n numberLength = numbers.join('').length;\n }\n if (!userInput || numberLength < 9) {\n return [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/];\n } else {\n return [/\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/];\n }\n }\n },\n rg: {\n text: 'AA-00.000.000',\n textMask: [/[A-Za-z]/, /[A-Za-z]/, '-', /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/]\n },\n sped: {\n text: '0000.0000.0000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, '.', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n telefone: {\n text: '(00) 00000-0000',\n textMask: ['(', /[1-9]/, /\\d/, ')', ' ', /[1-9]/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/],\n textMaskFunction: function mask(userInput: any) {\n const numbers = userInput.match(/\\d/g);\n let numberLength = 0;\n if (numbers) {\n numberLength = numbers.join('').length;\n }\n if (!userInput || numberLength > 10) {\n return ['(', /[1-9]/, /\\d/, ')', ' ', /[1-9]/, /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/];\n } else {\n return ['(', /[1-9]/, /\\d/, ')', ' ', /[1-9]/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/];\n }\n }\n },\n time: {\n text: '00:00',\n textMask: [/\\d/, /\\d/, ':', /[0-5]/, /\\d/]\n },\n titulo: {\n text: '0000.0000.0000',\n textMask: [/\\d/, /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, /\\d/, '.', /[0-2]/, /[0-9]/, /\\d/, /\\d/]\n },\n utils: {\n numberToString: (n: number) => {\n if (!n || typeof n === 'string') {\n return n;\n }\n return (n.toString()).replace('.', ',');\n },\n textMask: false\n }\n}\n\n\nconst makeGeneric = (key: string) => {\n return (value: string) => {\n if (!value) {\n return '';\n }\n let mask = MASKS[key].textMask\n let textMaskFunction = MASKS[key].textMaskFunction\n if (typeof textMaskFunction === 'function') {\n mask = textMaskFunction(value);\n }\n\n\n return conformToMask(\n value,\n mask,\n { guide: false }\n ).conformedValue;\n }\n}\n\nexport const maskBr = {\n aih: makeGeneric('aih'),\n celular: makeGeneric('celular'),\n cep: makeGeneric('cep'),\n certidao: makeGeneric('certidao'),\n chassi: makeGeneric('chassi'),\n cnae: makeGeneric('cnae'),\n cnh: makeGeneric('cnh'),\n renachseguranca: makeGeneric('renachseguranca'),\n renachestadual: makeGeneric('renachestadual'),\n cnhespelho: makeGeneric('cnhespelho'),\n cnpj: makeGeneric('cnpj'),\n cns: makeGeneric('cns'),\n contabanco: makeGeneric('contabanco'),\n cpf: makeGeneric('cpf'),\n cpfcnpj: makeGeneric('cpfcnpj'),\n cartaocredito: makeGeneric('cartaocredito'),\n currency: (currencyValueInput: string | number, decimalsFormat: number = 2) => {\n return formatNumber(MASKS['currency'], currencyValueInput, decimalsFormat);\n },\n data: makeGeneric('data'),\n date: makeGeneric('date'),\n datetime: makeGeneric('datetime'),\n datahora: makeGeneric('datahora'),\n ect: makeGeneric('ect'),\n endereco: makeGeneric('endereco'),\n inscricaoestadual: (inscricaoestadualValue: string, estado: string) => {\n const ie = MASKSIE;\n const ieState = ie[estado]\n\n if (!inscricaoestadualValue || !estado || !ieState ||\n !ieState.textMask) {\n return '';\n }\n\n let mask = ieState.textMask;\n let textMaskFunction = ieState.textMaskFunction\n if (typeof textMaskFunction === 'function') {\n mask = textMaskFunction(inscricaoestadualValue);\n }\n\n return conformToMask(\n inscricaoestadualValue,\n mask,\n { guide: false }\n ).conformedValue;\n },\n iptu: (iptuValue: string, estado: string, cidade: string) => {\n const mask = mask_iptu(iptuValue, estado, cidade);\n if (!mask || typeof mask === 'string') {\n return '';\n }\n return conformToMask(\n iptuValue,\n mask.textMask,\n { guide: false }\n ).conformedValue;\n },\n number: (numberValue: any, decimalsFormat: number = 2) => {\n return formatNumber(MASKS['number'], numberValue, decimalsFormat);\n },\n porcentagem: (porcentagemValue: string, decimalsFormat: number = 2) => {\n return formatNumber(MASKS['porcentagem'], porcentagemValue, decimalsFormat);\n },\n pispasep: makeGeneric('pispasep'),\n placa: makeGeneric('placa'),\n processo: makeGeneric('processo'),\n renavam: makeGeneric('renavam'),\n rg: makeGeneric('rg'),\n sped: makeGeneric('sped'),\n telefone: makeGeneric('telefone'),\n time: (value: string | Date) => {\n if (value instanceof Date) {\n value = value.toTimeString().split(' ')[0]\n }\n return makeGeneric('time')(value)\n },\n titulo: makeGeneric('titulo')\n};\n\n\n\n/**\n * FROM TEXT-MASK\n */\nexport const placeholderChar = '_'\nexport const strFunction = 'function'\n\nconst defaultPlaceholderChar = placeholderChar;\nconst emptyArray: any = []\nconst emptyString = ''\n\nexport function conformToMask(inputValue: String | Date = emptyString, mask = emptyArray, config: any = {}) {\n let rawValue = inputValue.toString();\n if (typeof inputValue === 'number') {\n rawValue = (<number>inputValue).toString();\n }\n if (inputValue instanceof Date) {\n rawValue = (<Date>inputValue).toLocaleString(\"pt-br\")\n }\n\n if (!isArray(mask)) {\n // If someone passes a function as the mask property, we should call the\n // function to get the mask array - Normally this is handled by the\n // `createTextMaskInputElement:update` function - this allows mask functions\n // to be used directly with `conformToMask`\n\n if (typeof mask === strFunction) {\n // call the mask function to get the mask array\n mask = mask(inputValue, config)\n\n // mask functions can setup caret traps to have some control over how the caret moves. We need to process\n // the mask for any caret traps. `processCaretTraps` will remove the caret traps from the mask\n mask = processCaretTraps(mask).maskWithoutCaretTraps\n } else {\n throw new Error(\n 'Text-mask:conformToMask; The mask property must be an array.'\n )\n }\n }\n\n // These configurations tell us how to conform the mask\n\n const guide = config.guide || true;\n const previousConformedValue = config.previousConformedValue || emptyString;\n const placeholder = convertMaskToPlaceholder(mask, placeholderChar);\n const currentCaretPosition = config.currentCaretPosition;\n const keepCharPositions = config.keepCharPositions;\n\n // The configs below indicate that the user wants the algorithm to work in *no guide* mode\n const suppressGuide = guide === false && previousConformedValue !== undefined\n\n // Calculate lengths once for performance\n const rawValueLength = rawValue.length\n const previousConformedValueLength = previousConformedValue.length\n const placeholderLength = placeholder.length\n const maskLength = mask.length\n\n // This tells us the number of edited characters and the direction in which they were edited (+/-)\n const editDistance = rawValueLength - previousConformedValueLength\n\n // In *no guide* mode, we need to know if the user is trying to add a character or not\n const isAddition = editDistance > 0\n\n // Tells us the index of the first change. For (438) 394-4938 to (38) 394-4938, that would be 1\n const indexOfFirstChange = currentCaretPosition + (isAddition ? -editDistance : 0)\n\n // We're also gonna need the index of last change, which we can derive as follows...\n const indexOfLastChange = indexOfFirstChange + Math.abs(editDistance)\n\n // If `conformToMask` is configured to keep character positions, that is, for mask 111, previous value\n // _2_ and raw value 3_2_, the new conformed value should be 32_, not 3_2 (default behavior). That's in the case of\n // addition. And in the case of deletion, previous value _23, raw value _3, the new conformed string should be\n // __3, not _3_ (default behavior)\n //\n // The next block of logic handles keeping character positions for the case of deletion. (Keeping\n // character positions for the case of addition is further down since it is handled differently.)\n // To do this, we want to compensate for all characters that were deleted\n if (keepCharPositions === true && !isAddition) {\n // We will be storing the new placeholder characters in this variable.\n let compensatingPlaceholderChars = emptyString\n\n // For every character that was deleted from a placeholder position, we add a placeholder char\n for (let i = indexOfFirstChange; i < indexOfLastChange; i++) {\n if (placeholder[i] === placeholderChar) {\n compensatingPlaceholderChars += placeholderChar\n }\n }\n\n // Now we trick our algorithm by modifying the raw value to make it contain additional placeholder characters\n // That way when the we start laying the characters again on the mask, it will keep the non-deleted characters\n // in their positions.\n rawValue = (\n rawValue.slice(0, indexOfFirstChange) +\n compensatingPlaceholderChars +\n rawValue.slice(indexOfFirstChange, rawValueLength)\n )\n }\n\n // Convert `rawValue` string to an array, and mark characters based on whether they are newly added or have\n // existed in the previous conformed value. Identifying new and old characters is needed for `conformToMask`\n // to work if it is configured to keep character positions.\n const rawValueArr = rawValue\n .split(emptyString)\n .map((char, i) => ({ char, isNew: i >= indexOfFirstChange && i < indexOfLastChange }))\n\n // The loop below removes masking characters from user input. For example, for mask\n // `00 (111)`, the placeholder would be `00 (___)`. If user input is `00 (234)`, the loop below\n // would remove all characters but `234` from the `rawValueArr`. The rest of the algorithm\n // then would lay `234` on top of the available placeholder positions in the mask.\n for (let i = rawValueLength - 1; i >= 0; i--) {\n const { char } = rawValueArr[i]\n\n if (char !== placeholderChar) {\n const shouldOffset = i >= indexOfFirstChange && previousConformedValueLength === maskLength\n\n if (char === placeholder[(shouldOffset) ? i - editDistance : i]) {\n rawValueArr.splice(i, 1)\n }\n }\n }\n\n // This is the variable that we will be filling with characters as we figure them out\n // in the algorithm below\n let conformedValue = emptyString\n let someCharsRejected = false\n\n // Ok, so first we loop through the placeholder looking for placeholder characters to fill up.\n placeholderLoop: for (let i = 0; i < placeholderLength; i++) {\n const charInPlaceholder = placeholder[i]\n\n // We see one. Let's find out what we can put in it.\n if (charInPlaceholder === placeholderChar) {\n // But before that, do we actually have any user characters that need a place?\n if (rawValueArr.length > 0) {\n // We will keep chipping away at user input until either we run out of characters\n // or we find at least one character that we can map.\n while (rawValueArr.length > 0) {\n // Let's retrieve the first user character in the queue of characters we have left\n const shift = rawValueArr.shift();\n let rawValueChar: string = '', isNew: boolean = false;\n if (shift) {\n rawValueChar = shift.char;\n isNew = shift.isNew;\n }\n\n // If the character we got from the user input is a placeholder character (which happens\n // regularly because user input could be something like (540) 90_-____, which includes\n // a bunch of `_` which are placeholder characters) and we are not in *no guide* mode,\n // then we map this placeholder character to the current spot in the placeholder\n if (rawValueChar === placeholderChar && suppressGuide !== true) {\n conformedValue += placeholderChar\n\n // And we go to find the next placeholder character that needs filling\n continue placeholderLoop\n\n // Else if, the character we got from the user input is not a placeholder, let's see\n // if the current position in the mask can accept it.\n } else if (mask[i].test(rawValueChar)) {\n // we map the character differently based on whether we are keeping character positions or not.\n // If any of the conditions below are met, we simply map the raw value character to the\n // placeholder position.\n if (\n keepCharPositions !== true ||\n isNew === false ||\n previousConformedValue === emptyString ||\n guide === false ||\n !isAddition\n ) {\n conformedValue += rawValueChar\n } else {\n // We enter this block of code if we are trying to keep character positions and none of the conditions\n // above is met. In this case, we need to see if there's an available spot for the raw value character\n // to be mapped to. If we couldn't find a spot, we will discard the character.\n //\n // For example, for mask `1111`, previous conformed value `_2__`, raw value `942_2__`. We can map the\n // `9`, to the first available placeholder position, but then, there are no more spots available for the\n // `4` and `2`. So, we discard them and end up with a conformed value of `92__`.\n const rawValueArrLength = rawValueArr.length\n let indexOfNextAvailablePlaceholderChar = null\n\n // Let's loop through the remaining raw value characters. We are looking for either a suitable spot, ie,\n // a placeholder character or a non-suitable spot, ie, a non-placeholder character that is not new.\n // If we see a suitable spot first, we store its position and exit the loop. If we see a non-suitable\n // spot first, we exit the loop and our `indexOfNextAvailablePlaceholderChar` will stay as `null`.\n for (let i = 0; i < rawValueArrLength; i++) {\n const charData = rawValueArr[i]\n\n if (charData.char !== placeholderChar && charData.isNew === false) {\n break\n }\n\n if (charData.char === placeholderChar) {\n indexOfNextAvailablePlaceholderChar = i\n break\n }\n }\n\n // If `indexOfNextAvailablePlaceholderChar` is not `null`, that means the character is not blocked.\n // We can map it. And to keep the character positions, we remove the placeholder character\n // from the remaining characters\n if (indexOfNextAvailablePlaceholderChar !== null) {\n conformedValue += rawValueChar\n rawValueArr.splice(indexOfNextAvailablePlaceholderChar, 1)\n\n // If `indexOfNextAvailablePlaceholderChar` is `null`, that means the character is blocked. We have to\n // discard it.\n } else {\n i--\n }\n }\n\n // Since we've mapped this placeholder position. We move on to the next one.\n continue placeholderLoop\n } else {\n someCharsRejected = true\n }\n }\n }\n\n // We reach this point when we've mapped all the user input characters to placeholder\n // positions in the mask. In *guide* mode, we append the left over characters in the\n // placeholder to the `conformedString`, but in *no guide* mode, we don't wanna do that.\n //\n // That is, for mask `(111)` and user input `2`, we want to return `(2`, not `(2__)`.\n if (suppressGuide === false) {\n conformedValue += placeholder.substr(i, placeholderLength)\n }\n\n // And we break\n break\n\n // Else, the charInPlaceholder is not a placeholderChar. That is, we cannot fill it\n // with user input. So we just map it to the final output\n } else {\n conformedValue += charInPlaceholder\n }\n }\n\n // The following logic is needed to deal with the case of deletion in *no guide* mode.\n //\n // Consider the silly mask `(111) /// 1`. What if user tries to delete the last placeholder\n // position? Something like `(589) /// `. We want to conform that to `(589`. Not `(589) /// `.\n // That's why the logic below finds the last filled placeholder character, and removes everything\n // from that point on.\n if (suppressGuide && isAddition === false) {\n let indexOfLastFilledPlaceholderChar = null\n\n // Find the last filled placeholder position and substring from there\n for (let i = 0; i < conformedValue.length; i++) {\n if (placeholder[i] === placeholderChar) {\n indexOfLastFilledPlaceholderChar = i\n }\n }\n\n if (indexOfLastFilledPlaceholderChar !== null) {\n // We substring from the beginning until the position after the last filled placeholder char.\n conformedValue = conformedValue.substr(0, indexOfLastFilledPlaceholderChar + 1)\n } else {\n // If we couldn't find `indexOfLastFilledPlaceholderChar` that means the user deleted\n // the first character in the mask. So we return an empty string.\n conformedValue = emptyString\n }\n }\n\n return { conformedValue, meta: { someCharsRejected } }\n}\n\n\nexport function convertMaskToPlaceholder(mask = emptyArray, placeholderChar = defaultPlaceholderChar) {\n if (!isArray(mask)) {\n throw new Error(\n 'Text-mask:convertMaskToPlaceholder; The mask property must be an array.'\n )\n }\n\n if (mask.indexOf(placeholderChar) !== -1) {\n throw new Error(\n 'Placeholder character must not be used as part of the mask. Please specify a character ' +\n 'that is not present in your mask as your placeholder character.\\n\\n' +\n `The placeholder character that was received is: ${JSON.stringify(placeholderChar)}\\n\\n` +\n `The mask that was received is: ${JSON.stringify(mask)}`\n )\n }\n\n return mask.map((char: any) => {\n return (char instanceof RegExp) ? placeholderChar : char\n }).join('')\n}\n\n/**\n * Due to a bug on textmask, the requireDecimal its not working, so this function solves this problem\n * @param maskType \n * @param numberValue \n * @param decimalsFormat \n * @returns \n */\nfunction formatNumber(maskType: any, numberValue: any, decimalsFormat: number = 2) {\n if (!numberValue && numberValue !== 0) {\n return '';\n }\n\n if (!numberValue.split) {\n numberValue += '';\n numberValue = numberValue.replace('.', ',');\n }\n\n const vals = numberValue.split(',');\n\n if (!maskType.textMask || typeof maskType.textMask !== 'function') {\n return '';\n }\n\n const mask = maskType.textMask(vals[0]);\n\n let decimals = ''\n if (decimalsFormat == undefined) {\n decimals = vals.length > 1 ? ',' + vals[1] : '';\n } else {\n decimals = vals.length > 1 ? (vals[1] < 10 ? vals[1].toString() + '0' : vals[1].toString()) : '00';\n if (decimals.length > decimalsFormat) {\n decimals = decimals.substring(0, decimalsFormat);\n }\n }\n\n let conformedValue = conformToMask(\n numberValue,\n mask,\n { guide: false }\n ).conformedValue\n\n\n let suffix = ''\n if (conformedValue.indexOf('%') >= 0) {\n conformedValue = conformedValue.replace('%', '')\n suffix = '%'\n }\n return conformedValue + (decimalsFormat > 0 ? ',' + decimals : '') + suffix;\n}","import {\n isPresent,\n isArray,\n isString,\n isNumber,\n isNil,\n processCaretTraps,\n allNumbersAreSame,\n getAllDigits,\n getAllWords,\n currencyToNumber,\n modulo11,\n numberToCurrency,\n slugify,\n fillString,\n randArray,\n rand,\n randomNumber,\n randomLetter,\n randomLetterOrNumber,\n getSpecialProperty\n} from './utils';\nexport { validateBr } from './validate';\nimport * as mask from './mask';\nimport { MASKS, MASKSIE } from './mask';\nimport { PLACAS_RANGE } from './placa';\nimport { ESTADOS } from './estados';\nimport { BigObject } from './interfaces';\n\nexport const utilsBr = {\n isPresent,\n isArray,\n isString,\n isNumber,\n isNil,\n processCaretTraps,\n allNumbersAreSame,\n getAllDigits,\n getAllWords,\n currencyToNumber,\n modulo11,\n numberToCurrency,\n slugify,\n fillString,\n randArray,\n rand,\n randomNumber,\n randomLetter,\n randomLetterOrNumber,\n getSpecialProperty,\n MASKS,\n MASKSIE,\n PLACAS_RANGE,\n ESTADOS\n};\n\nexport const maskBr: BigObject<Function> = mask.maskBr;","export const LOCALIZACAO_RUAS = ['Dois', 'Um', 'Principal', 'São José', 'Onze', 'São Paulo', 'Doze', 'Treze',\n 'Santo Antônio', 'Brasil', 'A', 'São Pedro', 'Quinze', 'São João',\n 'Quatorze', 'São Francisco', 'Sete de Setembro', 'Dezesseis', 'Quinze de Novembro',\n 'Tiradentes', 'Dezessete', 'Vinte', 'Bahia', 'Amazonas', 'Dezoito', 'São Sebastião', 'Paraná', 'Bela Vista', 'Santa Luzia', 'São Jorge',\n 'Castro Alves', 'Duque de Caxias', 'Projetada', 'Rui Barbosa', 'Santa Catarina', 'Minas Gerais', 'Santos Dumont',\n 'Espírito Santo', 'Vinte e Um', 'Vinte e Dois', 'da Paz', 'Treze de Maio', 'Rio de Janeiro',\n 'Goiás', 'Ceará', 'Belo Horizonte', 'das Flores', 'Sergipe', 'Vitória', 'José Bonifácio',\n 'Pernambuco', 'Piauí', 'Vinte e Três', 'Mato Grosso', 'Santa Maria', 'Dom Pedro II',\n 'Primeiro de Maio', 'Pará', 'Maranhão', 'Alagoas', 'Boa Vista', 'São Luiz', 'Vinte e Quatro', 'Paraíba', 'Santa Rita'];\n\nexport const LOCALIZACAO_LOGRADOUROS = ['Avenida', 'Rua', 'Marginal'];\n\nexport const LOCALIZACAO_COMPLEMENTOS = [`Apartamento`, 'Aeroporto', 'Anexo', `Andar`, `Bloco`, `Conjunto`, 'Cobertura', `Casa`,\n 'Fazenda', 'Fundos', 'Galeria', `Galpão`, `Lote`, `Loja`, `Portão`, `Quadra`, `Sala`, `Sobreloja`, 'Subsolo', 'Terreo'];\n\nexport const LOCALIZACAO_BAIRROS = ['Centro', 'Bela Vista', 'São José', 'Santo Antônio', 'São Francisco', 'Vila Nova',\n 'Boa Vista', 'Industrial', 'São Cristóvão', 'Planalto'];\n\nexport const LOCALIZACAO_ESTADOS = [\n { \"nome\": \"Acre\", \"uf\": \"AC\" },\n { \"nome\": \"Alagoas\", \"uf\": \"AL\" },\n { \"nome\": \"Amapá\", \"uf\": \"AP\" },\n { \"nome\": \"Amazonas\", \"uf\": \"AM\" },\n { \"nome\": \"Bahia\", \"uf\": \"BA\" },\n { \"nome\": \"Ceará\", \"uf\": \"CE\" },\n { \"nome\": \"Distrito Federal\", \"uf\": \"DF\" },\n { \"nome\": \"Espírito Santo\", \"uf\": \"ES\" },\n { \"nome\": \"Goiás\", \"uf\": \"GO\" },\n { \"nome\": \"Maranhão\", \"uf\": \"MA\" },\n { \"nome\": \"Mato Grosso\", \"uf\": \"MT\" },\n { \"nome\": \"Mato Grosso do Sul\", \"uf\": \"MS\" },\n { \"nome\": \"Minas Gerais\", \"uf\": \"MG\" },\n { \"nome\": \"Pará\", \"uf\": \"PA\" },\n { \"nome\": \"Paraíba\", \"uf\": \"PB\" },\n { \"nome\": \"Paraná\", \"uf\": \"PR\" },\n { \"nome\": \"Pernambuco\", \"uf\": \"PE\" },\n { \"nome\": \"Piauí\", \"uf\": \"PI\" },\n { \"nome\": \"Rio de Janeiro\", \"uf\": \"RJ\" },\n { \"nome\": \"Rio Grande do Norte\", \"uf\": \"RN\" },\n { \"nome\": \"Rio Grande do Sul\", \"uf\": \"RS\" },\n { \"nome\": \"Rondônia\", \"uf\": \"RO\" },\n { \"nome\": \"Roraima\", \"uf\": \"RR\" },\n { \"nome\": \"Santa Catarina\", \"uf\": \"SC\" },\n { \"nome\": \"São Paulo\", \"uf\": \"SP\" },\n { \"nome\": \"Sergipe\", \"uf\": \"SE\" },\n { \"nome\": \"Tocantins\", \"uf\": \"TO\" }\n];\nexport const LOCALIZACAO_CIDADES = [\n ['São Paulo', 'São Paulo'],\n ['Rio de Janeiro', 'Rio de Janeiro'],\n ['Brasília', 'Distrito Federal'],\n ['Salvador', 'Bahia'],\n ['Fortaleza', 'Ceará'],\n ['Belo Horizonte', 'Minas Gerais'],\n ['Manaus', 'Amazonas'],\n ['Curitiba', 'Paraná'],\n ['Recife', 'Pernambuco'],\n ['Goiânia', 'Goiás'],\n ['Belém', 'Pará'],\n ['Porto Alegre', 'Rio Grande do Sul'],\n ['Guarulhos', 'São Paulo'],\n ['Campinas', 'São Paulo'],\n ['São Luís', 'Maranhão'],\n ['São Gonçalo', 'Rio de Janeiro'],\n ['Maceió', 'Alagoas'],\n ['Duque de Caxias', 'Rio de Janeiro'],\n ['Cuiabá', 'Mato Grosso'],\n ['Campo Grande', 'Mato Grosso do Sul'],\n ['Natal', 'Rio Grande do Norte'],\n ['Teresina', 'Piauí'],\n ['São Bernardo do Campo', 'São Paulo'],\n ['Nova Iguaçu', 'Rio de Janeiro'],\n ['João Pessoa', 'Paraíba'],\n ['São José dos Campos', 'São Paulo'],\n ['Santo André', 'São Paulo'],\n ['Ribeirão Preto', 'São Paulo'],\n ['Jaboatão dos Guararapes', 'Pernambuco'],\n ['Osasco', 'São Paulo'],\n ['Uberlândia', 'Minas Gerais'],\n ['Sorocaba', 'São Paulo'],\n ['Contagem', 'Minas Gerais'],\n ['Aracaju', 'Sergipe'],\n ['Feira de Santana', 'Bahia'],\n ['Cuiabá', 'Mato Grosso'],\n ['Joinville', 'Santa Catarina'],\n ['Aparecida de Goiânia', 'Goiás'],\n ['Londrina', 'Paraná'],\n ['Juiz de Fora', 'Minas Gerais'],\n ['Ananindeua', 'Pará'],\n ['Porto Velho', 'Rondônia'],\n ['Serra', 'Espírito Santo'],\n ['Niterói', 'Rio de Janeiro'],\n ['Belford Roxo', 'Rio de Janeiro'],\n ['Caxias do Sul', 'Rio Grande do Sul'],\n ['Campos dos Goytacazes Campos dos Goytacazes', 'Rio de Janeiro'],\n ['Macapá', 'Amapá'],\n ['Florianópolis', 'Santa Catarina'],\n ['Vila Velha', 'Espírito Santo'],\n ['Mauá', 'São Paulo'],\n ['São João de Meriti', 'Rio de Janeiro'],\n ['São José do Rio Preto', 'São Paulo'],\n ['Mogi das Cruzes', 'São Paulo'],\n ['Betim', 'Minas Gerais'],\n ['Santos', 'São Paulo'],\n ['Diadema', 'São Paulo'],\n ['Maringá', 'Paraná'],\n ['Jundiaí', 'São Paulo'],\n ['Campina Grande', 'Paraíba'],\n ['Montes Claros', 'Minas Gerais'],\n ['Rio Branco', 'Acre'],\n ['Piracicaba', 'São Paulo'],\n ['Carapicuíba', 'São Paulo'],\n ['Boa Vista', 'Roraima'],\n ['Olinda', 'Pernambuco'],\n ['Anápolis', 'Goiás'],\n ['Cariacica', 'Espírito Santo'],\n ['Bauru', 'São Paulo'],\n ['Itaquaquecetuba', 'São Paulo'],\n ['São Vicente', 'São Paulo'],\n ['Vitória', 'Espírito Santo'],\n ['Caucaia', 'Ceará'],\n ['Caruaru', 'Pernambuco'],\n ['Blumenau', 'Santa Catarina'],\n ['Franca', 'São Paulo'],\n ['Ponta Grossa', 'Paraná'],\n ['Petrolina', 'Pernambuco'],\n ['Canoas', 'Rio Grande do Sul'],\n ['Pelotas', 'Rio Grande do Sul'],\n ['Vitória da Conquista', 'Bahia'],\n ['Ribeirão das Neves', 'Minas Gerais'],\n ['Uberaba', 'Minas Gerais'],\n ['Paulista', 'Pernambuco'],\n ['Cascavel', 'Paraná'],\n ['Praia Grande', 'São Paulo'],\n ['São José dos Pinhais', 'Paraná'],\n ['Guarujá', 'São Paulo'],\n ['Taubaté', 'São Paulo'],\n ['Petrópolis', 'Rio de Janeiro'],\n ['Limeira', 'São Paulo'],\n ['Santarém', 'Pará'],\n ['Camaçari', 'Bahia'],\n ['Palmas', 'Tocantins'],\n ['Suzano', 'São Paulo'],\n ['Mossoró', 'Rio Grande do Norte'],\n ['Taboão da Serra', 'São Paulo'],\n ['Várzea Grande', 'Mato Grosso'],\n ['Sumaré', 'São Paulo'],\n ['Santa Maria', 'Rio Grande do Sul'],\n ['Gravataí', 'Rio Grande do Sul'],\n ['Governador Valadares', 'Minas Gerais'],\n ['Marabá', 'Pará'],\n ['Juazeiro do Norte', 'Ceará'],\n ['Barueri', 'São Paulo'],\n ['Embu das Artes', 'São Paulo'],\n ['Volta Redonda', 'Rio de Janeiro'],\n ['Ipatinga', 'Minas Gerais'],\n ['Parnamirim', 'Rio Grande do Norte'],\n ['Imperatriz', 'Maranhão'],\n ['Foz do Iguaçu', 'Paraná'],\n ['Macaé', 'Rio de Janeiro'],\n ['Viamão', 'Rio Grande do Sul'],\n ['São Carlos', 'São Paulo'],\n ['Indaiatuba', 'São Paulo'],\n ['Cotia', 'São Paulo'],\n ['Novo Hamburgo', 'Rio Grande do Sul'],\n ['São José', 'Santa Catarina'],\n ['Magé', 'Rio de Janeiro'],\n ['Colombo', 'Paraná'],\n ['Itaboraí', 'Rio de Janeiro'],\n ['Sete Lagoas', 'Minas Gerais'],\n ['Americana', 'São Paulo'],\n ['Marília', 'São Paulo'],\n ['Divinópolis', 'Minas Gerais'],\n ['Itapevi', 'São Paulo'],\n ['São Leopoldo', 'Rio Grande do Sul'],\n ['Araraquara', 'São Paulo'],\n ['Rio Verde', 'Goiás'],\n ['Jacareí', 'São Paulo'],\n ['Rondonópolis', 'Mato Grosso'],\n ['Arapiraca', 'Alagoas'],\n ['Hortolândia', 'São Paulo'],\n ['Presidente Prudente', 'São Paulo'],\n ['Maracanaú', 'Ceará'],\n ['Dourados', 'Mato Grosso do Sul'],\n ['Chapecó Chapecó', 'Santa Catarina'],\n ['Cabo Frio', 'Rio de Janeiro'],\n ['Itajaí', 'Santa Catarina'],\n ['Santa Luzia', 'Minas Gerais'],\n ['Juazeiro', 'Bahia'],\n ['Criciúma', 'Santa Catarina'],\n ['Itabuna', 'Bahia'],\n ['Águas Lindas de Goiás', 'Goiás'],\n ['Rio Grande', 'Rio Grande do Sul'],\n ['Alvorada', 'Rio Grande do Sul'],\n ['Cachoeiro de Itapemirim', 'Espírito Santo'],\n ['Sobral', 'Ceará'],\n ['Luziânia', 'Goiás'],\n ['Parauapebas', 'Pará'],\n ['Cabo de Santo Agostinho', 'Pernambuco'],\n ['Rio Claro', 'São Paulo'],\n ['Angra dos Reis', 'Rio de Janeiro'],\n ['Passo Fundo', 'Rio Grande do Sul'],\n ['Castanhal', 'Pará'],\n ['Lauro de Freitas', 'Bahia'],\n ['Araçatuba', 'São Paulo'],\n ['Ferraz de Vasconcelos', 'São Paulo'],\n ['Santa Bárbara do Oeste', 'São Paulo'],\n ['Nova Friburgo', 'Rio de Janeiro'],\n ['Barra Mansa', 'Rio de Janeiro'],\n ['Nossa Senhora do Socorro', 'Sergipe'],\n ['Teresópolis', 'Rio de Janeiro'],\n ['Guarapuava', 'Paraná'],\n ['Araguaína', 'Tocantins'],\n ['Ibirité', 'Minas Gerais'],\n ['Jaraguá do Sul', 'Santa Catarina'],\n ['São José de Ribamar', 'Maranhão'],\n ['Mesquita', 'Rio de Janeiro'],\n ['Francisco Morato', 'São Paulo'],\n ['Itapecerica da Serra', 'São Paulo'],\n ['Itu', 'São Paulo'],\n ['Linhares', 'Espírito Santo'],\n ['Palhoça', 'Santa Catarina'],\n ['Timon', 'Maranhão'],\n ['Bragança Paulista', 'São Paulo'],\n ['Valparaíso de Goiás', 'Goiás'],\n ['Pindamonhangaba', 'São Paulo'],\n ['Poços de Caldas', 'Minas Gerais'],\n ['Caxias', 'Maranhão'],\n ['Itapetininga', 'São Paulo'],\n ['Nilópolis', 'Rio de Janeiro'],\n ['Ilhéus', 'Bahia'],\n ['Maricá', 'Rio de Janeiro'],\n ['São Caetano do Sul', 'São Paulo'],\n ['Teixeira de Freitas', 'Bahia'],\n ['Camaragibe', 'Pernambuco'],\n ['Abaetetuba', 'Pará'],\n ['Lages', 'Santa Catarina'],\n ['Jequié', 'Bahia'],\n ['Barreiras', 'Bahia'],\n ['Paranaguá', 'Paraná'],\n ['Franco da Rocha', 'São Paulo'],\n ['Parnaíba', 'Piauí'],\n ['Patos de Minas', 'Minas Gerais'],\n ['Mogi Guaçu', 'São Paulo'],\n ['Alagoinhas', 'Bahia'],\n ['Pouso Alegre', 'Minas Gerais'],\n ['Rio das Ostras', 'Rio de Janeiro'],\n ['Queimados', 'Rio de Janeiro'],\n ['Jaú', 'São Paulo'],\n ['Porto Seguro', 'Bahia'],\n ['Botucatu', 'São Paulo'],\n ['Araucária', 'Paraná'],\n ['Sinop', 'Mato Grosso'],\n ['Atibaia', 'São Paulo'],\n ['Balneário Camboriú', 'Santa Catarina'],\n ['Sapucaia do Sul', 'Rio Grande do Sul'],\n ['Toledo', 'Paraná'],\n ['Teófilo Otoni', 'Minas Gerais'],\n ['Garanhuns', 'Pernambuco'],\n ['Santana de Parnaíba', 'São Paulo'],\n ['Vitória de Santo Antão', 'Pernambuco'],\n ['Cametá', 'Pará'],\n ['Barbacena', 'Minas Gerais'],\n ['Santa Rita', 'Paraíba'],\n ['Sabará', 'Minas Gerais'],\n ['Varginha', 'Minas Gerais'],\n ['Apucarana', 'Paraná'],\n ['Brusque', 'Santa Catarina'],\n ['Simões Filho', 'Bahia'],\n ['Araras', 'São Paulo'],\n ['Itaguaí', 'Rio de Janeiro'],\n ['Araruama', 'Rio de Janeiro'],\n ['Pinhais', 'Paraná'],\n ['Crato', 'Ceará'],\n ['Campo Largo', 'Paraná'],\n ['Marituba', 'Pará'],\n ['Resende', 'Rio de Janeiro'],\n ['Cubatão', 'São Paulo'],\n ['São Mateus', 'Espírito Santo'],\n ['Santa Cruz do Sul', 'Rio Grande do Sul'],\n ['Cachoeirinha', 'Rio Grande do Sul'],\n ['Itapipoca', 'Ceará'],\n ['Valinhos', 'São Paulo'],\n ['Maranguape', 'Ceará'],\n ['Ji-Paraná', 'Rondônia'],\n ['Conselheiro Lafaiete', 'Minas Gerais'],\n ['São Félix do Xingu', 'Pará'],\n ['Bragança', 'Pará'],\n ['Vespasiano', 'Minas Gerais'],\n ['Trindade', 'Goiás'],\n ['Uruguaiana', 'Rio Grande do Sul'],\n ['Sertãozinho', 'São Paulo'],\n ['Jandira', 'São Paulo'],\n ['Guarapari', 'Espírito Santo'],\n ['Barcarena', 'Pará'],\n ['Birigui', 'São Paulo'],\n ['Ribeirão Pires', 'São Paulo'],\n ['Arapongas', 'Paraná'],\n ['Codó', 'Maranhão'],\n ['Colatina', 'Espírito Santo'],\n ['Votorantim', 'São Paulo'],\n ['Paço do Lumiar', 'Maranhão'],\n ['Barretos', 'São Paulo'],\n ['Catanduva', 'São Paulo'],\n ['Várzea Paulista', 'São Paulo'],\n ['Guaratinguetá', 'São Paulo'],\n ['Tatuí', 'São Paulo'],\n ['Formosa', 'Goiás'],\n ['Caraguatatuba', 'São Paulo'],\n ['Três Lagoas', 'Mato Grosso do Sul'],\n ['Santana', 'Amapá'],\n ['Bagé', 'Rio Grande do Sul'],\n ['Itatiba', 'São Paulo'],\n ['Bento Gonçalves', 'Rio Grande do Sul'],\n ['Itabira', 'Minas Gerais'],\n ['Salto', 'São Paulo'],\n ['Almirante Tamandaré', 'Paraná'],\n ['Paulo Afonso', 'Bahia'],\n ['Poá', 'São Paulo'],\n ['Araguari', 'Minas Gerais'],\n ['Igarassu', 'Pernambuco'],\n ['Novo Gama', 'Goiás'],\n ['Ubá', 'Minas Gerais'],\n ['Senador Canedo', 'Goiás'],\n ['Passos', 'Minas Gerais'],\n ['Altamira', 'Pará'],\n ['Parintins', 'Amazonas'],\n ['Tucuruí', 'Pará'],\n ['Ourinhos', 'São Paulo'],\n ['Eunápolis', 'Bahia'],\n ['São Lourenço da Mata', 'Pernambuco'],\n ['Paragominas', 'Pará'],\n ['Piraquara', 'Paraná'],\n ['Açailândia', 'Maranhão'],\n ['Umuarama', 'Paraná'],\n ['Corumbá', 'Mato Grosso do Sul'],\n ['Coronel Fabriciano', 'Minas Gerais'],\n ['Paulínia', 'São Paulo'],\n ['Catalão', 'Goiás'],\n ['Muriaé', 'Minas Gerais'],\n ['Santa Cruz do Capibaribe', 'Pernambuco'],\n ['Ariquemes', 'Rondônia'],\n ['Patos', 'Paraíba'],\n ['Cambé', 'Paraná'],\n ['Tailândia', 'Pará'],\n ['Araxá', 'Minas Gerais'],\n ['Erechim', 'Rio Grande do Sul'],\n ['Tubarão', 'Santa Catarina'],\n ['Bacabal', 'Maranhão'],\n ['Japeri', 'Rio de Janeiro'],\n ['Itumbiara', 'Goiás'],\n ['Ituiutaba', 'Minas Gerais'],\n ['São Pedro da Aldeia', 'Rio de Janeiro'],\n ['Lagarto', 'Sergipe'],\n ['Assis', 'São Paulo'],\n ['Lavras', 'Minas Gerais'],\n ['Tangará da Serra', 'Mato Grosso'],\n ['Leme', 'São Paulo'],\n ['Itaperuna', 'Rio de Janeiro'],\n ['Breves', 'Pará'],\n ['Nova Serrana', 'Minas Gerais'],\n ['Iguatu', 'Ceará'],\n ['São Gonçalo do Amarante', 'Rio Grande do Norte'],\n ['Itanhaém', 'São Paulo'],\n ['Santo Antônio de Jesus', 'Bahia'],\n ['Caieiras', 'São Paulo'],\n ['Itacoatiara', 'Amazonas'],\n ['Itaituba', 'Pará'],\n ['Aracruz', 'Espírito Santo'],\n ['Jataí', 'Goiás'],\n ['Barra do Piraí', 'Rio de Janeiro'],\n ['Fazenda Rio Grande', 'Paraná'],\n ['Mairiporã', 'São Paulo']\n];","\nexport const AIH_ESTADOS = {\n 'AC': '12', 'AL': '27', 'AP': '16', 'AM': '13', 'BA': '29', 'CE': '23', 'DF': '53',\n 'ES': '32', 'GO': '52', 'MA': '21', 'MT': '51', 'MS': '50', 'MG': '31', 'PA': '15',\n 'PB': '25', 'PR': '41', 'PE': '26', 'PI': '22', 'RJ': '33', 'RN': '24', 'RS': '43',\n 'RO': '11', 'RR': '14', 'SC': '42', 'SP': '35', 'SE': '28', 'TO': '17'\n};\nexport const AIH_TIPOS = {\n '1': 'AIH Normal',\n '2': 'APACs',\n '3': 'Códigos de procedimentos específicos da CNRAC',\n '4': 'APACs da CNRAC',\n '5': 'Procedimentos de longa permanência na AIH'\n};\n\nexport const CID_NAME = {\n 'A00-B99': 'Algumas doenças infecciosas e parasitárias',\n 'C00-D48': 'Neoplasmas (tumores)',\n 'D50-D89': 'Doenças do sangue e dos órgãos hematopoéticos e alguns transtornos imunitários',\n 'E00-E90': 'Doenças endócrinas, nutricionais e metabólicas',\n 'F00-F99': 'Transtornos mentais e comportamentais',\n 'G00-G99': 'Doenças do sistema nervoso',\n 'H00-H59': 'Doenças do olho e anexos',\n 'H60-H95': 'Doenças do ouvido e da apófise mastoide',\n 'I00-I99': 'Doenças do aparelho circulatório',\n 'J00-J99': 'Doenças do aparelho respiratório',\n 'K00-K93': 'Doenças do aparelho digestivo',\n 'L00-L99': 'Doenças da pele e do tecido subcutâneo',\n 'M00-M99': 'Doenças do sistema osteomuscular e do tecido conjuntivo',\n 'N00-N99': 'Doenças do aparelho geniturinário',\n 'O00-O99': 'Gravidez, parto e puerpério',\n 'P00-P96': 'Algumas afecções originadas no período perinatal',\n 'Q00-Q99': 'Malformações congênitas, deformidades e anomalias cromossômicas',\n 'R00-R99': 'Sintomas, sinais e achados anormais de exames clínicos e de laboratório, não classificados em outra parte',\n 'S00-T98': 'Lesões, envenenamentos e algumas outras conseqüências de causas externas',\n 'V01-Y98': 'Causas externas de morbidade e de mortalidade',\n 'Z00-Z99': 'Fatores que influenciam o estado de saúde e o contato com os serviços de saúde',\n 'U00-U99': 'Códigos para propósitos especiais',\n}\n\nexport const CID_REGEX = {\n 'A00-B99': /[A|B][0-9][0-9]/g,\n 'C00-D48': /[C0-90-9|[D0-90-9]/g,\n 'D50-D89': /[A|B][0-9][0-9]/g,\n 'E00-E90': /[A|B][0-9][0-9]/g,\n 'F00-F99': /[A|B][0-9][0-9]/g,\n 'G00-G99': /[A|B][0-9][0-9]/g,\n 'H00-H59': /[A|B][0-9][0-9]/g,\n 'H60-H95': /[A|B][0-9][0-9]/g,\n 'I00-I99': /[A|B][0-9][0-9]/g,\n 'J00-J99': /[A|B][0-9][0-9]/g,\n 'K00-K93': /[A|B][0-9][0-9]/g,\n 'L00-L99': /[A|B][0-9][0-9]/g,\n 'M00-M99': /[A|B][0-9][0-9]/g,\n 'N00-N99': /[A|B][0-9][0-9]/g,\n 'O00-O99': /[A|B][0-9][0-9]/g,\n 'P00-P96': /[A|B][0-9][0-9]/g,\n 'Q00-Q99': /[A|B][0-9][0-9]/g,\n 'R00-R99': /[A|B][0-9][0-9]/g,\n 'S00-T98': /[A|B][0-9][0-9]/g,\n 'V01-Y98': /[A|B][0-9][0-9]/g,\n 'Z00-Z99': /[A|B][0-9][0-9]/g,\n 'U00-U99': /[A|B][0-9][0-9]/g,\n}\n\n","import { Pipe, PipeTransform } from \"@angular/core\";\nimport { maskBr } from \"./../js-brasil\";\n\n@Pipe({\n name: \"cpf\",\n})\nexport class CPFPipe implements PipeTransform {\n transform(cpfValue: any) {\n return maskBr['cpf'](cpfValue);\n }\n}\n","/*\n * Public API Surface of mapa-library-ui\n */\n\nexport * from './lib/core/elements/element-search';\nexport * from './lib/core/elements/element-base';\nexport * from './lib/core/elements/dropdown';\nexport * from './lib/core/elements/dropdown-tree';\nexport * from './lib/core/elements/input-text';\nexport * from './lib/core/elements/radio-button';\nexport * from './lib/core/elements/slide-toggle';\nexport * from './lib/core/elements/textarea';\n\nexport * from './lib/core/interfaces/button-icon.interface';\nexport * from './lib/core/interfaces/chart-options.interface';\nexport * from './lib/core/interfaces/dialog-data.interface';\nexport * from './lib/core/interfaces/element-option.interface';\n\nexport * from './lib/core/directives/mat-input-autosize.directive';\nexport * from './lib/core/directives/custom-paginator-legacy.directive';\n\nexport * from './lib/core/pipes/cpf';\nexport * from './lib/core/js-brasil';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","utilsBr","emptyString","maskBr","mask.maskBr"],"mappings":"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AAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC;AACvC,IAAA,CAAC,SAAS,EAAE,SA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C,CAAC;AACvC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACvC,IAAA,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACvC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACxC,IAAA,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC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"}