{"version":3,"file":"ironsource-fusion-ui-components-input-common-base.mjs","sources":["../../../projects/fusion-ui/components/input/common/base/input.options.ts","../../../projects/fusion-ui/components/input/common/base/input-parameters.ts","../../../projects/fusion-ui/components/input/common/base/input-utils.ts","../../../projects/fusion-ui/components/input/common/base/input.base.component.ts","../../../projects/fusion-ui/components/input/common/base/input.component.config.ts","../../../projects/fusion-ui/components/input/common/base/ironsource-fusion-ui-components-input-common-base.ts"],"sourcesContent":["/*\n * Created on 2020.3.24 By Andy Kononenko (andyk@ironsrc.com)\n */\n\nimport {IconData} from '@ironsource/fusion-ui/components/icon/v1';\n\nexport enum InputSize {\n    Small = 'small',\n    Medium = 'medium'\n}\n\nexport interface InputOptions {\n    size?: InputSize;\n    width?: string;\n    buttonIcon?: IconData;\n    rounded?: boolean;\n    style?: {[styleKey: string]: string};\n    iconStyle?: {[styleKey: string]: string};\n    preventCharacters?: string[];\n    isPassHidden?: boolean;\n}\n\nexport const DEFAULT_INPUT_OPTIONS = {\n    width: '',\n    rounded: false,\n    isPassHidden: true\n};\n","import {Directive, Input} from '@angular/core';\nimport {InputConfiguration, InputIconData} from './input-entities';\nimport {InputOptions, DEFAULT_INPUT_OPTIONS} from './input.options';\nimport {BehaviorSubject} from 'rxjs';\n\n@Directive()\nexport abstract class InputParameters {\n    /** @internal */\n    @Input() set configuration(value: InputConfiguration) {\n        this.onConfigurationChanged(value);\n    }\n    /** @internal */\n    @Input() set placeholder(placeholder: string) {\n        this.configuration = {...this._configuration, placeholder};\n    }\n    /** @internal */\n    @Input() set errorType(errorType: string) {\n        this.configuration = {...this._configuration, errorType};\n    }\n    /** @internal */\n    @Input() set name(name: string) {\n        this.configuration = {...this._configuration, name};\n    }\n    /** @internal */\n    @Input() set icon(icon: InputIconData | InputIconData[]) {\n        this.configuration = {...this._configuration, icon};\n    }\n    /** @internal */\n    @Input() set units(units: string) {\n        this.configuration = {...this._configuration, units};\n    }\n    /** @internal */\n    @Input() set unitPos(unitPos: string) {\n        this.configuration = {...this._configuration, unitPos};\n    }\n    /** @internal */\n    @Input() set unitPlaceholder(unitPlaceholder: boolean) {\n        this.configuration = {...this._configuration, unitPlaceholder};\n    }\n    /** @internal */\n    @Input() set btn(btn: string) {\n        this.configuration = {...this._configuration, btn};\n    }\n    /** @internal */\n    @Input() set btnDisabled(btnDisabled: boolean) {\n        this.configuration = {...this._configuration, btnDisabled};\n    }\n    /** @internal */\n    @Input() set btnLoading(btnLoading: boolean) {\n        this.configuration = {...this._configuration, btnLoading};\n    }\n    /** @internal */\n    @Input() set id(id: number | string) {\n        this.configuration = {...this._configuration, id};\n    }\n    /** @internal */\n    @Input() set type(type: string) {\n        this.configuration = {...this._configuration, type};\n    }\n    /** @internal */\n    @Input() set class(value: string) {\n        this.configuration = {...this._configuration, class: value};\n    }\n    /** @internal */\n    @Input() set decimal(decimal: number) {\n        this.configuration = {...this._configuration, decimal};\n    }\n    /** @internal */\n    @Input() set clear(clear: boolean) {\n        this.configuration = {...this._configuration, clear};\n    }\n    /** @internal */\n    @Input() set readonly(readonly: boolean) {\n        this.configuration = {...this._configuration, readonly};\n    }\n    /** @internal */\n    @Input() set required(required: boolean) {\n        this.configuration = {...this._configuration, required};\n    }\n    /** @internal */\n    @Input() set showSearchIcon(showSearchIcon: 'left' | 'right' | 'none') {\n        this.configuration = {...this._configuration, showSearchIcon};\n        if (showSearchIcon !== 'none') {\n            this.configuration = {...this._configuration, ...{iconPos: showSearchIcon}};\n        }\n    }\n    /** @internal */\n    @Input() set showSearchIconWhenHasInputValue(showSearchIconWhenHasInputValue: boolean) {\n        this.configuration = {...this._configuration, showSearchIconWhenHasInputValue};\n    }\n    /** @internal */\n    @Input() set min(min: number) {\n        this.configuration = {...this._configuration, min};\n    }\n    /** @internal */\n    @Input() set max(max: number) {\n        this.configuration = {...this._configuration, max};\n    }\n    /** @internal */\n    @Input() set maxlength(maxlength: number) {\n        this.configuration = {...this._configuration, maxlength};\n    }\n    /** @internal */\n    @Input() set sanitationRegex(sanitationRegex: string | RegExp) {\n        this.configuration = {...this._configuration, sanitationRegex};\n    }\n    /** @internal */\n    @Input() set acceptFileExtensions(acceptFileExtensions: string) {\n        this.configuration = {...this._configuration, acceptFileExtensions};\n    }\n    /** @internal */\n    @Input() set disableWheelScroll(disableWheelScroll: boolean) {\n        this.configuration = {...this._configuration, disableWheelScroll};\n    }\n    /** @internal */\n    @Input() set options(options: InputOptions) {\n        this.configuration = {\n            ...this._configuration,\n            options: {\n                ...DEFAULT_INPUT_OPTIONS,\n                ...(options || {})\n            }\n        };\n    }\n\n    /** @internal */\n    // eslint-disable-next-line @angular-eslint/no-input-rename\n    @Input('isDisabled') set disabled(disabled: boolean) {\n        this.configuration = {...this._configuration, disabled};\n    }\n    /** @internal */\n    @Input() set error(error: boolean | string) {\n        this.configuration = {...this._configuration, error};\n    }\n    /** @internal */\n    @Input() set helperText(helperText: string) {\n        this.configuration = {...this._configuration, helperText};\n    }\n\n    /** @internal */\n    _configuration: InputConfiguration = {};\n    /** @internal */\n    abstract onConfigurationChanged(value: InputConfiguration): void;\n}\n","import {InputConfiguration} from './input-entities';\nimport {getUniqueNumber} from '@ironsource/fusion-ui/utils';\nimport {DEFAULT_INPUT_OPTIONS} from './input.options';\n\nexport const SPECIAL_KEYS = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Backspace', 'Tab', 'End', 'Home', 'Enter', 'Escape'];\nexport const ENTER_KEY_CODE = 'Enter';\nexport const ESCAPE_KEY_CODE = 'Escape';\n\nexport const INPUT_DEFAULT_CONFIGURATION: InputConfiguration = {\n    placeholder: '',\n    disabled: false,\n    disableOnLoading: true,\n    errorType: '',\n    btnDisabled: false,\n    btnLoading: false,\n    id: getUniqueNumber(),\n    type: 'text',\n    class: '',\n    showSearchIcon: 'none',\n    showSearchIconWhenHasInputValue: false,\n    acceptFileExtensions: '*/*',\n    options: {...DEFAULT_INPUT_OPTIONS}\n};\n","import {Input, EventEmitter, OnInit, Output, ElementRef, ViewChild, Injector, OnDestroy, AfterViewInit, Directive} from '@angular/core';\nimport {ControlValueAccessor, FormControl} from '@angular/forms';\nimport {isNullOrUndefined, isString} from '@ironsource/fusion-ui/utils';\nimport {BehaviorSubject, Observable, fromEvent, Subject, of, combineLatest} from 'rxjs';\nimport {map, takeUntil, tap, filter, startWith} from 'rxjs/operators';\nimport {InputOptions} from './input.options';\nimport {InputConfigByStyle} from './input.component.config';\nimport {InputParameters} from './input-parameters';\nimport {SPECIAL_KEYS, ESCAPE_KEY_CODE, ENTER_KEY_CODE, INPUT_DEFAULT_CONFIGURATION} from './input-utils';\nimport {InputConfiguration} from './input-entities';\n\n@Directive()\nexport class InputBaseComponent extends InputParameters implements OnInit, OnDestroy, AfterViewInit, ControlValueAccessor {\n    /** @internal */\n    @ViewChild('input', {static: false}) input: ElementRef;\n    /** @internal */\n    @ViewChild('fileInput', {static: false}) fileInput: ElementRef;\n    /** @internal */\n    @Input() loading: boolean;\n    /** @internal */\n    // Todo - think about a way to use it with generic way to listen to all kind of events\n    /** @internal */\n    @Output() ngFocus = new EventEmitter<void>();\n    /** @internal */\n    @Output() ngBlur = new EventEmitter<void>();\n    /** @internal */\n    @Output() ngEnter = new EventEmitter<any>();\n    /** @internal */\n    @Output() ngEscape = new EventEmitter<any>();\n    /** @internal */\n    @Output() btnAction = new EventEmitter<MouseEvent>();\n    /** @internal */\n    @Output() passHiddenStateChanged = new EventEmitter<boolean>();\n\n    /** @internal */\n    onDestroy$ = new Subject<void>();\n    /** @internal */\n    inputControl = new FormControl();\n    /** @internal */\n    file = new FormControl();\n    /** @internal */\n    focused: boolean;\n    /** @internal */\n    step: string;\n    /** @internal */\n    showErrorClass$ = new BehaviorSubject(false);\n    /** @internal */\n    configByStyle$ = new Observable<InputConfigByStyle>();\n    /** @internal */\n    disabled$ = new BehaviorSubject(false);\n    /** @internal */\n    isDisabledInput$ = new BehaviorSubject<boolean>(false);\n    /** @internal */\n    isDisabledFormControl$ = new BehaviorSubject<boolean>(false);\n\n    private inputControlValueChanges$: Observable<any>;\n    private fileControlValueChanges$: Observable<any>;\n    private _isPassHidden = true;\n    private onBlur: (args: string) => void;\n\n    constructor(\n        /** @internal */\n        public elementRef: ElementRef\n    ) {\n        super();\n    }\n\n    get config(): InputConfiguration {\n        return {...INPUT_DEFAULT_CONFIGURATION, ...this._configuration};\n    }\n\n    get isSmall(): boolean {\n        return this.config.options?.size === 'small';\n    }\n\n    set isPassHidden(val: boolean) {\n        this._isPassHidden = val;\n    }\n\n    get isPassHidden() {\n        return this._isPassHidden;\n    }\n\n    get isReadOnly() {\n        return (\n            this.config?.readonly || this.disabled$.getValue() || (this.loading && this.config?.disableOnLoading) || this.config?.btnLoading\n        );\n    }\n\n    // Todo - use optional chaining when upgrade ts version\n    get displaySearchIcon(): boolean {\n        const inputValue = this.input ? this.input.nativeElement.value : null;\n        return (\n            this.config.showSearchIcon !== 'none' && (!inputValue || (this.config.showSearchIconWhenHasInputValue && !this.config.clear))\n        );\n    }\n\n    ngOnInit(): void {\n        this.step = this.getStepIndication();\n        this.inputControlValueChanges$ = this.inputControl.valueChanges;\n        this.fileControlValueChanges$ = this.getFileControlValueChangesObservable();\n        this.configByStyle$ = this.getConfigStyleObservable();\n        this.showErrorClass$.next(!!this.config.error);\n        this.isPassHidden = this.config.options.isPassHidden;\n        this.initChangesTrigger();\n        this.initDisabledStateChanged();\n    }\n\n    ngAfterViewInit(): void {\n        this.setInputElementListeners();\n        this.setMouseWheelListener();\n        this.setKeyDownListener();\n    }\n\n    ngOnDestroy() {\n        this.onDestroy$.next();\n        this.onDestroy$.complete();\n    }\n\n    /** @internal */\n    initChangesTrigger(): void {\n        const valueChanges$ =\n            this.config.type === 'file'\n                ? this.fileControlValueChanges$.pipe(map(_ => this.fileInput.nativeElement.files))\n                : this.inputControlValueChanges$;\n\n        valueChanges$.pipe(takeUntil(this.onDestroy$)).subscribe(value => {\n            this.propagateChange(value);\n        });\n    }\n\n    initDisabledStateChanged() {\n        combineLatest([this.isDisabledFormControl$.asObservable(), this.isDisabledInput$.asObservable()])\n            .pipe(startWith([false, false]), takeUntil(this.onDestroy$))\n            .subscribe(([isDisabledInput, isDisabledFormControl]: [boolean, boolean]) => {\n                this.disabled$.next(isDisabledInput || isDisabledFormControl);\n            });\n    }\n    /** @internal */\n    onConfigurationChanged(value: InputConfiguration): void {\n        this.onOptionsChanged({previousValue: this.config.options, currentValue: value.options});\n        this.onDisabledChanged({previousValue: this.config.disabled, currentValue: value.disabled});\n        this.onErrorChanged({previousValue: this.config.error, currentValue: value.error});\n        this._configuration = value;\n    }\n    /** @internal */\n    getHolderClasses(): string[] {\n        return [\n            this.config.errorType === 'error' && 'fu-error-error',\n            this.config.errorType === 'warning' && 'fu-error-warning',\n            this.config.showSearchIcon !== 'none' && 'fu-has-search-icon',\n            this.config.showSearchIcon === 'right' && 'fu-search-icon-right-position',\n            !!this.config.btn && 'fu-button',\n            !!this.focused && 'focused',\n            (this.disabled$.getValue() || this.loading || this.config.btnLoading) && 'fu-disabled',\n            !!this.config.options.rounded && 'fu-rounded'\n        ].filter(Boolean);\n    }\n    /** @internal */\n    showErrorIcon(): boolean {\n        return true;\n    }\n    /** @internal */\n    getErrorIcon(errorType: string, infoIconName: string, warningIconName: string): string {\n        return errorType === 'error' ? infoIconName : errorType === 'warning' ? warningIconName : '';\n    }\n    /** @internal */\n    getTooltipErrorsMessage(): string {\n        return isString(this.config.error) ? (this.config.error as string) : '';\n    }\n    /** @internal */\n    blur(): void {\n        this.focused = false;\n        this.input.nativeElement.blur();\n        if (this.ngBlur) {\n            this.ngBlur.emit();\n        }\n        if (this.onBlur) {\n            this.onBlur(this.inputControl.value);\n        }\n    }\n    /** @internal */\n    focus(): void {\n        this.focused = true;\n        if (this.ngFocus) {\n            this.ngFocus.emit();\n        }\n    }\n    /** @internal */\n    onButtonClicked($event: MouseEvent): void {\n        if (this.config.type === 'file') {\n            this.fileInput.nativeElement.click();\n        } else if (this.btnAction) {\n            this.btnAction.emit($event);\n        }\n    }\n    /** @internal */\n    clearInput(isFocused = false): void {\n        this.inputControl.setValue('');\n        if (isFocused) {\n            this.setFocus();\n        }\n    }\n    /** @internal */\n    setFocus(): void {\n        this.input.nativeElement.focus();\n    }\n    /** @internal */\n    passToggle($event: Event): void {\n        const passShownState = this.config.options.hasOwnProperty('isPassHidden') ? this.isPassHidden : true;\n        if (!isNullOrUndefined($event)) {\n            this.isPassHidden = !this.isPassHidden;\n            this.setFocus();\n            this.passHiddenStateChanged.emit(!passShownState);\n        }\n    }\n    /** @internal */\n    getInputType(): string {\n        return this.config.type === 'file' || (this.config.type === 'password' && !this.isPassHidden) ? 'text' : this.config.type;\n    }\n    /** @internal */\n    onPassToggleMouseDown($event: Event): void {\n        $event.preventDefault();\n    }\n    /** @internal */\n    toggleErrorClass(error: boolean): void {\n        this.showErrorClass$.next(error);\n    }\n    /** @internal */\n    writeValue(value: any): void {\n        if (isNullOrUndefined(value)) {\n            this.clearInput();\n        } else {\n            if (this.config.type === 'number' && Number.isInteger(this.config.decimal) && this.config.decimal > 0) {\n                value = parseFloat(value).toFixed(this.config.decimal);\n            }\n            this.inputControl.setValue(value, {emitEvent: false});\n        }\n    }\n\n    /**\n     * Method to call when the input value has changes.\n     * @internal\n     */\n    propagateChange = (_: string) => {};\n    /** @internal */\n    registerOnChange(fn: any): void {\n        this.propagateChange = fn;\n    }\n    /** @internal */\n    registerOnTouched(fn): void {\n        this.onBlur = fn;\n    }\n    /** @internal */\n    setDisabledState?(isDisabled: boolean): void {\n        this.isDisabledFormControl$.next(isDisabled);\n    }\n\n    private getStepIndication(): string {\n        if (Number.isInteger(this.config.decimal) && this.config.decimal > 0) {\n            return '0.' + new Array(this.config.decimal).fill('0').slice(0, -1).join('') + '1';\n        }\n    }\n\n    private setPasswordShownState(value: InputOptions): void {\n        if (!!value && !isNullOrUndefined(value.isPassHidden)) {\n            this.passToggle(null);\n        }\n    }\n\n    // Todo - use optional chaining when upgrade ts version\n    private getFileControlValueChangesObservable(): Observable<any> {\n        return this.file.valueChanges.pipe(\n            tap(value => {\n                const fileName =\n                    this.fileInput.nativeElement.files && this.fileInput.nativeElement.files[0]\n                        ? this.fileInput.nativeElement.files[0].name\n                        : value;\n                this.inputControl.setValue(fileName, {emitEvent: false});\n                this.inputControl.disable({emitEvent: false});\n            })\n        );\n    }\n\n    // Todo - use optional chaining when upgrade ts version\n    private setInputElementListeners(): void {\n        const hasPreventCharacters =\n            this.config.options && this.config.options.preventCharacters && this.config.options.preventCharacters.length;\n        const hasEscapeEmitterListeners = this.ngEscape.observers.length;\n        const hasEnterEmitterListeners = this.ngEnter.observers.length;\n\n        if (!isNullOrUndefined(this.input) && (hasPreventCharacters || hasEscapeEmitterListeners || hasEnterEmitterListeners)) {\n            fromEvent(this.input.nativeElement, 'keydown')\n                .pipe(\n                    filter((event: KeyboardEvent) => {\n                        return (\n                            (hasEscapeEmitterListeners && event.key === ESCAPE_KEY_CODE) ||\n                            (hasEnterEmitterListeners && event.key === ENTER_KEY_CODE) ||\n                            (hasPreventCharacters && this.config.options.preventCharacters.includes(event.key))\n                        );\n                    }),\n                    takeUntil(this.onDestroy$)\n                )\n                .subscribe(this.inputKeydownHandler.bind(this));\n        }\n    }\n\n    private inputKeydownHandler(event: KeyboardEvent): boolean {\n        if (event.key === ENTER_KEY_CODE) {\n            this.ngEnter.emit(this.inputControl.value);\n        } else if (event.key === ESCAPE_KEY_CODE) {\n            this.ngEscape.emit(this.inputControl.value);\n        } else {\n            event.preventDefault();\n            return false;\n        }\n    }\n\n    private setMouseWheelListener(): void {\n        if (this.config.disableWheelScroll && this.config.type === 'number') {\n            fromEvent(this.elementRef.nativeElement, 'mousewheel')\n                .pipe(takeUntil(this.onDestroy$))\n                .subscribe(($event: MouseEvent) => $event.preventDefault());\n        }\n    }\n\n    private setKeyDownListener(): void {\n        if (this.config.sanitationRegex) {\n            const regex = new RegExp(this.config.sanitationRegex);\n            fromEvent(this.elementRef.nativeElement, 'keydown')\n                .pipe(\n                    filter(($event: KeyboardEvent) => !(SPECIAL_KEYS.indexOf($event.key) !== -1) && !regex.test($event.key)),\n                    takeUntil(this.onDestroy$)\n                )\n                .subscribe(($event: KeyboardEvent) => $event.preventDefault());\n        }\n    }\n\n    private onOptionsChanged({previousValue, currentValue}: {previousValue: InputOptions; currentValue: InputOptions}): void {\n        if (currentValue !== previousValue) {\n            this.setPasswordShownState(currentValue);\n        }\n    }\n\n    private onDisabledChanged({previousValue, currentValue}: {previousValue: boolean; currentValue: boolean}): void {\n        if (currentValue !== previousValue) {\n            this.isDisabledInput$.next(currentValue);\n        }\n    }\n\n    private onErrorChanged({previousValue, currentValue}: {previousValue: boolean | string; currentValue: boolean | string}): void {\n        if (currentValue !== previousValue) {\n            this.toggleErrorClass(!!currentValue);\n        }\n    }\n\n    protected getConfigStyleObservable(): Observable<InputConfigByStyle> {\n        return of({} as InputConfigByStyle);\n    }\n}\n","/*\n * Created on 2020.4.21 By Andy Kononenko (andyk@ironsrc.com)\n */\n\nimport {StyleVersion} from '@ironsource/fusion-ui/components/fusion-base';\nimport {IconData} from '@ironsource/fusion-ui/components/icon/v1';\n\nexport interface InputConfigByStyle {\n    iconSearch?: IconData;\n    iconClear?: IconData;\n    iconInfo?: IconData;\n    iconWarning?: IconData;\n    iconLoader?: IconData;\n    currentStyleVersion: StyleVersion;\n}\n\nexport const CONFIG_INPUT_BY_UI_STYLE: {[styleKey: string]: InputConfigByStyle} = {\n    style_v1: {\n        iconSearch: {iconName: 'search', iconVersion: 'v1'},\n        iconClear: {iconName: 'clear-full-circle', iconVersion: 'v1'},\n        iconInfo: {iconName: 'info', iconVersion: 'v1'},\n        iconWarning: {iconName: 'warning', iconVersion: 'v1'},\n        iconLoader: {iconName: 'loading', iconVersion: 'v1'},\n        currentStyleVersion: StyleVersion.V1\n    },\n    style_v2: {\n        iconSearch: {iconName: 'search', iconVersion: 'v2'},\n        iconClear: {iconName: 'close-circle', iconVersion: 'v2'},\n        iconInfo: {iconName: 'importent', iconVersion: 'v2'},\n        iconWarning: {iconName: 'warning', iconVersion: 'v2'},\n        iconLoader: {iconName: 'loading-rotate', iconVersion: 'v2'},\n        currentStyleVersion: StyleVersion.V2\n    },\n    style_v3: {\n        iconInfo: 'importent',\n        iconWarning: 'warning',\n        currentStyleVersion: StyleVersion.V3\n    }\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}