{"version":3,"file":"fundamental-ngx-platform-shared.mjs","sources":["../../../../libs/platform/shared/base.ts","../../../../libs/platform/shared/platform.config.ts","../../../../libs/platform/shared/utils/lang.ts","../../../../libs/platform/shared/domain/data-source.ts","../../../../libs/platform/shared/domain/base-data-provider.ts","../../../../libs/platform/shared/domain/array-data-source.ts","../../../../libs/platform/shared/domain/data-model.ts","../../../../libs/platform/shared/domain/observable-data-source.ts","../../../../libs/platform/shared/form/base.input.ts","../../../../libs/platform/shared/form/collection-base.input.ts","../../../../libs/platform/shared/form/form-field.ts","../../../../libs/platform/shared/form/form-options.ts","../../../../libs/platform/shared/form/inline-layout-collection-base.input.ts","../../../../libs/platform/shared/pipes/convert-bytes/convert-bytes.pipe.ts","../../../../libs/platform/shared/pipes/pipe.module.ts","../../../../libs/platform/shared/testing/event-objects.ts","../../../../libs/platform/shared/preset-management/preset-management.token.ts","../../../../libs/platform/shared/fundamental-ngx-platform-shared.ts"],"sourcesContent":["import { ChangeDetectorRef, Directive, Input, OnDestroy, inject } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nlet randomId = 0;\n\n/**\n * This class contains common properties used across components.\n * this can be extended to reduce the code duplication across components.\n * @hidden for form related Base , see BaseInput.\n */\n@Directive()\nexport abstract class BaseComponent implements OnDestroy {\n    /** Sets the `aria-label` attribute to the element. */\n    @Input()\n    ariaLabel: Nullable<string>;\n\n    /** Sets the `aria-labelledby` attribute to the element. */\n    @Input()\n    ariaLabelledBy: Nullable<string>;\n\n    /**\n     * @deprecated\n     * Use `ariaLabelledBy` instead.\n     */\n    @Input()\n    set ariaLabelledby(value: Nullable<string>) {\n        this.ariaDescribedBy = value;\n    }\n\n    /** Sets the `aria-describedby` attribute to the element. */\n    @Input()\n    ariaDescribedBy: Nullable<string>;\n\n    /** id for the Element */\n    @Input()\n    id = `fdp-id-${randomId++}`;\n\n    /** name for the element */\n    @Input()\n    name: string;\n\n    /** width of the element */\n    @Input()\n    width: string;\n\n    /** disabled status of the element */\n    @Input()\n    set disabled(disabled: boolean) {\n        this._disabled = disabled;\n    }\n    get disabled(): boolean {\n        return this._disabled;\n    }\n\n    /** @hidden */\n    protected _disabled = false;\n\n    /** @hidden */\n    protected _subscriptions = new Subscription();\n\n    /**\n     * @hidden\n     * Change detector ref.\n     */\n    protected readonly _cdr = inject(ChangeDetectorRef);\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._subscriptions.unsubscribe();\n    }\n\n    /**\n     * @hidden\n     * For internal usage only\n     *\n     * Since all components use OnPush strategy in the fundamental lib\n     * it's tricky to update a child input directly from a parent component class\n     *\n     */\n    markForCheck(): void {\n        this._cdr.markForCheck();\n    }\n\n    /**\n     * @hidden\n     * For internal usage only\n     *\n     * Since all components use OnPush strategy in the fundamental lib\n     * it's tricky to update a child input directly from a parent component class\n     *\n     */\n    detectChanges(): void {\n        this._cdr.detectChanges();\n    }\n}\n","import { Injectable, Injector } from '@angular/core';\n\nimport { ContentDensity } from '@fundamental-ngx/cdk/utils';\n\n/**\n * Platform lib Config\n */\n@Injectable({ providedIn: 'root' })\nexport class PlatformConfig {\n    /** @hidden */\n    private static injector: Injector | null = null;\n\n    /**\n     * Content Density of element. 'cozy' | 'compact' | 'condensed'\n     */\n    contentDensity: ContentDensity;\n\n    /** @hidden */\n    static setInjector(injector: Injector): void {\n        PlatformConfig.injector = injector;\n    }\n\n    /** @hidden */\n    static getInjector(): Injector | null {\n        return PlatformConfig.injector;\n    }\n}\n","import { Observable } from 'rxjs';\n\n/** @hidden */\nexport function objectValues(obj: any): any[] {\n    return Object.keys(obj).map((key) => obj[key]);\n}\n\n/** @hidden */\nexport function objectToName(target: any): string {\n    if (isBlank(target) || (!isStringMap(target) && !isType(target))) {\n        throw new Error(' Cannot convert. Uknown object');\n    }\n\n    return isType(target) ? target.prototype.constructor.name : target.constructor.name;\n}\n\n/** @hidden */\nexport function isJsObject(o: any): boolean {\n    return o !== null && (typeof o === 'function' || typeof o === 'object');\n}\n\n/** @hidden */\nexport function isPresent(obj: any): boolean {\n    return obj !== undefined && obj !== null;\n}\n\n/** @hidden */\nexport function isBlank(obj: any): boolean {\n    return obj === undefined || obj === null;\n}\n\n/** @hidden */\nexport function isBoolean(obj: any): boolean {\n    return typeof obj === 'boolean';\n}\n\n/** @hidden */\nexport function isNumber(obj: any): boolean {\n    return typeof obj === 'number';\n}\n\n/** @hidden */\nexport function isString(obj: any): obj is string {\n    return typeof obj === 'string';\n}\n\n/** @hidden */\nexport function isFunction(obj: any): boolean {\n    return typeof obj === 'function';\n}\n\n/** @hidden */\nexport function isType(obj: any): boolean {\n    return isFunction(obj);\n}\n\n/** @hidden */\nexport function isStringMap(obj: any): obj is Record<string, any> {\n    return typeof obj === 'object' && obj !== null;\n}\n\n/** @hidden */\nexport function isObject<T>(item: T): boolean {\n    return typeof item === 'object' && !Array.isArray(item) && item !== null;\n}\n\n/** @hidden */\nexport function isPromise<T = any>(obj: any): obj is Promise<T> {\n    // allow any Promise/A+ compliant thenable.\n    // It's up to the caller to ensure that obj.then conforms to the spec\n    return !!obj && isFunction(obj.then);\n}\n\n/** @hidden */\nexport function isSubscribable(obj: any | Observable<any>): obj is Observable<any> {\n    return !!obj && isFunction(obj.subscribe);\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n *\n * When working with large set of data using components such as:\n *  - Datatables\n *  - InputSearch\n *  - ComboBox (Autocomplete)\n *  - Tree\n *  - List\n *  - etc..\n *  and for these we need to unify the way we access a data. Currently we leave most of the complex\n *  data access or data manipulation on application developer which leads to different\n *  implementation approaches and allot of code duplication.\n *\n *  It is common practice when working with different data input sources we try to apply some\n *  Design patterns e.g. Adapter Pattern that provides us with guidelines how different interfaces\n *  can talk to each other and from here we can derive another pattern so called Datasource pattern\n *  which is high-level architectural pattern to abstract data and internal resources\n *  access (DB calls, Rest calls, domain objects) with a mininal amount a code.\n *\n * What we want to achieve is to define abstract layer where each specific resource type needs to\n * implement and move all the related logic into reusable DataSources. (TableDataSource,\n * ComboBoxDataSource, ... )\n *\n * Observable<T[]> is a reactive stream, that changes its content based on what it pushed\n * into it using .next().\n *\n * Each type of data component such Autocomplete, DataTable, List,.. needs to provide its own\n * specific implementation to handle specific use-case.\n *\n * ```\n *  export abstract class DataTableDataSource<T> implements DataSource<T> {\n *    data: T[];\n *    filterTerm: string;\n *    paginator: Paginator | null\n *\n *    filterPredicate: ((data: T, filter: string) => boolean;\n *\n *    sortData: ((data: T[], sort: Sort) => T[]);\n *\n *    //\n *    create (t: T): T;\n *    update (t: T): T;\n *    remove (t: T): T;\n *\n *  }\n * ```\n *\n * After we define a format we can start creating concrete implementations based on the usage or\n * resource .e.g:\n *\n *\n * ```\n * export abstract class RestAutoCompleteDataSource<T> extend DataChooserDataSource <T> {\n *   // We can use a registry that is able to map a Entity Type = Endpoint\n *   // have identical way how to fetch , search ,...\n * }\n * ```\n *\n * Probably when working with data only locally, it can be:\n *\n * ```\n * export abstract class LocalArrayAutoCompleteDataSource<T> extend DataChooserDataSource <T> {\n * }\n * ```\n *\n *\n */\nimport { InjectionToken } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport enum MatchingStrategy {\n    STARTS_WITH_PER_TERM = 'starts with per term',\n    STARTS_WITH = 'starts with',\n    CONTAINS = 'contains'\n}\n\nexport const DATA_PROVIDERS = new InjectionToken<Map<string, DataProvider<any>>>('DataProviderRegistry');\n\nexport interface DataSource<T, P = T[], L = boolean> {\n    isDataLoading: L;\n    open(): Observable<P>;\n    close(): void;\n    onDataRequested(): Observable<void>;\n    onDataReceived(): Observable<void>;\n}\n\nexport type MatchBy = (item: any) => any;\n\nexport interface MatchingBy {\n    firstBy: MatchBy;\n    secondaryBy?: MatchBy;\n}\n\n/** Matching Strategy: StartsWithPerTerm - Reqexp */\nexport function getMatchingStrategyStartsWithPerTermReqexp(value: string): RegExp {\n    // We need to escape all special characters in order not to break the regular expression.\n    return new RegExp(`(\\\\s|^)(${value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')})`, 'gi');\n}\n\n/** @hidden */\nexport function isDataSource<T = any>(value: any): value is DataSource<T> {\n    return value && typeof value.open === 'function';\n}\n\nexport type ProviderParams = ReadonlyMap<string, any>;\n/**\n * Provider is a data driver that can access data and retrieve them. It knows how to get 1\n * or more records, maybe do paging and some other things.\n *\n */\nexport abstract class DataProvider<T> {\n    abstract fetch(params: ProviderParams, start?: number, end?: number): Observable<T[]>;\n\n    /** @hidden */\n    protected _keyPath: string;\n\n    /** @hidden */\n    protected _matchingStrategy: MatchingStrategy = MatchingStrategy.STARTS_WITH;\n\n    /** @hidden */\n    protected _matchingBy: MatchingBy | null = null;\n\n    /** @hidden */\n    getTotalItems?(): Observable<number>;\n\n    /**\n     * Tells if this DataProvider supports INSERT, REMOVE\n     *\n     */\n    canCRUD(): boolean {\n        return false;\n    }\n\n    // Implement to support CRUD operations.\n\n    /** @hidden */\n    getOne(params: ProviderParams): Observable<T> {\n        throw new Error('Not supported');\n    }\n\n    /** @hidden */\n    insert(payload: any, params?: ProviderParams): Observable<T> {\n        throw new Error('Not supported');\n    }\n\n    /** @hidden */\n    remove(params: ProviderParams): Observable<boolean> {\n        throw new Error('Not supported');\n    }\n\n    /** @hidden */\n    update(payload: any, params?: ProviderParams): Observable<T> {\n        throw new Error('Not supported');\n    }\n\n    /** @hidden */\n    setLookupKey(key: string): void {\n        this._keyPath = key;\n    }\n\n    /** @hidden */\n    setMatchingBy(matchingBy: MatchingBy): void {\n        this._matchingBy = matchingBy;\n    }\n\n    /** @hidden */\n    setMatchingStrategy(strategy: MatchingStrategy): void {\n        this._matchingStrategy = strategy;\n    }\n}\n\nexport class ComboBoxDataSource<T> implements DataSource<T> {\n    /** @hidden */\n    static readonly MaxLimit = 5;\n\n    /** @hidden */\n    limitless = false;\n\n    /** @hidden */\n    protected readonly _dataChanges: BehaviorSubject<T[]> = new BehaviorSubject<T[]>([]);\n    /** @hidden */\n    protected readonly _onDataRequested$ = new Subject<void>();\n    /** @hidden */\n    protected readonly _onDataReceived$ = new Subject<void>();\n    /** @hidden */\n    protected readonly _onDestroy$ = new Subject<void>();\n    /** @hidden */\n    protected _dataLoading = false;\n\n    /** @hidden */\n    get isDataLoading(): boolean {\n        return this._dataLoading;\n    }\n\n    /** @hidden */\n    constructor(public dataProvider: DataProvider<any>) {}\n\n    /** @hidden */\n    match(predicate: string | Map<string, string> = new Map<string, string>(), start = 0, end = Infinity): void {\n        this._onDataRequested$.next();\n        this._dataLoading = true;\n        const searchParam = new Map();\n\n        if (typeof predicate === 'string') {\n            searchParam.set('query', predicate);\n        } else if (predicate instanceof Map) {\n            predicate.forEach((v, k) => searchParam.set(k, v));\n        } else {\n            throw new Error('DataSource.match() predicate can only accepts string and Map');\n        }\n\n        if (!searchParam.has('limit') && !this.limitless) {\n            searchParam.set('limit', ComboBoxDataSource.MaxLimit);\n        }\n\n        this.dataProvider\n            .fetch(searchParam, start, end)\n            .pipe(takeUntil(this._onDestroy$))\n            .subscribe({\n                next: (result: T[]) => {\n                    this._onDataReceived$.next();\n                    this._dataLoading = false;\n                    this._dataChanges.next(result);\n                },\n                error: () => {\n                    this._onDataReceived$.next();\n                    this._dataLoading = false;\n                }\n            });\n    }\n\n    /** @hidden */\n    open(): Observable<T[]> {\n        return this._dataChanges.pipe(takeUntil(this._onDestroy$));\n    }\n\n    /** @hidden */\n    close(): void {\n        this._onDestroy$.next();\n    }\n\n    /** @hidden */\n    onDataRequested(): Observable<void> {\n        return this._onDataRequested$.asObservable();\n    }\n\n    /** @hidden */\n    onDataReceived(): Observable<void> {\n        return this._onDataReceived$.asObservable();\n    }\n}\n\nexport class MultiComboBoxDataSource<T> extends ComboBoxDataSource<T> {\n    /** @hidden */\n    constructor(public dataProvider: DataProvider<any>) {\n        super(dataProvider);\n    }\n}\n\nexport class SearchFieldDataSource<T> extends ComboBoxDataSource<T> {\n    /** @hidden */\n    constructor(public dataProvider: DataProvider<any>) {\n        super(dataProvider);\n    }\n}\n\nexport class ListDataSource<T> extends ComboBoxDataSource<T> {\n    /** @hidden */\n    limitless = true;\n    /** @hidden */\n    constructor(public dataProvider: DataProvider<any>) {\n        super(dataProvider);\n    }\n}\n\nexport class MultiInputDataSource<T> extends ComboBoxDataSource<T> {\n    /** @hidden */\n    constructor(public dataProvider: DataProvider<any>) {\n        super(dataProvider);\n    }\n}\n\nexport class ApprovalFlowUserDataSource<T> extends ComboBoxDataSource<T> {\n    /** @hidden */\n    constructor(public dataProvider: DataProvider<T>) {\n        super(dataProvider);\n    }\n}\n\nexport class ApprovalFlowTeamDataSource<T> extends ComboBoxDataSource<T> {\n    /** @hidden */\n    constructor(public dataProvider: DataProvider<T>) {\n        super(dataProvider);\n    }\n}\n","/**\n * Default implementation for Observable Arrays and Arrays.\n */\nimport { Observable, isObservable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { isFunction, isJsObject, objectToName, objectValues } from '../utils/lang';\nimport { DataProvider, MatchBy, MatchingStrategy, getMatchingStrategyStartsWithPerTermReqexp } from './data-source';\n\n/**\n * In Memory implementation of DataProvider that supports fulltext search\n */\nexport class BaseDataProvider<T> extends DataProvider<T> {\n    /** @hidden */\n    constructor(protected values: Observable<T[]> | T[]) {\n        super();\n    }\n\n    /** @hidden */\n    fetch(params: Map<string, any>): Observable<T[]> {\n        const observable = isObservable(this.values) ? this.values : of(this.values);\n\n        const queryString = params.get('query');\n        const limit = params.get('limit') || 50;\n\n        if (!queryString || queryString === '*') {\n            return observable.pipe(map((items) => this.withLimit(items, limit)));\n        }\n\n        const toLowerPattern = queryString.toLowerCase();\n\n        return observable.pipe(\n            map((items) => {\n                const result: any[] = [];\n\n                for (let i = 0; i < items.length; i++) {\n                    const item = items[i];\n                    if (this.matches(item, toLowerPattern)) {\n                        result.push(item);\n                        if (result.length >= limit) {\n                            break;\n                        }\n                    }\n                }\n\n                return result;\n            })\n        );\n    }\n\n    /**\n     * Warning: If you dont supply search Key and you want fulltext search and you use this\n     * default implementation be aware that it can  perform poorly as it is naive implementation\n     * that does not do deep compare.\n     */\n    matches(item: T, pattern: string): boolean {\n        if (!this._matchingBy) {\n            return false;\n        }\n        const { firstBy, secondaryBy } = this._matchingBy;\n\n        let matched = this.matchesBy(item, pattern, firstBy);\n        if (!matched && secondaryBy) {\n            matched = this.matchesBy(item, pattern, secondaryBy);\n        }\n\n        return matched;\n    }\n\n    /** @hidden */\n    matchesBy(item: any, pattern: string, matchingBy: MatchBy): boolean {\n        const value = isJsObject(item) && matchingBy ? matchingBy(item) : item;\n\n        if (isFunction(value)) {\n            return value.call(item);\n        } else if (isJsObject(value)) {\n            return this.hasObjectValue(item, pattern);\n        } else if (this._matchingStrategy === MatchingStrategy.STARTS_WITH_PER_TERM) {\n            const reqexp = getMatchingStrategyStartsWithPerTermReqexp(pattern);\n            return !!pattern && !!value && !!value.match(reqexp);\n        } else if (this._matchingStrategy === MatchingStrategy.STARTS_WITH) {\n            return !!pattern && !!value && value.toString().toLowerCase().startsWith(pattern.toLowerCase());\n        } else if (this._matchingStrategy === MatchingStrategy.CONTAINS) {\n            return !!pattern && !!value && value.toString().toLowerCase().indexOf(pattern) > -1;\n        } else {\n            return !!pattern && !!value && value.toString().toLowerCase() === pattern;\n        }\n    }\n\n    /** @hidden */\n    protected hasObjectValue(obj: any, pattern: string): boolean {\n        const values = objectValues(obj);\n        const parentObj = objectToName(obj);\n        const length2 = values.filter((value: any) => {\n            if (!value || Array.isArray(value)) {\n                return false;\n            } else if (!isJsObject(value) && !isFunction(value)) {\n                return value.toString().toLowerCase().indexOf(pattern) !== -1;\n            } else if (isJsObject(value) && objectToName(value) !== parentObj) {\n                return this.hasObjectValue(value, pattern);\n            }\n\n            return false;\n        }).length;\n        return length2 > 0;\n    }\n\n    /** @hidden */\n    private withLimit(data: Array<T>, limit?: number): Array<T> {\n        if (limit && data.length > limit) {\n            return data.slice(0, limit);\n        }\n        return data;\n    }\n}\n","/**\n * Default implementation for Arrays.\n */\nimport { BaseDataProvider } from './base-data-provider';\nimport { ComboBoxDataSource, ListDataSource, MultiComboBoxDataSource, MultiInputDataSource } from './data-source';\n\nexport class ArrayComboBoxDataSource<T> extends ComboBoxDataSource<T> {\n    /** @hidden */\n    constructor(private data: T[]) {\n        super(new BaseDataProvider(data));\n    }\n}\n\nexport class ArrayMultiComboBoxDataSource<T> extends MultiComboBoxDataSource<T> {\n    /** @hidden */\n    constructor(private data: T[]) {\n        super(new BaseDataProvider(data));\n    }\n}\n\nexport class ArrayListDataSource<T> extends ListDataSource<T> {\n    /** @hidden */\n    constructor(private data: T[]) {\n        super(new BaseDataProvider(data));\n    }\n}\n\nexport class ArrayMultiInputDataSource<T> extends MultiInputDataSource<T> {\n    /** @hidden */\n    constructor(private data: T[]) {\n        super(new BaseDataProvider(data));\n    }\n}\n","import { coerceArray } from '@angular/cdk/coercion';\nimport { TemplateRef } from '@angular/core';\nimport { isBlank } from '../utils/lang';\n\n/**\n * Interface SelectItem is used to deal with complex object in order to be able to format\n * custom label that is shown in the options.\n *\n * Used in various controls: Select, RadioGroup, CheckboxGroup, Combobox\n */\nexport interface SelectItem<T = any> {\n    /**\n     * Item text shown in the popup\n     */\n    label: string;\n\n    /**\n     * References to the object instance\n     */\n    value: T;\n    disabled?: boolean;\n\n    icon?: string;\n    /**\n     * Trigger values is a text for selected item\n     */\n    triggerValue?: string;\n\n    isGroup?: boolean;\n    secondaryText?: string;\n    children?: SelectItem[];\n\n    /**\n     * @hidden\n     * Used in settings generator only.\n     */\n    description?: string;\n\n    /**\n     * @hidden\n     * Used in settings generator only.\n     */\n    template?: TemplateRef<any>;\n}\n\nexport interface OptionItem {\n    /** Item text */\n    label: string;\n\n    /**\n     * References to the object instance\n     */\n    value: any;\n    id?: string;\n    isGroup?: boolean;\n    secondaryText?: string;\n    children?: OptionItem[];\n}\n\nexport interface SelectableOptionItem extends OptionItem {\n    selected?: boolean;\n    children?: SelectableOptionItem[];\n}\n\n/** @hidden */\nexport function isSelectableItem(item: SelectItem): item is SelectItem {\n    return (\n        item &&\n        item.label !== undefined &&\n        item.value !== undefined &&\n        Object.prototype.hasOwnProperty.call(item, 'selected')\n    );\n}\n\n/** @hidden */\nexport function isSelectItem(item: SelectItem): item is SelectItem {\n    return item && item.label !== undefined && item.value !== undefined;\n}\n\nexport interface MultiInputOption {\n    /** Item text */\n    label: string;\n\n    /**\n     * References to the object instance\n     */\n    value: any;\n\n    /**\n     * Item Avatar\n     */\n    avatarSrc?: string;\n\n    isGroup?: boolean;\n    description?: string;\n    children?: MultiInputOption[];\n}\n\nexport const isOptionItem = isSelectItem;\nexport const isSelectableOptionItem = isSelectableItem;\n\n/**\n * Wraps the provided value in an array, unless it is an array already.\n * If `null` or `undefined` is received, will return an empty array.\n */\nexport function coerceArraySafe<T>(value: T | T[]): T[] {\n    return isBlank(value) ? [] : coerceArray(value);\n}\n","/**\n * Default implementation for Observable Arrays.\n */\nimport { Observable } from 'rxjs';\n\nimport { BaseDataProvider } from './base-data-provider';\nimport { ComboBoxDataSource, ListDataSource, MultiComboBoxDataSource, MultiInputDataSource } from './data-source';\n\nexport class ObservableComboBoxDataSource<T> extends ComboBoxDataSource<T> {\n    /** @hidden */\n    constructor(private data: Observable<T[]>) {\n        super(new BaseDataProvider(data));\n    }\n}\n\nexport class ObservableMultiComboBoxDataSource<T> extends MultiComboBoxDataSource<T> {\n    /** @hidden */\n    constructor(private data: Observable<T[]>) {\n        super(new BaseDataProvider(data));\n    }\n}\n\nexport class ObservableListDataSource<T> extends ListDataSource<T> {\n    /** @hidden */\n    constructor(private data: Observable<T[]>) {\n        super(new BaseDataProvider(data));\n    }\n}\n\nexport class ObservableMultiInputDataSource<T> extends MultiInputDataSource<T> {\n    /** @hidden */\n    constructor(private data: Observable<T[]>) {\n        super(new BaseDataProvider(data));\n    }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n    AfterViewInit,\n    DestroyRef,\n    Directive,\n    DoCheck,\n    ElementRef,\n    InjectionToken,\n    Input,\n    OnDestroy,\n    OnInit,\n    TemplateRef,\n    ViewChild,\n    booleanAttribute,\n    inject,\n    isDevMode\n} from '@angular/core';\nimport { ControlContainer, ControlValueAccessor, FormControl, NgControl, NgForm } from '@angular/forms';\nimport { HasElementRef, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Observable, Subject, filter } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n    FD_FORM_FIELD,\n    FD_FORM_FIELD_CONTROL,\n    FormFieldAdvancedStateMessage,\n    FormStates,\n    isValidControlState\n} from '@fundamental-ngx/cdk/forms';\nimport { FormInputMessageGroupComponent } from '@fundamental-ngx/core/form';\nimport { TriggerConfig } from '@fundamental-ngx/core/popover';\nimport { BaseComponent } from '../base';\nimport { PlatformFormField, PlatformFormFieldControl } from './form-field';\n\nexport const FDP_DO_CHECK = new InjectionToken<Observable<void>>('FdpInputDoCheckTrigger');\nexport const FDP_FORM_SUBMIT = new InjectionToken<Observable<void>>('FdpFormSubmitTrigger');\n\nlet randomId = 0;\n\n/**\n * All form components share the same information (value, name, placeholder,.. ) as well as\n * the same behavior given by ControlValueAccessor.\n *\n * Even this is not ideal solution there is no other way then use inheritance to reuse some of the\n * common logic. It should be possible to use some kind of compositions with Proxies but something\n * similar that exists in Aspect Oriented Programing.\n *\n * Usually try to fire stateChange only for things that can change dynamically in runtime. We don't expect\n * that e.g. placeholder will change after component is created\n */\n@Directive()\nexport abstract class BaseInput\n    extends BaseComponent\n    implements PlatformFormFieldControl, ControlValueAccessor, OnInit, DoCheck, AfterViewInit, OnDestroy, HasElementRef\n{\n    /** Input placeholder */\n    @Input()\n    placeholder: string;\n\n    /**\n     * To allow user to determine what event he wants to trigger the messages to show\n     * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp).\n     */\n    @Input()\n    triggers: (string | TriggerConfig)[] = [\n        {\n            trigger: 'focusin',\n            openAction: true,\n            closeAction: false\n        },\n        {\n            trigger: 'focusout',\n            openAction: false,\n            closeAction: true\n        }\n    ];\n\n    /**\n     *  The state of the form control - applies css classes.\n     *  Can be 'success', 'error', 'warning', 'default', 'information'.\n     *\n     * @default 'default'\n     */\n    @Input()\n    set state(state: FormStates | undefined) {\n        if (!state || isValidControlState(state)) {\n            this._state = state;\n        } else if (isDevMode()) {\n            console.warn(`Provided value \"${state}\" is not a valid option for FormStates type`);\n        }\n    }\n    get state(): FormStates {\n        if (this._state) {\n            return this._state;\n        }\n\n        if (!this.controlInvalid) {\n            return 'default';\n        }\n\n        return this.formField?.getPriorityState() || 'error';\n    }\n\n    /** Holds the message with respect to state */\n    @Input()\n    stateMessage: Nullable<string>;\n\n    /** Advanced form message configuration. Used for components that can render form messages in its template. */\n    @Input()\n    stateMessageConfig: Nullable<TemplateRef<any>>;\n\n    /** Whether the input is disabled */\n    @Input()\n    set disabled(value: boolean) {\n        this.setDisabledState(value);\n    }\n    get disabled(): boolean {\n        if (this.ngControl && this.ngControl.disabled !== null) {\n            return this.ngControl.disabled;\n        }\n        return this._disabled;\n    }\n\n    /**\n     * readOnly Value to Mark component read only\n     */\n    @Input()\n    readonly: boolean;\n\n    /**\n     * Tell the component if we are in editing mode.\n     */\n    @Input({ transform: booleanAttribute })\n    set editable(value: boolean) {\n        if (this._editable === value) {\n            return;\n        }\n        this._editable = value;\n        this.markForCheck();\n        this.stateChanges.next('editable');\n    }\n    get editable(): boolean {\n        return this._editable;\n    }\n\n    /** Form control validation event strategy. */\n    @Input()\n    validationStrategy: ('touched' | 'dirty' | 'submitted')[] = ['touched', 'dirty', 'submitted'];\n\n    /**\n     * Reference to internal Input element\n     */\n    @ViewChild('inputElementRef', { static: true, read: ElementRef })\n    protected _elementRef: ElementRef;\n\n    /**\n     * need to make  these value accessor as abstract to be implemented by subclasses. Having them\n     * in superclass have issue getting reference to them with Object.getOwnPropertyDescripton\n     * which we need to programmatically wraps components set/get value\n     *\n     */\n    abstract get value(): any;\n\n    abstract set value(value: any);\n\n    /** @hidden */\n    formMessage: Nullable<FormInputMessageGroupComponent>;\n\n    /**\n     * See @FormFieldControl\n     */\n    focused = false;\n\n    /** set when input field is mandatory form field */\n    required: boolean;\n\n    /** @hidden */\n    innerErrorsTemplate?: TemplateRef<any>;\n\n    /** Whether control has errors */\n    get controlInvalid(): boolean {\n        return this._controlInvalid;\n    }\n\n    /** @hidden */\n    advancedStateMessage: Nullable<FormFieldAdvancedStateMessage>;\n\n    /**\n     * See @FormFieldControl\n     */\n    readonly stateChanges: Subject<any> = new Subject<any>();\n\n    /** @hidden */\n    readonly formField: PlatformFormField | null = null;\n\n    /** @hidden */\n    readonly _doCheck$ = inject(FDP_DO_CHECK, { optional: true });\n\n    /** Element reference. */\n    readonly elementRef = inject(ElementRef);\n\n    /** NgControl reference. */\n    readonly ngControl = inject(NgControl, {\n        optional: true,\n        self: true\n    });\n\n    /** Control container reference. */\n    readonly controlContainer = inject(ControlContainer, {\n        optional: true,\n        skipSelf: true\n    });\n\n    /** Form reference. */\n    readonly ngForm = inject(NgForm, {\n        optional: true,\n        skipSelf: true\n    });\n\n    /**\n     * @hidden\n     * The state of the form control - applies css classes.\n     * Can be `success`, `error`, `warning`, `information` or 'default'\n     */\n    protected _state: FormStates | undefined;\n\n    /** @hidden */\n    protected defaultId = `fdp-input-id-${randomId++}`;\n\n    /** @hidden */\n    protected _value: any;\n    /** @hidden */\n    protected _editable = true;\n    /** @hidden */\n    protected _destroyed = inject(DestroyRef);\n\n    /** @hidden */\n    private readonly _externalSubmit = inject(FDP_FORM_SUBMIT, { optional: true });\n\n    /** @hidden */\n    private _externalFormSubmitted = false;\n\n    /**\n     * @hidden\n     */\n    private _controlInvalid = false;\n\n    /** @hidden */\n    constructor() {\n        /**\n         * We do not use Injector.get() approach here because there is a bug\n         * with this signature https://github.com/angular/angular/issues/31776\n         * where \"get()\" method doesn't take into account \"flag\" option\"\n         *\n         */\n        super();\n\n        if (this.ngControl) {\n            this.ngControl.valueAccessor = this;\n        }\n\n        const formField = inject<PlatformFormField>(FD_FORM_FIELD, {\n            optional: true,\n            skipSelf: true,\n            host: true\n        });\n\n        const formControl = inject<PlatformFormFieldControl>(FD_FORM_FIELD_CONTROL, {\n            optional: true,\n            skipSelf: true,\n            host: true\n        });\n\n        // We have to ignore \"formField\" if there is \"formControl\" wrapper\n        this.formField = formField && !formControl ? formField : null;\n\n        this._doCheck$?.pipe(takeUntilDestroyed(this._destroyed)).subscribe(() => {\n            this.ngDoCheck();\n        });\n        this._externalSubmit?.pipe(takeUntilDestroyed(this._destroyed)).subscribe(() => {\n            this._externalFormSubmitted = true;\n        });\n    }\n\n    /** @hidden */\n    onChange: (value: any) => void = () => {};\n\n    /** @hidden */\n    onTouched = (): void => {};\n\n    /** @hidden */\n    ngOnInit(): void {\n        if (this.formField) {\n            this.formField.registerFormFieldControl(this);\n        }\n    }\n\n    /**\n     * Re-validate and emit event to parent container on every CD cycle as they are some errors\n     * that we can't subscribe to.\n     */\n    ngDoCheck(): void {\n        if (this.ngControl) {\n            this.updateErrorState();\n        }\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        if (this.ngControl) {\n            this._subscriptions.add(\n                this.ngControl.statusChanges?.subscribe(() => {\n                    this.markForCheck();\n                })\n            );\n        }\n\n        const labelAndHelpId = `fdp-form-label-content-${this.id}`;\n        // if not specified, associate label and inline help ids with the input,\n        // else add these ids to the specified ones\n        if (this.formField) {\n            if (!this.ariaLabelledBy) {\n                this.ariaLabelledBy = labelAndHelpId;\n            } else {\n                this.ariaLabelledBy += ' ' + labelAndHelpId;\n            }\n        }\n\n        this.innerErrorsTemplate = this.formField?.innerErrorRenderers;\n\n        this.stateChanges\n            .pipe(\n                filter(() => !!this.formField),\n                takeUntilDestroyed(this._destroyed)\n            )\n            .subscribe(() => {\n                this.advancedStateMessage = {\n                    template: this.formField!.innerErrorRenderers,\n                    hasErrors: this.formField!.hasErrors()\n                };\n                this.detectChanges();\n            });\n\n        this.detectChanges();\n    }\n\n    /** @hidden */\n    registerOnChange(fn: (_: any) => void): void {\n        this.onChange = fn;\n    }\n\n    /** @hidden */\n    registerOnTouched(fn: () => void): void {\n        this.onTouched = fn;\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        super.ngOnDestroy();\n        this.stateChanges.complete();\n        if (this.formField) {\n            this.formField.unregisterFormFieldControl(this);\n        }\n    }\n\n    /** @hidden */\n    setDisabledState(isDisabled: BooleanInput): void {\n        const newState = booleanAttribute(isDisabled);\n        this.markForCheck();\n        if (newState !== this._disabled) {\n            this._disabled = newState;\n            this.stateChanges.next('setDisabledState');\n        }\n    }\n\n    /**\n     * Each sub class must override this method as inheritance does not work\n     */\n    writeValue(value: any): void {\n        this._value = value;\n        this.stateChanges.next('writeValue');\n        this.markForCheck();\n    }\n\n    /**\n     *\n     * Keeps track of element focus\n     */\n    _onFocusChanged(isFocused: boolean): void {\n        if (isFocused !== this.focused && (!this.disabled || !isFocused)) {\n            this.focused = isFocused;\n            this.stateChanges.next('_onFocusChanged');\n        }\n\n        if (!isFocused) {\n            this.onTouched();\n        }\n    }\n\n    /**\n     * Handles even when we click on parent container which is the FormField Wrapping this\n     * control\n     */\n    onContainerClick(event: MouseEvent): void {\n        this.focus(event);\n    }\n\n    /**\n     * In most of the cases when working with input element directly you should be just find to assing\n     * variable to this element\n     *\n     * ```\n     * <input #inputElementRef fd-form-control ...>\n     * ```\n     *\n     * and this default behavior used. For other cases implement focus.\n     *\n     */\n    focus(event?: MouseEvent): void {\n        if (this._elementRef && !this.focused) {\n            this._elementRef.nativeElement.focus(event);\n        }\n    }\n\n    /**\n     *  Need re-validates errors on every CD iteration to make sure we are also\n     *  covering non-control errors, errors that happens outside of this control\n     */\n    protected updateErrorState(): void {\n        const parent = this.ngForm;\n        const parentControlContainer = this.controlContainer;\n        const control = this.ngControl ? (this.ngControl.control as FormControl) : null;\n        const newStatusIsError = !!(\n            control?.invalid &&\n            ((this.validationStrategy.includes('dirty') && control.dirty) ||\n                (this.validationStrategy.includes('touched') && control.touched) ||\n                (this.validationStrategy.includes('submitted') && parent?.submitted) ||\n                (parentControlContainer as any)?.submitted ||\n                this._externalFormSubmitted)\n        );\n\n        if (newStatusIsError !== this.controlInvalid) {\n            this._controlInvalid = newStatusIsError;\n            this.stateChanges.next('updateErrorState');\n            this.markForCheck();\n        }\n    }\n\n    /**\n     * Used to change the value of a control.\n     * @param value the value to be applied\n     * @param emitOnChange whether to emit \"onChange\" event.\n     * Should be \"false\", if the change is made programmatically (internally) by the control, \"true\" otherwise\n     */\n    protected setValue(value: any, emitOnChange = true): void {\n        if (value !== this._value) {\n            this.writeValue(value);\n            if (emitOnChange) {\n                this.onChange(value);\n            }\n            this.markForCheck();\n        }\n    }\n\n    /** @hidden */\n    protected getValue(): any {\n        return this._value;\n    }\n}\n","import { Directive, Input } from '@angular/core';\n\nimport { SelectItem, isSelectItem } from '../domain/data-model';\nimport { isFunction, isJsObject, isString } from '../utils/lang';\nimport { BaseInput } from './base.input';\n\n/**\n * Defines specific behavior for Input controls which deals with list of values including:\n *  - Select\n *  - RadioGroup\n *  - CheckboxGroup\n *  - ComboBox\n *  ...\n *\n */\n@Directive()\nexport abstract class CollectionBaseInput extends BaseInput {\n    /**\n     * List of values, it can be of type SelectItem, string or any object.\n     * Generic object type is among the list of types,\n     * because we allow to get labels and values using `displayKey` and `lookupKey` inputs accordingly.\n     */\n    @Input()\n    set list(value: Array<SelectItem | string | object>) {\n        this._list = value;\n    }\n    get list(): Array<SelectItem | string | object> {\n        return this._list;\n    }\n\n    /**\n     * Used in filters and any kind of comparators when we work with objects and this identify\n     * unique field name based on which we are going to do the job\n     */\n    @Input()\n    lookupKey: string;\n\n    /**\n     * When we deal with unknown object we can use `displayKey` to retrieve value from specific\n     * property of the object to act as display value.\n     *\n     * @See ComboBox, Select, RadioGroup, CheckBox Group\n     */\n    @Input()\n    displayKey: string;\n\n    /** @hidden */\n    private _list: Array<SelectItem | string | object>;\n\n    /** @hidden */\n    public lookupValue(item: any): string {\n        if (isSelectItem(item)) {\n            return this.lookupKey && item && item.value ? item.value[this.lookupKey] : item.value;\n        } else {\n            return this.lookupKey && item ? item[this.lookupKey] : item;\n        }\n    }\n\n    /** @hidden */\n    public displayValue(item: any): string {\n        if (isSelectItem(item)) {\n            return item.label;\n        } else if (isJsObject(item) && this.displayKey) {\n            const currentItem = this.objectGet(item, this.displayKey);\n\n            return isFunction(currentItem) ? currentItem() : currentItem;\n        } else {\n            return item;\n        }\n    }\n\n    /** @hidden */\n    public objectGet(obj: any, is: string | string[] | undefined): any {\n        if (!isJsObject(obj)) {\n            return obj;\n        } else if (isString(is)) {\n            return this.objectGet(obj, is.split('.'));\n        } else if (!is?.length) {\n            return obj;\n        } else {\n            return this.objectGet(obj[is[0]], is.slice(1));\n        }\n    }\n}\n","import { ElementRef, QueryList, TemplateRef } from '@angular/core';\nimport { AbstractControl, FormControl, FormGroup, NgControl } from '@angular/forms';\nimport { FormField, FormFieldControl } from '@fundamental-ngx/cdk/forms';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Observable, Subject } from 'rxjs';\n\nimport { FormInputMessageGroupComponent } from '@fundamental-ngx/core/form';\nimport { TriggerConfig } from '@fundamental-ngx/core/popover';\nimport { FormError, FormFieldErrorDirectiveContext } from './form-error';\nimport { Column, ColumnLayout } from './form-options';\n\n/**\n * FormField base class.\n *\n * This class is used to create form field components.\n *\n */\nexport abstract class PlatformFormField extends FormField {\n    /**\n     * Form field id\n     */\n    id: string;\n    /**\n     * Rank is used for ordering.\n     * Than lower number then higher priority\n     */\n    rank: number;\n    /**\n     * Form field template reference\n     */\n    renderer: TemplateRef<any>;\n    /**\n     * Form field custom width in columns must be between 1 - 12\n     */\n    columns: Column;\n    /**\n     * Define form field column belongs\n     */\n    column: number;\n    /**\n     * Translations template reference\n     */\n    i18Strings: TemplateRef<any>;\n    /**\n     * Indicates if field is editable\n     */\n    editable: boolean;\n    /**\n     * Indicates when form field label should not be displayed\n     */\n    noLabelLayout: boolean;\n\n    /**\n     * A reference to the underlying FormFieldControl.\n     */\n    control: PlatformFormFieldControl | null;\n    /**\n     * Set when form field is a mandatory one.\n     */\n    required: boolean;\n    /** Form field label */\n    label?: string;\n\n    /** Form fields's group. */\n    formFieldGroup: Nullable<FormFieldGroup>;\n\n    /** Frm field's Form Container. */\n    formGroupContainer: Nullable<FormGroupContainer>;\n\n    /** Grouped errors. */\n    groupedErrors: FormFieldErrorDirectiveContext[];\n\n    /** Combined Error directives. */\n    errorDirectives: FormError[];\n\n    /** Form control */\n    ngControl?: NgControl;\n\n    /** @hidden */\n    formControl?: FormControl;\n\n    /** Event emitted when errors being changed. */\n    errorsChange$: Subject<void>;\n\n    /** @hidden */\n    innerErrorRenderers?: TemplateRef<any>;\n\n    /** Whether form field has validation errors. */\n    hasErrors: () => boolean;\n}\n\nexport abstract class FormFieldGroup {\n    /** Group header*/\n    label: string;\n\n    /** Group's form name */\n    formName: string;\n\n    /** Group fields */\n    fields: QueryList<PlatformFormField>;\n\n    /**\n     * Defines label's column layout.\n     */\n    labelColumnLayout: ColumnLayout;\n\n    /**\n     * Defines field's column layout.\n     */\n    fieldColumnLayout: ColumnLayout;\n\n    /**\n     * Defines gap column layout.\n     */\n    gapColumnLayout: ColumnLayout;\n}\n\nexport type FdpFormFieldControl<T = any> = FormFieldControl<T>;\n\nexport abstract class PlatformFormFieldControl<T = any> implements FormFieldControl<T> {\n    /**\n     * To allow user to determine what event he wants to trigger the messages to show\n     * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp).\n     */\n    abstract triggers: (string | TriggerConfig)[];\n\n    /** State message configuration. Used for components that can render form message inside its template. */\n    abstract stateMessageConfig: Nullable<TemplateRef<any>>;\n\n    /** Method for focusing on the element */\n    abstract focus(event?: MouseEvent): void;\n\n    /**\n     * Handles even when we click on parent container which is the FormField Wrapping this\n     * control\n     */\n    abstract onContainerClick(event: MouseEvent): void;\n\n    /** @hidden */\n    formMessage: Nullable<FormInputMessageGroupComponent>;\n\n    /**\n     * Each input control has always a value. Need to make sure we keep a convention for\n     * input fields\n     */\n    value: T | null;\n\n    /**\n     * Need to have a way to set placeholder to the input\n     */\n    placeholder: string;\n\n    /**\n     * Need to have a way to set Mandatory to the input field\n     */\n    required: boolean;\n\n    /**\n     * Sets id from FF to Input\n     */\n    id: string;\n\n    /**\n     * This should be coming from Parent.\n     */\n    editable: boolean;\n\n    /**\n     * The height of the extra content at the bottom of the form control,\n     * which should not affect the alignment of form control and it's label\n     */\n    extraContentHeightPx?: number;\n\n    /**\n     *\n     * Form Field listen for all the changes happening inside the input\n     */\n    readonly stateChanges: Observable<void>;\n\n    /**\n     *  Each input should inject its own ngControl and we should retrieve it\n     */\n    readonly ngControl: NgControl | null;\n\n    /** Whether the control is disabled. */\n    readonly disabled: boolean;\n\n    /**\n     * Keeps track if the form element is in focus\n     */\n    readonly focused: boolean;\n\n    /** Whether control has errors */\n    readonly controlInvalid: boolean;\n\n    /** Corresponding element reference. */\n    readonly elementRef: ElementRef;\n\n    /** Form field instance. */\n    formField: Nullable<PlatformFormField>;\n}\n\n/**\n * FormGroup base class.\n *\n * This class is used to create form group components.\n *\n */\nexport abstract class FormGroupContainer {\n    /**\n     * Angular FormGroup where all underlying controls will be attached to.\n     */\n    formGroup: FormGroup;\n    /**\n     * Translations template reference.\n     */\n    i18Strings: TemplateRef<any>;\n    /**\n     * Indicates when form is editable.\n     */\n    editable: boolean;\n    /**\n     * Indicates when labels should not be displayed.\n     */\n    noLabelLayout: boolean;\n\n    /**\n     * Defines label's column layout.\n     */\n    labelColumnLayout: ColumnLayout;\n\n    /**\n     * Defines field's column layout.\n     */\n    fieldColumnLayout: ColumnLayout;\n\n    /**\n     * Defines gap column layout.\n     */\n    gapColumnLayout: ColumnLayout;\n\n    /**\n     * Form's main title.\n     */\n    mainTitle?: Nullable<string>;\n\n    /**\n     * Attach underlying form field.\n     */\n    addFormField: (formField: PlatformFormField) => void;\n    /**\n     * Detach underlying form field.\n     */\n    removeFormField: (formField: PlatformFormField) => void;\n    /**\n     * Attach formControl.\n     */\n    addFormControl: (name: string, control: AbstractControl) => void;\n    /**\n     * Detach form formControl.\n     */\n    removeFormControl: (name: string) => void;\n    /**\n     * Attach underlying form field group.\n     */\n    addFormFieldGroup: (formFieldGroup: FormFieldGroup) => void;\n    /**\n     * Detach underlying form field group.\n     */\n    removeFormFieldGroup: (formFieldGroup: FormFieldGroup) => void;\n}\n","export type LabelLayout = 'horizontal' | 'vertical';\n\nexport type HintPlacement = 'left' | 'right';\n\nexport type FormZone = 'zTop' | 'zBottom' | 'zLeft' | 'zRight';\n\nexport type Column = 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n\nexport interface ColumnLayout {\n    XL?: number;\n    L?: number;\n    M?: number;\n    S?: number;\n}\n\nexport enum ColumnLayoutGridClass {\n    XL = 'xl',\n    L = 'lg',\n    M = 'md',\n    S = 'sm'\n}\n","import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\nimport { Directive, Injectable, InjectionToken, Input, OnInit, inject } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\nimport { CollectionBaseInput } from './collection-base.input';\n\nexport interface InlineLayout {\n    XL?: boolean;\n    L?: boolean;\n    M?: boolean;\n    S?: boolean;\n}\n\nexport enum RESPONSIVE_BREAKPOINTS {\n    S = 600,\n    M = 1024,\n    L = 1440\n}\n\nexport const RESPONSIVE_BREAKPOINTS_CONFIG = new InjectionToken<ResponsiveBreakPointConfig>(\n    'Default Responsive breakpoint config'\n);\n\n@Injectable()\nexport class ResponsiveBreakPointConfig {\n    /** Large screen */\n    L: number = RESPONSIVE_BREAKPOINTS['L'];\n    /** Medium screen */\n    M: number = RESPONSIVE_BREAKPOINTS['M'];\n    /** Small screen */\n    S: number = RESPONSIVE_BREAKPOINTS['S'];\n}\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ResponsiveBreakpointsService {\n    /** @hidden */\n    breakpoints: Record<string, any> = {};\n    /** @hidden */\n    activeBreakpoints: string[];\n    /** @hidden */\n    minWidth = 'min-width';\n    /** @hidden */\n    maxWidth = 'max-width';\n    /** @hidden */\n    unit = 'px';\n\n    /** @hidden */\n    constructor(readonly _breakpointObserver: BreakpointObserver) {}\n\n    /** subscribe to get current screen size based on config provided */\n    observeBreakpointByConfig(config: ResponsiveBreakPointConfig): Subject<any> {\n        const breakPointName: Subject<string> = new BehaviorSubject('S');\n\n        this._breakpointObserver.observe(this._getBreakpoints(config)).subscribe((matchValues) => {\n            const breakPoint = this._breakPointMeet(matchValues);\n            breakPointName.next(breakPoint);\n        });\n\n        return breakPointName;\n    }\n\n    /** @hidden when screen size changes from one breakpoint to another */\n    private _breakPointMeet(breakPointMatches: BreakpointState): string {\n        let breakPointName: string | undefined;\n\n        if (breakPointMatches.matches) {\n            for (const breakpoint in breakPointMatches.breakpoints) {\n                if (breakPointMatches.breakpoints[breakpoint]) {\n                    breakPointName = this._getBreakpointName(breakpoint);\n                }\n            }\n        }\n\n        return breakPointName ?? 'S';\n    }\n\n    /** @hidden */\n    private _getBreakpoints(config: ResponsiveBreakPointConfig): string[] {\n        let breakPointStr: string;\n        this.activeBreakpoints = [];\n\n        for (const screenSize of Object.keys(config)) {\n            switch (screenSize) {\n                case 'S':\n                    breakPointStr = `(${this.maxWidth}: ${config[screenSize]}${this.unit})`;\n                    this.activeBreakpoints.push(breakPointStr);\n                    this.breakpoints[breakPointStr] = screenSize;\n                    break;\n                case 'M':\n                    breakPointStr = `(${this.minWidth}: ${config['S']}${this.unit}) and (${this.maxWidth}: ${config[screenSize]}${this.unit})`;\n                    this.activeBreakpoints.push(breakPointStr);\n                    this.breakpoints[breakPointStr] = screenSize;\n                    break;\n                case 'L':\n                    breakPointStr = `(${this.minWidth}: ${config['M']}${this.unit}) and (${this.maxWidth}: ${config[screenSize]}${this.unit})`;\n                    this.activeBreakpoints.push(breakPointStr);\n                    this.breakpoints[breakPointStr] = screenSize;\n\n                    // create entry for XL screen\n                    breakPointStr = `(${this.minWidth}: ${config[screenSize]}${this.unit})`;\n                    this.activeBreakpoints.push(breakPointStr);\n                    this.breakpoints[breakPointStr] = 'XL';\n                    break;\n            }\n        }\n\n        return this.activeBreakpoints;\n    }\n\n    /** @hidden */\n    private _getBreakpointName(breakpointValue): string {\n        return this.breakpoints[breakpointValue];\n    }\n}\n\n@Directive()\nexport abstract class InLineLayoutCollectionBaseInput extends CollectionBaseInput implements OnInit {\n    /** object to change isInline property based on screen size */\n    @Input()\n    set inlineLayout(layout: InlineLayout | undefined) {\n        if (layout) {\n            this._inlineLayout = layout;\n            this._isInLineLayoutEnabled = true;\n        }\n        this._setFieldLayout(layout);\n    }\n    get inlineLayout(): InlineLayout {\n        return this._inlineLayout;\n    }\n\n    /** @hidden */\n    protected _inlineCurrentValue$ = new BehaviorSubject<boolean>(false);\n\n    /** @hidden */\n    protected readonly _responsiveBreakpointsService = inject(ResponsiveBreakpointsService);\n\n    /** @hidden */\n    protected readonly _responsiveBreakPointConfig =\n        inject(RESPONSIVE_BREAKPOINTS_CONFIG, {\n            optional: true\n        }) || new ResponsiveBreakPointConfig();\n\n    /** @hidden */\n    private _inlineLayout: InlineLayout;\n\n    /** @hidden */\n    private _xlIsInline: boolean;\n\n    /** @hidden */\n    private _lgIsInline: boolean;\n\n    /** @hidden */\n    private _mdIsInline: boolean;\n\n    /** @hidden */\n    private _sIsInline: boolean;\n\n    /** @hidden */\n    private _isInLineLayoutEnabled = false;\n\n    /** @hidden */\n    ngOnInit(): void {\n        super.ngOnInit();\n\n        if (this._isInLineLayoutEnabled) {\n            this._responsiveBreakpointsService\n                .observeBreakpointByConfig(this._responsiveBreakPointConfig)\n                .subscribe((breakPointName) => {\n                    this._updateLayout(breakPointName);\n                });\n        }\n    }\n\n    /** @hidden set values of inline for each screen layout */\n    private _setFieldLayout(inlineLayout?: InlineLayout): void {\n        if (!inlineLayout) {\n            this._isInLineLayoutEnabled = false;\n            return;\n        }\n        try {\n            this._sIsInline = !!inlineLayout['S'];\n            this._mdIsInline = !!inlineLayout['M'];\n            this._lgIsInline = !!inlineLayout['L'];\n            this._xlIsInline = !!inlineLayout['XL'];\n        } catch {\n            this._isInLineLayoutEnabled = false;\n        }\n    }\n\n    /** @hidden */\n    private _updateLayout(currentBreakingPointName: string): void {\n        if (this._isInLineLayoutEnabled) {\n            switch (currentBreakingPointName) {\n                case 'S':\n                    this._inlineCurrentValue$.next(this._sIsInline);\n                    break;\n                case 'M':\n                    this._inlineCurrentValue$.next(this._mdIsInline);\n                    break;\n                case 'L':\n                    this._inlineCurrentValue$.next(this._lgIsInline);\n                    break;\n                case 'XL':\n                    this._inlineCurrentValue$.next(this._xlIsInline);\n                    break;\n                default:\n                    this._inlineCurrentValue$.next(this._xlIsInline);\n            }\n        }\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'convertBytes',\n    standalone: true\n})\nexport class ConvertBytesPipe implements PipeTransform {\n    /** @hidden */\n    private readonly _sizes: string[] = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n    /** @hidden */\n    transform(bytes: number): string {\n        return this._convertBytes(bytes);\n    }\n\n    /**\n     * Convert bytes to KB, MB, GB, ...\n     * @param bytes number\n     * @param decimals number\n     */\n    private _convertBytes(bytes = 0, decimals = 2): string {\n        if (bytes <= 0) {\n            return '0 Bytes';\n        }\n\n        const k = 1024;\n        const dm = decimals < 0 ? 0 : decimals;\n        const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n        return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + this._sizes[i];\n    }\n}\n","import { NgModule } from '@angular/core';\n\nimport { ConvertBytesPipe } from './convert-bytes/convert-bytes.pipe';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [ConvertBytesPipe],\n    exports: [ConvertBytesPipe]\n})\nexport class PlatformPipeModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { ModifierKeys } from '@angular/cdk/testing';\n\n/**\n * Creates a browser MouseEvent with the specified options.\n * @docs-private\n */\nexport function createMouseEvent(type: string, x = 0, y = 0, button = 0): MouseEvent {\n    const event = document.createEvent('MouseEvent');\n    const originalPreventDefault = event.preventDefault.bind(event);\n\n    event.initMouseEvent(\n        type,\n        true /* canBubble */,\n        true /* cancelable */,\n        window /* view */,\n        0 /* detail */,\n        x /* screenX */,\n        y /* screenY */,\n        x /* clientX */,\n        y /* clientY */,\n        false /* ctrlKey */,\n        false /* altKey */,\n        false /* shiftKey */,\n        false /* metaKey */,\n        button /* button */,\n        null /* relatedTarget */\n    );\n\n    // `initMouseEvent` doesn't allow us to pass the `buttons` and\n    // defaults it to 0 which looks like a fake event.\n    Object.defineProperty(event, 'buttons', { get: () => 1 });\n\n    // IE won't set `defaultPrevented` on synthetic events so we need to do it manually.\n    event.preventDefault = function (): void {\n        Object.defineProperty(event, 'defaultPrevented', { get: () => true, configurable: true });\n        return originalPreventDefault();\n    };\n\n    return event;\n}\n\n/**\n * Creates a browser TouchEvent with the specified pointer coordinates.\n * @docs-private\n */\nexport function createTouchEvent(type: string, pageX = 0, pageY = 0): Event {\n    // In favor of creating events that work for most of the browsers, the event is created\n    // as a basic UI Event. The necessary details for the event will be set manually.\n    const event = document.createEvent('UIEvent');\n    const touchDetails = { pageX, pageY };\n\n    // TS3.6 removes the initUIEvent method and suggests porting to \"new UIEvent()\".\n    (event as any).initUIEvent(type, true, true, window, 0);\n\n    // Most of the browsers don't have a \"initTouchEvent\" method that can be used to define\n    // the touch details.\n    Object.defineProperties(event, {\n        touches: { value: [touchDetails] },\n        targetTouches: { value: [touchDetails] },\n        changedTouches: { value: [touchDetails] }\n    });\n\n    return event;\n}\n\n/**\n * Dispatches a keydown event from an element.\n * @docs-private\n */\nexport function createKeyboardEvent(\n    type: string,\n    keyCode: number = 0,\n    key: string = '',\n    target?: Element,\n    modifiers: ModifierKeys = {}\n): KeyboardEvent {\n    const event = document.createEvent('KeyboardEvent') as any;\n    const originalPreventDefault = event.preventDefault;\n\n    // Firefox does not support `initKeyboardEvent`, but supports `initKeyEvent`.\n    if (event.initKeyEvent) {\n        event.initKeyEvent(\n            type,\n            true,\n            true,\n            window,\n            modifiers.control,\n            modifiers.alt,\n            modifiers.shift,\n            modifiers.meta,\n            keyCode\n        );\n    } else {\n        // `initKeyboardEvent` expects to receive modifiers as a whitespace-delimited string\n        // See https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/initKeyboardEvent\n        let modifiersList = '';\n\n        if (modifiers.control) {\n            modifiersList += 'Control ';\n        }\n\n        if (modifiers.alt) {\n            modifiersList += 'Alt ';\n        }\n\n        if (modifiers.shift) {\n            modifiersList += 'Shift ';\n        }\n\n        if (modifiers.meta) {\n            modifiersList += 'Meta ';\n        }\n\n        event.initKeyboardEvent(\n            type,\n            true /* canBubble */,\n            true /* cancelable */,\n            window /* view */,\n            0 /* char */,\n            key /* key */,\n            0 /* location */,\n            modifiersList.trim() /* modifiersList */,\n            false /* repeat */\n        );\n    }\n\n    // Webkit Browsers don't set the keyCode when calling the init function.\n    // See related bug https://bugs.webkit.org/show_bug.cgi?id=16735\n    Object.defineProperties(event, {\n        keyCode: { get: () => keyCode },\n        key: { get: () => key },\n        target: { get: () => target },\n        ctrlKey: { get: () => !!modifiers.control },\n        altKey: { get: () => !!modifiers.alt },\n        shiftKey: { get: () => !!modifiers.shift },\n        metaKey: { get: () => !!modifiers.meta }\n    });\n\n    // IE won't set `defaultPrevented` on synthetic events so we need to do it manually.\n    event.preventDefault = function (): Event {\n        Object.defineProperty(event, 'defaultPrevented', { get: () => true, configurable: true });\n        // eslint-disable-next-line prefer-rest-params\n        return originalPreventDefault.apply(this, arguments);\n    };\n\n    return event;\n}\n\n/**\n * Creates a fake event object with any desired event type.\n * @docs-private\n */\nexport function createFakeEvent(type: string, canBubble = false, cancelable = true): Event {\n    const event = document.createEvent('Event');\n    event.initEvent(type, canBubble, cancelable);\n    return event;\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDP_PRESET_MANAGED_COMPONENT = new InjectionToken('FdpPresetManagedComponent');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["randomId"],"mappings":"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"}