{"version":3,"file":"seniorsistemas-angular-components-bignumber-input.mjs","sources":["../../projects/angular-components/bignumber-input/src/lib/bignumber-input/bignumber-input.directive.ts","../../projects/angular-components/bignumber-input/src/lib/bignumber-input/bignumber-input.module.ts","../../projects/angular-components/bignumber-input/src/seniorsistemas-angular-components-bignumber-input.ts"],"sourcesContent":["import { Directive, forwardRef, input, model, OnChanges, SimpleChanges } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { NumericMaskDirective } from '@seniorsistemas/angular-components/numeric-mask';\n\n/**\n * @deprecated Este enum não tem mais efeito. O alinhamento do campo é sempre `'right'`.\n */\nexport enum BignumberAlignmentOption {\n    RIGHT = 'right',\n    LEFT = 'left',\n}\n\n/**\n * @deprecated Utilize a diretiva `sNumericMask` ao invés desta.\n * @description Diretiva de máscara para campos de entrada de números de grande precisão,\n * adaptada do `CurrencyMaskDirective`. Permite configurar precisão, escala,\n * separadores decimais e de milhar de acordo com o locale da aplicação.\n *\n * `precision`, o `maxLength` nativo, o `placeholder` auto-calculado, `pasteRejected` e a\n * preservação de separador explícito entre trocas de locale são herdados de\n * `NumericMaskDirective` (lá são opt-in; aqui ficam sempre ativos por causa do default de\n * `precision`). Esta classe só mapeia os aliases depreciados próprios dela (`scale`,\n * `thousandsSeparator`) para os inputs reais da base.\n *\n * @example\n * ```html\n * <input sBignumberInput [precision]=\"15\" [scale]=\"2\" [allowNegative]=\"false\" />\n * ```\n *\n * @category Inputs\n */\n@Directive({\n    selector: 'input[sBignumberInput]',\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            // NOSONAR - 'BignumberInputDirective' is deprecated.\n            useExisting: forwardRef(() => BignumberInputDirective),\n            multi: true,\n        },\n    ],\n    standalone: true,\n})\nexport class BignumberInputDirective extends NumericMaskDirective implements OnChanges {\n    /**\n     * @description Número total de dígitos significativos aceitos pelo campo (parte inteira + parte decimal).\n     *\n     * Durante a digitação, o campo limita fisicamente o número de caracteres via `maxLength`.\n     * Ao colar um valor que ultrapasse o limite, o evento `pasteRejected` é emitido e a colagem é cancelada.\n     * Após sair do campo (blur) ou ao submeter o formulário, se o valor ultrapassar `precision`,\n     * o campo ficará inválido com o erro `exceedsPrecision: { precision, actual }`.\n     *\n     * @default 15\n     */\n    public override precision = input<number | undefined>(15);\n\n    /**\n     * @deprecated Use `minDecimalPlaces` e `maxDecimalPlaces` ao invés deste.\n     * @description Número de casas decimais exibidas e aceitas pelo campo.\n     * Quando informado, repassa o valor para `minDecimalPlaces` e `maxDecimalPlaces`.\n     *\n     * @default 0\n     */\n    public scale = input(0);\n\n    /**\n     * @description Número mínimo de casas decimais exibidas.\n     *\n     * @default 0\n     */\n    public override minDecimalPlaces = model(0);\n\n    /**\n     * @description Número máximo de casas decimais aceitas.\n     *\n     * @default 0\n     */\n    public override maxDecimalPlaces = model(0);\n\n    /**\n     * @description Separador decimal personalizado. Quando não informado,\n     * utiliza o separador definido pelo locale ativo da aplicação.\n     */\n    public override decimalSeparator = model(',');\n\n    /**\n     * @deprecated Use `thousandSeparator` ao invés deste.\n     * @description Separador de milhar personalizado. Recomenda-se migrar para `thousandSeparator`.\n     */\n    public thousandsSeparator = input<string | undefined>(undefined);\n\n    /**\n     * @description Separador de milhar personalizado. Quando não informado,\n     * utiliza o separador definido pelo locale ativo da aplicação.\n     */\n    public override thousandSeparator = model('.');\n\n    /**\n     * @deprecated Este input não tem mais efeito e pode ser removido.\n     * O alinhamento do campo é sempre `'right'`, conforme o comportamento padrão da máscara numérica.\n     */\n    public alignTo = input<'left' | 'right'>('right');\n\n    /**\n     * @description Permite a entrada de valores negativos.\n     *\n     * @default true\n     */\n    public override allowNegative = input(true);\n\n    /**\n     * Preserves this deprecated directive's legacy behavior: NumericMaskDirective now\n     * defaults to blocking decimal overflow while typing/pasting, but existing\n     * sBignumberInput consumers should not have their input behavior changed silently.\n     */\n    public override blockDecimalOverflow = input(false);\n\n    /**\n     * Maps this directive's own deprecated aliases (`scale`, `thousandsSeparator`) into the\n     * base's real inputs (`minDecimalPlaces`/`maxDecimalPlaces`/`thousandSeparator`) before\n     * delegating to `NumericMaskDirective`, which recalculates `maxLength`/`placeholder` from\n     * whichever of its own tracked inputs changed. Recalculates once more afterwards for the\n     * alias-driven changes, which the base has no knowledge of.\n     */\n    public override ngOnChanges(changes: SimpleChanges): void {\n        if (changes['thousandsSeparator']) {\n            const val = this.thousandsSeparator();\n            if (val !== undefined) {\n                this._thousandSeparatorExplicit = true;\n                this.thousandSeparator.set(val);\n            }\n        }\n        if (changes['scale']) {\n            this.minDecimalPlaces.set(this.scale());\n            this.maxDecimalPlaces.set(this.scale());\n        }\n\n        super.ngOnChanges(changes);\n\n        if (changes['scale'] || changes['thousandsSeparator']) {\n            this.calculateMaxLength();\n            this.updatePlaceholder();\n        }\n    }\n}\n","import { NgModule } from '@angular/core';\r\n\r\n// NOSONAR - 'BignumberInputDirective' is deprecated.\r\nimport { BignumberInputDirective } from './bignumber-input.directive';\r\n\r\n/**\r\n * @deprecated Será removido na v20. Importe diretamente o standalone `BignumberInputDirective` (de\r\n * `@seniorsistemas/angular-components/bignumber-input`) no lugar deste módulo.\r\n *\r\n * Migração automática (também executada pelo `ng update` na v20):\r\n * `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`\r\n */\r\n@NgModule({\r\n    imports: [BignumberInputDirective],\r\n    // NOSONAR - 'BignumberInputDirective' is deprecated.\r\n    exports: [BignumberInputDirective],\r\n})\r\nexport class BignumberInputModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}