{"version":3,"file":"seniorsistemas-angular-components-mask.mjs","sources":["../../projects/angular-components/mask/src/lib/mask/mask-formatter.pipe.ts","../../projects/angular-components/mask/src/lib/mask/mask-formatter.module.ts","../../projects/angular-components/mask/src/seniorsistemas-angular-components-mask.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * @description Pipe que aplica uma máscara de formatação a uma string,\n * suportando os tokens `9` (dígito), `a` (letra) e `*` (alfanumérico),\n * além de suporte a posições opcionais com `?`.\n *\n * @example\n * ```html\n * {{ '12345678901' | sMaskFormatter:'999.999.999-99' }}\n * ```\n *\n * @category Data\n */\n@Pipe({\n    name: 'sMaskFormatter',\n})\nexport class MaskFormatterPipe implements PipeTransform {\n    private _defs: any = {\n        '9': '[0-9]',\n        a: '[A-Za-z]',\n        '*': '[A-Za-z]|[0-9]',\n    };\n\n    public transform(value: string, maskFormat: string): any {\n        const buffer = [];\n        let opcionalPos = -1;\n        let pos = 0;\n        const maskTokens = maskFormat.split('');\n        const symbolsPosAfterOpcional = [];\n        const hasOpcional = maskFormat.includes('?');\n\n        for (let i = 0; i < maskTokens.length; i++) {\n            const token = maskTokens[i];\n\n            if (token !== '?') {\n                if (this._defs[token]) {\n                    const tokenRegex = this._defs[token];\n                    const charAtPos = value.charAt(pos);\n                    const isValidChar = new RegExp(tokenRegex).test(charAtPos);\n                    if (isValidChar) {\n                        buffer.push(charAtPos);\n                        pos++;\n                    } else {\n                        throw new Error(\"Value doesn't match mask format\");\n                    }\n                } else {\n                    buffer.push(token);\n                    if (hasOpcional && opcionalPos !== -1 && i > opcionalPos) {\n                        symbolsPosAfterOpcional.push(i);\n                    }\n                }\n            } else {\n                opcionalPos = i;\n            }\n        }\n\n        if (buffer[buffer.length - 1] !== value.charAt(value.length - 1) && symbolsPosAfterOpcional.length) {\n            let formattedValue = buffer.join('');\n\n            for (let i = 0; i < symbolsPosAfterOpcional.length; i++) {\n                const symbolPos = symbolsPosAfterOpcional[i];\n\n                const beforeSymbol = formattedValue.substring(0, symbolPos - 1);\n                const symbol = formattedValue.substring(symbolPos - 1, symbolPos);\n                const firstAfterSymbol = formattedValue.substring(symbolPos, symbolPos + 1);\n                const endOfString = formattedValue.substring(symbolPos + 1);\n\n                formattedValue = `${beforeSymbol}${firstAfterSymbol}${symbol}${endOfString}`;\n            }\n            return `${formattedValue}${value.substr(value.length - symbolsPosAfterOpcional.length)}`;\n        }\n\n        return buffer.join('');\n    }\n}\n\n","import { NgModule } from '@angular/core';\n\nimport { MaskFormatterPipe } from './mask-formatter.pipe';\n\n@NgModule({\n    exports: [MaskFormatterPipe],\n    declarations: [MaskFormatterPipe],\n})\nexport class MaskFormatterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}