{"version":3,"file":"ironsource-fusion-ui-components-input-inline-common-base.mjs","sources":["../../../projects/fusion-ui/components/input-inline/common/base/inline-input-type.enum.ts","../../../projects/fusion-ui/components/input-inline/common/base/input-inline.base.component.ts","../../../projects/fusion-ui/components/input-inline/common/base/input-inline.config.ts","../../../projects/fusion-ui/components/input-inline/common/base/ironsource-fusion-ui-components-input-inline-common-base.ts"],"sourcesContent":["export enum InlineInputType {\n    Text,\n    Number,\n    Currency,\n    Percent,\n    Dropdown\n}\n","import {\n    ChangeDetectorRef,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    SimpleChanges,\n    ViewChild\n} from '@angular/core';\nimport {isNullOrUndefined, isNumber, isObject, isString} from '@ironsource/fusion-ui/utils';\nimport {ControlValueAccessor, FormControl} from '@angular/forms';\nimport {InputComponent, InputOptions} from '@ironsource/fusion-ui/components/input';\nimport {BehaviorSubject, fromEvent, Subject, Subscription} from 'rxjs';\nimport {InlineInputType} from './inline-input-type.enum';\nimport {CurrencyPipe} from '@angular/common';\nimport {filter, takeUntil} from 'rxjs/operators';\nimport {AdvancedInputInline} from './advanced-input-inline';\nimport {CurrencyPipeParameters, InputInlineConfigByStyle} from './input-inline.config';\n\n@Directive()\nexport abstract class InputInlineBaseComponent implements ControlValueAccessor, OnInit, OnChanges, OnDestroy {\n    /** @internal */\n    @ViewChild('inputComponent') inputComponent: InputComponent;\n    /** @internal */\n    @Input() textClass: string;\n    @Input() type: InlineInputType = InlineInputType.Text;\n    @Input() loading: boolean;\n    @Input() readOnly: boolean;\n    @Input() error: string;\n    @Input() errorType = 'error';\n    @Input() inputErrorIconShow: boolean;\n    @Input() currencyPipeParameters: CurrencyPipeParameters;\n    @Input() inputOptions: InputOptions;\n\n    // eslint-disable-next-line\n    @Output() onSave = new EventEmitter();\n    // eslint-disable-next-line\n    @Output() onCancel = new EventEmitter();\n    /** @internal */\n    isEditMode$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n    /** @internal */\n    setEditMode$ = new Subject();\n    /** @internal */\n    inputControl = new FormControl();\n    /** @internal */\n    savedValue: any;\n    /** @internal */\n    sanitationRegex: string;\n    /** @internal */\n    viewOnlyText: string;\n    /** @internal */\n    configByStyle: InputInlineConfigByStyle;\n    /** @internal */\n    disable: boolean;\n\n    private stayInEditMode = false;\n    private clickOutSideSubscription: Subscription;\n    private onDestroy$ = new Subject<void>();\n\n    get inputType(): string {\n        return this.isType(InlineInputType.Text) ? 'text' : 'number';\n    }\n\n    get inputUnits() {\n        return this.isType(InlineInputType.Currency) ? '$' : this.isType(InlineInputType.Percent) ? '%' : null;\n    }\n\n    get inputUnitsPosition() {\n        return this.isType(InlineInputType.Currency) ? 'left' : this.isType(InlineInputType.Percent) ? 'right' : null;\n    }\n\n    get savedValueToString() {\n        let value = this.savedValue;\n        if (!this.isType(InlineInputType.Text)) {\n            if (!this.savedValue) {\n                value = '0';\n            } else if (isNaN(this.savedValue)) {\n                value = this.savedValue;\n            } else if (this.isType(InlineInputType.Currency)) {\n                value = this.currencyPipe\n                    .transform(this.savedValue, this.currencyPipeCurrencyCode, this.currencyPipeDisplay, this.currencyPipeDigitsInfo)\n                    .replace(/\\.00$/, '');\n            } else if (this.isType(InlineInputType.Percent)) {\n                value = this.savedValue + ' %';\n            }\n        }\n\n        return value;\n    }\n\n    get isTypeCurrency(): boolean {\n        return this.isType(InlineInputType.Currency) && this.savedValue && !isNaN(this.savedValue);\n    }\n\n    get currencyPipeCurrencyCode(): string {\n        return !isNullOrUndefined(this.currencyPipeParameters) ? this.currencyPipeParameters.currencyCode : undefined;\n    }\n\n    get currencyPipeDisplay(): string {\n        return !isNullOrUndefined(this.currencyPipeParameters) ? this.currencyPipeParameters.display : undefined;\n    }\n\n    get currencyPipeDigitsInfo(): string {\n        return !isNullOrUndefined(this.currencyPipeParameters) ? this.currencyPipeParameters.digitsInfo : undefined;\n    }\n\n    constructor(private currencyPipe: CurrencyPipe, private elementRef: ElementRef, private cdr: ChangeDetectorRef) {}\n\n    ngOnInit() {\n        this.sanitationRegex = this.inputType === 'text' ? '' : '[0-9.]';\n\n        this.addListeners();\n    }\n\n    ngOnDestroy() {\n        this.onDestroy$.next();\n        this.onDestroy$.complete();\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (\n            (!changes.error || !changes.error.currentValue) &&\n            changes.loading &&\n            changes.loading.currentValue !== changes.loading.previousValue &&\n            changes.loading.currentValue === false &&\n            this.isEditMode$.getValue() &&\n            !this.stayInEditMode\n        ) {\n            this.isEditMode$.next(false);\n        }\n        if (this.inputComponent) {\n            this.inputComponent.toggleErrorClass(!!changes.error && !!changes.error.currentValue);\n        }\n    }\n\n    /** @internal */\n    @HostListener('keydown.enter')\n    save() {\n        if (this.isEditMode$.getValue() && this.inputControl.valid) {\n            if (this.inputControl.value.toString() !== this.savedValue.toString()) {\n                this.propagateChange(this.inputControl.value);\n                this.onSave.emit({\n                    currentValue: this.savedValue,\n                    newValue: this.inputControl.value\n                });\n            } else {\n                this.cancel();\n            }\n        }\n    }\n    /** @internal */\n    cancel() {\n        if (this.isEditMode$.getValue() && !this.loading) {\n            if (!this.stayInEditMode) {\n                this.inputControl.setValue(this.savedValue, {emitEvent: false});\n                this.inputComponent.blur();\n                this.isEditMode$.next(false);\n                this.onCancel.emit();\n            } else {\n                this.stayInEditMode = false;\n            }\n        }\n    }\n    /** @internal */\n    goToEditMode(withValue?: string | number): void {\n        this.inputControl.setValue(!isNullOrUndefined(withValue) ? withValue : this.savedValue, {emitEvent: false});\n        this.isEditMode$.next(true);\n        setTimeout(() => {\n            this.inputComponent.setFocus();\n        }, 0);\n    }\n    /** @internal */\n    propagateChange = (_: string) => {};\n    /** @internal */\n    writeValue(data: string | AdvancedInputInline): void {\n        let value: string;\n        if (!isNullOrUndefined(data)) {\n            if (isString(data) || isNumber(data)) {\n                value = data as string;\n                this.viewOnlyText = '';\n            } else if (isObject(data)) {\n                value = (data as AdvancedInputInline).value;\n                this.viewOnlyText = (data as AdvancedInputInline).viewOnlyText;\n            }\n\n            this.savedValue = value;\n            this.inputControl.setValue(value, {emitEvent: false});\n        } else {\n            this.savedValue = '';\n            this.inputControl.setValue('', {emitEvent: false});\n        }\n        this.isEditMode$.next(false);\n    }\n    /** @internal */\n    registerOnChange(fn: any): void {\n        this.propagateChange = fn;\n    }\n    /** @internal */\n    registerOnTouched(): void {}\n    /** @internal */\n    setDisabledState?(isDisabled: boolean): void {\n        const status = isDisabled ? 'disable' : 'enable';\n        this.inputControl[status]();\n        this.readOnly = this.readOnly || isDisabled;\n        this.disable = isDisabled;\n    }\n\n    private addListeners() {\n        this.setEditMode$.pipe(takeUntil(this.onDestroy$)).subscribe(this.setEditMode.bind(this));\n\n        this.isEditMode$\n            .asObservable()\n            .pipe(\n                takeUntil(this.onDestroy$),\n                filter(val => val)\n            )\n            .subscribe(this.handleClickOutSideListener.bind(this));\n\n        this.inputControl.valueChanges.pipe(takeUntil(this.onDestroy$)).subscribe(this.clearErrorOnValueChange.bind(this));\n    }\n\n    private handleClickOutSideListener(value: boolean, $event): void {\n        if (value && !this.error) {\n            this.clickOutSideSubscription = fromEvent(document, 'click').subscribe((event: MouseEvent) => {\n                const clickedInside = this.isClickInsideByCoordinates(event);\n                if (!clickedInside && !this.stayInEditMode) {\n                    this.cancel();\n                    this.cdr.markForCheck();\n                }\n            });\n        } else {\n            if (this.clickOutSideSubscription && typeof this.clickOutSideSubscription.unsubscribe === 'function') {\n                this.clickOutSideSubscription.unsubscribe();\n            }\n        }\n    }\n\n    private isClickInsideByCoordinates(event: MouseEvent): boolean {\n        const parentRect = this.elementRef.nativeElement.getBoundingClientRect();\n        return (\n            parentRect.left <= event.clientX &&\n            parentRect.right >= event.clientX &&\n            parentRect.top <= event.clientY &&\n            parentRect.bottom >= event.clientY\n        );\n    }\n\n    private setEditMode(val: string | number) {\n        if (!!val) {\n            this.goToEditMode(val);\n            this.stayInEditMode = true;\n        }\n    }\n\n    private clearErrorOnValueChange(value) {\n        if (!!value && this.error) {\n            this.error = '';\n        }\n    }\n\n    private isType(type: InlineInputType): boolean {\n        return this.type === type;\n    }\n}\n","/*\n * Created on 2020.4.19 By Andy Kononenko (andyk@ironsrc.com)\n */\n\nimport {IconData} from '@ironsource/fusion-ui/components/icon/common/entities';\n\nexport interface InputInlineConfigByStyle {\n    iconEdit?: IconData;\n    iconSave?: IconData;\n    iconError?: IconData;\n    loadingSize?: string;\n}\n\nexport const CONFIG_INPUT_INLINE_BY_UI_STYLE: {[styleKey: string]: InputInlineConfigByStyle} = {\n    style_v1: {\n        iconEdit: {iconName: 'edit', iconVersion: 'v1'},\n        iconSave: {iconName: 'check-v-2', iconVersion: 'v1'},\n        loadingSize: 'small'\n    },\n    style_v2: {\n        iconEdit: {iconName: 'pen', iconVersion: 'v2'},\n        iconSave: {iconName: 'check', iconVersion: 'v2'},\n        loadingSize: 'inline'\n    },\n    style_v3: {\n        iconSave: {iconName: 'check-bold', iconVersion: 'v3'},\n        iconError: {iconName: 'error', iconVersion: 'v3'},\n        loadingSize: 'inline'\n    }\n};\n\nexport interface CurrencyPipeParameters {\n    currencyCode?: string;\n    display?: 'code' | 'symbol' | 'symbol-narrow' | string;\n    digitsInfo?: string;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}