{"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, OnInit, OnChanges, output, SimpleChanges } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, AbstractControl, ValidationErrors } 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 `BigNumberInput` 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 * @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    host: {\n        '[attr.placeholder]': 'placeholder()',\n        '[attr.maxLength]': 'maxLength',\n    },\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            // NOSONAR - 'BignumberInputDirective' is deprecated.\n            useExisting: forwardRef(() => BignumberInputDirective),\n            multi: true,\n        },\n    ],\n})\nexport class BignumberInputDirective extends NumericMaskDirective implements OnInit, 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 precision = input(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     * @description Texto de placeholder exibido quando o campo está vazio.\n     */\n    public placeholder = model<string | undefined>(undefined);\n\n    public maxLength?: number;\n\n    /**\n     * @description Emitido quando uma colagem (paste) é rejeitada pela validação do campo.\n     * Emite a string colada que foi recusada.\n     */\n    public pasteRejected = output<string>();\n\n    private _decimalSeparatorExplicit = false;\n    private _thousandSeparatorExplicit = false;\n\n    constructor() {\n        super();\n    }\n\n    public override ngOnInit(): void {\n        super.ngOnInit();\n        this.updatePlaceholder();\n    }\n\n    // ngOnChanges handles all signal writes reactively, avoiding the need for\n    // effect() with allowSignalWrites. The decimalSeparator/thousandSeparator inputs\n    // have truthy defaults, so ngOnChanges is necessary to distinguish \"parent bound this\"\n    // from \"it's just the default value\".\n    public override ngOnChanges(changes: SimpleChanges): void {\n        if (changes['decimalSeparator'] && this.decimalSeparator()) {\n            this._decimalSeparatorExplicit = true;\n        }\n        if (changes['thousandSeparator'] && this.thousandSeparator()) {\n            this._thousandSeparatorExplicit = true;\n        }\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        if (\n            changes['scale'] ||\n            changes['decimalSeparator'] ||\n            changes['thousandSeparator'] ||\n            changes['thousandsSeparator'] ||\n            changes['precision']\n        ) {\n            this.calculateMaxLength();\n        }\n        if (changes['scale'] || changes['decimalSeparator']) {\n            this.updatePlaceholder();\n        }\n    }\n\n    /**\n     * Overrides base paste handler to add precision validation.\n     * If the pasted value exceeds `precision` digits, the paste is rejected.\n     */\n    public override onPaste(event: ClipboardEvent): void {\n        const pastedText = event.clipboardData?.getData('text') ?? '';\n        const effectiveThousandSep = this.thousandsSeparator() ?? this.thousandSeparator();\n        const numericText = pastedText\n            .replace(new RegExp(`\\\\${effectiveThousandSep}`, 'g'), '')\n            .replace(this.decimalSeparator(), '.');\n        const [intPart, decimalPart = ''] = numericText.split('.');\n        const totalDigits = intPart.replace(/\\D/g, '').length + decimalPart.slice(0, this.scale()).length;\n\n        if (totalDigits > this.precision()) {\n            event.preventDefault();\n            this.pasteRejected.emit(pastedText);\n            return;\n        }\n\n        super.onPaste(event);\n    }\n\n    /**\n     * Overrides locale-derived separators with explicitly set inputs, if provided.\n     * If no explicit separator is set, the locale-derived value is used.\n     */\n    protected override updateSeparators(): void {\n        const explicitDecimal = this._decimalSeparatorExplicit ? this.decimalSeparator() : undefined;\n        const explicitThousand = this._thousandSeparatorExplicit\n            ? (this.thousandsSeparator() ?? this.thousandSeparator())\n            : undefined;\n\n        super.updateSeparators();\n\n        if (explicitDecimal !== undefined) {\n            this.decimalSeparator.set(explicitDecimal);\n        }\n        if (explicitThousand !== undefined) {\n            this.thousandSeparator.set(explicitThousand);\n        }\n\n        this.calculateMaxLength();\n        this.updatePlaceholder();\n    }\n\n    /**\n     * Overrides base validator to add precision validation.\n     * If the total number of significant digits exceeds `precision`, returns an `exceedsPrecision` error.\n     */\n    public override validate(control: AbstractControl): ValidationErrors | null {\n        const baseErrors = super.validate(control);\n\n        if (!control.value || !this.precision()) {\n            return baseErrors ?? null;\n        }\n\n        const numericStr = String(control.value).replace('-', '');\n        const [intPart, decimalPart = ''] = numericStr.split('.');\n        const totalDigits = intPart.length + decimalPart.length;\n\n        if (totalDigits > this.precision()) {\n            return {\n                ...baseErrors,\n                exceedsPrecision: {\n                    precision: this.precision(),\n                    actual: totalDigits,\n                },\n            };\n        }\n\n        return baseErrors ?? null;\n    }\n\n    /**\n     * Responsible to calculate the field maximum length considering the separators.\n     */\n    private calculateMaxLength(): void {\n        const decSepLength = this.decimalSeparator()?.length ?? 0;\n        const effectiveThousandSep = this.thousandsSeparator() ?? this.thousandSeparator();\n        const thoSepLength = effectiveThousandSep?.length ?? 0;\n\n        const DIGITS_GROUP_SIZE = 3;\n\n        let maxLength = this.precision() + (this.scale() ? decSepLength : 0);\n        maxLength +=\n            Math.ceil((this.precision() - (this.scale() ? this.scale() : 0)) / DIGITS_GROUP_SIZE - 1) * thoSepLength;\n\n        this.maxLength = maxLength;\n    }\n\n    private updatePlaceholder(): void {\n        const scale = this.scale();\n        if (!this.placeholder() && scale) {\n            this.placeholder.set(`0${this.decimalSeparator()}${''.padEnd(scale, '0')}`);\n        }\n    }\n}\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\n// NOSONAR - 'BignumberInputDirective' is deprecated.\nimport { BignumberInputDirective } from './bignumber-input.directive';\n\n@NgModule({\n    imports: [CommonModule],\n    // NOSONAR - 'BignumberInputDirective' is deprecated.\n    declarations: [BignumberInputDirective],\n    // NOSONAR - 'BignumberInputDirective' is deprecated.\n    exports: [BignumberInputDirective],\n})\nexport class BignumberInputModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}