{"version":3,"file":"primeng-spinner.mjs","sources":["../../src/app/components/spinner/spinner.ts","../../src/app/components/spinner/primeng-spinner.ts"],"sourcesContent":["import {NgModule,Component,ElementRef,OnInit,Input,Output,EventEmitter,forwardRef,ViewChild,ChangeDetectorRef,ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\n\nexport const SPINNER_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => Spinner),\n    multi: true\n};\n\n@Component({\n    selector: 'p-spinner',\n    template: `\n        <span class=\"ui-spinner ui-widget ui-corner-all\">\n            <input #inputfield type=\"text\" [attr.id]=\"inputId\" [value]=\"formattedValue||null\" [attr.name]=\"name\" [attr.aria-valumin]=\"min\" [attr.aria-valuemax]=\"max\" [attr.aria-valuenow]=\"value\" [attr.aria-labelledby]=\"ariaLabelledBy\"\n            [attr.size]=\"size\" [attr.maxlength]=\"maxlength\" [attr.tabindex]=\"tabindex\" [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\" [readonly]=\"readonly\" [attr.required]=\"required\"\n            (keydown)=\"onInputKeydown($event)\" (blur)=\"onInputBlur($event)\" (input)=\"onInput($event)\" (change)=\"onInputChange($event)\" (focus)=\"onInputFocus($event)\"\n            [ngStyle]=\"inputStyle\" [class]=\"inputStyleClass\" [ngClass]=\"'ui-spinner-input ui-inputtext ui-widget ui-state-default ui-corner-all'\">\n            <button type=\"button\" [ngClass]=\"{'ui-spinner-button ui-spinner-up ui-corner-tr ui-button ui-widget ui-state-default':true,'ui-state-disabled':disabled}\" [disabled]=\"disabled||readonly\" tabindex=\"-1\" [attr.readonly]=\"readonly\"\n                (mouseleave)=\"onUpButtonMouseleave($event)\" (mousedown)=\"onUpButtonMousedown($event)\" (mouseup)=\"onUpButtonMouseup($event)\">\n                <span class=\"ui-spinner-button-icon pi pi-caret-up ui-clickable\"></span>\n            </button>\n            <button type=\"button\" [ngClass]=\"{'ui-spinner-button ui-spinner-down ui-corner-br ui-button ui-widget ui-state-default':true,'ui-state-disabled':disabled}\" [disabled]=\"disabled||readonly\" tabindex=\"-1\" [attr.readonly]=\"readonly\"\n                (mouseleave)=\"onDownButtonMouseleave($event)\" (mousedown)=\"onDownButtonMousedown($event)\" (mouseup)=\"onDownButtonMouseup($event)\">\n                <span class=\"ui-spinner-button-icon pi pi-caret-down ui-clickable\"></span>\n            </button>\n        </span>\n    `,\n    host: {\n        'class': 'p-element',\n        '[class.ui-inputwrapper-filled]': 'filled',\n        '[class.ui-inputwrapper-focus]': 'focus'\n    },\n    providers: [SPINNER_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./spinner.css']\n})\nexport class Spinner implements OnInit,ControlValueAccessor {\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n    @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n    @Input() min: number;\n\n    @Input() max: number;\n\n    @Input() maxlength: number;\n\n    @Input() size: number;\n\n    @Input() placeholder: string;\n\n    @Input() inputId: string;\n\n    @Input() disabled: boolean;\n\n    @Input() readonly: boolean;\n\n    @Input() tabindex: number;\n\n    @Input() required: boolean;\n\n    @Input() name: string;\n\n    @Input() ariaLabelledBy: string;\n\n    @Input() inputStyle: any;\n\n    @Input() inputStyleClass: string;\n\n    @Input() formatInput: boolean;\n\n    @Input() decimalSeparator: string;\n\n    @Input() thousandSeparator: string;\n\n    @Input() precision: number;\n\n    value: any;\n\n    _step: number = 1;\n\n    formattedValue: string;\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    keyPattern: RegExp = /[0-9\\+\\-]/;\n\n    public timer: any;\n\n    public focus: boolean;\n\n    public filled: boolean;\n\n    public negativeSeparator = '-';\n\n    localeDecimalSeparator: string;\n\n    localeThousandSeparator: string;\n\n    thousandRegExp: RegExp;\n\n    calculatedPrecision: number;\n\n    @ViewChild('inputfield') inputfieldViewChild: ElementRef;\n\n    @Input() get step(): number {\n        return this._step;\n    }\n    set step(val:number) {\n        this._step = val;\n\n        if (this._step != null) {\n            let tokens = this.step.toString().split(/[,]|[.]/);\n            this.calculatedPrecision = tokens[1] ? tokens[1].length : undefined;\n        }\n    }\n\n    constructor(public el: ElementRef, public cd: ChangeDetectorRef) {}\n\n    ngOnInit() {\n        if (this.formatInput) {\n            this.localeDecimalSeparator = (1.1).toLocaleString().substring(1, 2);\n            this.localeThousandSeparator = (1000).toLocaleString().substring(1, 2);\n            this.thousandRegExp = new RegExp(`[${this.thousandSeparator || this.localeThousandSeparator}]`, 'gim');\n\n            if (this.decimalSeparator && this.thousandSeparator && this.decimalSeparator === this.thousandSeparator) {\n                console.warn(\"thousandSeparator and decimalSeparator cannot have the same value.\");\n            }\n        }\n    }\n\n    repeat(event: Event, interval: number, dir: number) {\n        let i = interval||500;\n\n        this.clearTimer();\n        this.timer = setTimeout(() => {\n            this.repeat(event, 40, dir);\n        }, i);\n\n        this.spin(event, dir);\n    }\n\n    spin(event: Event, dir: number) {\n        let step = this.step * dir;\n        let currentValue: number;\n        let precision = this.getPrecision();\n\n        if (this.value)\n            currentValue = (typeof this.value === 'string') ? this.parseValue(this.value) : this.value;\n        else\n            currentValue = 0;\n\n        if (precision)\n            this.value = parseFloat(this.toFixed(currentValue + step, precision));\n        else\n            this.value = currentValue + step;\n\n        if (this.maxlength !== undefined && this.value.toString().length > this.maxlength) {\n            this.value = currentValue;\n        }\n\n        if (this.min !== undefined && this.value < this.min) {\n            this.value = this.min;\n        }\n\n        if (this.max !== undefined && this.value > this.max) {\n            this.value = this.max;\n        }\n\n        this.formatValue();\n        this.onModelChange(this.value);\n        this.onChange.emit(event);\n    }\n\n    getPrecision() {\n        return this.precision === undefined ? this.calculatedPrecision : this.precision;\n    }\n\n    toFixed(value: number, precision: number) {\n        let power = Math.pow(10, precision||0);\n        return String(Math.round(value * power) / power);\n    }\n\n    onUpButtonMousedown(event: Event) {\n        if (!this.disabled) {\n            this.inputfieldViewChild.nativeElement.focus();\n            this.repeat(event, null, 1);\n            this.updateFilledState();\n            event.preventDefault();\n        }\n    }\n\n    onUpButtonMouseup(event: Event) {\n        if (!this.disabled) {\n            this.clearTimer();\n        }\n    }\n\n    onUpButtonMouseleave(event: Event) {\n        if (!this.disabled) {\n            this.clearTimer();\n        }\n    }\n\n    onDownButtonMousedown(event: Event) {\n        if (!this.disabled) {\n            this.inputfieldViewChild.nativeElement.focus();\n            this.repeat(event, null, -1);\n            this.updateFilledState();\n            event.preventDefault();\n        }\n    }\n\n    onDownButtonMouseup(event: Event) {\n        if (!this.disabled) {\n            this.clearTimer();\n        }\n    }\n\n    onDownButtonMouseleave(event: Event) {\n        if (!this.disabled) {\n            this.clearTimer();\n        }\n    }\n\n    onInputKeydown(event: KeyboardEvent) {\n        if (event.which == 38) {\n            this.spin(event, 1);\n            event.preventDefault();\n        }\n        else if (event.which == 40) {\n            this.spin(event, -1);\n            event.preventDefault();\n        }\n    }\n\n    onInputChange(event: Event) {\n        this.onChange.emit(event);\n    }\n\n    onInput(event: KeyboardEvent) {\n        this.value = this.parseValue((<HTMLInputElement> event.target).value);\n        this.onModelChange(this.value);\n        this.updateFilledState();\n    }\n\n    onInputBlur(event) {\n        this.focus = false;\n        this.formatValue();\n        this.onModelTouched();\n        this.onBlur.emit(event);\n    }\n\n    onInputFocus(event) {\n        this.focus = true;\n        this.onFocus.emit(event);\n    }\n\n    parseValue(val: string): number {\n        let value: number;\n        let precision = this.getPrecision();\n\n        if (val.trim() === '') {\n            value = null;\n        }\n        else {\n            if (this.formatInput) {\n                val = val.replace(this.thousandRegExp, '');\n            }\n\n            if (precision) {\n                val = this.formatInput ? val.replace(this.decimalSeparator || this.localeDecimalSeparator, '.') : val.replace(',', '.');\n                value = parseFloat(val);\n            }\n            else {\n                value = parseInt(val, 10);\n            }\n\n            if (!isNaN(value)) {\n                if (this.max !== null && value > this.max) {\n                    value = this.max;\n                }\n\n                if (this.min !== null && value < this.min) {\n                    value = this.min;\n                }\n            }\n            else {\n                value = null;\n            }\n        }\n\n        return value;\n    }\n\n    formatValue() {\n        let value = this.value;\n        let precision = this.getPrecision();\n\n        if (value != null) {\n            if (this.formatInput) {\n                value = value.toLocaleString(undefined, {maximumFractionDigits: 20});\n\n                if (this.decimalSeparator && this.thousandSeparator) {\n                    value = value.split(this.localeDecimalSeparator);\n\n                    if (precision && value[1]) {\n                        value[1] = (this.decimalSeparator || this.localeDecimalSeparator) + value[1];\n                    }\n\n                    if (this.thousandSeparator && value[0].length > 3) {\n                        value[0] = value[0].replace(new RegExp(`[${this.localeThousandSeparator}]`, 'gim'), this.thousandSeparator);\n                    }\n\n                    value = value.join('');\n                }\n            }\n\n            this.formattedValue = value.toString();\n        }\n        else {\n            this.formattedValue = null;\n        }\n\n        if (this.inputfieldViewChild && this.inputfieldViewChild.nativeElement) {\n            this.inputfieldViewChild.nativeElement.value = this.formattedValue;\n        }\n    }\n\n    clearTimer() {\n        if (this.timer) {\n            clearInterval(this.timer);\n        }\n    }\n\n    writeValue(value: any) : void {\n        this.value = value;\n        this.formatValue();\n        this.updateFilledState();\n        this.cd.markForCheck();\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    updateFilledState() {\n        this.filled = (this.value !== undefined && this.value != null);\n    }\n}\n\n\n@NgModule({\n    imports: [CommonModule,InputTextModule],\n    exports: [Spinner],\n    declarations: [Spinner]\n})\nexport class SpinnerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}