@fundamental-ngx/cdk 0.45.1 → 0.46.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/utils/components/dynamic-portal/dynamic-portal.component.mjs +67 -16
- package/esm2022/utils/directives/focusable-item/focusable-item.directive.mjs +3 -3
- package/fesm2022/fundamental-ngx-cdk-utils.mjs +67 -18
- package/fesm2022/fundamental-ngx-cdk-utils.mjs.map +1 -1
- package/fundamental-ngx-cdk-v0.46.0-rc.1.tgz +0 -0
- package/package.json +4 -4
- package/utils/components/dynamic-portal/dynamic-portal.component.d.ts +22 -10
- package/utils/directives/focusable-item/focusable-item.directive.d.ts +2 -2
- package/fundamental-ngx-cdk-v0.45.1.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-cdk-utils.mjs","sources":["../../../../libs/cdk/src/lib/utils/services/rtl.service.ts","../../../../libs/cdk/src/lib/utils/functions/key-util.ts","../../../../libs/cdk/src/lib/utils/directives/auto-complete/auto-complete.directive.ts","../../../../libs/cdk/src/lib/utils/directives/auto-complete/auto-complete.module.ts","../../../../libs/cdk/src/lib/utils/directives/focus-key-manager/focus-key-manager.tokens.ts","../../../../libs/cdk/src/lib/utils/directives/focus-key-manager/focus-key-manager-list.directive.ts","../../../../libs/cdk/src/lib/utils/directives/focus-key-manager/focus-key-manager-item.directive.ts","../../../../libs/cdk/src/lib/utils/directives/focus-key-manager/focus-key-manager-helpers.module.ts","../../../../libs/cdk/src/lib/utils/directives/ignore-click-on-selection/tokens.ts","../../../../libs/cdk/src/lib/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.ts","../../../../libs/cdk/src/lib/utils/directives/ignore-click-on-selection/ignore-click-on-selection.module.ts","../../../../libs/cdk/src/lib/utils/services/tabbable-element.service.ts","../../../../libs/cdk/src/lib/utils/directives/initial-focus/initial-focus.directive.ts","../../../../libs/cdk/src/lib/utils/directives/initial-focus/initial-focus.module.ts","../../../../libs/cdk/src/lib/utils/tokens/viewport-size.observable.ts","../../../../libs/cdk/src/lib/utils/directives/line-clamp/line-clamp.directive.ts","../../../../libs/cdk/src/lib/utils/directives/line-clamp/line-clamp.module.ts","../../../../libs/cdk/src/lib/utils/functions/element-size.ts","../../../../libs/cdk/src/lib/utils/functions/uuidv4-generator.ts","../../../../libs/cdk/src/lib/utils/functions/parser-file-size.ts","../../../../libs/cdk/src/lib/utils/functions/scroll.ts","../../../../libs/cdk/src/lib/utils/functions/random-color-accent.ts","../../../../libs/cdk/src/lib/utils/functions/resize-observable.ts","../../../../libs/cdk/src/lib/utils/functions/intersection-observable.ts","../../../../libs/cdk/src/lib/utils/functions/is-compact-density.ts","../../../../libs/cdk/src/lib/utils/tokens/module-deprecations.token.ts","../../../../libs/cdk/src/lib/utils/functions/module-deprecations-provider.ts","../../../../libs/cdk/src/lib/utils/functions/consumer-provider-factory.ts","../../../../libs/cdk/src/lib/utils/functions/get-document-font-size.ts","../../../../libs/cdk/src/lib/utils/functions/is-odd.ts","../../../../libs/cdk/src/lib/utils/directives/only-digits/only-digits.directive.ts","../../../../libs/cdk/src/lib/utils/directives/only-digits/only-digits.module.ts","../../../../libs/cdk/src/lib/utils/directives/overflow-list/overflow-list-item.directive.ts","../../../../libs/cdk/src/lib/utils/directives/overflow-list/overflow-list.directive.ts","../../../../libs/cdk/src/lib/utils/directives/overflow-list/overflow-list.module.ts","../../../../libs/cdk/src/lib/utils/directives/repeat/repeat.directive.ts","../../../../libs/cdk/src/lib/utils/directives/repeat/repeat.module.ts","../../../../libs/cdk/src/lib/utils/directives/resize/resize-handle.directive.ts","../../../../libs/cdk/src/lib/utils/directives/resize/resize.directive.ts","../../../../libs/cdk/src/lib/utils/directives/resize/resize.module.ts","../../../../libs/cdk/src/lib/utils/directives/template/template.directive.ts","../../../../libs/cdk/src/lib/utils/directives/template/template.module.ts","../../../../libs/cdk/src/lib/utils/directives/truncate/truncate.directive.ts","../../../../libs/cdk/src/lib/utils/directives/truncate/truncate.module.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-item/focusable-item.tokens.ts","../../../../libs/cdk/src/lib/utils/typecheck.ts","../../../../libs/cdk/src/lib/utils/helpers/range-selector.ts","../../../../libs/cdk/src/lib/utils/helpers/get-native-element.ts","../../../../libs/cdk/src/lib/utils/helpers/destroy-observable.ts","../../../../libs/cdk/src/lib/utils/helpers/warn-once.ts","../../../../libs/cdk/src/lib/utils/services/content-density.service.ts","../../../../libs/cdk/src/lib/utils/services/destroyed.service.ts","../../../../libs/cdk/src/lib/utils/services/focus-trap.service.ts","../../../../libs/cdk/src/lib/utils/services/keyboard-support/keyboard-support.service.ts","../../../../libs/cdk/src/lib/utils/services/local-storage.service.ts","../../../../libs/cdk/src/lib/utils/services/resize-observer.service.ts","../../../../libs/cdk/src/lib/utils/services/observers/attribute.observer.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-item/is-element-focusable-by-default.ts","../../../../libs/cdk/src/lib/utils/directives/disabled/disabled.observer.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-item/focusable.observer.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-item/focusable-item.directive.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-item/focusable-item.module.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-item/is-item-focusable.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-list/focusable-list.tokens.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-list/scroll.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-item/get-item-element.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-list/focusable-list.directive.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-list/focusable-list.module.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-grid/focusable-grid.tokens.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-grid/focusable-grid.directive.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-grid/focusable-grid.module.ts","../../../../libs/cdk/src/lib/utils/directives/readonly/fdk-readonly.token.ts","../../../../libs/cdk/src/lib/utils/directives/readonly/set-readonly-state.ts","../../../../libs/cdk/src/lib/utils/directives/readonly/readonly-behavior.directive.ts","../../../../libs/cdk/src/lib/utils/directives/readonly/readonly-behavior.module.ts","../../../../libs/cdk/src/lib/utils/directives/readonly/readonly.observer.ts","../../../../libs/cdk/src/lib/utils/directives/readonly/default-readonly-view-modifier.ts","../../../../libs/cdk/src/lib/utils/directives/readonly/fdk-readonly-provider.service.ts","../../../../libs/cdk/src/lib/utils/directives/disabled/set-disabled-state.ts","../../../../libs/cdk/src/lib/utils/directives/disabled/fdk-disabled.token.ts","../../../../libs/cdk/src/lib/utils/directives/clicked/clicked.directive.ts","../../../../libs/cdk/src/lib/utils/directives/clicked/clicked-event.plugin.ts","../../../../libs/cdk/src/lib/utils/directives/clicked/clicked-behavior.module.ts","../../../../libs/cdk/src/lib/utils/directives/clicked/fdk-clicked-provider.service.ts","../../../../libs/cdk/src/lib/utils/directives/disabled/disabled-behavior.directive.ts","../../../../libs/cdk/src/lib/utils/directives/disabled/disabled-behavior.module.ts","../../../../libs/cdk/src/lib/utils/directives/disabled/default-disabled-view-modifier.ts","../../../../libs/cdk/src/lib/utils/directives/disabled/fdk-disabled-provider.service.ts","../../../../libs/cdk/src/lib/utils/directives/selectable-list/selection.service.ts","../../../../libs/cdk/src/lib/utils/directives/selectable-list/select-component-root.token.ts","../../../../libs/cdk/src/lib/utils/directives/selectable-list/selectable-item.token.ts","../../../../libs/cdk/src/lib/utils/decorators/setter-alternator.ts","../../../../libs/cdk/src/lib/utils/decorators/coerce-boolean.ts","../../../../libs/cdk/src/lib/utils/directives/selectable-list/selectable-list.directive.ts","../../../../libs/cdk/src/lib/utils/directives/selectable-list/selectable-list.tokens.ts","../../../../libs/cdk/src/lib/utils/directives/selectable-list/selectable-item.directive.ts","../../../../libs/cdk/src/lib/utils/directives/selectable-list/selectable-list.module.ts","../../../../libs/cdk/src/lib/utils/directives/breakpoints/responsive-breakpoints.ts","../../../../libs/cdk/src/lib/utils/directives/breakpoints/breakpoint.directive.ts","../../../../libs/cdk/src/lib/utils/directives/intersection-spy/intersection-spy.directive.ts","../../../../libs/cdk/src/lib/utils/async-strategy/function-strategy.class.ts","../../../../libs/cdk/src/lib/utils/async-strategy/observable-strategy.class.ts","../../../../libs/cdk/src/lib/utils/async-strategy/promise-strategy.class.ts","../../../../libs/cdk/src/lib/utils/async-strategy/value-strategy.class.ts","../../../../libs/cdk/src/lib/utils/async-strategy/select-strategy.class.ts","../../../../libs/cdk/src/lib/utils/drag-and-drop/tokens.ts","../../../../libs/cdk/src/lib/utils/drag-and-drop/dnd-list/dnd-list.directive.ts","../../../../libs/cdk/src/lib/utils/drag-and-drop/dnd-item/dnd-item.directive.ts","../../../../libs/cdk/src/lib/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.ts","../../../../libs/cdk/src/lib/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.ts","../../../../libs/cdk/src/lib/utils/drag-and-drop/drag-and-drop.module.ts","../../../../libs/cdk/src/lib/utils/utils.module.ts","../../../../libs/cdk/src/lib/utils/coercion/array.ts","../../../../libs/cdk/src/lib/utils/consts/error-messages.ts","../../../../libs/cdk/src/lib/utils/consts/unicode-letters.regex.ts","../../../../libs/cdk/src/lib/utils/consts/unicode-numbers.regex.ts","../../../../libs/cdk/src/lib/utils/consts/overflow-priority-score.ts","../../../../libs/cdk/src/lib/utils/interfaces/has-element-ref.interface.ts","../../../../libs/cdk/src/lib/utils/decorators/apply-css-class.decorator.ts","../../../../libs/cdk/src/lib/utils/decorators/apply-css-style.decorator.ts","../../../../libs/cdk/src/lib/utils/decorators/coerce-css-pixel.ts","../../../../libs/cdk/src/lib/utils/components/dynamic-portal/dynamic-portal.component.ts","../../../../libs/cdk/src/lib/utils/dynamic-component/dynamic-component-container.ts","../../../../libs/cdk/src/lib/utils/dynamic-component/dynamic-component-injector.ts","../../../../libs/cdk/src/lib/utils/dynamic-component/dynamic-component.service.ts","../../../../libs/cdk/src/lib/utils/list-item/list-item-utils.ts","../../../../libs/cdk/src/lib/utils/abstract-fd-ngx-class.ts","../../../../libs/cdk/src/lib/utils/pipes/displayFn.pipe.ts","../../../../libs/cdk/src/lib/utils/pipes/filter-strings.pipe.ts","../../../../libs/cdk/src/lib/utils/pipes/is-compact.pipe.ts","../../../../libs/cdk/src/lib/utils/pipes/async-or-sync.pipe.ts","../../../../libs/cdk/src/lib/utils/pipes/search-highlight.pipe.ts","../../../../libs/cdk/src/lib/utils/pipes/two-digits.pipe.ts","../../../../libs/cdk/src/lib/utils/pipes/safe.pipe.ts","../../../../libs/cdk/src/lib/utils/pipes/value-by-path.pipe.ts","../../../../libs/cdk/src/lib/utils/pipes/truncate.pipe.ts","../../../../libs/cdk/src/lib/utils/pipes/make-async.pipe.ts","../../../../libs/cdk/src/lib/utils/pipes/pipe.module.ts","../../../../libs/cdk/src/lib/utils/toast/base-toast.service.ts","../../../../libs/cdk/src/lib/utils/toast/base-toast-positions.ts","../../../../libs/cdk/src/lib/utils/toast/base-toast-animations.ts","../../../../libs/cdk/src/lib/utils/toast/classes/base-toast-ref.ts","../../../../libs/cdk/src/lib/utils/toast/classes/base-toast-config.ts","../../../../libs/cdk/src/lib/utils/toast/classes/base-toast-overlay-container.ts","../../../../libs/cdk/src/lib/utils/toast/classes/base-toast-container.component.ts","../../../../libs/cdk/src/lib/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-ref.ts","../../../../libs/cdk/src/lib/utils/toast/classes/action-dismissible/base-toast-action-dismissible-ref.ts","../../../../libs/cdk/src/lib/utils/toast/classes/base-toast-animated-container.component.ts","../../../../libs/cdk/src/lib/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-container.component.ts","../../../../libs/cdk/src/lib/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible.service.ts","../../../../libs/cdk/src/lib/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-config.ts","../../../../libs/cdk/src/lib/utils/deprecated-selector.class.ts","../../../../libs/cdk/src/lib/utils/fundamental-ngx-cdk-utils.ts"],"sourcesContent":["import { BehaviorSubject } from 'rxjs';\nimport { Optional, Injectable, Inject, InjectionToken } from '@angular/core';\n\nconst DefaultRtlLanguages = ['ar', 'arc', 'dv', 'fa', 'ha', 'he', 'khw', 'ks', 'ku', 'ps', 'ur', 'yi'];\nexport const RTL_LANGUAGE = new InjectionToken<string[]>('RtlLanguage');\n\n@Injectable()\n/**\n * Service taking care of RTL trough behavior subject\n * language list is used to determine if rtl should be enabled at start\n * user can overwrite default languages by using injection token RtlLanguageToken\n */\nexport class RtlService {\n /** RTL value */\n rtl: BehaviorSubject<boolean>;\n\n /** @hidden */\n constructor(@Optional() @Inject(RTL_LANGUAGE) injectedRtlLanguages: string[]) {\n injectedRtlLanguages = injectedRtlLanguages || DefaultRtlLanguages;\n\n const filtered = injectedRtlLanguages.filter((language) => navigator.language.includes(language));\n\n this.rtl = new BehaviorSubject(filtered.length > 0);\n }\n}\n","import { isDevMode } from '@angular/core';\nimport {\n A,\n ALT,\n BACKSPACE,\n C,\n CONTROL,\n DASH,\n DELETE,\n DOWN_ARROW,\n END,\n ENTER,\n MAC_ENTER,\n ESCAPE,\n F2,\n HOME,\n LEFT_ARROW,\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';\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]);\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'): 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 }\n }\n\n if (isDevMode()) {\n throw new Error(`Invalid function arguments.`);\n }\n\n return false;\n }\n}\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { BACKSPACE, CONTROL, DELETE, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { KeyUtil } from '../../functions/key-util';\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 constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n handleKeyboardEvent(event: KeyboardEvent): void {\n if (this.enable) {\n if (KeyUtil.isKeyCode(event, this._stopKeys)) {\n this._elementRef.nativeElement.value = this.inputText;\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) && this.inputText) {\n /** Prevention from triggering typeahead, when having crtl/cmd + keys */\n if (!this._triggerTypeAhead()) {\n return;\n }\n\n this.oldValue = this.inputText;\n\n const item = this.options.find((option) =>\n this.displayFn(option).toLocaleLowerCase().startsWith(this.inputText.toLocaleLowerCase())\n );\n\n if (item) {\n this._typeahead(this.displayFn(item));\n }\n }\n }\n this.lastKeyUpEvent = event;\n }\n\n /** @hidden */\n private _typeahead(displayedValue: string): void {\n this._elementRef.nativeElement.value = displayedValue;\n const selectionStartIndex = this.inputText.length;\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 if (\n this.lastKeyUpEvent &&\n KeyUtil.isKeyCode(this.lastKeyUpEvent, CONTROL) &&\n this.inputText === this.oldValue\n ) {\n return false;\n } else {\n return true;\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@NgModule({\n imports: [AutoCompleteDirective],\n exports: [AutoCompleteDirective],\n declarations: []\n})\nexport class AutoCompleteModule {}\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 ContentChildren,\n Directive,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n QueryList,\n SimpleChanges\n} from '@angular/core';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\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 standalone: true\n})\nexport class FocusKeyManagerListDirective implements OnChanges, AfterContentInit, OnDestroy {\n /** Orientation for the FocusKeyManager */\n @Input()\n orientation: 'horizontal' | 'vertical';\n\n /** Skip predicate for the FocusKeyManager */\n @Input()\n skipPredicate: (item: Record<any, any> & FocusableOption) => boolean;\n\n /** @hidden */\n @ContentChildren(FOCUSABLE_ITEM)\n readonly _items: QueryList<FocusableOption>;\n\n /** @hidden */\n get focusKeyManager(): FocusKeyManager<FocusableOption> {\n return this._focusKeyManager;\n }\n\n /** @hidden */\n private _focusKeyManager: FocusKeyManager<FocusableOption>;\n\n /** @hidden */\n private readonly _onDestroy$ = new Subject<void>();\n\n /** @hidden */\n constructor(@Optional() private readonly _rtlService: RtlService, private readonly _cdr: ChangeDetectorRef) {}\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<FocusableOption>(this._items).skipPredicate(this.skipPredicate);\n\n this._applyOrientation();\n\n this._cdr.detectChanges();\n\n this._rtlService?.rtl\n .pipe(\n filter(() => this.orientation === 'horizontal'),\n takeUntil(this._onDestroy$)\n )\n .subscribe(() => this._applyOrientation());\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n this._focusKeyManager.destroy();\n }\n\n /** Focus certain list's item */\n focusItem(item: number | FocusableOption): 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._rtlService?.rtl.value ? '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 { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { 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()\n set initialFocus(value: BooleanInput) {\n this._initialFocus = coerceBooleanProperty(value);\n }\n\n /** @hidden */\n @Input()\n @HostBinding('attr.tabindex')\n get _tabindex(): number {\n if (this._initialFocus) {\n return 0;\n }\n\n return this.nativeElement?.tabIndex ?? -1;\n }\n\n /** @hidden */\n private _initialFocus = false;\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(private readonly _list: FocusKeyManagerListDirective, private readonly _elRef: ElementRef) {}\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@NgModule({\n imports: [FocusKeyManagerItemDirective, FocusKeyManagerListDirective],\n exports: [FocusKeyManagerItemDirective, FocusKeyManagerListDirective]\n})\nexport class FocusKeyManagerHelpersModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const IgnoreClickOnSelectionDirectiveToken = new InjectionToken('Ignore click on selection directive');\n","import { Directive, ElementRef, HostListener, Inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\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(@Inject(DOCUMENT) private document: Document, private _elementRef: ElementRef<HTMLElement>) {}\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@NgModule({\n imports: [IgnoreClickOnSelectionDirective],\n exports: [IgnoreClickOnSelectionDirective]\n})\nexport class IgnoreClickOnSelectionModule {}\n","import { InteractivityChecker } from '@angular/cdk/a11y';\nimport { DOCUMENT } from '@angular/common';\nimport { 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 { AfterViewInit, DestroyRef, Directive, ElementRef, inject, Input, NgZone } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { distinctUntilChanged, filter, take } from 'rxjs/operators';\nimport { TabbableElementService } from '../../services/tabbable-element.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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 _enabled$ = new BehaviorSubject<boolean>(true);\n\n /** @hidden */\n constructor(\n private _elmRef: ElementRef<HTMLElement>,\n private _ngZone: NgZone,\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 this._executeOnEmpty(() => this._focus());\n });\n }\n\n /**\n * @hidden\n * Executes a function when the zone is stable.\n */\n private _executeOnEmpty(fn: () => any): void {\n if (!this._ngZone.hasPendingMicrotasks) {\n fn();\n } else {\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(fn);\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@NgModule({\n imports: [InitialFocusDirective],\n exports: [InitialFocusDirective]\n})\nexport class InitialFocusModule {}\n","import { inject, InjectionToken } from '@angular/core';\nimport { map, Observable } from 'rxjs';\nimport { ViewportRuler } from '@angular/cdk/overlay';\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","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n Output,\n Renderer2\n} from '@angular/core';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { Nullable } from '../../models/nullable';\nimport { ViewportSizeObservable } from '../../tokens/viewport-size.observable';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n selector: '[fdkLineClampTarget], [fdLineClampTarget], [fd-lineclamp-target]',\n exportAs: 'fdLineClampTarget',\n standalone: true\n})\nexport class LineClampTargetDirective implements OnChanges, AfterViewInit {\n /**\n * Target text for clamping\n */\n @Input()\n fdLineClampTargetText: string;\n\n /**\n * Event with target instance for clamping\n */\n @Output() update = new EventEmitter<LineClampTargetDirective>();\n\n /** @hidden */\n constructor(private readonly _elementRef: ElementRef) {}\n\n /**\n * Native element of clamping target\n */\n get targetElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.update.emit(this);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.update.emit(this);\n }\n}\n\n@Directive({\n selector: '[fdkLineClamp]',\n exportAs: 'fdLineClamp',\n standalone: true\n})\nexport class LineClampDirective implements OnChanges, AfterViewInit {\n /**\n * Count lines for clamping\n */\n @Input()\n set fdLineClampLines(value: Nullable<number>) {\n this._lineCount = coerceNumberProperty(value);\n }\n\n /**\n * Clamping state\n */\n @Input()\n fdLineclampState = false;\n\n /**\n * Event return count of lines from the target\n */\n @Output()\n lineCountUpdate = new EventEmitter<number>();\n\n /** @hidden */\n private _lineClampTarget: HTMLElement;\n /** @hidden */\n private _originalText: string;\n\n /** @hidden */\n private _isNativeSupport = true;\n\n /** @hidden */\n private _lineCount: number;\n\n /** @hidden */\n private viewportSize$ = inject(ViewportSizeObservable);\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\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 private readonly _elementRef: ElementRef,\n private readonly _renderer: Renderer2,\n private readonly _cdRef: ChangeDetectorRef\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._isNativeSupport = typeof this.rootElement.style.webkitLineClamp !== 'undefined';\n\n // need to use setTimeout to force recheck of parent elements\n setTimeout(() => {\n this._checkLineCount();\n });\n\n this.viewportSize$\n .pipe(distinctUntilChanged(), debounceTime(200), takeUntilDestroyed(this._destroyRef))\n .subscribe({\n next: () => this._checkLineCount()\n });\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.reset();\n this.refreshClamp();\n }\n\n /** @hidden */\n reset(): void {\n if (this._lineClampTarget && this._originalText) {\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 refreshClamp(): void {\n if (this.fdLineclampState && this._lineCount) {\n this.native();\n if (!this._isNativeSupport) {\n this._truncate();\n }\n }\n }\n\n /** @hidden\n * Truncate text in the target box, if browser not support lineclamp style\n */\n private _truncate(): void {\n if (!this._lineClampTarget) {\n return;\n }\n const lineClampHeight = Math.ceil(this.getLineHeight() * this._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 native(): 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', `${this._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 let height = parseInt(style.getPropertyValue('height'), 10);\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 padding_top = parseInt(style.getPropertyValue('padding-top'), 10);\n const padding_bottom = parseInt(style.getPropertyValue('padding-bottom'), 10);\n const border_top = parseInt(style.getPropertyValue('border-top-width'), 10);\n const border_bottom = parseInt(style.getPropertyValue('border-bottom-width'), 10);\n height = height - padding_top - padding_bottom - border_top - border_bottom;\n }\n this.refreshClamp();\n this.lineCountUpdate.emit(Math.ceil(height / lineHeight));\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { LineClampTargetDirective, LineClampDirective } from './line-clamp.directive';\n\n@NgModule({\n imports: [LineClampTargetDirective, LineClampDirective],\n exports: [LineClampTargetDirective, LineClampDirective]\n})\nexport class LineClampModule {}\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","/** 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","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","/**\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","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","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","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","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","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","/** 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","/**\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 BACKSPACE,\n C,\n DASH,\n DELETE,\n END,\n ENTER,\n ESCAPE,\n HOME,\n LEFT_ARROW,\n NUMPAD_MINUS,\n RIGHT_ARROW,\n TAB,\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\n KeyUtil.isKeyCode(e, [DELETE, BACKSPACE, TAB, ESCAPE, ENTER, END, HOME, LEFT_ARROW, RIGHT_ARROW]) ||\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@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 Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n Output,\n QueryList\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { OverflowListItemDirective } from './overflow-list-item.directive';\nimport { ViewportRuler } from '@angular/cdk/overlay';\n\n@Directive({\n selector: '[fdkOverflowList]',\n standalone: true\n})\nexport class OverflowListDirective implements AfterViewInit, OnDestroy {\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 _onDestroy$ = new Subject<void>();\n\n /** @hidden */\n constructor(private _el: ElementRef, private _viewportRuler: ViewportRuler, private _ngZone: NgZone) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._viewportRuler\n .change(50)\n .pipe(takeUntil(this._onDestroy$))\n // ViewportRuler invoked out of zone, that is why I need to invoke function in zone\n .subscribe(() => this._ngZone.run(() => this._calculateAmountOfOverflowedItems()));\n\n this._calculateAmountOfOverflowedItems();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\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 =\n this._el.nativeElement.clientWidth -\n parseFloat(computed.paddingLeft || '0') -\n parseFloat(computed.paddingRight || '0');\n return this._checkWidthWithOffset(elements, contentWidth);\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 : 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 { OverflowListDirective } from './overflow-list.directive';\nimport { OverflowListItemDirective } from './overflow-list-item.directive';\n\n@NgModule({\n imports: [OverflowListDirective, OverflowListItemDirective],\n exports: [OverflowListDirective, OverflowListItemDirective]\n})\nexport class OverflowListModule {}\n","import { Directive, Input, OnChanges, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core';\n\n/**\n * Directive to repeatably render template N times.\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@NgModule({\n imports: [RepeatDirective],\n exports: [RepeatDirective]\n})\nexport class RepeatModule {}\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 AfterContentInit,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport { ResizeHandleDirective } from './resize-handle.directive';\nimport { fromEvent, merge, Observable, Subscription } from 'rxjs';\nimport { filter, map, mapTo, pairwise, takeUntil, tap } from 'rxjs/operators';\nimport { RtlService } from '../../services/rtl.service';\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, AfterContentInit, 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 // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('fdkResizeDisabled') disabled = false;\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 }) resizeHandleReference;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _isRtl = false;\n\n /** @hidden */\n constructor(private _elementRef: ElementRef<HTMLElement>, @Optional() private _rtlService: RtlService) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['disabled']) {\n if (changes['disabled'].previousValue === false && changes['disabled'].currentValue === true) {\n this._subscriptions.unsubscribe();\n } else if (changes['disabled'].previousValue === true && changes['disabled'].currentValue === false) {\n this._setResizeListeners();\n }\n }\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n if (this._rtlService) {\n this._subscriptions.add(this._rtlService.rtl.subscribe((isRtl) => (this._isRtl = isRtl)));\n }\n\n if (!this.disabled) {\n this._setResizeListeners();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n private get _direction(): number {\n return this._isRtl ? -1 : 1;\n }\n\n /** @hidden Sets Resize listeners */\n private _setResizeListeners(): void {\n const resize = this._getResizeFunction();\n const moveOffset = this._getMoveOffsetFunction();\n const resizeContainer = this._findResizeContainer();\n if (!resizeContainer) {\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(mouseDownEvent$.pipe(mapTo(true)), mouseUpEvent$.pipe(mapTo(false)));\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._subscriptions.add(setupResize$.subscribe());\n this._subscriptions.add(emitResizableEvents$.subscribe());\n this._subscriptions.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 x = (event2.screenX - event1.screenX) * this._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 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.querySelector('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 map((isActive) => (isActive ? 'none' : 'auto')),\n tap((value) => (this._elementRef.nativeElement.style.pointerEvents = value))\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ResizeDirective } from './resize.directive';\nimport { ResizeHandleDirective } from './resize-handle.directive';\n\n@NgModule({\n imports: [ResizeDirective, ResizeHandleDirective],\n exports: [ResizeDirective, ResizeHandleDirective]\n})\nexport class ResizeModule {}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[fdkTemplate]',\n standalone: true\n})\nexport class TemplateDirective {\n /** Name of the template */\n @Input('fdkTemplate')\n name: string;\n\n /** @hidden */\n constructor(public templateRef: TemplateRef<any>) {}\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@NgModule({\n imports: [TemplateDirective],\n exports: [TemplateDirective]\n})\nexport class TemplateModule {}\n","import { AfterViewInit, Directive, ElementRef, Input, OnChanges } from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Nullable } from '../../models/nullable';\n\n@Directive({\n selector: '[fdkTruncate]',\n standalone: true\n})\nexport class TruncateDirective implements OnChanges, AfterViewInit {\n /**\n * Width in pixel for truncation of an element , by default\n */\n @Input()\n set fdkTruncateWidth(value: Nullable<number>) {\n this._customWidthCount = coerceNumberProperty(value);\n }\n\n /**\n * Truncating state\n */\n @Input()\n fdkTruncateState = false;\n\n /** @hidden */\n private _customWidthCount = 200;\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 takeDefaultStyleOnce = true;\n\n /** @hidden\n * truncation style for truncating element\n */\n private _truncationStyle: string;\n\n /** @hidden */\n constructor(private readonly _elementRef: ElementRef) {}\n\n /**\n * Root native element\n */\n get rootElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /**\n * Method saves default style of target element before first truncate.\n */\n setDefaultStyle(): void {\n if (this.takeDefaultStyleOnce) {\n this._defaultStyle = this._truncateTarget.style.cssText;\n this.takeDefaultStyleOnce = false;\n }\n }\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.rootElement) {\n this._truncate();\n }\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this._truncate();\n }\n\n /** @hidden */\n private _truncate(): void {\n this._truncateTarget = this.rootElement;\n\n if (!this._truncateTarget) {\n return;\n }\n this.setDefaultStyle();\n this._truncationStyle = `${this._defaultStyle} max-width: ${this._customWidthCount}px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;`;\n this._truncateTarget.style.cssText = this.fdkTruncateState ? this._truncationStyle : this._defaultStyle;\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { TruncateDirective } from './truncate.directive';\n\n@NgModule({\n imports: [TruncateDirective],\n exports: [TruncateDirective]\n})\nexport class TruncateModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_FOCUSABLE_ITEM_DIRECTIVE = new InjectionToken('Focusable directive token');\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/ban-types\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/ban-types\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","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 { 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","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 { ContentDensity } from '../interfaces/content-density';\nimport { warnOnce } from '../helpers';\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, OnDestroy } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { warnOnce } from '../helpers';\n\n/**\n * @deprecated Use Angular's built-in `DestroyRef` and `takeUntilDestroyed` instead.\n * Will be removed in next release\n */\n@Injectable()\nexport class DestroyedService extends ReplaySubject<void> implements OnDestroy {\n /** @hidden */\n constructor() {\n super(1);\n warnOnce(\n `DestroyedService is deprecated. Use Angular's built-in 'DestroyRef' and 'takeUntilDestroyed' instead.`\n );\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.next();\n this.complete();\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 { Injectable, QueryList } from '@angular/core';\nimport { KeyboardSupportItemInterface } from '../../interfaces/keyboard-support-item.interface';\nimport { merge, Subject } from 'rxjs';\nimport { filter, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { KeyUtil } from '../../functions';\nimport { DOWN_ARROW, hasModifierKey, TAB, UP_ARROW } from '@angular/cdk/keycodes';\n\nexport type FocusEscapeDirection = 'up' | 'down';\n\n@Injectable({ providedIn: 'root' })\nexport class KeyboardSupportService<T> {\n /** Subject that is thrown, when focus escapes the list */\n focusEscapeList = new Subject<FocusEscapeDirection>();\n\n /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\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 private _itemList: QueryList<KeyboardSupportItemInterface & T>;\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._itemList = queryList;\n this._tabKeyNavigation = tabKeyNavigation;\n this._keyManager = new FocusKeyManager(queryList).withWrap(wrap).withHomeAndEnd();\n queryList.changes\n .pipe(takeUntil(this._onDestroy$), startWith(0))\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 onDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\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 listItem.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$, this._onDestroy$);\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","import { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Observer, Subject } from 'rxjs';\nimport { coerceElement } from '@angular/cdk/coercion';\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","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { MutationObserverFactory } from '@angular/cdk/observers';\nimport { Observable, Observer, Subject } from 'rxjs';\nimport { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\nimport { getNativeElement } from '../../helpers/get-native-element';\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 { ElementRef } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { HasElementRef } from '../../interfaces';\nimport { getNativeElement } from '../../helpers/get-native-element';\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 } 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 constructor(private _attributeObserver: 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, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { isElementFocusableByDefault } from './is-element-focusable-by-default';\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';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FocusableObserver {\n /** @hidden */\n constructor(private _attributeObserver: 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 { DOCUMENT } from '@angular/common';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n NgZone,\n Output\n} from '@angular/core';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ENTER, ESCAPE, F2, MAC_ENTER } from '@angular/cdk/keycodes';\nimport { FDK_FOCUSABLE_ITEM_DIRECTIVE } from './focusable-item.tokens';\nimport { TabbableElementService } from '../../services';\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { FocusableObserver } from './focusable.observer';\nimport { fromEvent, Subject } from 'rxjs';\nimport { Nullable } from '../../models/nullable';\nimport { KeyUtil } from '../../functions';\nimport { FocusableItem } from './focusable.item';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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 standalone: true,\n providers: [\n {\n provide: FDK_FOCUSABLE_ITEM_DIRECTIVE,\n useExisting: FocusableItemDirective\n }\n ]\n})\nexport class FocusableItemDirective implements FocusableItem {\n /** Whether the item is focusable. Default is true. */\n @Input()\n set fdkFocusableItem(val: BooleanInput) {\n this._focusable = coerceBooleanProperty(val);\n this.setTabbable(this._focusable);\n }\n\n get fdkFocusableItem(): boolean {\n return this._focusable;\n }\n\n /** Function, which returns a string to be announced by screen-reader whenever an item which is in grid receives focus. */\n @Input()\n cellFocusedEventAnnouncer: CellFocusedEventAnnouncer = this._defaultItemFocusedEventAnnouncer;\n\n /** Event emitted when the cell receives focus, not being emitted when focus moves between item's children. */\n @Output()\n readonly cellFocused = new EventEmitter<FocusableItemPosition>();\n\n /** @hidden */\n readonly keydown = new Subject<KeyboardEvent>();\n\n /** @hidden */\n _position: FocusableItemPosition;\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n get _tabindex(): number {\n return this._tabbable ? 0 : -1;\n }\n\n /** Element reference. */\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n /** @hidden */\n protected readonly _destroyRef = inject(DestroyRef);\n /** @hidden */\n protected readonly _zone = inject(NgZone);\n\n /** @hidden */\n private _focusable = true;\n\n /** @hidden */\n private _tabbableElements = new Map<HTMLElement, number>();\n\n /** @hidden */\n private _tabbable = true;\n\n /** @hidden */\n private _timerId: ReturnType<typeof setTimeout> | null;\n /** @hidden */\n private readonly _focusableObserver = inject(FocusableObserver);\n /** @hidden */\n private readonly _tabbableElementService = inject(TabbableElementService);\n /** @hidden */\n private readonly _liveAnnouncer = inject(LiveAnnouncer);\n\n /** @hidden */\n private readonly _document = inject(DOCUMENT);\n\n /** @hidden */\n constructor() {\n this._focusableObserver\n .observe(this.elementRef, false)\n .pipe(takeUntilDestroyed())\n .subscribe((isFocusable) => {\n if (!isFocusable && isFocusable !== this.fdkFocusableItem) {\n this.fdkFocusableItem = isFocusable;\n }\n });\n\n this._zone.runOutsideAngular(() => {\n fromEvent(this.elementRef.nativeElement, 'focusin')\n .pipe(takeUntilDestroyed())\n .subscribe(async () => {\n await this._onFocusin();\n });\n\n fromEvent(this.elementRef.nativeElement, 'focusout')\n .pipe(takeUntilDestroyed())\n .subscribe(() => {\n this._onFocusout();\n });\n\n fromEvent<KeyboardEvent>(this.elementRef.nativeElement, 'keydown')\n .pipe(takeUntilDestroyed())\n .subscribe((event) => {\n this._onKeydown(event);\n });\n });\n }\n\n /** @hidden */\n element = (): HTMLElement => this.elementRef.nativeElement;\n\n /** @hidden */\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\n if (state) {\n this._enableTabbableElements();\n } else {\n this._disableTabbableElements();\n }\n }\n\n /** @hidden */\n private async _onFocusin(): Promise<void> {\n if (!this.fdkFocusableItem) {\n return;\n }\n\n if (this._timerId != null) {\n clearTimeout(this._timerId);\n this._timerId = null;\n return;\n }\n\n if (this._position) {\n this.cellFocused.next(this._position);\n\n if (this.cellFocusedEventAnnouncer) {\n this._liveAnnouncer.clear();\n await this._liveAnnouncer.announce(this.cellFocusedEventAnnouncer(this._position));\n }\n }\n }\n\n /** @hidden */\n private _onFocusout(): void {\n if (!this.fdkFocusableItem) {\n return;\n }\n\n // Timeout is needed to prevent focusout event from being emitted when focus moves between item's children.\n this._timerId = setTimeout(() => (this._timerId = null));\n }\n\n /** @hidden */\n private _onKeydown(event: KeyboardEvent): void {\n if (!this.fdkFocusableItem) {\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 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 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 _enableTabbableElements(): void {\n if (this._tabbableElements.size === 0) {\n return;\n }\n\n this._tabbableElements.forEach((tabIndex, element) => (element.tabIndex = tabIndex));\n this._tabbable = false;\n }\n\n /** @hidden */\n private _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 Array.from(this.elementRef.nativeElement.querySelectorAll<HTMLElement>('*'))\n .filter((elm) => elm.tabIndex >= 0)\n .forEach((elm) => {\n this._tabbableElements.set(elm, elm.tabIndex);\n elm.tabIndex = -1;\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@NgModule({\n imports: [FocusableItemDirective],\n exports: [FocusableItemDirective]\n})\nexport class FocusableItemModule {}\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 { InjectionToken } from '@angular/core';\n\nexport const FDK_FOCUSABLE_LIST_DIRECTIVE = new InjectionToken('Focusable list token');\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 (!position || !element) {\n return;\n }\n\n const scrollableParent = getScrollParent(element);\n\n if (scrollableParent) {\n const itemOffsetTop = element.offsetTop - scrollableParent.offsetTop;\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 { FocusableItem } from './focusable.item';\n\n/**\n * Returns the element of the item.\n * @param item\n */\nexport function getItemElement(item?: 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 { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges\n} from '@angular/core';\nimport { finalize, map, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { FocusableItemPosition } from '../focusable-item/focusable-item.directive';\nimport {\n FDK_FOCUSABLE_ITEM_DIRECTIVE,\n FocusableItem,\n FocusableListPosition,\n FocusableObserver,\n isItemFocusable\n} from '../focusable-item';\nimport { FDK_FOCUSABLE_LIST_DIRECTIVE } from './focusable-list.tokens';\nimport { merge, Subject } from 'rxjs';\nimport { Nullable } from '../../models/nullable';\nimport { FocusKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { intersectionObservable, KeyUtil } from '../../functions';\nimport { ENTER, ESCAPE, F2, MAC_ENTER } from '@angular/cdk/keycodes';\nimport { scrollIntoView, ScrollPosition } from './scroll';\nimport { getItemElement } from '../focusable-item/get-item-element';\nimport { destroyObservable } from '../../helpers';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport interface FocusableListItemFocusedEvent {\n index: number;\n total: number;\n}\n\nexport interface FocusableListKeydownEvent {\n list: FocusableListDirective;\n event: KeyboardEvent;\n activeItemIndex: Nullable<number>;\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 providers: [\n {\n provide: FDK_FOCUSABLE_LIST_DIRECTIVE,\n useExisting: FocusableListDirective\n }\n ]\n})\nexport class FocusableListDirective implements OnChanges, AfterViewInit, OnDestroy {\n /** Whether the whole list should be focusable, handy in grids. */\n @Input()\n set focusable(value: BooleanInput) {\n this._focusable = coerceBooleanProperty(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 @Input()\n navigationDirection: 'horizontal' | 'vertical' | 'grid' = 'vertical';\n\n /** Direction of the content. */\n @Input()\n contentDirection: '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 @Input()\n wrap = false;\n\n /** Function, which returns a string to be announced by screen-reader whenever an row which is in grid receives focus. */\n @Input()\n listFocusedEventAnnouncer: (position: FocusableListPosition) => string = this._defaultListFocusedEventAnnouncer;\n\n /** Event emitted when list's item focused, contains item's position info. */\n @Output()\n readonly itemFocused = new EventEmitter<FocusableListItemFocusedEvent>();\n\n /** @hidden */\n @ContentChildren(FDK_FOCUSABLE_ITEM_DIRECTIVE, { descendants: true })\n readonly _projectedFocusableItems: QueryList<FocusableItem>;\n\n /** @hidden */\n get _focusableItems(): QueryList<FocusableItem> {\n return this._items ? this._items : this._projectedFocusableItems;\n }\n\n /** @hidden */\n _items: QueryList<FocusableItem> | undefined;\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 _isVisible = false;\n\n /** @hidden */\n protected readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n protected _focusable = false;\n\n /** @hidden */\n private _gridPosition: { rowIndex: number; totalRows: number };\n\n /** @hidden */\n private _keyManager?: FocusKeyManager<FocusableItem>;\n\n /** @hidden */\n private _tabbable = false;\n\n /** @hidden */\n private readonly _refreshItems$ = new Subject<void>();\n /** @hidden */\n private readonly _refresh$ = new Subject<void>();\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 _document = inject(DOCUMENT);\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n get _tabindex(): number {\n return this._tabbable ? 0 : -1;\n }\n\n /** @hidden */\n constructor() {\n intersectionObservable(this._elementRef.nativeElement, { threshold: 0.25 })\n .pipe(takeUntilDestroyed())\n .subscribe((isVisible) => (this._isVisible = isVisible[0]?.isIntersecting));\n\n this._focusableObserver\n .observe(this._elementRef, false)\n .pipe(takeUntilDestroyed())\n .subscribe((isFocusable) => {\n if (!isFocusable && isFocusable !== this.focusable) {\n this.focusable = isFocusable;\n }\n });\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\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 @HostListener('focus')\n async _onFocus(): Promise<void> {\n if (this._gridPosition) {\n this._gridListFocused$.next(this._gridPosition);\n\n this._liveAnnouncer.clear();\n await this._liveAnnouncer.announce(this.listFocusedEventAnnouncer(this._gridPosition));\n\n this.setTabbable(true);\n }\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._keyManager) {\n return;\n }\n\n if (changes['wrap']) {\n this._keyManager = this._keyManager.withWrap(changes['wrap'].currentValue);\n }\n\n if (changes['navigationDirection']) {\n this._updateNavigationDirection();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._listenOnItems();\n }\n\n /** Set items programmatically. */\n setItems(items: QueryList<FocusableItem>): void {\n this._items = items;\n this._listenOnItems();\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 this._focusableItems.find((item, itemIndex) => {\n if (itemIndex >= index && isItemFocusable(item)) {\n availableIndex = itemIndex;\n return true;\n }\n\n return false;\n });\n\n if (availableIndex != null) {\n scrollIntoView(getItemElement(this._focusableItems.get(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 = 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 this._focusableItems.forEach((item) => item.setTabbable(state));\n }\n\n /** @hidden */\n _setGridPosition(position: FocusableListPosition): void {\n this._gridPosition = position;\n\n this._focusableItems.changes\n .pipe(startWith(this._focusableItems), takeUntilDestroyed(this._destroyRef))\n .subscribe((items) =>\n items.forEach(\n (item, index) =>\n (item._position = {\n ...this._gridPosition,\n colIndex: index,\n totalCols: this._focusableItems.length\n })\n )\n );\n }\n\n /** @hidden */\n private _initializeFocusManager(items: 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 focusListenerDestroyers = items.map((item, index) =>\n this._renderer.listen(getItemElement(item), 'focus', () => {\n const directiveItem = this._focusableItems.get(index);\n if (!directiveItem) {\n return;\n }\n\n if (this._gridPosition) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._gridItemFocused$.next(directiveItem._position!);\n }\n\n this.itemFocused.next({ index, total: items.length });\n this._focusableItems.forEach((i) => i.setTabbable(i === directiveItem));\n this._keyManager?.setActiveItem(index);\n })\n );\n\n merge(...items.map((item) => item.keydown))\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(() => focusListenerDestroyers.forEach((d) => d()))\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 const refresh$ = merge(this._refresh$, destroyObservable(this._destroyRef));\n this._refresh$.next();\n this._focusableItems.changes\n .pipe(\n startWith(null),\n map(() => this._focusableItems.toArray()),\n tap((items: FocusableItem[]): void => {\n const direction = this.navigationDirection === 'grid' ? 'horizontal' : this.navigationDirection;\n\n this._initializeFocusManager(items, {\n direction,\n contentDirection: this.contentDirection,\n wrap: this.wrap\n });\n }),\n takeUntil(refresh$)\n )\n .subscribe();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FocusableListDirective } from './focusable-list.directive';\nimport { FocusableItemDirective } from '../focusable-item';\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 { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { 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 inject,\n Input,\n Output,\n QueryList\n} from '@angular/core';\nimport { merge, startWith, switchMap } from 'rxjs';\nimport { KeyUtil } from '../../functions';\nimport { Nullable } from '../../models/nullable';\nimport { FocusableItemPosition, FocusableListPosition } from '../focusable-item';\nimport { FDK_FOCUSABLE_LIST_DIRECTIVE, FocusableListDirective, ScrollPosition } from '../focusable-list';\nimport { findLastIndex } from 'lodash-es';\nimport { FDK_FOCUSABLE_GRID_DIRECTIVE } from './focusable-grid.tokens';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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()\n set wrapHorizontally(value: BooleanInput) {\n this._wrapHorizontally = coerceBooleanProperty(value);\n }\n\n get wrapHorizontally(): boolean {\n return this._wrapHorizontally;\n }\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 private _wrapHorizontally = false;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._focusableLists.changes\n .pipe(startWith(this._focusableLists), takeUntilDestroyed(this._destroyRef))\n .subscribe((lists) =>\n lists.forEach((list, index) =>\n list._setGridPosition({ rowIndex: index, totalRows: this._focusableLists.length })\n )\n );\n\n this._focusableLists.changes\n .pipe(\n startWith(this._focusableLists),\n switchMap((queryList: QueryList<FocusableListDirective>) =>\n merge(...queryList.toArray().map((list) => list._gridListFocused$))\n ),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((focusedEvent) => {\n this.rowFocused.emit(focusedEvent);\n\n this._focusableLists.forEach((list) => list.setTabbable(false));\n this._focusableLists.forEach((list) => list._setItemsTabbable(false));\n });\n\n this._focusableLists.changes\n .pipe(\n startWith(this._focusableLists),\n switchMap((queryList: QueryList<FocusableListDirective>) =>\n merge(...queryList.toArray().map((list) => list._gridItemFocused$))\n ),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((focusedEvent) => {\n this.itemFocused.emit(focusedEvent);\n\n this._focusableLists.forEach((list) => list.setTabbable(false));\n this._focusableLists.forEach((list) => list._setItemsTabbable(false));\n });\n\n this._focusableLists.changes\n .pipe(\n startWith(this._focusableLists),\n switchMap((queryList: QueryList<FocusableListDirective>) =>\n merge(...queryList.toArray().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 (!KeyUtil.isKeyCode(event, [UP_ARROW, DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, PAGE_DOWN, PAGE_UP])) {\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 isFirstItemLtr = activeItemIndex === 0 && this.contentDirection !== 'rtl';\n const isLastItemRtl = activeItemIndex === list._focusableItems.length - 1 && this.contentDirection === 'rtl';\n\n const isFirstItemRtl = activeItemIndex === 0 && this.contentDirection === 'rtl';\n const isLastItemLtr = activeItemIndex === list._focusableItems.length - 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 = findLastIndex(lists, (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","import { NgModule } from '@angular/core';\nimport { FocusableListModule } from '../focusable-list';\nimport { FocusableGridDirective } from './focusable-grid.directive';\n\n@NgModule({\n imports: [FocusableListModule, FocusableGridDirective],\n exports: [FocusableListModule, FocusableGridDirective]\n})\nexport class FocusableGridModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_READONLY_DIRECTIVE = new InjectionToken('Readonly 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 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 { AfterViewInit, DestroyRef, Directive, ElementRef, Input } from '@angular/core';\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\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';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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()\n set fdkReadonly(value: BooleanInput) {\n this._readonlyInput$.next(coerceBooleanProperty(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(private _elementRef: ElementRef<HTMLElement>, private _destroyRef: DestroyRef) {\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@NgModule({\n imports: [ReadonlyBehaviorDirective],\n exports: [ReadonlyBehaviorDirective]\n})\nexport class ReadonlyBehaviorModule {}\n","import { ElementRef, Injectable } 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 constructor(private _attributeObserver: 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 { 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 { ElementRef, Inject, Injectable, NgZone, OnDestroy, Optional, Self, SkipSelf } from '@angular/core';\nimport { BehaviorSubject, combineLatest, firstValueFrom, Observable, ReplaySubject, Subject } from 'rxjs';\nimport { distinctUntilChanged, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { ReadonlyObserver } from './readonly.observer';\nimport { ReadonlyBehavior } from './readonly-behavior.interface';\nimport { DefaultReadonlyViewModifier } from './default-readonly-view-modifier';\nimport { ReadonlyViewModifier } from './readonly-view-modifier.interface';\nimport { FDK_READONLY_DIRECTIVE } from './fdk-readonly.token';\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[]> = new BehaviorSubject<\n ReadonlyViewModifier[]\n >(this._getInitialViewModifiers());\n\n /** @hidden */\n private _readonlyChange$: Observable<boolean> = this._getReadonlyChange$();\n\n /** @hidden */\n private readonly _destroy$ = new Subject<void>();\n\n /** @hidden */\n constructor(\n private ngZone: NgZone,\n private elementRef: ElementRef<Element>,\n private readonlyObserver: ReadonlyObserver,\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 combineLatest([this._readonlyChange$, this._viewModifiers$])\n .pipe(\n tap(([isReadonly]) => this.setReadonlyState(isReadonly)),\n takeUntil(this._destroy$)\n )\n .subscribe();\n this._readonlyChange$\n .pipe(\n tap((isDisabled) => (this.fdkReadonly = isDisabled)),\n tap((isDisabled) => this.next(isDisabled)),\n takeUntil(this._destroy$)\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 firstValueFrom(this.ngZone.onStable).then(() => {\n this._viewModifiers$.value.forEach((viewModifier) => viewModifier.setReadonlyState(isReadonly));\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.complete();\n this._destroy$.next();\n this._destroy$.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 takeUntil(this._destroy$)\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 takeUntil(this._destroy$)\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 { 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 { InjectionToken } from '@angular/core';\nimport { DisabledBehavior } from './disabled-behavior.interface';\n\nexport const FDK_DISABLED_DIRECTIVE = new InjectionToken<DisabledBehavior>('Disabled directive token');\n","import { Directive, EventEmitter, Output } from '@angular/core';\n\n@Directive({\n selector: '[fdkClicked]'\n})\nexport class ClickedDirective {\n /**\n * Event name.\n */\n static eventName = 'fdkClicked';\n /**\n * FdkClicked output. The sole purpose of the existence of this directive is to just silence Angular Language Service.\n * This is the only viable solution, since NO_ERRORS_SCHEMA silences everything and valuable exception might slip\n * through your eyes.\n */\n @Output() fdkClicked = new EventEmitter<MouseEvent | KeyboardEvent>();\n}\n","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { DOCUMENT } from '@angular/common';\nimport { ClickedDirective } from './clicked.directive';\n\ntype EventHandlerFunction = ($event: Event) => void;\ntype HandlerRemoveFunction = () => void;\n\n@Injectable()\nexport class ClickedEventPlugin {\n /** @hidden */\n constructor(@Inject(DOCUMENT) private document: Document, @Inject(PLATFORM_ID) private platformId: any) {}\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 { Inject, InjectionToken, isDevMode, ModuleWithProviders, NgModule } from '@angular/core';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\nimport { ClickedEventPlugin } from './clicked-event.plugin';\nimport { ClickedDirective } from './clicked.directive';\n\nconst ClickedBehaviorModuleForRootLoadedOnce = new InjectionToken<boolean>(\n 'Checking Module providers had been loaded',\n { factory: () => false }\n);\n\n@NgModule({\n declarations: [ClickedDirective],\n exports: [ClickedDirective]\n})\nexport class ClickedBehaviorModule {\n /** @hidden */\n constructor(@Inject(ClickedBehaviorModuleForRootLoadedOnce) clickedBehaviorModuleForRootLoadedOnce: boolean) {\n if (!clickedBehaviorModuleForRootLoadedOnce && isDevMode()) {\n console.warn(\n 'ClickedBehaviorModule.forRoot() was not called from RootModule, you will not be able to use (fdkClicked) events'\n );\n }\n }\n\n /** @hidden */\n static forRoot(): ModuleWithProviders<ClickedBehaviorModule> {\n return {\n ngModule: ClickedBehaviorModule,\n providers: [\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: ClickedEventPlugin,\n multi: true\n },\n {\n provide: ClickedBehaviorModuleForRootLoadedOnce,\n useValue: true\n }\n ]\n };\n }\n}\n","import { ElementRef, Inject, Injectable, OnDestroy, Renderer2 } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\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 _elementRef: ElementRef<Element>,\n private _renderer: Renderer2,\n @Inject(EVENT_MANAGER_PLUGINS) private 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 { AfterViewInit, DestroyRef, Directive, ElementRef, Input } from '@angular/core';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { tap } from 'rxjs/operators';\nimport { BehaviorSubject, filter, ReplaySubject } from 'rxjs';\nimport { DisabledBehavior } from './disabled-behavior.interface';\nimport { setDisabledState } from './set-disabled-state';\nimport { FDK_DISABLED_DIRECTIVE } from './fdk-disabled.token';\nimport { DisabledViewModifier } from './disabled-view-modifier.interface';\nimport { FdkClickedProvider } from '../clicked';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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 AfterViewInit, DisabledBehavior, DisabledViewModifier\n{\n /** @hidden */\n @Input()\n set fdkDisabled(value: BooleanInput) {\n const val = coerceBooleanProperty(value);\n this._clicked.setPreventDefault(val);\n this._fdkDisableInput$.next(val);\n }\n\n get fdkDisabled(): boolean {\n return this._disabled;\n }\n\n /**\n * Whether to add `disabledClass` class to the element.\n */\n @Input()\n addDisabledClass = true;\n\n /**\n * Disabled css class to apply to the element.\n */\n @Input()\n disabledClass = 'is-disabled';\n\n /** @hidden */\n private _disabled = false;\n /** @hidden */\n private readonly _fdkDisableInput$ = new BehaviorSubject(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\n /** @hidden */\n setDisabledState = (isDisabled: boolean): void => {\n setDisabledState(this._elementRef, isDisabled, this.disabledClass, this.addDisabledClass);\n };\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._fdkDisableInput$\n .pipe(\n filter((isDisabled) => isDisabled !== this._disabled),\n tap((isDisabled) => {\n this.setDisabledState(isDisabled);\n this._disabled = isDisabled;\n this.next(isDisabled);\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DisabledBehaviorDirective } from './disabled-behavior.directive';\n\n@NgModule({\n imports: [DisabledBehaviorDirective],\n exports: [DisabledBehaviorDirective]\n})\nexport class DisabledBehaviorModule {}\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 { ElementRef, Inject, Injectable, NgZone, OnDestroy, Optional, Self, SkipSelf } from '@angular/core';\nimport { BehaviorSubject, combineLatest, firstValueFrom, Observable, ReplaySubject, Subject } from 'rxjs';\nimport { distinctUntilChanged, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { FDK_DISABLED_DIRECTIVE } from './fdk-disabled.token';\nimport { DisabledObserver } from './disabled.observer';\nimport { DisabledBehavior } from './disabled-behavior.interface';\nimport { DisabledViewModifier } from './disabled-view-modifier.interface';\nimport { DefaultDisabledViewModifier } from './default-disabled-view-modifier';\n\n@Injectable()\nexport class FdkDisabledProvider extends ReplaySubject<boolean> implements DisabledBehavior, OnDestroy {\n /** @Hidden */\n fdkDisabled = false;\n /** @Hidden */\n private readonly _destroy$ = new Subject<void>();\n /** @hidden */\n private readonly _viewModifiers$: BehaviorSubject<DisabledViewModifier[]> = new BehaviorSubject<\n DisabledViewModifier[]\n >(this._getInitialViewModifiers());\n /** @hidden */\n private _disabledChange$: Observable<boolean> = this._getDisabledChange$();\n\n /** @hidden */\n constructor(\n private ngZone: NgZone,\n private elementRef: ElementRef<HTMLElement>,\n private disabledObserver: DisabledObserver,\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 combineLatest([this._disabledChange$, this._viewModifiers$])\n .pipe(\n tap(([isDisabled]) => this.setDisabledState(isDisabled)),\n takeUntil(this._destroy$)\n )\n .subscribe();\n this._disabledChange$\n .pipe(\n tap((isDisabled) => (this.fdkDisabled = isDisabled)),\n tap((isDisabled) => this.next(isDisabled)),\n takeUntil(this._destroy$)\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 firstValueFrom(this.ngZone.onStable).then(() => {\n this._viewModifiers$.value.forEach((viewModifier) => viewModifier.setDisabledState(isDisabled));\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.complete();\n this._destroy$.next();\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 takeUntil(this._destroy$)\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 takeUntil(this._destroy$)\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 { ChangeDetectorRef, Injectable, OnDestroy, QueryList } from '@angular/core';\nimport { coerceArray } from '@angular/cdk/coercion';\nimport { combineLatest, isObservable, merge, Observable, of, ReplaySubject, Subject, switchMap } from 'rxjs';\nimport { distinctUntilChanged, map, shareReplay, startWith, takeUntil, tap } from 'rxjs/operators';\nimport equal from 'fast-deep-equal';\nimport { SelectableItemToken } from './selectable-item.token';\nimport { SelectableListValueType, SelectComponentRootToken } from './select-component-root.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> implements OnDestroy {\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 _destroy$ = new Subject<void>();\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(equal),\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(takeUntil(this._destroy$)).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(this._destroy$, 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 ngOnDestroy(): void {\n this._destroy$.next();\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 } 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 setSelected(isSelected: boolean): void;\n\n abstract getSelected(): boolean;\n\n abstract clicked: Observable<MouseEvent | KeyboardEvent>;\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 { BooleanInput } from '@angular/cdk/coercion';\nimport { AfterViewInit, ContentChildren, Directive, EventEmitter, Input, Output, QueryList } from '@angular/core';\nimport { SelectionService } from './selection.service';\nimport { SelectableListValueType, SelectComponentRootToken } from './select-component-root.token';\nimport { SelectableItemToken } from './selectable-item.token';\nimport { coerceBoolean } from '../../decorators/coerce-boolean';\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()\n @coerceBoolean\n toggle: BooleanInput = false;\n\n /** @hidden */\n @Input()\n @coerceBoolean\n multiple: BooleanInput = 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 { 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 { ChangeDetectorRef, Directive, ElementRef, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';\nimport { merge, Observable } from 'rxjs';\nimport { SelectableItemToken } from './selectable-item.token';\nimport { FDK_SELECTABLE_ITEM_PROVIDER } from './selectable-list.tokens';\nimport { FdkDisabledProvider } from '../disabled';\nimport { FdkReadonlyProvider } from '../readonly';\nimport { SelectionService } from './selection.service';\nimport { FdkClickedProvider } from '../clicked';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\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 private _cd: ChangeDetectorRef,\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 { NgModule } from '@angular/core';\nimport { SelectableListDirective } from './selectable-list.directive';\nimport { SelectableItemDirective } from './selectable-item.directive';\n\n@NgModule({\n imports: [SelectableListDirective, SelectableItemDirective],\n exports: [SelectableListDirective, SelectableItemDirective]\n})\nexport class SelectableListModule {}\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 {\n AfterViewInit,\n DestroyRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n inject,\n Input,\n NgModule,\n OnChanges,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport { BooleanInput, coerceBooleanProperty, coerceElement } from '@angular/cdk/coercion';\nimport { ViewportSizeObservable } from '../../tokens/viewport-size.observable';\nimport { ResizeObserverService } from '../../services';\nimport { finalize, map, startWith, switchMap, tap } from 'rxjs/operators';\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\nimport { BreakpointName, getBreakpointName } from './responsive-breakpoints';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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('fdkBreakpointS')\n set showOnS(value: BooleanInput) {\n this._showOnS = coerceBooleanProperty(value);\n }\n\n /**\n * Show element on M breakpoint.\n * M - 0 - 1023px\n * */\n @Input('fdkBreakpointM')\n set showOnM(value: BooleanInput) {\n this._showOnM = coerceBooleanProperty(value);\n }\n\n /**\n * Show element on L breakpoint.\n * L - 0 - 1439px\n * */\n @Input('fdkBreakpointL')\n set showOnL(value: BooleanInput) {\n this._showOnL = coerceBooleanProperty(value);\n }\n\n /**\n * Show element on XL breakpoint.\n * */\n @Input('fdkBreakpointXL')\n set showOnXL(value: BooleanInput) {\n this._showOnXL = coerceBooleanProperty(value);\n }\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 /** @hidden */\n private _showOnS = false;\n /** @hidden */\n private _showOnM = false;\n /** @hidden */\n private _showOnL = false;\n\n /** @hidden */\n private _showOnXL = false;\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(private readonly templateRef: TemplateRef<any>, private readonly viewContainer: ViewContainerRef) {}\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, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { map } from 'rxjs';\nimport { intersectionObservable } from '../../functions';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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 { 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 { 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 {\n AfterContentInit,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n QueryList\n} from '@angular/core';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { startWith, takeUntil, take } from 'rxjs/operators';\nimport { selectStrategy } from '../../async-strategy';\nimport { ElementChord, FdDropEvent, LinkPosition, ElementPosition, DndItem, FdDndDropType } 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})\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 /** @hidden */\n private _replaceMode = false;\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 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 _onDestroy$ = new Subject<void>();\n\n /** @hidden */\n private _dndItemReference: DndItem[];\n\n /** @hidden */\n private _draggable = true;\n\n /** @hidden */\n @HostBinding('class')\n private readonly _initialClass = 'fd-dnd-list';\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.pipe(takeUntil(this._onDestroy$), startWith(0)).subscribe(() => this._refreshQueryList());\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\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 /** @hidden */\n private _refreshQueryList(): void {\n const refresh$ = merge(this._refresh$, this._onDestroy$);\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 /**\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 {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n Renderer2\n} from '@angular/core';\nimport { DragDrop, DragRef } from '@angular/cdk/drag-drop';\nimport { DndItem, ElementChord, ElementPosition, LinkPosition } from '../dnd.interfaces';\nimport { Subscription } from 'rxjs';\nimport { delay } from 'rxjs/operators';\nimport { DND_ITEM } from '../tokens';\nimport { Nullable } from '../../models/nullable';\n\n@Directive({\n selector: '[fdkDndItem], [fd-dnd-item]',\n providers: [DragDrop, { provide: DND_ITEM, useExisting: forwardRef(() => DndItemDirective) }]\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;\n\n /** @hidden */\n private _lineElement: HTMLElement | null;\n\n /** @hidden */\n private _replaceIndicator: HTMLElement | 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, Input, Optional } 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({ selector: '[fdkDndKeyboardGroup], [fdDndKeyboardGroup]' })\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 /** 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 /** @hidden */\n constructor(private readonly _cdr: ChangeDetectorRef, @Optional() private readonly _rtlService: RtlService) {}\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.value;\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({ selector: '[fdkDndKeyboardItem], [fdDndKeyboardItem]' })\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(private readonly _dndGroup: DndKeyboardGroupDirective, private readonly _elementRef: ElementRef) {}\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 /** @hidden */\n @HostListener('keydown', ['$event'])\n _onKeyDown(event: KeyboardEvent): void {\n this._dndGroup.processDragDrop(event, this.itemIndex, this.groupIndex);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DndListDirective } from './dnd-list/dnd-list.directive';\nimport { DndItemDirective } from './dnd-item/dnd-item.directive';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { DndKeyboardItemDirective } from './dnd-keyboard-item/dnd-keyboard-item.directive';\nimport { DndKeyboardGroupDirective } from './dnd-keyboard-group/dnd-keyboard-group.directive';\n\n@NgModule({\n imports: [CommonModule, DragDropModule],\n exports: [DndItemDirective, DndListDirective, DndKeyboardGroupDirective, DndKeyboardItemDirective],\n declarations: [DndItemDirective, DndListDirective, DndKeyboardGroupDirective, DndKeyboardItemDirective]\n})\nexport class DragAndDropModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RtlService } from './services/rtl.service';\nimport {\n AutoCompleteModule,\n ClickedBehaviorModule,\n DisabledBehaviorModule,\n FocusableGridModule,\n FocusableItemModule,\n FocusableListModule,\n InitialFocusModule,\n LineClampModule,\n OnlyDigitsModule,\n OverflowListModule,\n ReadonlyBehaviorModule,\n RepeatModule,\n ResizeModule,\n SelectableListModule,\n TemplateModule,\n TruncateModule,\n BreakpointModule,\n IntersectionSpyDirective\n} from './directives';\nimport { DragAndDropModule } from './drag-and-drop/drag-and-drop.module';\n\n@NgModule({\n imports: [\n CommonModule,\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 ClickedBehaviorModule,\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 ClickedBehaviorModule,\n InitialFocusModule,\n BreakpointModule,\n IntersectionSpyDirective\n ],\n providers: [RtlService]\n})\nexport class UtilsModule {}\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","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","/**\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","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","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 { ELEMENT_REF_EXCEPTION } from '../interfaces/has-element-ref.interface';\nimport { uuidv4 } from '../functions/uuidv4-generator';\nimport { CssClassBuilder } from '../interfaces/css-class-builder.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 { ELEMENT_REF_EXCEPTION, HasElementRef } from '../interfaces/has-element-ref.interface';\nimport { Hash } from '../datatypes/hash.datatype';\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","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { alternateSetter } from './setter-alternator';\n\nexport const coerceCssPixel = alternateSetter(coerceCssPixelValue);\n","import {\n Component,\n ElementRef,\n inject,\n Input,\n OnChanges,\n SimpleChanges,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport { ComponentPortal, ComponentType, DomPortal, Portal, PortalModule, TemplatePortal } from '@angular/cdk/portal';\nimport { coerceElement } from '@angular/cdk/coercion';\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 standalone: true,\n imports: [PortalModule],\n template: ` <ng-template [cdkPortalOutlet]=\"portal\"></ng-template>`\n})\nexport class DynamicPortalComponent implements OnChanges {\n /** The DOM element to attach */\n @Input() domElement: HTMLElement | ElementRef<HTMLElement>;\n\n /** The component to attach */\n @Input()\n component: ComponentType<any>;\n\n /** The template to attach */\n @Input()\n template: TemplateRef<any>;\n\n /** Portal associated with the Portal outlet. */\n portal?: Portal<any>;\n\n /** @hidden */\n private viewContainerRef = inject(ViewContainerRef);\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n this.portal?.detach();\n if (changes['domElement']) {\n this.portal = new DomPortal(coerceElement(this.domElement));\n } else if (changes['component']) {\n this.portal = new ComponentPortal(this.component);\n } else if (changes['template']) {\n this.portal = new TemplatePortal(this.template, this.viewContainerRef);\n }\n }\n}\n","import { CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectorRef,\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 */\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 protected _cdr: ChangeDetectorRef\n ) {}\n\n /** @hidden Load received content */\n protected abstract _loadContent(): void;\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(private _parentInjector: Injector, private _additionalTokens: WeakMap<any, any>) {}\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 ComponentFactoryResolver,\n Injectable,\n ApplicationRef,\n Injector,\n EmbeddedViewRef,\n ComponentRef,\n TemplateRef,\n Type,\n Compiler,\n NgModuleFactory,\n ViewContainerRef\n} from '@angular/core';\nimport { DynamicComponentInjector } from './dynamic-component-injector';\nimport { DynamicComponentConfig } from './dynamic-component-config';\n\n/**\n * Service used to dynamically generate components like dialogs/alerts/notifications\n */\n@Injectable()\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.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 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 { ElementRef, OnChanges, OnInit, Input, Directive } from '@angular/core';\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 OnInit, OnChanges {\n /** @hidden */\n private _elementRef: ElementRef;\n\n /** @hidden */\n @Input() class: string; // user's custom classes\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 /** @hidden */\n abstract _setProperties(): void;\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 protected constructor(elementRef: ElementRef) {\n this._elementRef = elementRef;\n this._setProperties();\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 { 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 { ContentDensity } from '../interfaces/content-density';\nimport { isCompactDensity } from './../functions/is-compact-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 { AsyncPipe } from '@angular/common';\nimport { ChangeDetectorRef, OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { isPromise, isSubscribable } from '../typecheck';\nimport { Observable } from 'rxjs';\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 | null;\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: T | Promise<T> | Observable<T>): T | null {\n return !isPromise(value) && !isSubscribable(value) ? value : this._asyncPipe?.transform(value) ?? null;\n }\n\n /** @Hidden */\n ngOnDestroy(): void {\n this._asyncPipe?.ngOnDestroy();\n this._asyncPipe = null;\n this._cdr = null;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { escape } from 'lodash-es';\n\n@Pipe({\n name: 'highlight',\n standalone: true\n})\nexport class SearchHighlightPipe implements PipeTransform {\n /** Highlight search term in string. */\n transform(value: string, args: string, active: boolean = true, includeSpans: boolean = false): string {\n value = escape(value);\n let result: string = value;\n if (args && value && active) {\n const testStr: string = escape(args.trim().toLowerCase());\n const startIndex = value.toLowerCase().indexOf(testStr);\n if (startIndex !== -1) {\n const matchingString = value.substr(startIndex, testStr.length);\n result = value.replace(matchingString, '<strong>' + matchingString + '</strong>');\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: '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 { DomSanitizer, SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl } 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 { get } from 'lodash-es';\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 { 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';\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 { NgModule } from '@angular/core';\nimport { AsyncOrSyncPipe } from './async-or-sync.pipe';\n\nimport { DisplayFnPipe } from './displayFn.pipe';\nimport { FilterStringsPipe } from './filter-strings.pipe';\nimport { SearchHighlightPipe } from './search-highlight.pipe';\nimport { TwoDigitsPipe } from './two-digits.pipe';\nimport { SafePipe } from './safe.pipe';\nimport { ValueByPathPipe } from './value-by-path.pipe';\nimport { IsCompactDensityPipe } from './is-compact.pipe';\nimport { TruncatePipe } from './truncate.pipe';\nimport { MakeAsyncPipe } from './make-async.pipe';\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 {\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 EmbeddedViewRef,\n Injectable,\n InjectionToken,\n Injector,\n OnDestroy,\n StaticProvider,\n TemplateRef,\n Type,\n ViewContainerRef\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\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> implements OnDestroy\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 * @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 private _destroy$ = new Subject<void>();\n\n /** @hidden */\n protected constructor(public overlay: Overlay, public injector: Injector) {}\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 * 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 * 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 * 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 * 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 // TemplatePortal requires viewContainer ref\n const viewRef = null as any as ViewContainerRef;\n const portal = new TemplatePortal(content, viewRef, { $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 /** @hidden */\n ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\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(takeUntil(this._destroy$))\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 { 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 { animate, state, style, transition, trigger, AnimationTriggerMetadata } from '@angular/animations';\n\n/**\n * Animations used by the Toast components.\n */\nexport const baseToastAnimations: {\n readonly toastState: AnimationTriggerMetadata;\n} = {\n /** Animation that shows and hides Toast. */\n toastState: trigger('state', [\n state(\n 'void, hidden',\n style({\n transform: 'translateY(1rem)',\n opacity: 0\n })\n ),\n state(\n 'visible',\n style({\n transform: 'translateY(0)',\n opacity: 1\n })\n ),\n transition('* => visible', animate('150ms cubic-bezier(0, 0, 0.2, 1)')),\n transition(\n '* => void, * => hidden',\n animate(\n '75ms cubic-bezier(0.4, 0.0, 1, 1)',\n style({\n opacity: 0\n })\n )\n )\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 { 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\n/**\n * Base Configuration class used when opening an animated Toast.\n */\nexport class BaseAnimatedToastConfig<T = any> extends BaseToastConfig<T> {\n /** Whether the toast should be animated. */\n animated? = true;\n}\n","import { OverlayContainer } from '@angular/cdk/overlay';\nimport { Injectable } from '@angular/core';\n\n/**\n * Custom overlay container for CDK Overlay.\n */\n@Injectable()\nexport class BaseToastOverlayContainer extends OverlayContainer {\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n override getContainerElement(): HTMLElement {\n const containerElement = super.getContainerElement();\n\n containerElement.classList.add('fn-toast-overlay-container');\n\n return containerElement;\n }\n}\n","import { ComponentRef, Directive, EmbeddedViewRef, ViewChild } from '@angular/core';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { Subject } from 'rxjs';\nimport { coerceCssPixel } from '../../decorators';\nimport { Nullable } from '../../models/nullable';\nimport { BaseToastConfig } from './base-toast-config';\nimport { ToastContainerComponent } from '../interfaces/toast-container-component.interface';\n\nlet toastUniqueId = 0;\n\n@Directive()\nexport abstract class BaseToastContainerComponent<P extends BaseToastConfig = BaseToastConfig>\n extends BasePortalOutlet\n implements ToastContainerComponent<P>\n{\n /**\n * @hidden\n * The portal outlet inside this container into which the Toast content will be loaded.\n */\n @ViewChild(CdkPortalOutlet, { static: true })\n _portalOutlet!: CdkPortalOutlet;\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 /** Min width of the toast component. */\n @coerceCssPixel\n minWidth?: string | number | null;\n\n /** Max width of the toast component. */\n @coerceCssPixel\n maxWidth?: string | number | null;\n\n /** Width of the toast component. */\n @coerceCssPixel\n width?: string | number | null;\n\n /** Min height of the toast component. */\n @coerceCssPixel\n minHeight?: string | number | null;\n\n /** Max height of the toast component. */\n @coerceCssPixel\n maxHeight?: string | number | null;\n\n /** Height of the toast component. */\n @coerceCssPixel\n height?: string | number | null;\n\n /** Aria label. */\n ariaLabel: Nullable<string>;\n\n /** ID of the Toast. */\n id: Nullable<string>;\n\n /** @hidden */\n protected constructor(public config: P) {\n super();\n this.minWidth = this.config.minWidth;\n this.maxWidth = this.config.maxWidth;\n this.width = this.config.width;\n this.minHeight = this.config.minHeight;\n this.maxHeight = this.config.maxHeight;\n this.height = this.config.height;\n this.ariaLabel = this.config.ariaLabel;\n this.id = this.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 /** 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","import { OverlayRef } from '@angular/cdk/overlay';\nimport { BaseToastPosition } from '../../base-toast-positions';\nimport { 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\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 /** @hidden */\n protected constructor(containerInstance: C, overlayRef: OverlayRef, positionStrategy: BaseToastPosition) {\n super(containerInstance, overlayRef, positionStrategy);\n }\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 { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\nimport { BaseToastPosition } from '../../base-toast-positions';\nimport { BaseToastDurationDismissibleRef } from '../duration-dismissible/base-toast-duration-dismissible-ref';\nimport { BaseToastDurationDismissibleContainerComponent } from '../duration-dismissible/base-toast-duration-dismissible-container.component';\nimport { BaseToastConfig } from '../base-toast-config';\n\nexport abstract class BaseToastActionDismissibleRef<\n T = any,\n P extends BaseToastConfig<T> = any\n> extends BaseToastDurationDismissibleRef<T, P> {\n /** Subject for notifying the user that the Toast action-dismissible was called. */\n protected readonly onAction$ = new Subject<string | null>();\n\n /** Whether the Toast was dismissed using the action-dismissible button. */\n protected dismissedByAction = false;\n\n /** @hidden */\n protected constructor(\n containerInstance: BaseToastDurationDismissibleContainerComponent<P>,\n overlayRef: OverlayRef,\n positionStrategy: BaseToastPosition\n ) {\n super(containerInstance, overlayRef, positionStrategy);\n\n this.onAction().subscribe(() => this.dismiss());\n }\n\n /** Marks the Toast action-dismissible clicked. */\n dismissWithAction(reason: string | null = null): void {\n if (!this.onAction$.closed) {\n this.dismissedByAction = true;\n\n this.onAction$.next(reason);\n this.onAction$.complete();\n }\n }\n\n /** Gets an observable that is notified when the Toast action-dismissible is called. */\n onAction(): Observable<string | null> {\n return this.onAction$;\n }\n\n /**\n * @hidden\n * Cleans up the DOM after closing.\n */\n protected override _finishDismiss(): void {\n if (!this.onAction$.closed) {\n this.onAction$.complete();\n }\n\n super._finishDismiss();\n }\n}\n","import { AnimationEvent } from '@angular/animations';\nimport { Directive, HostBinding, HostListener, inject, NgZone, OnDestroy } from '@angular/core';\nimport { take } from 'rxjs';\nimport { BaseAnimatedToastConfig } from './base-toast-config';\nimport { BaseToastContainerComponent } from './base-toast-container.component';\n\n@Directive()\nexport abstract class BaseToastAnimatedContainerComponent<P extends BaseAnimatedToastConfig>\n extends BaseToastContainerComponent<P>\n implements OnDestroy\n{\n /**\n * @hidden\n * The state of the Message Toast animations.\n */\n @HostBinding('@state')\n private _animationState = 'void';\n\n /**\n * @hidden\n * Whether the animations should be disabled.\n */\n @HostBinding('@.disabled')\n private _animationsDisabled = false;\n\n /** @hidden */\n protected _ngZone = inject(NgZone);\n\n /** @hidden */\n constructor(config: P) {\n super(config);\n this._animationsDisabled = !config.animated;\n }\n\n /** Begin animation of Message Toast entrance into view. */\n enter(): void {\n this._animationState = 'visible';\n }\n\n /** Begin animation of Message Toast removal. */\n exit(): void {\n this._animationState = 'hidden';\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._completeExit();\n }\n\n /**\n * @hidden\n * Handle end of animations, updating the state of the Message Toast.\n */\n @HostListener('@state.done', ['$event'])\n private _onAnimationEnd(event: AnimationEvent): void {\n const { fromState, toState } = event;\n\n if ((toState === 'void' && fromState !== 'void') || toState === 'hidden') {\n this._completeExit();\n }\n\n if (toState === 'visible') {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const onEnter = this.onEnter$;\n\n this._ngZone.run(() => {\n onEnter.next();\n onEnter.complete();\n });\n }\n }\n\n /**\n * @hidden\n * Waits for the zone to settle before removing the element. 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 // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const onExit = this.onExit$;\n\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n onExit.next();\n onExit.complete();\n });\n }\n}\n","import { Directive, HostListener, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { BaseToastAnimatedContainerComponent } from '../base-toast-animated-container.component';\nimport { BaseToastConfig } from '../base-toast-config';\nimport { ToastDurationDismissibleContainerComponent } from '../../interfaces/toast-duration-dismissible-container-component.interface';\n\n@Directive()\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 /** Emits mouseleave$ subject when component is out of hover. */\n @HostListener('mouseleave')\n onMouseLeave(): void {\n this.mouseleave$.next();\n }\n\n /** Emits mouseover$ subject when component is hovered. */\n @HostListener('mouseover')\n onMouseOver(): void {\n this.mouseover$.next();\n }\n\n /** @Hidden */\n override ngOnDestroy(): void {\n this.mouseover$.complete();\n this.mouseleave$.complete();\n\n super.ngOnDestroy();\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","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 { 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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.RtlService","i1.FocusKeyManagerListDirective","i1.TabbableElementService","map","i1","i1.AttributeObserver","startWith","i1.ReadonlyObserver","filter","i1.FdkClickedProvider","i1.DisabledObserver","i1.SelectionService","i1.FdkDisabledProvider","i2.FdkReadonlyProvider","i3.SelectionService","i4.FdkClickedProvider","switchMap","i1.DndKeyboardGroupDirective","take"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-cdk-utils.mjs","sources":["../../../../libs/cdk/src/lib/utils/services/rtl.service.ts","../../../../libs/cdk/src/lib/utils/functions/key-util.ts","../../../../libs/cdk/src/lib/utils/directives/auto-complete/auto-complete.directive.ts","../../../../libs/cdk/src/lib/utils/directives/auto-complete/auto-complete.module.ts","../../../../libs/cdk/src/lib/utils/directives/focus-key-manager/focus-key-manager.tokens.ts","../../../../libs/cdk/src/lib/utils/directives/focus-key-manager/focus-key-manager-list.directive.ts","../../../../libs/cdk/src/lib/utils/directives/focus-key-manager/focus-key-manager-item.directive.ts","../../../../libs/cdk/src/lib/utils/directives/focus-key-manager/focus-key-manager-helpers.module.ts","../../../../libs/cdk/src/lib/utils/directives/ignore-click-on-selection/tokens.ts","../../../../libs/cdk/src/lib/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.ts","../../../../libs/cdk/src/lib/utils/directives/ignore-click-on-selection/ignore-click-on-selection.module.ts","../../../../libs/cdk/src/lib/utils/services/tabbable-element.service.ts","../../../../libs/cdk/src/lib/utils/directives/initial-focus/initial-focus.directive.ts","../../../../libs/cdk/src/lib/utils/directives/initial-focus/initial-focus.module.ts","../../../../libs/cdk/src/lib/utils/tokens/viewport-size.observable.ts","../../../../libs/cdk/src/lib/utils/directives/line-clamp/line-clamp.directive.ts","../../../../libs/cdk/src/lib/utils/directives/line-clamp/line-clamp.module.ts","../../../../libs/cdk/src/lib/utils/functions/element-size.ts","../../../../libs/cdk/src/lib/utils/functions/uuidv4-generator.ts","../../../../libs/cdk/src/lib/utils/functions/parser-file-size.ts","../../../../libs/cdk/src/lib/utils/functions/scroll.ts","../../../../libs/cdk/src/lib/utils/functions/random-color-accent.ts","../../../../libs/cdk/src/lib/utils/functions/resize-observable.ts","../../../../libs/cdk/src/lib/utils/functions/intersection-observable.ts","../../../../libs/cdk/src/lib/utils/functions/is-compact-density.ts","../../../../libs/cdk/src/lib/utils/tokens/module-deprecations.token.ts","../../../../libs/cdk/src/lib/utils/functions/module-deprecations-provider.ts","../../../../libs/cdk/src/lib/utils/functions/consumer-provider-factory.ts","../../../../libs/cdk/src/lib/utils/functions/get-document-font-size.ts","../../../../libs/cdk/src/lib/utils/functions/is-odd.ts","../../../../libs/cdk/src/lib/utils/directives/only-digits/only-digits.directive.ts","../../../../libs/cdk/src/lib/utils/directives/only-digits/only-digits.module.ts","../../../../libs/cdk/src/lib/utils/directives/overflow-list/overflow-list-item.directive.ts","../../../../libs/cdk/src/lib/utils/directives/overflow-list/overflow-list.directive.ts","../../../../libs/cdk/src/lib/utils/directives/overflow-list/overflow-list.module.ts","../../../../libs/cdk/src/lib/utils/directives/repeat/repeat.directive.ts","../../../../libs/cdk/src/lib/utils/directives/repeat/repeat.module.ts","../../../../libs/cdk/src/lib/utils/directives/resize/resize-handle.directive.ts","../../../../libs/cdk/src/lib/utils/directives/resize/resize.directive.ts","../../../../libs/cdk/src/lib/utils/directives/resize/resize.module.ts","../../../../libs/cdk/src/lib/utils/directives/template/template.directive.ts","../../../../libs/cdk/src/lib/utils/directives/template/template.module.ts","../../../../libs/cdk/src/lib/utils/directives/truncate/truncate.directive.ts","../../../../libs/cdk/src/lib/utils/directives/truncate/truncate.module.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-item/focusable-item.tokens.ts","../../../../libs/cdk/src/lib/utils/typecheck.ts","../../../../libs/cdk/src/lib/utils/helpers/range-selector.ts","../../../../libs/cdk/src/lib/utils/helpers/get-native-element.ts","../../../../libs/cdk/src/lib/utils/helpers/destroy-observable.ts","../../../../libs/cdk/src/lib/utils/helpers/warn-once.ts","../../../../libs/cdk/src/lib/utils/services/content-density.service.ts","../../../../libs/cdk/src/lib/utils/services/destroyed.service.ts","../../../../libs/cdk/src/lib/utils/services/focus-trap.service.ts","../../../../libs/cdk/src/lib/utils/services/keyboard-support/keyboard-support.service.ts","../../../../libs/cdk/src/lib/utils/services/local-storage.service.ts","../../../../libs/cdk/src/lib/utils/services/resize-observer.service.ts","../../../../libs/cdk/src/lib/utils/services/observers/attribute.observer.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-item/is-element-focusable-by-default.ts","../../../../libs/cdk/src/lib/utils/directives/disabled/disabled.observer.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-item/focusable.observer.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-item/focusable-item.directive.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-item/focusable-item.module.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-item/is-item-focusable.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-list/focusable-list.tokens.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-list/scroll.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-item/get-item-element.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-list/focusable-list.directive.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-list/focusable-list.module.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-grid/focusable-grid.tokens.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-grid/focusable-grid.directive.ts","../../../../libs/cdk/src/lib/utils/directives/focusable-grid/focusable-grid.module.ts","../../../../libs/cdk/src/lib/utils/directives/readonly/fdk-readonly.token.ts","../../../../libs/cdk/src/lib/utils/directives/readonly/set-readonly-state.ts","../../../../libs/cdk/src/lib/utils/directives/readonly/readonly-behavior.directive.ts","../../../../libs/cdk/src/lib/utils/directives/readonly/readonly-behavior.module.ts","../../../../libs/cdk/src/lib/utils/directives/readonly/readonly.observer.ts","../../../../libs/cdk/src/lib/utils/directives/readonly/default-readonly-view-modifier.ts","../../../../libs/cdk/src/lib/utils/directives/readonly/fdk-readonly-provider.service.ts","../../../../libs/cdk/src/lib/utils/directives/disabled/set-disabled-state.ts","../../../../libs/cdk/src/lib/utils/directives/disabled/fdk-disabled.token.ts","../../../../libs/cdk/src/lib/utils/directives/clicked/clicked.directive.ts","../../../../libs/cdk/src/lib/utils/directives/clicked/clicked-event.plugin.ts","../../../../libs/cdk/src/lib/utils/directives/clicked/clicked-behavior.module.ts","../../../../libs/cdk/src/lib/utils/directives/clicked/fdk-clicked-provider.service.ts","../../../../libs/cdk/src/lib/utils/directives/disabled/disabled-behavior.directive.ts","../../../../libs/cdk/src/lib/utils/directives/disabled/disabled-behavior.module.ts","../../../../libs/cdk/src/lib/utils/directives/disabled/default-disabled-view-modifier.ts","../../../../libs/cdk/src/lib/utils/directives/disabled/fdk-disabled-provider.service.ts","../../../../libs/cdk/src/lib/utils/directives/selectable-list/selection.service.ts","../../../../libs/cdk/src/lib/utils/directives/selectable-list/select-component-root.token.ts","../../../../libs/cdk/src/lib/utils/directives/selectable-list/selectable-item.token.ts","../../../../libs/cdk/src/lib/utils/decorators/setter-alternator.ts","../../../../libs/cdk/src/lib/utils/decorators/coerce-boolean.ts","../../../../libs/cdk/src/lib/utils/directives/selectable-list/selectable-list.directive.ts","../../../../libs/cdk/src/lib/utils/directives/selectable-list/selectable-list.tokens.ts","../../../../libs/cdk/src/lib/utils/directives/selectable-list/selectable-item.directive.ts","../../../../libs/cdk/src/lib/utils/directives/selectable-list/selectable-list.module.ts","../../../../libs/cdk/src/lib/utils/directives/breakpoints/responsive-breakpoints.ts","../../../../libs/cdk/src/lib/utils/directives/breakpoints/breakpoint.directive.ts","../../../../libs/cdk/src/lib/utils/directives/intersection-spy/intersection-spy.directive.ts","../../../../libs/cdk/src/lib/utils/async-strategy/function-strategy.class.ts","../../../../libs/cdk/src/lib/utils/async-strategy/observable-strategy.class.ts","../../../../libs/cdk/src/lib/utils/async-strategy/promise-strategy.class.ts","../../../../libs/cdk/src/lib/utils/async-strategy/value-strategy.class.ts","../../../../libs/cdk/src/lib/utils/async-strategy/select-strategy.class.ts","../../../../libs/cdk/src/lib/utils/drag-and-drop/tokens.ts","../../../../libs/cdk/src/lib/utils/drag-and-drop/dnd-list/dnd-list.directive.ts","../../../../libs/cdk/src/lib/utils/drag-and-drop/dnd-item/dnd-item.directive.ts","../../../../libs/cdk/src/lib/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.ts","../../../../libs/cdk/src/lib/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.ts","../../../../libs/cdk/src/lib/utils/drag-and-drop/drag-and-drop.module.ts","../../../../libs/cdk/src/lib/utils/utils.module.ts","../../../../libs/cdk/src/lib/utils/coercion/array.ts","../../../../libs/cdk/src/lib/utils/consts/error-messages.ts","../../../../libs/cdk/src/lib/utils/consts/unicode-letters.regex.ts","../../../../libs/cdk/src/lib/utils/consts/unicode-numbers.regex.ts","../../../../libs/cdk/src/lib/utils/consts/overflow-priority-score.ts","../../../../libs/cdk/src/lib/utils/interfaces/has-element-ref.interface.ts","../../../../libs/cdk/src/lib/utils/decorators/apply-css-class.decorator.ts","../../../../libs/cdk/src/lib/utils/decorators/apply-css-style.decorator.ts","../../../../libs/cdk/src/lib/utils/decorators/coerce-css-pixel.ts","../../../../libs/cdk/src/lib/utils/components/dynamic-portal/dynamic-portal.component.ts","../../../../libs/cdk/src/lib/utils/dynamic-component/dynamic-component-container.ts","../../../../libs/cdk/src/lib/utils/dynamic-component/dynamic-component-injector.ts","../../../../libs/cdk/src/lib/utils/dynamic-component/dynamic-component.service.ts","../../../../libs/cdk/src/lib/utils/list-item/list-item-utils.ts","../../../../libs/cdk/src/lib/utils/abstract-fd-ngx-class.ts","../../../../libs/cdk/src/lib/utils/pipes/displayFn.pipe.ts","../../../../libs/cdk/src/lib/utils/pipes/filter-strings.pipe.ts","../../../../libs/cdk/src/lib/utils/pipes/is-compact.pipe.ts","../../../../libs/cdk/src/lib/utils/pipes/async-or-sync.pipe.ts","../../../../libs/cdk/src/lib/utils/pipes/search-highlight.pipe.ts","../../../../libs/cdk/src/lib/utils/pipes/two-digits.pipe.ts","../../../../libs/cdk/src/lib/utils/pipes/safe.pipe.ts","../../../../libs/cdk/src/lib/utils/pipes/value-by-path.pipe.ts","../../../../libs/cdk/src/lib/utils/pipes/truncate.pipe.ts","../../../../libs/cdk/src/lib/utils/pipes/make-async.pipe.ts","../../../../libs/cdk/src/lib/utils/pipes/pipe.module.ts","../../../../libs/cdk/src/lib/utils/toast/base-toast.service.ts","../../../../libs/cdk/src/lib/utils/toast/base-toast-positions.ts","../../../../libs/cdk/src/lib/utils/toast/base-toast-animations.ts","../../../../libs/cdk/src/lib/utils/toast/classes/base-toast-ref.ts","../../../../libs/cdk/src/lib/utils/toast/classes/base-toast-config.ts","../../../../libs/cdk/src/lib/utils/toast/classes/base-toast-overlay-container.ts","../../../../libs/cdk/src/lib/utils/toast/classes/base-toast-container.component.ts","../../../../libs/cdk/src/lib/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-ref.ts","../../../../libs/cdk/src/lib/utils/toast/classes/action-dismissible/base-toast-action-dismissible-ref.ts","../../../../libs/cdk/src/lib/utils/toast/classes/base-toast-animated-container.component.ts","../../../../libs/cdk/src/lib/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-container.component.ts","../../../../libs/cdk/src/lib/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible.service.ts","../../../../libs/cdk/src/lib/utils/toast/classes/duration-dismissible/base-toast-duration-dismissible-config.ts","../../../../libs/cdk/src/lib/utils/deprecated-selector.class.ts","../../../../libs/cdk/src/lib/utils/fundamental-ngx-cdk-utils.ts"],"sourcesContent":["import { BehaviorSubject } from 'rxjs';\nimport { Optional, Injectable, Inject, InjectionToken } from '@angular/core';\n\nconst DefaultRtlLanguages = ['ar', 'arc', 'dv', 'fa', 'ha', 'he', 'khw', 'ks', 'ku', 'ps', 'ur', 'yi'];\nexport const RTL_LANGUAGE = new InjectionToken<string[]>('RtlLanguage');\n\n@Injectable()\n/**\n * Service taking care of RTL trough behavior subject\n * language list is used to determine if rtl should be enabled at start\n * user can overwrite default languages by using injection token RtlLanguageToken\n */\nexport class RtlService {\n /** RTL value */\n rtl: BehaviorSubject<boolean>;\n\n /** @hidden */\n constructor(@Optional() @Inject(RTL_LANGUAGE) injectedRtlLanguages: string[]) {\n injectedRtlLanguages = injectedRtlLanguages || DefaultRtlLanguages;\n\n const filtered = injectedRtlLanguages.filter((language) => navigator.language.includes(language));\n\n this.rtl = new BehaviorSubject(filtered.length > 0);\n }\n}\n","import { isDevMode } from '@angular/core';\nimport {\n A,\n ALT,\n BACKSPACE,\n C,\n CONTROL,\n DASH,\n DELETE,\n DOWN_ARROW,\n END,\n ENTER,\n MAC_ENTER,\n ESCAPE,\n F2,\n HOME,\n LEFT_ARROW,\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';\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]);\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'): 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 }\n }\n\n if (isDevMode()) {\n throw new Error(`Invalid function arguments.`);\n }\n\n return false;\n }\n}\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { BACKSPACE, CONTROL, DELETE, ENTER, ESCAPE, LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { KeyUtil } from '../../functions/key-util';\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 constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n handleKeyboardEvent(event: KeyboardEvent): void {\n if (this.enable) {\n if (KeyUtil.isKeyCode(event, this._stopKeys)) {\n this._elementRef.nativeElement.value = this.inputText;\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) && this.inputText) {\n /** Prevention from triggering typeahead, when having crtl/cmd + keys */\n if (!this._triggerTypeAhead()) {\n return;\n }\n\n this.oldValue = this.inputText;\n\n const item = this.options.find((option) =>\n this.displayFn(option).toLocaleLowerCase().startsWith(this.inputText.toLocaleLowerCase())\n );\n\n if (item) {\n this._typeahead(this.displayFn(item));\n }\n }\n }\n this.lastKeyUpEvent = event;\n }\n\n /** @hidden */\n private _typeahead(displayedValue: string): void {\n this._elementRef.nativeElement.value = displayedValue;\n const selectionStartIndex = this.inputText.length;\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 if (\n this.lastKeyUpEvent &&\n KeyUtil.isKeyCode(this.lastKeyUpEvent, CONTROL) &&\n this.inputText === this.oldValue\n ) {\n return false;\n } else {\n return true;\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@NgModule({\n imports: [AutoCompleteDirective],\n exports: [AutoCompleteDirective],\n declarations: []\n})\nexport class AutoCompleteModule {}\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 ContentChildren,\n Directive,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n QueryList,\n SimpleChanges\n} from '@angular/core';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\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 standalone: true\n})\nexport class FocusKeyManagerListDirective implements OnChanges, AfterContentInit, OnDestroy {\n /** Orientation for the FocusKeyManager */\n @Input()\n orientation: 'horizontal' | 'vertical';\n\n /** Skip predicate for the FocusKeyManager */\n @Input()\n skipPredicate: (item: Record<any, any> & FocusableOption) => boolean;\n\n /** @hidden */\n @ContentChildren(FOCUSABLE_ITEM)\n readonly _items: QueryList<FocusableOption>;\n\n /** @hidden */\n get focusKeyManager(): FocusKeyManager<FocusableOption> {\n return this._focusKeyManager;\n }\n\n /** @hidden */\n private _focusKeyManager: FocusKeyManager<FocusableOption>;\n\n /** @hidden */\n private readonly _onDestroy$ = new Subject<void>();\n\n /** @hidden */\n constructor(@Optional() private readonly _rtlService: RtlService, private readonly _cdr: ChangeDetectorRef) {}\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<FocusableOption>(this._items).skipPredicate(this.skipPredicate);\n\n this._applyOrientation();\n\n this._cdr.detectChanges();\n\n this._rtlService?.rtl\n .pipe(\n filter(() => this.orientation === 'horizontal'),\n takeUntil(this._onDestroy$)\n )\n .subscribe(() => this._applyOrientation());\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n this._focusKeyManager.destroy();\n }\n\n /** Focus certain list's item */\n focusItem(item: number | FocusableOption): 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._rtlService?.rtl.value ? '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 { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { 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()\n set initialFocus(value: BooleanInput) {\n this._initialFocus = coerceBooleanProperty(value);\n }\n\n /** @hidden */\n @Input()\n @HostBinding('attr.tabindex')\n get _tabindex(): number {\n if (this._initialFocus) {\n return 0;\n }\n\n return this.nativeElement?.tabIndex ?? -1;\n }\n\n /** @hidden */\n private _initialFocus = false;\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(private readonly _list: FocusKeyManagerListDirective, private readonly _elRef: ElementRef) {}\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@NgModule({\n imports: [FocusKeyManagerItemDirective, FocusKeyManagerListDirective],\n exports: [FocusKeyManagerItemDirective, FocusKeyManagerListDirective]\n})\nexport class FocusKeyManagerHelpersModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const IgnoreClickOnSelectionDirectiveToken = new InjectionToken('Ignore click on selection directive');\n","import { Directive, ElementRef, HostListener, Inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\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(@Inject(DOCUMENT) private document: Document, private _elementRef: ElementRef<HTMLElement>) {}\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@NgModule({\n imports: [IgnoreClickOnSelectionDirective],\n exports: [IgnoreClickOnSelectionDirective]\n})\nexport class IgnoreClickOnSelectionModule {}\n","import { InteractivityChecker } from '@angular/cdk/a11y';\nimport { DOCUMENT } from '@angular/common';\nimport { 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 { AfterViewInit, DestroyRef, Directive, ElementRef, inject, Input, NgZone } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { distinctUntilChanged, filter, take } from 'rxjs/operators';\nimport { TabbableElementService } from '../../services/tabbable-element.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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 _enabled$ = new BehaviorSubject<boolean>(true);\n\n /** @hidden */\n constructor(\n private _elmRef: ElementRef<HTMLElement>,\n private _ngZone: NgZone,\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 this._executeOnEmpty(() => this._focus());\n });\n }\n\n /**\n * @hidden\n * Executes a function when the zone is stable.\n */\n private _executeOnEmpty(fn: () => any): void {\n if (!this._ngZone.hasPendingMicrotasks) {\n fn();\n } else {\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(fn);\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@NgModule({\n imports: [InitialFocusDirective],\n exports: [InitialFocusDirective]\n})\nexport class InitialFocusModule {}\n","import { inject, InjectionToken } from '@angular/core';\nimport { map, Observable } from 'rxjs';\nimport { ViewportRuler } from '@angular/cdk/overlay';\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","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n Output,\n Renderer2\n} from '@angular/core';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { Nullable } from '../../models/nullable';\nimport { ViewportSizeObservable } from '../../tokens/viewport-size.observable';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n selector: '[fdkLineClampTarget], [fdLineClampTarget], [fd-lineclamp-target]',\n exportAs: 'fdLineClampTarget',\n standalone: true\n})\nexport class LineClampTargetDirective implements OnChanges, AfterViewInit {\n /**\n * Target text for clamping\n */\n @Input()\n fdLineClampTargetText: string;\n\n /**\n * Event with target instance for clamping\n */\n @Output() update = new EventEmitter<LineClampTargetDirective>();\n\n /** @hidden */\n constructor(private readonly _elementRef: ElementRef) {}\n\n /**\n * Native element of clamping target\n */\n get targetElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.update.emit(this);\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.update.emit(this);\n }\n}\n\n@Directive({\n selector: '[fdkLineClamp]',\n exportAs: 'fdLineClamp',\n standalone: true\n})\nexport class LineClampDirective implements OnChanges, AfterViewInit {\n /**\n * Count lines for clamping\n */\n @Input()\n set fdLineClampLines(value: Nullable<number>) {\n this._lineCount = coerceNumberProperty(value);\n }\n\n /**\n * Clamping state\n */\n @Input()\n fdLineclampState = false;\n\n /**\n * Event return count of lines from the target\n */\n @Output()\n lineCountUpdate = new EventEmitter<number>();\n\n /** @hidden */\n private _lineClampTarget: HTMLElement;\n /** @hidden */\n private _originalText: string;\n\n /** @hidden */\n private _isNativeSupport = true;\n\n /** @hidden */\n private _lineCount: number;\n\n /** @hidden */\n private viewportSize$ = inject(ViewportSizeObservable);\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\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 private readonly _elementRef: ElementRef,\n private readonly _renderer: Renderer2,\n private readonly _cdRef: ChangeDetectorRef\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._isNativeSupport = typeof this.rootElement.style.webkitLineClamp !== 'undefined';\n\n // need to use setTimeout to force recheck of parent elements\n setTimeout(() => {\n this._checkLineCount();\n });\n\n this.viewportSize$\n .pipe(distinctUntilChanged(), debounceTime(200), takeUntilDestroyed(this._destroyRef))\n .subscribe({\n next: () => this._checkLineCount()\n });\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.reset();\n this.refreshClamp();\n }\n\n /** @hidden */\n reset(): void {\n if (this._lineClampTarget && this._originalText) {\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 refreshClamp(): void {\n if (this.fdLineclampState && this._lineCount) {\n this.native();\n if (!this._isNativeSupport) {\n this._truncate();\n }\n }\n }\n\n /** @hidden\n * Truncate text in the target box, if browser not support lineclamp style\n */\n private _truncate(): void {\n if (!this._lineClampTarget) {\n return;\n }\n const lineClampHeight = Math.ceil(this.getLineHeight() * this._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 native(): 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', `${this._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 let height = parseInt(style.getPropertyValue('height'), 10);\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 padding_top = parseInt(style.getPropertyValue('padding-top'), 10);\n const padding_bottom = parseInt(style.getPropertyValue('padding-bottom'), 10);\n const border_top = parseInt(style.getPropertyValue('border-top-width'), 10);\n const border_bottom = parseInt(style.getPropertyValue('border-bottom-width'), 10);\n height = height - padding_top - padding_bottom - border_top - border_bottom;\n }\n this.refreshClamp();\n this.lineCountUpdate.emit(Math.ceil(height / lineHeight));\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { LineClampTargetDirective, LineClampDirective } from './line-clamp.directive';\n\n@NgModule({\n imports: [LineClampTargetDirective, LineClampDirective],\n exports: [LineClampTargetDirective, LineClampDirective]\n})\nexport class LineClampModule {}\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","/** 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","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","/**\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","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","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","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","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","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","/** 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","/**\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 BACKSPACE,\n C,\n DASH,\n DELETE,\n END,\n ENTER,\n ESCAPE,\n HOME,\n LEFT_ARROW,\n NUMPAD_MINUS,\n RIGHT_ARROW,\n TAB,\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\n KeyUtil.isKeyCode(e, [DELETE, BACKSPACE, TAB, ESCAPE, ENTER, END, HOME, LEFT_ARROW, RIGHT_ARROW]) ||\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@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 Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n Output,\n QueryList\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { OverflowListItemDirective } from './overflow-list-item.directive';\nimport { ViewportRuler } from '@angular/cdk/overlay';\n\n@Directive({\n selector: '[fdkOverflowList]',\n standalone: true\n})\nexport class OverflowListDirective implements AfterViewInit, OnDestroy {\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 _onDestroy$ = new Subject<void>();\n\n /** @hidden */\n constructor(private _el: ElementRef, private _viewportRuler: ViewportRuler, private _ngZone: NgZone) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._viewportRuler\n .change(50)\n .pipe(takeUntil(this._onDestroy$))\n // ViewportRuler invoked out of zone, that is why I need to invoke function in zone\n .subscribe(() => this._ngZone.run(() => this._calculateAmountOfOverflowedItems()));\n\n this._calculateAmountOfOverflowedItems();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\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 =\n this._el.nativeElement.clientWidth -\n parseFloat(computed.paddingLeft || '0') -\n parseFloat(computed.paddingRight || '0');\n return this._checkWidthWithOffset(elements, contentWidth);\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 : 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 { OverflowListDirective } from './overflow-list.directive';\nimport { OverflowListItemDirective } from './overflow-list-item.directive';\n\n@NgModule({\n imports: [OverflowListDirective, OverflowListItemDirective],\n exports: [OverflowListDirective, OverflowListItemDirective]\n})\nexport class OverflowListModule {}\n","import { Directive, Input, OnChanges, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core';\n\n/**\n * Directive to repeatably render template N times.\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@NgModule({\n imports: [RepeatDirective],\n exports: [RepeatDirective]\n})\nexport class RepeatModule {}\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 AfterContentInit,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport { ResizeHandleDirective } from './resize-handle.directive';\nimport { fromEvent, merge, Observable, Subscription } from 'rxjs';\nimport { filter, map, mapTo, pairwise, takeUntil, tap } from 'rxjs/operators';\nimport { RtlService } from '../../services/rtl.service';\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, AfterContentInit, 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 // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('fdkResizeDisabled') disabled = false;\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 }) resizeHandleReference;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _isRtl = false;\n\n /** @hidden */\n constructor(private _elementRef: ElementRef<HTMLElement>, @Optional() private _rtlService: RtlService) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['disabled']) {\n if (changes['disabled'].previousValue === false && changes['disabled'].currentValue === true) {\n this._subscriptions.unsubscribe();\n } else if (changes['disabled'].previousValue === true && changes['disabled'].currentValue === false) {\n this._setResizeListeners();\n }\n }\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n if (this._rtlService) {\n this._subscriptions.add(this._rtlService.rtl.subscribe((isRtl) => (this._isRtl = isRtl)));\n }\n\n if (!this.disabled) {\n this._setResizeListeners();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n private get _direction(): number {\n return this._isRtl ? -1 : 1;\n }\n\n /** @hidden Sets Resize listeners */\n private _setResizeListeners(): void {\n const resize = this._getResizeFunction();\n const moveOffset = this._getMoveOffsetFunction();\n const resizeContainer = this._findResizeContainer();\n if (!resizeContainer) {\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(mouseDownEvent$.pipe(mapTo(true)), mouseUpEvent$.pipe(mapTo(false)));\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._subscriptions.add(setupResize$.subscribe());\n this._subscriptions.add(emitResizableEvents$.subscribe());\n this._subscriptions.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 x = (event2.screenX - event1.screenX) * this._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 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.querySelector('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 map((isActive) => (isActive ? 'none' : 'auto')),\n tap((value) => (this._elementRef.nativeElement.style.pointerEvents = value))\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ResizeDirective } from './resize.directive';\nimport { ResizeHandleDirective } from './resize-handle.directive';\n\n@NgModule({\n imports: [ResizeDirective, ResizeHandleDirective],\n exports: [ResizeDirective, ResizeHandleDirective]\n})\nexport class ResizeModule {}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[fdkTemplate]',\n standalone: true\n})\nexport class TemplateDirective {\n /** Name of the template */\n @Input('fdkTemplate')\n name: string;\n\n /** @hidden */\n constructor(public templateRef: TemplateRef<any>) {}\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@NgModule({\n imports: [TemplateDirective],\n exports: [TemplateDirective]\n})\nexport class TemplateModule {}\n","import { AfterViewInit, Directive, ElementRef, Input, OnChanges } from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Nullable } from '../../models/nullable';\n\n@Directive({\n selector: '[fdkTruncate]',\n standalone: true\n})\nexport class TruncateDirective implements OnChanges, AfterViewInit {\n /**\n * Width in pixel for truncation of an element , by default\n */\n @Input()\n set fdkTruncateWidth(value: Nullable<number>) {\n this._customWidthCount = coerceNumberProperty(value);\n }\n\n /**\n * Truncating state\n */\n @Input()\n fdkTruncateState = false;\n\n /** @hidden */\n private _customWidthCount = 200;\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 takeDefaultStyleOnce = true;\n\n /** @hidden\n * truncation style for truncating element\n */\n private _truncationStyle: string;\n\n /** @hidden */\n constructor(private readonly _elementRef: ElementRef) {}\n\n /**\n * Root native element\n */\n get rootElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /**\n * Method saves default style of target element before first truncate.\n */\n setDefaultStyle(): void {\n if (this.takeDefaultStyleOnce) {\n this._defaultStyle = this._truncateTarget.style.cssText;\n this.takeDefaultStyleOnce = false;\n }\n }\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.rootElement) {\n this._truncate();\n }\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this._truncate();\n }\n\n /** @hidden */\n private _truncate(): void {\n this._truncateTarget = this.rootElement;\n\n if (!this._truncateTarget) {\n return;\n }\n this.setDefaultStyle();\n this._truncationStyle = `${this._defaultStyle} max-width: ${this._customWidthCount}px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;`;\n this._truncateTarget.style.cssText = this.fdkTruncateState ? this._truncationStyle : this._defaultStyle;\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { TruncateDirective } from './truncate.directive';\n\n@NgModule({\n imports: [TruncateDirective],\n exports: [TruncateDirective]\n})\nexport class TruncateModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_FOCUSABLE_ITEM_DIRECTIVE = new InjectionToken('Focusable directive token');\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/ban-types\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/ban-types\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","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 { 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","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 { ContentDensity } from '../interfaces/content-density';\nimport { warnOnce } from '../helpers';\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, OnDestroy } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { warnOnce } from '../helpers';\n\n/**\n * @deprecated Use Angular's built-in `DestroyRef` and `takeUntilDestroyed` instead.\n * Will be removed in next release\n */\n@Injectable()\nexport class DestroyedService extends ReplaySubject<void> implements OnDestroy {\n /** @hidden */\n constructor() {\n super(1);\n warnOnce(\n `DestroyedService is deprecated. Use Angular's built-in 'DestroyRef' and 'takeUntilDestroyed' instead.`\n );\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.next();\n this.complete();\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 { Injectable, QueryList } from '@angular/core';\nimport { KeyboardSupportItemInterface } from '../../interfaces/keyboard-support-item.interface';\nimport { merge, Subject } from 'rxjs';\nimport { filter, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { KeyUtil } from '../../functions';\nimport { DOWN_ARROW, hasModifierKey, TAB, UP_ARROW } from '@angular/cdk/keycodes';\n\nexport type FocusEscapeDirection = 'up' | 'down';\n\n@Injectable({ providedIn: 'root' })\nexport class KeyboardSupportService<T> {\n /** Subject that is thrown, when focus escapes the list */\n focusEscapeList = new Subject<FocusEscapeDirection>();\n\n /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\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 private _itemList: QueryList<KeyboardSupportItemInterface & T>;\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._itemList = queryList;\n this._tabKeyNavigation = tabKeyNavigation;\n this._keyManager = new FocusKeyManager(queryList).withWrap(wrap).withHomeAndEnd();\n queryList.changes\n .pipe(takeUntil(this._onDestroy$), startWith(0))\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 onDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\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 listItem.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$, this._onDestroy$);\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","import { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Observer, Subject } from 'rxjs';\nimport { coerceElement } from '@angular/cdk/coercion';\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","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { MutationObserverFactory } from '@angular/cdk/observers';\nimport { Observable, Observer, Subject } from 'rxjs';\nimport { ElementRef, Injectable, OnDestroy } from '@angular/core';\nimport { HasElementRef } from '../../interfaces/has-element-ref.interface';\nimport { getNativeElement } from '../../helpers/get-native-element';\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 { ElementRef } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { HasElementRef } from '../../interfaces';\nimport { getNativeElement } from '../../helpers/get-native-element';\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 } 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 constructor(private _attributeObserver: 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, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\nimport { isElementFocusableByDefault } from './is-element-focusable-by-default';\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';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FocusableObserver {\n /** @hidden */\n constructor(private _attributeObserver: 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 { DOCUMENT } from '@angular/common';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n NgZone,\n Output\n} from '@angular/core';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ENTER, ESCAPE, F2, MAC_ENTER } from '@angular/cdk/keycodes';\nimport { FDK_FOCUSABLE_ITEM_DIRECTIVE } from './focusable-item.tokens';\nimport { TabbableElementService } from '../../services';\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { FocusableObserver } from './focusable.observer';\nimport { fromEvent, Subject } from 'rxjs';\nimport { Nullable } from '../../models/nullable';\nimport { KeyUtil } from '../../functions';\nimport { FocusableItem } from './focusable.item';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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 standalone: true,\n providers: [\n {\n provide: FDK_FOCUSABLE_ITEM_DIRECTIVE,\n useExisting: FocusableItemDirective\n }\n ]\n})\nexport class FocusableItemDirective implements FocusableItem {\n /** Whether the item is focusable. Default is true. */\n @Input()\n set fdkFocusableItem(val: BooleanInput) {\n this._focusable = coerceBooleanProperty(val);\n this.setTabbable(this._focusable);\n }\n\n get fdkFocusableItem(): boolean {\n return this._focusable;\n }\n\n /** Function, which returns a string to be announced by screen-reader whenever an item which is in grid receives focus. */\n @Input()\n cellFocusedEventAnnouncer: CellFocusedEventAnnouncer = this._defaultItemFocusedEventAnnouncer;\n\n /** Event emitted when the cell receives focus, not being emitted when focus moves between item's children. */\n @Output()\n readonly cellFocused = new EventEmitter<FocusableItemPosition>();\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 @HostBinding('attr.tabindex')\n get _tabindex(): number {\n return this._tabbable ? 0 : -1;\n }\n\n /** @hidden */\n protected readonly _destroyRef = inject(DestroyRef);\n /** @hidden */\n protected readonly _zone = inject(NgZone);\n\n /** @hidden */\n private _focusable = true;\n\n /** @hidden */\n private _tabbableElements = new Map<HTMLElement, number>();\n\n /** @hidden */\n private _tabbable = true;\n /** @hidden */\n private _timerId: ReturnType<typeof setTimeout> | null;\n /** @hidden */\n private readonly _focusableObserver = inject(FocusableObserver);\n /** @hidden */\n private readonly _tabbableElementService = inject(TabbableElementService);\n /** @hidden */\n private readonly _liveAnnouncer = inject(LiveAnnouncer);\n\n /** @hidden */\n private readonly _document = inject(DOCUMENT);\n\n /** @hidden */\n constructor() {\n this._focusableObserver\n .observe(this.elementRef, false)\n .pipe(takeUntilDestroyed())\n .subscribe((isFocusable) => {\n if (!isFocusable && isFocusable !== this.fdkFocusableItem) {\n this.fdkFocusableItem = isFocusable;\n }\n });\n\n this._zone.runOutsideAngular(() => {\n fromEvent(this.elementRef.nativeElement, 'focusin')\n .pipe(takeUntilDestroyed())\n .subscribe(async () => {\n await this._onFocusin();\n });\n\n fromEvent(this.elementRef.nativeElement, 'focusout')\n .pipe(takeUntilDestroyed())\n .subscribe(() => {\n this._onFocusout();\n });\n\n fromEvent<KeyboardEvent>(this.elementRef.nativeElement, 'keydown')\n .pipe(takeUntilDestroyed())\n .subscribe((event) => {\n this._onKeydown(event);\n });\n });\n }\n\n /** @hidden */\n element = (): HTMLElement => this.elementRef.nativeElement;\n\n /** @hidden */\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\n if (state) {\n this._enableTabbableElements();\n } else {\n this._disableTabbableElements();\n }\n }\n\n /** @hidden */\n private async _onFocusin(): Promise<void> {\n if (!this.fdkFocusableItem) {\n return;\n }\n\n if (this._timerId != null) {\n clearTimeout(this._timerId);\n this._timerId = null;\n return;\n }\n\n if (this._position) {\n this.cellFocused.next(this._position);\n\n if (this.cellFocusedEventAnnouncer) {\n this._liveAnnouncer.clear();\n await this._liveAnnouncer.announce(this.cellFocusedEventAnnouncer(this._position));\n }\n }\n }\n\n /** @hidden */\n private _onFocusout(): void {\n if (!this.fdkFocusableItem) {\n return;\n }\n\n // Timeout is needed to prevent focusout event from being emitted when focus moves between item's children.\n this._timerId = setTimeout(() => (this._timerId = null));\n }\n\n /** @hidden */\n private _onKeydown(event: KeyboardEvent): void {\n if (!this.fdkFocusableItem) {\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 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 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 _enableTabbableElements(): void {\n if (this._tabbableElements.size === 0) {\n return;\n }\n\n this._tabbableElements.forEach((tabIndex, element) => (element.tabIndex = tabIndex));\n this._tabbable = false;\n }\n\n /** @hidden */\n private _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 Array.from(this.elementRef.nativeElement.querySelectorAll<HTMLElement>('*'))\n .filter((elm) => elm.tabIndex >= 0)\n .forEach((elm) => {\n this._tabbableElements.set(elm, elm.tabIndex);\n elm.tabIndex = -1;\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@NgModule({\n imports: [FocusableItemDirective],\n exports: [FocusableItemDirective]\n})\nexport class FocusableItemModule {}\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 { InjectionToken } from '@angular/core';\n\nexport const FDK_FOCUSABLE_LIST_DIRECTIVE = new InjectionToken('Focusable list token');\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 (!position || !element) {\n return;\n }\n\n const scrollableParent = getScrollParent(element);\n\n if (scrollableParent) {\n const itemOffsetTop = element.offsetTop - scrollableParent.offsetTop;\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 { FocusableItem } from './focusable.item';\n\n/**\n * Returns the element of the item.\n * @param item\n */\nexport function getItemElement(item?: 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 { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges\n} from '@angular/core';\nimport { finalize, map, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { FocusableItemPosition } from '../focusable-item/focusable-item.directive';\nimport {\n FDK_FOCUSABLE_ITEM_DIRECTIVE,\n FocusableItem,\n FocusableListPosition,\n FocusableObserver,\n isItemFocusable\n} from '../focusable-item';\nimport { FDK_FOCUSABLE_LIST_DIRECTIVE } from './focusable-list.tokens';\nimport { merge, Subject } from 'rxjs';\nimport { Nullable } from '../../models/nullable';\nimport { FocusKeyManager, LiveAnnouncer } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { intersectionObservable, KeyUtil } from '../../functions';\nimport { ENTER, ESCAPE, F2, MAC_ENTER } from '@angular/cdk/keycodes';\nimport { scrollIntoView, ScrollPosition } from './scroll';\nimport { getItemElement } from '../focusable-item/get-item-element';\nimport { destroyObservable } from '../../helpers';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport interface FocusableListItemFocusedEvent {\n index: number;\n total: number;\n}\n\nexport interface FocusableListKeydownEvent {\n list: FocusableListDirective;\n event: KeyboardEvent;\n activeItemIndex: Nullable<number>;\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 providers: [\n {\n provide: FDK_FOCUSABLE_LIST_DIRECTIVE,\n useExisting: FocusableListDirective\n }\n ]\n})\nexport class FocusableListDirective implements OnChanges, AfterViewInit, OnDestroy {\n /** Whether the whole list should be focusable, handy in grids. */\n @Input()\n set focusable(value: BooleanInput) {\n this._focusable = coerceBooleanProperty(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 @Input()\n navigationDirection: 'horizontal' | 'vertical' | 'grid' = 'vertical';\n\n /** Direction of the content. */\n @Input()\n contentDirection: '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 @Input()\n wrap = false;\n\n /** Function, which returns a string to be announced by screen-reader whenever an row which is in grid receives focus. */\n @Input()\n listFocusedEventAnnouncer: (position: FocusableListPosition) => string = this._defaultListFocusedEventAnnouncer;\n\n /** Event emitted when list's item focused, contains item's position info. */\n @Output()\n readonly itemFocused = new EventEmitter<FocusableListItemFocusedEvent>();\n\n /** @hidden */\n @ContentChildren(FDK_FOCUSABLE_ITEM_DIRECTIVE, { descendants: true })\n readonly _projectedFocusableItems: QueryList<FocusableItem>;\n\n /** @hidden */\n get _focusableItems(): QueryList<FocusableItem> {\n return this._items ? this._items : this._projectedFocusableItems;\n }\n\n /** @hidden */\n _items: QueryList<FocusableItem> | undefined;\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 _isVisible = false;\n\n /** @hidden */\n protected readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n protected _focusable = false;\n\n /** @hidden */\n private _gridPosition: { rowIndex: number; totalRows: number };\n\n /** @hidden */\n private _keyManager?: FocusKeyManager<FocusableItem>;\n\n /** @hidden */\n private _tabbable = false;\n\n /** @hidden */\n private readonly _refreshItems$ = new Subject<void>();\n /** @hidden */\n private readonly _refresh$ = new Subject<void>();\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 _document = inject(DOCUMENT);\n\n /** @hidden */\n @HostBinding('attr.tabindex')\n get _tabindex(): number {\n return this._tabbable ? 0 : -1;\n }\n\n /** @hidden */\n constructor() {\n intersectionObservable(this._elementRef.nativeElement, { threshold: 0.25 })\n .pipe(takeUntilDestroyed())\n .subscribe((isVisible) => (this._isVisible = isVisible[0]?.isIntersecting));\n\n this._focusableObserver\n .observe(this._elementRef, false)\n .pipe(takeUntilDestroyed())\n .subscribe((isFocusable) => {\n if (!isFocusable && isFocusable !== this.focusable) {\n this.focusable = isFocusable;\n }\n });\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\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 @HostListener('focus')\n async _onFocus(): Promise<void> {\n if (this._gridPosition) {\n this._gridListFocused$.next(this._gridPosition);\n\n this._liveAnnouncer.clear();\n await this._liveAnnouncer.announce(this.listFocusedEventAnnouncer(this._gridPosition));\n\n this.setTabbable(true);\n }\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (!this._keyManager) {\n return;\n }\n\n if (changes['wrap']) {\n this._keyManager = this._keyManager.withWrap(changes['wrap'].currentValue);\n }\n\n if (changes['navigationDirection']) {\n this._updateNavigationDirection();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._listenOnItems();\n }\n\n /** Set items programmatically. */\n setItems(items: QueryList<FocusableItem>): void {\n this._items = items;\n this._listenOnItems();\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 this._focusableItems.find((item, itemIndex) => {\n if (itemIndex >= index && isItemFocusable(item)) {\n availableIndex = itemIndex;\n return true;\n }\n\n return false;\n });\n\n if (availableIndex != null) {\n scrollIntoView(getItemElement(this._focusableItems.get(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 = 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 this._focusableItems.forEach((item) => item.setTabbable(state));\n }\n\n /** @hidden */\n _setGridPosition(position: FocusableListPosition): void {\n this._gridPosition = position;\n\n this._focusableItems.changes\n .pipe(startWith(this._focusableItems), takeUntilDestroyed(this._destroyRef))\n .subscribe((items) =>\n items.forEach(\n (item, index) =>\n (item._position = {\n ...this._gridPosition,\n colIndex: index,\n totalCols: this._focusableItems.length\n })\n )\n );\n }\n\n /** @hidden */\n private _initializeFocusManager(items: 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 focusListenerDestroyers = items.map((item, index) =>\n this._renderer.listen(getItemElement(item), 'focus', () => {\n const directiveItem = this._focusableItems.get(index);\n if (!directiveItem) {\n return;\n }\n\n if (this._gridPosition) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._gridItemFocused$.next(directiveItem._position!);\n }\n\n this.itemFocused.next({ index, total: items.length });\n this._focusableItems.forEach((i) => i.setTabbable(i === directiveItem));\n this._keyManager?.setActiveItem(index);\n })\n );\n\n merge(...items.map((item) => item.keydown))\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(() => focusListenerDestroyers.forEach((d) => d()))\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 const refresh$ = merge(this._refresh$, destroyObservable(this._destroyRef));\n this._refresh$.next();\n this._focusableItems.changes\n .pipe(\n startWith(null),\n map(() => this._focusableItems.toArray()),\n tap((items: FocusableItem[]): void => {\n const direction = this.navigationDirection === 'grid' ? 'horizontal' : this.navigationDirection;\n\n this._initializeFocusManager(items, {\n direction,\n contentDirection: this.contentDirection,\n wrap: this.wrap\n });\n }),\n takeUntil(refresh$)\n )\n .subscribe();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FocusableListDirective } from './focusable-list.directive';\nimport { FocusableItemDirective } from '../focusable-item';\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 { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { 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 inject,\n Input,\n Output,\n QueryList\n} from '@angular/core';\nimport { merge, startWith, switchMap } from 'rxjs';\nimport { KeyUtil } from '../../functions';\nimport { Nullable } from '../../models/nullable';\nimport { FocusableItemPosition, FocusableListPosition } from '../focusable-item';\nimport { FDK_FOCUSABLE_LIST_DIRECTIVE, FocusableListDirective, ScrollPosition } from '../focusable-list';\nimport { findLastIndex } from 'lodash-es';\nimport { FDK_FOCUSABLE_GRID_DIRECTIVE } from './focusable-grid.tokens';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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()\n set wrapHorizontally(value: BooleanInput) {\n this._wrapHorizontally = coerceBooleanProperty(value);\n }\n\n get wrapHorizontally(): boolean {\n return this._wrapHorizontally;\n }\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 private _wrapHorizontally = false;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._focusableLists.changes\n .pipe(startWith(this._focusableLists), takeUntilDestroyed(this._destroyRef))\n .subscribe((lists) =>\n lists.forEach((list, index) =>\n list._setGridPosition({ rowIndex: index, totalRows: this._focusableLists.length })\n )\n );\n\n this._focusableLists.changes\n .pipe(\n startWith(this._focusableLists),\n switchMap((queryList: QueryList<FocusableListDirective>) =>\n merge(...queryList.toArray().map((list) => list._gridListFocused$))\n ),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((focusedEvent) => {\n this.rowFocused.emit(focusedEvent);\n\n this._focusableLists.forEach((list) => list.setTabbable(false));\n this._focusableLists.forEach((list) => list._setItemsTabbable(false));\n });\n\n this._focusableLists.changes\n .pipe(\n startWith(this._focusableLists),\n switchMap((queryList: QueryList<FocusableListDirective>) =>\n merge(...queryList.toArray().map((list) => list._gridItemFocused$))\n ),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((focusedEvent) => {\n this.itemFocused.emit(focusedEvent);\n\n this._focusableLists.forEach((list) => list.setTabbable(false));\n this._focusableLists.forEach((list) => list._setItemsTabbable(false));\n });\n\n this._focusableLists.changes\n .pipe(\n startWith(this._focusableLists),\n switchMap((queryList: QueryList<FocusableListDirective>) =>\n merge(...queryList.toArray().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 (!KeyUtil.isKeyCode(event, [UP_ARROW, DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, PAGE_DOWN, PAGE_UP])) {\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 isFirstItemLtr = activeItemIndex === 0 && this.contentDirection !== 'rtl';\n const isLastItemRtl = activeItemIndex === list._focusableItems.length - 1 && this.contentDirection === 'rtl';\n\n const isFirstItemRtl = activeItemIndex === 0 && this.contentDirection === 'rtl';\n const isLastItemLtr = activeItemIndex === list._focusableItems.length - 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 = findLastIndex(lists, (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","import { NgModule } from '@angular/core';\nimport { FocusableListModule } from '../focusable-list';\nimport { FocusableGridDirective } from './focusable-grid.directive';\n\n@NgModule({\n imports: [FocusableListModule, FocusableGridDirective],\n exports: [FocusableListModule, FocusableGridDirective]\n})\nexport class FocusableGridModule {}\n","import { InjectionToken } from '@angular/core';\n\nexport const FDK_READONLY_DIRECTIVE = new InjectionToken('Readonly 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 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 { AfterViewInit, DestroyRef, Directive, ElementRef, Input } from '@angular/core';\nimport { BehaviorSubject, ReplaySubject } from 'rxjs';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\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';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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()\n set fdkReadonly(value: BooleanInput) {\n this._readonlyInput$.next(coerceBooleanProperty(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(private _elementRef: ElementRef<HTMLElement>, private _destroyRef: DestroyRef) {\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@NgModule({\n imports: [ReadonlyBehaviorDirective],\n exports: [ReadonlyBehaviorDirective]\n})\nexport class ReadonlyBehaviorModule {}\n","import { ElementRef, Injectable } 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 constructor(private _attributeObserver: 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 { 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 { ElementRef, Inject, Injectable, NgZone, OnDestroy, Optional, Self, SkipSelf } from '@angular/core';\nimport { BehaviorSubject, combineLatest, firstValueFrom, Observable, ReplaySubject, Subject } from 'rxjs';\nimport { distinctUntilChanged, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { ReadonlyObserver } from './readonly.observer';\nimport { ReadonlyBehavior } from './readonly-behavior.interface';\nimport { DefaultReadonlyViewModifier } from './default-readonly-view-modifier';\nimport { ReadonlyViewModifier } from './readonly-view-modifier.interface';\nimport { FDK_READONLY_DIRECTIVE } from './fdk-readonly.token';\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[]> = new BehaviorSubject<\n ReadonlyViewModifier[]\n >(this._getInitialViewModifiers());\n\n /** @hidden */\n private _readonlyChange$: Observable<boolean> = this._getReadonlyChange$();\n\n /** @hidden */\n private readonly _destroy$ = new Subject<void>();\n\n /** @hidden */\n constructor(\n private ngZone: NgZone,\n private elementRef: ElementRef<Element>,\n private readonlyObserver: ReadonlyObserver,\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 combineLatest([this._readonlyChange$, this._viewModifiers$])\n .pipe(\n tap(([isReadonly]) => this.setReadonlyState(isReadonly)),\n takeUntil(this._destroy$)\n )\n .subscribe();\n this._readonlyChange$\n .pipe(\n tap((isDisabled) => (this.fdkReadonly = isDisabled)),\n tap((isDisabled) => this.next(isDisabled)),\n takeUntil(this._destroy$)\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 firstValueFrom(this.ngZone.onStable).then(() => {\n this._viewModifiers$.value.forEach((viewModifier) => viewModifier.setReadonlyState(isReadonly));\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.complete();\n this._destroy$.next();\n this._destroy$.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 takeUntil(this._destroy$)\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 takeUntil(this._destroy$)\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 { 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 { InjectionToken } from '@angular/core';\nimport { DisabledBehavior } from './disabled-behavior.interface';\n\nexport const FDK_DISABLED_DIRECTIVE = new InjectionToken<DisabledBehavior>('Disabled directive token');\n","import { Directive, EventEmitter, Output } from '@angular/core';\n\n@Directive({\n selector: '[fdkClicked]'\n})\nexport class ClickedDirective {\n /**\n * Event name.\n */\n static eventName = 'fdkClicked';\n /**\n * FdkClicked output. The sole purpose of the existence of this directive is to just silence Angular Language Service.\n * This is the only viable solution, since NO_ERRORS_SCHEMA silences everything and valuable exception might slip\n * through your eyes.\n */\n @Output() fdkClicked = new EventEmitter<MouseEvent | KeyboardEvent>();\n}\n","import { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { DOCUMENT } from '@angular/common';\nimport { ClickedDirective } from './clicked.directive';\n\ntype EventHandlerFunction = ($event: Event) => void;\ntype HandlerRemoveFunction = () => void;\n\n@Injectable()\nexport class ClickedEventPlugin {\n /** @hidden */\n constructor(@Inject(DOCUMENT) private document: Document, @Inject(PLATFORM_ID) private platformId: any) {}\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 { Inject, InjectionToken, isDevMode, ModuleWithProviders, NgModule } from '@angular/core';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\nimport { ClickedEventPlugin } from './clicked-event.plugin';\nimport { ClickedDirective } from './clicked.directive';\n\nconst ClickedBehaviorModuleForRootLoadedOnce = new InjectionToken<boolean>(\n 'Checking Module providers had been loaded',\n { factory: () => false }\n);\n\n@NgModule({\n declarations: [ClickedDirective],\n exports: [ClickedDirective]\n})\nexport class ClickedBehaviorModule {\n /** @hidden */\n constructor(@Inject(ClickedBehaviorModuleForRootLoadedOnce) clickedBehaviorModuleForRootLoadedOnce: boolean) {\n if (!clickedBehaviorModuleForRootLoadedOnce && isDevMode()) {\n console.warn(\n 'ClickedBehaviorModule.forRoot() was not called from RootModule, you will not be able to use (fdkClicked) events'\n );\n }\n }\n\n /** @hidden */\n static forRoot(): ModuleWithProviders<ClickedBehaviorModule> {\n return {\n ngModule: ClickedBehaviorModule,\n providers: [\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: ClickedEventPlugin,\n multi: true\n },\n {\n provide: ClickedBehaviorModuleForRootLoadedOnce,\n useValue: true\n }\n ]\n };\n }\n}\n","import { ElementRef, Inject, Injectable, OnDestroy, Renderer2 } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { EVENT_MANAGER_PLUGINS } from '@angular/platform-browser';\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 _elementRef: ElementRef<Element>,\n private _renderer: Renderer2,\n @Inject(EVENT_MANAGER_PLUGINS) private 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 { AfterViewInit, DestroyRef, Directive, ElementRef, Input } from '@angular/core';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { tap } from 'rxjs/operators';\nimport { BehaviorSubject, filter, ReplaySubject } from 'rxjs';\nimport { DisabledBehavior } from './disabled-behavior.interface';\nimport { setDisabledState } from './set-disabled-state';\nimport { FDK_DISABLED_DIRECTIVE } from './fdk-disabled.token';\nimport { DisabledViewModifier } from './disabled-view-modifier.interface';\nimport { FdkClickedProvider } from '../clicked';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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 AfterViewInit, DisabledBehavior, DisabledViewModifier\n{\n /** @hidden */\n @Input()\n set fdkDisabled(value: BooleanInput) {\n const val = coerceBooleanProperty(value);\n this._clicked.setPreventDefault(val);\n this._fdkDisableInput$.next(val);\n }\n\n get fdkDisabled(): boolean {\n return this._disabled;\n }\n\n /**\n * Whether to add `disabledClass` class to the element.\n */\n @Input()\n addDisabledClass = true;\n\n /**\n * Disabled css class to apply to the element.\n */\n @Input()\n disabledClass = 'is-disabled';\n\n /** @hidden */\n private _disabled = false;\n /** @hidden */\n private readonly _fdkDisableInput$ = new BehaviorSubject(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\n /** @hidden */\n setDisabledState = (isDisabled: boolean): void => {\n setDisabledState(this._elementRef, isDisabled, this.disabledClass, this.addDisabledClass);\n };\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._fdkDisableInput$\n .pipe(\n filter((isDisabled) => isDisabled !== this._disabled),\n tap((isDisabled) => {\n this.setDisabledState(isDisabled);\n this._disabled = isDisabled;\n this.next(isDisabled);\n }),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { DisabledBehaviorDirective } from './disabled-behavior.directive';\n\n@NgModule({\n imports: [DisabledBehaviorDirective],\n exports: [DisabledBehaviorDirective]\n})\nexport class DisabledBehaviorModule {}\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 { ElementRef, Inject, Injectable, NgZone, OnDestroy, Optional, Self, SkipSelf } from '@angular/core';\nimport { BehaviorSubject, combineLatest, firstValueFrom, Observable, ReplaySubject, Subject } from 'rxjs';\nimport { distinctUntilChanged, startWith, takeUntil, tap } from 'rxjs/operators';\nimport { FDK_DISABLED_DIRECTIVE } from './fdk-disabled.token';\nimport { DisabledObserver } from './disabled.observer';\nimport { DisabledBehavior } from './disabled-behavior.interface';\nimport { DisabledViewModifier } from './disabled-view-modifier.interface';\nimport { DefaultDisabledViewModifier } from './default-disabled-view-modifier';\n\n@Injectable()\nexport class FdkDisabledProvider extends ReplaySubject<boolean> implements DisabledBehavior, OnDestroy {\n /** @Hidden */\n fdkDisabled = false;\n /** @Hidden */\n private readonly _destroy$ = new Subject<void>();\n /** @hidden */\n private readonly _viewModifiers$: BehaviorSubject<DisabledViewModifier[]> = new BehaviorSubject<\n DisabledViewModifier[]\n >(this._getInitialViewModifiers());\n /** @hidden */\n private _disabledChange$: Observable<boolean> = this._getDisabledChange$();\n\n /** @hidden */\n constructor(\n private ngZone: NgZone,\n private elementRef: ElementRef<HTMLElement>,\n private disabledObserver: DisabledObserver,\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 combineLatest([this._disabledChange$, this._viewModifiers$])\n .pipe(\n tap(([isDisabled]) => this.setDisabledState(isDisabled)),\n takeUntil(this._destroy$)\n )\n .subscribe();\n this._disabledChange$\n .pipe(\n tap((isDisabled) => (this.fdkDisabled = isDisabled)),\n tap((isDisabled) => this.next(isDisabled)),\n takeUntil(this._destroy$)\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 firstValueFrom(this.ngZone.onStable).then(() => {\n this._viewModifiers$.value.forEach((viewModifier) => viewModifier.setDisabledState(isDisabled));\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.complete();\n this._destroy$.next();\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 takeUntil(this._destroy$)\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 takeUntil(this._destroy$)\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 { ChangeDetectorRef, Injectable, OnDestroy, QueryList } from '@angular/core';\nimport { coerceArray } from '@angular/cdk/coercion';\nimport { combineLatest, isObservable, merge, Observable, of, ReplaySubject, Subject, switchMap } from 'rxjs';\nimport { distinctUntilChanged, map, shareReplay, startWith, takeUntil, tap } from 'rxjs/operators';\nimport equal from 'fast-deep-equal';\nimport { SelectableItemToken } from './selectable-item.token';\nimport { SelectableListValueType, SelectComponentRootToken } from './select-component-root.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> implements OnDestroy {\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 _destroy$ = new Subject<void>();\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(equal),\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(takeUntil(this._destroy$)).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(this._destroy$, 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 ngOnDestroy(): void {\n this._destroy$.next();\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 } 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 setSelected(isSelected: boolean): void;\n\n abstract getSelected(): boolean;\n\n abstract clicked: Observable<MouseEvent | KeyboardEvent>;\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 { BooleanInput } from '@angular/cdk/coercion';\nimport { AfterViewInit, ContentChildren, Directive, EventEmitter, Input, Output, QueryList } from '@angular/core';\nimport { SelectionService } from './selection.service';\nimport { SelectableListValueType, SelectComponentRootToken } from './select-component-root.token';\nimport { SelectableItemToken } from './selectable-item.token';\nimport { coerceBoolean } from '../../decorators/coerce-boolean';\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()\n @coerceBoolean\n toggle: BooleanInput = false;\n\n /** @hidden */\n @Input()\n @coerceBoolean\n multiple: BooleanInput = 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 { 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 { ChangeDetectorRef, Directive, ElementRef, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';\nimport { merge, Observable } from 'rxjs';\nimport { SelectableItemToken } from './selectable-item.token';\nimport { FDK_SELECTABLE_ITEM_PROVIDER } from './selectable-list.tokens';\nimport { FdkDisabledProvider } from '../disabled';\nimport { FdkReadonlyProvider } from '../readonly';\nimport { SelectionService } from './selection.service';\nimport { FdkClickedProvider } from '../clicked';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\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 private _cd: ChangeDetectorRef,\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 { NgModule } from '@angular/core';\nimport { SelectableListDirective } from './selectable-list.directive';\nimport { SelectableItemDirective } from './selectable-item.directive';\n\n@NgModule({\n imports: [SelectableListDirective, SelectableItemDirective],\n exports: [SelectableListDirective, SelectableItemDirective]\n})\nexport class SelectableListModule {}\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 {\n AfterViewInit,\n DestroyRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n inject,\n Input,\n NgModule,\n OnChanges,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport { BooleanInput, coerceBooleanProperty, coerceElement } from '@angular/cdk/coercion';\nimport { ViewportSizeObservable } from '../../tokens/viewport-size.observable';\nimport { ResizeObserverService } from '../../services';\nimport { finalize, map, startWith, switchMap, tap } from 'rxjs/operators';\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\nimport { BreakpointName, getBreakpointName } from './responsive-breakpoints';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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('fdkBreakpointS')\n set showOnS(value: BooleanInput) {\n this._showOnS = coerceBooleanProperty(value);\n }\n\n /**\n * Show element on M breakpoint.\n * M - 0 - 1023px\n * */\n @Input('fdkBreakpointM')\n set showOnM(value: BooleanInput) {\n this._showOnM = coerceBooleanProperty(value);\n }\n\n /**\n * Show element on L breakpoint.\n * L - 0 - 1439px\n * */\n @Input('fdkBreakpointL')\n set showOnL(value: BooleanInput) {\n this._showOnL = coerceBooleanProperty(value);\n }\n\n /**\n * Show element on XL breakpoint.\n * */\n @Input('fdkBreakpointXL')\n set showOnXL(value: BooleanInput) {\n this._showOnXL = coerceBooleanProperty(value);\n }\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 /** @hidden */\n private _showOnS = false;\n /** @hidden */\n private _showOnM = false;\n /** @hidden */\n private _showOnL = false;\n\n /** @hidden */\n private _showOnXL = false;\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(private readonly templateRef: TemplateRef<any>, private readonly viewContainer: ViewContainerRef) {}\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, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { map } from 'rxjs';\nimport { intersectionObservable } from '../../functions';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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 { 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 { 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 {\n AfterContentInit,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n QueryList\n} from '@angular/core';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { startWith, takeUntil, take } from 'rxjs/operators';\nimport { selectStrategy } from '../../async-strategy';\nimport { ElementChord, FdDropEvent, LinkPosition, ElementPosition, DndItem, FdDndDropType } 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})\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 /** @hidden */\n private _replaceMode = false;\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 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 _onDestroy$ = new Subject<void>();\n\n /** @hidden */\n private _dndItemReference: DndItem[];\n\n /** @hidden */\n private _draggable = true;\n\n /** @hidden */\n @HostBinding('class')\n private readonly _initialClass = 'fd-dnd-list';\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.pipe(takeUntil(this._onDestroy$), startWith(0)).subscribe(() => this._refreshQueryList());\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\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 /** @hidden */\n private _refreshQueryList(): void {\n const refresh$ = merge(this._refresh$, this._onDestroy$);\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 /**\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 {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n Renderer2\n} from '@angular/core';\nimport { DragDrop, DragRef } from '@angular/cdk/drag-drop';\nimport { DndItem, ElementChord, ElementPosition, LinkPosition } from '../dnd.interfaces';\nimport { Subscription } from 'rxjs';\nimport { delay } from 'rxjs/operators';\nimport { DND_ITEM } from '../tokens';\nimport { Nullable } from '../../models/nullable';\n\n@Directive({\n selector: '[fdkDndItem], [fd-dnd-item]',\n providers: [DragDrop, { provide: DND_ITEM, useExisting: forwardRef(() => DndItemDirective) }]\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;\n\n /** @hidden */\n private _lineElement: HTMLElement | null;\n\n /** @hidden */\n private _replaceIndicator: HTMLElement | 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, Input, Optional } 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({ selector: '[fdkDndKeyboardGroup], [fdDndKeyboardGroup]' })\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 /** 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 /** @hidden */\n constructor(private readonly _cdr: ChangeDetectorRef, @Optional() private readonly _rtlService: RtlService) {}\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.value;\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({ selector: '[fdkDndKeyboardItem], [fdDndKeyboardItem]' })\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(private readonly _dndGroup: DndKeyboardGroupDirective, private readonly _elementRef: ElementRef) {}\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 /** @hidden */\n @HostListener('keydown', ['$event'])\n _onKeyDown(event: KeyboardEvent): void {\n this._dndGroup.processDragDrop(event, this.itemIndex, this.groupIndex);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DndListDirective } from './dnd-list/dnd-list.directive';\nimport { DndItemDirective } from './dnd-item/dnd-item.directive';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { DndKeyboardItemDirective } from './dnd-keyboard-item/dnd-keyboard-item.directive';\nimport { DndKeyboardGroupDirective } from './dnd-keyboard-group/dnd-keyboard-group.directive';\n\n@NgModule({\n imports: [CommonModule, DragDropModule],\n exports: [DndItemDirective, DndListDirective, DndKeyboardGroupDirective, DndKeyboardItemDirective],\n declarations: [DndItemDirective, DndListDirective, DndKeyboardGroupDirective, DndKeyboardItemDirective]\n})\nexport class DragAndDropModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RtlService } from './services/rtl.service';\nimport {\n AutoCompleteModule,\n ClickedBehaviorModule,\n DisabledBehaviorModule,\n FocusableGridModule,\n FocusableItemModule,\n FocusableListModule,\n InitialFocusModule,\n LineClampModule,\n OnlyDigitsModule,\n OverflowListModule,\n ReadonlyBehaviorModule,\n RepeatModule,\n ResizeModule,\n SelectableListModule,\n TemplateModule,\n TruncateModule,\n BreakpointModule,\n IntersectionSpyDirective\n} from './directives';\nimport { DragAndDropModule } from './drag-and-drop/drag-and-drop.module';\n\n@NgModule({\n imports: [\n CommonModule,\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 ClickedBehaviorModule,\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 ClickedBehaviorModule,\n InitialFocusModule,\n BreakpointModule,\n IntersectionSpyDirective\n ],\n providers: [RtlService]\n})\nexport class UtilsModule {}\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","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","/**\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","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","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 { ELEMENT_REF_EXCEPTION } from '../interfaces/has-element-ref.interface';\nimport { uuidv4 } from '../functions/uuidv4-generator';\nimport { CssClassBuilder } from '../interfaces/css-class-builder.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 { ELEMENT_REF_EXCEPTION, HasElementRef } from '../interfaces/has-element-ref.interface';\nimport { Hash } from '../datatypes/hash.datatype';\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","import { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { alternateSetter } from './setter-alternator';\n\nexport const coerceCssPixel = alternateSetter(coerceCssPixelValue);\n","import {\n AfterViewInit,\n Component,\n ComponentRef,\n DestroyRef,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n inject,\n Input,\n Output,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport {\n CdkPortalOutlet,\n ComponentPortal,\n ComponentType,\n DomPortal,\n PortalModule,\n TemplatePortal\n} from '@angular/cdk/portal';\nimport { coerceElement } from '@angular/cdk/coercion';\nimport { BehaviorSubject, filter, map, tap } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\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 standalone: true,\n imports: [PortalModule],\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","import { CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectorRef,\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 */\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 protected _cdr: ChangeDetectorRef\n ) {}\n\n /** @hidden Load received content */\n protected abstract _loadContent(): void;\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(private _parentInjector: Injector, private _additionalTokens: WeakMap<any, any>) {}\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 ComponentFactoryResolver,\n Injectable,\n ApplicationRef,\n Injector,\n EmbeddedViewRef,\n ComponentRef,\n TemplateRef,\n Type,\n Compiler,\n NgModuleFactory,\n ViewContainerRef\n} from '@angular/core';\nimport { DynamicComponentInjector } from './dynamic-component-injector';\nimport { DynamicComponentConfig } from './dynamic-component-config';\n\n/**\n * Service used to dynamically generate components like dialogs/alerts/notifications\n */\n@Injectable()\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.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 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 { ElementRef, OnChanges, OnInit, Input, Directive } from '@angular/core';\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 OnInit, OnChanges {\n /** @hidden */\n private _elementRef: ElementRef;\n\n /** @hidden */\n @Input() class: string; // user's custom classes\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 /** @hidden */\n abstract _setProperties(): void;\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 protected constructor(elementRef: ElementRef) {\n this._elementRef = elementRef;\n this._setProperties();\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 { 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 { ContentDensity } from '../interfaces/content-density';\nimport { isCompactDensity } from './../functions/is-compact-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 { AsyncPipe } from '@angular/common';\nimport { ChangeDetectorRef, OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { isPromise, isSubscribable } from '../typecheck';\nimport { Observable } from 'rxjs';\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 | null;\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: T | Promise<T> | Observable<T>): T | null {\n return !isPromise(value) && !isSubscribable(value) ? value : this._asyncPipe?.transform(value) ?? null;\n }\n\n /** @Hidden */\n ngOnDestroy(): void {\n this._asyncPipe?.ngOnDestroy();\n this._asyncPipe = null;\n this._cdr = null;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { escape } from 'lodash-es';\n\n@Pipe({\n name: 'highlight',\n standalone: true\n})\nexport class SearchHighlightPipe implements PipeTransform {\n /** Highlight search term in string. */\n transform(value: string, args: string, active: boolean = true, includeSpans: boolean = false): string {\n value = escape(value);\n let result: string = value;\n if (args && value && active) {\n const testStr: string = escape(args.trim().toLowerCase());\n const startIndex = value.toLowerCase().indexOf(testStr);\n if (startIndex !== -1) {\n const matchingString = value.substr(startIndex, testStr.length);\n result = value.replace(matchingString, '<strong>' + matchingString + '</strong>');\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: '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 { DomSanitizer, SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl } 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 { get } from 'lodash-es';\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 { 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';\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 { NgModule } from '@angular/core';\nimport { AsyncOrSyncPipe } from './async-or-sync.pipe';\n\nimport { DisplayFnPipe } from './displayFn.pipe';\nimport { FilterStringsPipe } from './filter-strings.pipe';\nimport { SearchHighlightPipe } from './search-highlight.pipe';\nimport { TwoDigitsPipe } from './two-digits.pipe';\nimport { SafePipe } from './safe.pipe';\nimport { ValueByPathPipe } from './value-by-path.pipe';\nimport { IsCompactDensityPipe } from './is-compact.pipe';\nimport { TruncatePipe } from './truncate.pipe';\nimport { MakeAsyncPipe } from './make-async.pipe';\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 {\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 EmbeddedViewRef,\n Injectable,\n InjectionToken,\n Injector,\n OnDestroy,\n StaticProvider,\n TemplateRef,\n Type,\n ViewContainerRef\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\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> implements OnDestroy\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 * @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 private _destroy$ = new Subject<void>();\n\n /** @hidden */\n protected constructor(public overlay: Overlay, public injector: Injector) {}\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 * 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 * 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 * 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 * 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 // TemplatePortal requires viewContainer ref\n const viewRef = null as any as ViewContainerRef;\n const portal = new TemplatePortal(content, viewRef, { $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 /** @hidden */\n ngOnDestroy(): void {\n this._destroy$.next();\n this._destroy$.complete();\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(takeUntil(this._destroy$))\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 { 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 { animate, state, style, transition, trigger, AnimationTriggerMetadata } from '@angular/animations';\n\n/**\n * Animations used by the Toast components.\n */\nexport const baseToastAnimations: {\n readonly toastState: AnimationTriggerMetadata;\n} = {\n /** Animation that shows and hides Toast. */\n toastState: trigger('state', [\n state(\n 'void, hidden',\n style({\n transform: 'translateY(1rem)',\n opacity: 0\n })\n ),\n state(\n 'visible',\n style({\n transform: 'translateY(0)',\n opacity: 1\n })\n ),\n transition('* => visible', animate('150ms cubic-bezier(0, 0, 0.2, 1)')),\n transition(\n '* => void, * => hidden',\n animate(\n '75ms cubic-bezier(0.4, 0.0, 1, 1)',\n style({\n opacity: 0\n })\n )\n )\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 { 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\n/**\n * Base Configuration class used when opening an animated Toast.\n */\nexport class BaseAnimatedToastConfig<T = any> extends BaseToastConfig<T> {\n /** Whether the toast should be animated. */\n animated? = true;\n}\n","import { OverlayContainer } from '@angular/cdk/overlay';\nimport { Injectable } from '@angular/core';\n\n/**\n * Custom overlay container for CDK Overlay.\n */\n@Injectable()\nexport class BaseToastOverlayContainer extends OverlayContainer {\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n override getContainerElement(): HTMLElement {\n const containerElement = super.getContainerElement();\n\n containerElement.classList.add('fn-toast-overlay-container');\n\n return containerElement;\n }\n}\n","import { ComponentRef, Directive, EmbeddedViewRef, ViewChild } from '@angular/core';\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { Subject } from 'rxjs';\nimport { coerceCssPixel } from '../../decorators';\nimport { Nullable } from '../../models/nullable';\nimport { BaseToastConfig } from './base-toast-config';\nimport { ToastContainerComponent } from '../interfaces/toast-container-component.interface';\n\nlet toastUniqueId = 0;\n\n@Directive()\nexport abstract class BaseToastContainerComponent<P extends BaseToastConfig = BaseToastConfig>\n extends BasePortalOutlet\n implements ToastContainerComponent<P>\n{\n /**\n * @hidden\n * The portal outlet inside this container into which the Toast content will be loaded.\n */\n @ViewChild(CdkPortalOutlet, { static: true })\n _portalOutlet!: CdkPortalOutlet;\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 /** Min width of the toast component. */\n @coerceCssPixel\n minWidth?: string | number | null;\n\n /** Max width of the toast component. */\n @coerceCssPixel\n maxWidth?: string | number | null;\n\n /** Width of the toast component. */\n @coerceCssPixel\n width?: string | number | null;\n\n /** Min height of the toast component. */\n @coerceCssPixel\n minHeight?: string | number | null;\n\n /** Max height of the toast component. */\n @coerceCssPixel\n maxHeight?: string | number | null;\n\n /** Height of the toast component. */\n @coerceCssPixel\n height?: string | number | null;\n\n /** Aria label. */\n ariaLabel: Nullable<string>;\n\n /** ID of the Toast. */\n id: Nullable<string>;\n\n /** @hidden */\n protected constructor(public config: P) {\n super();\n this.minWidth = this.config.minWidth;\n this.maxWidth = this.config.maxWidth;\n this.width = this.config.width;\n this.minHeight = this.config.minHeight;\n this.maxHeight = this.config.maxHeight;\n this.height = this.config.height;\n this.ariaLabel = this.config.ariaLabel;\n this.id = this.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 /** 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","import { OverlayRef } from '@angular/cdk/overlay';\nimport { BaseToastPosition } from '../../base-toast-positions';\nimport { 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\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 /** @hidden */\n protected constructor(containerInstance: C, overlayRef: OverlayRef, positionStrategy: BaseToastPosition) {\n super(containerInstance, overlayRef, positionStrategy);\n }\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 { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\nimport { BaseToastPosition } from '../../base-toast-positions';\nimport { BaseToastDurationDismissibleRef } from '../duration-dismissible/base-toast-duration-dismissible-ref';\nimport { BaseToastDurationDismissibleContainerComponent } from '../duration-dismissible/base-toast-duration-dismissible-container.component';\nimport { BaseToastConfig } from '../base-toast-config';\n\nexport abstract class BaseToastActionDismissibleRef<\n T = any,\n P extends BaseToastConfig<T> = any\n> extends BaseToastDurationDismissibleRef<T, P> {\n /** Subject for notifying the user that the Toast action-dismissible was called. */\n protected readonly onAction$ = new Subject<string | null>();\n\n /** Whether the Toast was dismissed using the action-dismissible button. */\n protected dismissedByAction = false;\n\n /** @hidden */\n protected constructor(\n containerInstance: BaseToastDurationDismissibleContainerComponent<P>,\n overlayRef: OverlayRef,\n positionStrategy: BaseToastPosition\n ) {\n super(containerInstance, overlayRef, positionStrategy);\n\n this.onAction().subscribe(() => this.dismiss());\n }\n\n /** Marks the Toast action-dismissible clicked. */\n dismissWithAction(reason: string | null = null): void {\n if (!this.onAction$.closed) {\n this.dismissedByAction = true;\n\n this.onAction$.next(reason);\n this.onAction$.complete();\n }\n }\n\n /** Gets an observable that is notified when the Toast action-dismissible is called. */\n onAction(): Observable<string | null> {\n return this.onAction$;\n }\n\n /**\n * @hidden\n * Cleans up the DOM after closing.\n */\n protected override _finishDismiss(): void {\n if (!this.onAction$.closed) {\n this.onAction$.complete();\n }\n\n super._finishDismiss();\n }\n}\n","import { AnimationEvent } from '@angular/animations';\nimport { Directive, HostBinding, HostListener, inject, NgZone, OnDestroy } from '@angular/core';\nimport { take } from 'rxjs';\nimport { BaseAnimatedToastConfig } from './base-toast-config';\nimport { BaseToastContainerComponent } from './base-toast-container.component';\n\n@Directive()\nexport abstract class BaseToastAnimatedContainerComponent<P extends BaseAnimatedToastConfig>\n extends BaseToastContainerComponent<P>\n implements OnDestroy\n{\n /**\n * @hidden\n * The state of the Message Toast animations.\n */\n @HostBinding('@state')\n private _animationState = 'void';\n\n /**\n * @hidden\n * Whether the animations should be disabled.\n */\n @HostBinding('@.disabled')\n private _animationsDisabled = false;\n\n /** @hidden */\n protected _ngZone = inject(NgZone);\n\n /** @hidden */\n constructor(config: P) {\n super(config);\n this._animationsDisabled = !config.animated;\n }\n\n /** Begin animation of Message Toast entrance into view. */\n enter(): void {\n this._animationState = 'visible';\n }\n\n /** Begin animation of Message Toast removal. */\n exit(): void {\n this._animationState = 'hidden';\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._completeExit();\n }\n\n /**\n * @hidden\n * Handle end of animations, updating the state of the Message Toast.\n */\n @HostListener('@state.done', ['$event'])\n private _onAnimationEnd(event: AnimationEvent): void {\n const { fromState, toState } = event;\n\n if ((toState === 'void' && fromState !== 'void') || toState === 'hidden') {\n this._completeExit();\n }\n\n if (toState === 'visible') {\n // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const onEnter = this.onEnter$;\n\n this._ngZone.run(() => {\n onEnter.next();\n onEnter.complete();\n });\n }\n }\n\n /**\n * @hidden\n * Waits for the zone to settle before removing the element. 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 // Note: we shouldn't use `this` inside the zone callback,\n // because it can cause a memory leak.\n const onExit = this.onExit$;\n\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n onExit.next();\n onExit.complete();\n });\n }\n}\n","import { Directive, HostListener, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { BaseToastAnimatedContainerComponent } from '../base-toast-animated-container.component';\nimport { BaseToastConfig } from '../base-toast-config';\nimport { ToastDurationDismissibleContainerComponent } from '../../interfaces/toast-duration-dismissible-container-component.interface';\n\n@Directive()\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 /** Emits mouseleave$ subject when component is out of hover. */\n @HostListener('mouseleave')\n onMouseLeave(): void {\n this.mouseleave$.next();\n }\n\n /** Emits mouseover$ subject when component is hovered. */\n @HostListener('mouseover')\n onMouseOver(): void {\n this.mouseover$.next();\n }\n\n /** @Hidden */\n override ngOnDestroy(): void {\n this.mouseover$.complete();\n this.mouseleave$.complete();\n\n super.ngOnDestroy();\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","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 { 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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.RtlService","i1.FocusKeyManagerListDirective","i1.TabbableElementService","map","i1","i1.AttributeObserver","startWith","i1.ReadonlyObserver","filter","i1.FdkClickedProvider","i1.DisabledObserver","i1.SelectionService","i1.FdkDisabledProvider","i2.FdkReadonlyProvider","i3.SelectionService","i4.FdkClickedProvider","switchMap","i1.DndKeyboardGroupDirective","tap","take"],"mappings":"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"}
|