{"version":3,"file":"fundamental-ngx-cdk-utils.mjs","sources":["../../../../libs/cdk/utils/functions/consumer-provider-factory.ts","../../../../libs/cdk/utils/functions/element-size.ts","../../../../libs/cdk/utils/functions/get-document-font-size.ts","../../../../libs/cdk/utils/functions/intersection-observable.ts","../../../../libs/cdk/utils/functions/is-compact-density.ts","../../../../libs/cdk/utils/functions/is-odd.ts","../../../../libs/cdk/utils/functions/key-util.ts","../../../../libs/cdk/utils/functions/lodash-utils.ts","../../../../libs/cdk/utils/tokens/module-deprecations.token.ts","../../../../libs/cdk/utils/functions/module-deprecations-provider.ts","../../../../libs/cdk/utils/functions/parser-file-size.ts","../../../../libs/cdk/utils/functions/random-color-accent.ts","../../../../libs/cdk/utils/functions/range.ts","../../../../libs/cdk/utils/functions/resize-observable.ts","../../../../libs/cdk/utils/functions/scroll.ts","../../../../libs/cdk/utils/functions/uuidv4-generator.ts","../../../../libs/cdk/utils/directives/auto-complete/auto-complete.directive.ts","../../../../libs/cdk/utils/directives/auto-complete/auto-complete.module.ts","../../../../libs/cdk/utils/helpers/destroy-observable.ts","../../../../libs/cdk/utils/helpers/dfs.ts","../../../../libs/cdk/utils/helpers/get-native-element.ts","../../../../libs/cdk/utils/typecheck.ts","../../../../libs/cdk/utils/helpers/range-selector.ts","../../../../libs/cdk/utils/helpers/warn-once.ts","../../../../libs/cdk/utils/services/content-density.service.ts","../../../../libs/cdk/utils/services/focus-trap.service.ts","../../../../libs/cdk/utils/services/keyboard-support/keyboard-support.service.ts","../../../../libs/cdk/utils/services/local-storage.service.ts","../../../../libs/cdk/utils/services/observers/attribute.observer.ts","../../../../libs/cdk/utils/services/resize-observer.service.ts","../../../../libs/cdk/utils/services/rtl.service.ts","../../../../libs/cdk/utils/services/tabbable-element.service.ts","../../../../libs/cdk/utils/tokens/viewport-size.observable.ts","../../../../libs/cdk/utils/directives/breakpoints/responsive-breakpoints.ts","../../../../libs/cdk/utils/directives/breakpoints/breakpoint.directive.ts","../../../../libs/cdk/utils/directives/clicked/clicked.directive.ts","../../../../libs/cdk/utils/directives/clicked/clicked-event.plugin.ts","../../../../libs/cdk/utils/directives/clicked/provide-fdk-clicked.ts","../../../../libs/cdk/utils/directives/clicked/clicked-behavior.module.ts","../../../../libs/cdk/utils/directives/clicked/element-click.observable.ts","../../../../libs/cdk/utils/directives/clicked/fdk-clicked-provider.service.ts","../../../../libs/cdk/utils/directives/disabled/fdk-disabled.token.ts","../../../../libs/cdk/utils/directives/disabled/set-disabled-state.ts","../../../../libs/cdk/utils/directives/disabled/disabled-behavior.directive.ts","../../../../libs/cdk/utils/directives/disabled/disabled-behavior.module.ts","../../../../libs/cdk/utils/directives/disabled/disabled.observer.ts","../../../../libs/cdk/utils/directives/disabled/default-disabled-view-modifier.ts","../../../../libs/cdk/utils/directives/disabled/fdk-disabled-provider.service.ts","../../../../libs/cdk/utils/directives/focus-key-manager/focus-key-manager.tokens.ts","../../../../libs/cdk/utils/directives/focus-key-manager/focus-key-manager-list.directive.ts","../../../../libs/cdk/utils/directives/focus-key-manager/focus-key-manager-item.directive.ts","../../../../libs/cdk/utils/directives/focus-key-manager/focus-key-manager-helpers.module.ts","../../../../libs/cdk/utils/directives/focusable-item/focusable-item.tokens.ts","../../../../libs/cdk/utils/directives/focusable-item/is-element-focusable-by-default.ts","../../../../libs/cdk/utils/directives/focusable-item/focusable.observer.ts","../../../../libs/cdk/utils/directives/focusable-item/focusable-item.directive.ts","../../../../libs/cdk/utils/directives/focusable-item/focusable-item.module.ts","../../../../libs/cdk/utils/directives/focusable-list/focusable-list.tokens.ts","../../../../libs/cdk/utils/directives/focusable-list/indirect-focusable-list.directive.ts","../../../../libs/cdk/utils/directives/focusable-item/indirect-focusable-item.directive.ts","../../../../libs/cdk/utils/directives/focusable-item/is-item-focusable.ts","../../../../libs/cdk/utils/directives/focusable-item/get-item-element.ts","../../../../libs/cdk/utils/directives/focusable-list/scroll.ts","../../../../libs/cdk/utils/directives/focusable-list/focusable-list.directive.ts","../../../../libs/cdk/utils/directives/focusable-list/focusable-list.module.ts","../../../../libs/cdk/utils/directives/focusable-grid/focusable-grid.tokens.ts","../../../../libs/cdk/utils/directives/focusable-grid/focusable-grid.directive.ts","../../../../libs/cdk/utils/directives/focusable-grid/focusable-grid.module.ts","../../../../libs/cdk/utils/directives/ignore-click-on-selection/tokens.ts","../../../../libs/cdk/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.ts","../../../../libs/cdk/utils/directives/ignore-click-on-selection/ignore-click-on-selection.module.ts","../../../../libs/cdk/utils/directives/initial-focus/initial-focus.directive.ts","../../../../libs/cdk/utils/directives/initial-focus/initial-focus.module.ts","../../../../libs/cdk/utils/directives/intersection-spy/intersection-spy.directive.ts","../../../../libs/cdk/utils/directives/line-clamp/line-clamp.directive.ts","../../../../libs/cdk/utils/directives/line-clamp/line-clamp.module.ts","../../../../libs/cdk/utils/directives/only-digits/only-digits.directive.ts","../../../../libs/cdk/utils/directives/only-digits/only-digits.module.ts","../../../../libs/cdk/utils/directives/overflow-list/overflow-list-item.directive.ts","../../../../libs/cdk/utils/directives/overflow-list/overflow-list.directive.ts","../../../../libs/cdk/utils/directives/overflow-list/overflow-list.module.ts","../../../../libs/cdk/utils/directives/readonly/set-readonly-state.ts","../../../../libs/cdk/utils/directives/readonly/default-readonly-view-modifier.ts","../../../../libs/cdk/utils/directives/readonly/fdk-readonly.token.ts","../../../../libs/cdk/utils/directives/readonly/readonly.observer.ts","../../../../libs/cdk/utils/directives/readonly/fdk-readonly-provider.service.ts","../../../../libs/cdk/utils/directives/readonly/readonly-behavior.directive.ts","../../../../libs/cdk/utils/directives/readonly/readonly-behavior.module.ts","../../../../libs/cdk/utils/directives/repeat/repeat.directive.ts","../../../../libs/cdk/utils/directives/repeat/repeat.module.ts","../../../../libs/cdk/utils/directives/resize-observer/resize-observer.directive.ts","../../../../libs/cdk/utils/directives/resize/resize-handle.directive.ts","../../../../libs/cdk/utils/directives/resize/resize.directive.ts","../../../../libs/cdk/utils/directives/resize/resize.module.ts","../../../../libs/cdk/utils/directives/selectable-list/select-component-root.token.ts","../../../../libs/cdk/utils/directives/selectable-list/selectable-item.token.ts","../../../../libs/cdk/utils/directives/selectable-list/selectable-list.tokens.ts","../../../../libs/cdk/utils/directives/selectable-list/selection.service.ts","../../../../libs/cdk/utils/directives/selectable-list/selectable-item.directive.ts","../../../../libs/cdk/utils/directives/selectable-list/selectable-list.directive.ts","../../../../libs/cdk/utils/directives/selectable-list/selectable-list.module.ts","../../../../libs/cdk/utils/directives/template/template.directive.ts","../../../../libs/cdk/utils/directives/template/template.module.ts","../../../../libs/cdk/utils/directives/truncate/truncate.directive.ts","../../../../libs/cdk/utils/directives/truncate/truncate.module.ts","../../../../libs/cdk/utils/drag-and-drop/tokens.ts","../../../../libs/cdk/utils/drag-and-drop/dnd-item/dnd-item.directive.ts","../../../../libs/cdk/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.ts","../../../../libs/cdk/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.ts","../../../../libs/cdk/utils/async-strategy/function-strategy.class.ts","../../../../libs/cdk/utils/async-strategy/observable-strategy.class.ts","../../../../libs/cdk/utils/async-strategy/promise-strategy.class.ts","../../../../libs/cdk/utils/async-strategy/value-strategy.class.ts","../../../../libs/cdk/utils/async-strategy/select-strategy.class.ts","../../../../libs/cdk/utils/drag-and-drop/dnd-list/dnd-list.directive.ts","../../../../libs/cdk/utils/drag-and-drop/drag-and-drop.module.ts","../../../../libs/cdk/utils/utils.module.ts","../../../../libs/cdk/utils/abstract-fd-ngx-class.ts","../../../../libs/cdk/utils/coercion/array.ts","../../../../libs/cdk/utils/components/dynamic-portal/dynamic-portal.component.ts","../../../../libs/cdk/utils/consts/error-messages.ts","../../../../libs/cdk/utils/consts/overflow-priority-score.ts","../../../../libs/cdk/utils/consts/unicode-letters.regex.ts","../../../../libs/cdk/utils/consts/unicode-numbers.regex.ts","../../../../libs/cdk/utils/interfaces/has-element-ref.interface.ts","../../../../libs/cdk/utils/decorators/apply-css-class.decorator.ts","../../../../libs/cdk/utils/decorators/apply-css-style.decorator.ts","../../../../libs/cdk/utils/decorators/setter-alternator.ts","../../../../libs/cdk/utils/decorators/coerce-boolean.ts","../../../../libs/cdk/utils/decorators/coerce-css-pixel.ts","../../../../libs/cdk/utils/deprecated-selector.class.ts","../../../../libs/cdk/utils/dynamic-component/dynamic-component-container.ts","../../../../libs/cdk/utils/dynamic-component/dynamic-component-injector.ts","../../../../libs/cdk/utils/dynamic-component/dynamic-component.service.ts","../../../../libs/cdk/utils/list-item/list-item-utils.ts","../../../../libs/cdk/utils/pipes/async-or-sync.pipe.ts","../../../../libs/cdk/utils/pipes/displayFn.pipe.ts","../../../../libs/cdk/utils/pipes/filter-strings.pipe.ts","../../../../libs/cdk/utils/pipes/is-compact.pipe.ts","../../../../libs/cdk/utils/pipes/make-async.pipe.ts","../../../../libs/cdk/utils/pipes/safe.pipe.ts","../../../../libs/cdk/utils/pipes/search-highlight.pipe.ts","../../../../libs/cdk/utils/pipes/truncate.pipe.ts","../../../../libs/cdk/utils/pipes/two-digits.pipe.ts","../../../../libs/cdk/utils/pipes/value-by-path.pipe.ts","../../../../libs/cdk/utils/pipes/pipe.module.ts","../../../../libs/cdk/utils/toast/base-toast-positions.ts","../../../../libs/cdk/utils/toast/base-toast.service.ts","../../../../libs/cdk/utils/toast/classes/base-toast-config.ts","../../../../libs/cdk/utils/toast/classes/base-toast-container.component.ts","../../../../libs/cdk/utils/toast/classes/base-toast-ref.ts","../../../../libs/cdk/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-config.ts","../../../../libs/cdk/utils/toast/classes/base-toast-animated-container.component.ts","../../../../libs/cdk/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-container.component.ts","../../../../libs/cdk/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-ref.ts","../../../../libs/cdk/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible.service.ts","../../../../libs/cdk/utils/fundamental-ngx-cdk-utils.ts"],"sourcesContent":["import { INJECTOR, Injector, Provider } from '@angular/core';\n\n/**\n * Creates provider for ConsumerClass\n */\nexport function consumerProviderFactory<T = any>(\n    ConsumerClass: new (injector: Injector, additionalConfig: Record<any, any> | undefined) => T,\n    providedConfiguration?: Record<any, any>\n): Provider {\n    return {\n        provide: ConsumerClass,\n        useFactory: (injector: Injector) => new ConsumerClass(injector, providedConfiguration),\n        deps: [INJECTOR]\n    };\n}\n","import { ElementRef } from '@angular/core';\n\nexport const pxToNum = (pixels: string): number => Number(pixels.replace('px', '')) || 0;\n\nexport const toNativeElement = (element: HTMLElement | ElementRef): HTMLElement =>\n    element instanceof ElementRef ? element.nativeElement : element;\n\n/** Return elements capacity (width subtract by element padding)\n * @param element - HTMLelement or element reference\n * */\nexport function getElementCapacity(element: HTMLElement | ElementRef): number {\n    const _element = toNativeElement(element);\n    const computedStyle = window.getComputedStyle(_element);\n\n    return pxToNum(computedStyle.width) - pxToNum(computedStyle.paddingLeft) - pxToNum(computedStyle.paddingRight);\n}\n\n/** Return elements width\n * @param element - HTMLelement or element reference\n * @param withMargin - weather to add element margins to width\n * */\nexport function getElementWidth(element: HTMLElement | ElementRef, withMargin?: boolean): number {\n    const _element = toNativeElement(element);\n    const computedStyle = getComputedStyle(_element);\n\n    return withMargin\n        ? pxToNum(computedStyle.width) + pxToNum(computedStyle.marginLeft) + pxToNum(computedStyle.marginRight)\n        : pxToNum(computedStyle.width);\n}\n","/** Get document font size in pixels. */\nexport function getDocumentFontSize(): number {\n    const DEFAULT_SIZE = 16;\n    const clientFontSize = document?.documentElement\n        ? parseFloat(getComputedStyle(document.documentElement).fontSize)\n        : DEFAULT_SIZE;\n    return isNaN(clientFontSize) ? DEFAULT_SIZE : clientFontSize;\n}\n","import { NEVER, Observable } from 'rxjs';\n\n/**\n * RxJS wrapper for IntersectionObserver class.\n * @param target HTML element to spy on.\n * @param options @see {IntersectionObserverInit}\n * @returns {Observable} with observer entries.\n */\nexport function intersectionObservable(\n    target: Element,\n    options?: IntersectionObserverInit\n): Observable<IntersectionObserverEntry[]> {\n    if ('IntersectionObserver' in window) {\n        return new Observable((subscriber) => {\n            const io = new IntersectionObserver((entries) => {\n                subscriber.next(entries);\n            }, options);\n\n            io.observe(target);\n\n            return function unsubscribe(): void {\n                io.disconnect();\n            };\n        });\n    } else {\n        // If browser doesn't support IntersectionObserver API never emit a value\n        // since we're not supporting IE11 and any other browser should have it.\n        return NEVER;\n    }\n}\n","import { ContentDensity } from '../interfaces/content-density';\n\n/** Determines whether provided value is valid content density */\nexport function isValidContentDensity(size: any): size is ContentDensity {\n    return size === 'cozy' || size === 'compact' || size === 'condensed';\n}\n\n/**\n * Determines if \"compact\" styles should be applied based on provided content density\n */\nexport function isCompactDensity(size: ContentDensity): boolean {\n    return isValidContentDensity(size) && size !== 'cozy';\n}\n","/**\n * Function checks whether the passed number is odd.\n * @param number number to check.\n * @returns Boolean whether the number is odd.\n */\nexport function isOdd(number: number): boolean {\n    return number % 2 === 1;\n}\n","import {\n    A,\n    ALT,\n    BACKSPACE,\n    C,\n    CONTROL,\n    DASH,\n    DELETE,\n    DOWN_ARROW,\n    END,\n    ENTER,\n    ESCAPE,\n    F2,\n    F7,\n    HOME,\n    LEFT_ARROW,\n    MAC_ENTER,\n    META,\n    NUMPAD_EIGHT,\n    NUMPAD_FIVE,\n    NUMPAD_FOUR,\n    NUMPAD_MINUS,\n    NUMPAD_NINE,\n    NUMPAD_ONE,\n    NUMPAD_SEVEN,\n    NUMPAD_SIX,\n    NUMPAD_THREE,\n    NUMPAD_TWO,\n    NUMPAD_ZERO,\n    PAGE_DOWN,\n    PAGE_UP,\n    RIGHT_ARROW,\n    SHIFT,\n    SPACE,\n    TAB,\n    UP_ARROW,\n    V,\n    X\n} from '@angular/cdk/keycodes';\nimport { isDevMode } from '@angular/core';\n\n/** Map of keyCodes and their corresponding \"key\" values */\nconst keyMap: Map<number, string[]> = new Map([\n    [RIGHT_ARROW, ['ArrowRight', 'Right']],\n    [DOWN_ARROW, ['ArrowDown', 'Down']],\n    [LEFT_ARROW, ['ArrowLeft', 'Left']],\n    [UP_ARROW, ['ArrowUp', 'Up']],\n    [SPACE, ['Space', 'Spacebar', ' ']],\n    [ESCAPE, ['Escape', 'Esc']],\n    [DELETE, ['Delete', 'Del']],\n    [ENTER, ['Enter']],\n    [MAC_ENTER, ['Enter']],\n    [TAB, ['Tab']],\n    [HOME, ['Home']],\n    [END, ['End']],\n    [ALT, ['Alt']],\n    [CONTROL, ['Ctrl', 'Control', 'Meta']],\n    [META, ['Meta']],\n    [SHIFT, ['Shift']],\n    [BACKSPACE, ['Backspace']],\n    [A, ['KeyA']],\n    [C, ['KeyC']],\n    [V, ['KeyV']],\n    [X, ['KeyX']],\n    [PAGE_UP, ['PageUp']],\n    [PAGE_DOWN, ['PageDown']],\n    [DASH, ['-']],\n    [NUMPAD_MINUS, ['-']],\n    [NUMPAD_ZERO, ['NumPad0']],\n    [NUMPAD_ONE, ['NumPad1']],\n    [NUMPAD_TWO, ['NumPad2']],\n    [NUMPAD_THREE, ['NumPad3']],\n    [NUMPAD_FOUR, ['NumPad4']],\n    [NUMPAD_FIVE, ['NumPad5']],\n    [NUMPAD_SIX, ['NumPad6']],\n    [NUMPAD_SEVEN, ['NumPad7']],\n    [NUMPAD_EIGHT, ['NumPad8']],\n    [NUMPAD_NINE, ['NumPad9']],\n    [F2, ['F2']],\n    [F7, ['F7']]\n]);\n\nexport class KeyUtil {\n    /**\n     * Function used to unify key identification across different browsers using KeyCodes\n     *\n     * @param event     - KeyboardEvent\n     * @param keyCode   - event.key name matching W3C specification / (ASSCI char. codes)\n     * */\n    static isKeyCode(event: KeyboardEvent, keyCode: number | number[]): boolean {\n        if (Array.isArray(keyCode)) {\n            return keyCode.some((key) => this.isKeyCode(event, key));\n        }\n\n        if (event && keyMap.get(keyCode)) {\n            return keyMap.get(keyCode)?.some((alias) => alias === event.key) || keyCode === event.keyCode;\n        }\n\n        if (isDevMode()) {\n            throw new Error(\n                `Invalid function arguments. Check if \"event\" is a KeyboardEvent or \"key\" is defined in keyMap`\n            );\n        }\n\n        return false;\n    }\n\n    /**\n     * Function used to unify key identification across different browsers\n     *\n     * @param event     - KeyboardEvent\n     * @param keyType   - Type of key\n     * */\n    static isKeyType(event: KeyboardEvent, keyType: 'alphabetical' | 'numeric' | 'control' | 'ime'): boolean {\n        if (event && keyType) {\n            switch (keyType) {\n                case 'numeric':\n                    return event.code\n                        ? event.code.toLowerCase().includes('digit')\n                        : (event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105);\n                case 'alphabetical':\n                    return event.code\n                        ? event.code.toLowerCase().includes('key')\n                        : event.keyCode >= 65 && event.keyCode <= 90;\n                // some service commands as alt, ctr, insert, print, f4 etc. All except letters, numbers and symbols\n                case 'control':\n                    return event.keyCode < 48 || (event.keyCode >= 112 && event.keyCode <= 123);\n                case 'ime':\n                    return event.key?.toLowerCase() === 'process' || event.keyCode === 229;\n            }\n        }\n\n        if (isDevMode()) {\n            throw new Error(`Invalid function arguments.`);\n        }\n\n        return false;\n    }\n}\n","/**\n * Utility functions to replace lodash-es functionality with native JavaScript.\n */\n\n/**\n * Gets the value at path of object. If the resolved value is undefined, the defaultValue is returned.\n * @param obj The object to query\n * @param path The path of the property to get\n * @param defaultValue The value returned if the resolved value is undefined\n * @returns The resolved value\n */\nexport function get<TDefault = undefined>(\n    obj: any,\n    path: string | string[],\n    defaultValue?: TDefault\n): TDefault extends undefined ? any : TDefault {\n    if (obj == null) {\n        return defaultValue as any;\n    }\n\n    const pathArray = Array.isArray(path) ? path : path.split('.');\n    let result: any = obj;\n\n    for (const key of pathArray) {\n        if (result == null) {\n            return defaultValue as any;\n        }\n        result = result[key];\n    }\n\n    return (result === undefined ? defaultValue : result) as any;\n}\n\n/**\n * Sets the value at path of object. If a portion of path doesn't exist, it's created.\n * @param obj The object to modify\n * @param path The path of the property to set\n * @param value The value to set\n * @returns The object\n */\nexport function set<T = any>(obj: T, path: string | string[], value: any): T {\n    const pathArray = Array.isArray(path) ? path : path.split('.');\n    const lastIndex = pathArray.length - 1;\n    let current: any = obj;\n\n    for (let i = 0; i < lastIndex; i++) {\n        const key = pathArray[i];\n        if (!(key in current) || current[key] == null) {\n            current[key] = {};\n        }\n        current = current[key];\n    }\n\n    current[pathArray[lastIndex]] = value;\n    return obj;\n}\n\n/**\n * Deep clones an object, handling functions and other non-cloneable values.\n * For objects with functions or class instances, it creates a new object and copies properties.\n * Observables and class instances are copied by reference to avoid circular reference issues.\n * @param obj The object to clone\n * @param seen WeakSet to track visited objects and prevent infinite recursion\n * @returns The cloned object\n */\nexport function cloneDeep<T>(obj: T, seen = new WeakSet()): T {\n    // Handle primitives, null, and undefined\n    if (obj == null || typeof obj !== 'object') {\n        return obj;\n    }\n\n    // Detect circular references FIRST\n    if (seen.has(obj as any)) {\n        return obj; // Return the object by reference if we've seen it before\n    }\n\n    // Handle Date\n    if (obj instanceof Date) {\n        return new Date(obj.getTime()) as any;\n    }\n\n    // Handle RegExp\n    if (obj instanceof RegExp) {\n        return new RegExp(obj.source, obj.flags) as any;\n    }\n\n    // Check if this is a plain object or array BEFORE processing\n    // If it's a class instance (like Observable), return by reference\n    const proto = Object.getPrototypeOf(obj);\n    const isPlainObject = proto === Object.prototype || proto === null;\n    const isArray = Array.isArray(obj);\n\n    // If it's not a plain object or array, and it's not one of the special types below,\n    // return by reference (handles Observables, class instances, etc.)\n    if (!isPlainObject && !isArray && !(obj instanceof Map) && !(obj instanceof Set)) {\n        return obj;\n    }\n\n    // Handle Array\n    if (isArray) {\n        seen.add(obj as any);\n        return (obj as any[]).map((item) => cloneDeep(item, seen)) as any;\n    }\n\n    // Handle Map\n    if (obj instanceof Map) {\n        seen.add(obj as any);\n        const clonedMap = new Map();\n        obj.forEach((value, key) => {\n            clonedMap.set(cloneDeep(key, seen), cloneDeep(value, seen));\n        });\n        return clonedMap as any;\n    }\n\n    // Handle Set\n    if (obj instanceof Set) {\n        seen.add(obj as any);\n        const clonedSet = new Set();\n        obj.forEach((value) => {\n            clonedSet.add(cloneDeep(value, seen));\n        });\n        return clonedSet as any;\n    }\n\n    // Handle plain objects only\n    seen.add(obj as any);\n    const clonedObj = {} as T;\n    for (const key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n            const value = obj[key];\n            // Functions and symbols are copied by reference, not cloned\n            if (typeof value === 'function' || typeof value === 'symbol') {\n                (clonedObj as any)[key] = value;\n            } else {\n                (clonedObj as any)[key] = cloneDeep(value, seen);\n            }\n        }\n    }\n\n    return clonedObj;\n}\n\n/**\n * Deep merges two or more objects, with properties from source objects overwriting those in the target.\n * @param target The target object\n * @param sources The source objects\n * @returns The merged object\n */\nexport function merge<T>(target: T, ...sources: Partial<T>[]): T {\n    // Handle null or undefined target\n    if (target == null) {\n        target = {} as T;\n    }\n\n    const result = cloneDeep(target);\n\n    for (const source of sources) {\n        if (source != null) {\n            deepMergeInto(result, source);\n        }\n    }\n\n    return result;\n}\n\n/**\n * Helper function for deep merge\n */\nfunction deepMergeInto<T>(target: T, source: Partial<T>): void {\n    // Handle null or undefined target\n    if (target == null) {\n        return;\n    }\n\n    for (const key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n            const sourceValue = source[key];\n            const targetValue = target[key];\n\n            // Handle functions and primitives - copy by reference\n            if (typeof sourceValue === 'function' || typeof sourceValue !== 'object' || sourceValue === null) {\n                (target as any)[key] = sourceValue;\n            } else if (Array.isArray(sourceValue)) {\n                // Clone arrays\n                (target as any)[key] = cloneDeep(sourceValue);\n            } else if (\n                sourceValue instanceof Date ||\n                sourceValue instanceof RegExp ||\n                sourceValue instanceof Map ||\n                sourceValue instanceof Set\n            ) {\n                // Clone special objects\n                (target as any)[key] = cloneDeep(sourceValue);\n            } else if (targetValue && typeof targetValue === 'object' && !Array.isArray(targetValue)) {\n                // Recursively merge plain objects\n                deepMergeInto(targetValue, sourceValue as any);\n            } else {\n                // Clone plain objects (cloneDeep handles class instances like Observables)\n                (target as any)[key] = cloneDeep(sourceValue);\n            }\n        }\n    }\n}\n\n/**\n * Merges two objects with a customizer function.\n * @param target The target object\n * @param source The source object\n * @param customizer The function to customize assigned values\n * @returns The merged object\n */\nexport function mergeWith<T>(\n    target: T,\n    source: Partial<T>,\n    customizer: (targetValue: any, sourceValue: any, key: string) => any\n): T {\n    // Handle null or undefined target\n    if (target == null) {\n        target = {} as T;\n    }\n\n    const result = cloneDeep(target);\n\n    for (const key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n            const sourceValue = source[key];\n            const targetValue = result[key];\n            const customValue = customizer(targetValue, sourceValue, key);\n\n            if (customValue !== undefined) {\n                (result as any)[key] = customValue;\n            } else if (sourceValue && typeof sourceValue === 'object' && !Array.isArray(sourceValue)) {\n                if (targetValue && typeof targetValue === 'object' && !Array.isArray(targetValue)) {\n                    (result as any)[key] = mergeWith(targetValue, sourceValue as any, customizer);\n                } else {\n                    // cloneDeep handles class instances like Observables\n                    (result as any)[key] = cloneDeep(sourceValue);\n                }\n            } else {\n                (result as any)[key] = cloneDeep(sourceValue);\n            }\n        }\n    }\n\n    return result;\n}\n\n/**\n * Creates an array of unique values from the given array.\n * @param array The array to inspect\n * @returns The new array of unique values\n */\nexport function uniq<T>(array: T[]): T[] {\n    return Array.from(new Set(array));\n}\n\n/**\n * Creates an array of unique values from an array based on a property.\n * @param array The array to inspect\n * @param iteratee The iteratee invoked per element\n * @returns The new duplicate free array\n */\nexport function uniqBy<T>(array: T[], iteratee: ((item: T) => any) | string): T[] {\n    const seen = new Set();\n    const result: T[] = [];\n    const getter = typeof iteratee === 'function' ? iteratee : (item: T) => get(item, iteratee);\n\n    for (const item of array) {\n        const key = getter(item);\n        if (!seen.has(key)) {\n            seen.add(key);\n            result.push(item);\n        }\n    }\n\n    return result;\n}\n\n/**\n * Flattens an array a single level deep.\n * @param array The array to flatten\n * @returns The new flattened array\n */\nexport function flatten<T>(array: T[][]): T[] {\n    return array.flat();\n}\n\n/**\n * Creates an object composed of keys generated from the results of running each element through iteratee.\n * The corresponding value of each key is the number of times the key was returned by iteratee.\n * @param array The array to iterate over\n * @param iteratee The iteratee to transform keys\n * @returns The composed aggregate object\n */\nexport function countBy<T>(array: T[], iteratee: ((item: T) => any) | string): Record<string, number> {\n    const result: Record<string, number> = {};\n    const getter = typeof iteratee === 'function' ? iteratee : (item: T) => get(item, iteratee);\n\n    for (const item of array) {\n        const key = String(getter(item));\n        result[key] = (result[key] || 0) + 1;\n    }\n\n    return result;\n}\n\n/**\n * Concatenates arrays.\n * @param arrays The arrays to concatenate\n * @returns The new concatenated array\n */\nexport function concat<T>(...arrays: (T | T[])[]): T[] {\n    return ([] as T[]).concat(...arrays);\n}\n\n/**\n * Escapes HTML characters in a string.\n * Converts characters like <, >, &, \", and ' to their HTML entity equivalents.\n * @param str The string to escape\n * @returns The escaped string\n */\nexport function escape(str: string): string {\n    const div = document.createElement('div');\n    div.textContent = str;\n    return div.innerHTML;\n}\n","import { InjectionToken } from '@angular/core';\nimport { ModuleDeprecation } from '../interfaces/module-deprecation.interface';\n\nexport const ModuleDeprecations = new InjectionToken<ModuleDeprecation>('ModuleDeprecations');\n","import { FactorySansProvider, Provider } from '@angular/core';\nimport { ModuleDeprecations } from '../tokens/module-deprecations.token';\n\n/** Module deprecations provider */\nexport function moduleDeprecationsProvider(classRef: any): Provider {\n    return {\n        provide: ModuleDeprecations,\n        useClass: classRef,\n        multi: true\n    };\n}\n\n/** Module deprecations provider factory */\nexport function moduleDeprecationsFactory(factory: FactorySansProvider): Provider {\n    return {\n        provide: ModuleDeprecations,\n        ...factory,\n        multi: true\n    };\n}\n","const fileSizeMap = new Map([\n    ['KB', 1024],\n    ['MB', 1048576],\n    ['GB', 1073741824],\n    ['TB', 1099511627776]\n]);\n\n/** Parse file size to bytes */\nexport function parserFileSize(fileSize: string): number {\n    if (fileSize === '') {\n        return 0;\n    }\n\n    const sizes = fileSize.match(/[\\d.]+|\\D+/g);\n    if (sizes && sizes.length > 1) {\n        const size = Number(sizes[0].replace(/ +/g, ''));\n        const unit = sizes[1].replace(/ +/g, '').toUpperCase();\n        const unitSize = fileSizeMap.get(unit);\n\n        if (isNaN(size)) {\n            throw new Error('FileSizeError - Invalid File size please check.');\n        }\n        if (unit === 'B' || unit === 'BYTE' || unit === 'BYTES') {\n            return size;\n        }\n        if (!unitSize) {\n            throw new Error('FileSizeError - Invalid File size please check.');\n        } else {\n            return unitSize * size;\n        }\n    } else {\n        if (isNaN(Number(sizes))) {\n            throw new Error('FileSizeError - Invalid File size please check.');\n        }\n\n        return Number(sizes);\n    }\n}\n","import { ColorAccent } from '../datatypes';\n\n/** Get random number from 1 to 10. */\nexport function getRandomColorAccent(): ColorAccent {\n    return (Math.floor(Math.random() * 10) + 1) as ColorAccent;\n}\n","/**\n * Creates an array of numbers from 0 to n-1, optionally transformed by a map function.\n * Useful for iterating a fixed number of times in templates with `@for` or generating\n * transformed sequences.\n *\n * @param length The number of elements in the array\n * @param mapFn Optional function to transform each index into a value\n * @returns An array of numbers from 0 to n-1, or transformed values if mapFn is provided\n *\n * @example\n * // Simple iteration (returns [0, 1, 2])\n * range(3)\n *\n * // With transformation (returns ['Item 0', 'Item 1', 'Item 2'])\n * range(3, i => `Item ${i}`)\n *\n * // In component for template iteration:\n * readonly loadingRange = range(3);\n *\n * // In template:\n * @for (i of loadingRange; track i) {\n *   <div>Item {{ i }}</div>\n * }\n */\nexport function range<T = number>(length: number, mapFn: (index: number) => T = (i) => i as T): T[] {\n    return Array.from({ length: Math.max(0, length) }, (_, i) => mapFn(i));\n}\n","import { fromEvent, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n/**\n * RxJS wrapper for ResizeObserver class.\n * @param target HTML element to spy on.\n * @param options @see {ResizeObserverOptions}\n * @returns {Observable} with observer entries.\n */\nexport function resizeObservable(target: Element, options?: ResizeObserverOptions): Observable<ResizeObserverEntry[]> {\n    if ('ResizeObserver' in window) {\n        return new Observable((subscriber) => {\n            let animationFrame: number;\n            const ro = new ResizeObserver((entries) => {\n                animationFrame = window.requestAnimationFrame(() => {\n                    subscriber.next(entries);\n                });\n            });\n\n            ro.observe(target, options);\n\n            return function unsubscribe(): void {\n                if (animationFrame) {\n                    window.cancelAnimationFrame(animationFrame);\n                }\n                ro.unobserve(target);\n                ro.disconnect();\n            };\n        });\n    } else {\n        // If current browser does not support resizeObserver, rely on window resize and return empty array of items.\n        return fromEvent(window, 'resize').pipe(map(() => []));\n    }\n}\n","/**\n * Function used to scroll specified element by some distance\n *\n * @param containerElement     - Container element scrolled\n * @param distanceToScroll     - Distance of scroll in px\n * */\nexport function scrollTop(containerElement: Element, distanceToScroll: number): void {\n    // Check if scrollTo method is supported by current browser\n    if (containerElement.scrollTo && containerElement.scrollTo instanceof Function) {\n        containerElement.scrollTo({\n            top: distanceToScroll,\n            behavior: 'smooth'\n        });\n    } else {\n        containerElement.scrollTop = distanceToScroll;\n    }\n}\n","/** Generate a UUID v4 */\nexport function uuidv4(): string {\n    const modifier = 16;\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n        // eslint-disable-next-line no-bitwise\n        const r = (Math.random() * modifier) | 0,\n            // eslint-disable-next-line no-bitwise\n            v = c === 'x' ? r : (r & 0x3) | 0x8;\n        return v.toString(modifier);\n    });\n}\n","import { BACKSPACE, CONTROL, DELETE, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { DestroyRef, Directive, ElementRef, EventEmitter, Input, Output, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\nimport { KeyUtil } from '../../functions';\n\nexport interface AutoCompleteEvent {\n    term: string;\n    forceClose: boolean;\n}\n\n@Directive({\n    selector: '[fdkAutoComplete]',\n    standalone: true\n})\nexport class AutoCompleteDirective {\n    /** Values that will fill missing text in the input. */\n    @Input()\n    options: any[];\n\n    /**\n     * Input text, that is taken from ngModel of formControl,\n     * there has to be difference between native input value and model value\n     */\n    @Input()\n    inputText: string;\n\n    /** Whether the auto complete directive should be enabled */\n    @Input()\n    enable = true;\n\n    /** Display function. Accepts an object of the same type as the\n     * items passed to dropdownValues as argument, and outputs a string.\n     * An arrow function can be used to access the *this* keyword in the calling component.\n     * See search input examples for details. */\n    @Input()\n    displayFn = this._defaultDisplay;\n\n    /** Event thrown, when the auto ahead text is accepted */\n    @Output()\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    readonly onComplete: EventEmitter<AutoCompleteEvent> = new EventEmitter<AutoCompleteEvent>();\n\n    /** @hidden */\n    private readonly _completeKeys: number[] = [ENTER];\n\n    /** @hidden */\n    private readonly _fillKeys: number[] = [LEFT_ARROW, RIGHT_ARROW];\n\n    /** @hidden */\n    private readonly _stopKeys: number[] = [BACKSPACE, DELETE, ESCAPE];\n\n    /** @hidden */\n    private oldValue: string;\n\n    /** @hidden */\n    private lastKeyUpEvent: KeyboardEvent;\n\n    /** @hidden */\n    private _isComposing = false;\n\n    /**\n     * Tracks the intended user-typed value, derived from native `input` events.\n     * When Angular's NgModel re-pushes a stale value (e.g. after Ctrl+A → Delete),\n     * the DOM may contain the old model value when the user types the next character.\n     * We reconstruct the intended value using the cursor position and typed character.\n     */\n    private _lastInputEventValue: string | null = null;\n\n    /** @hidden */\n    private readonly _elementRef = inject(ElementRef);\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    constructor() {\n        /**\n         * Fixes #10710\n         * With IME input (e.g. Chinese), keyup events fire during composition before the final\n         * character is committed. The _isComposing flag suppresses autocomplete logic during\n         * composition, and compositionend syncs inputText with the committed native value.\n         */\n        const keyupEvent = fromEvent<KeyboardEvent>(this._elementRef.nativeElement, 'keyup');\n        const compositionStartEvent = fromEvent<CompositionEvent>(this._elementRef.nativeElement, 'compositionstart');\n        const compositionEndEvent = fromEvent<CompositionEvent>(this._elementRef.nativeElement, 'compositionend');\n\n        // Track the intended user-typed value. Uses the cursor position and typed character\n        // to reconstruct the value the user intended, independent of any NgModel re-push.\n        fromEvent<InputEvent>(this._elementRef.nativeElement, 'input')\n            .pipe(takeUntilDestroyed(this._destroyRef))\n            .subscribe((evt) => {\n                const el = this._elementRef.nativeElement;\n                const cursorPos = el.selectionStart ?? el.value.length;\n                if (evt.inputType === 'insertText' && evt.data) {\n                    // Cursor is after the inserted char. Intended value = previously tracked\n                    // prefix + new char. Handles the case where NgModel re-pushed a stale\n                    // value before this keystroke (e.g. \"Apple\" after Ctrl+A→Delete→\"B\").\n                    const prev = this._lastInputEventValue ?? '';\n                    this._lastInputEventValue = prev + evt.data;\n                } else {\n                    // Deletion, paste, or other input — use current DOM value at cursor.\n                    this._lastInputEventValue = el.value.substring(0, cursorPos);\n                }\n            });\n\n        keyupEvent.pipe(takeUntilDestroyed()).subscribe((evt) => this._handleKeyboardEvent(evt));\n\n        compositionStartEvent.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n            this._isComposing = true;\n        });\n\n        compositionEndEvent.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n            this._isComposing = false;\n            this.inputText = this._elementRef.nativeElement.value;\n        });\n    }\n\n    /** Matcher function for testing the str for a search term */\n    @Input()\n    matcher = (str: string, searchTerm: string): boolean => str.startsWith(searchTerm);\n\n    /** @hidden */\n    _handleKeyboardEvent(event: KeyboardEvent): void {\n        if (this.enable && !this._isComposing) {\n            if (KeyUtil.isKeyCode(event, this._stopKeys)) {\n                const el = this._elementRef.nativeElement;\n                if (el.selectionStart !== el.selectionEnd) {\n                    el.value = this.inputText;\n                }\n            } else if (KeyUtil.isKeyCode(event, this._completeKeys)) {\n                this._sendCompleteEvent(true);\n                this._moveIndicatorToLastCharacter();\n            } else if (KeyUtil.isKeyCode(event, this._fillKeys)) {\n                this._sendCompleteEvent(false);\n            } else if (!this._isControlKey(event)) {\n                const el = this._elementRef.nativeElement;\n                const hasSelection = el.selectionStart !== el.selectionEnd;\n\n                // Use the value from the last native `input` event as the authoritative\n                // user-typed value. Angular's NgModel may have re-written el.value with a\n                // stale model value (e.g. after Ctrl+A → Delete), but the native `input`\n                // event only fires on actual user input — not on programmatic writes.\n                const currentNativeValue = this._lastInputEventValue !== null ? this._lastInputEventValue : el.value;\n                // After consuming, keep the current value so the next `input` event's\n                // `insertText` accumulation has the right prefix.\n                this._lastInputEventValue = currentNativeValue;\n\n                if (hasSelection) {\n                    return;\n                }\n\n                if (!currentNativeValue) {\n                    return;\n                }\n\n                const effectiveInputText =\n                    this.inputText.length > currentNativeValue.length + 1 ||\n                    !this.inputText.toLocaleLowerCase().startsWith(currentNativeValue.toLocaleLowerCase())\n                        ? currentNativeValue\n                        : this.inputText;\n\n                if (!this._triggerTypeAhead()) {\n                    return;\n                }\n\n                this.oldValue = this.inputText;\n\n                const searchTerm = effectiveInputText || currentNativeValue;\n                const item = this.options.find((option) =>\n                    this.matcher(this.displayFn(option).toLocaleLowerCase(), searchTerm.toLocaleLowerCase())\n                );\n\n                if (item) {\n                    const displayedValue = this.displayFn(item);\n                    // Only autocomplete if the current native value matches the start of the found item\n                    if (displayedValue.toLocaleLowerCase().startsWith(currentNativeValue.toLocaleLowerCase())) {\n                        this._typeahead(displayedValue, currentNativeValue.length);\n                    }\n                }\n            }\n        }\n        this.lastKeyUpEvent = event;\n    }\n\n    /** @hidden */\n    private _typeahead(displayedValue: string, currentInputLength: number): void {\n        this._elementRef.nativeElement.value = displayedValue;\n        const selectionStartIndex = currentInputLength;\n        this._elementRef.nativeElement.setSelectionRange(selectionStartIndex, displayedValue.length);\n    }\n\n    /** @hidden */\n    private _isControlKey(event: KeyboardEvent): boolean {\n        return KeyUtil.isKeyCode(event, CONTROL) || event.ctrlKey;\n    }\n\n    /** @hidden */\n    private _defaultDisplay(value: any): string {\n        return value;\n    }\n\n    /** @hidden */\n    private _triggerTypeAhead(): boolean {\n        return !(\n            this.lastKeyUpEvent &&\n            KeyUtil.isKeyCode(this.lastKeyUpEvent, CONTROL) &&\n            this.inputText === this.oldValue\n        );\n    }\n\n    /** @hidden */\n    private _sendCompleteEvent(forceClose: boolean): void {\n        this.onComplete.emit({\n            term: this._elementRef.nativeElement.value,\n            forceClose\n        });\n    }\n\n    /** @hidden */\n    private _moveIndicatorToLastCharacter(): void {\n        const inputTextLength = this.inputText?.length ?? 0;\n        this._elementRef.nativeElement.setSelectionRange(inputTextLength, inputTextLength);\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { AutoCompleteDirective } from './auto-complete.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [AutoCompleteDirective],\n    exports: [AutoCompleteDirective],\n    declarations: []\n})\nexport class AutoCompleteModule {}\n","import { DestroyRef, inject } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n/**\n * Creates an observable that emits when the component is destroyed.\n * @param destroyRef\n */\nexport const destroyObservable = (destroyRef = inject(DestroyRef)): Observable<void> => {\n    const destroy$ = new Subject<void>();\n    destroyRef.onDestroy(() => destroy$.next());\n    return destroy$.asObservable();\n};\n","import { get } from '../functions/lodash-utils';\n\n/** @hidden */\ninterface DfsOptions<T> {\n    children: string | ((item: T) => Array<T>);\n    shouldVisit: (item: T) => boolean;\n    postOrder: boolean;\n}\n\n/** @hidden */\nconst _defaultDfsOptions: DfsOptions<any> = {\n    children: 'children',\n    shouldVisit: () => true,\n    postOrder: true\n};\n\n/** @hidden */\nfunction postOrderDfs<T>(): (item: T, callback: (item: T) => void, options: DfsOptions<T>) => void {\n    const iterator = (item: T, callback: (item: T) => void, options: DfsOptions<T>): void => {\n        if (options.shouldVisit(item)) {\n            const children =\n                typeof options.children === 'string' ? (get(item, options.children) as T[]) : options.children(item);\n            children.forEach((child: T) => iterator(child, callback, options));\n            callback(item);\n        }\n    };\n    return iterator;\n}\n\n/** @hidden */\nfunction preOrderDfs<T>(): (item: T, callback: (item: T) => void, options: DfsOptions<T>) => void {\n    const iterator = (item: T, callback: (item: T) => void, options: DfsOptions<T>): void => {\n        if (options.shouldVisit(item)) {\n            const children =\n                typeof options.children === 'string' ? (get(item, options.children) as T[]) : options.children(item);\n            callback(item);\n            children.forEach((child: T) => iterator(child, callback, options));\n        }\n    };\n    return iterator;\n}\n\n/**\n * Depth-first search algorithm, which traverses a tree/graph/tree-like structure.\n * callback is called for each item in the collection. The order of the callback calls\n * depends on the options. By default, the algorithm is post-order, which means that\n * the callback is called for each item after its children have been visited.\n *\n * @param collection\n * @param callback\n * @param options\n */\nexport function dfs<T>(collection: Array<T>, callback: (item: T) => void, options: Partial<DfsOptions<T>> = {}): void {\n    const mergedOptions = { ..._defaultDfsOptions, ...options } as DfsOptions<T>;\n    const iterator = mergedOptions.postOrder ? postOrderDfs<T>() : preOrderDfs<T>();\n    for (const item of collection) {\n        iterator(item, callback, mergedOptions);\n    }\n}\n","import { coerceElement } from '@angular/cdk/coercion';\nimport { ElementRef } from '@angular/core';\n\n/**\n * Retrieves native element from ElementRef.\n */\nexport function getNativeElement<T extends Element = HTMLElement>(\n    element: { elementRef: ElementRef<T> } | T | ElementRef<T>\n): T {\n    let coercible = element;\n    if (hasElementRef<T>(element)) {\n        coercible = element.elementRef;\n    }\n    return coerceElement(coercible as T | ElementRef<T>);\n}\n\n/**\n * Checks whether object has element reference in it.\n */\nexport function hasElementRef<T extends Element = HTMLElement>(\n    something: any\n): something is { elementRef: ElementRef<T> } {\n    return something && something['elementRef'] instanceof ElementRef;\n}\n","import { Observable } from 'rxjs';\n\n/**\n * Helper function check whether passed data is a JS object (including function).\n */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function isJsObject(obj: any): obj is object | Function {\n    return obj !== null && (typeof obj === 'function' || typeof obj === 'object');\n}\n\n/**\n * Helper function checks whether passed value is not empty.\n */\nexport function isPresent(obj: any): boolean {\n    return obj !== undefined && obj !== null;\n}\n\n/**\n * Helper function check whether passed value is empty.\n */\nexport function isBlank(obj: any): obj is undefined | null {\n    return obj === undefined || obj === null;\n}\n\n/**\n * Helper function checks whether passed value is a boolean.\n */\nexport function isBoolean(obj: any): obj is boolean {\n    return typeof obj === 'boolean';\n}\n\n/**\n * Helper function checks whether passed value is a valid number.\n */\nexport function isNumber(obj: any): obj is number {\n    return typeof obj === 'number';\n}\n\n/**\n * Helper function checks whether passed value is a string.\n */\nexport function isString(obj: any): obj is string {\n    return typeof obj === 'string';\n}\n\n/**\n * Helper function checks whether passed value is a function\n */\nexport function isFunction(obj: any): boolean {\n    return typeof obj === 'function';\n}\n\n/** @hidden */\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport function isType(obj: any): obj is Function {\n    return isFunction(obj);\n}\n\n/**\n * Helper function checks whether passed value is a record of `T` values.\n */\nexport function isStringMap<T = any>(obj: any): obj is Record<string, T> {\n    return typeof obj === 'object' && obj !== null;\n}\n\n/**\n * Helper function checks whether passed value is an `object`.\n */\nexport function isObject<T>(item: T): boolean {\n    return typeof item === 'object' && !Array.isArray(item) && item !== null;\n}\n\n/**\n * Helper function checks whether passed value is a promise.\n */\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/**\n * Helper function checks whether passed value is an Observable/Subscribable.\n */\nexport function isSubscribable<T = any>(obj: any | Observable<T>): obj is Observable<T> {\n    return !!obj && isFunction(obj.subscribe);\n}\n","import { Nullable } from '../models/nullable';\nimport { isNumber } from '../typecheck';\n\n/**\n * Utility type, that allows to track and select ranges of elements while using multi-selection.\n *\n * @usage\n * Imagine we have a simple list of checkboxes:\n * ```html\n * <input\n *  #checkboxInput\n *  *ngFor=\"let o of options; let idx = index\"\n *  type=\"checkbox\"\n *  [checked]=\"selectionModel.checked(o)\"\n *  (click)=\"toggle(idx, $event)\"\n *  >\n * ```\n * With the given layout the logic should be as follows:\n * ```typescript\n * export class YourComponent {\n *  options = ['a', 'b', 'c'];\n *  readonly selectionModel = new SelectionModel(true);\n *\n *  private readonly _rangeSelector = new RangeSelector();\n *\n *\n *  toggle(idx: number, event: PointerEvent): void {\n *      // getting the toggled value of the checkbox\n *      const toggledSelection = event.target.value;\n *\n *      // registering the selection of current checkbox\n *      this._rangeSelector.onRangeElementToggled(idx, event);\n *\n *      // Apply value to each element in range.\n *      // If checkbox was toggled without shift pressed or without previously selected one,\n *      // this method will select only it.\n *      this._rangeSelector.applyValueToEachInRange(idx => {\n *          if (toggledSelection) {\n *              this.selectionModel.select(options[idx]);\n *          } else {\n *              this.selectionModel.deselect(options[idx]);\n *          }\n *      });\n *  }\n * }\n * ```\n */\nexport class RangeSelector {\n    /** @hidden */\n    private _previousSelectedIndex: number | null = null;\n    /** @hidden */\n    private _state: RangeSelectionState | null;\n\n    /**\n     * Last registered selection state (either multiple or single).\n     * Is updated on each `onRangeElementClicked` invokation. Will be `null` initially or once `reset()` is called.\n     */\n    get lastRangeSelectionState(): RangeSelectionState | null {\n        return this._state ? { ...this._state } : null;\n    }\n\n    /**\n     * The method that should be used to register each checkbox toggle.\n     * Accepts two arguments: `index` and `event`. If none provided, will reset existing state.\n     * Otherwise will register current index as last checked.\n     *\n     * If toggling was done with \"shift\" pressed and there's a previously registered index, will register a range selection.\n     * At the same time if checkbox was toggled without shift pressed or without previously selected one, this method will select only it.\n     *\n     * After calling this method it's recommended to use `applyValueToEachInRange` to actually toggle each checkbox in range.\n     *\n     * See usage example on this class itself.\n     */\n    onRangeElementToggled(index?: number, event?: KeyboardEvent | MouseEvent | TouchEvent): RangeSelectionState | null {\n        if (\n            this._isNonNegativeInteger(this._previousSelectedIndex) &&\n            this._isNonNegativeInteger(index) &&\n            event?.shiftKey\n        ) {\n            this._state = {\n                isRangeSelection: true,\n                from: Math.min(this._previousSelectedIndex, index),\n                to: Math.max(this._previousSelectedIndex, index)\n            };\n            this._previousSelectedIndex = index;\n        } else if (this._isNonNegativeInteger(index)) {\n            this._state = { isRangeSelection: false, from: index, to: index };\n            this._previousSelectedIndex = index;\n        } else {\n            this.reset();\n        }\n\n        return this.lastRangeSelectionState;\n    }\n\n    /**\n     * Allows to apply selection to each item in selection range.\n     * Accepts a function to apply selection to each item by registered index.\n     *\n     * See usage example on this class itself.\n     */\n    applyValueToEachInRange(selectionMethod: (index: number) => void): void {\n        const state = this.lastRangeSelectionState;\n\n        if (!state) {\n            return;\n        }\n\n        if (this._isNonNegativeInteger(state?.from) && this._isNonNegativeInteger(state?.to)) {\n            for (let index = state.from; index <= state.to; index++) {\n                selectionMethod(index);\n            }\n        }\n    }\n\n    /** Resets selection state. Useful when the list of selectable items is changed (e.g. by filtering, sorting, page change) */\n    reset(): void {\n        this._state = null;\n        this._previousSelectedIndex = null;\n    }\n\n    /** @hidden */\n    private _isNonNegativeInteger(num: Nullable<number>): num is number {\n        return isNumber(num) && num >= 0;\n    }\n}\n\nexport interface RangeSelectionState {\n    isRangeSelection: boolean;\n    from: number;\n    to: number;\n}\n","const messages = new Set<string>();\n\n/** @hidden */\nexport function warnOnce(message: string): void {\n    if (!messages.has(message)) {\n        console.warn(message);\n        messages.add(message);\n    }\n}\n","import { Injectable, isDevMode } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilChanged, map, startWith } from 'rxjs/operators';\nimport { isCompactDensity } from '../functions/is-compact-density';\nimport { warnOnce } from '../helpers';\nimport { ContentDensity } from '../interfaces/content-density';\n\nexport const DEFAULT_CONTENT_DENSITY: ContentDensity = 'cozy';\n\n/**\n * Service taking care of ContentDensity\n */\n@Injectable()\nexport class ContentDensityService {\n    /** Content Density BehaviourSubject */\n    readonly contentDensity = new BehaviorSubject(DEFAULT_CONTENT_DENSITY);\n\n    /** @hidden */\n    constructor() {\n        if (isDevMode()) {\n            warnOnce(\n                `[Deprecated] ContentDensityService is deprecated and will be removed in the next major version.\n                 Please use ContentDensityControllerService instead, or use the ContentDensityModule forRoot method.`\n            );\n        }\n    }\n\n    /** @hidden */\n    get _contentDensityListener(): Observable<ContentDensity> {\n        return this.contentDensity.pipe(distinctUntilChanged(), startWith(this.contentDensity.getValue()));\n    }\n\n    /** @hidden */\n    get _isCompactDensity(): Observable<boolean> {\n        return this._contentDensityListener.pipe(map((density) => isCompactDensity(density)));\n    }\n}\n","import { Injectable } from '@angular/core';\nimport { createFocusTrap, FocusTrap, Options } from 'focus-trap';\nimport { uuidv4 } from '../functions/uuidv4-generator';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class FocusTrapService {\n    /** @hidden */\n    private _focusTrapInstances: Map<any, FocusTrap> = new Map();\n\n    /**\n     * Creates focus trap instance for defined element\n     * @param element Container for which to create focus trap\n     * @param userOptions Focus-trap specific configuration\n     * @returns {string} Unique ID of focus trap instance\n     */\n    createFocusTrap(\n        element: string | HTMLElement | SVGElement | (string | HTMLElement | SVGElement)[],\n        userOptions?: Options\n    ): string {\n        const uid = uuidv4();\n\n        const trap = createFocusTrap(element, userOptions);\n\n        this._focusTrapInstances.set(uid, trap);\n\n        this.activateFocusTrap(uid);\n\n        return uid;\n    }\n\n    /**\n     * Activates focus trap for defined ID\n     * @param id Unique ID of focus trap instance\n     */\n    activateFocusTrap(id: string): void {\n        if (!this._focusTrapExists(id)) {\n            return;\n        }\n\n        const trap = this.getFocusTrapInstance(id);\n\n        trap?.activate();\n    }\n\n    /**\n     * Deactivates focus trap for defined ID\n     * @param id Unique ID of focus trap instance\n     */\n    deactivateFocusTrap(id: string): void {\n        if (!this._focusTrapExists(id)) {\n            return;\n        }\n\n        const trap = this.getFocusTrapInstance(id);\n\n        trap?.deactivate();\n\n        this._focusTrapInstances.delete(id);\n    }\n\n    /**\n     * Pauses current focus trap.\n     */\n    pauseCurrentFocusTrap(): void {\n        if (this._focusTrapInstances.size === 0) {\n            return;\n        }\n\n        const trapItem = this._getLastTrapedItem();\n\n        trapItem?.pause();\n    }\n\n    /**\n     * Unpauses current focus trap.\n     */\n    unpauseCurrentFocusTrap(): void {\n        if (this._focusTrapInstances.size === 0) {\n            return;\n        }\n\n        const trapItem = this._getLastTrapedItem();\n\n        trapItem?.unpause();\n    }\n\n    /**\n     * Get focus trap instance by ID.\n     * @param id ID of the instance.\n     * @returns Focus trap instance if exists.\n     */\n    getFocusTrapInstance(id: string): FocusTrap | undefined {\n        return this._focusTrapInstances.get(id);\n    }\n\n    /** @hidden */\n    private _getLastTrapedItem(): FocusTrap | undefined {\n        const lastItem = Array.from(this._focusTrapInstances).pop();\n\n        return lastItem ? lastItem[1] : undefined;\n    }\n\n    /** @hidden */\n    private _focusTrapExists(id: string): boolean {\n        return this._focusTrapInstances.has(id);\n    }\n}\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { DOWN_ARROW, TAB, UP_ARROW, hasModifierKey } from '@angular/cdk/keycodes';\nimport { DestroyRef, Injectable, OnDestroy, QueryList, inject } from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Observable, Subject, merge } from 'rxjs';\nimport { filter, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { KeyUtil } from '../../functions';\nimport { destroyObservable } from '../../helpers/destroy-observable';\nimport { KeyboardSupportItemInterface } from '../../interfaces/keyboard-support-item.interface';\n\nexport type FocusEscapeDirection = 'up' | 'down';\n\n@Injectable()\nexport class KeyboardSupportService<T> implements OnDestroy {\n    /** Subject that is thrown, when focus escapes the list */\n    focusEscapeList = new Subject<FocusEscapeDirection>();\n\n    /** @hidden  */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** An RxJS Subject that will kill the data stream upon queryList changes (for unsubscribing)  */\n    private readonly _onRefresh$: Subject<void> = new Subject<void>();\n\n    /** @hidden */\n    private _keyManager: FocusKeyManager<T>;\n\n    /** @hidden */\n    get keyManager(): FocusKeyManager<T> {\n        return this._keyManager;\n    }\n\n    /** @hidden\n     * allow tab key navigation. default is true.\n     */\n    private _tabKeyNavigation = true;\n\n    /** @hidden */\n    setKeyboardService(\n        queryList: QueryList<KeyboardSupportItemInterface & T>,\n        wrap?: boolean,\n        tabKeyNavigation = true\n    ): void {\n        this._keyManager?.destroy();\n        this._tabKeyNavigation = tabKeyNavigation;\n        this._keyManager = new FocusKeyManager(queryList).withWrap(wrap).withHomeAndEnd();\n        queryList.changes\n            .pipe(startWith(0), takeUntilDestroyed(this._destroyRef))\n            .subscribe(() => this._refreshEscapeLogic(queryList));\n    }\n\n    /** @hidden */\n    onKeyDown(event: KeyboardEvent): void {\n        this._keyManager.onKeydown(event);\n        if (KeyUtil.isKeyCode(event, TAB)) {\n            if (KeyUtil.isKeyCode(event, TAB) && this._tabKeyNavigation) {\n                event.preventDefault();\n                hasModifierKey(event, 'shiftKey')\n                    ? this.keyManager.setPreviousItemActive()\n                    : this.keyManager.setNextItemActive();\n            }\n        }\n    }\n\n    /** Destroys KeyboardSupportService dependencies */\n    ngOnDestroy(): void {\n        this._keyManager?.destroy();\n    }\n\n    /** @hidden */\n    private _refreshEscapeLogic(queryList: QueryList<KeyboardSupportItemInterface & T>): void {\n        const createEscapeListener = (\n            listItem: KeyboardSupportItemInterface & T,\n            onKeyCode: number,\n            escapeDirection: FocusEscapeDirection\n        ): void => {\n            // Convert OutputEmitterRef to observable\n            const keyDown$: Observable<KeyboardEvent> = outputToObservable(listItem.keyDown);\n\n            keyDown$\n                .pipe(\n                    takeUntil(unsubscribe$),\n                    filter((event) => KeyUtil.isKeyCode(event, onKeyCode)),\n                    tap((event) => event.preventDefault())\n                )\n                .subscribe(() => this.focusEscapeList.next(escapeDirection));\n        };\n\n        /** Finish all of the streams, form before */\n        this._onRefresh$.next();\n\n        const unsubscribe$ = merge(this._onRefresh$, destroyObservable(this._destroyRef));\n\n        if (queryList.length) {\n            createEscapeListener(queryList.last, DOWN_ARROW, 'down');\n            createEscapeListener(queryList.first, UP_ARROW, 'up');\n        }\n    }\n}\n","import { Injectable } from '@angular/core';\n\nclass MockStorage {\n    readonly length: number;\n\n    // eslint-disable-next-line\n    key(index: number): any {}\n\n    clear(): void {}\n\n    // eslint-disable-next-line\n    getItem(key: string): any {}\n\n    // eslint-disable-next-line\n    removeItem(key: string): void {}\n\n    // eslint-disable-next-line\n    setItem(key: string, value: string): void {}\n}\n\n@Injectable({ providedIn: 'root' })\nexport class LocalStorageService {\n    /** @hidden */\n    private _storage: Storage;\n\n    /** @hidden */\n    constructor() {\n        typeof localStorage !== 'undefined' ? (this._storage = localStorage) : (this._storage = new MockStorage());\n    }\n\n    /** Get item from local storage. */\n    get(key: string): any {\n        const value = this._storage.getItem(key);\n        if (value) {\n            return JSON.parse(value);\n        }\n        return null;\n    }\n\n    /** Set item in local storage. */\n    set(key: string, value: any): void {\n        this._storage.setItem(key, JSON.stringify(value));\n    }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { MutationObserverFactory } from '@angular/cdk/observers';\nimport { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Observer, Subject } from 'rxjs';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class AttributeObserver implements OnDestroy {\n    /** @Hidden */\n    private readonly _observedElements = new Map<\n        Element,\n        {\n            observer: MutationObserver | null;\n            stream: Subject<MutationRecord[]>;\n            count: number;\n        }\n    >();\n\n    /** @hidden */\n    constructor(private _mutationObserverFactory: MutationObserverFactory) {}\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n    }\n\n    /** @Hidden */\n    observe(elementOrRef: Element | ElementRef<Element> | HasElementRef<Element>): Observable<MutationRecord[]> {\n        const element = getNativeElement(elementOrRef);\n        return new Observable((observer: Observer<MutationRecord[]>) => {\n            const stream = this._observeElement(element);\n            const subscription = stream.subscribe(observer);\n\n            return () => {\n                subscription.unsubscribe();\n                this._unobserveElement(element);\n            };\n        });\n    }\n\n    /** @Hidden */\n    unobserve(element: HasElementRef<Element> | Element | ElementRef<Element>): void {\n        this._unobserveElement(getNativeElement(element));\n    }\n\n    /** @hidden */\n    private _observeElement(element: Element): Subject<MutationRecord[]> {\n        if (!this._observedElements.has(element)) {\n            const stream = new Subject<MutationRecord[]>();\n            const observer = this._mutationObserverFactory.create((mutations) => stream.next(mutations));\n            if (observer) {\n                observer.observe(element, {\n                    attributes: true\n                });\n            }\n            this._observedElements.set(element, { observer, stream, count: 1 });\n        } else {\n            this._observedElements.get(element)!.count++;\n        }\n        return this._observedElements.get(element)!.stream;\n    }\n\n    /** @Hidden */\n    private _unobserveElement(element: Element): void {\n        if (this._observedElements.has(element)) {\n            this._observedElements.get(element)!.count--;\n            if (!this._observedElements.get(element)!.count) {\n                this._cleanupObserver(element);\n            }\n        }\n    }\n\n    /** @hidden */\n    private _cleanupObserver(element: Element): void {\n        if (this._observedElements.has(element)) {\n            const { observer, stream } = this._observedElements.get(element)!;\n            if (observer) {\n                observer.disconnect();\n            }\n            stream.complete();\n            this._observedElements.delete(element);\n        }\n    }\n}\n","import { coerceElement } from '@angular/cdk/coercion';\nimport { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Observer, Subject } from 'rxjs';\n\ninterface ObservedElement {\n    observer: ResizeObserver | null;\n    readonly stream: Subject<ResizeObserverEntry[]>;\n    count: number;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverFactory {\n    /** Factory to create ResizeObserver if it's present in browser.  */\n    create(callback: ResizeObserverCallback): ResizeObserver | null {\n        return typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(callback);\n    }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverService implements OnDestroy {\n    /** @hidden */\n    private _observedElements = new Map<Element, ObservedElement>();\n\n    /** @hidden */\n    constructor(private _resizeObserverFactory: ResizeObserverFactory) {}\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n    }\n\n    /** Observe the given element and emit whenever its size changes. */\n    observe(elementOrRef: Element | ElementRef<Element>): Observable<ResizeObserverEntry[]> {\n        const element = coerceElement(elementOrRef);\n\n        return new Observable((observer: Observer<ResizeObserverEntry[]>) => {\n            const stream = this._observeElement(element);\n            const subscription = stream?.subscribe(observer);\n\n            return () => {\n                subscription?.unsubscribe();\n                this._unobserveElement(element);\n            };\n        });\n    }\n\n    /**\n     * Observes the given element by using the existing MutationObserver if available, or creating a\n     * new one if not.\n     */\n    private _observeElement(element: Element): Subject<ResizeObserverEntry[]> | undefined {\n        let observedElement = this._observedElements.get(element);\n\n        if (!observedElement) {\n            const stream = new Subject<ResizeObserverEntry[]>();\n            const observer = this._resizeObserverFactory.create((mutations) => stream.next(mutations));\n            if (observer) {\n                observer.observe(element);\n            }\n            observedElement = { observer, stream, count: 0 };\n            this._observedElements.set(element, observedElement);\n        }\n        observedElement.count++;\n        return observedElement?.stream;\n    }\n\n    /**\n     * Un-observes the given element and cleans up the underlying MutationObserver if nobody else is\n     * observing this element.\n     */\n    private _unobserveElement(element: Element): void {\n        const observedElement = this._observedElements.get(element);\n        if (!observedElement) {\n            return;\n        }\n\n        if (--observedElement.count) {\n            return;\n        }\n        this._cleanupObserver(element);\n    }\n\n    /** Clean up the underlying MutationObserver for the specified element. */\n    private _cleanupObserver(element: Element): void {\n        const observedElement = this._observedElements.get(element);\n\n        if (!observedElement) {\n            return;\n        }\n        const { observer, stream } = observedElement;\n        if (observer) {\n            observer.disconnect();\n        }\n        stream.complete();\n        this._observedElements.delete(element);\n    }\n}\n","import { inject, Injectable, InjectionToken, signal, WritableSignal } from '@angular/core';\n\n/**\n * Default RTL (Right-to-Left) language codes.\n *\n * Note: For Kurdish, we use 'ckb' (Central Kurdish/Sorani) which uses Arabic script.\n * The generic 'ku' code is not included as Kurmanji Kurdish uses Latin script (LTR).\n */\nconst DefaultRtlLanguages = [\n    'ar', // Arabic\n    'arc', // Aramaic\n    'azb', // South Azerbaijani\n    'bal', // Balochi\n    'ckb', // Central Kurdish (Sorani)\n    'dv', // Divehi (Maldivian)\n    'fa', // Persian (Farsi)\n    'glk', // Gilaki\n    'he', // Hebrew\n    'khw', // Khowar\n    'ks', // Kashmiri\n    'mzn', // Mazanderani\n    'nqo', // N'Ko\n    'pnb', // Western Punjabi (Shahmukhi)\n    'ps', // Pashto\n    'sd', // Sindhi\n    'syr', // Syriac\n    'ug', // Uyghur\n    'ur', // Urdu\n    'yi' // Yiddish\n];\n\n/** Injection token for overriding RTL languages. */\nexport const RTL_LANGUAGE = new InjectionToken<string[]>('RtlLanguage');\n\n/**\n * Service for managing RTL (Right-to-Left) state.\n *\n * Uses signals for reactive state management and is fully compatible with zoneless change detection.\n * The language list is used to determine if RTL should be enabled at startup based on the browser's language.\n * Users can override the default RTL languages by providing the `RTL_LANGUAGE` injection token.\n *\n * @example\n * ```typescript\n * // Reading RTL state\n * readonly isRtl = computed(() => this._rtlService.rtl());\n *\n * // Updating RTL state\n * this._rtlService.rtl.set(true);\n * ```\n */\n@Injectable()\nexport class RtlService {\n    /**\n     * Writable signal for RTL state.\n     *\n     * Read the current value: `rtl()`\n     * Set a new value: `rtl.set(value)`\n     * Update based on current value: `rtl.update(current => !current)`\n     */\n    readonly rtl: WritableSignal<boolean>;\n\n    /**\n     * Signal for RTL value.\n     * @deprecated Use `rtl()` instead. This alias will be removed in a future version.\n     */\n    get rtlSignal(): WritableSignal<boolean> {\n        return this.rtl;\n    }\n\n    /** @hidden */\n    private readonly _injectedRtlLanguages = inject(RTL_LANGUAGE, { optional: true });\n\n    constructor() {\n        const rtlLanguages = this._injectedRtlLanguages || DefaultRtlLanguages;\n        const isRtlLanguage = rtlLanguages.some((language) => navigator.language.includes(language));\n\n        this.rtl = signal(isRtlLanguage);\n    }\n}\n","import { InteractivityChecker } from '@angular/cdk/a11y';\n\nimport { DOCUMENT, Inject, Injectable, Optional } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class TabbableElementService {\n    /** @hidden */\n    constructor(\n        private readonly _checker: InteractivityChecker,\n        @Optional() @Inject(DOCUMENT) private readonly _document: Document | null\n    ) {}\n\n    /** Get the first tabbable element from a DOM subtree (inclusive). */\n    getTabbableElement(root: HTMLElement, focusLastElement = false, skipSelf = false): HTMLElement | null {\n        if (!skipSelf && this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n            return root;\n        }\n\n        // Iterate in DOM order. Note that IE doesn't have `children` for SVG, so we fall\n        // back to `childNodes` which includes text nodes, comments etc.\n        const rootChildren = root.children || root.childNodes;\n\n        const children = focusLastElement ? Array.from(rootChildren).reverse() : rootChildren;\n\n        for (let i = 0; i < children.length; i++) {\n            const tabbableChild =\n                children[i].nodeType === this._document?.ELEMENT_NODE\n                    ? this.getTabbableElement(children[i] as HTMLElement, focusLastElement)\n                    : null;\n\n            if (tabbableChild) {\n                return tabbableChild;\n            }\n        }\n\n        return null;\n    }\n}\n","import { ViewportRuler } from '@angular/cdk/overlay';\nimport { inject, InjectionToken } from '@angular/core';\nimport { map, Observable } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\n\n/**\n * Injection token for the viewport size observable.\n * Emits the viewport size in pixels, which are outputted by the ViewportRuler\n * from @angular/cdk/overlay.\n */\nexport const ViewportSizeObservable = new InjectionToken<Observable<number>>('ViewportSizeObservable', {\n    providedIn: 'root',\n    factory: () => {\n        const viewportRuler = inject(ViewportRuler);\n        return viewportRuler\n            .change(50)\n            .pipe(map((e) => (e.target as Window).innerWidth))\n            .pipe(startWith(window.innerWidth));\n    }\n});\n","export const ResponsiveBreakpoints = {\n    S: 600,\n    M: 1024,\n    L: 1440\n} as const;\n\ntype breakpointName = keyof typeof ResponsiveBreakpoints | 'XL';\n\nexport type BreakpointName = Lowercase<breakpointName> | Uppercase<breakpointName>;\n\n/** @hidden */\nexport function getBreakpointName(width: number): breakpointName {\n    if (width < ResponsiveBreakpoints.S) {\n        return 'S';\n    }\n    if (width < ResponsiveBreakpoints.M) {\n        return 'M';\n    }\n    if (width < ResponsiveBreakpoints.L) {\n        return 'L';\n    }\n    return 'XL';\n}\n","/* eslint-disable @angular-eslint/no-input-rename */\nimport { coerceElement } from '@angular/cdk/coercion';\nimport {\n    AfterViewInit,\n    DestroyRef,\n    Directive,\n    ElementRef,\n    EmbeddedViewRef,\n    Input,\n    NgModule,\n    OnChanges,\n    TemplateRef,\n    ViewContainerRef,\n    booleanAttribute,\n    inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, Subject, combineLatest } from 'rxjs';\nimport { finalize, map, startWith, switchMap, tap } from 'rxjs/operators';\nimport { ResizeObserverService } from '../../services';\nimport { ViewportSizeObservable } from '../../tokens/viewport-size.observable';\nimport { BreakpointName, getBreakpointName } from './responsive-breakpoints';\n\n/**\n * Directive to show/hide element on specific breakpoint or range of window width.\n * Uses native ngIf directive to show/hide element.\n */\n@Directive({\n    selector:\n        '[fdkBreakpoint], [fdkBreakpointS], [fdkBreakpointM], [fdkBreakpointL], [fdkBreakpointXL], [fdkBreakpointLt], [fdkBreakpointGt]',\n    standalone: true\n})\nexport class BreakpointDirective implements OnChanges, AfterViewInit {\n    /**\n     * Provide list of the breakpoints to show element on.\n     * */\n    @Input()\n    set fdkBreakpoint(value: BreakpointName[]) {\n        const providedValues = value.map((v) => v.toLowerCase());\n        this.showOnS = providedValues.includes('s');\n        this.showOnM = providedValues.includes('m');\n        this.showOnL = providedValues.includes('l');\n        this.showOnXL = providedValues.includes('xl');\n    }\n\n    /**\n     * Show element on S breakpoint.\n     * S - 0 - 599px\n     * */\n    @Input({ alias: 'fdkBreakpointS', transform: booleanAttribute })\n    showOnS = false;\n\n    /**\n     * Show element on M breakpoint.\n     * M - 0 - 1023px\n     * */\n    @Input({ alias: 'fdkBreakpointM', transform: booleanAttribute })\n    showOnM = false;\n\n    /**\n     * Show element on L breakpoint.\n     * L - 0 - 1439px\n     * */\n    @Input({ alias: 'fdkBreakpointL', transform: booleanAttribute })\n    showOnL = false;\n\n    /**\n     * Show element on XL breakpoint.\n     *  */\n    @Input({ alias: 'fdkBreakpointXL', transform: booleanAttribute })\n    showOnXL = false;\n\n    /**\n     * Show element on breakpoint less than provided value.\n     * */\n    @Input()\n    fdkBreakpointLt: number;\n\n    /**\n     * Show element on breakpoint greater than provided value.\n     *  */\n    @Input()\n    fdkBreakpointGt: number;\n\n    /**\n     * Observe element width changes.\n     */\n    @Input('fdkBreakpointObserve')\n    set observationSource(value: HTMLElement | ElementRef<HTMLElement>) {\n        if (!value) {\n            this._sizeObservable$.next(this.viewportSize$);\n            return;\n        }\n        const element = coerceElement(value);\n        this._sizeObservable$.next(\n            this._resizeObserverService.observe(value).pipe(\n                map(() => element.offsetWidth),\n                startWith(element.offsetWidth)\n            )\n        );\n    }\n\n    /** @hidden */\n    templateViewRef?: EmbeddedViewRef<unknown>;\n\n    /** @hidden */\n    onChanges$ = new Subject<void>();\n\n    /** @hidden */\n    _sizeObservable$: BehaviorSubject<Observable<number>> = new BehaviorSubject<Observable<number>>(\n        inject(ViewportSizeObservable)\n    );\n\n    /** @hidden */\n    private viewportSize$ = inject(ViewportSizeObservable);\n\n    /** @hidden */\n    private _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private _resizeObserverService = inject(ResizeObserverService);\n\n    /** @hidden */\n    constructor(\n        private readonly templateRef: TemplateRef<any>,\n        private readonly viewContainer: ViewContainerRef\n    ) {}\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        combineLatest([this._sizeObservable$.pipe(switchMap((obs$) => obs$)), this.onChanges$.pipe(startWith(void 0))])\n            .pipe(\n                map(([w]) => [w, getBreakpointName(w)] as const),\n                map(([width, breakpointName]) => this._shouldShow(width, breakpointName)),\n                tap((shouldShow) => {\n                    if (shouldShow) {\n                        if (!this.templateViewRef) {\n                            this.viewContainer.clear();\n                            this.templateViewRef = this.viewContainer.createEmbeddedView(this.templateRef);\n                            this.templateViewRef.detectChanges();\n                        }\n                    } else {\n                        this.viewContainer.clear();\n                        this.templateViewRef = undefined;\n                    }\n                }),\n                takeUntilDestroyed(this._destroyRef),\n                finalize(() => {\n                    this.viewContainer.clear();\n                    this.templateViewRef = undefined;\n                })\n            )\n            .subscribe();\n    }\n\n    /** @hidden */\n    ngOnChanges(): void {\n        this.onChanges$.next();\n    }\n\n    /** @hidden */\n    private _shouldShow(width: number, currentBreakpoint: BreakpointName): boolean {\n        const shouldShowOnBreakpoints = [\n            this.showOnS && 'S',\n            this.showOnM && 'M',\n            this.showOnL && 'L',\n            this.showOnXL && 'XL'\n        ].filter(Boolean);\n        const shouldShow = shouldShowOnBreakpoints.includes(currentBreakpoint);\n        if (this.fdkBreakpointLt) {\n            return width < this.fdkBreakpointLt;\n        }\n        if (this.fdkBreakpointGt) {\n            return width > this.fdkBreakpointGt;\n        }\n        return shouldShow;\n    }\n}\n\n@NgModule({\n    imports: [BreakpointDirective],\n    exports: [BreakpointDirective]\n})\nexport class BreakpointModule {}\n","import { DestroyRef, Directive, ElementRef, inject, output, Renderer2 } from '@angular/core';\nimport { fromEvent, merge, Subject } from 'rxjs';\n\n@Directive({\n    selector: '[fdkClicked]',\n    standalone: true\n})\nexport class ClickedDirective {\n    /**\n     * Event name.\n     */\n    static eventName = 'fdkClicked';\n\n    /**\n     * Event emitted when user either clicks with mouse, or\n     * clicks on space or enter keys\n     */\n    readonly fdkClicked = output<MouseEvent | KeyboardEvent>();\n\n    /** @hidden */\n    constructor() {\n        const { nativeElement: element } = inject<ElementRef<HTMLElement>>(ElementRef);\n        const renderer = inject(Renderer2);\n        const destroyRef = inject(DestroyRef);\n        const enter$ = new Subject<KeyboardEvent>();\n        const space$ = new Subject<KeyboardEvent>();\n\n        destroyRef.onDestroy(renderer.listen(element, 'keydown.enter', (e) => enter$.next(e)));\n        destroyRef.onDestroy(renderer.listen(element, 'keydown.space', (e) => space$.next(e)));\n\n        destroyRef.onDestroy(() => {\n            enter$.complete();\n            space$.complete();\n        });\n\n        // Subscribe to merged events and emit through output\n        const subscription = merge(fromEvent<MouseEvent>(element, 'click'), enter$, space$).subscribe((event) => {\n            this.fdkClicked.emit(event);\n        });\n        destroyRef.onDestroy(() => subscription.unsubscribe());\n    }\n}\n","import { ENTER, SPACE } from '@angular/cdk/keycodes';\n\nimport { DOCUMENT, Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { ClickedDirective } from './clicked.directive';\n\ntype EventHandlerFunction = ($event: Event) => void;\ntype HandlerRemoveFunction = () => void;\n\n/**\n * @deprecated\n * No need to use it anymore. Use ClickedDirective directly instead.\n */\n@Injectable()\nexport class ClickedEventPlugin {\n    /** @hidden */\n    constructor(\n        @Inject(DOCUMENT) private document: Document,\n        @Inject(PLATFORM_ID) private platformId: any\n    ) {\n        console.warn(\n            `ClickedEventPlugin is deprecated and will be removed in the next major release. Use ClickedDirective instead.`\n        );\n    }\n\n    /** @hidden */\n    addEventListener(element: HTMLElement, eventName: string, handler: EventHandlerFunction): ($event: Event) => void {\n        return this._setupEventBinding(element, handler);\n    }\n\n    /** @hidden */\n    addGlobalEventListener(\n        higherOrderElement: string,\n        eventName: string,\n        handler: EventHandlerFunction\n    ): HandlerRemoveFunction {\n        const target = this._parseHigherOrderElement(higherOrderElement);\n        return this._setupEventBinding(target, handler);\n    }\n\n    /** @hidden */\n    supports(eventName: string): boolean {\n        return eventName === ClickedDirective.eventName;\n    }\n\n    /** @hidden */\n    private _parseHigherOrderElement(selector: string): EventTarget {\n        if (this.platformId !== 'browser') {\n            return this.document;\n        }\n        switch (selector) {\n            case 'window':\n                return window;\n            case 'document':\n                return document;\n            case 'body':\n                return document.body;\n            default:\n                throw new Error(`Element selector [${selector}] not supported.`);\n        }\n    }\n\n    /** @hidden */\n    private _setupEventBinding(target: EventTarget, handler: EventHandlerFunction): HandlerRemoveFunction {\n        const addProxyFunction = (): void => {\n            target.addEventListener('click', proxyFunction, false);\n            target.addEventListener('keydown', proxyFunction, false);\n        };\n\n        const removeProxyFunction = (): void => {\n            target.removeEventListener('click', proxyFunction, false);\n            target.removeEventListener('keydown', proxyFunction, false);\n        };\n\n        const proxyFunction = (event: Event | MouseEvent | KeyboardEvent): void => {\n            if (event instanceof KeyboardEvent) {\n                if (event.keyCode !== ENTER && event.keyCode !== SPACE) {\n                    return;\n                }\n            }\n            handler(event);\n        };\n\n        addProxyFunction();\n\n        return removeProxyFunction;\n    }\n}\n","import { InjectionToken, isDevMode, Provider } from '@angular/core';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\nimport { ClickedEventPlugin } from './clicked-event.plugin';\n\n/**\n * @deprecated\n * ClickedBehaviorModule is deprecated and will be removed in the next major release. Use ClickedDirective instead.\n */\nexport const ClickedBehaviorModuleForRootLoadedOnce = new InjectionToken<boolean>(\n    'Checking Module providers had been loaded',\n    { factory: () => false }\n);\n\n/**\n * Provides ClickedEventPlugin to the application\n * @deprecated\n */\nexport function provideFdkClicked(): Provider[] {\n    if (isDevMode()) {\n        console.warn(\n            `provideFdkClicked() is deprecated and will be removed in the next major release. Use ClickedDirective instead.`\n        );\n    }\n    return [\n        {\n            provide: EVENT_MANAGER_PLUGINS,\n            useClass: ClickedEventPlugin,\n            multi: true\n        },\n        {\n            provide: ClickedBehaviorModuleForRootLoadedOnce,\n            useValue: true\n        }\n    ];\n}\n","import { isDevMode, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ClickedDirective } from './clicked.directive';\nimport { provideFdkClicked } from './provide-fdk-clicked';\n\n/**\n * @deprecated\n * ClickedBehaviorModule is deprecated and will be removed in the next major release. Use ClickedDirective instead.\n */\n@NgModule({\n    imports: [ClickedDirective],\n    exports: [ClickedDirective]\n})\nexport class ClickedBehaviorModule {\n    /** @hidden */\n    constructor() {\n        console.warn(\n            `ClickedBehaviorModule is deprecated and will be removed in the next major release. Use ClickedDirective instead.`\n        );\n    }\n    /** @hidden */\n    static forRoot(): ModuleWithProviders<ClickedBehaviorModule> {\n        if (isDevMode()) {\n            console.warn(\n                `ClickedBehaviorModule.forRoot() is deprecated and will be removed in the next major release. Use ClickedDirective instead.`\n            );\n        }\n        return {\n            ngModule: ClickedBehaviorModule,\n            providers: [provideFdkClicked()]\n        };\n    }\n}\n","import { ElementRef, inject, Renderer2 } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n/**\n * Returns Observable that emits when element is clicked. Uses Renderer2 to listen to events.\n * @param element\n * @param renderer\n */\nexport function elementClick$(\n    element: ElementRef<HTMLElement> | HTMLElement,\n    renderer: Renderer2 = inject(Renderer2)\n): Observable<MouseEvent | KeyboardEvent> {\n    return new Observable<MouseEvent | KeyboardEvent>((observer) => {\n        const cleanups: (() => void)[] = [\n            renderer.listen(element, 'click', (event) => observer.next(event)),\n            renderer.listen(element, 'keydown.enter', (event) => observer.next(event)),\n            renderer.listen(element, 'keydown.space', (event) => {\n                event.preventDefault();\n                observer.next(event);\n            })\n        ];\n        return () => cleanups.forEach((cleanup) => cleanup());\n    });\n}\n","import { ElementRef, Inject, Injectable, OnDestroy, Renderer2 } from '@angular/core';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\nimport { Subject } from 'rxjs';\nimport { ClickedEventPlugin } from './clicked-event.plugin';\nimport { ClickedDirective } from './clicked.directive';\n\n@Injectable()\nexport class FdkClickedProvider extends Subject<MouseEvent | KeyboardEvent> implements OnDestroy {\n    /** @hidden */\n    private _preventDefault = true;\n    /** @hidden */\n    private _listeners!: Array<() => void>;\n    /** @hidden */\n    private readonly _fdkClickedEventManagerPluginLoaded: boolean;\n\n    /** @hidden */\n    constructor(\n        private readonly _elementRef: ElementRef<Element>,\n        private readonly _renderer: Renderer2,\n        @Inject(EVENT_MANAGER_PLUGINS) eventManagerPlugins: any[]\n    ) {\n        super();\n        this._fdkClickedEventManagerPluginLoaded = eventManagerPlugins.some((em) => em instanceof ClickedEventPlugin);\n        this._initialize();\n    }\n\n    /** @hidden */\n    setPreventDefault(val: boolean): void {\n        this._preventDefault = val;\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._listeners.forEach((d) => d());\n        this.complete();\n    }\n\n    /** @hidden */\n    private _initialize(): void {\n        const eventsList: string[] = this._fdkClickedEventManagerPluginLoaded\n            ? [ClickedDirective.eventName]\n            : ['click', 'keydown.enter', 'keydown.space'];\n        this._listeners = eventsList.map((eventName) =>\n            this._renderer.listen(this._elementRef.nativeElement, eventName, (event: MouseEvent | KeyboardEvent) => {\n                if (this._preventDefault) {\n                    event.preventDefault();\n                }\n                this.next(event);\n            })\n        );\n    }\n}\n","import { InjectionToken } from '@angular/core';\nimport { DisabledBehavior } from './disabled-behavior.interface';\n\nexport const FDK_DISABLED_DIRECTIVE = new InjectionToken<DisabledBehavior>('Disabled directive token');\n","import { ElementRef } from '@angular/core';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\n\n/** @hidden */\nexport function setDisabledState(\n    element: HasElementRef<Element> | Element | ElementRef<Element>,\n    isDisabled: boolean,\n    disabledClass: string,\n    addDisabledClass: boolean\n): void {\n    const htmlElement = getNativeElement(element);\n    if (isDisabled) {\n        if (addDisabledClass) {\n            htmlElement.classList.add(disabledClass);\n        }\n        htmlElement.setAttribute('disabled', '');\n        htmlElement.setAttribute('aria-disabled', 'true');\n    } else {\n        htmlElement.classList.remove(disabledClass);\n        htmlElement.removeAttribute('disabled');\n        htmlElement.removeAttribute('aria-disabled');\n    }\n}\n","import { DestroyRef, Directive, ElementRef, booleanAttribute, effect, input } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { FdkClickedProvider } from '../clicked';\nimport { DisabledBehavior } from './disabled-behavior.interface';\nimport { DisabledViewModifier } from './disabled-view-modifier.interface';\nimport { FDK_DISABLED_DIRECTIVE } from './fdk-disabled.token';\nimport { setDisabledState } from './set-disabled-state';\n\n@Directive({\n    selector: '[fdkDisabled]',\n    standalone: true,\n    providers: [\n        {\n            provide: FDK_DISABLED_DIRECTIVE,\n            useExisting: DisabledBehaviorDirective\n        },\n        FdkClickedProvider\n    ]\n})\nexport class DisabledBehaviorDirective\n    extends ReplaySubject<boolean>\n    implements DisabledBehavior, DisabledViewModifier\n{\n    /**\n     * Whether the element is disabled.\n     */\n    readonly fdkDisabledInput = input(false, { alias: 'fdkDisabled', transform: booleanAttribute });\n\n    /**\n     * Whether to add `disabledClass` class to the element.\n     */\n    readonly addDisabledClass = input(true, { transform: booleanAttribute });\n\n    /**\n     * Disabled css class to apply to the element.\n     */\n    readonly disabledClass = input('is-disabled');\n\n    /**\n     * Getter for fdkDisabled to maintain interface compatibility.\n     */\n    get fdkDisabled(): boolean {\n        return this.fdkDisabledInput();\n    }\n\n    /** @hidden */\n    private _previousDisabledState = false;\n\n    /** @hidden */\n    constructor(\n        private _elementRef: ElementRef<HTMLElement>,\n        private _destroyRef: DestroyRef,\n        private _clicked: FdkClickedProvider\n    ) {\n        super(1);\n        this._destroyRef.onDestroy(() => this.complete());\n\n        // React to disabled state changes\n        effect(() => {\n            const isDisabled = this.fdkDisabledInput();\n\n            // Set prevent default on click provider\n            this._clicked.setPreventDefault(isDisabled);\n\n            // Only emit if the value actually changed\n            if (isDisabled !== this._previousDisabledState) {\n                this.setDisabledState(isDisabled);\n                this._previousDisabledState = isDisabled;\n                this.next(isDisabled);\n            }\n        });\n    }\n\n    /** @hidden */\n    setDisabledState = (isDisabled: boolean): void => {\n        setDisabledState(this._elementRef, isDisabled, this.disabledClass(), this.addDisabledClass());\n    };\n}\n","import { NgModule } from '@angular/core';\nimport { DisabledBehaviorDirective } from './disabled-behavior.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [DisabledBehaviorDirective],\n    exports: [DisabledBehaviorDirective]\n})\nexport class DisabledBehaviorModule {}\n","import { ElementRef, Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\nimport { AttributeObserver } from '../../services/observers/attribute.observer';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class DisabledObserver {\n    /** @hidden */\n    private readonly _attributeObserver = inject(AttributeObserver);\n\n    /** @hidden */\n    static isDisabled(el: Element): boolean {\n        return (\n            el.hasAttribute('disabled') ||\n            el.getAttribute('aria-disabled') === 'true' ||\n            el.classList.contains('is-disabled')\n        );\n    }\n\n    /** @hidden */\n    observe(element: HasElementRef<Element> | Element | ElementRef<Element>): Observable<boolean> {\n        return this._attributeObserver.observe(element).pipe(\n            map(() => DisabledObserver.isDisabled(getNativeElement(element))),\n            distinctUntilChanged()\n        );\n    }\n\n    /** @hidden */\n    unobserve(element: HasElementRef<Element> | Element | ElementRef<Element>): void {\n        this._attributeObserver.unobserve(element);\n    }\n}\n","import { ElementRef } from '@angular/core';\nimport { DisabledViewModifier } from './disabled-view-modifier.interface';\nimport { setDisabledState } from './set-disabled-state';\n\nexport class DefaultDisabledViewModifier implements DisabledViewModifier {\n    /** @hidden */\n    constructor(private elementRef: ElementRef<Element>) {}\n\n    /** @hidden */\n    setDisabledState = (isDisabled: boolean): void => {\n        setDisabledState(this.elementRef, isDisabled, 'is-disabled', true);\n    };\n}\n","import {\n    DestroyRef,\n    ElementRef,\n    Inject,\n    Injectable,\n    Injector,\n    OnDestroy,\n    Optional,\n    Self,\n    SkipSelf,\n    afterNextRender,\n    inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, ReplaySubject, combineLatest } from 'rxjs';\nimport { distinctUntilChanged, startWith, tap } from 'rxjs/operators';\nimport { DefaultDisabledViewModifier } from './default-disabled-view-modifier';\nimport { DisabledBehavior } from './disabled-behavior.interface';\nimport { DisabledViewModifier } from './disabled-view-modifier.interface';\nimport { DisabledObserver } from './disabled.observer';\nimport { FDK_DISABLED_DIRECTIVE } from './fdk-disabled.token';\n\n@Injectable()\nexport class FdkDisabledProvider extends ReplaySubject<boolean> implements DisabledBehavior, OnDestroy {\n    /** @Hidden */\n    fdkDisabled = false;\n    /** @Hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n    /** @hidden */\n    private readonly _injector = inject(Injector);\n    /** @hidden */\n    private readonly disabledObserver = inject(DisabledObserver);\n    /** @hidden */\n    private readonly _viewModifiers$: BehaviorSubject<DisabledViewModifier[]>;\n    /** @hidden */\n    private _disabledChange$: Observable<boolean>;\n\n    /** @hidden */\n    constructor(\n        private elementRef: ElementRef<HTMLElement>,\n        @Optional() @Self() @Inject(FDK_DISABLED_DIRECTIVE) private selfDisabled$?: DisabledBehavior,\n        @Optional() @SkipSelf() @Inject(FDK_DISABLED_DIRECTIVE) private parentDisabled$?: DisabledBehavior\n    ) {\n        super(1);\n\n        // Initialize properties that depend on injected services\n        this._viewModifiers$ = new BehaviorSubject<DisabledViewModifier[]>(this._getInitialViewModifiers());\n        this._disabledChange$ = this._getDisabledChange$();\n        combineLatest([this._disabledChange$, this._viewModifiers$])\n            .pipe(\n                tap(([isDisabled]) => this.setDisabledState(isDisabled)),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe();\n        this._disabledChange$\n            .pipe(\n                tap((isDisabled) => (this.fdkDisabled = isDisabled)),\n                tap((isDisabled) => this.next(isDisabled)),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe();\n    }\n\n    /** @hidden */\n    addViewModifier(modifier: DisabledViewModifier): void {\n        const viewModifiers = [...new Set([...this._viewModifiers$.value, modifier]).values()];\n        this._viewModifiers$.next(viewModifiers);\n    }\n\n    /** @hidden */\n    setDisabledState(isDisabled: boolean): void {\n        afterNextRender(\n            () => {\n                this._viewModifiers$.value.forEach((viewModifier) => viewModifier.setDisabledState(isDisabled));\n            },\n            { injector: this._injector }\n        );\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this.complete();\n        this.disabledObserver.unobserve(this.elementRef);\n    }\n\n    /** @hidden */\n    private _getDisabledChange$(): Observable<boolean> {\n        let selfDisabled = false;\n        let parentDisabled = false;\n\n        if (this.parentDisabled$) {\n            this.parentDisabled$\n                .pipe(\n                    startWith(this.parentDisabled$.fdkDisabled),\n                    tap((d) => (parentDisabled = d)),\n                    distinctUntilChanged(),\n                    tap(() => {\n                        if (parentDisabled) {\n                            this.setDisabledState(true);\n                        }\n                        if (!selfDisabled && !parentDisabled) {\n                            this.setDisabledState(false);\n                        }\n                    }),\n                    takeUntilDestroyed(this._destroyRef)\n                )\n                .subscribe();\n        }\n        if (this.selfDisabled$) {\n            this.selfDisabled$\n                .pipe(\n                    startWith(this.selfDisabled$.fdkDisabled),\n                    tap((d) => (selfDisabled = d)),\n                    distinctUntilChanged(),\n                    tap((isDisabled) => {\n                        if (!parentDisabled) {\n                            this.setDisabledState(isDisabled);\n                        }\n                    }),\n                    takeUntilDestroyed(this._destroyRef)\n                )\n                .subscribe();\n        }\n        return this.disabledObserver.observe(this.elementRef).pipe(distinctUntilChanged());\n    }\n\n    /** @hidden */\n    private _getInitialViewModifiers(): DisabledViewModifier[] {\n        return !this.selfDisabled$ ? [new DefaultDisabledViewModifier(this.elementRef)] : [this.selfDisabled$];\n    }\n}\n","import { FocusableOption } from '@angular/cdk/a11y';\nimport { InjectionToken } from '@angular/core';\n\nexport const FOCUSABLE_ITEM = new InjectionToken<FocusableOption>('Focusable Option');\n","import { FocusableOption, FocusKeyManager } from '@angular/cdk/a11y';\nimport {\n    AfterContentInit,\n    ChangeDetectorRef,\n    computed,\n    ContentChildren,\n    Directive,\n    effect,\n    inject,\n    Input,\n    OnChanges,\n    OnDestroy,\n    QueryList,\n    SimpleChanges\n} from '@angular/core';\n\nimport { RtlService } from '../../services/rtl.service';\nimport { FOCUSABLE_ITEM } from './focus-key-manager.tokens';\n\n/** Directive to apply Angular Material FocusKeyManager to lists.\n * To be used with FocusKeyManagerItemDirective\n */\n@Directive({\n    selector: `[fdkFocusKeyManagerList]`\n})\nexport class FocusKeyManagerListDirective<TItem extends FocusableOption = Record<any, any> & FocusableOption>\n    implements OnChanges, AfterContentInit, OnDestroy\n{\n    /** Orientation for the FocusKeyManager */\n    @Input()\n    orientation: 'horizontal' | 'vertical';\n\n    /** Skip predicate for the FocusKeyManager */\n    @Input()\n    skipPredicate: (item: TItem) => boolean;\n\n    /** @hidden */\n    @ContentChildren(FOCUSABLE_ITEM)\n    readonly _items: QueryList<TItem>;\n\n    /** @hidden */\n    get focusKeyManager(): FocusKeyManager<TItem> {\n        return this._focusKeyManager;\n    }\n\n    /** @hidden */\n    private _focusKeyManager: FocusKeyManager<TItem>;\n\n    /** @hidden */\n    private readonly _rtlService = inject(RtlService, { optional: true });\n\n    /** @hidden */\n    private readonly _isRtl = computed(() => this._rtlService?.rtl() ?? false);\n\n    /** @hidden */\n    private readonly _cdr = inject(ChangeDetectorRef);\n\n    /** @hidden */\n    constructor() {\n        // React to RTL changes for horizontal orientation\n        effect(() => {\n            // Read the RTL signal to track changes\n            this._isRtl();\n\n            if (this._focusKeyManager && this.orientation === 'horizontal') {\n                this._applyOrientation();\n            }\n        });\n    }\n\n    /** @hidden */\n    ngOnChanges(changes: SimpleChanges): void {\n        if (!this._focusKeyManager) {\n            return;\n        }\n\n        if ('orientation' in changes) {\n            this._applyOrientation();\n        }\n\n        if ('skiPredicate' in changes) {\n            this._focusKeyManager.skipPredicate(this.skipPredicate);\n        }\n    }\n\n    /** @hidden */\n    ngAfterContentInit(): void {\n        this._focusKeyManager = new FocusKeyManager<TItem>(this._items).skipPredicate(this.skipPredicate);\n\n        this._applyOrientation();\n\n        this._cdr.detectChanges();\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._focusKeyManager.destroy();\n    }\n\n    /** Focus certain list's item */\n    focusItem(item: number | TItem): any {\n        if (typeof item === 'number') {\n            this._focusKeyManager.setActiveItem(item);\n        } else {\n            this._focusKeyManager.setActiveItem(item);\n        }\n    }\n\n    /** @hidden */\n    private _applyOrientation(): void {\n        switch (this.orientation) {\n            case 'horizontal':\n                this._focusKeyManager.withHorizontalOrientation(this._isRtl() ? 'rtl' : 'ltr');\n                break;\n            case 'vertical':\n                this._focusKeyManager.withVerticalOrientation(true);\n                break;\n        }\n    }\n}\n","import { FocusableOption, FocusKeyManager } from '@angular/cdk/a11y';\nimport { booleanAttribute, Directive, ElementRef, forwardRef, HostBinding, HostListener, Input } from '@angular/core';\nimport { FocusKeyManagerListDirective } from './focus-key-manager-list.directive';\nimport { FOCUSABLE_ITEM } from './focus-key-manager.tokens';\n\n/** Directive to apply Angular Material FocusKeyManager to lists.\n * To be used with FocusKeyManagerItemDirective\n */\n@Directive({\n    selector: '[fdkFocusKeyManagerItem]',\n    standalone: true,\n    providers: [{ provide: FOCUSABLE_ITEM, useExisting: forwardRef(() => FocusKeyManagerItemDirective) }]\n})\nexport class FocusKeyManagerItemDirective implements FocusableOption {\n    /** Whether item should be initially focused */\n    @Input({ transform: booleanAttribute })\n    initialFocus = false;\n\n    /** @hidden */\n    @Input()\n    @HostBinding('attr.tabindex')\n    get _tabindex(): number {\n        return this.initialFocus ? 0 : (this.nativeElement?.tabIndex ?? -1);\n    }\n\n    /** Native element of the item */\n    get nativeElement(): any {\n        return this._elRef?.nativeElement;\n    }\n\n    /** @hidden */\n    private get _focusKeyManager(): FocusKeyManager<FocusableOption> {\n        return this._list.focusKeyManager;\n    }\n\n    /** @hidden */\n    constructor(\n        private readonly _list: FocusKeyManagerListDirective,\n        private readonly _elRef: ElementRef\n    ) {}\n\n    /** @hidden */\n    @HostListener('focus')\n    _onFocus(): void {\n        // For cases where initially selected item doesn't have 0 index\n        this._focusKeyManager?.updateActiveItem(this);\n    }\n\n    /** @hidden */\n    @HostListener('keydown', ['$event'])\n    _onKeydown(event: KeyboardEvent): void {\n        this._focusKeyManager?.onKeydown(event);\n    }\n\n    /** Focus current item native element */\n    focus(): void {\n        this._elRef?.nativeElement.focus();\n    }\n}\n","import { NgModule } from '@angular/core';\n\nimport { FocusKeyManagerItemDirective } from './focus-key-manager-item.directive';\nimport { FocusKeyManagerListDirective } from './focus-key-manager-list.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [FocusKeyManagerItemDirective, FocusKeyManagerListDirective],\n    exports: [FocusKeyManagerItemDirective, FocusKeyManagerListDirective]\n})\nexport class FocusKeyManagerHelpersModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_FOCUSABLE_ITEM_DIRECTIVE = new InjectionToken('Focusable directive token');\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ElementRef } from '@angular/core';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces';\n\nconst focusableTagnamesByDefault = new Set(['select', 'textarea', 'input', 'button', 'audio', 'video']);\n\nconst focusableTagOptions = [\n    {\n        tag: 'div',\n        attributes: [\n            {\n                name: 'contenteditable',\n                valueMatcher: (value: string) => coerceBooleanProperty(value)\n            }\n        ]\n    }\n];\n\n/** @hidden */\nexport function isElementFocusableByDefault(el: HasElementRef<Element> | Element | ElementRef<Element>): boolean {\n    const element = getNativeElement(el);\n    const tagName = element.tagName.toLowerCase();\n    if (focusableTagnamesByDefault.has(tagName)) {\n        return true;\n    }\n\n    return focusableTagOptions.some((tagOptions) => {\n        if (tagOptions.tag === tagName) {\n            return tagOptions.attributes.some((attribute) => {\n                const attrVal = element.getAttribute(attribute.name);\n                return attrVal && attribute.valueMatcher(attrVal);\n            });\n        }\n        return false;\n    });\n}\n","import { ElementRef, Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\nimport { AttributeObserver } from '../../services/observers/attribute.observer';\nimport { DisabledObserver } from '../disabled/disabled.observer';\nimport { isElementFocusableByDefault } from './is-element-focusable-by-default';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class FocusableObserver {\n    /** @hidden */\n    private readonly _attributeObserver = inject(AttributeObserver);\n\n    /** @Hidden */\n    static isFocusable(element: Element, respectTabIndex: boolean): boolean {\n        if (DisabledObserver.isDisabled(element)) {\n            return false;\n        }\n\n        if (!respectTabIndex) {\n            return true;\n        }\n\n        const tabIndex = parseInt(element.getAttribute('tabindex') + '', 10);\n        if (isNaN(tabIndex)) {\n            return isElementFocusableByDefault(element);\n        }\n\n        return tabIndex > -1;\n    }\n\n    /** @hidden */\n    observe(\n        element: HasElementRef<Element> | Element | ElementRef<Element>,\n        respectTabIndex = true\n    ): Observable<boolean> {\n        const nativeElement = getNativeElement(element);\n        return this._attributeObserver.observe(nativeElement).pipe(\n            map(() => FocusableObserver.isFocusable(nativeElement, respectTabIndex)),\n            distinctUntilChanged()\n        );\n    }\n\n    /** @hidden */\n    unobserve(element: HasElementRef<Element> | Element | ElementRef<Element>): void {\n        this._attributeObserver.unobserve(element);\n    }\n}\n","import { InteractivityChecker, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { ENTER, ESCAPE, F2, MAC_ENTER } from '@angular/cdk/keycodes';\n\nimport {\n    DOCUMENT,\n    DestroyRef,\n    Directive,\n    ElementRef,\n    Renderer2,\n    booleanAttribute,\n    effect,\n    inject,\n    input,\n    linkedSignal,\n    output\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject } from 'rxjs';\nimport { KeyUtil } from '../../functions';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\nimport { Nullable } from '../../models/nullable';\nimport { TabbableElementService } from '../../services';\nimport { FDK_FOCUSABLE_ITEM_DIRECTIVE } from './focusable-item.tokens';\nimport { FocusableItem } from './focusable.item';\nimport { FocusableObserver } from './focusable.observer';\n\nexport type CellFocusedEventAnnouncer = Nullable<(position: FocusableItemPosition) => string>;\n\nexport interface FocusableItemPosition {\n    rowIndex: number;\n    colIndex: number;\n    totalRows: number;\n    totalCols: number;\n}\n\n@Directive({\n    selector: '[fdkFocusableItem]',\n    providers: [\n        {\n            provide: FDK_FOCUSABLE_ITEM_DIRECTIVE,\n            useExisting: FocusableItemDirective\n        }\n    ],\n    host: {\n        '(focusin)': '_onFocusin()',\n        '(keydown)': '_onKeydown($event)'\n    }\n})\nexport class FocusableItemDirective implements FocusableItem, HasElementRef {\n    /** @hidden Input with booleanAttribute transform */\n    readonly fdkFocusableItem = input(true, { transform: booleanAttribute });\n\n    /** Function, which returns a string to be announced by screen-reader whenever an item which is in grid receives focus. */\n    readonly cellFocusedEventAnnouncer = input<CellFocusedEventAnnouncer>(this._defaultItemFocusedEventAnnouncer);\n\n    /** Event emitted when the cell receives focus, not being emitted when focus moves between item's children. */\n    readonly cellFocused = output<FocusableItemPosition>();\n\n    /** Event emitted when a focusable child element is focused. */\n    readonly focusableChildElementFocused = output<void>();\n\n    /** @hidden */\n    readonly _parentFocusableItemFocused = output<void>();\n\n    /** Element reference. */\n    readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n    /** @hidden */\n    readonly keydown = new Subject<KeyboardEvent>();\n\n    /** @hidden */\n    _position: FocusableItemPosition;\n\n    /** @hidden */\n    protected readonly _destroyRef = inject(DestroyRef);\n\n    /**\n     * Internal _focusable state that can be mutated programmatically.\n     * Syncs with the fdkFocusableItem input but allows internal modification.\n     * @hidden\n     */\n    private readonly _focusable = linkedSignal(() => this.fdkFocusableItem());\n\n    /** @hidden */\n    private _tabbableElements = new Map<HTMLElement, number>();\n\n    /** @hidden */\n    private _tabbable = true;\n\n    /** @hidden */\n    private readonly _focusableObserver = inject(FocusableObserver);\n\n    /** @hidden */\n    private readonly _tabbableElementService = inject(TabbableElementService);\n\n    /** @hidden */\n    private readonly _liveAnnouncer = inject(LiveAnnouncer);\n    /** @hidden */\n    private readonly _renderer2 = inject(Renderer2);\n\n    /** @hidden */\n    private readonly _document = inject(DOCUMENT);\n\n    /** @hidden */\n    private readonly _checker = inject(InteractivityChecker);\n\n    /** @hidden */\n    constructor() {\n        // Update tabbable state when focusable state changes\n        effect(() => {\n            const focusable = this.fdkFocusableItem();\n            this.setTabbable(focusable);\n        });\n\n        this._focusableObserver\n            .observe(this.elementRef, false)\n            .pipe(takeUntilDestroyed(this._destroyRef))\n            .subscribe((isFocusable) => {\n                if (isFocusable !== this.isFocusable()) {\n                    this.setFocusable(isFocusable);\n                }\n            });\n    }\n\n    /** @hidden */\n    element = (): HTMLElement => this.elementRef.nativeElement;\n\n    /**\n     * Programmatically set the _focusable state.\n     * This allows parent components to update the _focusable state.\n     */\n    setFocusable(state: boolean): void {\n        this._focusable.set(state);\n    }\n\n    /**\n     * Interface method required by FocusableItem.\n     * Returns the current focusable state from the internal signal.\n     * @hidden\n     */\n    isFocusable(): boolean {\n        return this._focusable();\n    }\n\n    /** @hidden */\n    focus(): void {\n        this.elementRef.nativeElement.focus();\n    }\n\n    /** Set tabbable state */\n    setTabbable(state: boolean): void {\n        this._tabbable = state;\n        this._renderer2.setAttribute(this.elementRef.nativeElement, 'tabindex', this._tabbable ? '0' : '-1');\n    }\n\n    /** @hidden */\n    enableTabbableElements(): void {\n        const size = this._tabbableElements.size;\n        if (size === 0) {\n            return;\n        }\n\n        for (const [element, tabIndex] of this._tabbableElements) {\n            element.tabIndex = tabIndex;\n        }\n        this._tabbable = false;\n    }\n\n    /** @hidden */\n    disableTabbableElements(): void {\n        // Since we cannot select by tabindex attribute (links, inputs, buttons might not have one but still can be focusable),\n        // Select all elements from the cell and filter by tabIndex property.\n        const allElements = this.elementRef.nativeElement.querySelectorAll<HTMLElement>('*');\n        const length = allElements.length;\n        for (let i = 0; i < length; i++) {\n            const elm = allElements[i];\n            if (elm.tabIndex >= 0) {\n                this._tabbableElements.set(elm, elm.tabIndex);\n                elm.tabIndex = -1;\n            }\n        }\n    }\n\n    /** @hidden */\n    protected async _onFocusin(): Promise<void> {\n        if (!this.isFocusable()) {\n            return;\n        }\n\n        if (this._position) {\n            this.cellFocused.emit(this._position);\n\n            const announcer = this.cellFocusedEventAnnouncer();\n            if (announcer) {\n                this._liveAnnouncer.clear();\n                await this._liveAnnouncer.announce(announcer(this._position));\n            }\n        }\n\n        const activeEl = this._document.activeElement as HTMLElement;\n        const nativeElement = this.elementRef.nativeElement;\n\n        if (activeEl === nativeElement) {\n            this._parentFocusableItemFocused.emit();\n        } else if (activeEl && this._checker.isFocusable(activeEl)) {\n            this.focusableChildElementFocused.emit();\n        }\n    }\n\n    /** @hidden */\n    protected _onKeydown(event: KeyboardEvent): void {\n        if (!this.isFocusable()) {\n            return;\n        }\n        const activeEl = this._document.activeElement;\n        const isFocused = activeEl === this.elementRef.nativeElement;\n        const shouldFocusChild = KeyUtil.isKeyCode(event, [ENTER, MAC_ENTER, F2]) && !event.shiftKey && isFocused;\n        const shouldFocusCell =\n            ((KeyUtil.isKeyCode(event, F2) && event.shiftKey) || KeyUtil.isKeyCode(event, ESCAPE)) && !isFocused;\n\n        if (shouldFocusChild) {\n            event.stopPropagation();\n\n            const tabbableElement = this._tabbableElementService.getTabbableElement(\n                this.elementRef.nativeElement,\n                false,\n                true\n            );\n\n            tabbableElement?.focus();\n\n            this.focusableChildElementFocused.emit();\n\n            return;\n        } else if (shouldFocusCell) {\n            event.stopPropagation();\n\n            this.elementRef.nativeElement.focus();\n\n            return;\n        }\n\n        if (isFocused) {\n            this.keydown.next(event);\n        }\n    }\n\n    /** @hidden */\n    private _defaultItemFocusedEventAnnouncer(position: FocusableItemPosition): string {\n        return `Column ${position.colIndex + 1} of ${position.totalCols}, row: ${position.rowIndex + 1} of ${\n            position.totalRows\n        }`;\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { FocusableItemDirective } from './focusable-item.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [FocusableItemDirective],\n    exports: [FocusableItemDirective]\n})\nexport class FocusableItemModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_FOCUSABLE_LIST_DIRECTIVE = new InjectionToken('Focusable list token');\n","import { Directive, effect, inject, Injector, signal } from '@angular/core';\nimport { FocusableItem } from '../focusable-item/focusable.item';\nimport { FocusableListDirective } from './focusable-list.directive';\nimport { FDK_FOCUSABLE_LIST_DIRECTIVE } from './focusable-list.tokens';\n\n@Directive({\n    selector: '[fdkIndirectFocusableList]',\n    exportAs: 'fdkIndirectFocusableList',\n    standalone: true\n})\nexport class IndirectFocusableListDirective {\n    /** @hidden */\n    injector = inject(Injector);\n    /** @hidden */\n    _focusableList = inject<FocusableListDirective>(FDK_FOCUSABLE_LIST_DIRECTIVE, { optional: true });\n    /** @hidden */\n    _indirectChildren = signal<ReadonlyArray<FocusableItem>>([], {\n        equal: (a, b) => {\n            // Deep equality: only trigger updates if array contents actually change\n            if (a.length !== b.length) {\n                return false;\n            }\n            return a.every((item, index) => item === b[index]);\n        }\n    });\n    /** @hidden */\n    _indirectChildrenMap = new Map<FocusableItem, number | (() => number)>();\n    /** @hidden */\n    private _updateTimeout?: ReturnType<typeof setTimeout>;\n\n    /** @hidden */\n    constructor() {\n        if (this._focusableList) {\n            effect(() => {\n                this._focusableList?.setItems(this._indirectChildren());\n            });\n        }\n    }\n\n    /** @hidden */\n    register(item: FocusableItem, itemOrder: number | (() => number)): void {\n        this._indirectChildrenMap.set(item, itemOrder);\n        this._updateIndirectChildren();\n    }\n\n    /** @hidden */\n    unregister(item: FocusableItem): void {\n        this._indirectChildrenMap.delete(item);\n        this._updateIndirectChildren();\n    }\n\n    /** @hidden */\n    protected _updateIndirectChildren(): void {\n        // Debounce updates by 100ms (matches original RxJS debounceTime)\n        clearTimeout(this._updateTimeout);\n        this._updateTimeout = setTimeout(() => {\n            this._indirectChildren.set(\n                Array.from(this._indirectChildrenMap.entries())\n                    .sort(([, orderA], [, orderB]) => {\n                        const orderAValue = typeof orderA === 'function' ? orderA() : orderA;\n                        const orderBValue = typeof orderB === 'function' ? orderB() : orderB;\n                        return orderAValue - orderBValue;\n                    })\n                    .map(([focusableItem]) => focusableItem)\n            );\n        }, 100);\n    }\n}\n","import { DestroyRef, Directive, inject, InjectionToken } from '@angular/core';\nimport { IndirectFocusableListDirective } from '../focusable-list/indirect-focusable-list.directive';\nimport { FDK_FOCUSABLE_ITEM_DIRECTIVE } from './focusable-item.tokens';\nimport { FocusableItem } from './focusable.item';\n\nexport const FDK_INDIRECT_FOCUSABLE_ITEM_ORDER = new InjectionToken<number | (() => number)>(\n    'FDK_INDIRECT_FOCUSABLE_ITEM_ORDER'\n);\n\n/**\n * Directive, to mark the focusable item in the focusable list, which\n * is not the direct child of the focusable list.\n *\n * Useful in cases, when you need to make the item focusable, and\n * you do not have the access to the focusable list.\n */\n@Directive({\n    selector: '[fdkIndirectFocusableItem]',\n    standalone: true\n})\nexport class IndirectFocusableItemDirective {\n    /** @hidden */\n    protected _focusableItem = inject<FocusableItem>(FDK_FOCUSABLE_ITEM_DIRECTIVE, { optional: true });\n    /** @hidden */\n    protected _indirectFocusableList = inject(IndirectFocusableListDirective, { optional: true });\n    /** @hidden */\n    protected _order: number | (() => number) | null = inject(FDK_INDIRECT_FOCUSABLE_ITEM_ORDER, { optional: true });\n    /** @hidden */\n    protected _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    constructor() {\n        if (!this._focusableItem) {\n            throw new Error(\n                'fdkIndirectFocusableItem directive must be used in conjunction with fdkFocusableItem directive'\n            );\n        }\n        if (this._indirectFocusableList && this._order) {\n            const focusableItem = this._focusableItem;\n            const indirectFocusableList = this._indirectFocusableList;\n            indirectFocusableList.register(this._focusableItem, this._order);\n            this._destroyRef.onDestroy(() => indirectFocusableList.unregister(focusableItem));\n        }\n    }\n}\n","import { FocusableItem } from './focusable.item';\n\n/**\n * Returns true if the item configured to be focusable.\n * @param item\n */\nexport function isItemFocusable(item: FocusableItem): boolean {\n    return Boolean(typeof item.isFocusable === 'function' ? item.isFocusable() : item.isFocusable);\n}\n","import { Nullable } from '../../models/nullable';\nimport { FocusableItem } from './focusable.item';\n\n/**\n * Returns the element of the item.\n * @param item\n */\nexport function getItemElement(item?: Nullable<FocusableItem>): HTMLElement | null {\n    if (!item) {\n        return null;\n    }\n    if (typeof item.element === 'function') {\n        return item.element();\n    }\n\n    return item.element;\n}\n","import { Nullable } from '../../models/nullable';\n\nexport type ScrollPosition = 'top' | 'bottom' | undefined;\n\n/** Helper function to scroll to focusable list or its item relatively to the container. */\nexport function scrollIntoView(element: Nullable<HTMLElement>, position: Nullable<ScrollPosition>): void {\n    if (!element) {\n        return;\n    }\n\n    const scrollableParent = getScrollParent(element);\n\n    if (scrollableParent) {\n        const itemOffsetTop = element.offsetTop - scrollableParent.offsetTop;\n        if (!position) {\n            /**\n             * check if top of focused element is fully visible, and if not, adjust scroll.\n             * this is triggered when a sticky table header overlaps the focused cell.\n             */\n            const elRect = element.getBoundingClientRect();\n            const topEl = document.elementFromPoint(elRect.left, elRect.top) as HTMLElement;\n            if (\n                !element.isSameNode(topEl) &&\n                topEl &&\n                element.getBoundingClientRect().top !== topEl.getBoundingClientRect().top\n            ) {\n                scrollableParent.scrollBy({ top: elRect.top - topEl.getBoundingClientRect().bottom });\n            }\n        }\n        switch (position) {\n            case 'top':\n                scrollableParent.scrollTop = itemOffsetTop;\n                break;\n            case 'bottom':\n                scrollableParent.scrollTop = itemOffsetTop - (scrollableParent.offsetHeight - element.offsetHeight);\n                break;\n        }\n    }\n}\n\nfunction getScrollParent(node: HTMLElement | null): HTMLElement | null {\n    if (node == null) {\n        return null;\n    }\n\n    if (node.scrollHeight > node.clientHeight && ['auto', 'scroll'].includes(getComputedStyle(node).overflowY)) {\n        return node;\n    } else {\n        return getScrollParent(node.parentNode as HTMLElement);\n    }\n}\n","import { FocusKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { ENTER, ESCAPE, F2, MAC_ENTER } from '@angular/cdk/keycodes';\n\nimport {\n    AfterViewInit,\n    DOCUMENT,\n    DestroyRef,\n    Directive,\n    ElementRef,\n    Injector,\n    Input,\n    OnDestroy,\n    Renderer2,\n    booleanAttribute,\n    computed,\n    contentChildren,\n    effect,\n    inject,\n    input,\n    model,\n    output,\n    runInInjectionContext,\n    signal,\n    untracked\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Observable, Subject, merge } from 'rxjs';\nimport { finalize, takeUntil, tap } from 'rxjs/operators';\nimport { KeyUtil, intersectionObservable } from '../../functions';\nimport { destroyObservable } from '../../helpers';\nimport {\n    FDK_FOCUSABLE_ITEM_DIRECTIVE,\n    FocusableItem,\n    FocusableListPosition,\n    FocusableObserver,\n    isItemFocusable\n} from '../focusable-item';\nimport { FocusableItemPosition } from '../focusable-item/focusable-item.directive';\nimport { getItemElement } from '../focusable-item/get-item-element';\nimport { FDK_FOCUSABLE_LIST_DIRECTIVE } from './focusable-list.tokens';\nimport { ScrollPosition, scrollIntoView } from './scroll';\n\nexport interface FocusableListItemFocusedEvent {\n    index: number;\n    total: number;\n    id?: string | null;\n}\n\nexport interface FocusableListKeydownEvent {\n    list: FocusableListDirective;\n    event: KeyboardEvent;\n    activeItemIndex: number | null | undefined;\n}\n\ninterface FocusableListConfig {\n    wrap?: boolean;\n    direction?: 'vertical' | 'horizontal';\n    contentDirection?: 'ltr' | 'rtl' | null;\n}\n\n@Directive({\n    selector: '[fdkFocusableList]',\n    exportAs: 'fdkFocusableList',\n    standalone: true,\n    host: {\n        '[attr.tabindex]': 'tabindex()',\n        '(keydown)': '_onKeydown($event)',\n        '(focus)': '_onFocus()'\n    },\n    providers: [\n        {\n            provide: FDK_FOCUSABLE_LIST_DIRECTIVE,\n            useExisting: FocusableListDirective\n        }\n    ]\n})\nexport class FocusableListDirective implements AfterViewInit, OnDestroy {\n    /** Whether the whole list should be focusable, handy in grids. */\n    @Input({ transform: booleanAttribute })\n    set focusable(value: boolean) {\n        this._focusable.set(value);\n\n        this.setTabbable(this._focusable());\n    }\n\n    get focusable(): boolean {\n        return this._focusable();\n    }\n\n    /** Direction of navigation. Should be set to 'grid' when list is a part of grid. */\n    readonly navigationDirection = model<'horizontal' | 'vertical' | 'grid'>('vertical');\n\n    /** Direction of the content. */\n    readonly contentDirection = model<'ltr' | 'rtl' | null>('ltr');\n\n    /**\n     * Configures wrapping mode which determines whether the active item will wrap to the other end of list when there are no more items in the given direction.\n     */\n    readonly wrap = input(false, { transform: booleanAttribute });\n\n    /** Function, which returns a string to be announced by screen-reader whenever an row which is in grid receives focus. */\n    readonly listFocusedEventAnnouncer = input<(position: FocusableListPosition) => string>(\n        this._defaultListFocusedEventAnnouncer\n    );\n\n    /** Event emitted when list's item focused, contains item's position info. */\n    readonly itemFocused = output<FocusableListItemFocusedEvent>();\n\n    /** @hidden */\n    readonly _projectedFocusableItems = contentChildren<FocusableItem>(FDK_FOCUSABLE_ITEM_DIRECTIVE, {\n        descendants: true\n    });\n\n    /** @hidden */\n    readonly _itemsOverride = signal<ReadonlyArray<FocusableItem> | null>(null);\n\n    /** @hidden */\n    readonly _focusableItems = computed<ReadonlyArray<FocusableItem>>(\n        () => this._itemsOverride() ?? this._projectedFocusableItems()\n    );\n\n    /** @hidden */\n    readonly _gridItemFocused$ = new Subject<FocusableItemPosition>();\n\n    /** @hidden */\n    readonly _gridListFocused$ = new Subject<FocusableListPosition>();\n\n    /** @hidden */\n    readonly _keydown$ = new Subject<FocusableListKeydownEvent>();\n\n    /** @hidden */\n    readonly _isVisible = signal(false);\n\n    /** @hidden */\n    protected readonly tabindex = computed(() => (this._tabbable() ? 0 : -1));\n\n    /** @hidden */\n    protected readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    protected _focusable = signal(false);\n\n    /** @hidden */\n    private readonly _gridPosition = signal<FocusableListPosition | null>(null);\n\n    /** @hidden */\n    private _keyManager?: FocusKeyManager<FocusableItem>;\n\n    /** @hidden */\n    private _tabbable = signal(false);\n\n    /** @hidden */\n    private readonly _refreshItems$ = new Subject<void>();\n    /** @hidden */\n    private _itemsEffectInitialized = false;\n    /** @hidden */\n    private readonly _renderer = inject(Renderer2);\n    /** @hidden */\n    private readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n    /** @hidden */\n    private readonly _liveAnnouncer = inject(LiveAnnouncer);\n    /** @hidden */\n    private readonly _focusableObserver = inject(FocusableObserver);\n\n    /** @hidden */\n    private readonly _injector = inject(Injector);\n\n    /** @hidden */\n    private readonly _document = inject(DOCUMENT);\n\n    /** @hidden */\n    constructor() {\n        intersectionObservable(this._elementRef.nativeElement, { threshold: 0.25 })\n            .pipe(takeUntilDestroyed(this._destroyRef))\n            .subscribe((isVisible) => this._isVisible.set(isVisible[0]?.isIntersecting));\n\n        this._focusableObserver\n            .observe(this._elementRef, false)\n            .pipe(takeUntilDestroyed(this._destroyRef))\n            .subscribe((isFocusable) => {\n                if (!isFocusable && isFocusable !== this.focusable) {\n                    this.focusable = isFocusable;\n                }\n            });\n\n        effect(() => {\n            const wrap = this.wrap();\n            if (this._keyManager) {\n                this._keyManager = this._keyManager.withWrap(wrap);\n            }\n        });\n\n        effect(() => {\n            this.navigationDirection();\n            this.contentDirection();\n            if (this._keyManager) {\n                this._updateNavigationDirection();\n            }\n        });\n\n        effect(() => {\n            const gridPosition = this._gridPosition();\n            if (!gridPosition) {\n                return;\n            }\n\n            const items = this._focusableItems();\n            const totalCols = items.length;\n            for (let index = 0; index < totalCols; index++) {\n                items[index]._position = {\n                    ...gridPosition,\n                    colIndex: index,\n                    totalCols\n                };\n            }\n        });\n    }\n\n    /** @hidden */\n    _onKeydown(event: KeyboardEvent): void {\n        // Already handled\n        if (event.defaultPrevented) {\n            return;\n        }\n\n        const isFocused = this._document.activeElement === this._elementRef.nativeElement;\n        const shouldFocusChild = KeyUtil.isKeyCode(event, [ENTER, MAC_ENTER, F2]) && !event.shiftKey && isFocused;\n        const shouldFocusList =\n            ((KeyUtil.isKeyCode(event, F2) && event.shiftKey) || KeyUtil.isKeyCode(event, ESCAPE)) && !isFocused;\n\n        if (shouldFocusChild) {\n            event.stopPropagation();\n\n            this.setActiveItem(0);\n\n            return;\n        } else if (shouldFocusList) {\n            event.stopPropagation();\n\n            this.focus();\n\n            return;\n        }\n\n        this._keydown$.next({ list: this, event, activeItemIndex: this._keyManager?.activeItemIndex ?? null });\n    }\n\n    /** @hidden */\n    async _onFocus(): Promise<void> {\n        const gridPosition = this._gridPosition();\n        if (gridPosition) {\n            this._gridListFocused$.next(gridPosition);\n\n            this._liveAnnouncer.clear();\n            await this._liveAnnouncer.announce(this.listFocusedEventAnnouncer()(gridPosition));\n\n            this.setTabbable(true);\n        }\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._listenOnItems();\n    }\n\n    /** Set items programmatically. */\n    setItems(items: ReadonlyArray<FocusableItem>): void {\n        this._itemsOverride.set(items);\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._keyManager?.destroy();\n    }\n\n    /** Set active item in list */\n    setActiveItem(index: number, scrollPosition?: ScrollPosition): void {\n        let availableIndex;\n\n        const items = this._focusableItems();\n        for (let itemIndex = index; itemIndex < items.length; itemIndex += 1) {\n            const item = items[itemIndex];\n            if (item && isItemFocusable(item)) {\n                availableIndex = itemIndex;\n                break;\n            }\n        }\n\n        if (availableIndex != null) {\n            scrollIntoView(getItemElement(items[availableIndex]), scrollPosition);\n            this._keyManager?.setActiveItem(availableIndex);\n        }\n    }\n\n    /** Focus whole list */\n    focus(scrollPosition?: ScrollPosition): void {\n        if (this.focusable) {\n            scrollIntoView(this._elementRef.nativeElement, scrollPosition);\n            this._elementRef.nativeElement.focus();\n        }\n    }\n\n    /** Set tabbable state */\n    setTabbable(state: boolean): void {\n        this._tabbable.set(state);\n    }\n\n    /** @hidden */\n    _updateNavigationDirection(): void {\n        if (!this._keyManager) {\n            return;\n        }\n\n        if (this.navigationDirection() === 'vertical') {\n            this._keyManager = this._keyManager.withVerticalOrientation(true);\n            this._keyManager = this._keyManager.withHorizontalOrientation(null);\n        } else {\n            this._keyManager = this._keyManager.withVerticalOrientation(false);\n            this._keyManager = this._keyManager.withHorizontalOrientation(this.contentDirection() || 'ltr');\n        }\n    }\n\n    /** @hidden */\n    _setItemsTabbable(state: boolean): void {\n        const items = this._focusableItems();\n        const length = items.length;\n        for (let i = 0; i < length; i++) {\n            items[i].setTabbable(state);\n        }\n    }\n\n    /** @hidden */\n    _setGridPosition(position: FocusableListPosition): void {\n        this._gridPosition.set(position);\n    }\n\n    /** @hidden */\n    private _initializeFocusManager(items: ReadonlyArray<FocusableItem>, config: FocusableListConfig = {}): void {\n        this._refreshItems$.next();\n\n        let keyManager = new FocusKeyManager<any>(items).withHomeAndEnd();\n\n        if (config.wrap !== false) {\n            keyManager = keyManager.withWrap();\n        }\n\n        if (config.direction === 'horizontal') {\n            keyManager = keyManager.withHorizontalOrientation(config.contentDirection || 'ltr'); // should be replaced\n\n            // Vertical is enabled by default, so let's disable it here in consistency purposes\n            keyManager = keyManager.withVerticalOrientation(false);\n        }\n\n        keyManager.skipPredicate((i) => !isItemFocusable(i));\n\n        this._keyManager = keyManager;\n\n        const itemsLength = items.length;\n        const focusListenerDestroyers: Array<() => void> = new Array(itemsLength);\n        const keydownObservables: Array<Observable<KeyboardEvent>> = new Array(itemsLength);\n\n        for (let index = 0; index < itemsLength; index++) {\n            const item = items[index];\n            keydownObservables[index] = item.keydown;\n            focusListenerDestroyers[index] = this._renderer.listen(getItemElement(item), 'focus', () => {\n                const directiveItem = this._focusableItems()[index];\n                if (!directiveItem) {\n                    return;\n                }\n\n                const gridPosition = this._gridPosition();\n                if (gridPosition) {\n                    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n                    this._gridItemFocused$.next(directiveItem._position!);\n                }\n\n                const id = getItemElement(item)?.id ?? null;\n                this.itemFocused.emit({ index, total: itemsLength, id });\n\n                const focusableItems = this._focusableItems();\n                const focusableItemsLength = focusableItems.length;\n                for (let i = 0; i < focusableItemsLength; i++) {\n                    focusableItems[i].setTabbable(focusableItems[i] === directiveItem);\n                }\n                this._keyManager?.setActiveItem(index);\n            });\n        }\n\n        merge(...keydownObservables)\n            .pipe(\n                tap((event: KeyboardEvent) => {\n                    // Already handled\n                    if (event.defaultPrevented) {\n                        return;\n                    }\n\n                    this._keyManager?.onKeydown(event);\n                }),\n                takeUntil(merge(this._refreshItems$, destroyObservable(this._destroyRef))),\n                finalize(() => {\n                    for (let i = 0; i < focusListenerDestroyers.length; i++) {\n                        focusListenerDestroyers[i]();\n                    }\n                })\n            )\n            .subscribe();\n    }\n\n    /** @hidden */\n    private _defaultListFocusedEventAnnouncer(position: FocusableListPosition): string {\n        return `Row: ${position.rowIndex + 1} of ${position.totalRows}, use F2 button to dive in and focus list's item`;\n    }\n\n    /** @hidden */\n    private _listenOnItems(): void {\n        if (this._itemsEffectInitialized) {\n            return;\n        }\n        // Prevent creating duplicate effects\n        this._itemsEffectInitialized = true;\n        runInInjectionContext(this._injector, () => {\n            effect(() => {\n                const items = this._focusableItems();\n                const navigationDirection = untracked(this.navigationDirection);\n                const direction = navigationDirection === 'grid' ? 'horizontal' : navigationDirection;\n\n                this._initializeFocusManager(items, {\n                    direction,\n                    contentDirection: untracked(this.contentDirection),\n                    wrap: untracked(this.wrap)\n                });\n            });\n        });\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { FocusableItemDirective } from '../focusable-item';\nimport { FocusableListDirective } from './focusable-list.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [FocusableItemDirective, FocusableListDirective],\n    exports: [FocusableItemDirective, FocusableListDirective]\n})\nexport class FocusableListModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_FOCUSABLE_GRID_DIRECTIVE = new InjectionToken('Focusable grid directive token');\n","import { DOWN_ARROW, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n    AfterViewInit,\n    ContentChildren,\n    DestroyRef,\n    Directive,\n    EventEmitter,\n    Injector,\n    Input,\n    Output,\n    QueryList,\n    booleanAttribute,\n    effect,\n    inject,\n    runInInjectionContext\n} from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { merge, startWith, switchMap } from 'rxjs';\nimport { KeyUtil } from '../../functions';\nimport { Nullable } from '../../models/nullable';\nimport {\n    FDK_FOCUSABLE_ITEM_DIRECTIVE,\n    FocusableItem,\n    FocusableItemDirective,\n    FocusableItemPosition,\n    FocusableListPosition\n} from '../focusable-item';\nimport { FDK_FOCUSABLE_LIST_DIRECTIVE, FocusableListDirective, ScrollPosition } from '../focusable-list';\nimport { FDK_FOCUSABLE_GRID_DIRECTIVE } from './focusable-grid.tokens';\n\nexport interface FocusableCellPosition {\n    rowIndex: number;\n    colIndex: number;\n}\n\n@Directive({\n    selector: '[fdkFocusableGrid]',\n    exportAs: 'fdkFocusableGrid',\n    standalone: true,\n    providers: [\n        {\n            provide: FDK_FOCUSABLE_GRID_DIRECTIVE,\n            useExisting: FocusableGridDirective\n        }\n    ]\n})\nexport class FocusableGridDirective implements AfterViewInit {\n    /** Direction of the content. */\n    @Input()\n    contentDirection: 'ltr' | 'rtl' | null = 'ltr';\n\n    /** Whether the item in the previous/next row should be selected when going out of the first/last cell in the row. Default is false. */\n    @Input({ transform: booleanAttribute })\n    wrapHorizontally = false;\n\n    /** Specify which item to select in prev/next row if its length smaller than current index. Nullish value means do not select. Default is null. */\n    @Input()\n    shortRowFocus: Nullable<'first' | 'last'> = null;\n\n    /** Event emitted when item focused, contains item's position info. */\n    @Output()\n    readonly itemFocused = new EventEmitter<FocusableItemPosition>();\n\n    /** Event emitted when whole row focused, contains row's position info. */\n    @Output()\n    readonly rowFocused = new EventEmitter<FocusableListPosition>();\n\n    /** @hidden */\n    @ContentChildren(FDK_FOCUSABLE_LIST_DIRECTIVE, { descendants: true })\n    private readonly _focusableLists: QueryList<FocusableListDirective>;\n\n    /** @hidden */\n    @ContentChildren(FDK_FOCUSABLE_ITEM_DIRECTIVE, { descendants: true })\n    private readonly _focusableItems: QueryList<FocusableItemDirective>;\n\n    /** @hidden */\n    _preventKeydown = false;\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private readonly _injector = inject(Injector);\n\n    /** @hidden */\n    private readonly _listItemEffects = new WeakSet<FocusableListDirective>();\n\n    /** @hidden */\n    private readonly _subscribedItems = new WeakSet<FocusableItemDirective>();\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._focusableLists.changes\n            .pipe(startWith(this._focusableLists), takeUntilDestroyed(this._destroyRef))\n            .subscribe((lists) => {\n                const totalRows = this._focusableLists.length;\n                const listsLength = lists.length;\n                for (let i = 0; i < listsLength; i++) {\n                    const list = lists.get(i);\n                    if (list) {\n                        list._setGridPosition({ rowIndex: i, totalRows });\n                        this._watchListItems(list);\n                    }\n                }\n            });\n\n        this._focusableItems.changes\n            .pipe(startWith(this._focusableItems), takeUntilDestroyed(this._destroyRef))\n            .subscribe((items) => {\n                this._handleItemSubscriptions(items.toArray());\n            });\n\n        this._focusableLists.changes\n            .pipe(\n                startWith(this._focusableLists),\n                switchMap((queryList: QueryList<FocusableListDirective>) => {\n                    const lists = queryList.toArray();\n                    return merge(...lists.map((list) => list._gridListFocused$));\n                }),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe((focusedEvent) => {\n                this.rowFocused.emit(focusedEvent);\n\n                const lists = this._focusableLists.toArray();\n                const listsLength = lists.length;\n                for (let i = 0; i < listsLength; i++) {\n                    const list = lists[i];\n                    list.setTabbable(false);\n                    list._setItemsTabbable(false);\n                }\n            });\n\n        this._focusableLists.changes\n            .pipe(\n                startWith(this._focusableLists),\n                switchMap((queryList: QueryList<FocusableListDirective>) => {\n                    const lists = queryList.toArray();\n                    return merge(...lists.map((list) => list._gridItemFocused$));\n                }),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe((focusedEvent) => {\n                this.itemFocused.emit(focusedEvent);\n\n                const lists = this._focusableLists.toArray();\n                const listsLength = lists.length;\n                for (let i = 0; i < listsLength; i++) {\n                    const list = lists[i];\n                    list.setTabbable(false);\n                    list._setItemsTabbable(false);\n                }\n            });\n\n        this._focusableLists.changes\n            .pipe(\n                startWith(this._focusableLists),\n                switchMap((queryList: QueryList<FocusableListDirective>) => {\n                    const lists = queryList.toArray();\n                    return merge(...lists.map((list) => list._keydown$));\n                }),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe(({ event, list, activeItemIndex }) => this._onKeydown(event, list, activeItemIndex));\n    }\n\n    /**\n     * Focus cell by position.\n     * @param position position of the cell\n     */\n    focusCell(position: FocusableCellPosition): void {\n        const list = this._focusableLists.get(position.rowIndex);\n        if (list) {\n            list.setActiveItem(position.colIndex);\n        }\n    }\n\n    /** @hidden */\n    _onKeydown(event: KeyboardEvent, list: FocusableListDirective, activeItemIndex: Nullable<number>): void {\n        if (\n            !KeyUtil.isKeyCode(event, [UP_ARROW, DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, PAGE_DOWN, PAGE_UP]) ||\n            this._preventKeydown\n        ) {\n            return;\n        }\n\n        const lists = this._focusableLists.toArray();\n        const currentRowIndex = lists.findIndex((item) => item === list);\n        let nextRowIndex: number | undefined;\n        let nextRowItemIndex = activeItemIndex ?? 0;\n        let scrollIntoView: ScrollPosition;\n\n        const listItemsLength = list._focusableItems().length;\n        const isFirstItemLtr = activeItemIndex === 0 && this.contentDirection !== 'rtl';\n        const isLastItemRtl = activeItemIndex === listItemsLength - 1 && this.contentDirection === 'rtl';\n\n        const isFirstItemRtl = activeItemIndex === 0 && this.contentDirection === 'rtl';\n        const isLastItemLtr = activeItemIndex === listItemsLength - 1 && this.contentDirection !== 'rtl';\n\n        switch (event.keyCode) {\n            case UP_ARROW:\n                event.preventDefault();\n                nextRowIndex = currentRowIndex - 1;\n                break;\n            case DOWN_ARROW:\n                event.preventDefault();\n                nextRowIndex = currentRowIndex + 1;\n                break;\n            case LEFT_ARROW:\n                if (this.wrapHorizontally && (isFirstItemLtr || isLastItemRtl)) {\n                    event.preventDefault();\n                    nextRowIndex = currentRowIndex - 1;\n                    nextRowItemIndex = lists[nextRowIndex]?._focusableItems().length - 1;\n                }\n                break;\n            case RIGHT_ARROW:\n                if (this.wrapHorizontally && (isFirstItemRtl || isLastItemLtr)) {\n                    event.preventDefault();\n                    nextRowIndex = currentRowIndex + 1;\n                    nextRowItemIndex = 0;\n                }\n                break;\n            case PAGE_DOWN:\n                event.preventDefault();\n                nextRowIndex = lists.findLastIndex((item) => item._isVisible);\n                scrollIntoView = 'top';\n                break;\n            case PAGE_UP:\n                event.preventDefault();\n                nextRowIndex = lists.findIndex((item) => item._isVisible);\n                scrollIntoView = 'bottom';\n                break;\n        }\n\n        const nextRow = lists[nextRowIndex ?? -1];\n        if (nextRow) {\n            if (nextRow.focusable) {\n                nextRow.focus(scrollIntoView);\n                return;\n            }\n\n            const itemIndex = this._getItemIndex(nextRow, nextRowItemIndex);\n            if (itemIndex != null) {\n                nextRow.setActiveItem(itemIndex, scrollIntoView);\n            }\n        }\n    }\n\n    /** @hidden */\n    private _getItemIndex(list: FocusableListDirective, activeIndex: number): Nullable<number> {\n        if (activeIndex >= 0 && activeIndex < list._focusableItems().length) {\n            return activeIndex;\n        }\n\n        if (this.shortRowFocus == null) {\n            return null;\n        }\n\n        return this.shortRowFocus === 'first' ? 0 : list._focusableItems().length - 1;\n    }\n\n    /** @hidden */\n    private _handleItemSubscriptions(items: ReadonlyArray<FocusableItem>): void {\n        const itemsLength = items.length;\n        for (let i = 0; i < itemsLength; i++) {\n            const item = items[i];\n            if (!(item instanceof FocusableItemDirective) || this._subscribedItems.has(item)) {\n                continue;\n            }\n\n            this._subscribedItems.add(item);\n\n            outputToObservable(item.focusableChildElementFocused)\n                .pipe(takeUntilDestroyed(this._destroyRef))\n                .subscribe(() => {\n                    const lists = this._focusableLists.toArray();\n                    const listsLength = lists.length;\n                    for (let j = 0; j < listsLength; j++) {\n                        const focusableItems = lists[j]._focusableItems();\n                        const focusableItemsLength = focusableItems.length;\n                        for (let k = 0; k < focusableItemsLength; k++) {\n                            const focusableItem = focusableItems[k];\n                            focusableItem.setTabbable(false);\n                            (focusableItem as FocusableItemDirective).enableTabbableElements();\n                        }\n                    }\n                });\n            outputToObservable(item._parentFocusableItemFocused)\n                .pipe(takeUntilDestroyed(this._destroyRef))\n                .subscribe(() => {\n                    const lists = this._focusableLists.toArray();\n                    const listsLength = lists.length;\n                    for (let j = 0; j < listsLength; j++) {\n                        const focusableItems = lists[j]._focusableItems();\n                        const focusableItemsLength = focusableItems.length;\n                        for (let k = 0; k < focusableItemsLength; k++) {\n                            const focusableItem = focusableItems[k];\n                            if (item !== focusableItem) {\n                                (focusableItem as FocusableItemDirective).disableTabbableElements();\n                            } else {\n                                (focusableItem as FocusableItemDirective).enableTabbableElements();\n                            }\n                        }\n                    }\n                });\n        }\n    }\n\n    /** @hidden */\n    private _watchListItems(list: FocusableListDirective): void {\n        if (this._listItemEffects.has(list)) {\n            return;\n        }\n\n        this._listItemEffects.add(list);\n        runInInjectionContext(this._injector, () => {\n            effect(() => {\n                this._handleItemSubscriptions(list._focusableItems());\n            });\n        });\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { FocusableListModule } from '../focusable-list';\nimport { FocusableGridDirective } from './focusable-grid.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [FocusableListModule, FocusableGridDirective],\n    exports: [FocusableListModule, FocusableGridDirective]\n})\nexport class FocusableGridModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const IgnoreClickOnSelectionDirectiveToken = new InjectionToken('Ignore click on selection directive');\n","import { Directive, DOCUMENT, ElementRef, HostListener, Inject } from '@angular/core';\nimport { IgnoreClickOnSelectionDirectiveToken } from './tokens';\n\n/**\n * Directive will stop propagation and prevent default of click, if selected area is coming from\n * directive's host element. This gives ability to not cancel all clicks on element, just the ones\n * which include selection\n */\n@Directive({\n    selector: '[fdkIgnoreClickOnSelection]',\n    standalone: true,\n    providers: [\n        {\n            provide: IgnoreClickOnSelectionDirectiveToken,\n            useExisting: IgnoreClickOnSelectionDirective\n        }\n    ]\n})\nexport class IgnoreClickOnSelectionDirective {\n    /** @hidden */\n    constructor(\n        @Inject(DOCUMENT) private document: Document,\n        private _elementRef: ElementRef<HTMLElement>\n    ) {}\n\n    /** Host click listener. Checks for selection existence and if finds one, checks anchor */\n    @HostListener('click', ['$event'])\n    clicked($event: MouseEvent): void {\n        const selection = this.document.getSelection();\n        if (selection?.toString()) {\n            if (\n                selection.anchorNode &&\n                (this._elementRef.nativeElement.isSameNode(selection.anchorNode) ||\n                    this._elementRef.nativeElement.isSameNode(selection.anchorNode.parentElement))\n            ) {\n                $event.stopPropagation();\n                $event.preventDefault();\n            }\n        }\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { IgnoreClickOnSelectionDirective } from './ignore-click-on-selection.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [IgnoreClickOnSelectionDirective],\n    exports: [IgnoreClickOnSelectionDirective]\n})\nexport class IgnoreClickOnSelectionModule {}\n","import {\n    afterNextRender,\n    AfterViewInit,\n    DestroyRef,\n    Directive,\n    ElementRef,\n    inject,\n    Injector,\n    Input\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject } from 'rxjs';\nimport { distinctUntilChanged, filter } from 'rxjs/operators';\nimport { TabbableElementService } from '../../services/tabbable-element.service';\n\n@Directive({\n    selector: '[fdkInitialFocus]',\n    standalone: true,\n    providers: [TabbableElementService]\n})\nexport class InitialFocusDirective implements AfterViewInit {\n    /**\n     * CSS selector of an element that should be focused.\n     */\n    @Input()\n    fdkInitialFocus = '.fd-initial-focus-item';\n\n    /**\n     * Whether initial focus enabled for a current element.\n     */\n    @Input()\n    set enabled(value: boolean) {\n        if (value === this.enabled) {\n            return;\n        }\n        this._enabled$.next(value);\n    }\n\n    get enabled(): boolean {\n        return this._enabled$.getValue();\n    }\n\n    /**\n     * Whether to focus last element in a found array of elements.\n     */\n    @Input()\n    focusLastElement = false;\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private readonly _injector = inject(Injector);\n\n    /** @hidden */\n    private readonly _enabled$ = new BehaviorSubject<boolean>(true);\n\n    /** @hidden */\n    constructor(\n        private _elmRef: ElementRef<HTMLElement>,\n        private readonly _tabbableService: TabbableElementService\n    ) {}\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._enabled$\n            .pipe(\n                distinctUntilChanged(),\n                filter((enabled) => enabled),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe(() => {\n                afterNextRender(() => this._focus(), { injector: this._injector });\n            });\n    }\n\n    /**\n     * @hidden\n     * Searches for an appropriate focusable element\n     */\n    private _getFocusableElement(): HTMLElement | null {\n        if (!this.fdkInitialFocus) {\n            return this._tabbableService.getTabbableElement(this._elmRef.nativeElement, this.focusLastElement);\n        }\n\n        const autoFocusableItems = this._elmRef.nativeElement.querySelectorAll(\n            this.fdkInitialFocus\n        ) as NodeListOf<HTMLElement>;\n\n        if (autoFocusableItems.length > 0) {\n            return !this.focusLastElement ? autoFocusableItems[0] : autoFocusableItems[autoFocusableItems.length - 1];\n        }\n\n        // If no elements found, fallback to a first tabbable element.\n        return this._tabbableService.getTabbableElement(this._elmRef.nativeElement, this.focusLastElement);\n    }\n\n    /** @hidden */\n    private _focus(): void {\n        if (!this.enabled) {\n            return;\n        }\n        const elm = this._getFocusableElement();\n        elm?.focus();\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { InitialFocusDirective } from './initial-focus.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [InitialFocusDirective],\n    exports: [InitialFocusDirective]\n})\nexport class InitialFocusModule {}\n","import { DestroyRef, Directive, ElementRef, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs';\nimport { intersectionObservable } from '../../functions';\n\n@Directive({\n    selector: '[fdkIntersectionSpy]',\n    standalone: true\n})\nexport class IntersectionSpyDirective implements OnInit {\n    /** Intersection offset in px. */\n    @Input('fdkIntersectionSpy')\n    offset = 20;\n    /** Intersection observer options. */\n    @Input()\n    viewportOptions: IntersectionObserverInit;\n\n    /** Event emitted when intersection observer emits with the current element. */\n    @Output()\n    intersected = new EventEmitter<boolean>();\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private readonly _elementRef = inject(ElementRef);\n\n    /** @hidden */\n    ngOnInit(): void {\n        intersectionObservable(this._elementRef.nativeElement, this.viewportOptions)\n            .pipe(\n                map((entries) => entries[0]),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe((entry) => {\n                this.intersected.emit(entry.isIntersecting);\n            });\n    }\n}\n","import {\n    afterNextRender,\n    DestroyRef,\n    Directive,\n    effect,\n    ElementRef,\n    inject,\n    input,\n    numberAttribute,\n    output,\n    Renderer2\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { ViewportSizeObservable } from '../../tokens/viewport-size.observable';\n\n@Directive({\n    selector: '[fdkLineClampTarget], [fdLineClampTarget], [fd-lineclamp-target]',\n    exportAs: 'fdLineClampTarget'\n})\nexport class LineClampTargetDirective {\n    /**\n     * Target text for clamping\n     */\n    readonly fdLineClampTargetText = input<string>('');\n\n    /**\n     * Event with target instance for clamping\n     */\n    readonly update = output<LineClampTargetDirective>();\n\n    /** @hidden */\n    private readonly _elementRef = inject(ElementRef);\n\n    /**\n     * @hidden\n     * Tracks whether the directive has completed its initial render.\n     * Used to prevent a double emission on startup: afterNextRender handles\n     * the first emit, so the effect must skip its own initial execution.\n     */\n    private _initialized = false;\n\n    /**\n     * Native element of clamping target\n     */\n    get targetElement(): HTMLElement {\n        return this._elementRef.nativeElement;\n    }\n\n    /** @hidden */\n    constructor() {\n        // Skip the initial run — afterNextRender will emit once the view is ready.\n        // Only emit on subsequent text changes.\n        effect(() => {\n            this.fdLineClampTargetText(); // track signal\n            if (this._initialized) {\n                this.update.emit(this);\n            }\n        });\n\n        // Perform the initial emit after the first render and mark as initialized.\n        afterNextRender(() => {\n            this._initialized = true;\n            this.update.emit(this);\n        });\n    }\n}\n\n@Directive({\n    selector: '[fdkLineClamp]',\n    exportAs: 'fdLineClamp'\n})\nexport class LineClampDirective {\n    /**\n     * Count lines for clamping\n     */\n    readonly fdLineClampLines = input(0, { transform: numberAttribute });\n\n    /**\n     * Clamping state\n     */\n    readonly fdLineclampState = input(false);\n\n    /**\n     * Event return count of lines from the target\n     */\n    readonly lineCountUpdate = output<number>();\n\n    /** @hidden */\n    private readonly _elementRef = inject(ElementRef);\n\n    /** @hidden */\n    private readonly _renderer = inject(Renderer2);\n\n    /** @hidden */\n    private readonly _viewportSize$ = inject(ViewportSizeObservable);\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private _lineClampTarget: HTMLElement;\n\n    /** @hidden */\n    private _originalText: string;\n\n    /**\n     * @hidden\n     * Determined once in the constructor — before effect() runs — so that\n     * the very first effect execution already has the correct value.\n     */\n    private _isNativeSupport = true;\n\n    /**\n     * Root native element of clamping box\n     */\n    get rootElement(): HTMLElement {\n        return this._elementRef.nativeElement;\n    }\n\n    /** @hidden */\n    constructor() {\n        // Detect native support immediately so effect() reads the correct value\n        // on its first (synchronous) execution, before afterNextRender fires.\n        this._isNativeSupport = typeof this.rootElement.style.webkitLineClamp !== 'undefined';\n\n        // React to input changes\n        effect(() => {\n            const state = this.fdLineclampState();\n            const lines = this.fdLineClampLines();\n\n            // Only process if we have the required values\n            if (Number.isFinite(lines) && lines > 0) {\n                this.reset();\n                this.refreshClamp(state, lines);\n            }\n        });\n\n        // Initialize after view is ready.\n        // _isNativeSupport is already set in the constructor; this only triggers\n        // the initial line-count check once the element has been laid out.\n        // setTimeout forces a recheck after parent elements have also rendered.\n        afterNextRender(() => {\n            setTimeout(() => {\n                this._checkLineCount();\n            });\n        });\n\n        // Subscribe to viewport changes\n        this._viewportSize$\n            .pipe(distinctUntilChanged(), debounceTime(200), takeUntilDestroyed(this._destroyRef))\n            .subscribe({\n                next: () => this._checkLineCount()\n            });\n    }\n\n    /** @hidden */\n    reset(): void {\n        if (this._lineClampTarget) {\n            this._lineClampTarget.textContent = this._originalText;\n        }\n        if (this._isNativeSupport) {\n            this._resetNative();\n        }\n    }\n\n    /** @hidden */\n    refreshTarget(event: LineClampTargetDirective): void {\n        this._lineClampTarget = event.targetElement;\n        this._originalText = event.fdLineClampTargetText();\n        this._checkLineCount();\n    }\n\n    /** @hidden\n     * Refresh clamp styles based on state and line count\n     */\n    refreshClamp(state: boolean, lineCount: number): void {\n        if (state && lineCount) {\n            this._applyNative(lineCount);\n            if (!this._isNativeSupport) {\n                this._truncate(lineCount);\n            }\n        }\n    }\n\n    /** @hidden\n     * Truncate text in the target box, if browser not support lineclamp style\n     */\n    private _truncate(lineCount: number): void {\n        if (!this._lineClampTarget || !this._originalText) {\n            return;\n        }\n        const lineClampHeight = Math.ceil(this._getLineHeight() * lineCount);\n        const ellipsisTextArray = this._originalText.split(' ');\n        const ellipsisText = (): void => {\n            if (this.rootElement.scrollHeight > lineClampHeight) {\n                ellipsisTextArray.pop();\n                this._lineClampTarget.textContent = ellipsisTextArray.join(' ') + '...';\n                ellipsisText.call(this);\n            }\n        };\n        ellipsisText();\n    }\n\n    /** @hidden\n     * Get lineheight for rootelement, if browser not support lineclamp style\n     */\n    private _getLineHeight(): number {\n        const lineHeight = window.getComputedStyle(this.rootElement, null).getPropertyValue('line-height');\n        if (lineHeight === 'normal') {\n            return parseInt(window.getComputedStyle(this.rootElement, null).getPropertyValue('font-size'), 10) * 1.25;\n        }\n\n        return parseFloat(lineHeight);\n    }\n\n    /** @hidden\n     * Setup native styles for lineclamp text\n     */\n    private _applyNative(lineCount: number): void {\n        if (this._isNativeSupport) {\n            this._renderer.setStyle(this.rootElement, 'display', '-webkit-box');\n            this._renderer.setStyle(this.rootElement, 'overflow', 'hidden');\n            this._renderer.setStyle(this.rootElement, 'text-overflow', 'ellipsis');\n            this._renderer.setStyle(this.rootElement, '-webkit-box-orient', 'vertical');\n            this._renderer.setStyle(this.rootElement, '-webkit-line-clamp', `${lineCount}`);\n        }\n    }\n\n    /** @hidden\n     * Reset native styles for lineclamp text\n     */\n    private _resetNative(): void {\n        if (this._isNativeSupport) {\n            this._renderer.setStyle(this.rootElement, 'display', '');\n            this._renderer.setStyle(this.rootElement, 'overflow', '');\n            this._renderer.setStyle(this.rootElement, 'text-overflow', '');\n            this._renderer.setStyle(this.rootElement, '-webkit-box-orient', '');\n            this._renderer.setStyle(this.rootElement, '-webkit-line-clamp', '');\n        }\n    }\n\n    /** @hidden */\n    private _checkLineCount(): void {\n        if (!this.rootElement) {\n            return;\n        }\n        const style = window.getComputedStyle(this.rootElement, null);\n\n        this.reset();\n\n        const fontSize = parseInt(style.getPropertyValue('font-size'), 10);\n        const boxSizing = style.getPropertyValue('box-sizing');\n        // Use offsetHeight instead of getComputedStyle('height') because\n        // computed height can return 'auto' for elements without explicit height.\n        let height = this.rootElement.offsetHeight;\n\n        let lineHeight = parseFloat(style.getPropertyValue('line-height'));\n        if (isNaN(lineHeight)) {\n            lineHeight = fontSize * 1.2;\n        }\n        if (boxSizing === 'border-box') {\n            const paddingTop = parseInt(style.getPropertyValue('padding-top'), 10);\n            const paddingBottom = parseInt(style.getPropertyValue('padding-bottom'), 10);\n            const borderTop = parseInt(style.getPropertyValue('border-top-width'), 10);\n            const borderBottom = parseInt(style.getPropertyValue('border-bottom-width'), 10);\n            height = height - paddingTop - paddingBottom - borderTop - borderBottom;\n        }\n        this.refreshClamp(this.fdLineclampState(), this.fdLineClampLines());\n        this.lineCountUpdate.emit(Math.ceil(height / lineHeight));\n    }\n}\n","import { NgModule } from '@angular/core';\n\nimport { LineClampDirective, LineClampTargetDirective } from './line-clamp.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [LineClampTargetDirective, LineClampDirective],\n    exports: [LineClampTargetDirective, LineClampDirective]\n})\nexport class LineClampModule {}\n","import {\n    A,\n    BACKSPACE,\n    C,\n    DASH,\n    DELETE,\n    DOWN_ARROW,\n    END,\n    ENTER,\n    ESCAPE,\n    HOME,\n    LEFT_ARROW,\n    NUMPAD_MINUS,\n    RIGHT_ARROW,\n    TAB,\n    UP_ARROW,\n    V,\n    X\n} from '@angular/cdk/keycodes';\nimport { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { KeyUtil } from '../../functions';\n\n@Directive({\n    selector: '[fdkOnlyDigits]',\n    standalone: true\n})\nexport class OnlyDigitsDirective {\n    /** Allow using decimal */\n    @Input() decimal = false;\n    /** Define decimal separator\n     * Default: .(dot)\n     */\n    @Input() decimalSeparator = '.';\n\n    /** @hidden */\n    private _inputElement: HTMLInputElement;\n    /** @hidden */\n    private _hasDecimalPoint = false;\n\n    /** @hidden */\n    constructor(private readonly _el: ElementRef) {\n        this._inputElement = this._el.nativeElement;\n    }\n\n    /** @hidden */\n    @HostListener('keydown', ['$event'])\n    onKeyDown(e: KeyboardEvent): void {\n        if (\n            // Allow: Delete, Backspace, Tab, Escape, Enter, End, Home, Arrow Left, Arrow Right, Arrow Up, Arrow Down\n            KeyUtil.isKeyCode(e, [\n                DELETE,\n                BACKSPACE,\n                TAB,\n                ESCAPE,\n                ENTER,\n                END,\n                HOME,\n                LEFT_ARROW,\n                RIGHT_ARROW,\n                UP_ARROW,\n                DOWN_ARROW\n            ]) ||\n            // Allow: Ctrl+(A/C/V/X) and Cmd+(A/C/V/X) (Mac)\n            (KeyUtil.isKeyCode(e, [A, C, V, X]) && (e.ctrlKey || e.metaKey))\n        ) {\n            return; // let it happen, don't do anything\n        }\n\n        if (KeyUtil.isKeyCode(e, [DASH, NUMPAD_MINUS])) {\n            const newValue = this._forecastValue(e.key);\n\n            if (this._inputElement.value[0] === '-' || newValue[0] !== '-') {\n                e.preventDefault();\n\n                return; // has DASH point\n            } else {\n                return; // Allow: only one DASH point\n            }\n        }\n\n        if (this.decimal && e.key === this.decimalSeparator) {\n            const newValue = this._forecastValue(e.key);\n            if (newValue.split(this.decimalSeparator).length > 2) {\n                // has two or more decimal points\n                e.preventDefault();\n                return;\n            } else {\n                this._hasDecimalPoint = newValue.indexOf(this.decimalSeparator) > -1;\n                return; // Allow: only one decimal point\n            }\n        }\n\n        // Ensure that it is a number and stop the keypress\n        if (e.key === ' ' || isNaN(Number(e.key))) {\n            e.preventDefault();\n            return;\n        }\n    }\n\n    /** @hidden */\n    @HostListener('paste', ['$event'])\n    onPaste(event: any): void {\n        if (window['clipboardData']) {\n            // Browser is IE\n            this._pasteData(window['clipboardData'].getData('text'));\n        } else if (event.clipboardData && event.clipboardData.getData) {\n            // Other browsers\n            this._pasteData(event.clipboardData.getData('text/plain'));\n        }\n\n        event.preventDefault();\n    }\n\n    /** @hidden */\n    @HostListener('drop', ['$event'])\n    onDrop(event: DragEvent): void {\n        const textData = event.dataTransfer?.getData('text') ?? '';\n        this._inputElement.focus();\n        this._pasteData(textData);\n\n        event.preventDefault();\n    }\n\n    /** @hidden */\n    private _pasteData(pastedContent: string): void {\n        const sanitizedContent = this._sanitizeInput(pastedContent);\n        const pasted = document.execCommand('insertText', false, sanitizedContent);\n        if (!pasted) {\n            if (this._inputElement.setRangeText) {\n                const { selectionStart: start, selectionEnd: end } = this._inputElement;\n                this._inputElement.setRangeText(sanitizedContent, start ?? 0, end ?? 0, 'end');\n                // Angular's Reactive Form relies on \"input\" event, but on Firefox, the setRangeText method doesn't trigger it\n                // so we have to trigger it ourself.\n                if (typeof window['InstallTrigger'] !== 'undefined') {\n                    this._inputElement.dispatchEvent(new Event('input', { cancelable: true }));\n                }\n            } else {\n                // Browser does not support setRangeText, e.g. IE\n                this._insertAtCursor(this._inputElement, sanitizedContent);\n            }\n        }\n\n        if (this.decimal) {\n            this._hasDecimalPoint = this._inputElement.value.indexOf(this.decimalSeparator) > -1;\n        }\n    }\n\n    // The following 2 methods were added from the below article for browsers that do not support setRangeText\n    // https://stackoverflow.com/questions/11076975/how-to-insert-text-into-the-textarea-at-the-current-cursor-position\n    /** @hidden */\n    private _insertAtCursor(myField: HTMLInputElement, myValue: string): void {\n        const startPos = myField.selectionStart ?? 0;\n        const endPos = myField.selectionEnd ?? 0;\n\n        myField.value =\n            myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);\n\n        const pos = startPos + myValue.length;\n        myField.focus();\n        myField.setSelectionRange(pos, pos);\n\n        this._triggerEvent(myField, 'input');\n    }\n\n    /** @hidden */\n    private _triggerEvent(el: HTMLInputElement, type: string): void {\n        if ('createEvent' in document) {\n            // modern browsers, IE9+\n            const e = document.createEvent('HTMLEvents');\n            e.initEvent(type, false, true);\n            el.dispatchEvent(e);\n        }\n    }\n    // end stack overflow code\n\n    /** @hidden */\n    private _sanitizeInput(input: string): string {\n        let result = '';\n        if (this.decimal && this._isValidDecimal(input)) {\n            const regex = new RegExp(`[^0-9${this.decimalSeparator}]`, 'g');\n            result = input.replace(regex, '');\n        } else {\n            result = input.replace(/[^0-9]/g, '');\n        }\n\n        if (input[0] === '-') {\n            result = `-${result}`;\n        }\n\n        const maxLength = this._inputElement.maxLength;\n        if (maxLength > 0) {\n            // the input element has maxLength limit\n            const allowedLength = maxLength - this._inputElement.value.length;\n            result = allowedLength > 0 ? result.substring(0, allowedLength) : '';\n        }\n\n        return result;\n    }\n\n    /** @hidden */\n    private _isValidDecimal(string: string): boolean {\n        if (!this._hasDecimalPoint) {\n            return string.split(this.decimalSeparator).length <= 2;\n        } else {\n            // the input element already has a decimal separator\n            const selectedText = this._getSelection;\n            if (selectedText && selectedText.indexOf(this.decimalSeparator) > -1) {\n                return string.split(this.decimalSeparator).length <= 2;\n            } else {\n                return string.indexOf(this.decimalSeparator) < 0;\n            }\n        }\n    }\n\n    /** @hidden */\n    private get _getSelection(): string {\n        const { selectionStart, selectionEnd } = this._inputElement;\n\n        return this._inputElement.value.substring(selectionStart ?? 0, selectionEnd ?? 0);\n    }\n\n    /** @hidden */\n    private _forecastValue(key: string): string {\n        const { selectionStart, selectionEnd, value: oldValue } = this._inputElement;\n        const selection = oldValue.substring(selectionStart ?? 0, selectionEnd ?? 0);\n\n        return selection\n            ? oldValue.replace(selection, key)\n            : oldValue.substring(0, selectionStart ?? 0) + key + oldValue.substring(selectionStart ?? 0);\n    }\n}\n","import { NgModule } from '@angular/core';\n\nimport { OnlyDigitsDirective } from './only-digits.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [OnlyDigitsDirective],\n    exports: [OnlyDigitsDirective]\n})\nexport class OnlyDigitsModule {}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n    selector: '[fdkOverflowListItem]',\n    standalone: true\n})\nexport class OverflowListItemDirective {\n    /** @hidden */\n    constructor(public el: ElementRef) {}\n}\n","import {\n    AfterViewInit,\n    ContentChildren,\n    DestroyRef,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    Input,\n    Output,\n    QueryList,\n    inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { OverflowListItemDirective } from './overflow-list-item.directive';\n\n@Directive({\n    selector: '[fdkOverflowList]',\n    standalone: true\n})\nexport class OverflowListDirective implements AfterViewInit {\n    /**\n     * @description Offset to calculate correct position\n     */\n    @Input()\n    overflowOffset = 0;\n\n    /**\n     * @description Flag representing rtl mode\n     */\n    @Input()\n    isRtl: boolean;\n\n    /**\n     * @description value of display property of existed list items\n     */\n    @Input()\n    itemCssBlockValue = 'flex';\n\n    /**\n     * @description Emits when changed amount of extra items\n     */\n    @Output()\n    overflowChanged: EventEmitter<number> = new EventEmitter<number>();\n\n    /**\n     * @description References to QueryList of OverflowListItemDirective\n     */\n    @ContentChildren(OverflowListItemDirective)\n    overflowItems: QueryList<OverflowListItemDirective>;\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private _resizeObserver: ResizeObserver;\n\n    /** @hidden */\n    private _mutationObserver: MutationObserver;\n\n    /** @hidden Track whether a recalculation microtask is already scheduled. */\n    private _recalcScheduled = false;\n\n    /** @hidden */\n    constructor(private _el: ElementRef) {}\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._initResizeObserver();\n        this._initMutationObserver();\n        this.calculateOverflow();\n\n        fromEvent(window, 'resize')\n            .pipe(debounceTime(100), takeUntilDestroyed(this._destroyRef))\n            .subscribe(() => this.calculateOverflow());\n    }\n\n    /**\n     * @description Get amount of extra items in current list\n     * */\n    getAmountOfExtraItems(): number {\n        const elements = this.overflowItems.toArray().map((item) => item.el.nativeElement);\n        const computed = getComputedStyle(this._el.nativeElement);\n        const contentWidth = Math.floor(\n            this._el.nativeElement.clientWidth -\n                parseFloat(computed.paddingLeft || '0') -\n                parseFloat(computed.paddingRight || '0')\n        );\n\n        if (contentWidth <= 0) {\n            return 0;\n        }\n\n        return this._checkWidthWithOffset(elements, contentWidth);\n    }\n\n    /**\n     * @description Schedule overflow recalculation via microtask.\n     * Microtasks execute after DOM mutations but before the browser paints,\n     * so items are measured and hidden before the user ever sees them overflow.\n     * Multiple calls within the same task are coalesced by the _recalcScheduled flag.\n     */\n    public calculateOverflow(): void {\n        if (this._recalcScheduled) {\n            return;\n        }\n        this._recalcScheduled = true;\n        Promise.resolve().then(() => {\n            this._recalcScheduled = false;\n            this._calculateAmountOfOverflowedItems();\n        });\n    }\n\n    /** @hidden */\n    private _initResizeObserver(): void {\n        this._resizeObserver = new ResizeObserver(() => {\n            this.calculateOverflow();\n        });\n        this._resizeObserver.observe(this._el.nativeElement);\n        this._destroyRef.onDestroy(() => this._resizeObserver.disconnect());\n    }\n\n    /**\n     * @hidden\n     * @description Watch for DOM content changes within items.\n     * - childList: detects items added/removed (e.g. new tabs rendered by @for)\n     * - characterData: detects text content changes (e.g. label updates, i18n)\n     * Does NOT watch attributes, so our own measurement (hidden/display toggles)\n     * and the consumer's CSS class changes won't cause infinite loops.\n     */\n    private _initMutationObserver(): void {\n        this._mutationObserver = new MutationObserver(() => this.calculateOverflow());\n        this._mutationObserver.observe(this._el.nativeElement, {\n            childList: true,\n            characterData: true,\n            subtree: true\n        });\n        this._destroyRef.onDestroy(() => this._mutationObserver.disconnect());\n    }\n\n    /** @hidden */\n    private _calculateAmountOfOverflowedItems(): void {\n        const extra = this.getAmountOfExtraItems();\n        this.overflowChanged.emit(extra);\n    }\n\n    /**\n     * @hidden\n     * @param arrItems\n     * @param containerWidth\n     * @param checkWithOffset\n     * */\n    private _checkWidthWithOffset(\n        arrItems: HTMLElement[],\n        containerWidth: number,\n        checkWithOffset: boolean = false\n    ): number {\n        let itemsTotalWidth = 0;\n        const parentWidth = checkWithOffset ? containerWidth - this.overflowOffset : containerWidth;\n\n        arrItems.forEach((item) => {\n            item.hidden = true;\n            item.style.display = this.itemCssBlockValue;\n        });\n\n        for (let i = 0; i < arrItems.length; i++) {\n            const item = arrItems[i];\n\n            itemsTotalWidth += this.isRtl\n                ? containerWidth - item.offsetLeft - itemsTotalWidth\n                : Math.ceil(item.offsetWidth + item.offsetLeft - itemsTotalWidth);\n\n            if (parentWidth < itemsTotalWidth) {\n                this._clearTempStyles(arrItems);\n                return checkWithOffset\n                    ? arrItems.length - i\n                    : this._checkWidthWithOffset(arrItems, containerWidth, true);\n            }\n        }\n\n        this._clearTempStyles(arrItems);\n        return 0;\n    }\n\n    /**\n     * @param arrItems\n     * @hidden\n     * */\n    private _clearTempStyles(arrItems: HTMLElement[]): void {\n        arrItems.forEach((item) => {\n            item.hidden = false;\n            item.style.removeProperty('display');\n        });\n    }\n}\n","import { NgModule } from '@angular/core';\n\nimport { OverflowListItemDirective } from './overflow-list-item.directive';\nimport { OverflowListDirective } from './overflow-list.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [OverflowListDirective, OverflowListItemDirective],\n    exports: [OverflowListDirective, OverflowListItemDirective]\n})\nexport class OverflowListModule {}\n","import { ElementRef } from '@angular/core';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\n\n/** @Hidden */\nexport function setReadonlyState(\n    element: HasElementRef<Element> | Element | ElementRef<Element>,\n    isReadonly: boolean\n): void {\n    const htmlElement = getNativeElement(element);\n    if (isReadonly) {\n        htmlElement.classList.add('is-readonly');\n        htmlElement.setAttribute('readonly', '');\n    } else {\n        htmlElement.classList.remove('is-readonly');\n        htmlElement.removeAttribute('readonly');\n    }\n}\n","import { ElementRef } from '@angular/core';\nimport { ReadonlyViewModifier } from './readonly-view-modifier.interface';\nimport { setReadonlyState } from './set-readonly-state';\n\nexport class DefaultReadonlyViewModifier implements ReadonlyViewModifier {\n    /** @hidden */\n    constructor(private elementRef: ElementRef<Element>) {}\n\n    /** @hidden */\n    setReadonlyState = (isDisabled: boolean): void => {\n        setReadonlyState(this.elementRef, isDisabled);\n    };\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_READONLY_DIRECTIVE = new InjectionToken('Readonly directive token');\n","import { ElementRef, Injectable, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { getNativeElement } from '../../helpers/get-native-element';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\nimport { AttributeObserver } from '../../services/observers/attribute.observer';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class ReadonlyObserver {\n    /** @Hidden */\n    private readonly _attributeObserver = inject(AttributeObserver);\n\n    /** @Hidden */\n    static isReadonly(element: Element): boolean {\n        return element.classList.contains('is-readonly') || element.hasAttribute('readonly');\n    }\n\n    /** @hidden */\n    observe(element: HasElementRef<Element> | Element | ElementRef<Element>): Observable<boolean> {\n        return this._attributeObserver.observe(element).pipe(\n            map(() => ReadonlyObserver.isReadonly(getNativeElement(element))),\n            distinctUntilChanged()\n        );\n    }\n\n    /** @Hidden */\n    unobserve(element: HasElementRef<Element> | Element | ElementRef<Element>): void {\n        this._attributeObserver.unobserve(element);\n    }\n}\n","import {\n    DestroyRef,\n    ElementRef,\n    Inject,\n    Injectable,\n    Injector,\n    OnDestroy,\n    Optional,\n    Self,\n    SkipSelf,\n    afterNextRender,\n    inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, Observable, ReplaySubject, combineLatest } from 'rxjs';\nimport { distinctUntilChanged, startWith, tap } from 'rxjs/operators';\nimport { DefaultReadonlyViewModifier } from './default-readonly-view-modifier';\nimport { FDK_READONLY_DIRECTIVE } from './fdk-readonly.token';\nimport { ReadonlyBehavior } from './readonly-behavior.interface';\nimport { ReadonlyViewModifier } from './readonly-view-modifier.interface';\nimport { ReadonlyObserver } from './readonly.observer';\n\n@Injectable()\nexport class FdkReadonlyProvider extends ReplaySubject<boolean> implements ReadonlyBehavior, OnDestroy {\n    /** @Hidden */\n    fdkReadonly = false;\n\n    /** @hidden */\n    private readonly _viewModifiers$: BehaviorSubject<ReadonlyViewModifier[]>;\n\n    /** @hidden */\n    private _readonlyChange$: Observable<boolean>;\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private readonly readonlyObserver = inject(ReadonlyObserver);\n\n    /** @hidden */\n    private readonly _injector = inject(Injector);\n\n    /** @hidden */\n    constructor(\n        private elementRef: ElementRef<Element>,\n        @Optional() @Self() @Inject(FDK_READONLY_DIRECTIVE) private selfReadonly$: ReadonlyBehavior,\n        @Optional() @SkipSelf() @Inject(FDK_READONLY_DIRECTIVE) private parentReadonly$: ReadonlyBehavior\n    ) {\n        super(1);\n\n        // Initialize properties that depend on injected services\n        this._viewModifiers$ = new BehaviorSubject<ReadonlyViewModifier[]>(this._getInitialViewModifiers());\n        this._readonlyChange$ = this._getReadonlyChange$();\n\n        combineLatest([this._readonlyChange$, this._viewModifiers$])\n            .pipe(\n                tap(([isReadonly]) => this.setReadonlyState(isReadonly)),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe();\n        this._readonlyChange$\n            .pipe(\n                tap((isDisabled) => (this.fdkReadonly = isDisabled)),\n                tap((isDisabled) => this.next(isDisabled)),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe();\n    }\n\n    /** @hidden */\n    addViewModifier(modifier: ReadonlyViewModifier): void {\n        const viewModifiers = [...new Set([...this._viewModifiers$.value, modifier]).values()];\n        this._viewModifiers$.next(viewModifiers);\n    }\n\n    /** @hidden */\n    setReadonlyState(isReadonly: boolean): void {\n        afterNextRender(\n            () => {\n                this._viewModifiers$.value.forEach((viewModifier) => viewModifier.setReadonlyState(isReadonly));\n            },\n            { injector: this._injector }\n        );\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this.complete();\n        this.readonlyObserver.unobserve(this.elementRef);\n    }\n\n    /** @hidden */\n    private _getReadonlyChange$(): Observable<boolean> {\n        let selfReadonly = false;\n        let parentReadonly = false;\n\n        if (this.parentReadonly$) {\n            this.parentReadonly$\n                .pipe(\n                    startWith(this.parentReadonly$.fdkReadonly),\n                    tap((d) => (parentReadonly = d)),\n                    distinctUntilChanged(),\n                    tap(() => {\n                        if (parentReadonly) {\n                            this.setReadonlyState(true);\n                        }\n                        if (!selfReadonly && !parentReadonly) {\n                            this.setReadonlyState(false);\n                        }\n                    }),\n                    takeUntilDestroyed(this._destroyRef)\n                )\n                .subscribe();\n        }\n        if (this.selfReadonly$) {\n            this.selfReadonly$\n                .pipe(\n                    startWith(this.selfReadonly$.fdkReadonly),\n                    tap((d) => (selfReadonly = d)),\n                    distinctUntilChanged(),\n                    tap((isReadonly) => {\n                        if (!parentReadonly) {\n                            this.setReadonlyState(isReadonly);\n                        }\n                    }),\n                    takeUntilDestroyed(this._destroyRef)\n                )\n                .subscribe();\n        }\n        return this.readonlyObserver.observe(this.elementRef).pipe(distinctUntilChanged());\n    }\n\n    /** @hidden */\n    private _getInitialViewModifiers(): ReadonlyViewModifier[] {\n        return !this.selfReadonly$ ? [new DefaultReadonlyViewModifier(this.elementRef)] : [this.selfReadonly$];\n    }\n}\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, Input, booleanAttribute } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { FDK_READONLY_DIRECTIVE } from './fdk-readonly.token';\nimport { ReadonlyBehavior } from './readonly-behavior.interface';\nimport { setReadonlyState } from './set-readonly-state';\n\n@Directive({\n    selector: '[fdkReadonly]',\n    standalone: true,\n    providers: [\n        {\n            provide: FDK_READONLY_DIRECTIVE,\n            useExisting: ReadonlyBehaviorDirective\n        }\n    ]\n})\nexport class ReadonlyBehaviorDirective extends ReplaySubject<boolean> implements ReadonlyBehavior, AfterViewInit {\n    /** @Hidden */\n    @Input({ transform: booleanAttribute })\n    set fdkReadonly(value: boolean) {\n        this._readonlyInput$.next(value);\n    }\n\n    get fdkReadonly(): boolean {\n        return this._readonly;\n    }\n\n    /** @Hidden */\n    _readonly = false;\n    /** @hidden */\n    private readonly _readonlyInput$ = new BehaviorSubject(false);\n\n    /** @hidden */\n    constructor(\n        private _elementRef: ElementRef<HTMLElement>,\n        private _destroyRef: DestroyRef\n    ) {\n        super(1);\n        this._destroyRef.onDestroy(() => this.complete());\n    }\n\n    /** @Hidden */\n    setReadonlyState = (isReadonly: boolean): void => {\n        setReadonlyState(this._elementRef, isReadonly);\n    };\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._readonlyInput$\n            .pipe(\n                tap((isReadonly) => {\n                    if (isReadonly !== this._readonly) {\n                        this.setReadonlyState(isReadonly);\n                        this._readonly = isReadonly;\n                        this.next(isReadonly);\n                    }\n                }),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe();\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { ReadonlyBehaviorDirective } from './readonly-behavior.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [ReadonlyBehaviorDirective],\n    exports: [ReadonlyBehaviorDirective]\n})\nexport class ReadonlyBehaviorModule {}\n","import { Directive, Input, OnChanges, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core';\n\n/**\n * Directive to repeatably render template N times.\n *\n * @deprecated Use Angular's built-in `@for` control flow with the `range()` utility function instead.\n * Example: `@for (i of range(3); track i) { <div>Item {{ i }}</div> }`\n * This directive will be removed in a future major version.\n */\n@Directive({\n    selector: '[fdkRepeat]',\n    standalone: true\n})\nexport class RepeatDirective implements OnChanges {\n    /** Number of times to render a template. */\n    @Input('fdkRepeat')\n    count: number;\n\n    /** @hidden */\n    constructor(\n        private readonly _templateRef: TemplateRef<any>,\n        private readonly _viewContainerRef: ViewContainerRef\n    ) {}\n\n    /** @hidden */\n    ngOnChanges(changes: SimpleChanges): void {\n        if ((changes['count'] || changes['deprecatedCount']) && Number.isInteger(this.count)) {\n            this._viewContainerRef.clear();\n\n            for (let index = 0; index < Math.max(0, this.count); index++) {\n                this._viewContainerRef.createEmbeddedView(this._templateRef, { index });\n            }\n        }\n    }\n}\n","import { NgModule } from '@angular/core';\n\nimport { RepeatDirective } from './repeat.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [RepeatDirective],\n    exports: [RepeatDirective]\n})\nexport class RepeatModule {}\n","import { Directive, ElementRef, inject } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\nimport { HasElementRef } from '../../interfaces';\nimport { ResizeObserverService } from '../../services/resize-observer.service';\n\n@Directive({\n    selector: '[fdkResizeObserver]',\n    exportAs: 'fdkResizeObserver'\n})\nexport class ResizeObserverDirective implements HasElementRef {\n    /**\n     * The reference to the Resize target element.\n     **/\n    readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n    /**\n     * Observable that emits when the element is resized.\n     * Use this for programmatic subscriptions.\n     **/\n    readonly resizeEvents$ = inject(ResizeObserverService).observe(this.elementRef.nativeElement);\n\n    /**\n     * When the element is resized, emits an array of ResizeObserverEntry objects.\n     **/\n    readonly resized = outputFromObservable(this.resizeEvents$);\n}\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n    selector: '[fdkResizeHandle]',\n    standalone: true\n})\nexport class ResizeHandleDirective {\n    /** @hidden */\n    constructor(public elementRef: ElementRef) {}\n}\n","import {\n    AfterViewInit,\n    ContentChild,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    SimpleChanges,\n    inject\n} from '@angular/core';\nimport { Observable, Subscription, fromEvent, merge } from 'rxjs';\nimport { filter, map, pairwise, takeUntil, tap } from 'rxjs/operators';\nimport { Nullable } from '../../models/nullable';\nimport { RtlService } from '../../services/rtl.service';\nimport { ResizeHandleDirective } from './resize-handle.directive';\n\ninterface ResizeMove {\n    x: number;\n    y: number;\n}\n\n@Directive({\n    selector: '[fdkResize]',\n    standalone: true\n})\nexport class ResizeDirective implements OnChanges, AfterViewInit, OnDestroy {\n    /** Element limiting resizable container growth */\n    // eslint-disable-next-line @angular-eslint/no-input-rename\n    @Input('fdkResizeBoundary') resizeBoundary: string | HTMLElement = 'body';\n\n    /** Whether resizable behaviour should be disabled */\n\n    @Input('fdkResizeDisabled') disabled = false;\n\n    /** Additional class to be applied to the Element ref during resize. */\n    @Input()\n    fdkResizeClass: string;\n\n    /** Localization of resize handle inside resizable container */\n    // eslint-disable-next-line @angular-eslint/no-input-rename\n    @Input('fdkResizeHandleLocation') resizeHandleLocation: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' =\n        'bottom-right';\n\n    /** Resize handle reference - should be used if Resize handle is not a ContentChild of resizable container */\n    // eslint-disable-next-line @angular-eslint/no-input-rename\n    @Input('fdkResizeResizeHandleRef') set setResizeHandleReference(value: ResizeHandleDirective) {\n        this.resizeHandleReference = value;\n    }\n\n    /** Emits event when resizing has tarted */\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    @Output() onResizeStart = new EventEmitter<void>();\n\n    /** Emits event when resizing has ended */\n    // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n    @Output() onResizeEnd = new EventEmitter<void>();\n\n    /** @hidden Reference to Resize handle */\n    @ContentChild(ResizeHandleDirective, { static: false })\n    set resizeHandleReference(value: Nullable<ResizeHandleDirective>) {\n        this._resizeHandleReference = value;\n        if (!value) {\n            this._unsubscribe();\n        } else {\n            this._setResizeListeners();\n        }\n    }\n    get resizeHandleReference(): Nullable<ResizeHandleDirective> {\n        return this._resizeHandleReference;\n    }\n\n    /** @hidden */\n    private _resizeHandleReference: Nullable<ResizeHandleDirective>;\n\n    /** @hidden */\n    private _subscriptions = new Subscription();\n\n    /** @hidden */\n    private _resizeSubscriptions = new Subscription();\n\n    /** @hidden */\n    private readonly _rtlService = inject(RtlService, { optional: true });\n\n    /** @hidden */\n    constructor(private _elementRef: ElementRef<HTMLElement>) {}\n\n    /** @hidden */\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['disabled']) {\n            if (changes['disabled'].previousValue === false && changes['disabled'].currentValue === true) {\n                this._unsubscribe();\n            } else if (changes['disabled'].previousValue === true && changes['disabled'].currentValue === false) {\n                this._setResizeListeners();\n            }\n        }\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        if (!this.disabled) {\n            this._setResizeListeners();\n        }\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._subscriptions.unsubscribe();\n        this._resizeSubscriptions.unsubscribe();\n    }\n\n    /** @hidden */\n    private _unsubscribe(): void {\n        this._resizeSubscriptions.unsubscribe();\n        this._resizeSubscriptions = new Subscription();\n    }\n\n    /** @hidden Sets Resize listeners */\n    private _setResizeListeners(): void {\n        this._unsubscribe();\n        const resize = this._getResizeFunction();\n        let moveOffset = this._getMoveOffsetFunction();\n        const resizeContainer = this._findResizeContainer();\n        if (!resizeContainer || !this.resizeHandleReference) {\n            return;\n        }\n        const isBoundaryOverflow = this._getBoundaryOverflowFunction(resizeContainer);\n\n        const mouseUpEvent$ = fromEvent<MouseEvent>(window, 'mouseup');\n        const mouseMoveEvent$ = fromEvent<MouseEvent>(resizeContainer, 'mousemove');\n        const mouseDownEvent$ = fromEvent<MouseEvent>(this.resizeHandleReference.elementRef.nativeElement, 'mousedown');\n\n        const resizeActive$ = merge(\n            mouseDownEvent$.pipe(\n                map(() => true),\n                tap(() => {\n                    moveOffset = this._getMoveOffsetFunction();\n                })\n            ),\n            mouseUpEvent$.pipe(map(() => false))\n        );\n        const emitResizableEvents$ = this._getResizeEventsNotifiers(resizeActive$);\n        const preventOtherPointerEvents$ = this._blockOtherPointerEvents(resizeActive$);\n\n        const resizingCursorMovement$ = mouseMoveEvent$.pipe(\n            pairwise(),\n            map(([event1, event2]: [MouseEvent, MouseEvent]) => moveOffset(event1, event2)),\n            filter((move) => isBoundaryOverflow(move))\n        );\n\n        const setupResizer = (): void => {\n            resizingCursorMovement$.pipe(takeUntil(mouseUpEvent$)).subscribe((event) => resize(event));\n        };\n        const setupResize$ = resizeActive$.pipe(\n            filter((isActive) => isActive),\n            tap(() => setupResizer())\n        );\n\n        this._resizeSubscriptions.add(setupResize$.subscribe());\n        this._resizeSubscriptions.add(emitResizableEvents$.subscribe());\n        this._resizeSubscriptions.add(preventOtherPointerEvents$.subscribe());\n    }\n\n    /** @hidden Creates resize function*/\n    private _getResizeFunction(): (move: ResizeMove) => void {\n        return (move: ResizeMove) => {\n            this._elementRef.nativeElement.style.width = `${this._elementRef.nativeElement.offsetWidth + move.x}px`;\n            this._elementRef.nativeElement.style.height = `${this._elementRef.nativeElement.offsetHeight + move.y}px`;\n        };\n    }\n\n    /** @hidden Creates move function */\n    private _getMoveOffsetFunction(): (event1: MouseEvent, event2: MouseEvent) => ResizeMove {\n        let verticalModifier: 1 | -1;\n        let horizontalModifier: 1 | -1;\n\n        switch (this.resizeHandleLocation) {\n            case 'top-left':\n                horizontalModifier = -1;\n                verticalModifier = -1;\n                break;\n            case 'top-right':\n                horizontalModifier = -1;\n                verticalModifier = 1;\n                break;\n            case 'bottom-left':\n                horizontalModifier = 1;\n                verticalModifier = -1;\n                break;\n            case 'bottom-right':\n                horizontalModifier = 1;\n                verticalModifier = 1;\n                break;\n        }\n\n        return (event1: MouseEvent, event2: MouseEvent) => {\n            const direction = this._rtlService?.rtl() ? -1 : 1;\n            const x = (event2.screenX - event1.screenX) * direction;\n            const y = event2.screenY - event1.screenY;\n\n            return {\n                x: x * verticalModifier,\n                y: y * horizontalModifier\n            };\n        };\n    }\n\n    /** @hidden Return boundary container */\n    private _findResizeContainer(): Element | null {\n        let resizeContainer: Element | null;\n        if (typeof this.resizeBoundary === 'string') {\n            if (this.resizeBoundary === 'body') {\n                return document.body;\n            }\n            resizeContainer = this._elementRef.nativeElement.closest(this.resizeBoundary);\n        } else {\n            resizeContainer = this.resizeBoundary;\n        }\n\n        if (resizeContainer) {\n            return resizeContainer;\n        } else {\n            console.warn(`fdResize - Cannot find \"${this.resizeBoundary}\", falling back to \"body\"`);\n            return document.body;\n        }\n    }\n\n    /** @hidden Check whether resizable container is overflowing boundary container */\n    private _getBoundaryOverflowFunction(resizeContainer: Element): (move: ResizeMove) => boolean {\n        return (move: ResizeMove) => {\n            const containerPosition = resizeContainer.getBoundingClientRect();\n            const elementPosition = this._elementRef.nativeElement.getBoundingClientRect();\n\n            switch (this.resizeHandleLocation) {\n                case 'top-left':\n                    return (\n                        containerPosition.top < elementPosition.top + move.y &&\n                        containerPosition.left < elementPosition.left + move.x\n                    );\n                case 'top-right':\n                    return (\n                        containerPosition.top < elementPosition.top + move.y &&\n                        containerPosition.right > elementPosition.right + move.x\n                    );\n                case 'bottom-left':\n                    return (\n                        containerPosition.bottom > elementPosition.bottom + move.y &&\n                        containerPosition.left < elementPosition.left + move.x\n                    );\n                case 'bottom-right':\n                    return (\n                        containerPosition.bottom > elementPosition.bottom + move.y &&\n                        containerPosition.right > elementPosition.right + move.x\n                    );\n            }\n        };\n    }\n\n    /** @hidden Create Observable notifying on resize actions */\n    private _getResizeEventsNotifiers(trigger$: Observable<boolean>): Observable<any> {\n        const emitResizableStart$ = trigger$.pipe(\n            filter((isActive) => isActive),\n            tap(() => this.onResizeStart.emit())\n        );\n\n        const emitResizableEnd$ = trigger$.pipe(\n            filter((isActive) => !isActive),\n            tap(() => this.onResizeEnd.emit())\n        );\n\n        return merge(emitResizableStart$, emitResizableEnd$);\n    }\n\n    /** @hidden Block resizable container pointer events when resizing  */\n    private _blockOtherPointerEvents(trigger$: Observable<boolean>): Observable<any> {\n        return trigger$.pipe(\n            tap((isActive) => {\n                if (!this.fdkResizeClass) {\n                    return;\n                }\n                if (!isActive) {\n                    this._elementRef.nativeElement.classList.remove(this.fdkResizeClass);\n                } else {\n                    this._elementRef.nativeElement.classList.add(this.fdkResizeClass);\n                }\n            }),\n            map((isActive) => (isActive ? 'none' : 'auto')),\n            tap((value) => {\n                this._elementRef.nativeElement.style.pointerEvents = value;\n            })\n        );\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { ResizeHandleDirective } from './resize-handle.directive';\nimport { ResizeDirective } from './resize.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [ResizeDirective, ResizeHandleDirective],\n    exports: [ResizeDirective, ResizeHandleDirective]\n})\nexport class ResizeModule {}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { Observable } from 'rxjs';\n\nexport type SelectableListValueType<T> = T extends any[] ? Array<any> : any;\n\nexport abstract class SelectComponentRootToken<T = any> {\n    abstract selected?: SelectableListValueType<T>;\n    abstract selectedChange: Observable<SelectableListValueType<T>>;\n    abstract multiple?: BooleanInput;\n    abstract toggle?: BooleanInput;\n    abstract onChange: (value: SelectableListValueType<T>) => void;\n}\n","import { ElementRef } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\n\nexport abstract class SelectableItemToken<ElementType extends Element = HTMLElement, TValue = ElementType>\n    implements HasElementRef<ElementType>\n{\n    abstract value: TValue;\n    abstract fdkSelectableItem?: boolean;\n\n    abstract readonly elementRef: ElementRef<ElementType>;\n\n    abstract clicked: Observable<MouseEvent | KeyboardEvent>;\n\n    abstract setSelected(isSelected: boolean): void;\n\n    abstract getSelected(): boolean;\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_SELECTABLE_ITEM_PROVIDER = new InjectionToken(\n    'Token for providing custom behaviors to the SelectableListItem'\n);\n","import { coerceArray } from '@angular/cdk/coercion';\nimport { ChangeDetectorRef, DestroyRef, Injectable, QueryList, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { shallowEqual } from 'fast-equals';\nimport { Observable, ReplaySubject, Subject, combineLatest, isObservable, merge, of, switchMap } from 'rxjs';\nimport { distinctUntilChanged, map, shareReplay, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { destroyObservable } from '../../helpers/destroy-observable';\nimport { SelectComponentRootToken, SelectableListValueType } from './select-component-root.token';\nimport { SelectableItemToken } from './selectable-item.token';\n\nexport type SelectionItemsList<ElementType extends Element, ValueType = ElementType> =\n    | QueryList<SelectableItemToken<ElementType, ValueType>>\n    | Observable<SelectableItemToken<ElementType, ValueType>[]>\n    | SelectableItemToken<ElementType, ValueType>[];\n\n@Injectable()\nexport class SelectionService<ElementType extends Element, ValueType = ElementType> {\n    /** @hidden */\n    value$: Observable<SelectableListValueType<ValueType>>;\n\n    /** @hidden */\n    private _items$!: Observable<SelectableItemToken<ElementType, ValueType>[]>;\n    /** @hidden */\n    private _value$ = new ReplaySubject<SelectableListValueType<ValueType>>(1);\n    /** @hidden */\n    private _normalizedValue$: Observable<ValueType[]>;\n    /** @hidden */\n    private _rootComponent!: SelectComponentRootToken<ElementType>;\n    /** @hidden */\n    private _destroyRef = inject(DestroyRef);\n    /** @hidden */\n    private _clear$ = new Subject<void>();\n    /** @hidden */\n    private _value: ValueType[] = [];\n\n    /** @hidden */\n    constructor(private _cd: ChangeDetectorRef) {\n        this._normalizedValue$ = this._value$.pipe(\n            distinctUntilChanged(shallowEqual),\n            map((v) => coerceArray<ValueType>(v)),\n            map((value) => (this._isMultipleMode ? value : [value[0]])),\n            map((coerced: ValueType[]) => coerced.filter(Boolean))\n        );\n        this._normalizedValue$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((val) => (this._value = val));\n        this.value$ = this._normalizedValue$.pipe(\n            map((v) => this._getProperValues(v as SelectableListValueType<ElementType>)),\n            shareReplay(1)\n        );\n    }\n\n    /**\n     * Register main select component, which holds config\n     * */\n    registerRootComponent(rootComponent: SelectComponentRootToken<ElementType>): void {\n        this._rootComponent = rootComponent;\n    }\n\n    /**\n     * Clear listeners\n     */\n    clear(): void {\n        this._clear$.next();\n    }\n\n    /**\n     * Initialize watcher for selection changes and user interactions\n     * */\n    initialize(list: SelectionItemsList<ElementType, ValueType>): void {\n        if (list instanceof QueryList) {\n            this._items$ = list.changes.pipe(\n                startWith(list),\n                map((items: QueryList<SelectableItemToken<ElementType, ValueType>>) => items.toArray()),\n                shareReplay(1)\n            );\n        } else {\n            this._items$ = isObservable(list) ? list : of(list);\n        }\n        this.listenToItemInteractions();\n    }\n\n    /**\n     * Sets Value, on which service looks at and updates UI accordingly\n     * */\n    setValue(v: SelectableListValueType<ElementType>): void {\n        this._value$.next(v);\n    }\n\n    /** @hidden */\n    getValue(): SelectableListValueType<ElementType> {\n        return this._getProperValues(this._value as SelectableListValueType<ElementType>);\n    }\n\n    /**\n     * Start listening for item interactions. Will destroy() first.\n     * Will silently continue if service was not initialized first.\n     * */\n    listenToItemInteractions(): void {\n        this.clear();\n        const unsubscribe$ = merge(destroyObservable(this._destroyRef), this._clear$);\n        if (this._items$) {\n            this._items$\n                .pipe(\n                    map((items) => items.filter((itm) => itm.fdkSelectableItem !== false)),\n                    switchMap((items: SelectableItemToken<ElementType, ValueType>[]) => {\n                        const clickedEvents$ = items.map((item) => item.clicked.pipe(map(() => item)));\n                        return merge(...clickedEvents$);\n                    }),\n                    tap((clickedItem) => this._itemClicked(clickedItem)),\n                    takeUntil(unsubscribe$)\n                )\n                .subscribe();\n            combineLatest([this._normalizedValue$, this._items$])\n                .pipe(\n                    tap(([value, items]) => {\n                        if (\n                            value.length === 0 &&\n                            items.some((itm) => itm.getSelected()) &&\n                            !this._rootComponent.toggle\n                        ) {\n                            const selectedValues = this._getSelectedValues(items);\n                            this._rootComponent.onChange(selectedValues as SelectableListValueType<ElementType>);\n                            return this._value$.next(selectedValues as SelectableListValueType<ElementType>);\n                        }\n                        items.forEach((item) => {\n                            item.setSelected(value.includes(item.value));\n                        });\n                        this._cd.detectChanges();\n                    }),\n                    takeUntil(unsubscribe$)\n                )\n                .subscribe();\n        }\n    }\n\n    /** @hidden */\n    selectItem(item: SelectableItemToken<ElementType, ValueType>): void {\n        if (item.fdkSelectableItem !== false) {\n            const val: ValueType[] = [item.value, ...this._value];\n            const properValues = this._getProperValues(val as SelectableListValueType<ElementType>);\n            this._value$.next(properValues);\n            this._rootComponent.onChange(properValues);\n        }\n    }\n\n    /** @hidden */\n    deselectItem(item: SelectableItemToken<ElementType, ValueType>): void {\n        const canBeDeselected = this._rootComponent.toggle || (this._isMultipleMode && this._value.length > 1);\n        if (canBeDeselected) {\n            const val: SelectableListValueType<ElementType> = this._value.filter(\n                (v) => v !== item.value\n            ) as SelectableListValueType<ElementType>;\n            const properValues = this._getProperValues(val);\n            this._value$.next(properValues);\n            this._rootComponent.onChange(properValues);\n        }\n    }\n\n    /** @hidden */\n    private get _isMultipleMode(): boolean {\n        return this._rootComponent.multiple === true;\n    }\n\n    /** @hidden */\n    private _itemClicked(item: SelectableItemToken<ElementType, ValueType>): void {\n        const wasSelected = this._value.includes(item.value);\n        if (wasSelected) {\n            this.deselectItem(item);\n        } else {\n            this.selectItem(item);\n        }\n    }\n\n    /** @hidden */\n    private _getSelectedValues(items: SelectableItemToken<ElementType, ValueType>[]): ElementType | ElementType[] {\n        const selectedValues = items.filter((itm) => itm.getSelected()).map((itm) => itm.value);\n        return this._getProperValues(selectedValues as SelectableListValueType<ElementType>);\n    }\n\n    /** @hidden */\n    private _getProperValues(values: SelectableListValueType<ElementType>): SelectableListValueType<ElementType> {\n        return this._isMultipleMode ? values : values[0];\n    }\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Directive, ElementRef, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';\nimport { Observable, merge } from 'rxjs';\nimport { FdkClickedProvider } from '../clicked';\nimport { FdkDisabledProvider } from '../disabled';\nimport { FdkReadonlyProvider } from '../readonly';\nimport { SelectableItemToken } from './selectable-item.token';\nimport { FDK_SELECTABLE_ITEM_PROVIDER } from './selectable-list.tokens';\nimport { SelectionService } from './selection.service';\n\n@Directive({\n    selector: '[fdkSelectableItem]',\n    exportAs: 'fdkSelectableItem',\n    standalone: true,\n    providers: [\n        {\n            provide: SelectableItemToken,\n            useExisting: SelectableItemDirective\n        },\n        FdkReadonlyProvider,\n        FdkDisabledProvider,\n        FdkClickedProvider\n    ]\n})\nexport class SelectableItemDirective<ElementType extends Element = HTMLElement, ValueType = any>\n    implements SelectableItemToken<ElementType, ValueType>\n{\n    /** @hidden */\n    @Input()\n    set value(val: ValueType) {\n        this._value = val;\n    }\n    get value(): ValueType {\n        if (this.provider && this.provider.value) {\n            return this.provider.value;\n        }\n        return this._value;\n    }\n\n    /** @hidden */\n    @Input()\n    set fdkSelectableItem(value: BooleanInput) {\n        const isSelectable = coerceBooleanProperty(value);\n        if (isSelectable !== this._selectable) {\n            this._selectable = isSelectable;\n        }\n    }\n\n    get fdkSelectableItem(): boolean {\n        let selectable = this._selectable;\n        if (typeof this.provider?.fdkSelectableItem !== 'undefined') {\n            selectable = this.provider.fdkSelectableItem;\n        }\n        return (\n            selectable &&\n            (!this.disabled$ || !this.disabled$?.fdkDisabled) &&\n            (!this.readonly$ || !this.readonly$?.fdkReadonly)\n        );\n    }\n\n    /** @hidden */\n    @Output()\n    clicked: Observable<MouseEvent | KeyboardEvent>;\n\n    /** Event emitted when selection state being changed for selectable item. */\n    @Output()\n    selected = new EventEmitter<boolean>();\n\n    /** @hidden */\n    private _value!: ValueType;\n    /** @hidden */\n    private _selected = false;\n    /** @hidden */\n    private _selectable = true;\n\n    /** @hidden */\n    constructor(\n        @Optional()\n        @Inject(FDK_SELECTABLE_ITEM_PROVIDER)\n        private provider: Partial<SelectableItemToken<ElementType, ValueType>>,\n        private disabled$: FdkDisabledProvider,\n        private readonly$: FdkReadonlyProvider,\n        private selectionService: SelectionService<ElementType, ValueType>,\n        public readonly elementRef: ElementRef<ElementType>,\n        _clicked: FdkClickedProvider\n    ) {\n        this.clicked = this.provider?.clicked || _clicked.asObservable();\n        this._listenToDisablingEvents();\n    }\n\n    /** @hidden */\n    getSelected(): boolean {\n        if (this.provider?.getSelected) {\n            return this.provider.getSelected();\n        }\n        return this._selected;\n    }\n\n    /** @hidden */\n    setSelected(isSelected: boolean): void {\n        if (this.provider?.setSelected) {\n            this.provider.setSelected(isSelected);\n        } else {\n            this._selected = isSelected;\n            const htmlElement = this.elementRef.nativeElement;\n            const { classList } = htmlElement;\n            if (isSelected) {\n                classList.add('is-selected');\n            } else {\n                classList.remove('is-selected');\n            }\n            htmlElement.setAttribute('aria-selected', `${isSelected}`);\n        }\n\n        this.selected.emit(isSelected);\n    }\n\n    /** @hidden */\n    private _listenToDisablingEvents(): void {\n        const disablingEvents$: Observable<boolean>[] = [];\n        if (this.disabled$) {\n            disablingEvents$.push(this.disabled$);\n        }\n        if (this.readonly$) {\n            disablingEvents$.push(this.readonly$);\n        }\n        merge(...disablingEvents$).subscribe(() => this._updateSelectionAndSelectableWatcher());\n    }\n\n    /** @hidden */\n    private _updateSelectionAndSelectableWatcher(): void {\n        if (this.disabled$?.fdkDisabled) {\n            this.selectionService.deselectItem(this);\n        }\n        this._updateSelectableWatcher();\n    }\n\n    /** @hidden */\n    private _updateSelectableWatcher(): void {\n        this.selectionService.listenToItemInteractions();\n    }\n}\n","import {\n    AfterViewInit,\n    ContentChildren,\n    Directive,\n    EventEmitter,\n    Input,\n    Output,\n    QueryList,\n    booleanAttribute\n} from '@angular/core';\nimport { SelectComponentRootToken, SelectableListValueType } from './select-component-root.token';\nimport { SelectableItemToken } from './selectable-item.token';\nimport { SelectionService } from './selection.service';\n\n@Directive({\n    selector: '[fdkSelectableList]',\n    exportAs: 'fdkSelectableList',\n    standalone: true,\n    providers: [\n        {\n            provide: SelectComponentRootToken,\n            useExisting: SelectableListDirective\n        },\n        SelectionService\n    ]\n})\nexport class SelectableListDirective<T extends Element = HTMLElement, V = any>\n    implements SelectComponentRootToken<T>, AfterViewInit\n{\n    /** @hidden */\n    @Output()\n    selectedChange = new EventEmitter<SelectableListValueType<T>>();\n\n    /** @hidden */\n    @Input({ transform: booleanAttribute })\n    toggle = false;\n\n    /** @hidden */\n    @Input({ transform: booleanAttribute })\n    multiple = false;\n\n    /** @hidden */\n    @Input()\n    set selected(value: SelectableListValueType<T>) {\n        this._selectionService.setValue(value);\n    }\n\n    /** @hidden */\n    @ContentChildren(SelectableItemToken) selectableItems!: QueryList<SelectableItemToken<T, V>>;\n\n    /** @hidden */\n    constructor(private _selectionService: SelectionService<T, V>) {\n        this._selectionService.registerRootComponent(this);\n    }\n\n    /** @hidden */\n    select(item: SelectableItemToken<T, V>): void {\n        this._selectionService.selectItem(item);\n    }\n\n    /** @hidden */\n    deselect(item: SelectableItemToken<T, V>): void {\n        this._selectionService.deselectItem(item);\n    }\n\n    /** @hidden */\n    toggleSelect(item: SelectableItemToken<T, V>): void {\n        if (item.getSelected()) {\n            this.deselect(item);\n        } else {\n            this.select(item);\n        }\n    }\n\n    /** @hidden */\n    onChange(value: SelectableListValueType<T>): void {\n        this.selectedChange.emit(value);\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._selectionService.initialize(this.selectableItems);\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { SelectableItemDirective } from './selectable-item.directive';\nimport { SelectableListDirective } from './selectable-list.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [SelectableListDirective, SelectableItemDirective],\n    exports: [SelectableListDirective, SelectableItemDirective]\n})\nexport class SelectableListModule {}\n","import { Directive, TemplateRef, inject, input } from '@angular/core';\n\n@Directive({\n    selector: '[fdkTemplate]'\n})\nexport class TemplateDirective {\n    /** Name of the template */\n    readonly name = input('', { alias: 'fdkTemplate' });\n\n    /** @hidden */\n    readonly templateRef = inject<TemplateRef<any>>(TemplateRef);\n\n    /** @hidden */\n    getName(): string {\n        return this.name();\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { TemplateDirective } from './template.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [TemplateDirective],\n    exports: [TemplateDirective]\n})\nexport class TemplateModule {}\n","import {\n    AfterContentChecked,\n    AfterViewInit,\n    Directive,\n    effect,\n    ElementRef,\n    inject,\n    input,\n    numberAttribute,\n    untracked\n} from '@angular/core';\n\nconst DEFAULT_TRUNCATE_WIDTH = 200;\n\n@Directive({\n    selector: '[fdkTruncate]',\n    standalone: true\n})\nexport class TruncateDirective implements AfterViewInit {\n    /**\n     * Width in pixel for truncation of an element, by default 200\n     */\n    readonly fdkTruncateWidth = input(DEFAULT_TRUNCATE_WIDTH, { transform: numberAttribute });\n\n    /**\n     * Truncating state\n     */\n    readonly fdkTruncateState = input(false);\n\n    /** @hidden */\n    private readonly _elementRef = inject(ElementRef);\n\n    /** @hidden */\n    private _truncateTarget: HTMLElement;\n\n    /** @hidden\n     * saves default style of element before truncating\n     */\n    private _defaultStyle: string;\n\n    /** @hidden */\n    private _defaultStyleCaptured = false;\n\n    /**\n     * Root native element\n     */\n    get rootElement(): HTMLElement {\n        return this._elementRef.nativeElement;\n    }\n\n    /** @hidden */\n    constructor() {\n        effect(() => {\n            const state = this.fdkTruncateState();\n            const width = this.fdkTruncateWidth();\n            untracked(() => this._truncate(state, width));\n        });\n    }\n\n    /**\n     * Method saves default style of target element before first truncate.\n     */\n    setDefaultStyle(): void {\n        if (!this._defaultStyleCaptured) {\n            this._defaultStyle = this._truncateTarget.style.cssText;\n            this._defaultStyleCaptured = true;\n        }\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        if (this.rootElement) {\n            this._truncate(this.fdkTruncateState(), this.fdkTruncateWidth());\n        }\n    }\n\n    /** @hidden */\n    private _truncate(state: boolean, width: number): void {\n        this._truncateTarget = this.rootElement;\n\n        if (!this._truncateTarget) {\n            return;\n        }\n        this.setDefaultStyle();\n        const truncationStyle = `${this._defaultStyle} max-width: ${width}px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;`;\n        this._truncateTarget.style.cssText = state ? truncationStyle : this._defaultStyle;\n    }\n}\n\n@Directive({\n    selector: '[fdkTruncatedTitle], [fdTruncatedTitle], [fd-truncate-title]',\n    standalone: true\n})\nexport class TruncatedTitleDirective implements AfterContentChecked {\n    /** @hidden */\n    constructor(private _elRef: ElementRef) {}\n\n    /** @hidden */\n    ngAfterContentChecked(): void {\n        const el = this._elRef.nativeElement;\n        if (el.scrollWidth > el.offsetWidth) {\n            el.title = el.innerText;\n        }\n    }\n}\n","import { NgModule } from '@angular/core';\n\nimport { TruncateDirective, TruncatedTitleDirective } from './truncate.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [TruncateDirective, TruncatedTitleDirective],\n    exports: [TruncateDirective, TruncatedTitleDirective]\n})\nexport class TruncateModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const DND_ITEM = new InjectionToken('Drag and drop Item');\nexport const DND_LIST = new InjectionToken('Drag and drop List');\n","import { DragDrop, DragRef } from '@angular/cdk/drag-drop';\nimport {\n    AfterContentInit,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Input,\n    OnDestroy,\n    Output,\n    Renderer2,\n    forwardRef\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { delay } from 'rxjs/operators';\nimport { Nullable } from '../../models/nullable';\nimport { DndItem, ElementChord, ElementPosition, LinkPosition } from '../dnd.interfaces';\nimport { DND_ITEM } from '../tokens';\n\n@Directive({\n    selector: '[fdkDndItem], [fd-dnd-item]',\n    providers: [DragDrop, { provide: DND_ITEM, useExisting: forwardRef(() => DndItemDirective) }],\n    standalone: true\n})\nexport class DndItemDirective<T = any> implements DndItem, AfterContentInit, OnDestroy {\n    /** Item reference. Used for cases when `[items]` array of dnd list is different than `dndItems` content children. */\n    @Input('fdkDndItem')\n    item: Nullable<T>;\n    /**\n     * Whether to apply \"fd-dnd-item\" class.\n     * @default true\n     */\n    @Input()\n    @HostBinding('class.fd-dnd-item')\n    applyDragItemClass = true;\n\n    /** Container selector */\n    @Input()\n    containerSelector?: string;\n\n    /** Event thrown when the element is moved by 1px */\n    @Output()\n    readonly moved = new EventEmitter<ElementPosition>();\n\n    /** Event thrown when the element is released */\n    @Output()\n    readonly released = new EventEmitter<void>();\n\n    /** Event thrown when the element is started to be dragged */\n    @Output()\n    readonly started = new EventEmitter<void>();\n\n    /**\n     *  Defines if the item is prevented from being moved by other elements.\n     * So nothing can be placed just before and just after it\n     */\n    @Input()\n    stickInPlace = false;\n\n    /** Defines if element is draggable */\n    @Input()\n    set draggable(draggable: boolean) {\n        this._draggable = draggable;\n        this.changeCDKDragState();\n    }\n\n    /** Class added to element, when it's dragged. */\n    @Input()\n    classWhenElementDragged = 'fd-dnd-on-drag';\n\n    /** Defines if every element in list is draggable */\n    listDraggable = true;\n\n    /** @hidden\n     * Drag reference, object created from DND CDK Service\n     */\n    private _dragRef: DragRef;\n\n    /** @hidden */\n    private _draggable = true;\n\n    /** @hidden */\n    private _subscriptions = new Subscription();\n\n    /** @hidden */\n    private _placeholderElement: HTMLElement | null = null;\n\n    /** @hidden */\n    private _lineElement: HTMLElement | null = null;\n\n    /** @hidden */\n    private _replaceIndicator: HTMLElement | null = null;\n\n    /** @hidden */\n    constructor(\n        public readonly elementRef: ElementRef,\n        private readonly _dragDrop: DragDrop,\n        private readonly _renderer: Renderer2\n    ) {}\n\n    /** @hidden */\n    getElementCoordinates(isBefore: boolean): ElementChord {\n        /** Takes distance from the beginning of window page */\n        const rect = this.elementRef.nativeElement.getBoundingClientRect();\n\n        const position: LinkPosition = isBefore ? 'before' : 'after';\n\n        /** Vertically distance is counted by distance from top of the side + half of the element height */\n        return {\n            x: rect.left,\n            position,\n            y: rect.top,\n            stickToPosition: this.stickInPlace,\n            width: rect.width,\n            height: rect.height\n        };\n    }\n\n    /** @hidden */\n    ngAfterContentInit(): void {\n        this._setCDKDrag();\n        this._listenElementEvents();\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._subscriptions.unsubscribe();\n        this._dragRef.dispose();\n    }\n\n    /** @hidden */\n    onCdkMove(position: ElementPosition): void {\n        this.moved.emit(position);\n    }\n\n    /** @hidden */\n    onCdkDragReleased(): void {\n        /** Remove class which is added, when element is dragged */\n        this.elementRef.nativeElement.classList.remove(this.classWhenElementDragged);\n        this.released.emit();\n\n        /** Resets the position of element. */\n        this._dragRef.reset();\n\n        /** Removes placeholder element */\n        this.removePlaceholder();\n    }\n\n    /** @hidden */\n    onCdkDragStart(): void {\n        /** Adds class */\n        this.elementRef.nativeElement.classList.add(this.classWhenElementDragged);\n\n        if (!this._placeholderElement) {\n            this.createPlaceholder();\n        }\n        this.started.emit();\n    }\n\n    /** @hidden */\n    removePlaceholder(): void {\n        if (this._placeholderElement && this._placeholderElement.parentNode) {\n            // IE11 workaround\n            this._placeholderElement.parentNode.removeChild(this._placeholderElement);\n            this._placeholderElement = null;\n        }\n    }\n\n    /** @hidden */\n    removeLine(): void {\n        if (this._lineElement && this._lineElement.parentNode) {\n            // IE11 workaround\n            this._lineElement.parentNode.removeChild(this._lineElement);\n            this._lineElement = null;\n        }\n    }\n\n    /** @hidden */\n    removeReplaceIndicator(): void {\n        if (this._replaceIndicator && this._replaceIndicator.parentNode) {\n            // IE11 workaround\n            this._replaceIndicator.parentNode.removeChild(this._replaceIndicator);\n            this._replaceIndicator = null;\n        }\n    }\n\n    /** @hidden */\n    createReplaceIndicator(): void {\n        this._replaceIndicator = document.createElement('DIV');\n        this._replaceIndicator.classList.add('fd-replace-indicator');\n\n        let container = this.elementRef.nativeElement;\n        if (this.containerSelector) {\n            const newContainer = this.elementRef.nativeElement.querySelector(this.containerSelector);\n            if (newContainer) {\n                container = newContainer;\n            }\n        }\n\n        container.appendChild(this._replaceIndicator);\n    }\n\n    /** @hidden */\n    createLine(position: LinkPosition, gridMode: boolean): void {\n        /** Creating of line element */\n        this._lineElement = document.createElement('div');\n        this._lineElement.classList.add('drop-area__line');\n\n        if (gridMode) {\n            this._lineElement.classList.add('drop-area__line--vertical');\n        } else {\n            this._lineElement.classList.add('drop-area__line--horizontal');\n        }\n        if (position === 'after') {\n            this._lineElement.classList.add('after');\n        }\n        if (position === 'before') {\n            this._lineElement.classList.add('before');\n        }\n\n        /** Putting element to the container */\n        let container = this.elementRef.nativeElement;\n        if (this.containerSelector) {\n            const newContainer = this.elementRef.nativeElement.querySelector(this.containerSelector);\n            if (newContainer) {\n                container = newContainer;\n            }\n        }\n\n        container.appendChild(this._lineElement);\n    }\n\n    /** @hidden */\n    changeCDKDragState(): void {\n        if (this._dragRef) {\n            this._dragRef.disabled = !(this._draggable && this.listDraggable);\n        }\n    }\n\n    /**\n     * Sets the disabled state of the dnd item.\n     * @param state\n     */\n    setDisabledState(state: boolean): void {\n        if (state) {\n            this._renderer.addClass(this.elementRef.nativeElement, 'fd-dnd-item--disabled');\n        } else {\n            this._renderer.removeClass(this.elementRef.nativeElement, 'fd-dnd-item--disabled');\n        }\n    }\n\n    /** @hidden */\n    private createPlaceholder(): void {\n        const placeholder = this.elementRef.nativeElement.cloneNode(true);\n        /** Cloning container element */\n        this._placeholderElement = placeholder;\n\n        placeholder.classList.add('fd-dnd-placeholder');\n        this._setPlaceholderStyles();\n\n        /** Including element to the container\n         *  IE11 equivalent to `this.element.nativeElement.after(clone);`\n         */\n        this._placeAfter(this.elementRef.nativeElement, placeholder);\n    }\n\n    /** @hidden */\n    private _setPlaceholderStyles(): void {\n        const offset = this._getOffsetToParent(this.elementRef.nativeElement);\n\n        if (!offset || !this._placeholderElement) {\n            return;\n        }\n\n        this._placeholderElement.style.top = offset.y + 'px';\n        this._placeholderElement.style.left = offset.x + 'px';\n        this._placeholderElement.style.position = 'absolute';\n        this._placeholderElement.style.zIndex = '0';\n        this._placeholderElement.style.opacity = '0.3';\n\n        this._placeholderElement.style.width = this.elementRef.nativeElement.offsetWidth + 'px';\n        this._placeholderElement.style.height = this.elementRef.nativeElement.offsetHeight + 'px';\n    }\n\n    /** @hidden */\n    private _getOffsetToParent(element: Element): { x: number; y: number } | undefined {\n        const parentElement = element.parentElement;\n        if (!parentElement) {\n            return;\n        }\n\n        const parentElmRect = parentElement.getBoundingClientRect();\n        const elmRect = element.getBoundingClientRect();\n\n        const parentTop = parentElmRect.top;\n        const parentLeft = parentElmRect.left;\n\n        return {\n            x: Math.abs(elmRect.left - parentLeft),\n            y: Math.abs(elmRect.top - parentTop)\n        };\n    }\n\n    /** @hidden */\n    private _setCDKDrag(): void {\n        this._dragRef = this._dragDrop.createDrag(this.elementRef);\n        this._dragRef.disabled = !this._draggable;\n        this._subscriptions.add(this._dragRef.moved.subscribe((event) => this.onCdkMove(event.pointerPosition)));\n        this._subscriptions.add(this._dragRef.released.subscribe(() => this.onCdkDragReleased()));\n        this._subscriptions.add(this._dragRef.started.subscribe(() => this.onCdkDragStart()));\n    }\n\n    /** IE11 equivalent of Node.after() Method */\n    private _placeAfter(element: Element, cloneNode: Node): void {\n        const docFrag = document.createDocumentFragment();\n        docFrag.appendChild(cloneNode);\n        element.parentNode?.insertBefore(docFrag, element.nextSibling);\n    }\n\n    /** @hidden */\n    private _listenElementEvents(): void {\n        this._subscriptions.add(\n            this.released\n                .pipe(\n                    // postpone blur\n                    delay(0)\n                )\n                .subscribe(() => {\n                    if (this.containerSelector) {\n                        this.elementRef.nativeElement.children[0].blur();\n                    }\n                    this.elementRef.nativeElement.blur();\n                })\n        );\n    }\n}\n","import { moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, UP_ARROW } from '@angular/cdk/keycodes';\nimport { ChangeDetectorRef, Directive, inject, Input } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { KeyUtil } from '../../functions';\nimport { RtlService } from '../../services/rtl.service';\n\n/**\n * This directive is used to provide drag & drop with keyboard support.\n * It should be used together with directive fdDndKeyboardItem.\n */\n@Directive({\n    selector: '[fdkDndKeyboardGroup], [fdDndKeyboardGroup]'\n})\nexport class DndKeyboardGroupDirective {\n    /** Group of items */\n    @Input()\n    groups: any[][];\n\n    /** Whether to disable drag & drop */\n    @Input()\n    disableKeyboardDragDrop = false;\n\n    /** Used to apply indexes when moving between groups */\n    @Input()\n    orientation: 'horizontal' | 'vertical' = 'vertical';\n\n    /** @hidden */\n    _onDndItemFocus$ = new Subject<[number, number]>();\n\n    /** @hidden */\n    private readonly _cdr = inject(ChangeDetectorRef);\n\n    /** @hidden */\n    private readonly _rtlService = inject(RtlService, { optional: true });\n\n    /** Custom function to call when moving item inside the group */\n    @Input()\n    customMoveFn = (group: any[], fromIndex: number, toIndex: number): void =>\n        moveItemInArray(group, fromIndex, toIndex);\n\n    /** Custom function to call when moving item between groups */\n    @Input()\n    customTransferFn = (group: any[], nextGroup: any[], fromIndex: number, toIndex: number): void =>\n        transferArrayItem(group, nextGroup, fromIndex, toIndex);\n\n    /** Process drag & drop */\n    processDragDrop(event: KeyboardEvent, itemIndex: number, groupIndex: number): void {\n        if (this.disableKeyboardDragDrop || !event.altKey) {\n            return;\n        }\n\n        const isRtl = this._rtlService?.rtl() ?? false;\n\n        const group = this.groups[groupIndex];\n        const indexInNextGroup = this.orientation === 'vertical' ? 0 : itemIndex;\n\n        const nextGroupExists = this.groups.length > groupIndex + 1;\n        const prevGroupExists = !!groupIndex;\n\n        if (KeyUtil.isKeyCode(event, RIGHT_ARROW) && (isRtl ? prevGroupExists : nextGroupExists)) {\n            event.preventDefault();\n\n            const nextGroupIndex = groupIndex + (isRtl ? -1 : 1);\n            const nextGroup = this.groups[nextGroupIndex];\n\n            this.customTransferFn(group, nextGroup, itemIndex, indexInNextGroup);\n            this._focusDndItem(nextGroupIndex, indexInNextGroup);\n        } else if (KeyUtil.isKeyCode(event, LEFT_ARROW) && (isRtl ? nextGroupExists : prevGroupExists)) {\n            event.preventDefault();\n\n            const nextGroupIndex = groupIndex + (isRtl ? 1 : -1);\n            const nextGroup = this.groups[nextGroupIndex];\n\n            this.customTransferFn(group, nextGroup, itemIndex, indexInNextGroup);\n            this._focusDndItem(nextGroupIndex, indexInNextGroup);\n        } else if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n            event.preventDefault();\n\n            this.customMoveFn(group, itemIndex, itemIndex + 1);\n            this._focusDndItem(groupIndex, itemIndex + 1);\n        } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n            event.preventDefault();\n\n            this.customMoveFn(group, itemIndex, itemIndex - 1);\n            this._focusDndItem(groupIndex, itemIndex - 1);\n        }\n    }\n\n    /** @hidden Focus after moving elements with keyboard */\n    private _focusDndItem(groupIndex: number, itemIndex: number): void {\n        this._cdr.detectChanges();\n\n        this._onDndItemFocus$.next([groupIndex, itemIndex]);\n    }\n}\n","import { Directive, ElementRef, HostListener, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { DndKeyboardGroupDirective } from '../dnd-keyboard-group/dnd-keyboard-group.directive';\n\n/**\n * This directive is used to provide drag & drop with keyboard support.\n * It should be used together with directive fdDndKeyboardGroup.\n * We are using _groups from fdDndKeyboardGroup and adding a possibility to move cards.\n * Please see example below:\n * @Component({\n * selector: 'cdk-drag-drop-example',\n * template: `<div\n *               cdkDragListGroup\n *               fdDndKeyboardGroup\n *               [groups]=\"groups\"\n *           >\n *               <div\n *                   *ngFor=\"let group of groups; let groupIndex = index\"\n *                   cdkDragList\n *               >\n *                   Group #{{ groupIndex }}\n *                   <div\n *                       *ngFor=\"let item of group; let index = index\"\n *                       cdkDrag\n *                       fdDndKeyboardItem\n *                       [itemIndex]=\"index\"\n *                       [groupIndex]=\"groupIndex\"\n *                       [dndKeyboardDisabled]=\"flag for disable/enable keyboard navigation if needed\"\n *                       tabindex=\"0\"\n *                   >\n *                       Item #{{ item }}\n *                   </div>\n *               </div>\n *           </div>`,\n * })\n * export class CdkDragDropExample {\n *   groups = [\n *        [1, 2, 3],\n *        [4, 5, 6],\n *      ];\n *   }\n */\n@Directive({\n    selector: '[fdkDndKeyboardItem], [fdDndKeyboardItem]'\n})\nexport class DndKeyboardItemDirective implements OnInit, OnDestroy {\n    /** item index in group(column) */\n    @Input()\n    itemIndex: number;\n\n    /** group(column) index */\n    @Input()\n    groupIndex: number;\n\n    /** @hidden */\n    private readonly _onDestroy$ = new Subject<void>();\n\n    /** @hidden */\n    constructor(\n        private readonly _dndGroup: DndKeyboardGroupDirective,\n        private readonly _elementRef: ElementRef\n    ) {}\n\n    /** @hidden */\n    @HostListener('keydown', ['$event'])\n    _onKeyDown(event: KeyboardEvent): void {\n        this._dndGroup.processDragDrop(event, this.itemIndex, this.groupIndex);\n    }\n\n    /** @hidden */\n    ngOnInit(): void {\n        this._dndGroup._onDndItemFocus$.subscribe(([groupIndex, itemIndex]) => {\n            if (this.groupIndex === groupIndex && this.itemIndex === itemIndex) {\n                this._elementRef.nativeElement.focus();\n            }\n        });\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._onDestroy$.next();\n        this._onDestroy$.complete();\n    }\n}\n","import { isFunction } from '../typecheck';\nimport { SubscriptionStrategy } from './subscription-strategy.interface';\n\n/**\n * @description Executes function and passes returned value into callback function.\n */\nexport class FunctionStrategy<T> implements SubscriptionStrategy<T> {\n    /** @hidden */\n    createSubscription(fn: () => T, updateLatestValue: (v: T) => any): Promise<void> {\n        const result = isFunction(fn) ? fn() : ((<any>fn) as T);\n        return Promise.resolve(result).then(updateLatestValue);\n    }\n}\n","import { Observable, firstValueFrom } from 'rxjs';\nimport { SubscriptionStrategy } from './subscription-strategy.interface';\n\n/**\n * @description Converts observable into Promise and passes returned value into callback function.\n */\nexport class ObservableStrategy<T> implements SubscriptionStrategy<T> {\n    /** @hidden */\n    createSubscription(async: Observable<T>, updateLatestValue: any): Promise<void> {\n        return firstValueFrom(async).then(updateLatestValue, (e) => {\n            console.error(e);\n        });\n    }\n}\n","import { SubscriptionStrategy } from './subscription-strategy.interface';\n\n/**\n * @description awaits for promise to resolve it's value and passes returned value into callback function.\n */\nexport class PromiseStrategy<T> implements SubscriptionStrategy<T> {\n    /** @hidden */\n    createSubscription(async: Promise<T>, updateLatestValue: (v: T) => any): Promise<void> {\n        return async.then(updateLatestValue, (e) => {\n            console.error(e);\n        });\n    }\n}\n","import { SubscriptionStrategy } from './subscription-strategy.interface';\n\n/**\n * @description Passes value object into callback function.\n */\nexport class ValueStrategy<T> implements SubscriptionStrategy<T> {\n    /** @hidden */\n    createSubscription(value: T, updateLatestValue: (v: T) => any): Promise<void> {\n        return Promise.resolve(value).then(updateLatestValue);\n    }\n}\n","import { Observable } from 'rxjs';\nimport { isFunction, isPromise, isSubscribable } from '../typecheck';\n\nimport { FunctionStrategy } from './function-strategy.class';\nimport { ObservableStrategy } from './observable-strategy.class';\nimport { PromiseStrategy } from './promise-strategy.class';\nimport { SubscriptionStrategy } from './subscription-strategy.interface';\nimport { ValueStrategy } from './value-strategy.class';\n\n/**\n * @description Selects appropriate strategy on how to resolve function value\n * @param obj object to get value from\n * @returns appropriate strategy to retrieve value from the object\n */\nexport function selectStrategy<T = any>(obj: Observable<T> | Promise<T> | (() => void) | T): SubscriptionStrategy<T> {\n    if (isPromise(obj)) {\n        return new PromiseStrategy<T>();\n    }\n\n    if (isSubscribable(obj)) {\n        return new ObservableStrategy<T>();\n    }\n\n    if (isFunction(obj)) {\n        return new FunctionStrategy<T>();\n    }\n\n    return new ValueStrategy<T>();\n}\n","import {\n    AfterContentInit,\n    ContentChildren,\n    DestroyRef,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    HostBinding,\n    inject,\n    Input,\n    OnDestroy,\n    Output,\n    QueryList\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { startWith, take, takeUntil } from 'rxjs/operators';\nimport { selectStrategy } from '../../async-strategy';\nimport { destroyObservable } from '../../helpers';\nimport { DndItem, ElementChord, ElementPosition, FdDndDropType, FdDropEvent, LinkPosition } from '../dnd.interfaces';\nimport { DND_ITEM, DND_LIST } from '../tokens';\n\nexport type DropPredicate<T> = (\n    dragItem: T,\n    dropItem: T,\n    event: FdDropEvent<T>\n) => boolean | Promise<boolean> | Observable<boolean>;\nexport type DragoverPredicate<T> = (\n    dragItem: T,\n    dragOverItem: T,\n    dragItemIndex: number,\n    dragOverItemIndex: number\n) => boolean;\n\n@Directive({\n    selector: '[fdkDndList], [fd-dnd-list]',\n    providers: [{ provide: DND_LIST, useExisting: forwardRef(() => DndListDirective) }],\n    standalone: true\n})\nexport class DndListDirective<T> implements AfterContentInit, OnDestroy {\n    /**\n     * Defines if the element is allowed to be dragged in 2 dimensions,\n     * When true - replace indicator will be displayed vertically\n     */\n    @Input()\n    gridMode = false;\n\n    /**\n     * Defines drop strategy:\n     * * `shift` mode will create line after the closest drop element.\n     * * `group` mode will create replace indicator on a whole closest drop element.\n     * * `auto` mode will create a line after the closest drop element\n     * if dragged element coordinates are shifted for 30% from the center of the closest drop element.\n     * Otherwise, it will create replace indicator on a whole closest drop element.\n     *\n     * `shift` mode is the default.\n     */\n    @Input()\n    dropMode: FdDndDropType = 'shift';\n\n    /**\n     * Threshold of dragged item over another item to define which type of `dropMode` should be used.\n     */\n    @Input()\n    threshold = 0.3;\n\n    /** Array of items, that will be sorted */\n    @Input()\n    items: Array<T> = [];\n\n    /** Defines if drag and drop feature should be enabled for list items */\n    @Input()\n    set draggable(draggable: boolean) {\n        this._draggable = draggable;\n        this._changeDraggableState(draggable);\n    }\n\n    /** Predicate function that checks whether the item can be dropped over another item. */\n    @Input()\n    dropPredicate: DropPredicate<T> | undefined;\n\n    /**\n     * Predicate function that checks whether the item can be dragged over another item.\n     * If the function returns `false`, dragged over item will not be highlighted, and drop event will be canceled.\n     */\n    @Input()\n    dragoverPredicate: DragoverPredicate<T> | undefined;\n\n    /**\n     * Event emitted when `dropPredicate` function evaluation changes.\n     * Emits `true` when evaluation started, and `false` when completed.\n     */\n    @Output()\n    dropPredicateCalculating = new EventEmitter<boolean>();\n\n    /** Event that is thrown when items are reordered */\n    @Output()\n    readonly itemsChange = new EventEmitter<Array<T>>();\n\n    /** Event that is thrown when the item is dropped */\n    @Output()\n    readonly itemDropped = new EventEmitter<FdDropEvent<T>>();\n\n    /** Event that is thrown when predicate function returned false. */\n    @Output()\n    readonly dropCancelled = new EventEmitter<void>();\n\n    /** @hidden */\n    @ContentChildren(DND_ITEM)\n    dndItems: QueryList<DndItem<T>>;\n\n    /** @hidden */\n    @HostBinding('class')\n    protected readonly _initialClass = 'fd-dnd-list';\n\n    /** @hidden */\n    private _elementsCoordinates: ElementChord[];\n\n    /** @hidden */\n    private _closestItemIndex: number | null = null;\n\n    /** @hidden */\n    private _closestItemPosition: 'before' | 'after' | null = null;\n\n    /** An RxJS Subject that will kill the current data stream (for unsubscribing)  */\n    private readonly _refresh$ = new Subject<void>();\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden  */\n    private _dndItemReference: DndItem[];\n\n    /** @hidden */\n    private _draggable = true;\n\n    /** @hidden */\n    private _detectedDropMode: 'shift' | 'group';\n\n    /** @hidden */\n    private _linesRemoved = true;\n\n    /** @hidden */\n    private _indicatorsRemoved = true;\n\n    /** @hidden */\n    private _draggedItem: T | undefined;\n\n    /** @hidden */\n    private _ignoreDrop = false;\n\n    /** @hidden */\n    ngAfterContentInit(): void {\n        this._changeDraggableState(this._draggable);\n        this.dndItems.changes\n            .pipe(startWith(null), takeUntilDestroyed(this._destroyRef))\n            .subscribe(() => this.refreshQueryList());\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._refresh$.next();\n        this._refresh$.complete();\n    }\n\n    /**\n     * Refreshes the indexes of the items.\n     */\n    refreshQueryList(): void {\n        const refresh$ = merge(this._refresh$, destroyObservable(this._destroyRef));\n        this._refresh$.next();\n\n        this._dndItemReference = this.dndItems.toArray();\n\n        this._changeDraggableState(this._draggable);\n\n        this.dndItems.forEach((item, index) => {\n            item.moved.pipe(takeUntil(refresh$)).subscribe((position: ElementPosition) => this.onMove(position, index));\n            item.started.pipe(takeUntil(refresh$)).subscribe(() => this.dragStart(index));\n            item.released.pipe(takeUntil(refresh$)).subscribe(async () => await this.dragEnd(index));\n        });\n    }\n\n    /** Method called when the item is being moved by 1 px */\n    onMove(mousePosition: ElementPosition, draggedItemIndex: number): void {\n        /** Temporary object, to store lowest distance values */\n        let closestItemIndex: number | null = null;\n\n        const closestDndItem = this._elementsCoordinates.find((element, index) => {\n            /** Check if an element can be replaced */\n            if (!element.stickToPosition && closestItemIndex !== index) {\n                const isMouseOnElement = _isMouseOnElement(element, mousePosition);\n                if (isMouseOnElement) {\n                    closestItemIndex = index;\n\n                    return true;\n                }\n            }\n            return false;\n        });\n\n        if (!closestDndItem) {\n            closestItemIndex = null;\n        }\n\n        /** If the closest element is different from the old one, the new one is picked. It prevents from performance issues */\n        if (\n            (closestItemIndex || closestItemIndex === 0) &&\n            (closestItemIndex !== this._closestItemIndex || this.dropMode === 'auto')\n        ) {\n            this._removeAllLines();\n            this._removeAllReplaceIndicators();\n            this._closestItemIndex = closestItemIndex;\n            this._closestItemPosition = this._elementsCoordinates[closestItemIndex].position;\n            const closestItem = this.items[this._closestItemIndex];\n            // If closest item index is same as dragged item, just remove indicators\n            if (closestItemIndex === draggedItemIndex) {\n                this._removeAllLines();\n                this._removeAllReplaceIndicators();\n                return;\n            }\n            if (\n                this.dragoverPredicate &&\n                this._draggedItem &&\n                !this.dragoverPredicate(this._draggedItem, closestItem, draggedItemIndex, this._closestItemIndex)\n            ) {\n                this._ignoreDrop = true;\n                this._setDisabledItem(this._closestItemIndex);\n                return;\n            }\n            this._setDisabledItem(-1);\n            /** Generating line, that shows where the element will be placed, on a drop */\n            if (this.dropMode === 'group') {\n                this._createReplaceIndicator(this._closestItemIndex);\n            } else if (this.dropMode === 'shift') {\n                this._createLine(this._closestItemIndex, this._closestItemPosition);\n            } else {\n                this._selectDropModeIndicator(draggedItemIndex, closestDndItem, closestItemIndex);\n            }\n        }\n    }\n\n    /** Method called when an element is started to be dragged */\n    dragStart(index: number): void {\n        const draggedItemElement = this._dndItemReference[index].elementRef;\n        this._draggedItem = this.items[index];\n        /** Counting all the element's chords */\n        this._elementsCoordinates = this._dndItemReference.map((item: DndItem) =>\n            item.getElementCoordinates(this._isBefore(draggedItemElement, item.elementRef), this.gridMode)\n        );\n    }\n\n    /** Method called when an element is released */\n    async dragEnd(draggedItemIndex: number): Promise<void> {\n        this._draggedItem = undefined;\n        const items = this.items.slice();\n        const replacedItemIndex = this._closestItemIndex;\n        this._setDisabledItem(-1);\n\n        if (this._ignoreDrop) {\n            this._ignoreDrop = false;\n            return;\n        }\n\n        if (replacedItemIndex === null || replacedItemIndex === -1) {\n            return;\n        }\n\n        const draggedDndItem = this.dndItems.get(draggedItemIndex)?.item ?? items[draggedItemIndex];\n        const replacedDndItem = this.dndItems.get(replacedItemIndex)?.item ?? items[replacedItemIndex];\n\n        const predicateSubj = new Subject<boolean>();\n\n        const evt: FdDropEvent<T> = {\n            replacedItemIndex,\n            draggedItemIndex,\n            items,\n            insertAt: this._closestItemPosition,\n            mode: this.dropMode !== 'auto' ? this.dropMode : this._detectedDropMode\n        };\n\n        predicateSubj.pipe(take(1)).subscribe((result) => {\n            this._removeAllLines();\n            this._removeAllReplaceIndicators();\n\n            /** Reset */\n            this._elementsCoordinates = [];\n            this._closestItemIndex = null;\n            this._closestItemPosition = null;\n\n            if (!result) {\n                this.dropCancelled.emit();\n                return;\n            }\n\n            if (draggedItemIndex !== replacedItemIndex) {\n                if (draggedItemIndex < replacedItemIndex) {\n                    for (let i = draggedItemIndex; i < replacedItemIndex; i++) {\n                        items[i] = items[i + 1];\n                    }\n                } else {\n                    for (let i = draggedItemIndex; i > replacedItemIndex; i--) {\n                        items[i] = items[i - 1];\n                    }\n                }\n\n                /** Replacing items */\n                items[replacedItemIndex] = draggedDndItem;\n\n                this.itemsChange.emit(items);\n            }\n\n            this.itemDropped.emit(evt);\n        });\n\n        if (this.dropPredicate !== undefined) {\n            this.dropPredicateCalculating.emit(true);\n            const obj = this.dropPredicate(draggedDndItem, replacedDndItem, evt);\n            const strategy = selectStrategy(obj);\n\n            await strategy.createSubscription(obj, (result) => {\n                predicateSubj.next(result);\n                this.dropPredicateCalculating.emit(false);\n            });\n        } else {\n            predicateSubj.next(true);\n        }\n    }\n\n    /** @hidden */\n    private _setDisabledItem(itemIndex: number): void {\n        this.dndItems.forEach((item, index) => {\n            item.setDisabledState(index === itemIndex);\n        });\n    }\n\n    /** @hidden */\n    private _selectDropModeIndicator(\n        draggedItemIndex: number,\n        closestItem: ElementChord | undefined,\n        closestItemIndex: number\n    ): void {\n        if (!closestItem || !this._dndItemReference[draggedItemIndex]) {\n            return;\n        }\n\n        let newDetectedDropMode: 'shift' | 'group';\n        const draggedElmCoords =\n            this._dndItemReference[draggedItemIndex].elementRef.nativeElement.getBoundingClientRect();\n\n        const closestItemBoundaries = getElementBoundaries(closestItem, this.threshold);\n        const draggedItemStartCoords = getElementStartCoords(draggedElmCoords, closestItem.position);\n\n        if (\n            _between(draggedItemStartCoords.x, closestItemBoundaries.x.start, closestItemBoundaries.x.end) &&\n            _between(draggedItemStartCoords.y, closestItemBoundaries.y.start, closestItemBoundaries.y.end)\n        ) {\n            newDetectedDropMode = 'group';\n        } else {\n            newDetectedDropMode = 'shift';\n        }\n\n        if (newDetectedDropMode === this._detectedDropMode && (!this._linesRemoved || !this._indicatorsRemoved)) {\n            return;\n        }\n\n        this._detectedDropMode = newDetectedDropMode;\n\n        if (this._detectedDropMode === 'shift') {\n            this._createLine(closestItemIndex, this._elementsCoordinates[closestItemIndex].position);\n        } else {\n            this._createReplaceIndicator(closestItemIndex);\n        }\n    }\n\n    /** @hidden */\n    private _removeAllLines(): void {\n        this._linesRemoved = true;\n        this.dndItems.forEach((item) => item.removeLine());\n    }\n\n    /** @hidden */\n    private _removeAllReplaceIndicators(): void {\n        this._indicatorsRemoved = true;\n        this.dndItems.forEach((item) => item.removeReplaceIndicator());\n    }\n\n    /** @hidden */\n    private _createLine(closestItemIndex: number, linkPosition: LinkPosition): void {\n        this._removeAllLines();\n        this._removeAllReplaceIndicators();\n        this._linesRemoved = false;\n        this._dndItemReference[closestItemIndex].createLine(linkPosition, this.gridMode);\n    }\n\n    /** @hidden */\n    private _createReplaceIndicator(closestItemIndex: number): void {\n        this._removeAllLines();\n        this._removeAllReplaceIndicators();\n        this._indicatorsRemoved = false;\n        this._dndItemReference[closestItemIndex].createReplaceIndicator();\n    }\n\n    /**\n     *  @hidden\n     * Return information if an element is placed before the dragged element\n     */\n    private _isBefore(draggedElement: ElementRef, targetElement: ElementRef): boolean {\n        /** Sometimes the elements are not straight in one column, that's why offset is needed */\n        const VERTICAL_OFFSET = 20;\n\n        /** Distances from the top of the screen */\n        const draggedElementBound = draggedElement.nativeElement.getBoundingClientRect();\n        const targetElementBound = targetElement.nativeElement.getBoundingClientRect();\n\n        if (draggedElementBound.top - targetElementBound.top > VERTICAL_OFFSET) {\n            /** If an element is higher than the dragged element, it's for sure before */\n            return true;\n        } else if (targetElementBound.top - draggedElementBound.top > VERTICAL_OFFSET) {\n            /** If an element is lower than the dragged element, it's for sure after */\n            return false;\n        } else {\n            /** If elements are in same level, the horizontal position decides if it's before/after */\n            return draggedElementBound.left - targetElementBound.left > 0;\n        }\n    }\n\n    /** @hidden */\n    private _changeDraggableState(draggable: boolean): void {\n        if (this.dndItems) {\n            this.dndItems.forEach((item) => {\n                item.listDraggable = draggable;\n                item.changeCDKDragState();\n            });\n        }\n    }\n}\n\nfunction _isMouseOnElement(element: ElementChord, mousePosition: ElementPosition): boolean {\n    const startX = element.x;\n    const endX = element.x + element.width;\n\n    const startY = element.y;\n    const endY = element.y + element.height;\n\n    return _between(mousePosition.x, startX, endX) && _between(mousePosition.y, startY, endY);\n}\n\nfunction _between(x: number, min: number, max: number): boolean {\n    return x >= min && x <= max;\n}\n\ninterface ElementBoundaries {\n    x: {\n        start: number;\n        end: number;\n    };\n    y: {\n        start: number;\n        end: number;\n    };\n}\n\nfunction getElementStartCoords(rect: DOMRect, position: ElementChord['position']): { x: number; y: number } {\n    return {\n        x: position === 'after' ? rect.x + rect.width : rect.x,\n        y: position === 'after' ? rect.y + rect.height : rect.y\n    };\n}\n\nfunction getElementBoundaries(coordinates: ElementChord, threshold: number): ElementBoundaries {\n    const widthOffset = coordinates.width * (coordinates.position === 'after' ? 1 : -1);\n    const heightOffset = coordinates.height * (coordinates.position === 'after' ? 1 : -1);\n    const xStart = coordinates.position === 'after' ? coordinates.x : coordinates.x + coordinates.width;\n    const xEnd = xStart + widthOffset + (widthOffset / 2) * threshold;\n    const yStart = coordinates.position === 'after' ? coordinates.y : coordinates.y + coordinates.height;\n    const yEnd = yStart + heightOffset + (heightOffset / 2) * threshold;\n    return {\n        x: {\n            start: xStart > xEnd ? xEnd : xStart,\n            end: xStart > xEnd ? xStart : xEnd\n        },\n        y: {\n            start: yStart > yEnd ? yEnd : yStart,\n            end: yStart > yEnd ? yStart : yEnd\n        }\n    };\n}\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgModule } from '@angular/core';\nimport { DndItemDirective } from './dnd-item/dnd-item.directive';\nimport { DndKeyboardGroupDirective } from './dnd-keyboard-group/dnd-keyboard-group.directive';\nimport { DndKeyboardItemDirective } from './dnd-keyboard-item/dnd-keyboard-item.directive';\nimport { DndListDirective } from './dnd-list/dnd-list.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [DragDropModule, DndItemDirective, DndListDirective, DndKeyboardGroupDirective, DndKeyboardItemDirective],\n    exports: [DndItemDirective, DndListDirective, DndKeyboardGroupDirective, DndKeyboardItemDirective]\n})\nexport class DragAndDropModule {}\n","import { NgModule } from '@angular/core';\nimport {\n    AutoCompleteModule,\n    BreakpointModule,\n    ClickedDirective,\n    DisabledBehaviorModule,\n    FocusableGridModule,\n    FocusableItemModule,\n    FocusableListModule,\n    InitialFocusModule,\n    IntersectionSpyDirective,\n    LineClampModule,\n    OnlyDigitsModule,\n    OverflowListModule,\n    ReadonlyBehaviorModule,\n    RepeatModule,\n    ResizeModule,\n    SelectableListModule,\n    TemplateModule,\n    TruncateModule\n} from './directives';\nimport { DragAndDropModule } from './drag-and-drop/drag-and-drop.module';\nimport { RtlService } from './services/rtl.service';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [\n        FocusableItemModule,\n        FocusableListModule,\n        FocusableGridModule,\n        DragAndDropModule,\n        OnlyDigitsModule,\n        TruncateModule,\n        LineClampModule,\n        OverflowListModule,\n        RepeatModule,\n        ResizeModule,\n        TemplateModule,\n        AutoCompleteModule,\n        DisabledBehaviorModule,\n        SelectableListModule,\n        ReadonlyBehaviorModule,\n        ClickedDirective,\n        InitialFocusModule,\n        BreakpointModule,\n        IntersectionSpyDirective\n    ],\n    exports: [\n        FocusableItemModule,\n        FocusableListModule,\n        FocusableGridModule,\n        DragAndDropModule,\n        OnlyDigitsModule,\n        TruncateModule,\n        LineClampModule,\n        OverflowListModule,\n        RepeatModule,\n        ResizeModule,\n        TemplateModule,\n        AutoCompleteModule,\n        DisabledBehaviorModule,\n        SelectableListModule,\n        ReadonlyBehaviorModule,\n        ClickedDirective,\n        InitialFocusModule,\n        BreakpointModule,\n        IntersectionSpyDirective\n    ],\n    providers: [RtlService]\n})\nexport class UtilsModule {}\n","import { Directive, ElementRef, Input, OnChanges, OnInit, inject } from '@angular/core';\nimport { HasElementRef } from './interfaces/has-element-ref.interface';\n\n/*\n This abstract class allows the user to set their own custom styles on a Fundamental Library for Angular directive, in addition to the\n styles the library needs to add itself.\n When library styles were added through the directive's host: {'[class]'} property, any styles the user added would be\n overwritten.  By extending this class, we instead add library styles to the user's classList rather than replace them.\n */\n\n/** @hidden */\n@Directive()\nexport abstract class AbstractFdNgxClass implements HasElementRef, OnInit, OnChanges {\n    /** @hidden */\n    abstract _setProperties(): void;\n\n    /** @hidden */\n    @Input() class: string; // user's custom classes\n\n    /** @hidden */\n    readonly elementRef = inject(ElementRef);\n    /** @hidden */\n    constructor() {\n        this._setProperties();\n    }\n\n    /*\n     each directive that extends this class will implement this function and populate it with one or more calls to\n     the '_addClassToElement' function, passing the style names to be added with each call\n     */\n\n    /** @hidden */\n    _setClassToElement(className: string): void {\n        (this.elementRef.nativeElement as HTMLElement).classList.value = `${className} ${this.class}`;\n    }\n\n    /** @hidden */\n    _clearElementClass(): void {\n        (this.elementRef.nativeElement as HTMLElement).classList.value = '';\n    }\n\n    /** @hidden */\n    _addClassToElement(className: string): void {\n        (this.elementRef.nativeElement as HTMLElement).classList.add(...className.split(' '));\n    }\n\n    /** @hidden */\n    _addStyleToElement(attribute, value): void {\n        (this.elementRef.nativeElement as HTMLElement).style[attribute] = value;\n    }\n\n    /** @hidden */\n    ngOnChanges(): void {\n        const classList = (this.elementRef.nativeElement as HTMLElement).classList;\n        while (classList.length > 0) {\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            classList.remove(classList.item(0)!);\n        }\n        if (this.class) {\n            this._addClassToElement(this.class);\n        }\n        this._setProperties();\n    }\n\n    /** @hidden */\n    ngOnInit(): void {\n        this._setProperties();\n    }\n}\n","import { coerceArray } from '@angular/cdk/coercion';\nimport { isBlank } from '../typecheck';\n\n/** @hidden */\nexport function coerceArraySafe<T>(value: T | T[]): T[] {\n    return isBlank(value) ? [] : coerceArray(value);\n}\n","import { coerceElement } from '@angular/cdk/coercion';\nimport {\n    CdkPortalOutlet,\n    ComponentPortal,\n    ComponentType,\n    DomPortal,\n    PortalModule,\n    TemplatePortal\n} from '@angular/cdk/portal';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ComponentRef,\n    DestroyRef,\n    ElementRef,\n    EmbeddedViewRef,\n    EventEmitter,\n    Input,\n    Output,\n    Renderer2,\n    TemplateRef,\n    ViewChild,\n    ViewContainerRef,\n    inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, filter, map, tap } from 'rxjs';\n\n/**\n * A component that can be used to attach a portal to a DOM element, without explicitly creating portal instances on place.\n * This is useful when you have a list of the components or templates, or HTMLElmets, and you want to attach them to the DOM\n * dynamically in a loop.\n */\n@Component({\n    selector: 'fdk-dynamic-portal',\n    imports: [PortalModule],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: ` <ng-template cdkPortalOutlet></ng-template>`\n})\nexport class DynamicPortalComponent implements AfterViewInit {\n    /** The DOM element to attach */\n    @Input()\n    set domElement(value: HTMLElement | ElementRef<HTMLElement> | string) {\n        this.portalContent$.next(value);\n    }\n\n    /** The component to attach */\n    @Input()\n    set component(value: ComponentType<any>) {\n        this.portalContent$.next(value);\n    }\n\n    /** The template to attach */\n    @Input()\n    set template(value: TemplateRef<any>) {\n        this.portalContent$.next(value);\n    }\n\n    /** The Content which should be attached and can be any of the items */\n    @Input()\n    set auto(value: DynamicPortalComponent['domElement' | 'component' | 'template']) {\n        this.portalContent$.next(value);\n    }\n\n    /** Emits when the portal is attached */\n    @Output()\n    attached = new EventEmitter<ComponentRef<any> | EmbeddedViewRef<any> | Element>();\n\n    /** @hidden */\n    @ViewChild(CdkPortalOutlet)\n    portalOutlet?: CdkPortalOutlet;\n\n    /** @hidden */\n    private portalContent$ = new BehaviorSubject<\n        DynamicPortalComponent['domElement' | 'component' | 'template'] | undefined\n    >(undefined);\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private viewContainerRef = inject(ViewContainerRef);\n\n    /** @hidden */\n    private renderer = inject(Renderer2);\n\n    /** @hidden */\n    private elementRef = inject(ElementRef);\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        const portalOutlet = this.portalOutlet as CdkPortalOutlet;\n        this.portalContent$\n            .pipe(\n                tap(() => portalOutlet.detach()),\n                filter(Boolean),\n                map((content) => {\n                    if (typeof content === 'string') {\n                        const textElement = this.renderer.createText(content);\n                        this.renderer.appendChild(this.elementRef.nativeElement, textElement);\n                        return new DomPortal(textElement);\n                    } else if (content instanceof HTMLElement || content instanceof ElementRef) {\n                        return new DomPortal(coerceElement(content as HTMLElement | ElementRef<HTMLElement>));\n                    } else if (content instanceof TemplateRef) {\n                        return new TemplatePortal(content, this.viewContainerRef);\n                    }\n                    return new ComponentPortal(content);\n                }),\n                filter(Boolean),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe((portal) => {\n                const ref = portalOutlet.attach(portal);\n                if (portal instanceof DomPortal) {\n                    // DomPortal Attachment does not refer return Ref, like other portals\n                    this.attached.emit(portal.element);\n                } else {\n                    this.attached.emit(ref);\n                }\n            });\n    }\n}\n","export const MOBILE_CONFIG_ERROR = `Missing configuration object for mobile version of the component.\n    Consult the documentation on how to provide MobileModeConfiguration object for this component.\n`;\n\nexport const THEME_SWITCHER_ROUTER_MISSING_ERROR = `You need to import RouterModule to enable theme settings via the url.`;\n\nexport const INVALID_DATE_ERROR = 'Invalid Date';\n","export type OverflowPriority = 'always' | 'never' | 'low' | 'high' | 'disappear';\n\nexport const OVERFLOW_PRIORITY_SCORE: Map<OverflowPriority, number> = new Map([\n    ['always', 0],\n    ['disappear', 1],\n    ['low', 2],\n    ['high', 3],\n    ['never', 4]\n]);\n","/**\n * Instead of `/\\p{L}/u` because of it's not working in IE11 and Edge\n * - https://github.com/Microsoft/ChakraCore/issues/2969\n * */\n// eslint-disable-next-line max-len\nexport const LETTERS_UNICODE_RANGE = `[A-Za-z\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]`;\n// eslint-disable-next-line max-len\nexport const ANY_LANGUAGE_LETTERS_REGEX = new RegExp(LETTERS_UNICODE_RANGE, 'g');\n// eslint-disable-next-line max-len\nexport const ANY_LANGUAGE_LETTERS_GROUP_REGEX = new RegExp(`(${LETTERS_UNICODE_RANGE})+`, 'g');\n","/**\n * Polyfill for `/\\p{Nd}/u` to work in IE11 and Edge\n */\n// eslint-disable-next-line max-len\nexport const DECIMAL_NUMBER_UNICODE_RANGE = `[0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19]`;\nexport const DECIMAL_NUMBER_UNICODE_REGEX = new RegExp(DECIMAL_NUMBER_UNICODE_RANGE, 'g');\nexport const DECIMAL_NUMBER_UNICODE_GROUP_REGEX = new RegExp(`(${DECIMAL_NUMBER_UNICODE_RANGE})+`, 'g');\n","import { ElementRef } from '@angular/core';\n\nexport interface HasElementRef<ElementType extends Element = HTMLElement> {\n    readonly elementRef: ElementRef<ElementType>;\n}\n\nexport const ELEMENT_REF_EXCEPTION = 'HasElementRef interface has to be implemented';\n","import { uuidv4 } from '../functions/uuidv4-generator';\nimport { CssClassBuilder } from '../interfaces/css-class-builder.interface';\nimport { ELEMENT_REF_EXCEPTION } from '../interfaces/has-element-ref.interface';\n\n/**\n * Method decorator to apply css class to a component through native element\n * decorator will store original method in variable and wrap it with custom one\n * component has to implement CssClassBuilder interface\n * more info abour method decorator: https://www.typescriptlang.org/docs/handbook/decorators.html#method-decorators\n * @param target a component\n * @param propertyKey name of the method\n * @param descriptor method\n */\nexport function applyCssClass(target: any, propertyKey: string, descriptor: PropertyDescriptor): void {\n    const originalMethod = descriptor.value;\n    descriptor.value = function (): string[] {\n        const self = this as unknown as CssClassBuilder & { _uuidv4?: string };\n        if (!('elementRef' in self)) {\n            throw ELEMENT_REF_EXCEPTION;\n        }\n\n        const classListToApply: string[] = sanitize(originalMethod.apply(this));\n\n        const elementRef = self.elementRef;\n\n        const nativeElement: HTMLElement & { _classMap?: any } = elementRef?.nativeElement;\n\n        if (!nativeElement) {\n            return classListToApply;\n        }\n\n        if (!nativeElement._classMap) {\n            nativeElement._classMap = {};\n        }\n\n        if (!self._uuidv4) {\n            self._uuidv4 = uuidv4();\n        }\n\n        const currentClassList = Array.from(nativeElement.classList);\n\n        const previousClassListToApply = nativeElement._classMap[self._uuidv4] || [];\n\n        const newClassList = createComponentClassList(currentClassList, previousClassListToApply, classListToApply);\n\n        nativeElement.className = newClassList.join(' ');\n\n        nativeElement._classMap[self._uuidv4] = classListToApply;\n\n        return classListToApply;\n    };\n}\n\n/** Filter list to unique items */\nfunction unique(value: unknown, index: number, list: unknown[]): boolean {\n    return list.indexOf(value) === index;\n}\n\n/** Splits merged classes, removes falsy elements and leaves only unique items */\nfunction sanitize(array: string[]): string[] {\n    return array\n        .filter(Boolean)\n        .reduce((classList: string[], cssClass: string) => [...classList, ...cssClass.split(/\\s+/)], [])\n        .filter(unique);\n}\n\nfunction firstCommonElementIndex(array1: string[], array2: string[]): number {\n    return array1.findIndex((element) => array2.indexOf(element) !== -1);\n}\n\n/** Create set of component classes based on previous set and new set */\nfunction createComponentClassList(\n    allClasses: string[],\n    previousComponentClassList: string[],\n    newComponentClassList: string[]\n): string[] {\n    allClasses = allClasses.slice();\n    let index = firstCommonElementIndex(allClasses, previousComponentClassList);\n    index = index === -1 ? 0 : index;\n    allClasses.splice(index, previousComponentClassList.length, ...newComponentClassList);\n\n    return allClasses;\n}\n","import { Hash } from '../datatypes/hash.datatype';\nimport { ELEMENT_REF_EXCEPTION, HasElementRef } from '../interfaces/has-element-ref.interface';\n\n/**\n * Method decorator to apply css styles to a component through native element\n * decorator will store original method in variable and wrap it with custom one\n * component has to implement HasElementRef or CssStyleBuilder interface\n * more info abour method decorator: https://www.typescriptlang.org/docs/handbook/decorators.html#method-decorators\n * @param target a component\n * @param propertyKey name of the method\n * @param descriptor method\n */\nexport function applyCssStyle(target: any, propertyKey: string, descriptor: PropertyDescriptor): void {\n    const originalMethod = descriptor.value;\n    descriptor.value = function (): Hash<number | string> {\n        const self = this as unknown as HasElementRef;\n        if (!self.elementRef) {\n            throw ELEMENT_REF_EXCEPTION;\n        }\n\n        const _styles: Hash<number | string> = originalMethod.apply(this);\n        const htmlElement = self.elementRef.nativeElement as HTMLElement;\n        Object.keys(_styles).forEach((key) => {\n            htmlElement.style[key] = _styles[key];\n        });\n\n        return _styles;\n    };\n}\n","/**\n * Function, which generates decorator. Passed mutator will be called during value set\n */\nexport function alternateSetter(mutator: (value: any, self: Record<string | symbol, any>) => any): PropertyDecorator {\n    return function (targetObj: Record<string | symbol, any>, propertyKey: string | symbol) {\n        const _key = Symbol();\n        targetObj[_key] = targetObj[propertyKey];\n        Object.defineProperty(targetObj, propertyKey, {\n            get() {\n                return this[_key];\n            },\n            set(v: any) {\n                this[_key] = mutator.call(this, v, this);\n            }\n        });\n    };\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { alternateSetter } from './setter-alternator';\n\n/**\n * Decorator for coercing passed value to boolean, using @angular/cdk coerceBooleanProperty\n */\nexport const coerceBoolean = alternateSetter(coerceBooleanProperty);\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { alternateSetter } from './setter-alternator';\n\nexport const coerceCssPixel = alternateSetter(coerceCssPixelValue);\n","import { inject, InjectionToken, isDevMode, ValueProvider } from '@angular/core';\n\nexport interface DeprecatedSelectorModel {\n    deprecated: string;\n    current: string;\n}\n\n/** @hidden */\nexport function getDeprecatedModel(current: string, deprecated: string): DeprecatedSelectorModel {\n    return {\n        current,\n        deprecated\n    };\n}\n\n/** @hidden */\nexport function deprecatedModelProvider(current: string, deprecated: string): ValueProvider {\n    return {\n        provide: FD_DEPRECATED_DIRECTIVE_SELECTOR,\n        useValue: getDeprecatedModel(current, deprecated)\n    };\n}\n\nexport const FD_DEPRECATED_DIRECTIVE_SELECTOR = new InjectionToken<DeprecatedSelectorModel>(\n    'FdDeprecatedDirectiveSelector'\n);\n\nexport abstract class DeprecatedSelector {\n    /** @hidden */\n    protected _selectors: DeprecatedSelectorModel | null = inject(FD_DEPRECATED_DIRECTIVE_SELECTOR, { optional: true });\n\n    /** @hidden */\n    constructor() {\n        if (isDevMode() && this._selectors) {\n            console.warn(this._messageGenerator(this._selectors.deprecated, this._selectors.current));\n        }\n    }\n\n    /** @hidden */\n    protected _messageGenerator(deprecated: string, current: string): string {\n        const segments = [`${deprecated} selector(s) are deprecated and may affect input properties`];\n        if (current) {\n            segments.push(`Use ${current} instead.`);\n        }\n        return segments.join('. ');\n    }\n}\n","import { CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n    ComponentRef,\n    ElementRef,\n    EmbeddedViewRef,\n    Injector,\n    TemplateRef,\n    Type,\n    ViewContainerRef\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Nullable } from '../models/nullable';\n\nexport abstract class DynamicComponentContainer<T = TemplateRef<any> | Type<any>> {\n    /** @hidden */\n    abstract portalOutlet: CdkPortalOutlet;\n\n    /** @hidden Load received content */\n    protected abstract _loadContent(): void;\n\n    /** @hidden */\n    childContent: Nullable<T> = undefined;\n\n    /** @hidden */\n    protected _componentRef: ComponentRef<any> | EmbeddedViewRef<any>;\n\n    /** @hidden */\n    protected _contentLoaded$ = new BehaviorSubject<boolean>(false);\n\n    /** @hidden */\n    protected constructor(\n        public elementRef: ElementRef,\n        protected _injector: Injector\n    ) {}\n\n    /** @hidden Load received content as component */\n    protected _createFromComponent(content: Type<any>): void {\n        this.portalOutlet?.attachedRef?.destroy();\n        const injector = Injector.create({\n            parent: this._injector,\n            providers: []\n        });\n        this._componentRef = this.portalOutlet.attach(new ComponentPortal(content, null, injector));\n    }\n\n    /** @hidden Load received content as embedded view */\n    protected _createFromTemplate(content: TemplateRef<any>, context: any): void {\n        this.portalOutlet?.attachedRef?.destroy();\n        if (this.portalOutlet.hasAttached()) {\n            this.portalOutlet.detach();\n        }\n        this._componentRef = this.portalOutlet.attach(\n            new TemplatePortal(content, null as unknown as ViewContainerRef, context)\n        );\n    }\n}\n","import { Injector } from '@angular/core';\n\nexport class DynamicComponentInjector implements Injector {\n    /** @hidden */\n    constructor(\n        private _parentInjector: Injector,\n        private _additionalTokens: WeakMap<any, any>\n    ) {}\n\n    /**\n     *\n     * @param token\n     * @param notFoundValue\n     */\n    get(token: any, notFoundValue?: any): void {\n        const value = this._additionalTokens.get(token);\n\n        if (value) {\n            return value;\n        }\n\n        return this._parentInjector.get<any>(token, notFoundValue);\n    }\n}\n","import {\n    ApplicationRef,\n    Compiler,\n    ComponentFactoryResolver,\n    ComponentRef,\n    EmbeddedViewRef,\n    Injectable,\n    Injector,\n    NgModuleFactory,\n    TemplateRef,\n    Type,\n    ViewContainerRef\n} from '@angular/core';\nimport { DynamicComponentConfig } from './dynamic-component-config';\nimport { DynamicComponentInjector } from './dynamic-component-injector';\n\n/**\n * Service used to dynamically generate components like dialogs/alerts/notifications\n */\n@Injectable({\n    providedIn: 'root'\n})\nexport class DynamicComponentService {\n    /** @hidden */\n    constructor(\n        private readonly _componentFactoryResolver: ComponentFactoryResolver,\n        private readonly _applicationRef: ApplicationRef,\n        private readonly _injector: Injector,\n        private readonly _compiler: Compiler\n    ) {}\n\n    /**\n     * Function that creates dynamic component and injects services to allow communication between component and outside\n     * @param content Type of the component content\n     * @param componentType Type of component that should be rendered.\n     * @param config Configuration that will be passed to the component.\n     * @param inject  enables to provide preconfigured component injector and dependencies\n     */\n    public createDynamicComponent<T>(\n        content: TemplateRef<any> | Type<any> | string | Record<string, any>,\n        componentType: Type<T>,\n        config: DynamicComponentConfig,\n        inject: { injector?: Injector; services?: any[] } = {}\n    ): ComponentRef<T> {\n        const { injector, services } = inject;\n        const dependenciesMap = this._createDependencyMap(services);\n        const componentRef = this._createComponent<T>(componentType, dependenciesMap, injector);\n        this._passExternalContent<T>(componentRef, content);\n        this._attachToContainer<T>(componentRef, config);\n\n        return componentRef;\n    }\n\n    /**\n     * Function that creates dynamic component and injects services to allow communication between component and outside\n     * @param content Type of the component content\n     * @param moduleType Type of module that should be compiled.\n     * @param componentType Type of component that should be rendered.\n     * @param containerRef The container that the dynamic component is appended to.\n     * @param injector enables to provide preconfigured component injector\n     */\n    async createDynamicModule<M, C>(\n        content: TemplateRef<any> | Type<any> | string | Record<string, any>,\n        moduleType: Type<M> | NgModuleFactory<M>,\n        componentType: Type<C>,\n        containerRef: ViewContainerRef,\n        injector?: Injector\n    ): Promise<ComponentRef<C>> {\n        const moduleFactory =\n            moduleType instanceof NgModuleFactory ? moduleType : await this._compiler.compileModuleAsync<M>(moduleType);\n        const moduleRef = moduleFactory.create(injector || this._injector);\n        const componentFactory = moduleRef.componentFactoryResolver.resolveComponentFactory(componentType);\n\n        containerRef.clear();\n\n        const componentRef: ComponentRef<C> = containerRef.createComponent(componentFactory);\n\n        this._passExternalContent<C>(componentRef, content);\n\n        return componentRef;\n    }\n\n    /** Function that destroys dynamic component */\n    public destroyComponent(componentRef: ComponentRef<any>): void {\n        this._applicationRef.detachView(componentRef.hostView);\n        componentRef.hostView.detach();\n        componentRef.destroy();\n    }\n\n    /** @hidden */\n    private _createDependencyMap(services: any[] = []): WeakMap<any, any> {\n        const dependencyMap = new WeakMap();\n        services.filter((service) => !!service).forEach((service) => dependencyMap.set(service.constructor, service));\n        return dependencyMap;\n    }\n\n    /** @hidden */\n    private _attachToContainer<V>(componentRef: ComponentRef<V>, config: DynamicComponentConfig): void {\n        const configObj = Object.assign({}, config);\n        if (config.containerRef) {\n            componentRef.hostView.detach();\n            config.containerRef.insert(componentRef.hostView);\n            return;\n        }\n        this._applicationRef.attachView(componentRef.hostView);\n        const componentEl = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n        if (configObj.container !== 'body') {\n            configObj.container?.appendChild(componentEl);\n        } else {\n            document.body.appendChild(componentEl);\n        }\n    }\n\n    /** @hidden */\n    private _createComponent<V>(\n        componentType: Type<V>,\n        dependenciesMap: WeakMap<any, any>,\n        injector?: Injector\n    ): ComponentRef<V> {\n        const dynamicComponentInjector = new DynamicComponentInjector(injector || this._injector, dependenciesMap);\n        const componentFactory = this._componentFactoryResolver.resolveComponentFactory(componentType);\n        const componentRef = componentFactory.create(dynamicComponentInjector);\n        // this._applicationRef.attachView(componentRef.hostView);\n        return componentRef;\n    }\n\n    /** @hidden */\n    private _passExternalContent<V>(\n        componentRef: ComponentRef<V>,\n        content: TemplateRef<any> | Type<any> | string | Record<string, any>\n    ): void {\n        // TODO: this approach should be revisited, it can cause issues, that is really hard to debug\n        if (Object.prototype.hasOwnProperty.call(componentRef.instance, 'childContent')) {\n            (componentRef.instance as any).childContent = content;\n        }\n    }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const LIST_ITEM_COMPONENT = new InjectionToken<string[]>('ListItemComponent');\n\nexport interface ListItemInterface {\n    selected: boolean;\n\n    link: boolean;\n\n    focus(): void;\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectorRef, OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { isPromise, isSubscribable } from '../typecheck';\n\nexport type FdkAsyncProperty<T> = T | Observable<T> | Promise<T>;\n\n@Pipe({\n    name: 'fdkAsyncOrSync',\n    standalone: true,\n    pure: false\n})\nexport class AsyncOrSyncPipe implements OnDestroy, PipeTransform {\n    /** @hidden */\n    private _cdr: ChangeDetectorRef | null;\n    /** @hidden */\n    private _asyncPipe: AsyncPipe;\n\n    /** @hidden */\n    constructor(ref: ChangeDetectorRef) {\n        this._cdr = ref;\n        this._asyncPipe = new AsyncPipe(this._cdr);\n    }\n\n    /**\n     * Transforms raw async-like value into static one.\n     * @param value raw value. Can be either a static value, or Promise-like, or Observable-like.\n     */\n    transform<T>(value: FdkAsyncProperty<T>): T | null {\n        if (isPromise(value) || isSubscribable(value)) {\n            return this._asyncPipe.transform(value);\n        }\n        return value;\n    }\n\n    /** @Hidden */\n    ngOnDestroy(): void {\n        this._asyncPipe.ngOnDestroy();\n        this._cdr = null;\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'displayFnPipe',\n    standalone: true\n})\nexport class DisplayFnPipe implements PipeTransform {\n    /** Transform value with display function. */\n    transform(value: any, displayFn: any, ...args: any): string {\n        return displayFn(value, ...args);\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Nullable } from '../models/nullable';\n\n@Pipe({\n    name: 'fdFilterStrings',\n    standalone: true\n})\nexport class FilterStringsPipe implements PipeTransform {\n    /**\n     * Performs filtering.\n     * @param values Array of items.\n     * @param params Search parameters.\n     */\n    transform(values: any[] = [], params: { searchTerm: Nullable<string>; key: string }): any[] {\n        if (!params.searchTerm) {\n            return values;\n        }\n        if (params.key) {\n            values = values.filter((item) =>\n                item[params.key].toLocaleLowerCase().includes(params.searchTerm?.toLocaleLowerCase())\n            );\n        } else {\n            values = values.filter((item) => item.toLocaleLowerCase().includes(params.searchTerm?.toLocaleLowerCase()));\n        }\n        return values;\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { isCompactDensity } from '../functions/is-compact-density';\nimport { ContentDensity } from '../interfaces/content-density';\n\n@Pipe({ name: 'isCompactDensity', standalone: true })\nexport class IsCompactDensityPipe implements PipeTransform {\n    /** Check if the content density is compact. */\n    transform(size: ContentDensity): boolean {\n        return isCompactDensity(size);\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { isPromise, isSubscribable } from '../typecheck';\n\n@Pipe({\n    name: 'fdkMakeAsync',\n    pure: true,\n    standalone: true\n})\nexport class MakeAsyncPipe implements PipeTransform {\n    /**\n     * Transforms raw value into observable.\n     * @param value raw value. Can be either a static value, or Promise-like, or Observable-like.\n     */\n    transform<T>(value: T | Promise<T> | Observable<T>): Observable<T> | Promise<T> {\n        return isPromise(value) || isSubscribable(value) ? value : of(value);\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';\n\n@Pipe({\n    name: 'safe',\n    standalone: true\n})\nexport class SafePipe implements PipeTransform {\n    /** @hidden */\n    constructor(protected sanitizer: DomSanitizer) {}\n\n    /** Sanitize HTML string. */\n    public transform(value: any, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n        switch (type) {\n            case 'html':\n                return this.sanitizer.bypassSecurityTrustHtml(value);\n\n            case 'style':\n                return this.sanitizer.bypassSecurityTrustStyle(value);\n\n            case 'script':\n                return this.sanitizer.bypassSecurityTrustScript(value);\n\n            case 'url':\n                return this.sanitizer.bypassSecurityTrustUrl(value);\n\n            case 'resourceUrl':\n                return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n\n            default:\n                throw new Error(`Invalid safe type specified: ${type}`);\n        }\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { escape } from '../functions/lodash-utils';\n\n@Pipe({\n    name: 'highlight',\n    standalone: true\n})\nexport class SearchHighlightPipe implements PipeTransform {\n    /** Highlight search term in string. */\n    transform(\n        value: string,\n        matches: string | Array<[number, number]>,\n        active: boolean = true,\n        includeSpans: boolean = false\n    ): string {\n        value = escape(value);\n        let result: string = value;\n        if (value && active && matches) {\n            if (Array.isArray(matches)) {\n                matches.forEach((match) => {\n                    const matchingString = value.substring(match[0], match[1] + 1);\n                    result = result.replace(matchingString, '<strong>' + matchingString + '</strong>');\n                });\n            } else if (typeof matches === 'string') {\n                const testStr: string = escape(matches.trim().toLowerCase());\n                const startIndex = value.toLowerCase().indexOf(testStr);\n                if (startIndex !== -1) {\n                    const matchingString = value.substring(startIndex, startIndex + testStr.length);\n                    result = value.replace(matchingString, '<strong>' + matchingString + '</strong>');\n                }\n            }\n        }\n        if (includeSpans) {\n            result = '<span>' + result + '</span>';\n        }\n        return result;\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'truncate',\n    standalone: true\n})\nexport class TruncatePipe implements PipeTransform {\n    /** Truncate string to given length. */\n    transform(value: string, limit: number = 500): string {\n        return value && value.length > limit ? value.substring(0, limit) + '...' : value;\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'twoDigits',\n    standalone: true\n})\nexport class TwoDigitsPipe implements PipeTransform {\n    /** Transform number to two digits. */\n    transform(value: number, enable: boolean = true): string {\n        if ((value || value === 0) && enable) {\n            return value < 10 ? '0' + value : value.toString();\n        } else {\n            return String(value);\n        }\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { get } from '../functions/lodash-utils';\n\n@Pipe({ name: 'valueByPath', standalone: true })\nexport class ValueByPathPipe implements PipeTransform {\n    /** Get value by path. */\n    transform(value: any, key: string): any {\n        return get(value, key);\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { AsyncOrSyncPipe } from './async-or-sync.pipe';\n\nimport { DisplayFnPipe } from './displayFn.pipe';\nimport { FilterStringsPipe } from './filter-strings.pipe';\nimport { IsCompactDensityPipe } from './is-compact.pipe';\nimport { MakeAsyncPipe } from './make-async.pipe';\nimport { SafePipe } from './safe.pipe';\nimport { SearchHighlightPipe } from './search-highlight.pipe';\nimport { TruncatePipe } from './truncate.pipe';\nimport { TwoDigitsPipe } from './two-digits.pipe';\nimport { ValueByPathPipe } from './value-by-path.pipe';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [\n        DisplayFnPipe,\n        SearchHighlightPipe,\n        TwoDigitsPipe,\n        SafePipe,\n        ValueByPathPipe,\n        IsCompactDensityPipe,\n        TruncatePipe,\n        FilterStringsPipe,\n        MakeAsyncPipe,\n        AsyncOrSyncPipe\n    ],\n    exports: [\n        DisplayFnPipe,\n        SearchHighlightPipe,\n        TwoDigitsPipe,\n        SafePipe,\n        ValueByPathPipe,\n        IsCompactDensityPipe,\n        TruncatePipe,\n        FilterStringsPipe,\n        MakeAsyncPipe,\n        AsyncOrSyncPipe\n    ]\n})\nexport class PipeModule {}\n","import { ConnectedPosition, ScrollStrategy } from '@angular/cdk/overlay';\n\nexport interface ToastGlobalPosition {\n    left?: string;\n    right?: string;\n    bottom?: string;\n    top?: string;\n    center: boolean;\n    centerVertically?: boolean;\n}\n\nexport interface ToastGlobalConnectedPosition extends ConnectedPosition {\n    boundTo: HTMLElement;\n}\n\nexport const toastConnectedTopPosition: ConnectedPosition = {\n    originX: 'center',\n    originY: 'bottom',\n    overlayX: 'center',\n    overlayY: 'top',\n    offsetY: 16\n};\n\nexport const toastConnectedTopLeftPosition: ConnectedPosition = {\n    ...toastConnectedTopPosition,\n    ...{ overlayX: 'start', originX: 'start' }\n};\n\nexport const toastConnectedTopRightPosition: ConnectedPosition = {\n    ...toastConnectedTopPosition,\n    ...{ overlayX: 'end', originX: 'end' }\n};\n\nexport const toastConnectedBottomPosition: ConnectedPosition = {\n    originX: 'center',\n    originY: 'top',\n    overlayX: 'center',\n    overlayY: 'bottom',\n    offsetY: -16\n};\n\nexport const toastConnectedBottomLeftPosition: ConnectedPosition = {\n    ...toastConnectedBottomPosition,\n    ...{ overlayX: 'start', originX: 'start' }\n};\n\nexport const toastConnectedBottomRightPosition: ConnectedPosition = {\n    ...toastConnectedBottomPosition,\n    ...{ overlayX: 'end', originX: 'end' }\n};\n\n/**\n * Base Toast Position class.\n */\nexport abstract class BaseToastPosition {\n    /**\n     * Position strategy of the first item.\n     */\n    global!: ToastGlobalPosition | ToastGlobalConnectedPosition;\n    /**\n     * Position strategy of the newly added items.\n     */\n    connected!: ConnectedPosition;\n\n    /**\n     * Scroll strategy. Used when global position is bound to some HTML element on the page.\n     */\n    scrollPosition?: ScrollStrategy;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the top-center of the screen.\n * New items will stack after the first item.\n */\nexport class ToastTopCenterPosition extends BaseToastPosition {\n    /** @hidden */\n    static global: ToastGlobalPosition = {\n        top: '1rem',\n        center: true\n    };\n    /** @hidden */\n    static connected: ConnectedPosition = toastConnectedTopPosition;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the bottom-center of the screen.\n * New items will stack before first item.\n */\nexport class ToastBottomCenterPosition extends BaseToastPosition {\n    /** @hidden */\n    static global: ToastGlobalPosition = {\n        bottom: '1rem',\n        center: true\n    };\n    /** @hidden */\n    static connected: ConnectedPosition = toastConnectedBottomPosition;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the top-left of the screen.\n * New items will stack after first item.\n */\nexport class ToastTopLeftPosition extends ToastTopCenterPosition {\n    /** @hidden */\n    static override global = { ...ToastTopCenterPosition.global, ...{ left: '1rem', center: false } };\n    /** @hidden */\n    static override connected: ConnectedPosition = toastConnectedTopLeftPosition;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the top-right of the screen.\n * New items will stack after first item.\n */\nexport class ToastTopRightPosition extends ToastTopCenterPosition {\n    /** @hidden */\n    static override global = { ...ToastTopCenterPosition.global, ...{ right: '1rem', center: false } };\n    /** @hidden */\n    static override connected: ConnectedPosition = toastConnectedTopRightPosition;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the bottom-left of the screen.\n * New items will stack before first item.\n */\nexport class ToastBottomLeftPosition extends ToastBottomCenterPosition {\n    /** @hidden */\n    static override global = { ...ToastBottomCenterPosition.global, ...{ left: '1rem', center: false } };\n    /** @hidden */\n    static override connected = toastConnectedBottomLeftPosition;\n}\n\n/**\n * Toast Position class.\n * The first item will pop from the bottom-right of the screen.\n * New items will stack before first item.\n */\nexport class ToastBottomRightPosition extends ToastBottomCenterPosition {\n    /** @hidden */\n    static override global = { ...ToastBottomCenterPosition.global, ...{ right: '1rem', center: false } };\n    /** @hidden */\n    static override connected = toastConnectedBottomRightPosition;\n}\n","import {\n    ComponentType,\n    FlexibleConnectedPositionStrategy,\n    GlobalPositionStrategy,\n    Overlay,\n    OverlayConfig,\n    OverlayRef,\n    PositionStrategy\n} from '@angular/cdk/overlay';\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n    ComponentRef,\n    DestroyRef,\n    EmbeddedViewRef,\n    Injectable,\n    InjectionToken,\n    Injector,\n    StaticProvider,\n    TemplateRef,\n    Type,\n    inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BaseToastPosition, ToastGlobalConnectedPosition, ToastGlobalPosition } from './base-toast-positions';\nimport { BaseToastConfig } from './classes/base-toast-config';\nimport { BaseToastRef } from './classes/base-toast-ref';\nimport { ToastContainerComponent } from './interfaces/toast-container-component.interface';\nimport { ToastTextComponent } from './interfaces/toast-text-component.interface';\n\n@Injectable()\nexport abstract class BaseToastService<\n    P extends BaseToastConfig,\n    C extends ToastContainerComponent<P> = ToastContainerComponent<P>\n> {\n    /** Component for simple text toast. */\n    protected abstract toastTextComponent: Type<ToastTextComponent>;\n    /** Component for Toast Container. */\n    protected abstract toastContainerComponent: Type<C>;\n    /** Injection token for Toast Data. */\n    protected abstract toastDataInjectionToken: InjectionToken<any>;\n    /** Toast Position Strategy. */\n    protected abstract toastPositionStrategy: BaseToastPosition;\n    /** Toast default config. */\n    protected abstract defaultConfig: P;\n\n    /**\n     * Opens a Toast with the provided configuration.\n     * @param toast accepts string, Component or TemplateRef.\n     */\n    abstract open<T>(\n        toast: string | Type<T> | TemplateRef<T>\n    ): BaseToastRef<ToastTextComponent | T | EmbeddedViewRef<T>, P>;\n\n    abstract openFromString(message: string, config: P): BaseToastRef<ToastTextComponent, P>;\n\n    /**\n     * Opens a Toast with provided component inside.\n     * @param component Component to render inside a Toast.\n     * @param config Toast configuration.\n     * @returns Toast reference.\n     */\n    abstract openFromComponent<T>(component: Type<T>, config: P): BaseToastRef<T, P>;\n\n    /**\n     * Opens a Toast with provided Template Reference.\n     * @param template Template Reference to render inside a Toast.\n     * @param config Toast configuration.\n     * @returns Toast reference.\n     */\n    abstract openFromTemplate(template: TemplateRef<any>, config: P): BaseToastRef<EmbeddedViewRef<any>>;\n\n    /**\n     * Gets Toast Container providers.\n     * @param config Toast Config.\n     */\n    protected abstract getContainerComponentProviders(config: P): StaticProvider[];\n\n    /**\n     * Gets Toast Content providers.\n     * @param config Toast Config.\n     * @param toastRef Toast Reference.\n     */\n    protected abstract getContentComponentProviders<T>(config: P, toastRef: BaseToastRef<T>): StaticProvider[];\n\n    /**\n     * Creates Toast Reference for provided container and overlay.\n     * @param containerRef Container reference.\n     * @param overlayRef Overlay Reference.\n     * @param positionStrategy Position Strategy\n     */\n    protected abstract getToastRef<T>(\n        containerRef: C,\n        overlayRef: OverlayRef,\n        positionStrategy: BaseToastPosition\n    ): BaseToastRef<T | EmbeddedViewRef<any>, P>;\n\n    /**\n     * @hidden\n     * Array of all current toasts.\n     */\n    protected _toasts: BaseToastRef[] = [];\n\n    /**\n     * @hidden\n     */\n    protected _toastsMap = new Map<BaseToastPosition, BaseToastRef[]>();\n\n    /** @hidden */\n    protected readonly overlay = inject(Overlay);\n\n    /** @hidden */\n    protected readonly injector = inject(Injector);\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /**\n     * Dismisses all Toasts.\n     */\n    hideAll(): void {\n        this._toasts.forEach((t) => t.dismiss());\n    }\n\n    /**\n     * Returns `true` if there are some message toasts currently open. `False` otherwise.\n     */\n    hasOpenMessageToasts(): boolean {\n        return this._toasts.length > 0;\n    }\n\n    /**\n     * Sets new position strategy for all Toast items.\n     * @param newStrategy New Position Strategy\n     */\n    setNewPositionStrategy(newStrategy: BaseToastPosition): void {\n        if (newStrategy === this.toastPositionStrategy) {\n            return;\n        }\n\n        this.toastPositionStrategy = newStrategy;\n\n        this._refreshOverlayPositions();\n    }\n\n    /**\n     * @hidden\n     * Places a new component or a template as the content of the Toast container.\n     */\n    protected _attach<T>(\n        content: ComponentType<T> | TemplateRef<T>,\n        userConfig?: P\n    ): BaseToastRef<T | EmbeddedViewRef<any>, P> {\n        const config = { ...this.defaultConfig, ...userConfig };\n        const positionStrategy = config.positionStrategy || this.toastPositionStrategy;\n        const { overlay, isAnchor } = this._createOverlay(positionStrategy);\n        const containerRef = this.attachToastContainerComponent(overlay, config);\n        const toastRef = this.getToastRef<T>(containerRef, overlay, positionStrategy);\n        toastRef._defaultPositionStrategy = !config.positionStrategy;\n        toastRef._isAnchor = isAnchor;\n\n        if (content instanceof TemplateRef) {\n            // ViewContainerRef is not needed here as the portal is attached directly to the container's outlet\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            const portal = new TemplatePortal(content, null!, { $implicit: config, toastRef } as any);\n\n            toastRef.instance = containerRef.attachTemplatePortal(portal);\n        } else {\n            const injector = this.createContentComponentInjector(config, toastRef);\n            const portal = new ComponentPortal(content, undefined, injector);\n            const contentRef = containerRef.attachComponentPortal<T>(portal);\n\n            // We can't pass this via the injector, because the injector is created earlier.\n            toastRef.instance = contentRef.instance;\n\n            contentRef.changeDetectorRef.detectChanges();\n        }\n\n        const allToasts = this._toastsMap.get(positionStrategy) || [];\n        allToasts.push(toastRef);\n        this._toasts.push(toastRef);\n        this._toastsMap.set(positionStrategy, allToasts);\n\n        this.animateToast<T>(toastRef);\n\n        return toastRef;\n    }\n\n    /**\n     * Attaches the Toast container component to the overlay.\n     */\n    protected attachToastContainerComponent(overlayRef: OverlayRef, config: P): C {\n        const injector = Injector.create({\n            parent: this.injector,\n            providers: this.getContainerComponentProviders(config)\n        });\n\n        const containerPortal = new ComponentPortal(this.toastContainerComponent, null, injector);\n        const containerRef: ComponentRef<C> = overlayRef.attach(containerPortal);\n\n        containerRef.instance.config = config;\n        containerRef.instance.overlayRef = overlayRef;\n\n        return containerRef.instance;\n    }\n\n    /**\n     * Creates an injector to be used inside a Toast component.\n     * @param config Config that was used to create the Toast.\n     * @param toastRef Reference to the Toast.\n     */\n    protected createContentComponentInjector<T>(config: P, toastRef: BaseToastRef<T>): Injector {\n        return Injector.create({\n            parent: this.injector,\n            providers: this.getContentComponentProviders(config, toastRef)\n        });\n    }\n\n    /**\n     * Animates the old Toast out and the new one in.\n     */\n    protected animateToast<T>(toastRef: BaseToastRef<T | EmbeddedViewRef<any>, P>): void {\n        const positionStrategy = toastRef.positionStrategy;\n        // When the toast is dismissed, clear the reference to it.\n        toastRef\n            .afterDismissed()\n            .pipe(takeUntilDestroyed(this._destroyRef))\n            .subscribe(() => {\n                const allToasts = this._toastsMap.get(positionStrategy) || [];\n                allToasts.splice(allToasts.indexOf(toastRef), 1);\n                this._toasts.splice(this._toasts.indexOf(toastRef), 1);\n                this._toastsMap.set(positionStrategy, allToasts);\n                this._refreshOverlayPositions();\n            });\n\n        toastRef.containerInstance.enter();\n    }\n\n    /**\n     * @hidden\n     * Creates a new overlay and places it in the correct location.\n     */\n    private _createOverlay(positionStrategy: BaseToastPosition): { overlay: OverlayRef; isAnchor: boolean } {\n        const overlayConfig = new OverlayConfig();\n        overlayConfig.scrollStrategy = positionStrategy.scrollPosition || this.overlay.scrollStrategies.reposition();\n\n        const { position, isAnchor } = this._getPositionStrategy(positionStrategy);\n\n        overlayConfig.positionStrategy = position;\n        overlayConfig.panelClass = 'fd-toast-overlay';\n        return { overlay: this.overlay.create(overlayConfig), isAnchor };\n    }\n\n    /**\n     * @hidden\n     * @returns Initial Position Strategy of the Toast Overlay Reference.\n     */\n    private _getPositionStrategy(positionStrategy: BaseToastPosition): {\n        position: PositionStrategy;\n        isAnchor: boolean;\n    } {\n        const lastOverlay = this._getLastToastWithSamePosition(positionStrategy);\n\n        const globalOverlay = this._toastsMap.get(positionStrategy)?.find(({ _isAnchor }) => _isAnchor);\n\n        if (lastOverlay && globalOverlay) {\n            return {\n                position: this._composeFlexibleConnectedPosition(\n                    lastOverlay.overlayRef.overlayElement,\n                    positionStrategy\n                ),\n                isAnchor: false\n            };\n        }\n\n        return { position: this._composeGlobalPosition(positionStrategy), isAnchor: true };\n    }\n\n    /**\n     * @hidden\n     * @param needlePosition\n     * @private\n     */\n    private _getLastToastWithSamePosition(needlePosition: BaseToastPosition): BaseToastRef<P, C> | undefined {\n        return [...(this._toastsMap.get(needlePosition) || [])]?.reverse()[0];\n    }\n\n    /**\n     * @hidden\n     * @param connectedElm element to connect with.\n     * @param positionStrategy Position Strategy\n     * @returns Flexible Connected Position Strategy for Overlay Reference.\n     */\n    private _composeFlexibleConnectedPosition(\n        connectedElm: HTMLElement,\n        positionStrategy: BaseToastPosition\n    ): FlexibleConnectedPositionStrategy {\n        positionStrategy = positionStrategy || this.toastPositionStrategy;\n        return this.overlay\n            .position()\n            .flexibleConnectedTo(connectedElm)\n            .withPush(false)\n            .withPositions([positionStrategy.connected]);\n    }\n\n    /**\n     * @hidden\n     * @returns Default Global Position for Overlay Reference.\n     */\n    private _composeGlobalPosition(\n        positionStrategy: BaseToastPosition\n    ): GlobalPositionStrategy | FlexibleConnectedPositionStrategy {\n        let position: FlexibleConnectedPositionStrategy | GlobalPositionStrategy;\n        if (this._isBoundGlobalPosition(positionStrategy.global)) {\n            position = this.overlay\n                .position()\n                .flexibleConnectedTo(positionStrategy.global.boundTo)\n                .withPositions([positionStrategy.global])\n                .withPush(false);\n        } else {\n            position = this.overlay.position().global();\n            const globalToastPositionStrategy: ToastGlobalPosition = positionStrategy.global;\n\n            for (const [pos, value] of Object.entries(globalToastPositionStrategy)) {\n                switch (pos) {\n                    case 'left':\n                        position.left(value);\n                        break;\n                    case 'right':\n                        position.right(value);\n                        break;\n                    case 'bottom':\n                        position.bottom(value);\n                        break;\n                    case 'top':\n                        position.top(value);\n                        break;\n                    case 'center':\n                        position.centerHorizontally();\n                        break;\n                    case 'centerVertically':\n                        position.centerVertically();\n                        break;\n                }\n            }\n        }\n\n        return position;\n    }\n\n    /** @hidden */\n    private _refreshOverlayPositions(): void {\n        this._toastsMap.forEach((toasts) => {\n            this._updateOverlayPositionStrategy(toasts);\n        });\n    }\n\n    /** @hidden */\n    private _updateOverlayPositionStrategy(toasts: BaseToastRef[]): void {\n        toasts.forEach((toastRef) => {\n            const positionStrategy = this._updatePositionStrategy(toastRef);\n            const overlayConfig = toastRef.overlayRef.getConfig();\n\n            toastRef.overlayRef.updatePositionStrategy(positionStrategy);\n            overlayConfig.positionStrategy = positionStrategy;\n        });\n    }\n\n    /**\n     * @hidden\n     * Updates the position of a current Overlay Reference.\n     * @returns New Position Strategy.\n     * @param toast Toast Reference\n     */\n    private _updatePositionStrategy(toast: BaseToastRef): PositionStrategy {\n        const positionStrategy = toast._defaultPositionStrategy ? this.toastPositionStrategy : toast.positionStrategy;\n\n        if (toast._isAnchor) {\n            return this._composeGlobalPosition(positionStrategy);\n        }\n\n        const toasts = this._toastsMap.get(positionStrategy) || [];\n\n        const globalOverlay = toasts?.find(({ _isAnchor }) => _isAnchor);\n\n        if (!globalOverlay) {\n            toast._isAnchor = true;\n            return this._composeGlobalPosition(positionStrategy);\n        }\n\n        // Get Previous overlay item.\n        const overlayItemIndex = toasts.findIndex((t) => t === toast);\n        const previousOverlay = toasts[overlayItemIndex - 1];\n        toast._isAnchor = false;\n\n        return this._composeFlexibleConnectedPosition(previousOverlay.overlayRef.overlayElement, positionStrategy);\n    }\n\n    /** @hidden */\n    private _isBoundGlobalPosition(position: any): position is ToastGlobalConnectedPosition {\n        return !!position.boundTo;\n    }\n}\n","import { BaseToastPosition, ToastBottomCenterPosition } from '../base-toast-positions';\n\n/**\n * Base Configuration class used when opening a Toast.\n */\nexport class BaseToastConfig<T = any> {\n    /**\n     * Data being injected into the child component.\n     */\n    data?: T;\n\n    /**\n     * Aria-label for the message toast component element.\n     */\n    ariaLabel?: string;\n\n    /**\n     * Toast position strategy.\n     */\n    positionStrategy?: BaseToastPosition = ToastBottomCenterPosition;\n\n    /**\n     * Toast minimum width.\n     */\n    minWidth?: number | string;\n\n    /**\n     * Toast maximum width.\n     */\n    maxWidth?: number | string;\n\n    /**\n     * Toast minimum height.\n     */\n    minHeight?: number | string;\n\n    /**\n     * Toast maximum height.\n     */\n    maxHeight?: number | string;\n\n    /**\n     * Toast width.\n     */\n    width?: number | string;\n\n    /**\n     * Toast height.\n     */\n    height?: number | string;\n\n    /**\n     * Toast ID.\n     */\n    id?: string;\n\n    /** Whether the toast should be animated. */\n    animated? = true;\n}\n","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { ComponentRef, Directive, EmbeddedViewRef, viewChild } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ToastContainerComponent } from '../interfaces/toast-container-component.interface';\nimport { BaseToastConfig } from './base-toast-config';\n\nlet toastUniqueId = 0;\n\n@Directive()\nexport abstract class BaseToastContainerComponent<P extends BaseToastConfig = BaseToastConfig>\n    extends BasePortalOutlet\n    implements ToastContainerComponent<P>\n{\n    /** Method, which is triggered when the Toast component is ready to be shown. Used to trigger animations. */\n    abstract enter(): void;\n\n    /** Method, which is triggered when the Toast component is ready to be removed. Used to trigger animations. */\n    abstract exit(): void;\n\n    /**\n     * @hidden\n     * The portal outlet inside this container into which the Toast content will be loaded.\n     */\n    readonly _portalOutlet = viewChild.required(CdkPortalOutlet);\n\n    /** Min width of the toast component. */\n    readonly minWidth: string;\n\n    /** Max width of the toast component. */\n    readonly maxWidth: string;\n\n    /** Width of the toast component. */\n    readonly width: string;\n\n    /** Min height of the toast component. */\n    readonly minHeight: string;\n\n    /** Max height of the toast component. */\n    readonly maxHeight: string;\n\n    /** Height of the toast component. */\n    readonly height: string;\n\n    /** Subject for notifying that the Toast has finished exiting from view. */\n    readonly onExit$: Subject<void> = new Subject();\n\n    /** Subject for notifying that the Toast has finished entering the view. */\n    readonly onEnter$: Subject<void> = new Subject();\n\n    /** Overlay reference */\n    overlayRef!: OverlayRef;\n\n    /** Aria label. */\n    readonly ariaLabel: string | undefined | null;\n\n    /** ID of the Toast. */\n    readonly id: string | undefined | null;\n\n    /** @hidden */\n    protected constructor(public config: P) {\n        super();\n        this.minWidth = coerceCssPixelValue(config.minWidth);\n        this.maxWidth = coerceCssPixelValue(config.maxWidth);\n        this.width = coerceCssPixelValue(config.width);\n        this.minHeight = coerceCssPixelValue(config.minHeight);\n        this.maxHeight = coerceCssPixelValue(config.maxHeight);\n        this.height = coerceCssPixelValue(config.height);\n        this.ariaLabel = config.ariaLabel;\n        this.id = config.id || 'fd-message-toast-' + toastUniqueId++;\n    }\n\n    /**\n     * Attaches component to the portal.\n     */\n    attachComponentPortal<C>(portal: ComponentPortal<C>): ComponentRef<C> {\n        return this._portalOutlet().attachComponentPortal(portal);\n    }\n\n    /**\n     * Attaches Template to the portal.\n     * @param portal\n     */\n    attachTemplatePortal<T>(portal: TemplatePortal<T>): EmbeddedViewRef<T> {\n        return this._portalOutlet().attachTemplatePortal(portal);\n    }\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\nimport { BaseToastPosition } from '../base-toast-positions';\nimport { ToastContainerComponent } from '../interfaces/toast-container-component.interface';\n\nexport abstract class BaseToastRef<\n    T = any,\n    P = any,\n    C extends ToastContainerComponent<P> = ToastContainerComponent<P>\n> {\n    /** The instance of the component is making up the content of the Toast. */\n    instance!: T;\n\n    /** @hidden */\n    _defaultPositionStrategy = true;\n\n    /** @hidden\n     * Used for flagging the toast as an anchor for all next appearing toasts.\n     */\n    _isAnchor = false;\n\n    /**\n     * @hidden\n     * Subject for notifying the user that the Toast has been dismissed.\n     */\n    protected readonly _afterDismissed$ = new Subject<void>();\n\n    /** @hidden */\n    protected constructor(\n        public containerInstance: C,\n        public overlayRef: OverlayRef,\n        public positionStrategy: BaseToastPosition\n    ) {\n        containerInstance.onExit$.subscribe(() => this._finishDismiss());\n    }\n\n    /** Dismisses the Toast. */\n    dismiss(): void {\n        if (!this._afterDismissed$.closed) {\n            this.containerInstance.exit();\n        }\n    }\n\n    /** Gets an observable that is notified when the Toast is finished closing. */\n    afterDismissed(): Observable<void> {\n        return this._afterDismissed$.asObservable();\n    }\n\n    /** Gets an observable that is notified when the Toast has opened and appeared. */\n    afterOpened(): Observable<void> {\n        return this.containerInstance.onEnter$.asObservable();\n    }\n\n    /**\n     * @hidden\n     * Cleans up the DOM after closing.\n     */\n    protected _finishDismiss(): void {\n        this.overlayRef.dispose();\n\n        this._afterDismissed$.next();\n        this._afterDismissed$.complete();\n    }\n}\n","import { BaseToastConfig } from '../base-toast-config';\n\n/**\n * Base configuration class used when opening a Toast which automatically destroys after some time.\n */\nexport class BaseToastDurationDismissibleConfig<T = any> extends BaseToastConfig<T> {\n    /**\n     * The length of time in milliseconds to wait before automatically dismissing the Message Toast.\n     */\n    duration? = 3000;\n    /**\n     * Whether the message toast should stay visible if the cursor is over it.\n     * Default is `true`\n     */\n    mousePersist?: boolean = true;\n}\n","import { DestroyRef, Directive, ElementRef, OnDestroy, inject } from '@angular/core';\nimport { BaseToastConfig } from './base-toast-config';\nimport { BaseToastContainerComponent } from './base-toast-container.component';\n\n@Directive({\n    host: {\n        style: 'opacity: 0; transform: translateY(1rem)'\n    }\n})\nexport abstract class BaseToastAnimatedContainerComponent<P extends BaseToastConfig>\n    extends BaseToastContainerComponent<P>\n    implements OnDestroy\n{\n    /** @hidden */\n    private readonly _animated: boolean;\n\n    /** @hidden */\n    private readonly _elementRef = inject(ElementRef);\n\n    /** @hidden */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private _currentAnimation: Animation | null = null;\n\n    /** @hidden */\n    constructor(config: P) {\n        super(config);\n        this._animated = config.animated !== false;\n\n        // Register cleanup for animations\n        this._destroyRef.onDestroy(() => {\n            this._currentAnimation?.cancel();\n            this._currentAnimation = null;\n        });\n    }\n\n    /** Begin animation of Message Toast entrance into view. */\n    enter(): void {\n        const el: HTMLElement = this._elementRef.nativeElement;\n\n        // Check if animations are disabled or Web Animations API is not available\n        if (!this._animated || typeof el.animate !== 'function') {\n            el.style.opacity = '1';\n            el.style.transform = 'translateY(0)';\n            // Defer to allow subscribers to register before emitting.\n            queueMicrotask(() => {\n                this.onEnter$.next();\n                this.onEnter$.complete();\n            });\n            return;\n        }\n\n        this._currentAnimation = el.animate(\n            [\n                { opacity: 0, transform: 'translateY(1rem)' },\n                { opacity: 1, transform: 'translateY(0)' }\n            ],\n            { duration: 150, easing: 'cubic-bezier(0, 0, 0.2, 1)', fill: 'forwards' }\n        );\n\n        this._currentAnimation.finished\n            .then(() => {\n                el.style.opacity = '1';\n                el.style.transform = 'translateY(0)';\n                this._currentAnimation?.cancel();\n                this._currentAnimation = null;\n                this.onEnter$.next();\n                this.onEnter$.complete();\n            })\n            .catch(() => {\n                // Animation was cancelled, clean up\n                this._currentAnimation = null;\n            });\n    }\n\n    /** Begin animation of Message Toast removal. */\n    exit(): void {\n        const el: HTMLElement = this._elementRef.nativeElement;\n\n        if (!this._animated || typeof el.animate !== 'function') {\n            this._completeExit();\n            return;\n        }\n\n        this._currentAnimation?.cancel();\n\n        this._currentAnimation = el.animate([{ opacity: 1 }, { opacity: 0 }], {\n            duration: 75,\n            easing: 'cubic-bezier(0.4, 0, 1, 1)',\n            fill: 'forwards'\n        });\n\n        this._currentAnimation.finished\n            .then(() => {\n                this._currentAnimation = null;\n                this._completeExit();\n            })\n            .catch(() => {\n                // Animation was cancelled, clean up\n                this._currentAnimation = null;\n                this._completeExit();\n            });\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._completeExit();\n    }\n\n    /**\n     * @hidden\n     * Defers the exit notification to the next microtask. Helps prevent\n     * errors where we end up removing an element which is in the middle of an animation.\n     */\n    private _completeExit(): void {\n        const onExit = this.onExit$;\n\n        queueMicrotask(() => {\n            onExit.next();\n            onExit.complete();\n        });\n    }\n}\n","import { Directive, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ToastDurationDismissibleContainerComponent } from '../../interfaces/toast-duration-dismissible-container-component.interface';\nimport { BaseToastAnimatedContainerComponent } from '../base-toast-animated-container.component';\nimport { BaseToastConfig } from '../base-toast-config';\n\n@Directive({\n    host: {\n        '(mouseleave)': 'mouseleave$.next()',\n        '(mouseover)': 'mouseover$.next()'\n    }\n})\nexport abstract class BaseToastDurationDismissibleContainerComponent<P extends BaseToastConfig>\n    extends BaseToastAnimatedContainerComponent<P>\n    implements OnDestroy, ToastDurationDismissibleContainerComponent<P>\n{\n    /** Subject for notifying that component is out of hover. */\n    readonly mouseleave$: Subject<void> = new Subject();\n\n    /** Subject for notifying that component is hovered. */\n    readonly mouseover$: Subject<void> = new Subject();\n\n    /** @Hidden */\n    override ngOnDestroy(): void {\n        this.mouseover$.complete();\n        this.mouseleave$.complete();\n\n        super.ngOnDestroy();\n    }\n}\n","import { BaseToastConfig } from '../base-toast-config';\nimport { BaseToastRef } from '../base-toast-ref';\nimport { BaseToastDurationDismissibleContainerComponent } from './base-toast-duration-dismissible-container.component';\n\n/** Maximum number of milliseconds that can be passed into setTimeout. */\nconst MAX_TIMEOUT = Math.pow(2, 31) - 1;\n\n/**\n * Base toast reference for toasts that can be dismissed after a duration and support mouse hover persistence.\n * Extends BaseToastRef with timer management capabilities for auto-dismissing toasts.\n */\nexport abstract class BaseToastDurationDismissibleRef<\n    T = any,\n    P extends BaseToastConfig<T> = any,\n    C extends BaseToastDurationDismissibleContainerComponent<P> = BaseToastDurationDismissibleContainerComponent<P>\n> extends BaseToastRef<T, P, C> {\n    /**\n     * Timeout ID for the duration setTimeout call. Used to clear the timeout if the toast is\n     * dismissed before the duration passes.\n     */\n    protected durationTimeoutId!: ReturnType<typeof setTimeout>;\n\n    /** Dismisses the toast and clears the timeout. */\n    override dismiss(): void {\n        clearTimeout(this.durationTimeoutId);\n\n        super.dismiss();\n    }\n\n    /** Dismisses the Toast component after some duration */\n    dismissAfter(duration: number): void {\n        this.durationTimeoutId = setTimeout(() => this.dismiss(), Math.min(duration, MAX_TIMEOUT));\n    }\n\n    /** Cancels current dismiss timeout */\n    cancelDismiss(): void {\n        clearTimeout(this.durationTimeoutId);\n    }\n}\n","import { EmbeddedViewRef } from '@angular/core';\nimport { BaseToastService } from '../../base-toast.service';\nimport { BaseToastDurationDismissibleConfig } from './base-toast-duration-dismissible-config';\nimport { BaseToastDurationDismissibleContainerComponent } from './base-toast-duration-dismissible-container.component';\nimport { BaseToastDurationDismissibleRef } from './base-toast-duration-dismissible-ref';\n\nexport abstract class BaseDismissibleToastService<\n    P extends BaseToastDurationDismissibleConfig,\n    C extends BaseToastDurationDismissibleContainerComponent<P> = BaseToastDurationDismissibleContainerComponent<P>\n> extends BaseToastService<P, C> {\n    /**\n     * Animates the old Toast out and the new one in.\n     */\n    protected override animateToast<T>(toastRef: BaseToastDurationDismissibleRef<T | EmbeddedViewRef<any>, P>): void {\n        super.animateToast<T>(toastRef);\n\n        const config = toastRef.containerInstance.config;\n\n        // If dismiss timeout is provided, set up dismiss based on after the Notification is opened.\n        if (config.duration && config.duration > 0) {\n            toastRef.afterOpened().subscribe(() => {\n                toastRef.dismissAfter(config.duration as number);\n\n                if (config.mousePersist) {\n                    toastRef.containerInstance.mouseover$.subscribe(() => {\n                        toastRef.cancelDismiss();\n                    });\n\n                    toastRef.containerInstance.mouseleave$.subscribe(() => {\n                        toastRef.dismissAfter(config.duration as number);\n                    });\n                }\n            });\n        }\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["merge","map","i1.FdkClickedProvider","i1.FocusKeyManagerListDirective","startWith","switchMap","i1.TabbableElementService","i1.FdkDisabledProvider","i2.FdkReadonlyProvider","i3.SelectionService","i4.FdkClickedProvider","i1.SelectionService","i1","i1.DndKeyboardGroupDirective","tap","filter"],"mappings":"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"}