@fundamental-ngx/core 0.61.2-rc.8 → 0.61.2

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.
Files changed (114) hide show
  1. package/fesm2022/fundamental-ngx-core-action-sheet.mjs +2 -3
  2. package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
  3. package/fesm2022/fundamental-ngx-core-avatar-group.mjs +4 -6
  4. package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  5. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +13 -11
  6. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  7. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +7 -5
  8. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  9. package/fesm2022/fundamental-ngx-core-calendar.mjs +31 -35
  10. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  11. package/fesm2022/fundamental-ngx-core-carousel.mjs +2 -2
  12. package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
  13. package/fesm2022/fundamental-ngx-core-combobox.mjs +3 -5
  14. package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
  15. package/fesm2022/fundamental-ngx-core-date-picker.mjs +2 -2
  16. package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
  17. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +2 -2
  18. package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
  19. package/fesm2022/fundamental-ngx-core-datetime.mjs +13 -7
  20. package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
  21. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +13 -13
  22. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  23. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +2 -2
  24. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  25. package/fesm2022/fundamental-ngx-core-form.mjs +1 -1
  26. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  27. package/fesm2022/fundamental-ngx-core-grid-list.mjs +4 -4
  28. package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
  29. package/fesm2022/fundamental-ngx-core-info-label.mjs +2 -2
  30. package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
  31. package/fesm2022/fundamental-ngx-core-inline-help.mjs +65 -59
  32. package/fesm2022/fundamental-ngx-core-inline-help.mjs.map +1 -1
  33. package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
  34. package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
  35. package/fesm2022/fundamental-ngx-core-menu.mjs +1 -3
  36. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  37. package/fesm2022/fundamental-ngx-core-message-strip.mjs +49 -44
  38. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  39. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +17 -23
  40. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  41. package/fesm2022/fundamental-ngx-core-multi-input.mjs +2 -2
  42. package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
  43. package/fesm2022/fundamental-ngx-core-nested-list.mjs +21 -22
  44. package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
  45. package/fesm2022/fundamental-ngx-core-notification.mjs +16 -13
  46. package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
  47. package/fesm2022/fundamental-ngx-core-object-identifier.mjs +2 -2
  48. package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
  49. package/fesm2022/fundamental-ngx-core-object-number.mjs +2 -2
  50. package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
  51. package/fesm2022/fundamental-ngx-core-object-status.mjs +2 -2
  52. package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
  53. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +2 -2
  54. package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  55. package/fesm2022/fundamental-ngx-core-pagination.mjs +14 -11
  56. package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
  57. package/fesm2022/fundamental-ngx-core-popover.mjs +6 -0
  58. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  59. package/fesm2022/fundamental-ngx-core-product-switch.mjs +2 -2
  60. package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
  61. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +7 -4
  62. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  63. package/fesm2022/fundamental-ngx-core-segmented-button.mjs +11 -10
  64. package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  65. package/fesm2022/fundamental-ngx-core-select.mjs +6 -7
  66. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  67. package/fesm2022/fundamental-ngx-core-shellbar.mjs +6 -6
  68. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  69. package/fesm2022/fundamental-ngx-core-slider.mjs +6 -6
  70. package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
  71. package/fesm2022/fundamental-ngx-core-split-button.mjs +2 -2
  72. package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
  73. package/fesm2022/fundamental-ngx-core-step-input.mjs +2 -2
  74. package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
  75. package/fesm2022/fundamental-ngx-core-switch.mjs +2 -2
  76. package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
  77. package/fesm2022/fundamental-ngx-core-tabs.mjs +2 -2
  78. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  79. package/fesm2022/fundamental-ngx-core-text.mjs +2 -2
  80. package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
  81. package/fesm2022/fundamental-ngx-core-time-picker.mjs +29 -4
  82. package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
  83. package/fesm2022/fundamental-ngx-core-time.mjs +4 -4
  84. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  85. package/fesm2022/fundamental-ngx-core-token.mjs +15 -12
  86. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  87. package/fesm2022/fundamental-ngx-core-toolbar.mjs +3 -5
  88. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  89. package/fesm2022/fundamental-ngx-core-tree.mjs +4 -4
  90. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  91. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +4 -4
  92. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  93. package/fesm2022/fundamental-ngx-core-user-menu.mjs +3 -5
  94. package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -1
  95. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +2 -2
  96. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
  97. package/package.json +3 -3
  98. package/types/fundamental-ngx-core-breadcrumb.d.ts +5 -5
  99. package/types/fundamental-ngx-core-busy-indicator.d.ts +3 -3
  100. package/types/fundamental-ngx-core-combobox.d.ts +2 -4
  101. package/types/fundamental-ngx-core-datetime.d.ts +5 -1
  102. package/types/fundamental-ngx-core-dynamic-page.d.ts +2 -1
  103. package/types/fundamental-ngx-core-inline-help.d.ts +45 -24
  104. package/types/fundamental-ngx-core-menu.d.ts +0 -2
  105. package/types/fundamental-ngx-core-message-strip.d.ts +12 -3
  106. package/types/fundamental-ngx-core-multi-combobox.d.ts +1 -1
  107. package/types/fundamental-ngx-core-nested-list.d.ts +10 -10
  108. package/types/fundamental-ngx-core-notification.d.ts +7 -5
  109. package/types/fundamental-ngx-core-pagination.d.ts +4 -3
  110. package/types/fundamental-ngx-core-rating-indicator.d.ts +2 -3
  111. package/types/fundamental-ngx-core-segmented-button.d.ts +5 -3
  112. package/types/fundamental-ngx-core-slider.d.ts +1 -1
  113. package/types/fundamental-ngx-core-time-picker.d.ts +17 -1
  114. package/types/fundamental-ngx-core-token.d.ts +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-token.mjs","sources":["../../../../libs/core/token/token-input.directive.ts","../../../../libs/core/token/token.component.ts","../../../../libs/core/token/token.component.html","../../../../libs/core/token/tokenizer.component.ts","../../../../libs/core/token/tokenizer.component.html","../../../../libs/core/token/token.module.ts","../../../../libs/core/token/fundamental-ngx-core-token.ts"],"sourcesContent":["import { Directive, ElementRef, Input, OnChanges, OnInit, inject } from '@angular/core';\nimport { CssClassBuilder, applyCssClass } from '@fundamental-ngx/cdk/utils';\n\n@Directive({\n selector: '[fdTokenizerInput], [fd-tokenizer-input]',\n standalone: true\n})\nexport class TokenizerInputDirective implements OnInit, OnChanges, CssClassBuilder {\n /** user's custom classes */\n @Input()\n class: string;\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden\n * CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return ['fd-tokenizer__input', this.class];\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n}\n","import { ENTER, SPACE } from '@angular/cdk/keycodes';\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { Subscription, fromEvent } from 'rxjs';\n\n/**\n * A token is used to represent contextualizing information.\n * They can be useful to show applied filters, selected values for form fields or object metadata.\n */\n@Component({\n selector: 'fd-token',\n templateUrl: './token.component.html',\n styleUrl: './token.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [contentDensityObserverProviders()],\n host: {\n '[style.max-width.%]': '100'\n },\n imports: [FdTranslatePipe]\n})\nexport class TokenComponent implements AfterViewInit, OnDestroy {\n /** Whether the token is disabled. */\n @Input()\n disabled = false;\n\n /** @hidden */\n @ViewChild('tokenWrapperElement')\n tokenWrapperElement: ElementRef;\n\n /** @hidden */\n @ViewChild('content')\n readonly _content: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('viewContainer', { read: ViewContainerRef })\n readonly _viewContainer: ViewContainerRef;\n\n /** Whether the token is selected. */\n @Input()\n set selected(val: boolean) {\n if (this._selected !== val) {\n this._cdRef.markForCheck();\n }\n this._selected = val;\n }\n\n get selected(): boolean {\n return this._selected;\n }\n /** Whether the token is read-only. */\n @Input()\n readOnly = false;\n\n /** Emitted when the *x* icon is clicked. Specifically, any pseudo-element. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onCloseClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /** Emitted when token should be removed */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onRemove: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emitted when a token is clicked. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onTokenClick = new EventEmitter<MouseEvent>();\n\n /** Emitted when a there's a keydown registered on the token. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onTokenKeydown = new EventEmitter<KeyboardEvent>();\n\n /**\n * Emitted when token element received or lost focus.\n */\n @Output()\n elementFocused = new EventEmitter<boolean>();\n\n /** @hidden */\n _totalCount: number;\n\n /** @hidden */\n _itemPosition: number;\n\n /** @hidden */\n private _selected = false;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n private _cdRef: ChangeDetectorRef,\n readonly _contentDensityObserver: ContentDensityObserver\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._viewContainer.createEmbeddedView(this._content);\n\n fromEvent(this.tokenWrapperElement.nativeElement, 'focus')\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this.elementFocused.emit(true);\n });\n\n fromEvent(this.tokenWrapperElement.nativeElement, 'blur')\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this.elementFocused.emit(false);\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n closeClickHandler(event?): void {\n if (event) {\n event.stopPropagation();\n if (!this.disabled) {\n this.onCloseClick.emit(event);\n }\n }\n }\n\n /** @hidden */\n tokenClickHandler(event): void {\n this.onTokenClick.emit(event);\n }\n\n /** @hidden */\n tokenKeydownHandler(event): void {\n this.onTokenKeydown.emit(event);\n if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n this.onTokenClick.emit(event);\n }\n }\n\n /** @hidden */\n _setTotalCount(count: number, itemPosition: number): void {\n this._totalCount = count;\n this._itemPosition = itemPosition;\n this._cdRef.markForCheck();\n }\n}\n","<span\n #tokenWrapperElement\n class=\"fd-token\"\n role=\"option\"\n tabindex=\"0\"\n [attr.aria-roledescription]=\"('coreToken.ariaRoleDescription' | fdTranslate)()\"\n (click)=\"tokenClickHandler($event)\"\n (keydown)=\"tokenKeydownHandler($event)\"\n [attr.aria-setsize]=\"_totalCount\"\n [attr.aria-posinset]=\"_itemPosition\"\n [class.fd-token__disabled]=\"disabled\"\n [class.fd-token--selected]=\"selected\"\n [class.fd-token--readonly]=\"readOnly\"\n [attr.aria-selected]=\"selected\"\n>\n <span class=\"fd-token__text no-text-select\">\n <ng-container #viewContainer></ng-container>\n </span>\n @if (!readOnly) {\n <span\n (click)=\"closeClickHandler($event)\"\n role=\"button\"\n [attr.aria-label]=\"('coreToken.deleteButtonLabel' | fdTranslate)()\"\n class=\"fd-token__close\"\n ></span>\n }\n</span>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { A, BACKSPACE, DELETE, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n DOCUMENT,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n ViewChildren,\n ViewContainerRef,\n ViewEncapsulation,\n forwardRef,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n CssClassBuilder,\n KeyUtil,\n Nullable,\n RtlService,\n applyCssClass,\n resizeObservable\n} from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { FormControlComponent } from '@fundamental-ngx/core/form';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconFont } from '@fundamental-ngx/core/icon';\nimport { InputGroupAddOnDirective } from '@fundamental-ngx/core/input-group';\nimport { ListComponent, ListItemComponent } from '@fundamental-ngx/core/list';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { FD_LANGUAGE_SIGNAL, FdTranslatePipe, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { BehaviorSubject, Subscription, fromEvent, merge, startWith } from 'rxjs';\nimport { debounceTime, filter, map } from 'rxjs/operators';\nimport { TokenComponent } from './token.component';\n\n@Component({\n selector: 'fd-tokenizer',\n templateUrl: './tokenizer.component.html',\n styleUrl: './tokenizer.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [contentDensityObserverProviders()],\n imports: [\n NgTemplateOutlet,\n InputGroupAddOnDirective,\n ButtonComponent,\n PopoverComponent,\n PopoverControlComponent,\n PopoverBodyComponent,\n ListComponent,\n ListItemComponent,\n FdTranslatePipe\n ]\n})\nexport class TokenizerComponent implements AfterViewInit, OnDestroy, CssClassBuilder, OnInit, OnChanges {\n /** user's custom classes */\n @Input()\n class: string;\n\n /** Disables possibility to remove tokens by keyboard */\n @Input()\n disableKeyboardDeletion = false;\n\n /** @hidden */\n @ContentChildren(forwardRef(() => TokenComponent))\n tokenList: QueryList<TokenComponent>;\n\n /** @hidden */\n @ContentChild(forwardRef(() => FormControlComponent), { read: ElementRef })\n input: ElementRef<HTMLInputElement>;\n\n /** @hidden */\n @ViewChild('tokenizerInner')\n tokenizerInnerEl: ElementRef<HTMLDivElement>;\n\n /** @hidden */\n @ViewChild('moreElementSpan')\n moreElement: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ViewChild('inputGroupAddOn') set content(content: ElementRef<HTMLElement>) {\n this.inputGroupAddonEl = content;\n }\n\n /** @hidden */\n @ViewChildren('viewContainer', { read: ViewContainerRef })\n readonly _viewContainer: QueryList<ViewContainerRef>;\n\n /** @hidden */\n get _hiddenTokens(): TokenComponent[] {\n return this.tokenList.filter((token) => token.elementRef.nativeElement.style.display === 'none');\n }\n\n /** Whether to use cozy visuals but compact collapsing behavior. */\n @Input()\n compactCollapse = false;\n\n /** Whether tokenizer should have fake focus indicator, when input is focused inside*/\n @Input()\n tokenizerFocusable = true;\n\n /** The value for the tokenizer input */\n @Input()\n inputValue: string;\n\n /** Icon of the button on the right of the input field. */\n @Input()\n glyph: string;\n\n /** Glyph font family */\n @Input()\n glyphFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n /** Word to use for when there are extra tokens. */\n @Input()\n moreTerm = 'more';\n\n /** @hidden */\n @Input()\n open: boolean;\n\n /** @Hidden */\n @Input()\n showOverflowPopover = true;\n\n /** Event emitted when the search term changes. Use *$event* to access the new term. */\n @Output()\n readonly moreClickedEvent: EventEmitter<any> = new EventEmitter<any>();\n\n /** @hidden */\n inputGroupAddonEl: ElementRef;\n\n /** @hidden */\n previousElementWidth: number;\n\n /** @hidden */\n moreTokensLeft: Array<TokenComponent> = [];\n\n /** @hidden */\n moreTokensRight: Array<TokenComponent> = [];\n\n /** @hidden */\n previousTokenCount: number;\n\n /** @hidden */\n tokenListChangesSubscription: Subscription;\n\n /** @hidden */\n tokenListClickSubscriptions: Subscription[] = [];\n\n /** @hidden */\n hiddenCozyTokenCount = 0;\n\n /** @hidden Used to add focus to tokenizer element */\n _tokenizerHasFocus = false;\n\n /** @hidden */\n _showMoreElement = false;\n\n /** @hidden */\n _tokensContainerWidth = 'auto';\n\n /** @hidden */\n private _translationResolver = new TranslationResolver();\n\n /** @hidden\n * Variable which will keep the index of the first token pressed in the tokenizer\n */\n private _firstElementInSelection: number | null = null;\n\n /** @hidden\n * Variable which will keep the index of the last token pressed in the tokenizer\n */\n private _lastElementInSelection: number | null = null;\n\n /** @hidden\n * Flag which will say if the last keyboard and click operation they used was using control\n */\n private _ctrlPrevious: boolean;\n\n /** @hidden\n * Flag which will say if they held shift and clicked highlighting elements before or\n */\n private _directionShiftIsRight: boolean | null = null;\n\n /** An RxJS Subject that will kill the data stream upon destruction (for unsubscribing) */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n private readonly _eventListeners: (() => void)[] = [];\n\n /** @hidden */\n private _forceAllTokensToDisplay = false;\n\n /** @hidden */\n private _tokenElementFocused = new BehaviorSubject(false);\n\n /** @hidden */\n private _inputElementFocused = false;\n\n /** @hidden */\n private _tokenElementFocusedSub: Nullable<Subscription>;\n\n /** @hidden */\n private readonly _langSignal = inject(FD_LANGUAGE_SIGNAL);\n\n /** @hidden */\n constructor(\n readonly _contentDensityObserver: ContentDensityObserver,\n public readonly elementRef: ElementRef,\n private _cdRef: ChangeDetectorRef,\n private _renderer: Renderer2,\n @Inject(DOCUMENT) private readonly _document: Document,\n private readonly _liveAnnouncer: LiveAnnouncer\n ) {\n this._eventListeners.push(\n this._renderer.listen('window', 'click', (e: Event) => {\n if (this.elementRef.nativeElement.contains(e.target) === false) {\n this.tokenList.forEach((token) => {\n token.selected = false;\n });\n }\n })\n );\n }\n\n /** @hidden\n * CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return [this.class];\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n keyDown(keyboardEvent: KeyboardEvent): void {\n if (\n KeyUtil.isKeyCode(keyboardEvent, [DELETE, BACKSPACE]) &&\n (!this._isInputFocused() || this._tokensSelected()) &&\n !this.disableKeyboardDeletion\n ) {\n const selectedElements = this._getActiveTokens();\n const focusedTokenIndex = this._getFocusedTokenIndex();\n selectedElements.forEach((element) => element.onCloseClick.emit());\n if (selectedElements.length > 0) {\n if (KeyUtil.isKeyCode(keyboardEvent, DELETE)) {\n this._focusInput();\n } else {\n this.focusTokenElement(focusedTokenIndex - 1);\n }\n }\n }\n\n if (\n KeyUtil.isKeyCode(keyboardEvent, BACKSPACE) &&\n this._isInputFocused() &&\n !this._getInputValue() &&\n !this.disableKeyboardDeletion\n ) {\n this.focusTokenElement(this.tokenList.length - 1);\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.input?.nativeElement) {\n this._setupInputKeydownEvent();\n this._setupInputFocusEvent();\n }\n\n // watch for changes to the tokenList and attempt to expand/collapse tokens as needed\n this.tokenList.changes.pipe(startWith(null)).subscribe(() => {\n this.tokenListChangesSubscription?.unsubscribe();\n this.tokenListChangesSubscription = new Subscription();\n this._resetTokens();\n this.tokenList.forEach((token) => {\n this.tokenListChangesSubscription.add(\n token.onCloseClick.subscribe(() => {\n this._resetTokens();\n })\n );\n this.tokenListChangesSubscription.add(\n token.elementFocused.subscribe((isFocused) => {\n this._tokenElementFocused.next(isFocused);\n })\n );\n });\n });\n\n if (!this._contentDensityObserver.isCompact && !this.compactCollapse) {\n this._handleCozyTokenCount();\n }\n this._listenElementEvents();\n this.previousElementWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n this._listenOnResize();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.tokenListChangesSubscription?.unsubscribe();\n this._tokenElementFocusedSub?.unsubscribe();\n this._eventListeners.forEach((e) => e());\n this._unsubscribeClicks();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n handleTokenClickSubscriptions(): void {\n this._unsubscribeClicks();\n this.tokenList.forEach((token, index) => {\n if (token.tokenWrapperElement) {\n token.tokenWrapperElement.nativeElement.tabIndex = -1;\n }\n this.tokenListClickSubscriptions.push(\n token.onTokenClick.subscribe((event) => {\n event.stopPropagation();\n this.focusTokenElement(index);\n if (this._isControlKey(event)) {\n this._ctrlSelected(token, index);\n } else if (!event.shiftKey || this._ctrlPrevious) {\n this._basicSelected(token, index);\n } else if (event.shiftKey) {\n this.resetFirstAndLastElement();\n this._shiftSelected(index);\n }\n })\n );\n this.tokenListClickSubscriptions.push(\n token.onTokenKeydown.subscribe((event) => {\n this.handleKeyDown(event, index);\n })\n );\n });\n }\n\n /** @hidden */\n focusTokenElement(newIndex: number): HTMLElement | undefined {\n let elementToFocus: HTMLElement | undefined;\n const tokenListArray: TokenComponent[] = this.tokenList.toArray();\n if (tokenListArray[newIndex]) {\n elementToFocus = tokenListArray[newIndex].tokenWrapperElement.nativeElement;\n // element needs tabindex in order to be focused\n elementToFocus!.focus();\n }\n\n return elementToFocus;\n }\n\n /** @hidden */\n onResize(): void {\n if (this.elementRef) {\n const elementWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n this._resetTokens();\n this.previousElementWidth = elementWidth;\n if (!this._contentDensityObserver.isCompact && !this.compactCollapse) {\n this._handleCozyTokenCount();\n }\n }\n }\n\n /** @hidden */\n handleKeyDown(event: KeyboardEvent, fromIndex: number): void {\n let newIndex: number | undefined;\n const rtl = this._rtlService?.rtl() ?? false;\n if (KeyUtil.isKeyCode(event, SPACE) && !this._isInputFocused()) {\n const token = this.tokenList.find((_, index) => index === fromIndex);\n this.tokenList.forEach((shadowedToken) => {\n if (shadowedToken !== token) {\n shadowedToken.selected = false;\n }\n });\n token && (token.selected = !token.selected);\n event.preventDefault();\n } else if (KeyUtil.isKeyCode(event, ENTER)) {\n this._focusInput();\n } else if (this._goBackRequested(event, rtl)) {\n event.preventDefault();\n this._handleArrowLeft(fromIndex);\n newIndex = fromIndex - 1;\n } else if (this._goForwardRequested(event, rtl)) {\n event.preventDefault();\n this._handleArrowRight(fromIndex);\n newIndex = fromIndex + 1;\n } else if (KeyUtil.isKeyCode(event, A) && !this._getInputValue() && this._isControlKey(event)) {\n event.preventDefault();\n this.tokenList.forEach((token) => (token.selected = true));\n }\n if (newIndex === this.tokenList.length && this._goForwardRequested(event, rtl)) {\n this._focusInput();\n } else if (newIndex! > this.tokenList.length - this.moreTokensRight.length && this._isInputFocused()) {\n this.focusTokenElement(newIndex! - this.moreTokensRight.length);\n } else if (newIndex || newIndex === 0) {\n this.focusTokenElement(newIndex);\n }\n }\n\n /** @hidden */\n getCombinedTokenWidth(): number {\n let totalTokenWidth = this._getTokensAreaWidthWithoutTokens();\n // get the width of each token\n this.tokenList.forEach((token) => {\n totalTokenWidth = totalTokenWidth + token.elementRef.nativeElement.getBoundingClientRect().width;\n });\n\n return totalTokenWidth;\n }\n\n /** @hidden */\n moreClicked(): void {\n this.moreClickedEvent.emit();\n }\n\n /** Removes all selected tokens */\n removeSelectedTokens(): void {\n const selectedElements = this._getActiveTokens();\n selectedElements.forEach((element) => element.onRemove.emit());\n }\n\n /** @hidden */\n _showAllTokens(): void {\n this._forceAllTokensToDisplay = true;\n this._inputElementFocused = true;\n this.tokenList.forEach((token) => {\n this._makeElementVisible(token.elementRef);\n token._viewContainer.createEmbeddedView(token._content);\n });\n this._tokensContainerWidth = 'auto';\n this._showMoreElement = false;\n this._cdRef.detectChanges();\n this.tokenizerInnerEl.nativeElement.scrollLeft = this.tokenizerInnerEl.nativeElement.scrollWidth;\n }\n\n /** @hidden */\n _hideTokens(): void {\n setTimeout(() => {\n this._inputElementFocused = false;\n const tokenFocused = this._getFocusedTokenIndex() > -1;\n\n if (tokenFocused) {\n this._waitForFocusToDisappear();\n return;\n }\n this._forceAllTokensToDisplay = false;\n this._resetTokens();\n this._cdRef.detectChanges();\n this.tokenizerInnerEl.nativeElement.scrollLeft = this.tokenizerInnerEl.nativeElement.scrollWidth;\n });\n }\n\n /**\n * @hidden\n * Check whether user intends to go back to the previous token\n **/\n private _goBackRequested($event: KeyboardEvent, rtl: boolean): boolean {\n const backKeys = rtl ? [RIGHT_ARROW] : [LEFT_ARROW];\n return KeyUtil.isKeyCode($event, backKeys);\n }\n\n /**\n * @hidden\n * Check whether user intends to go forward to the next token\n **/\n private _goForwardRequested($event: KeyboardEvent, rtl: boolean): boolean {\n const forwardKeys = rtl ? [LEFT_ARROW] : [RIGHT_ARROW];\n return KeyUtil.isKeyCode($event, forwardKeys);\n }\n\n /** @hidden */\n private _getTokensAreaWidthWithoutTokens(): number {\n let totalTokenWidth = 0;\n // add input width\n if (this.input?.nativeElement) {\n totalTokenWidth = totalTokenWidth + this.input.nativeElement.getBoundingClientRect().width;\n }\n // add the width of the \"____ more\" element\n if (this.moreTokensLeft.length > 0 && this.moreElement && this.moreElement.nativeElement) {\n totalTokenWidth = totalTokenWidth + this.moreElement.nativeElement.getBoundingClientRect().width;\n }\n // add the input group addon\n if (this.inputGroupAddonEl && this.inputGroupAddonEl.nativeElement) {\n totalTokenWidth = totalTokenWidth + this.inputGroupAddonEl.nativeElement.getBoundingClientRect().width;\n }\n\n return totalTokenWidth;\n }\n\n /** @hidden */\n private _handleArrowLeft(fromIndex: number): void {\n // if the leftmost visible token is selected, and there are moreTokensLeft, need to display a moreTokenLeft\n if (fromIndex === this.moreTokensLeft.length) {\n const poppedToken = this.moreTokensLeft.pop();\n if (poppedToken) {\n this._makeElementVisible(poppedToken.elementRef);\n }\n // and then hide any tokens from the right that no longer fit\n this._collapseTokens('right');\n\n this._cdRef.detectChanges();\n }\n }\n\n /** @hidden */\n private _waitForFocusToDisappear(): void {\n this._tokenElementFocusedSub?.unsubscribe();\n // 5 ms delay for other token to receive focus, check if _showAllTokens was called again\n this._tokenElementFocusedSub = this._tokenElementFocused\n .pipe(\n debounceTime(5),\n filter((isFocused) => isFocused && !this._inputElementFocused)\n )\n .subscribe(() => {\n this._hideTokens();\n });\n }\n\n /** @hidden */\n private _handleArrowRight(fromIndex: number): void {\n if (fromIndex === this.tokenList.length - this.moreTokensRight.length - 1 && this.moreTokensRight.length) {\n const poppedToken = this.moreTokensRight.pop();\n if (poppedToken) {\n this._makeElementVisible(poppedToken.elementRef);\n }\n // and then hide any tokens from the left that no longer fit\n this._collapseTokens('left');\n\n this._cdRef.detectChanges();\n }\n }\n\n /** @hidden */\n private _collapseTokens(side?: string): void {\n if (this._forceAllTokensToDisplay) {\n return;\n }\n if (!this._contentDensityObserver.isCompact && !this.compactCollapse) {\n this._getHiddenCozyTokenCount();\n return;\n }\n this._cdRef.detectChanges();\n this._viewContainer.forEach((viewContainer) => viewContainer.clear());\n\n const availableWidth = this._getTokensAreaWidthWithoutTokens();\n\n if (this.tokenList.length === 1) {\n const tokenWidth = this.tokenList.get(0)?.elementRef.nativeElement.getBoundingClientRect().width;\n this._tokensContainerWidth = availableWidth < tokenWidth ? `calc(100% - ${availableWidth}px)` : 'auto';\n return;\n } else {\n this._tokensContainerWidth = 'auto';\n }\n\n this._checkMoreElementVisibility();\n\n this.tokenList.forEach((token) => token._viewContainer.createEmbeddedView(token._content));\n\n let elementWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n let combinedTokenWidth = this.getCombinedTokenWidth(); // the combined width of all tokens, the \"____ more\" text, and the input\n let i = 0;\n /*\n When resizing, we want to collapse the tokens on the left first. However, when the user is navigating through\n a group of overflowing tokens using the arrow left key, we may need to hide tokens on the right. So if this\n function has been called with the param 'right' it will collapse tokens from the right side of the list rather\n than the (default) left side.\n */\n if (side === 'right') {\n i = this.tokenList.length - 1;\n }\n while (combinedTokenWidth > elementWidth && (side === 'right' ? i >= 0 : i < this.tokenList.length)) {\n // loop through the tokens and hide them until the combinedTokenWidth fits in the elementWidth\n const token = this.tokenList.get(i);\n const moreTokens = side === 'right' ? this.moreTokensRight : this.moreTokensLeft;\n\n if (token) {\n if (moreTokens.indexOf(token) === -1) {\n moreTokens.push(token);\n }\n token.elementRef.nativeElement.style.display = 'none';\n }\n // get the new elementWidth and combinedTokenWidth as these will have changed after setting a token display to 'none'\n elementWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n this._checkMoreElementVisibility();\n combinedTokenWidth = this.getCombinedTokenWidth();\n side === 'right' ? i-- : i++;\n }\n\n this._cdRef.detectChanges();\n if (this.showOverflowPopover) {\n this._hiddenTokens.forEach((hiddenToken, index) => {\n hiddenToken._viewContainer.clear();\n this._viewContainer.get(index)?.createEmbeddedView(hiddenToken._content);\n });\n }\n }\n\n /** @hidden */\n private _resetTokens(): void {\n this.moreTokensLeft = [];\n this.moreTokensRight = [];\n if (this._contentDensityObserver.isCompact || this.compactCollapse || this._forceAllTokensToDisplay) {\n this.tokenList.forEach((token) => {\n this._makeElementVisible(token.elementRef);\n });\n this._cdRef.markForCheck();\n this._collapseTokens();\n } else {\n this._getHiddenCozyTokenCount();\n }\n this.handleTokenClickSubscriptions();\n this.previousTokenCount = this.tokenList.length;\n this.tokenList.forEach((token, index) => token._setTotalCount(this.tokenList.length, index + 1));\n this._cdRef.markForCheck();\n }\n\n /** @hidden */\n private _getHiddenCozyTokenCount(): void {\n const elementLeft = this.elementRef.nativeElement.getBoundingClientRect().left;\n this.hiddenCozyTokenCount = 0;\n this.tokenList.forEach((token) => {\n if (\n token.tokenWrapperElement &&\n token.tokenWrapperElement.nativeElement.getBoundingClientRect().right < elementLeft\n ) {\n this.hiddenCozyTokenCount += 1;\n }\n });\n\n this._checkMoreElementVisibility();\n }\n\n /** @hidden */\n private _handleCozyTokenCount(): void {\n // because justify-content breaks scrollbar, it cannot be used on cozy screens, so use JS to scroll to the end\n this.tokenizerInnerEl.nativeElement.scrollLeft = this.tokenizerInnerEl.nativeElement.scrollWidth;\n this._getHiddenCozyTokenCount();\n if (this.hiddenCozyTokenCount > 0) {\n // need to do this again in case \"____ more\" text was added\n this.tokenizerInnerEl.nativeElement.scrollLeft = this.tokenizerInnerEl.nativeElement.scrollWidth;\n this._getHiddenCozyTokenCount();\n }\n }\n\n /** @hidden */\n private _makeElementVisible(elementRef: ElementRef): void {\n elementRef.nativeElement.style.display = 'inline-block';\n elementRef.nativeElement.style.visibility = 'visible';\n }\n\n /** @hidden */\n private _unsubscribeClicks(): void {\n if (this.tokenListClickSubscriptions && this.tokenListClickSubscriptions.length) {\n this.tokenListClickSubscriptions.forEach((subscription) => {\n subscription.unsubscribe();\n });\n }\n }\n\n /** @hidden */\n private _setupInputKeydownEvent(): void {\n this._eventListeners.push(\n this._renderer.listen(this.input.nativeElement, 'keydown', (event: KeyboardEvent) => {\n this.handleKeyDown(event, this.tokenList.length);\n })\n );\n }\n\n /** @hidden */\n private _setupInputFocusEvent(): void {\n this._eventListeners.push(\n this._renderer.listen(this.input.nativeElement, 'focus', () => {\n this._makeTokenizerFocusCountAnnouncement();\n })\n );\n }\n\n /** @hidden */\n private async _makeTokenizerFocusCountAnnouncement(): Promise<void> {\n const lang = this._langSignal();\n const message = this._translationResolver.resolve(lang, 'coreMultiInput.tokensCountText', {\n length: this.tokenList.length ? this.tokenList.length : 0\n });\n this._liveAnnouncer.announce(message);\n }\n\n /** @hidden Method which handles what happens to token when it is clicked and no key is being held down.*/\n private _basicSelected(token: TokenComponent, index: number): void {\n this.tokenList.forEach((shadowedToken) => {\n if (shadowedToken !== token) {\n shadowedToken.selected = false;\n }\n });\n this._firstElementInSelection = index;\n this._lastElementInSelection = index;\n token.selected = true;\n this._ctrlPrevious = false;\n }\n\n /** @hidden Restart first and last elements for shift selection.*/\n private resetFirstAndLastElement(): void {\n const reset = !this.tokenList.some((token) => token.selected);\n if (reset) {\n this._firstElementInSelection = null;\n this._lastElementInSelection = null;\n }\n }\n\n /** @hidden Method which handles what happens to token when it is clicked and the shift key is being held down.*/\n private _shiftSelected(index: number): void {\n if (!this._firstElementInSelection && !this._lastElementInSelection) {\n this._firstElementInSelection = index;\n this._lastElementInSelection = index;\n this._directionShiftIsRight = null;\n } else {\n if (this._firstElementInSelection && index < this._firstElementInSelection) {\n if (this._directionShiftIsRight) {\n this._lastElementInSelection = this._firstElementInSelection;\n }\n this._directionShiftIsRight = false;\n this._firstElementInSelection = index;\n } else if (this._lastElementInSelection && index > this._lastElementInSelection) {\n if (!this._directionShiftIsRight) {\n this._firstElementInSelection = this._lastElementInSelection;\n }\n this._directionShiftIsRight = true;\n this._lastElementInSelection = index;\n }\n if (!this._directionShiftIsRight) {\n this._firstElementInSelection = index;\n } else if (this._directionShiftIsRight) {\n this._lastElementInSelection = index;\n }\n }\n\n this.tokenList.forEach((token, indexOfToken) => {\n token.selected =\n this._firstElementInSelection != null &&\n this._lastElementInSelection != null &&\n indexOfToken >= this._firstElementInSelection &&\n indexOfToken <= this._lastElementInSelection;\n });\n this._ctrlPrevious = false;\n }\n\n /** @hidden Method which handles what happens to token when it is clicked and the control or meta key is being held down.*/\n private _ctrlSelected(token: TokenComponent, index: number): void {\n this._firstElementInSelection = null;\n this._lastElementInSelection = null;\n const selected = token.selected;\n token.selected = true;\n if (selected) {\n token.selected = false;\n this.tokenList.forEach((element, indexOfToken) => {\n if (!this._firstElementInSelection) {\n if (element.selected) {\n this._firstElementInSelection = indexOfToken;\n }\n } else {\n this._lastElementInSelection = indexOfToken;\n }\n });\n if (index === this._lastElementInSelection) {\n this._lastElementInSelection = this._lastElementInSelection! - 1;\n }\n if (index === this._firstElementInSelection) {\n this._firstElementInSelection = this._firstElementInSelection! - 1;\n }\n }\n this._ctrlPrevious = true;\n }\n\n /** Get selected and focused tokens */\n private _getActiveTokens(): TokenComponent[] {\n return this.tokenList.filter((item) => item.selected || this._isTokenFocused(item));\n }\n\n /** @hidden */\n private _getFocusedTokenIndex(): number {\n return this.tokenList.toArray().findIndex((token) => this._isTokenFocused(token));\n }\n\n /** @hidden */\n private _isTokenFocused(token: TokenComponent): boolean {\n return token.tokenWrapperElement.nativeElement === this._document.activeElement;\n }\n\n /** @hidden */\n private _isInputFocused(): boolean {\n return this._document.activeElement === this.input.nativeElement;\n }\n\n /** @hidden */\n private _tokensSelected(): boolean {\n return this.tokenList.some((t) => t.selected);\n }\n\n /** @hidden */\n private _getInputValue(): string {\n return this.input.nativeElement.value;\n }\n\n /** @hidden */\n private _focusInput(): void {\n this.input.nativeElement.focus();\n }\n\n /** @hidden */\n private _isControlKey(keyboardEvent: KeyboardEvent | MouseEvent): boolean {\n return keyboardEvent.ctrlKey || keyboardEvent.metaKey;\n }\n\n /** @hidden */\n private _listenElementEvents(): void {\n merge(\n fromEvent<Event>(this.elementRef.nativeElement, 'focus', { capture: true }).pipe(\n filter((event) => (event['target'] as any)?.tagName === 'INPUT' && this.tokenizerFocusable),\n map(() => true)\n ),\n fromEvent<Event>(this.elementRef.nativeElement, 'blur', { capture: true }).pipe(map(() => false))\n )\n .pipe(\n // debounceTime is needed in order to filter subsequent focus-blur events, that happen simultaneously\n debounceTime(10),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((focused) => {\n this._tokenizerHasFocus = focused;\n this._cdRef.markForCheck();\n });\n }\n\n /** @hidden Listen window resize and distribute cards on column change */\n private _listenOnResize(): void {\n this.onResize();\n resizeObservable(this.elementRef.nativeElement)\n .pipe(debounceTime(30), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this.onResize());\n }\n\n /** @hidden */\n private _checkMoreElementVisibility(): void {\n const showMoreElement =\n (this.moreTokensLeft.length > 0 || this.moreTokensRight.length > 0 || this.hiddenCozyTokenCount > 0) &&\n !this.open &&\n !this._tokenizerHasFocus;\n\n if (showMoreElement === this._showMoreElement) {\n return;\n }\n\n this._showMoreElement = showMoreElement;\n\n this._cdRef.detectChanges();\n }\n}\n","<div class=\"fd-tokenizer fd-tokenizer--scrollable\" [class.is-focus]=\"_tokenizerHasFocus\">\n <div class=\"fd-tokenizer__inner\" #tokenizerInner>\n <div\n [attr.aria-hidden]=\"tokenList.length === 0\"\n role=\"listbox\"\n [attr.aria-label]=\"('coreTokenizer.tokenizerLabel' | fdTranslate)()\"\n [style.width]=\"_tokensContainerWidth\"\n >\n <ng-content select=\"fd-token\"></ng-content>\n </div>\n @if (showOverflowPopover && (_contentDensityObserver.isCompactSignal() || compactCollapse)) {\n <ng-template [ngTemplateOutlet]=\"tokensOverflow\"></ng-template>\n } @else {\n @if (_showMoreElement && _hiddenTokens.length > 0) {\n <span (click)=\"moreClicked()\" #moreElementSpan class=\"fd-tokenizer-more\" role=\"button\" tabindex=\"-1\">\n @if (_contentDensityObserver.isCompactSignal() || compactCollapse) {\n {{\n (\n 'coreTokenizer.moreLabel'\n | fdTranslate: { count: moreTokensLeft.length + moreTokensRight.length }\n )()\n }}\n }\n @if (!_contentDensityObserver.isCompactSignal() && !compactCollapse) {\n {{ ('coreTokenizer.moreLabel' | fdTranslate: { count: hiddenCozyTokenCount })() }}\n }\n </span>\n }\n }\n <ng-content select=\"[fd-form-control]\"></ng-content>\n </div>\n @if (glyph) {\n <span fd-input-group-addon #inputGroupAddOn [button]=\"true\" placement=\"after\">\n <button\n fd-button\n class=\"fd-tokenizer-addon\"\n fdType=\"transparent\"\n [glyph]=\"glyph\"\n [glyphFont]=\"glyphFont\"\n type=\"button\"\n ></button>\n </span>\n }\n</div>\n<ng-template #tokensOverflow>\n <fd-popover placement=\"bottom-start\" title=\"\" [noArrow]=\"false\" [focusTrapped]=\"true\" [focusAutoCapture]=\"true\">\n <fd-popover-control>\n <ng-template [ngTemplateOutlet]=\"moreElement\"></ng-template>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list class=\"fd-tokenizer__overflow-list\">\n @for (token of _hiddenTokens; track token) {\n <li fd-list-item class=\"fd-tokenizer__overflow-list-item\">\n <ng-container #viewContainer></ng-container>\n @if (!token.readOnly) {\n <span\n class=\"fd-token__close\"\n role=\"button\"\n [attr.aria-label]=\"('coreToken.deleteButtonLabel' | fdTranslate)()\"\n (click)=\"token.closeClickHandler($event)\"\n ></span>\n }\n </li>\n }\n </ul>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n<ng-template #moreElement>\n @if (_showMoreElement && _hiddenTokens.length > 0) {\n <span (click)=\"moreClicked()\" #moreElementSpan class=\"fd-tokenizer-more\" role=\"button\" tabindex=\"-1\">\n @if (_contentDensityObserver.isCompactSignal() || compactCollapse) {\n {{\n (\n 'coreTokenizer.moreLabel'\n | fdTranslate: { count: moreTokensLeft.length + moreTokensRight.length }\n )()\n }}\n }\n @if (!_contentDensityObserver.isCompactSignal() && !compactCollapse) {\n {{ ('coreTokenizer.moreLabel' | fdTranslate: { count: hiddenCozyTokenCount })() }}\n }\n </span>\n }\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { TokenizerInputDirective } from './token-input.directive';\nimport { TokenComponent } from './token.component';\nimport { TokenizerComponent } from './tokenizer.component';\n\n/**\n * @deprecated\n * Use direct imports of `TokenComponent`, `TokenizerComponent`, `TokenizerInputDirective` instead\n */\n@NgModule({\n imports: [TokenComponent, TokenizerComponent, TokenizerInputDirective],\n exports: [TokenComponent, TokenizerComponent, TokenizerInputDirective]\n})\nexport class TokenModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;MAOa,uBAAuB,CAAA;AAJpC,IAAA,WAAA,GAAA;;AAUa,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAqB3C,IAAA;AAnBG;;;;AAIG;IAEH,sBAAsB,GAAA;AAClB,QAAA,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,KAAK,CAAC;IAC9C;;IAGA,QAAQ,GAAA;QACJ,IAAI,CAAC,sBAAsB,EAAE;IACjC;;IAGA,WAAW,GAAA;QACP,IAAI,CAAC,sBAAsB,EAAE;IACjC;8GA1BS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;AAchC,UAAA,CAAA;IADC,aAAa;;;;AAGb,CAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,IAAA,CAAA;2FAhBQ,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAJnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0CAA0C;AACpD,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAGI;;;ACgBL;;;AAGG;MAaU,cAAc,CAAA;;IAkBvB,IACI,QAAQ,CAAC,GAAY,EAAA;AACrB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,GAAG,EAAE;AACxB,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;QAC9B;AACA,QAAA,IAAI,CAAC,SAAS,GAAG,GAAG;IACxB;AAEA,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS;IACzB;;AA+CA,IAAA,WAAA,CACW,UAAsB,EACrB,MAAyB,EACxB,uBAA+C,EAAA;QAFjD,IAAA,CAAA,UAAU,GAAV,UAAU;QACT,IAAA,CAAA,MAAM,GAAN,MAAM;QACL,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;;QA3EpC,IAAA,CAAA,QAAQ,GAAG,KAAK;;QA4BhB,IAAA,CAAA,QAAQ,GAAG,KAAK;;AAKP,QAAA,IAAA,CAAA,YAAY,GAA6B,IAAI,YAAY,EAAc;;AAKvE,QAAA,IAAA,CAAA,QAAQ,GAAuB,IAAI,YAAY,EAAQ;;AAKhE,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAc;;AAK7C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAiB;AAElD;;AAEG;AAEH,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAW;;QASpC,IAAA,CAAA,SAAS,GAAG,KAAK;;AAGjB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;;AAG1B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;IAO9C;;IAGH,eAAe,GAAA;QACX,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAErD,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,OAAO;AACpD,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aACzC,SAAS,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;AAClC,QAAA,CAAC,CAAC;QAEN,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,MAAM;AACnD,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aACzC,SAAS,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AACnC,QAAA,CAAC,CAAC;IACV;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;IACrC;;AAGA,IAAA,iBAAiB,CAAC,KAAM,EAAA;QACpB,IAAI,KAAK,EAAE;YACP,KAAK,CAAC,eAAe,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;YACjC;QACJ;IACJ;;AAGA,IAAA,iBAAiB,CAAC,KAAK,EAAA;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IACjC;;AAGA,IAAA,mBAAmB,CAAC,KAAK,EAAA;AACrB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;AAC1C,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QACjC;IACJ;;IAGA,cAAc,CAAC,KAAa,EAAE,YAAoB,EAAA;AAC9C,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,YAAY;AACjC,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;IAC9B;8GAnIS,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,EAAA,EAAA,SAAA,EANZ,CAAC,+BAA+B,EAAE,CAAC,yTAoBV,gBAAgB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvDxD,2+BA8BA,EAAA,MAAA,EAAA,CAAA,gmOAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDSc,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAEhB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAZ1B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAAA,aAAA,EAGL,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,+BAA+B,EAAE,CAAC,EAAA,IAAA,EACxC;AACF,wBAAA,qBAAqB,EAAE;qBAC1B,EAAA,OAAA,EACQ,CAAC,eAAe,CAAC,EAAA,QAAA,EAAA,2+BAAA,EAAA,MAAA,EAAA,CAAA,gmOAAA,CAAA,EAAA;;sBAIzB;;sBAIA,SAAS;uBAAC,qBAAqB;;sBAI/B,SAAS;uBAAC,SAAS;;sBAInB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;;sBAIrD;;sBAYA;;sBAIA;;sBAKA;;sBAKA;;sBAKA;;sBAOA;;;ME3BQ,kBAAkB,CAAA;;IA0B3B,IAAkC,OAAO,CAAC,OAAgC,EAAA;AACtE,QAAA,IAAI,CAAC,iBAAiB,GAAG,OAAO;IACpC;;AAOA,IAAA,IAAI,aAAa,GAAA;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC;IACpG;;IAuHA,WAAA,CACa,uBAA+C,EACxC,UAAsB,EAC9B,MAAyB,EACzB,SAAoB,EACO,SAAmB,EACrC,cAA6B,EAAA;QALrC,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;QAChB,IAAA,CAAA,UAAU,GAAV,UAAU;QAClB,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,SAAS,GAAT,SAAS;QACkB,IAAA,CAAA,SAAS,GAAT,SAAS;QAC3B,IAAA,CAAA,cAAc,GAAd,cAAc;;QA3JnC,IAAA,CAAA,uBAAuB,GAAG,KAAK;;QAkC/B,IAAA,CAAA,eAAe,GAAG,KAAK;;QAIvB,IAAA,CAAA,kBAAkB,GAAG,IAAI;;QAYzB,IAAA,CAAA,SAAS,GAAa,2BAA2B;;QAIjD,IAAA,CAAA,QAAQ,GAAG,MAAM;;QAQjB,IAAA,CAAA,mBAAmB,GAAG,IAAI;;AAIjB,QAAA,IAAA,CAAA,gBAAgB,GAAsB,IAAI,YAAY,EAAO;;QAStE,IAAA,CAAA,cAAc,GAA0B,EAAE;;QAG1C,IAAA,CAAA,eAAe,GAA0B,EAAE;;QAS3C,IAAA,CAAA,2BAA2B,GAAmB,EAAE;;QAGhD,IAAA,CAAA,oBAAoB,GAAG,CAAC;;QAGxB,IAAA,CAAA,kBAAkB,GAAG,KAAK;;QAG1B,IAAA,CAAA,gBAAgB,GAAG,KAAK;;QAGxB,IAAA,CAAA,qBAAqB,GAAG,MAAM;;AAGtB,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,mBAAmB,EAAE;AAExD;;AAEG;QACK,IAAA,CAAA,wBAAwB,GAAkB,IAAI;AAEtD;;AAEG;QACK,IAAA,CAAA,uBAAuB,GAAkB,IAAI;AAOrD;;AAEG;QACK,IAAA,CAAA,sBAAsB,GAAmB,IAAI;;AAGpC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;QAGhC,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;QAGpD,IAAA,CAAA,eAAe,GAAmB,EAAE;;QAG7C,IAAA,CAAA,wBAAwB,GAAG,KAAK;;AAGhC,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC;;QAGjD,IAAA,CAAA,oBAAoB,GAAG,KAAK;;AAMnB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAWrD,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CACrB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAQ,KAAI;AAClD,YAAA,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE;gBAC5D,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC7B,oBAAA,KAAK,CAAC,QAAQ,GAAG,KAAK;AAC1B,gBAAA,CAAC,CAAC;YACN;QACJ,CAAC,CAAC,CACL;IACL;AAEA;;;;AAIG;IAEH,sBAAsB,GAAA;AAClB,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IACvB;;AAIA,IAAA,OAAO,CAAC,aAA4B,EAAA;QAChC,IACI,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;aACpD,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;AACnD,YAAA,CAAC,IAAI,CAAC,uBAAuB,EAC/B;AACE,YAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAChD,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACtD,YAAA,gBAAgB,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AAClE,YAAA,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,IAAI,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE;oBAC1C,IAAI,CAAC,WAAW,EAAE;gBACtB;qBAAO;AACH,oBAAA,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,CAAC,CAAC;gBACjD;YACJ;QACJ;AAEA,QAAA,IACI,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC;YAC3C,IAAI,CAAC,eAAe,EAAE;YACtB,CAAC,IAAI,CAAC,cAAc,EAAE;AACtB,YAAA,CAAC,IAAI,CAAC,uBAAuB,EAC/B;YACE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QACrD;IACJ;;IAGA,eAAe,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE;YAC3B,IAAI,CAAC,uBAAuB,EAAE;YAC9B,IAAI,CAAC,qBAAqB,EAAE;QAChC;;AAGA,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACxD,YAAA,IAAI,CAAC,4BAA4B,EAAE,WAAW,EAAE;AAChD,YAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,YAAY,EAAE;YACtD,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC7B,gBAAA,IAAI,CAAC,4BAA4B,CAAC,GAAG,CACjC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;oBAC9B,IAAI,CAAC,YAAY,EAAE;gBACvB,CAAC,CAAC,CACL;AACD,gBAAA,IAAI,CAAC,4BAA4B,CAAC,GAAG,CACjC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,SAAS,KAAI;AACzC,oBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC7C,CAAC,CAAC,CACL;AACL,YAAA,CAAC,CAAC;AACN,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAClE,IAAI,CAAC,qBAAqB,EAAE;QAChC;QACA,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;QACvF,IAAI,CAAC,eAAe,EAAE;IAC1B;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,4BAA4B,EAAE,WAAW,EAAE;AAChD,QAAA,IAAI,CAAC,uBAAuB,EAAE,WAAW,EAAE;AAC3C,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,kBAAkB,EAAE;IAC7B;;IAGA,QAAQ,GAAA;QACJ,IAAI,CAAC,sBAAsB,EAAE;IACjC;;IAGA,WAAW,GAAA;QACP,IAAI,CAAC,sBAAsB,EAAE;IACjC;;IAGA,6BAA6B,GAAA;QACzB,IAAI,CAAC,kBAAkB,EAAE;QACzB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACpC,YAAA,IAAI,KAAK,CAAC,mBAAmB,EAAE;gBAC3B,KAAK,CAAC,mBAAmB,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,CAAC;YACzD;AACA,YAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CACjC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;gBACnC,KAAK,CAAC,eAAe,EAAE;AACvB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC7B,gBAAA,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;AAC3B,oBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC;gBACpC;qBAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,EAAE;AAC9C,oBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC;gBACrC;AAAO,qBAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;oBACvB,IAAI,CAAC,wBAAwB,EAAE;AAC/B,oBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;gBAC9B;YACJ,CAAC,CAAC,CACL;AACD,YAAA,IAAI,CAAC,2BAA2B,CAAC,IAAI,CACjC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;AACrC,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC;YACpC,CAAC,CAAC,CACL;AACL,QAAA,CAAC,CAAC;IACN;;AAGA,IAAA,iBAAiB,CAAC,QAAgB,EAAA;AAC9B,QAAA,IAAI,cAAuC;QAC3C,MAAM,cAAc,GAAqB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;AACjE,QAAA,IAAI,cAAc,CAAC,QAAQ,CAAC,EAAE;YAC1B,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,mBAAmB,CAAC,aAAa;;YAE3E,cAAe,CAAC,KAAK,EAAE;QAC3B;AAEA,QAAA,OAAO,cAAc;IACzB;;IAGA,QAAQ,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;YAChF,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,oBAAoB,GAAG,YAAY;AACxC,YAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBAClE,IAAI,CAAC,qBAAqB,EAAE;YAChC;QACJ;IACJ;;IAGA,aAAa,CAAC,KAAoB,EAAE,SAAiB,EAAA;AACjD,QAAA,IAAI,QAA4B;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,KAAK;AAC5C,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;AAC5D,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,KAAK,KAAK,SAAS,CAAC;YACpE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,aAAa,KAAI;AACrC,gBAAA,IAAI,aAAa,KAAK,KAAK,EAAE;AACzB,oBAAA,aAAa,CAAC,QAAQ,GAAG,KAAK;gBAClC;AACJ,YAAA,CAAC,CAAC;YACF,KAAK,KAAK,KAAK,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC3C,KAAK,CAAC,cAAc,EAAE;QAC1B;aAAO,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;YACxC,IAAI,CAAC,WAAW,EAAE;QACtB;aAAO,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;YAC1C,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAChC,YAAA,QAAQ,GAAG,SAAS,GAAG,CAAC;QAC5B;aAAO,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;YAC7C,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;AACjC,YAAA,QAAQ,GAAG,SAAS,GAAG,CAAC;QAC5B;aAAO,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YAC3F,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;QAC9D;AACA,QAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;YAC5E,IAAI,CAAC,WAAW,EAAE;QACtB;AAAO,aAAA,IAAI,QAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YAClG,IAAI,CAAC,iBAAiB,CAAC,QAAS,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;QACnE;AAAO,aAAA,IAAI,QAAQ,IAAI,QAAQ,KAAK,CAAC,EAAE;AACnC,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;QACpC;IACJ;;IAGA,qBAAqB,GAAA;AACjB,QAAA,IAAI,eAAe,GAAG,IAAI,CAAC,gCAAgC,EAAE;;QAE7D,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC7B,YAAA,eAAe,GAAG,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;AACpG,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,eAAe;IAC1B;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;IAChC;;IAGA,oBAAoB,GAAA;AAChB,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAChD,QAAA,gBAAgB,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAClE;;IAGA,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;AACpC,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;QAChC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC7B,YAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC;YAC1C,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC3D,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,qBAAqB,GAAG,MAAM;AACnC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AAC3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,WAAW;IACpG;;IAGA,WAAW,GAAA;QACP,UAAU,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;YACjC,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;YAEtD,IAAI,YAAY,EAAE;gBACd,IAAI,CAAC,wBAAwB,EAAE;gBAC/B;YACJ;AACA,YAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK;YACrC,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AAC3B,YAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,WAAW;AACpG,QAAA,CAAC,CAAC;IACN;AAEA;;;AAGI;IACI,gBAAgB,CAAC,MAAqB,EAAE,GAAY,EAAA;AACxD,QAAA,MAAM,QAAQ,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;QACnD,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC9C;AAEA;;;AAGI;IACI,mBAAmB,CAAC,MAAqB,EAAE,GAAY,EAAA;AAC3D,QAAA,MAAM,WAAW,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC;QACtD,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;IACjD;;IAGQ,gCAAgC,GAAA;QACpC,IAAI,eAAe,GAAG,CAAC;;AAEvB,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE;AAC3B,YAAA,eAAe,GAAG,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;QAC9F;;AAEA,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;AACtF,YAAA,eAAe,GAAG,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;QACpG;;QAEA,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAChE,YAAA,eAAe,GAAG,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;QAC1G;AAEA,QAAA,OAAO,eAAe;IAC1B;;AAGQ,IAAA,gBAAgB,CAAC,SAAiB,EAAA;;QAEtC,IAAI,SAAS,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;YAC7C,IAAI,WAAW,EAAE;AACb,gBAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,UAAU,CAAC;YACpD;;AAEA,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;AAE7B,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;QAC/B;IACJ;;IAGQ,wBAAwB,GAAA;AAC5B,QAAA,IAAI,CAAC,uBAAuB,EAAE,WAAW,EAAE;;AAE3C,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;aAC/B,IAAI,CACD,YAAY,CAAC,CAAC,CAAC,EACf,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;aAEjE,SAAS,CAAC,MAAK;YACZ,IAAI,CAAC,WAAW,EAAE;AACtB,QAAA,CAAC,CAAC;IACV;;AAGQ,IAAA,iBAAiB,CAAC,SAAiB,EAAA;QACvC,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;YACtG,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE;YAC9C,IAAI,WAAW,EAAE;AACb,gBAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,UAAU,CAAC;YACpD;;AAEA,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAE5B,YAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;QAC/B;IACJ;;AAGQ,IAAA,eAAe,CAAC,IAAa,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;YAC/B;QACJ;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YAClE,IAAI,CAAC,wBAAwB,EAAE;YAC/B;QACJ;AACA,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,aAAa,KAAK,aAAa,CAAC,KAAK,EAAE,CAAC;AAErE,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,gCAAgC,EAAE;QAE9D,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7B,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;AAChG,YAAA,IAAI,CAAC,qBAAqB,GAAG,cAAc,GAAG,UAAU,GAAG,CAAA,YAAA,EAAe,cAAc,CAAA,GAAA,CAAK,GAAG,MAAM;YACtG;QACJ;aAAO;AACH,YAAA,IAAI,CAAC,qBAAqB,GAAG,MAAM;QACvC;QAEA,IAAI,CAAC,2BAA2B,EAAE;QAElC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAE1F,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;QAC9E,IAAI,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACtD,IAAI,CAAC,GAAG,CAAC;AACT;;;;;AAKG;AACH,QAAA,IAAI,IAAI,KAAK,OAAO,EAAE;YAClB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QACjC;QACA,OAAO,kBAAkB,GAAG,YAAY,KAAK,IAAI,KAAK,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;;YAEjG,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,YAAA,MAAM,UAAU,GAAG,IAAI,KAAK,OAAO,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc;YAEhF,IAAI,KAAK,EAAE;gBACP,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AAClC,oBAAA,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC1B;gBACA,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;YACzD;;YAEA,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK;YAC1E,IAAI,CAAC,2BAA2B,EAAE;AAClC,YAAA,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACjD,YAAA,IAAI,KAAK,OAAO,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE;QAChC;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AAC3B,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,KAAI;AAC9C,gBAAA,WAAW,CAAC,cAAc,CAAC,KAAK,EAAE;AAClC,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC,WAAW,CAAC,QAAQ,CAAC;AAC5E,YAAA,CAAC,CAAC;QACN;IACJ;;IAGQ,YAAY,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,QAAA,IAAI,IAAI,CAAC,uBAAuB,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,wBAAwB,EAAE;YACjG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAC7B,gBAAA,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,UAAU,CAAC;AAC9C,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;YAC1B,IAAI,CAAC,eAAe,EAAE;QAC1B;aAAO;YACH,IAAI,CAAC,wBAAwB,EAAE;QACnC;QACA,IAAI,CAAC,6BAA6B,EAAE;QACpC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM;QAC/C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AAChG,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;IAC9B;;IAGQ,wBAAwB,GAAA;AAC5B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,IAAI;AAC9E,QAAA,IAAI,CAAC,oBAAoB,GAAG,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;YAC7B,IACI,KAAK,CAAC,mBAAmB;AACzB,gBAAA,KAAK,CAAC,mBAAmB,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,WAAW,EACrF;AACE,gBAAA,IAAI,CAAC,oBAAoB,IAAI,CAAC;YAClC;AACJ,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,2BAA2B,EAAE;IACtC;;IAGQ,qBAAqB,GAAA;;AAEzB,QAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,WAAW;QAChG,IAAI,CAAC,wBAAwB,EAAE;AAC/B,QAAA,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC,EAAE;;AAE/B,YAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,WAAW;YAChG,IAAI,CAAC,wBAAwB,EAAE;QACnC;IACJ;;AAGQ,IAAA,mBAAmB,CAAC,UAAsB,EAAA;QAC9C,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,cAAc;QACvD,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;IACzD;;IAGQ,kBAAkB,GAAA;QACtB,IAAI,IAAI,CAAC,2BAA2B,IAAI,IAAI,CAAC,2BAA2B,CAAC,MAAM,EAAE;YAC7E,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;gBACtD,YAAY,CAAC,WAAW,EAAE;AAC9B,YAAA,CAAC,CAAC;QACN;IACJ;;IAGQ,uBAAuB,GAAA;QAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CACrB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,KAAoB,KAAI;YAChF,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QACpD,CAAC,CAAC,CACL;IACL;;IAGQ,qBAAqB,GAAA;QACzB,IAAI,CAAC,eAAe,CAAC,IAAI,CACrB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,EAAE,MAAK;YAC1D,IAAI,CAAC,oCAAoC,EAAE;QAC/C,CAAC,CAAC,CACL;IACL;;AAGQ,IAAA,MAAM,oCAAoC,GAAA;AAC9C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,EAAE,gCAAgC,EAAE;AACtF,YAAA,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG;AAC3D,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC;IACzC;;IAGQ,cAAc,CAAC,KAAqB,EAAE,KAAa,EAAA;QACvD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,aAAa,KAAI;AACrC,YAAA,IAAI,aAAa,KAAK,KAAK,EAAE;AACzB,gBAAA,aAAa,CAAC,QAAQ,GAAG,KAAK;YAClC;AACJ,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK;AACrC,QAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK;AACpC,QAAA,KAAK,CAAC,QAAQ,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;IAC9B;;IAGQ,wBAAwB,GAAA;AAC5B,QAAA,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,QAAQ,CAAC;QAC7D,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;AACpC,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;QACvC;IACJ;;AAGQ,IAAA,cAAc,CAAC,KAAa,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;AACjE,YAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK;AACrC,YAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK;AACpC,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;QACtC;aAAO;YACH,IAAI,IAAI,CAAC,wBAAwB,IAAI,KAAK,GAAG,IAAI,CAAC,wBAAwB,EAAE;AACxE,gBAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC7B,oBAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,wBAAwB;gBAChE;AACA,gBAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK;AACnC,gBAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK;YACzC;iBAAO,IAAI,IAAI,CAAC,uBAAuB,IAAI,KAAK,GAAG,IAAI,CAAC,uBAAuB,EAAE;AAC7E,gBAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAC9B,oBAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,uBAAuB;gBAChE;AACA,gBAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;AAClC,gBAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK;YACxC;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AAC9B,gBAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK;YACzC;AAAO,iBAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AACpC,gBAAA,IAAI,CAAC,uBAAuB,GAAG,KAAK;YACxC;QACJ;QAEA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,YAAY,KAAI;AAC3C,YAAA,KAAK,CAAC,QAAQ;gBACV,IAAI,CAAC,wBAAwB,IAAI,IAAI;oBACrC,IAAI,CAAC,uBAAuB,IAAI,IAAI;oBACpC,YAAY,IAAI,IAAI,CAAC,wBAAwB;AAC7C,oBAAA,YAAY,IAAI,IAAI,CAAC,uBAAuB;AACpD,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;IAC9B;;IAGQ,aAAa,CAAC,KAAqB,EAAE,KAAa,EAAA;AACtD,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI;AACpC,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI;AACnC,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ;AAC/B,QAAA,KAAK,CAAC,QAAQ,GAAG,IAAI;QACrB,IAAI,QAAQ,EAAE;AACV,YAAA,KAAK,CAAC,QAAQ,GAAG,KAAK;YACtB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,YAAY,KAAI;AAC7C,gBAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;AAChC,oBAAA,IAAI,OAAO,CAAC,QAAQ,EAAE;AAClB,wBAAA,IAAI,CAAC,wBAAwB,GAAG,YAAY;oBAChD;gBACJ;qBAAO;AACH,oBAAA,IAAI,CAAC,uBAAuB,GAAG,YAAY;gBAC/C;AACJ,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,KAAK,KAAK,IAAI,CAAC,uBAAuB,EAAE;gBACxC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAwB,GAAG,CAAC;YACpE;AACA,YAAA,IAAI,KAAK,KAAK,IAAI,CAAC,wBAAwB,EAAE;gBACzC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAyB,GAAG,CAAC;YACtE;QACJ;AACA,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;IAC7B;;IAGQ,gBAAgB,GAAA;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACvF;;IAGQ,qBAAqB,GAAA;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACrF;;AAGQ,IAAA,eAAe,CAAC,KAAqB,EAAA;QACzC,OAAO,KAAK,CAAC,mBAAmB,CAAC,aAAa,KAAK,IAAI,CAAC,SAAS,CAAC,aAAa;IACnF;;IAGQ,eAAe,GAAA;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,KAAK,IAAI,CAAC,KAAK,CAAC,aAAa;IACpE;;IAGQ,eAAe,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;IACjD;;IAGQ,cAAc,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK;IACzC;;IAGQ,WAAW,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE;IACpC;;AAGQ,IAAA,aAAa,CAAC,aAAyC,EAAA;AAC3D,QAAA,OAAO,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO;IACzD;;IAGQ,oBAAoB,GAAA;AACxB,QAAA,KAAK,CACD,SAAS,CAAQ,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAC5E,MAAM,CAAC,CAAC,KAAK,KAAM,KAAK,CAAC,QAAQ,CAAS,EAAE,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC,EAC3F,GAAG,CAAC,MAAM,IAAI,CAAC,CAClB,EACD,SAAS,CAAQ,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC;aAEhG,IAAI;;QAED,YAAY,CAAC,EAAE,CAAC,EAChB,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvC,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACnB,YAAA,IAAI,CAAC,kBAAkB,GAAG,OAAO;AACjC,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AAC9B,QAAA,CAAC,CAAC;IACV;;IAGQ,eAAe,GAAA;QACnB,IAAI,CAAC,QAAQ,EAAE;AACf,QAAA,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa;AACzC,aAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aAC3D,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzC;;IAGQ,2BAA2B,GAAA;QAC/B,MAAM,eAAe,GACjB,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,oBAAoB,GAAG,CAAC;YACnG,CAAC,IAAI,CAAC,IAAI;YACV,CAAC,IAAI,CAAC,kBAAkB;AAE5B,QAAA,IAAI,eAAe,KAAK,IAAI,CAAC,gBAAgB,EAAE;YAC3C;QACJ;AAEA,QAAA,IAAI,CAAC,gBAAgB,GAAG,eAAe;AAEvC,QAAA,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;IAC/B;AA5yBS,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,4IAiKf,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAjKX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EAbhB,CAAC,+BAA+B,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MA2Bf,oBAAoB,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAW,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MAJtC,cAAc,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAqBT,gBAAgB,kDCrG3D,04HAqFA,EAAA,MAAA,EAAA,CAAA,kpQAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED1BQ,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,wBAAwB,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,eAAe,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,cAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,uBAAuB,EAAA,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,oBAAoB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,aAAa,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,iBAAiB,sRACjB,eAAe,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;AAwLnB,UAAA,CAAA;IADC,aAAa;;;;AAGb,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,IAAA,CAAA;2FAvLQ,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAnB9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,aAAA,EAGT,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,CAAC,+BAA+B,EAAE,CAAC,EAAA,OAAA,EACrC;wBACL,gBAAgB;wBAChB,wBAAwB;wBACxB,eAAe;wBACf,gBAAgB;wBAChB,uBAAuB;wBACvB,oBAAoB;wBACpB,aAAa;wBACb,iBAAiB;wBACjB;AACH,qBAAA,EAAA,QAAA,EAAA,04HAAA,EAAA,MAAA,EAAA,CAAA,kpQAAA,CAAA,EAAA;;0BAmKI,MAAM;2BAAC,QAAQ;;sBA/JnB;;sBAIA;;sBAIA,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,cAAc,CAAC;;sBAIhD,YAAY;uBAAC,UAAU,CAAC,MAAM,oBAAoB,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;sBAIzE,SAAS;uBAAC,gBAAgB;;sBAI1B,SAAS;uBAAC,iBAAiB;;sBAI3B,SAAS;uBAAC,iBAAiB;;sBAK3B,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;;sBASxD;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAkHA,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;AE3PvC;;;AAGG;MAKU,WAAW,CAAA;8GAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAX,WAAW,EAAA,OAAA,EAAA,CAHV,cAAc,EAAE,kBAAkB,EAAE,uBAAuB,CAAA,EAAA,OAAA,EAAA,CAC3D,cAAc,EAAE,kBAAkB,EAAE,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAE5D,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YAHM,kBAAkB,CAAA,EAAA,CAAA,CAAA;;2FAGnC,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,cAAc,EAAE,kBAAkB,EAAE,uBAAuB,CAAC;AACtE,oBAAA,OAAO,EAAE,CAAC,cAAc,EAAE,kBAAkB,EAAE,uBAAuB;AACxE,iBAAA;;;ACZD;;AAEG;;;;"}
1
+ {"version":3,"file":"fundamental-ngx-core-token.mjs","sources":["../../../../libs/core/token/token-input.directive.ts","../../../../libs/core/token/token.component.ts","../../../../libs/core/token/token.component.html","../../../../libs/core/token/tokenizer.component.ts","../../../../libs/core/token/tokenizer.component.html","../../../../libs/core/token/token.module.ts","../../../../libs/core/token/fundamental-ngx-core-token.ts"],"sourcesContent":["import { Directive, ElementRef, Input, OnChanges, OnInit, inject } from '@angular/core';\nimport { CssClassBuilder, applyCssClass } from '@fundamental-ngx/cdk/utils';\n\n@Directive({\n selector: '[fdTokenizerInput], [fd-tokenizer-input]',\n standalone: true\n})\nexport class TokenizerInputDirective implements OnInit, OnChanges, CssClassBuilder {\n /** user's custom classes */\n @Input()\n class: string;\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden\n * CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return ['fd-tokenizer__input', this.class];\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n}\n","import { ENTER, SPACE } from '@angular/cdk/keycodes';\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { Subscription, fromEvent } from 'rxjs';\n\n/**\n * A token is used to represent contextualizing information.\n * They can be useful to show applied filters, selected values for form fields or object metadata.\n */\n@Component({\n selector: 'fd-token',\n templateUrl: './token.component.html',\n styleUrl: './token.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [contentDensityObserverProviders()],\n host: {\n '[style.max-width.%]': '100'\n },\n imports: [FdTranslatePipe]\n})\nexport class TokenComponent implements AfterViewInit, OnDestroy {\n /** Whether the token is disabled. */\n @Input()\n disabled = false;\n\n /** @hidden */\n @ViewChild('tokenWrapperElement')\n tokenWrapperElement: ElementRef;\n\n /** @hidden */\n @ViewChild('content')\n readonly _content: TemplateRef<any>;\n\n /** @hidden */\n @ViewChild('viewContainer', { read: ViewContainerRef })\n readonly _viewContainer: ViewContainerRef;\n\n /** Whether the token is selected. */\n @Input()\n set selected(val: boolean) {\n if (this._selected !== val) {\n this._cdRef.markForCheck();\n }\n this._selected = val;\n }\n\n get selected(): boolean {\n return this._selected;\n }\n /** Whether the token is read-only. */\n @Input()\n readOnly = false;\n\n /** Emitted when the *x* icon is clicked. Specifically, any pseudo-element. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onCloseClick: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();\n\n /** Emitted when token should be removed */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n readonly onRemove: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emitted when a token is clicked. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onTokenClick = new EventEmitter<MouseEvent>();\n\n /** Emitted when a there's a keydown registered on the token. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onTokenKeydown = new EventEmitter<KeyboardEvent>();\n\n /**\n * Emitted when token element received or lost focus.\n */\n @Output()\n elementFocused = new EventEmitter<boolean>();\n\n /** @hidden */\n _totalCount: number;\n\n /** @hidden */\n _itemPosition: number;\n\n /** @hidden */\n private _selected = false;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n private _cdRef: ChangeDetectorRef,\n readonly _contentDensityObserver: ContentDensityObserver\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._viewContainer.createEmbeddedView(this._content);\n\n fromEvent(this.tokenWrapperElement.nativeElement, 'focus')\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this.elementFocused.emit(true);\n });\n\n fromEvent(this.tokenWrapperElement.nativeElement, 'blur')\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => {\n this.elementFocused.emit(false);\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n closeClickHandler(event?): void {\n if (event) {\n event.stopPropagation();\n if (!this.disabled) {\n this.onCloseClick.emit(event);\n }\n }\n }\n\n /** @hidden */\n tokenClickHandler(event): void {\n this.onTokenClick.emit(event);\n }\n\n /** @hidden */\n tokenKeydownHandler(event): void {\n this.onTokenKeydown.emit(event);\n if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n this.onTokenClick.emit(event);\n }\n }\n\n /** @hidden */\n _setTotalCount(count: number, itemPosition: number): void {\n this._totalCount = count;\n this._itemPosition = itemPosition;\n this._cdRef.markForCheck();\n }\n}\n","<span\n #tokenWrapperElement\n class=\"fd-token\"\n role=\"option\"\n tabindex=\"0\"\n [attr.aria-roledescription]=\"'coreToken.ariaRoleDescription' | fdTranslate\"\n (click)=\"tokenClickHandler($event)\"\n (keydown)=\"tokenKeydownHandler($event)\"\n [attr.aria-setsize]=\"_totalCount\"\n [attr.aria-posinset]=\"_itemPosition\"\n [class.fd-token__disabled]=\"disabled\"\n [class.fd-token--selected]=\"selected\"\n [class.fd-token--readonly]=\"readOnly\"\n [attr.aria-selected]=\"selected\"\n>\n <span class=\"fd-token__text no-text-select\">\n <ng-container #viewContainer></ng-container>\n </span>\n @if (!readOnly) {\n <span\n (click)=\"closeClickHandler($event)\"\n role=\"button\"\n [attr.aria-label]=\"'coreToken.deleteButtonLabel' | fdTranslate\"\n class=\"fd-token__close\"\n ></span>\n }\n</span>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>\n","import { LiveAnnouncer } from '@angular/cdk/a11y';\nimport { A, BACKSPACE, DELETE, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n DOCUMENT,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n ViewChildren,\n ViewContainerRef,\n ViewEncapsulation,\n forwardRef,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n CssClassBuilder,\n KeyUtil,\n Nullable,\n RtlService,\n applyCssClass,\n resizeObservable\n} from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { FormControlComponent } from '@fundamental-ngx/core/form';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconFont } from '@fundamental-ngx/core/icon';\nimport { InputGroupAddOnDirective } from '@fundamental-ngx/core/input-group';\nimport { ListComponent, ListItemComponent } from '@fundamental-ngx/core/list';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { FD_LANGUAGE, FdLanguage, FdTranslatePipe, TranslationResolver } from '@fundamental-ngx/i18n';\nimport { BehaviorSubject, Observable, Subscription, firstValueFrom, fromEvent, merge, startWith } from 'rxjs';\nimport { debounceTime, filter, map } from 'rxjs/operators';\nimport { TokenComponent } from './token.component';\n\n@Component({\n selector: 'fd-tokenizer',\n templateUrl: './tokenizer.component.html',\n styleUrl: './tokenizer.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [contentDensityObserverProviders()],\n imports: [\n NgTemplateOutlet,\n InputGroupAddOnDirective,\n ButtonComponent,\n PopoverComponent,\n PopoverControlComponent,\n PopoverBodyComponent,\n ListComponent,\n ListItemComponent,\n FdTranslatePipe\n ]\n})\nexport class TokenizerComponent implements AfterViewInit, OnDestroy, CssClassBuilder, OnInit, OnChanges {\n /** user's custom classes */\n @Input()\n class: string;\n\n /** Disables possibility to remove tokens by keyboard */\n @Input()\n disableKeyboardDeletion = false;\n\n /** @hidden */\n @ContentChildren(forwardRef(() => TokenComponent))\n tokenList: QueryList<TokenComponent>;\n\n /** @hidden */\n @ContentChild(forwardRef(() => FormControlComponent), { read: ElementRef })\n input: ElementRef<HTMLInputElement>;\n\n /** @hidden */\n @ViewChild('tokenizerInner')\n tokenizerInnerEl: ElementRef<HTMLDivElement>;\n\n /** @hidden */\n @ViewChild('moreElementSpan')\n moreElement: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ViewChild('inputGroupAddOn') set content(content: ElementRef<HTMLElement>) {\n this.inputGroupAddonEl = content;\n }\n\n /** @hidden */\n @ViewChildren('viewContainer', { read: ViewContainerRef })\n readonly _viewContainer: QueryList<ViewContainerRef>;\n\n /** @hidden */\n get _hiddenTokens(): TokenComponent[] {\n return this.tokenList.filter((token) => token.elementRef.nativeElement.style.display === 'none');\n }\n\n /** Whether to use cozy visuals but compact collapsing behavior. */\n @Input()\n compactCollapse = false;\n\n /** Whether tokenizer should have fake focus indicator, when input is focused inside*/\n @Input()\n tokenizerFocusable = true;\n\n /** The value for the tokenizer input */\n @Input()\n inputValue: string;\n\n /** Icon of the button on the right of the input field. */\n @Input()\n glyph: string;\n\n /** Glyph font family */\n @Input()\n glyphFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n /** Word to use for when there are extra tokens. */\n @Input()\n moreTerm = 'more';\n\n /** @hidden */\n @Input()\n open: boolean;\n\n /** @Hidden */\n @Input()\n showOverflowPopover = true;\n\n /** Event emitted when the search term changes. Use *$event* to access the new term. */\n @Output()\n readonly moreClickedEvent: EventEmitter<any> = new EventEmitter<any>();\n\n /** @hidden */\n inputGroupAddonEl: ElementRef;\n\n /** @hidden */\n previousElementWidth: number;\n\n /** @hidden */\n moreTokensLeft: Array<TokenComponent> = [];\n\n /** @hidden */\n moreTokensRight: Array<TokenComponent> = [];\n\n /** @hidden */\n previousTokenCount: number;\n\n /** @hidden */\n tokenListChangesSubscription: Subscription;\n\n /** @hidden */\n tokenListClickSubscriptions: Subscription[] = [];\n\n /** @hidden */\n hiddenCozyTokenCount = 0;\n\n /** @hidden Used to add focus to tokenizer element */\n _tokenizerHasFocus = false;\n\n /** @hidden */\n _showMoreElement = false;\n\n /** @hidden */\n _tokensContainerWidth = 'auto';\n\n /** @hidden */\n private _translationResolver = new TranslationResolver();\n\n /** @hidden\n * Variable which will keep the index of the first token pressed in the tokenizer\n */\n private _firstElementInSelection: number | null = null;\n\n /** @hidden\n * Variable which will keep the index of the last token pressed in the tokenizer\n */\n private _lastElementInSelection: number | null = null;\n\n /** @hidden\n * Flag which will say if the last keyboard and click operation they used was using control\n */\n private _ctrlPrevious: boolean;\n\n /** @hidden\n * Flag which will say if they held shift and clicked highlighting elements before or\n */\n private _directionShiftIsRight: boolean | null = null;\n\n /** An RxJS Subject that will kill the data stream upon destruction (for unsubscribing) */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n private readonly _eventListeners: (() => void)[] = [];\n\n /** @hidden */\n private _forceAllTokensToDisplay = false;\n\n /** @hidden */\n private _tokenElementFocused = new BehaviorSubject(false);\n\n /** @hidden */\n private _inputElementFocused = false;\n\n /** @hidden */\n private _tokenElementFocusedSub: Nullable<Subscription>;\n\n /** @hidden */\n constructor(\n readonly _contentDensityObserver: ContentDensityObserver,\n public readonly elementRef: ElementRef,\n private _cdRef: ChangeDetectorRef,\n private _renderer: Renderer2,\n @Inject(DOCUMENT) private readonly _document: Document,\n private readonly _liveAnnouncer: LiveAnnouncer,\n @Inject(FD_LANGUAGE) private readonly _language$: Observable<FdLanguage>\n ) {\n this._eventListeners.push(\n this._renderer.listen('window', 'click', (e: Event) => {\n if (this.elementRef.nativeElement.contains(e.target) === false) {\n this.tokenList.forEach((token) => {\n token.selected = false;\n });\n }\n })\n );\n }\n\n /** @hidden\n * CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return [this.class];\n }\n\n /** @hidden */\n @HostListener('keydown', ['$event'])\n keyDown(keyboardEvent: KeyboardEvent): void {\n if (\n KeyUtil.isKeyCode(keyboardEvent, [DELETE, BACKSPACE]) &&\n (!this._isInputFocused() || this._tokensSelected()) &&\n !this.disableKeyboardDeletion\n ) {\n const selectedElements = this._getActiveTokens();\n const focusedTokenIndex = this._getFocusedTokenIndex();\n selectedElements.forEach((element) => element.onCloseClick.emit());\n if (selectedElements.length > 0) {\n if (KeyUtil.isKeyCode(keyboardEvent, DELETE)) {\n this._focusInput();\n } else {\n this.focusTokenElement(focusedTokenIndex - 1);\n }\n }\n }\n\n if (\n KeyUtil.isKeyCode(keyboardEvent, BACKSPACE) &&\n this._isInputFocused() &&\n !this._getInputValue() &&\n !this.disableKeyboardDeletion\n ) {\n this.focusTokenElement(this.tokenList.length - 1);\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.input?.nativeElement) {\n this._setupInputKeydownEvent();\n this._setupInputFocusEvent();\n }\n\n // watch for changes to the tokenList and attempt to expand/collapse tokens as needed\n this.tokenList.changes.pipe(startWith(null)).subscribe(() => {\n this.tokenListChangesSubscription?.unsubscribe();\n this.tokenListChangesSubscription = new Subscription();\n this._resetTokens();\n this.tokenList.forEach((token) => {\n this.tokenListChangesSubscription.add(\n token.onCloseClick.subscribe(() => {\n this._resetTokens();\n })\n );\n this.tokenListChangesSubscription.add(\n token.elementFocused.subscribe((isFocused) => {\n this._tokenElementFocused.next(isFocused);\n })\n );\n });\n });\n\n if (!this._contentDensityObserver.isCompact && !this.compactCollapse) {\n this._handleCozyTokenCount();\n }\n this._listenElementEvents();\n this.previousElementWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n this._listenOnResize();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this.tokenListChangesSubscription?.unsubscribe();\n this._tokenElementFocusedSub?.unsubscribe();\n this._eventListeners.forEach((e) => e());\n this._unsubscribeClicks();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n handleTokenClickSubscriptions(): void {\n this._unsubscribeClicks();\n this.tokenList.forEach((token, index) => {\n if (token.tokenWrapperElement) {\n token.tokenWrapperElement.nativeElement.tabIndex = -1;\n }\n this.tokenListClickSubscriptions.push(\n token.onTokenClick.subscribe((event) => {\n event.stopPropagation();\n this.focusTokenElement(index);\n if (this._isControlKey(event)) {\n this._ctrlSelected(token, index);\n } else if (!event.shiftKey || this._ctrlPrevious) {\n this._basicSelected(token, index);\n } else if (event.shiftKey) {\n this.resetFirstAndLastElement();\n this._shiftSelected(index);\n }\n })\n );\n this.tokenListClickSubscriptions.push(\n token.onTokenKeydown.subscribe((event) => {\n this.handleKeyDown(event, index);\n })\n );\n });\n }\n\n /** @hidden */\n focusTokenElement(newIndex: number): HTMLElement | undefined {\n let elementToFocus: HTMLElement | undefined;\n const tokenListArray: TokenComponent[] = this.tokenList.toArray();\n if (tokenListArray[newIndex]) {\n elementToFocus = tokenListArray[newIndex].tokenWrapperElement.nativeElement;\n // element needs tabindex in order to be focused\n elementToFocus!.focus();\n }\n\n return elementToFocus;\n }\n\n /** @hidden */\n onResize(): void {\n if (this.elementRef) {\n const elementWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n this._resetTokens();\n this.previousElementWidth = elementWidth;\n if (!this._contentDensityObserver.isCompact && !this.compactCollapse) {\n this._handleCozyTokenCount();\n }\n }\n }\n\n /** @hidden */\n handleKeyDown(event: KeyboardEvent, fromIndex: number): void {\n let newIndex: number | undefined;\n const rtl = this._rtlService?.rtl() ?? false;\n if (KeyUtil.isKeyCode(event, SPACE) && !this._isInputFocused()) {\n const token = this.tokenList.find((_, index) => index === fromIndex);\n this.tokenList.forEach((shadowedToken) => {\n if (shadowedToken !== token) {\n shadowedToken.selected = false;\n }\n });\n token && (token.selected = !token.selected);\n event.preventDefault();\n } else if (KeyUtil.isKeyCode(event, ENTER)) {\n this._focusInput();\n } else if (this._goBackRequested(event, rtl)) {\n event.preventDefault();\n this._handleArrowLeft(fromIndex);\n newIndex = fromIndex - 1;\n } else if (this._goForwardRequested(event, rtl)) {\n event.preventDefault();\n this._handleArrowRight(fromIndex);\n newIndex = fromIndex + 1;\n } else if (KeyUtil.isKeyCode(event, A) && !this._getInputValue() && this._isControlKey(event)) {\n event.preventDefault();\n this.tokenList.forEach((token) => (token.selected = true));\n }\n if (newIndex === this.tokenList.length && this._goForwardRequested(event, rtl)) {\n this._focusInput();\n } else if (newIndex! > this.tokenList.length - this.moreTokensRight.length && this._isInputFocused()) {\n this.focusTokenElement(newIndex! - this.moreTokensRight.length);\n } else if (newIndex || newIndex === 0) {\n this.focusTokenElement(newIndex);\n }\n }\n\n /** @hidden */\n getCombinedTokenWidth(): number {\n let totalTokenWidth = this._getTokensAreaWidthWithoutTokens();\n // get the width of each token\n this.tokenList.forEach((token) => {\n totalTokenWidth = totalTokenWidth + token.elementRef.nativeElement.getBoundingClientRect().width;\n });\n\n return totalTokenWidth;\n }\n\n /** @hidden */\n moreClicked(): void {\n this.moreClickedEvent.emit();\n }\n\n /** Removes all selected tokens */\n removeSelectedTokens(): void {\n const selectedElements = this._getActiveTokens();\n selectedElements.forEach((element) => element.onRemove.emit());\n }\n\n /** @hidden */\n _showAllTokens(): void {\n this._forceAllTokensToDisplay = true;\n this._inputElementFocused = true;\n this.tokenList.forEach((token) => {\n this._makeElementVisible(token.elementRef);\n token._viewContainer.createEmbeddedView(token._content);\n });\n this._tokensContainerWidth = 'auto';\n this._showMoreElement = false;\n this._cdRef.detectChanges();\n this.tokenizerInnerEl.nativeElement.scrollLeft = this.tokenizerInnerEl.nativeElement.scrollWidth;\n }\n\n /** @hidden */\n _hideTokens(): void {\n setTimeout(() => {\n this._inputElementFocused = false;\n const tokenFocused = this._getFocusedTokenIndex() > -1;\n\n if (tokenFocused) {\n this._waitForFocusToDisappear();\n return;\n }\n this._forceAllTokensToDisplay = false;\n this._resetTokens();\n this._cdRef.detectChanges();\n this.tokenizerInnerEl.nativeElement.scrollLeft = this.tokenizerInnerEl.nativeElement.scrollWidth;\n });\n }\n\n /**\n * @hidden\n * Check whether user intends to go back to the previous token\n **/\n private _goBackRequested($event: KeyboardEvent, rtl: boolean): boolean {\n const backKeys = rtl ? [RIGHT_ARROW] : [LEFT_ARROW];\n return KeyUtil.isKeyCode($event, backKeys);\n }\n\n /**\n * @hidden\n * Check whether user intends to go forward to the next token\n **/\n private _goForwardRequested($event: KeyboardEvent, rtl: boolean): boolean {\n const forwardKeys = rtl ? [LEFT_ARROW] : [RIGHT_ARROW];\n return KeyUtil.isKeyCode($event, forwardKeys);\n }\n\n /** @hidden */\n private _getTokensAreaWidthWithoutTokens(): number {\n let totalTokenWidth = 0;\n // add input width\n if (this.input?.nativeElement) {\n totalTokenWidth = totalTokenWidth + this.input.nativeElement.getBoundingClientRect().width;\n }\n // add the width of the \"____ more\" element\n if (this.moreTokensLeft.length > 0 && this.moreElement && this.moreElement.nativeElement) {\n totalTokenWidth = totalTokenWidth + this.moreElement.nativeElement.getBoundingClientRect().width;\n }\n // add the input group addon\n if (this.inputGroupAddonEl && this.inputGroupAddonEl.nativeElement) {\n totalTokenWidth = totalTokenWidth + this.inputGroupAddonEl.nativeElement.getBoundingClientRect().width;\n }\n\n return totalTokenWidth;\n }\n\n /** @hidden */\n private _handleArrowLeft(fromIndex: number): void {\n // if the leftmost visible token is selected, and there are moreTokensLeft, need to display a moreTokenLeft\n if (fromIndex === this.moreTokensLeft.length) {\n const poppedToken = this.moreTokensLeft.pop();\n if (poppedToken) {\n this._makeElementVisible(poppedToken.elementRef);\n }\n // and then hide any tokens from the right that no longer fit\n this._collapseTokens('right');\n\n this._cdRef.detectChanges();\n }\n }\n\n /** @hidden */\n private _waitForFocusToDisappear(): void {\n this._tokenElementFocusedSub?.unsubscribe();\n // 5 ms delay for other token to receive focus, check if _showAllTokens was called again\n this._tokenElementFocusedSub = this._tokenElementFocused\n .pipe(\n debounceTime(5),\n filter((isFocused) => isFocused && !this._inputElementFocused)\n )\n .subscribe(() => {\n this._hideTokens();\n });\n }\n\n /** @hidden */\n private _handleArrowRight(fromIndex: number): void {\n if (fromIndex === this.tokenList.length - this.moreTokensRight.length - 1 && this.moreTokensRight.length) {\n const poppedToken = this.moreTokensRight.pop();\n if (poppedToken) {\n this._makeElementVisible(poppedToken.elementRef);\n }\n // and then hide any tokens from the left that no longer fit\n this._collapseTokens('left');\n\n this._cdRef.detectChanges();\n }\n }\n\n /** @hidden */\n private _collapseTokens(side?: string): void {\n if (this._forceAllTokensToDisplay) {\n return;\n }\n if (!this._contentDensityObserver.isCompact && !this.compactCollapse) {\n this._getHiddenCozyTokenCount();\n return;\n }\n this._cdRef.detectChanges();\n this._viewContainer.forEach((viewContainer) => viewContainer.clear());\n\n const availableWidth = this._getTokensAreaWidthWithoutTokens();\n\n if (this.tokenList.length === 1) {\n const tokenWidth = this.tokenList.get(0)?.elementRef.nativeElement.getBoundingClientRect().width;\n this._tokensContainerWidth = availableWidth < tokenWidth ? `calc(100% - ${availableWidth}px)` : 'auto';\n return;\n } else {\n this._tokensContainerWidth = 'auto';\n }\n\n this._checkMoreElementVisibility();\n\n this.tokenList.forEach((token) => token._viewContainer.createEmbeddedView(token._content));\n\n let elementWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n let combinedTokenWidth = this.getCombinedTokenWidth(); // the combined width of all tokens, the \"____ more\" text, and the input\n let i = 0;\n /*\n When resizing, we want to collapse the tokens on the left first. However, when the user is navigating through\n a group of overflowing tokens using the arrow left key, we may need to hide tokens on the right. So if this\n function has been called with the param 'right' it will collapse tokens from the right side of the list rather\n than the (default) left side.\n */\n if (side === 'right') {\n i = this.tokenList.length - 1;\n }\n while (combinedTokenWidth > elementWidth && (side === 'right' ? i >= 0 : i < this.tokenList.length)) {\n // loop through the tokens and hide them until the combinedTokenWidth fits in the elementWidth\n const token = this.tokenList.get(i);\n const moreTokens = side === 'right' ? this.moreTokensRight : this.moreTokensLeft;\n\n if (token) {\n if (moreTokens.indexOf(token) === -1) {\n moreTokens.push(token);\n }\n token.elementRef.nativeElement.style.display = 'none';\n }\n // get the new elementWidth and combinedTokenWidth as these will have changed after setting a token display to 'none'\n elementWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n this._checkMoreElementVisibility();\n combinedTokenWidth = this.getCombinedTokenWidth();\n side === 'right' ? i-- : i++;\n }\n\n this._cdRef.detectChanges();\n if (this.showOverflowPopover) {\n this._hiddenTokens.forEach((hiddenToken, index) => {\n hiddenToken._viewContainer.clear();\n this._viewContainer.get(index)?.createEmbeddedView(hiddenToken._content);\n });\n }\n }\n\n /** @hidden */\n private _resetTokens(): void {\n this.moreTokensLeft = [];\n this.moreTokensRight = [];\n if (this._contentDensityObserver.isCompact || this.compactCollapse || this._forceAllTokensToDisplay) {\n this.tokenList.forEach((token) => {\n this._makeElementVisible(token.elementRef);\n });\n this._cdRef.markForCheck();\n this._collapseTokens();\n } else {\n this._getHiddenCozyTokenCount();\n }\n this.handleTokenClickSubscriptions();\n this.previousTokenCount = this.tokenList.length;\n this.tokenList.forEach((token, index) => token._setTotalCount(this.tokenList.length, index + 1));\n this._cdRef.markForCheck();\n }\n\n /** @hidden */\n private _getHiddenCozyTokenCount(): void {\n const elementLeft = this.elementRef.nativeElement.getBoundingClientRect().left;\n this.hiddenCozyTokenCount = 0;\n this.tokenList.forEach((token) => {\n if (\n token.tokenWrapperElement &&\n token.tokenWrapperElement.nativeElement.getBoundingClientRect().right < elementLeft\n ) {\n this.hiddenCozyTokenCount += 1;\n }\n });\n\n this._checkMoreElementVisibility();\n }\n\n /** @hidden */\n private _handleCozyTokenCount(): void {\n // because justify-content breaks scrollbar, it cannot be used on cozy screens, so use JS to scroll to the end\n this.tokenizerInnerEl.nativeElement.scrollLeft = this.tokenizerInnerEl.nativeElement.scrollWidth;\n this._getHiddenCozyTokenCount();\n if (this.hiddenCozyTokenCount > 0) {\n // need to do this again in case \"____ more\" text was added\n this.tokenizerInnerEl.nativeElement.scrollLeft = this.tokenizerInnerEl.nativeElement.scrollWidth;\n this._getHiddenCozyTokenCount();\n }\n }\n\n /** @hidden */\n private _makeElementVisible(elementRef: ElementRef): void {\n elementRef.nativeElement.style.display = 'inline-block';\n elementRef.nativeElement.style.visibility = 'visible';\n }\n\n /** @hidden */\n private _unsubscribeClicks(): void {\n if (this.tokenListClickSubscriptions && this.tokenListClickSubscriptions.length) {\n this.tokenListClickSubscriptions.forEach((subscription) => {\n subscription.unsubscribe();\n });\n }\n }\n\n /** @hidden */\n private _setupInputKeydownEvent(): void {\n this._eventListeners.push(\n this._renderer.listen(this.input.nativeElement, 'keydown', (event: KeyboardEvent) => {\n this.handleKeyDown(event, this.tokenList.length);\n })\n );\n }\n\n /** @hidden */\n private _setupInputFocusEvent(): void {\n this._eventListeners.push(\n this._renderer.listen(this.input.nativeElement, 'focus', () => {\n this._makeTokenizerFocusCountAnnouncement();\n })\n );\n }\n\n /** @hidden */\n private async _makeTokenizerFocusCountAnnouncement(): Promise<void> {\n const lang = await firstValueFrom(this._language$);\n const message = this._translationResolver.resolve(lang, 'coreMultiInput.tokensCountText', {\n length: this.tokenList.length ? this.tokenList.length : 0\n });\n this._liveAnnouncer.announce(message);\n }\n\n /** @hidden Method which handles what happens to token when it is clicked and no key is being held down.*/\n private _basicSelected(token: TokenComponent, index: number): void {\n this.tokenList.forEach((shadowedToken) => {\n if (shadowedToken !== token) {\n shadowedToken.selected = false;\n }\n });\n this._firstElementInSelection = index;\n this._lastElementInSelection = index;\n token.selected = true;\n this._ctrlPrevious = false;\n }\n\n /** @hidden Restart first and last elements for shift selection.*/\n private resetFirstAndLastElement(): void {\n const reset = !this.tokenList.some((token) => token.selected);\n if (reset) {\n this._firstElementInSelection = null;\n this._lastElementInSelection = null;\n }\n }\n\n /** @hidden Method which handles what happens to token when it is clicked and the shift key is being held down.*/\n private _shiftSelected(index: number): void {\n if (!this._firstElementInSelection && !this._lastElementInSelection) {\n this._firstElementInSelection = index;\n this._lastElementInSelection = index;\n this._directionShiftIsRight = null;\n } else {\n if (this._firstElementInSelection && index < this._firstElementInSelection) {\n if (this._directionShiftIsRight) {\n this._lastElementInSelection = this._firstElementInSelection;\n }\n this._directionShiftIsRight = false;\n this._firstElementInSelection = index;\n } else if (this._lastElementInSelection && index > this._lastElementInSelection) {\n if (!this._directionShiftIsRight) {\n this._firstElementInSelection = this._lastElementInSelection;\n }\n this._directionShiftIsRight = true;\n this._lastElementInSelection = index;\n }\n if (!this._directionShiftIsRight) {\n this._firstElementInSelection = index;\n } else if (this._directionShiftIsRight) {\n this._lastElementInSelection = index;\n }\n }\n\n this.tokenList.forEach((token, indexOfToken) => {\n token.selected =\n this._firstElementInSelection != null &&\n this._lastElementInSelection != null &&\n indexOfToken >= this._firstElementInSelection &&\n indexOfToken <= this._lastElementInSelection;\n });\n this._ctrlPrevious = false;\n }\n\n /** @hidden Method which handles what happens to token when it is clicked and the control or meta key is being held down.*/\n private _ctrlSelected(token: TokenComponent, index: number): void {\n this._firstElementInSelection = null;\n this._lastElementInSelection = null;\n const selected = token.selected;\n token.selected = true;\n if (selected) {\n token.selected = false;\n this.tokenList.forEach((element, indexOfToken) => {\n if (!this._firstElementInSelection) {\n if (element.selected) {\n this._firstElementInSelection = indexOfToken;\n }\n } else {\n this._lastElementInSelection = indexOfToken;\n }\n });\n if (index === this._lastElementInSelection) {\n this._lastElementInSelection = this._lastElementInSelection! - 1;\n }\n if (index === this._firstElementInSelection) {\n this._firstElementInSelection = this._firstElementInSelection! - 1;\n }\n }\n this._ctrlPrevious = true;\n }\n\n /** Get selected and focused tokens */\n private _getActiveTokens(): TokenComponent[] {\n return this.tokenList.filter((item) => item.selected || this._isTokenFocused(item));\n }\n\n /** @hidden */\n private _getFocusedTokenIndex(): number {\n return this.tokenList.toArray().findIndex((token) => this._isTokenFocused(token));\n }\n\n /** @hidden */\n private _isTokenFocused(token: TokenComponent): boolean {\n return token.tokenWrapperElement.nativeElement === this._document.activeElement;\n }\n\n /** @hidden */\n private _isInputFocused(): boolean {\n return this._document.activeElement === this.input.nativeElement;\n }\n\n /** @hidden */\n private _tokensSelected(): boolean {\n return this.tokenList.some((t) => t.selected);\n }\n\n /** @hidden */\n private _getInputValue(): string {\n return this.input.nativeElement.value;\n }\n\n /** @hidden */\n private _focusInput(): void {\n this.input.nativeElement.focus();\n }\n\n /** @hidden */\n private _isControlKey(keyboardEvent: KeyboardEvent | MouseEvent): boolean {\n return keyboardEvent.ctrlKey || keyboardEvent.metaKey;\n }\n\n /** @hidden */\n private _listenElementEvents(): void {\n merge(\n fromEvent<Event>(this.elementRef.nativeElement, 'focus', { capture: true }).pipe(\n filter((event) => (event['target'] as any)?.tagName === 'INPUT' && this.tokenizerFocusable),\n map(() => true)\n ),\n fromEvent<Event>(this.elementRef.nativeElement, 'blur', { capture: true }).pipe(map(() => false))\n )\n .pipe(\n // debounceTime is needed in order to filter subsequent focus-blur events, that happen simultaneously\n debounceTime(10),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((focused) => {\n this._tokenizerHasFocus = focused;\n this._cdRef.markForCheck();\n });\n }\n\n /** @hidden Listen window resize and distribute cards on column change */\n private _listenOnResize(): void {\n this.onResize();\n resizeObservable(this.elementRef.nativeElement)\n .pipe(debounceTime(30), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this.onResize());\n }\n\n /** @hidden */\n private _checkMoreElementVisibility(): void {\n const showMoreElement =\n (this.moreTokensLeft.length > 0 || this.moreTokensRight.length > 0 || this.hiddenCozyTokenCount > 0) &&\n !this.open &&\n !this._tokenizerHasFocus;\n\n if (showMoreElement === this._showMoreElement) {\n return;\n }\n\n this._showMoreElement = showMoreElement;\n\n this._cdRef.detectChanges();\n }\n}\n","<div class=\"fd-tokenizer fd-tokenizer--scrollable\" [class.is-focus]=\"_tokenizerHasFocus\">\n <div class=\"fd-tokenizer__inner\" #tokenizerInner>\n <div\n [attr.aria-hidden]=\"tokenList.length === 0\"\n role=\"listbox\"\n [attr.aria-label]=\"'coreTokenizer.tokenizerLabel' | fdTranslate\"\n [style.width]=\"_tokensContainerWidth\"\n >\n <ng-content select=\"fd-token\"></ng-content>\n </div>\n @if (showOverflowPopover && (_contentDensityObserver.isCompactSignal() || compactCollapse)) {\n <ng-template [ngTemplateOutlet]=\"tokensOverflow\"></ng-template>\n } @else {\n @if (_showMoreElement && _hiddenTokens.length > 0) {\n <span (click)=\"moreClicked()\" #moreElementSpan class=\"fd-tokenizer-more\" role=\"button\" tabindex=\"-1\">\n @if (_contentDensityObserver.isCompactSignal() || compactCollapse) {\n {{\n 'coreTokenizer.moreLabel'\n | fdTranslate: { count: moreTokensLeft.length + moreTokensRight.length }\n }}\n }\n @if (!_contentDensityObserver.isCompactSignal() && !compactCollapse) {\n {{ 'coreTokenizer.moreLabel' | fdTranslate: { count: hiddenCozyTokenCount } }}\n }\n </span>\n }\n }\n <ng-content select=\"[fd-form-control]\"></ng-content>\n </div>\n @if (glyph) {\n <span fd-input-group-addon #inputGroupAddOn [button]=\"true\" placement=\"after\">\n <button\n fd-button\n class=\"fd-tokenizer-addon\"\n fdType=\"transparent\"\n [glyph]=\"glyph\"\n [glyphFont]=\"glyphFont\"\n type=\"button\"\n ></button>\n </span>\n }\n</div>\n<ng-template #tokensOverflow>\n <fd-popover placement=\"bottom-start\" title=\"\" [noArrow]=\"false\" [focusTrapped]=\"true\" [focusAutoCapture]=\"true\">\n <fd-popover-control>\n <ng-template [ngTemplateOutlet]=\"moreElement\"></ng-template>\n </fd-popover-control>\n <fd-popover-body>\n <ul fd-list class=\"fd-tokenizer__overflow-list\">\n @for (token of _hiddenTokens; track token) {\n <li fd-list-item class=\"fd-tokenizer__overflow-list-item\">\n <ng-container #viewContainer></ng-container>\n @if (!token.readOnly) {\n <span\n class=\"fd-token__close\"\n role=\"button\"\n [attr.aria-label]=\"'coreToken.deleteButtonLabel' | fdTranslate\"\n (click)=\"token.closeClickHandler($event)\"\n ></span>\n }\n </li>\n }\n </ul>\n </fd-popover-body>\n </fd-popover>\n</ng-template>\n<ng-template #moreElement>\n @if (_showMoreElement && _hiddenTokens.length > 0) {\n <span (click)=\"moreClicked()\" #moreElementSpan class=\"fd-tokenizer-more\" role=\"button\" tabindex=\"-1\">\n @if (_contentDensityObserver.isCompactSignal() || compactCollapse) {\n {{ 'coreTokenizer.moreLabel' | fdTranslate: { count: moreTokensLeft.length + moreTokensRight.length } }}\n }\n @if (!_contentDensityObserver.isCompactSignal() && !compactCollapse) {\n {{ 'coreTokenizer.moreLabel' | fdTranslate: { count: hiddenCozyTokenCount } }}\n }\n </span>\n }\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { TokenizerInputDirective } from './token-input.directive';\nimport { TokenComponent } from './token.component';\nimport { TokenizerComponent } from './tokenizer.component';\n\n/**\n * @deprecated\n * Use direct imports of `TokenComponent`, `TokenizerComponent`, `TokenizerInputDirective` instead\n */\n@NgModule({\n imports: [TokenComponent, TokenizerComponent, TokenizerInputDirective],\n exports: [TokenComponent, TokenizerComponent, TokenizerInputDirective]\n})\nexport class TokenModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -11,7 +11,6 @@ import { contentDensityObserverProviders, ContentDensityMode, ContentDensityModu
11
11
  import * as i3 from '@fundamental-ngx/core/popover';
12
12
  import { PopoverModule } from '@fundamental-ngx/core/popover';
13
13
  import { TitleComponent, TitleToken } from '@fundamental-ngx/core/title';
14
- import { FdTranslatePipe } from '@fundamental-ngx/i18n';
15
14
  import { BehaviorSubject, combineLatest, map, switchMap, EMPTY, filter, first } from 'rxjs';
16
15
 
17
16
  class ToolbarItem {
@@ -506,7 +505,7 @@ class ToolbarComponent {
506
505
  provide: FD_TOOLBAR,
507
506
  useExisting: ToolbarComponent
508
507
  }
509
- ], queries: [{ propertyName: "toolbarItems", predicate: ToolbarItem, descendants: true, isSignal: true }, { propertyName: "spacerDirectives", predicate: ToolbarSpacerDirective, isSignal: true }, { propertyName: "separatorDirectives", predicate: ToolbarSeparatorComponent, isSignal: true }, { propertyName: "titleComponent", first: true, predicate: TitleToken, descendants: true }], viewQueries: [{ propertyName: "titleElement", first: true, predicate: ["titleElement"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if (title) {\n <span\n fd-title\n role=\"heading\"\n [headerSize]=\"4\"\n [attr.aria-level]=\"_headingLevel\"\n class=\"fd-toolbar__title\"\n [id]=\"titleId\"\n #titleElement\n >\n {{ title }}\n </span>\n}\n<ng-content></ng-content>\n@if (overflownItems.length > 0) {\n @if (!spacerUsed()) {\n <fd-toolbar-spacer></fd-toolbar-spacer>\n }\n <fd-toolbar-separator></fd-toolbar-separator>\n <fd-popover placement=\"bottom-end\" [noArrow]=\"true\" class=\"fd-popover\" [focusAutoCapture]=\"true\">\n <fd-popover-control>\n <button\n fd-button\n [title]=\"('coreToolbar.moreButton' | fdTranslate)()\"\n [attr.aria-label]=\"('coreToolbar.moreButton' | fdTranslate)()\"\n aria-haspopup=\"true\"\n fdType=\"transparent\"\n glyph=\"overflow\"\n ></button>\n </fd-popover-control>\n <fd-popover-body>\n <div class=\"fd-toolbar__overflow\">\n @for (overflowedItem of overflownItems; track overflowedItem) {\n <fdk-dynamic-portal\n [domElement]=\"overflowedItem.element\"\n [style.display]=\"overflowedItem.priority === 'disappear' ? 'none' : 'flex'\"\n [style.flex-direction]=\"overflowedItem.priority === 'disappear' ? undefined : 'column'\"\n >\n </fdk-dynamic-portal>\n }\n </div>\n </fd-popover-body>\n </fd-popover>\n}\n", styles: [".fd-toolbar{--fdToolbar_Height:2.75rem;--fdToolbar_Separator_Margin:0;--fdToolbar_Padding_Left:.5rem;--fdToolbar_Padding_Right:.5rem;--fdToolbar_Separator_Height:2rem;--fdToolbar_Overflow_Max_Width:100%;--fdToolbar_Separator_Width:.0625rem;--fdToolbar_Info_Color:var(--sapList_TextColor);--fdToolbar_Background:var(--sapToolbar_Background);--fdToolbar_Border_Bottom:.0625rem solid var(--sapGroup_TitleBorderColor);--fdToolbar_Border_Top:.0625rem solid var(--sapPageFooter_BorderColor);border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:.5rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:var(--fdToolbar_Background);border-bottom:var(--fdToolbar_Border_Bottom);height:var(--fdToolbar_Height);padding-inline:var(--fdToolbar_Padding_Left) var(--fdToolbar_Padding_Right)}.fd-toolbar:after,.fd-toolbar:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-toolbar__spacer{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-flex:1;-ms-flex:1 auto;flex:1 auto}.fd-toolbar__spacer:after,.fd-toolbar__spacer:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-toolbar__spacer--fixed{-webkit-box-flex:0;display:inline-block;-ms-flex:none;flex:none}.fd-toolbar__separator{background-color:var(--sapToolbar_SeparatorColor);border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdToolbar_Separator_Height);line-height:normal;margin-block:0;margin-block:var(--fdToolbar_Separator_Margin);margin-inline:0;padding-block:0;padding-inline:0;width:var(--fdToolbar_Separator_Width)}.fd-toolbar__separator:after,.fd-toolbar__separator:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;--fdToolbar_Separator_Width:auto;--fdToolbar_Separator_Height:.0625rem;--fdToolbar_Separator_Margin:.1875rem;--fdToolbar_Overflow_Padding_Block:.25rem;--fdToolbar_Overflow_Padding_Inline:.5rem;max-height:50vh;max-width:var(--fdToolbar_Overflow_Max_Width);overflow:auto;padding-block:var(--fdToolbar_Overflow_Padding_Block);padding-inline:var(--fdToolbar_Overflow_Padding_Inline)}.fd-toolbar__overflow:after,.fd-toolbar__overflow:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow[class*=-compact],.fd-toolbar__overflow[class*=-condensed],[class*=-compact] .fd-toolbar__overflow:not([class*=-cozy]),[class*=-condensed] .fd-toolbar__overflow:not([class*=-cozy]){--fdToolbar_Overflow_Padding_Block:.1875rem;--fdToolbar_Overflow_Padding_Inline:.375rem}.fd-toolbar__overflow .fd-toolbar__overflow-button{margin-block:.1875rem;margin-inline:0;text-align:left;width:auto;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.fd-toolbar__overflow .fd-toolbar__overflow-button[dir=rtl],[dir=rtl] .fd-toolbar__overflow .fd-toolbar__overflow-button{text-align:right}.fd-toolbar__overflow .fd-toolbar__overflow-button--menu{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;max-width:100%}.fd-toolbar__overflow .fd-toolbar__overflow-form-label{margin-block:.625rem .125rem;margin-inline:0}.fd-toolbar__overflow .fd-toolbar__overflow-label{margin-block:.375rem;margin-inline:0}.fd-toolbar .fd-toolbar__title{--fdTitle_Font_Size:var(--sapGroup_Title_FontSize);--fdTitle_Color:var(--sapGroup_TitleTextColor)}.fd-toolbar--auto{--fdToolbar_Background:var(--fdToolbar_Auto_Background)}.fd-toolbar--solid{--fdToolbar_Background:var(--fdToolbar_Solid_Background)}.fd-toolbar--transparent{--fdToolbar_Background:var(--fdToolbar_Transparent_Background)}.fd-toolbar--ai,.fd-toolbar--clear{--fdToolbar_Border_Bottom:none}.fd-toolbar--ai{--fdToolbar_Background:var(--fdToolbar_Transparent_Background);--fdToolbar_Padding_Left:.5rem;--fdToolbar_Padding_Right:.25rem}.fd-toolbar--ai.is-active{--fdToolbar_Background:var(--fdToolbar_Solid_Background);border-top:var(--fdToolbar_Border_Top)}.fd-toolbar--title{--fdToolbar_Height:2.75rem;--fdToolbar_Padding_Left:1rem;--fdToolbar_Background:var(--sapGroup_TitleBackground)}.fd-toolbar.fd-toolbar--title-bar{padding-block:.375rem;--fdToolbar_Height:auto;--fdToolbar_Padding_Left:.75rem;--fdToolbar_Padding_Right:.75rem}.fd-toolbar--info{color:var(--fdToolbar_Info_Color);position:relative;--fdToolbar_Height:2rem;--fdToolbar_Background:var(--sapInfobar_NonInteractive_Background)}.fd-toolbar--info [class*=sap-icon]{color:var(--sapList_TextColor);font-size:1rem;height:1rem;line-height:1rem}.fd-toolbar--active{outline:none;position:relative;--fdToolbar_Background:var(--sapInfobar_Background);--fdToolbar_Info_Color:var(--sapInfobar_TextColor)}.fd-toolbar--active.is-focus:after,.fd-toolbar--active:focus:after{border-color:var(--sapContent_FocusColor);border-style:var(--sapContent_FocusStyle);border-width:var(--sapContent_FocusWidth);content:\"\";inset:.0625rem;pointer-events:none;position:absolute}.fd-toolbar--active.is-hover,.fd-toolbar--active:hover{--fdToolbar_Background:var(--sapInfobar_Hover_Background)}.fd-toolbar--active.is-active,.fd-toolbar--active:active{--fdToolbar_Background:var(--sapInfobar_Active_Background)}.fd-toolbar--active.is-focus,.fd-toolbar--active:focus{z-index:5}.fd-toolbar--active.is-focus:after,.fd-toolbar--active:focus:after{border-color:var(--fdToolbar_Info_Outline_Color)}.fd-toolbar--fade-in{opacity:1;-webkit-transition:visibility 0s linear 0s,opacity 1s;transition:visibility 0s linear 0s,opacity 1s;visibility:visible}.fd-toolbar--fade-out{opacity:0;-webkit-transition:visibility 0s linear 1s,opacity 1ms;transition:visibility 0s linear 1s,opacity 1ms;visibility:hidden}.fd-toolbar[class*=-compact],.fd-toolbar[class*=-condensed],[class*=-compact] .fd-toolbar:not([class*=-cozy]),[class*=-condensed] .fd-toolbar:not([class*=-cozy]){--fdToolbar_Height:2rem;--fdToolbar_Separator_Height:1.5rem;--fdToolbar_Overflow_Max_Width:20rem}.fd-toolbar[class*=-compact].fd-toolbar--title,.fd-toolbar[class*=-condensed].fd-toolbar--title,[class*=-compact] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title,[class*=-condensed] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title{--fdToolbar_Height:2.75rem}.fd-toolbar[class*=-compact].fd-toolbar--title-bar,.fd-toolbar[class*=-condensed].fd-toolbar--title-bar,[class*=-compact] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title-bar,[class*=-condensed] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title-bar{--fdToolbar_Height:auto}.fd-toolbar>*{flex-shrink:0}fdk-dynamic-portal:not(:last-of-type) [fd-toolbar-item]{margin-bottom:.25rem}\n/*! Bundled license information:\n\nfundamental-styles/dist/toolbar.css:\n (*!\n * Fundamental Library Styles v0.40.1\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *)\n*/\n"], dependencies: [{ kind: "directive", type: ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "ngmodule", type: PopoverModule }, { kind: "component", type: i3.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i3.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"], outputs: ["onClose"] }, { kind: "component", type: i3.PopoverComponent, selector: "fd-popover", inputs: ["config", "title", "trigger", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll", "placement", "maxWidth", "fillControlMode", "closeOnOutsideClick", "closeOnEscapeKey", "disabled", "triggers", "focusTrapped", "focusAutoCapture", "restoreFocusOnClose", "noArrow", "disableScrollbar", "appendTo", "placementContainer", "scrollStrategy", "cdkPositions", "applyOverlay", "additionalBodyClass", "additionalTriggerClass", "closeOnNavigation", "fixedPosition", "resizable", "isOpen"], outputs: ["triggerChange", "isOpenChange", "beforeOpen"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["id"], exportAs: ["fd-button"] }, { kind: "component", type: DynamicPortalComponent, selector: "fdk-dynamic-portal", inputs: ["domElement", "component", "template", "auto"], outputs: ["attached"] }, { kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
508
+ ], queries: [{ propertyName: "toolbarItems", predicate: ToolbarItem, descendants: true, isSignal: true }, { propertyName: "spacerDirectives", predicate: ToolbarSpacerDirective, isSignal: true }, { propertyName: "separatorDirectives", predicate: ToolbarSeparatorComponent, isSignal: true }, { propertyName: "titleComponent", first: true, predicate: TitleToken, descendants: true }], viewQueries: [{ propertyName: "titleElement", first: true, predicate: ["titleElement"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if (title) {\n <span\n fd-title\n role=\"heading\"\n [headerSize]=\"4\"\n [attr.aria-level]=\"_headingLevel\"\n class=\"fd-toolbar__title\"\n [id]=\"titleId\"\n #titleElement\n >\n {{ title }}\n </span>\n}\n<ng-content></ng-content>\n@if (overflownItems.length > 0) {\n @if (!spacerUsed()) {\n <fd-toolbar-spacer></fd-toolbar-spacer>\n }\n <fd-toolbar-separator></fd-toolbar-separator>\n <fd-popover placement=\"bottom-end\" [noArrow]=\"true\" class=\"fd-popover\" [focusAutoCapture]=\"true\">\n <fd-popover-control>\n <button\n fd-button\n title=\"More\"\n aria-label=\"More\"\n aria-haspopup=\"true\"\n fdType=\"transparent\"\n glyph=\"overflow\"\n ></button>\n </fd-popover-control>\n <fd-popover-body>\n <div class=\"fd-toolbar__overflow\">\n @for (overflowedItem of overflownItems; track overflowedItem) {\n <fdk-dynamic-portal\n [domElement]=\"overflowedItem.element\"\n [style.display]=\"overflowedItem.priority === 'disappear' ? 'none' : 'flex'\"\n [style.flex-direction]=\"overflowedItem.priority === 'disappear' ? undefined : 'column'\"\n >\n </fdk-dynamic-portal>\n }\n </div>\n </fd-popover-body>\n </fd-popover>\n}\n", styles: [".fd-toolbar{--fdToolbar_Height:2.75rem;--fdToolbar_Separator_Margin:0;--fdToolbar_Padding_Left:.5rem;--fdToolbar_Padding_Right:.5rem;--fdToolbar_Separator_Height:2rem;--fdToolbar_Overflow_Max_Width:100%;--fdToolbar_Separator_Width:.0625rem;--fdToolbar_Info_Color:var(--sapList_TextColor);--fdToolbar_Background:var(--sapToolbar_Background);--fdToolbar_Border_Bottom:.0625rem solid var(--sapGroup_TitleBorderColor);--fdToolbar_Border_Top:.0625rem solid var(--sapPageFooter_BorderColor);border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:.5rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:var(--fdToolbar_Background);border-bottom:var(--fdToolbar_Border_Bottom);height:var(--fdToolbar_Height);padding-inline:var(--fdToolbar_Padding_Left) var(--fdToolbar_Padding_Right)}.fd-toolbar:after,.fd-toolbar:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-toolbar__spacer{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-flex:1;-ms-flex:1 auto;flex:1 auto}.fd-toolbar__spacer:after,.fd-toolbar__spacer:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-toolbar__spacer--fixed{-webkit-box-flex:0;display:inline-block;-ms-flex:none;flex:none}.fd-toolbar__separator{background-color:var(--sapToolbar_SeparatorColor);border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdToolbar_Separator_Height);line-height:normal;margin-block:0;margin-block:var(--fdToolbar_Separator_Margin);margin-inline:0;padding-block:0;padding-inline:0;width:var(--fdToolbar_Separator_Width)}.fd-toolbar__separator:after,.fd-toolbar__separator:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;--fdToolbar_Separator_Width:auto;--fdToolbar_Separator_Height:.0625rem;--fdToolbar_Separator_Margin:.1875rem;--fdToolbar_Overflow_Padding_Block:.25rem;--fdToolbar_Overflow_Padding_Inline:.5rem;max-height:50vh;max-width:var(--fdToolbar_Overflow_Max_Width);overflow:auto;padding-block:var(--fdToolbar_Overflow_Padding_Block);padding-inline:var(--fdToolbar_Overflow_Padding_Inline)}.fd-toolbar__overflow:after,.fd-toolbar__overflow:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow[class*=-compact],.fd-toolbar__overflow[class*=-condensed],[class*=-compact] .fd-toolbar__overflow:not([class*=-cozy]),[class*=-condensed] .fd-toolbar__overflow:not([class*=-cozy]){--fdToolbar_Overflow_Padding_Block:.1875rem;--fdToolbar_Overflow_Padding_Inline:.375rem}.fd-toolbar__overflow .fd-toolbar__overflow-button{margin-block:.1875rem;margin-inline:0;text-align:left;width:auto;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.fd-toolbar__overflow .fd-toolbar__overflow-button[dir=rtl],[dir=rtl] .fd-toolbar__overflow .fd-toolbar__overflow-button{text-align:right}.fd-toolbar__overflow .fd-toolbar__overflow-button--menu{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;max-width:100%}.fd-toolbar__overflow .fd-toolbar__overflow-form-label{margin-block:.625rem .125rem;margin-inline:0}.fd-toolbar__overflow .fd-toolbar__overflow-label{margin-block:.375rem;margin-inline:0}.fd-toolbar .fd-toolbar__title{--fdTitle_Font_Size:var(--sapGroup_Title_FontSize);--fdTitle_Color:var(--sapGroup_TitleTextColor)}.fd-toolbar--auto{--fdToolbar_Background:var(--fdToolbar_Auto_Background)}.fd-toolbar--solid{--fdToolbar_Background:var(--fdToolbar_Solid_Background)}.fd-toolbar--transparent{--fdToolbar_Background:var(--fdToolbar_Transparent_Background)}.fd-toolbar--ai,.fd-toolbar--clear{--fdToolbar_Border_Bottom:none}.fd-toolbar--ai{--fdToolbar_Background:var(--fdToolbar_Transparent_Background);--fdToolbar_Padding_Left:.5rem;--fdToolbar_Padding_Right:.25rem}.fd-toolbar--ai.is-active{--fdToolbar_Background:var(--fdToolbar_Solid_Background);border-top:var(--fdToolbar_Border_Top)}.fd-toolbar--title{--fdToolbar_Height:2.75rem;--fdToolbar_Padding_Left:1rem;--fdToolbar_Background:var(--sapGroup_TitleBackground)}.fd-toolbar.fd-toolbar--title-bar{padding-block:.375rem;--fdToolbar_Height:auto;--fdToolbar_Padding_Left:.75rem;--fdToolbar_Padding_Right:.75rem}.fd-toolbar--info{color:var(--fdToolbar_Info_Color);position:relative;--fdToolbar_Height:2rem;--fdToolbar_Background:var(--sapInfobar_NonInteractive_Background)}.fd-toolbar--info [class*=sap-icon]{color:var(--sapList_TextColor);font-size:1rem;height:1rem;line-height:1rem}.fd-toolbar--active{outline:none;position:relative;--fdToolbar_Background:var(--sapInfobar_Background);--fdToolbar_Info_Color:var(--sapInfobar_TextColor)}.fd-toolbar--active.is-focus:after,.fd-toolbar--active:focus:after{border-color:var(--sapContent_FocusColor);border-style:var(--sapContent_FocusStyle);border-width:var(--sapContent_FocusWidth);content:\"\";inset:.0625rem;pointer-events:none;position:absolute}.fd-toolbar--active.is-hover,.fd-toolbar--active:hover{--fdToolbar_Background:var(--sapInfobar_Hover_Background)}.fd-toolbar--active.is-active,.fd-toolbar--active:active{--fdToolbar_Background:var(--sapInfobar_Active_Background)}.fd-toolbar--active.is-focus,.fd-toolbar--active:focus{z-index:5}.fd-toolbar--active.is-focus:after,.fd-toolbar--active:focus:after{border-color:var(--fdToolbar_Info_Outline_Color)}.fd-toolbar--fade-in{opacity:1;-webkit-transition:visibility 0s linear 0s,opacity 1s;transition:visibility 0s linear 0s,opacity 1s;visibility:visible}.fd-toolbar--fade-out{opacity:0;-webkit-transition:visibility 0s linear 1s,opacity 1ms;transition:visibility 0s linear 1s,opacity 1ms;visibility:hidden}.fd-toolbar[class*=-compact],.fd-toolbar[class*=-condensed],[class*=-compact] .fd-toolbar:not([class*=-cozy]),[class*=-condensed] .fd-toolbar:not([class*=-cozy]){--fdToolbar_Height:2rem;--fdToolbar_Separator_Height:1.5rem;--fdToolbar_Overflow_Max_Width:20rem}.fd-toolbar[class*=-compact].fd-toolbar--title,.fd-toolbar[class*=-condensed].fd-toolbar--title,[class*=-compact] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title,[class*=-condensed] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title{--fdToolbar_Height:2.75rem}.fd-toolbar[class*=-compact].fd-toolbar--title-bar,.fd-toolbar[class*=-condensed].fd-toolbar--title-bar,[class*=-compact] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title-bar,[class*=-condensed] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title-bar{--fdToolbar_Height:auto}.fd-toolbar>*{flex-shrink:0}fdk-dynamic-portal:not(:last-of-type) [fd-toolbar-item]{margin-bottom:.25rem}\n/*! Bundled license information:\n\nfundamental-styles/dist/toolbar.css:\n (*!\n * Fundamental Library Styles v0.40.1\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *)\n*/\n"], dependencies: [{ kind: "directive", type: ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "ngmodule", type: PopoverModule }, { kind: "component", type: i3.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i3.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"], outputs: ["onClose"] }, { kind: "component", type: i3.PopoverComponent, selector: "fd-popover", inputs: ["config", "title", "trigger", "id", "mobile", "mobileConfig", "preventSpaceKeyScroll", "placement", "maxWidth", "fillControlMode", "closeOnOutsideClick", "closeOnEscapeKey", "disabled", "triggers", "focusTrapped", "focusAutoCapture", "restoreFocusOnClose", "noArrow", "disableScrollbar", "appendTo", "placementContainer", "scrollStrategy", "cdkPositions", "applyOverlay", "additionalBodyClass", "additionalTriggerClass", "closeOnNavigation", "fixedPosition", "resizable", "isOpen"], outputs: ["triggerChange", "isOpenChange", "beforeOpen"] }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["id"], exportAs: ["fd-button"] }, { kind: "component", type: DynamicPortalComponent, selector: "fdk-dynamic-portal", inputs: ["domElement", "component", "template", "auto"], outputs: ["attached"] }, { kind: "component", type: TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
510
509
  }
511
510
  __decorate([
512
511
  applyCssClass,
@@ -530,9 +529,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImpor
530
529
  PopoverModule,
531
530
  ButtonComponent,
532
531
  DynamicPortalComponent,
533
- TitleComponent,
534
- FdTranslatePipe
535
- ], template: "@if (title) {\n <span\n fd-title\n role=\"heading\"\n [headerSize]=\"4\"\n [attr.aria-level]=\"_headingLevel\"\n class=\"fd-toolbar__title\"\n [id]=\"titleId\"\n #titleElement\n >\n {{ title }}\n </span>\n}\n<ng-content></ng-content>\n@if (overflownItems.length > 0) {\n @if (!spacerUsed()) {\n <fd-toolbar-spacer></fd-toolbar-spacer>\n }\n <fd-toolbar-separator></fd-toolbar-separator>\n <fd-popover placement=\"bottom-end\" [noArrow]=\"true\" class=\"fd-popover\" [focusAutoCapture]=\"true\">\n <fd-popover-control>\n <button\n fd-button\n [title]=\"('coreToolbar.moreButton' | fdTranslate)()\"\n [attr.aria-label]=\"('coreToolbar.moreButton' | fdTranslate)()\"\n aria-haspopup=\"true\"\n fdType=\"transparent\"\n glyph=\"overflow\"\n ></button>\n </fd-popover-control>\n <fd-popover-body>\n <div class=\"fd-toolbar__overflow\">\n @for (overflowedItem of overflownItems; track overflowedItem) {\n <fdk-dynamic-portal\n [domElement]=\"overflowedItem.element\"\n [style.display]=\"overflowedItem.priority === 'disappear' ? 'none' : 'flex'\"\n [style.flex-direction]=\"overflowedItem.priority === 'disappear' ? undefined : 'column'\"\n >\n </fdk-dynamic-portal>\n }\n </div>\n </fd-popover-body>\n </fd-popover>\n}\n", styles: [".fd-toolbar{--fdToolbar_Height:2.75rem;--fdToolbar_Separator_Margin:0;--fdToolbar_Padding_Left:.5rem;--fdToolbar_Padding_Right:.5rem;--fdToolbar_Separator_Height:2rem;--fdToolbar_Overflow_Max_Width:100%;--fdToolbar_Separator_Width:.0625rem;--fdToolbar_Info_Color:var(--sapList_TextColor);--fdToolbar_Background:var(--sapToolbar_Background);--fdToolbar_Border_Bottom:.0625rem solid var(--sapGroup_TitleBorderColor);--fdToolbar_Border_Top:.0625rem solid var(--sapPageFooter_BorderColor);border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:.5rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:var(--fdToolbar_Background);border-bottom:var(--fdToolbar_Border_Bottom);height:var(--fdToolbar_Height);padding-inline:var(--fdToolbar_Padding_Left) var(--fdToolbar_Padding_Right)}.fd-toolbar:after,.fd-toolbar:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-toolbar__spacer{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-flex:1;-ms-flex:1 auto;flex:1 auto}.fd-toolbar__spacer:after,.fd-toolbar__spacer:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-toolbar__spacer--fixed{-webkit-box-flex:0;display:inline-block;-ms-flex:none;flex:none}.fd-toolbar__separator{background-color:var(--sapToolbar_SeparatorColor);border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdToolbar_Separator_Height);line-height:normal;margin-block:0;margin-block:var(--fdToolbar_Separator_Margin);margin-inline:0;padding-block:0;padding-inline:0;width:var(--fdToolbar_Separator_Width)}.fd-toolbar__separator:after,.fd-toolbar__separator:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;--fdToolbar_Separator_Width:auto;--fdToolbar_Separator_Height:.0625rem;--fdToolbar_Separator_Margin:.1875rem;--fdToolbar_Overflow_Padding_Block:.25rem;--fdToolbar_Overflow_Padding_Inline:.5rem;max-height:50vh;max-width:var(--fdToolbar_Overflow_Max_Width);overflow:auto;padding-block:var(--fdToolbar_Overflow_Padding_Block);padding-inline:var(--fdToolbar_Overflow_Padding_Inline)}.fd-toolbar__overflow:after,.fd-toolbar__overflow:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow[class*=-compact],.fd-toolbar__overflow[class*=-condensed],[class*=-compact] .fd-toolbar__overflow:not([class*=-cozy]),[class*=-condensed] .fd-toolbar__overflow:not([class*=-cozy]){--fdToolbar_Overflow_Padding_Block:.1875rem;--fdToolbar_Overflow_Padding_Inline:.375rem}.fd-toolbar__overflow .fd-toolbar__overflow-button{margin-block:.1875rem;margin-inline:0;text-align:left;width:auto;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.fd-toolbar__overflow .fd-toolbar__overflow-button[dir=rtl],[dir=rtl] .fd-toolbar__overflow .fd-toolbar__overflow-button{text-align:right}.fd-toolbar__overflow .fd-toolbar__overflow-button--menu{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;max-width:100%}.fd-toolbar__overflow .fd-toolbar__overflow-form-label{margin-block:.625rem .125rem;margin-inline:0}.fd-toolbar__overflow .fd-toolbar__overflow-label{margin-block:.375rem;margin-inline:0}.fd-toolbar .fd-toolbar__title{--fdTitle_Font_Size:var(--sapGroup_Title_FontSize);--fdTitle_Color:var(--sapGroup_TitleTextColor)}.fd-toolbar--auto{--fdToolbar_Background:var(--fdToolbar_Auto_Background)}.fd-toolbar--solid{--fdToolbar_Background:var(--fdToolbar_Solid_Background)}.fd-toolbar--transparent{--fdToolbar_Background:var(--fdToolbar_Transparent_Background)}.fd-toolbar--ai,.fd-toolbar--clear{--fdToolbar_Border_Bottom:none}.fd-toolbar--ai{--fdToolbar_Background:var(--fdToolbar_Transparent_Background);--fdToolbar_Padding_Left:.5rem;--fdToolbar_Padding_Right:.25rem}.fd-toolbar--ai.is-active{--fdToolbar_Background:var(--fdToolbar_Solid_Background);border-top:var(--fdToolbar_Border_Top)}.fd-toolbar--title{--fdToolbar_Height:2.75rem;--fdToolbar_Padding_Left:1rem;--fdToolbar_Background:var(--sapGroup_TitleBackground)}.fd-toolbar.fd-toolbar--title-bar{padding-block:.375rem;--fdToolbar_Height:auto;--fdToolbar_Padding_Left:.75rem;--fdToolbar_Padding_Right:.75rem}.fd-toolbar--info{color:var(--fdToolbar_Info_Color);position:relative;--fdToolbar_Height:2rem;--fdToolbar_Background:var(--sapInfobar_NonInteractive_Background)}.fd-toolbar--info [class*=sap-icon]{color:var(--sapList_TextColor);font-size:1rem;height:1rem;line-height:1rem}.fd-toolbar--active{outline:none;position:relative;--fdToolbar_Background:var(--sapInfobar_Background);--fdToolbar_Info_Color:var(--sapInfobar_TextColor)}.fd-toolbar--active.is-focus:after,.fd-toolbar--active:focus:after{border-color:var(--sapContent_FocusColor);border-style:var(--sapContent_FocusStyle);border-width:var(--sapContent_FocusWidth);content:\"\";inset:.0625rem;pointer-events:none;position:absolute}.fd-toolbar--active.is-hover,.fd-toolbar--active:hover{--fdToolbar_Background:var(--sapInfobar_Hover_Background)}.fd-toolbar--active.is-active,.fd-toolbar--active:active{--fdToolbar_Background:var(--sapInfobar_Active_Background)}.fd-toolbar--active.is-focus,.fd-toolbar--active:focus{z-index:5}.fd-toolbar--active.is-focus:after,.fd-toolbar--active:focus:after{border-color:var(--fdToolbar_Info_Outline_Color)}.fd-toolbar--fade-in{opacity:1;-webkit-transition:visibility 0s linear 0s,opacity 1s;transition:visibility 0s linear 0s,opacity 1s;visibility:visible}.fd-toolbar--fade-out{opacity:0;-webkit-transition:visibility 0s linear 1s,opacity 1ms;transition:visibility 0s linear 1s,opacity 1ms;visibility:hidden}.fd-toolbar[class*=-compact],.fd-toolbar[class*=-condensed],[class*=-compact] .fd-toolbar:not([class*=-cozy]),[class*=-condensed] .fd-toolbar:not([class*=-cozy]){--fdToolbar_Height:2rem;--fdToolbar_Separator_Height:1.5rem;--fdToolbar_Overflow_Max_Width:20rem}.fd-toolbar[class*=-compact].fd-toolbar--title,.fd-toolbar[class*=-condensed].fd-toolbar--title,[class*=-compact] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title,[class*=-condensed] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title{--fdToolbar_Height:2.75rem}.fd-toolbar[class*=-compact].fd-toolbar--title-bar,.fd-toolbar[class*=-condensed].fd-toolbar--title-bar,[class*=-compact] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title-bar,[class*=-condensed] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title-bar{--fdToolbar_Height:auto}.fd-toolbar>*{flex-shrink:0}fdk-dynamic-portal:not(:last-of-type) [fd-toolbar-item]{margin-bottom:.25rem}\n/*! Bundled license information:\n\nfundamental-styles/dist/toolbar.css:\n (*!\n * Fundamental Library Styles v0.40.1\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *)\n*/\n"] }]
532
+ TitleComponent
533
+ ], template: "@if (title) {\n <span\n fd-title\n role=\"heading\"\n [headerSize]=\"4\"\n [attr.aria-level]=\"_headingLevel\"\n class=\"fd-toolbar__title\"\n [id]=\"titleId\"\n #titleElement\n >\n {{ title }}\n </span>\n}\n<ng-content></ng-content>\n@if (overflownItems.length > 0) {\n @if (!spacerUsed()) {\n <fd-toolbar-spacer></fd-toolbar-spacer>\n }\n <fd-toolbar-separator></fd-toolbar-separator>\n <fd-popover placement=\"bottom-end\" [noArrow]=\"true\" class=\"fd-popover\" [focusAutoCapture]=\"true\">\n <fd-popover-control>\n <button\n fd-button\n title=\"More\"\n aria-label=\"More\"\n aria-haspopup=\"true\"\n fdType=\"transparent\"\n glyph=\"overflow\"\n ></button>\n </fd-popover-control>\n <fd-popover-body>\n <div class=\"fd-toolbar__overflow\">\n @for (overflowedItem of overflownItems; track overflowedItem) {\n <fdk-dynamic-portal\n [domElement]=\"overflowedItem.element\"\n [style.display]=\"overflowedItem.priority === 'disappear' ? 'none' : 'flex'\"\n [style.flex-direction]=\"overflowedItem.priority === 'disappear' ? undefined : 'column'\"\n >\n </fdk-dynamic-portal>\n }\n </div>\n </fd-popover-body>\n </fd-popover>\n}\n", styles: [".fd-toolbar{--fdToolbar_Height:2.75rem;--fdToolbar_Separator_Margin:0;--fdToolbar_Padding_Left:.5rem;--fdToolbar_Padding_Right:.5rem;--fdToolbar_Separator_Height:2rem;--fdToolbar_Overflow_Max_Width:100%;--fdToolbar_Separator_Width:.0625rem;--fdToolbar_Info_Color:var(--sapList_TextColor);--fdToolbar_Background:var(--sapToolbar_Background);--fdToolbar_Border_Bottom:.0625rem solid var(--sapGroup_TitleBorderColor);--fdToolbar_Border_Top:.0625rem solid var(--sapPageFooter_BorderColor);border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;gap:.5rem;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:var(--fdToolbar_Background);border-bottom:var(--fdToolbar_Border_Bottom);height:var(--fdToolbar_Height);padding-inline:var(--fdToolbar_Padding_Left) var(--fdToolbar_Padding_Right)}.fd-toolbar:after,.fd-toolbar:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-toolbar__spacer{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-flex:1;-ms-flex:1 auto;flex:1 auto}.fd-toolbar__spacer:after,.fd-toolbar__spacer:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-toolbar__spacer--fixed{-webkit-box-flex:0;display:inline-block;-ms-flex:none;flex:none}.fd-toolbar__separator{background-color:var(--sapToolbar_SeparatorColor);border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdToolbar_Separator_Height);line-height:normal;margin-block:0;margin-block:var(--fdToolbar_Separator_Margin);margin-inline:0;padding-block:0;padding-inline:0;width:var(--fdToolbar_Separator_Width)}.fd-toolbar__separator:after,.fd-toolbar__separator:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--sapTextColor);display:-webkit-box;display:-ms-flexbox;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;--fdToolbar_Separator_Width:auto;--fdToolbar_Separator_Height:.0625rem;--fdToolbar_Separator_Margin:.1875rem;--fdToolbar_Overflow_Padding_Block:.25rem;--fdToolbar_Overflow_Padding_Inline:.5rem;max-height:50vh;max-width:var(--fdToolbar_Overflow_Max_Width);overflow:auto;padding-block:var(--fdToolbar_Overflow_Padding_Block);padding-inline:var(--fdToolbar_Overflow_Padding_Inline)}.fd-toolbar__overflow:after,.fd-toolbar__overflow:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow[class*=-compact],.fd-toolbar__overflow[class*=-condensed],[class*=-compact] .fd-toolbar__overflow:not([class*=-cozy]),[class*=-condensed] .fd-toolbar__overflow:not([class*=-cozy]){--fdToolbar_Overflow_Padding_Block:.1875rem;--fdToolbar_Overflow_Padding_Inline:.375rem}.fd-toolbar__overflow .fd-toolbar__overflow-button{margin-block:.1875rem;margin-inline:0;text-align:left;width:auto;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.fd-toolbar__overflow .fd-toolbar__overflow-button[dir=rtl],[dir=rtl] .fd-toolbar__overflow .fd-toolbar__overflow-button{text-align:right}.fd-toolbar__overflow .fd-toolbar__overflow-button--menu{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;max-width:100%}.fd-toolbar__overflow .fd-toolbar__overflow-form-label{margin-block:.625rem .125rem;margin-inline:0}.fd-toolbar__overflow .fd-toolbar__overflow-label{margin-block:.375rem;margin-inline:0}.fd-toolbar .fd-toolbar__title{--fdTitle_Font_Size:var(--sapGroup_Title_FontSize);--fdTitle_Color:var(--sapGroup_TitleTextColor)}.fd-toolbar--auto{--fdToolbar_Background:var(--fdToolbar_Auto_Background)}.fd-toolbar--solid{--fdToolbar_Background:var(--fdToolbar_Solid_Background)}.fd-toolbar--transparent{--fdToolbar_Background:var(--fdToolbar_Transparent_Background)}.fd-toolbar--ai,.fd-toolbar--clear{--fdToolbar_Border_Bottom:none}.fd-toolbar--ai{--fdToolbar_Background:var(--fdToolbar_Transparent_Background);--fdToolbar_Padding_Left:.5rem;--fdToolbar_Padding_Right:.25rem}.fd-toolbar--ai.is-active{--fdToolbar_Background:var(--fdToolbar_Solid_Background);border-top:var(--fdToolbar_Border_Top)}.fd-toolbar--title{--fdToolbar_Height:2.75rem;--fdToolbar_Padding_Left:1rem;--fdToolbar_Background:var(--sapGroup_TitleBackground)}.fd-toolbar.fd-toolbar--title-bar{padding-block:.375rem;--fdToolbar_Height:auto;--fdToolbar_Padding_Left:.75rem;--fdToolbar_Padding_Right:.75rem}.fd-toolbar--info{color:var(--fdToolbar_Info_Color);position:relative;--fdToolbar_Height:2rem;--fdToolbar_Background:var(--sapInfobar_NonInteractive_Background)}.fd-toolbar--info [class*=sap-icon]{color:var(--sapList_TextColor);font-size:1rem;height:1rem;line-height:1rem}.fd-toolbar--active{outline:none;position:relative;--fdToolbar_Background:var(--sapInfobar_Background);--fdToolbar_Info_Color:var(--sapInfobar_TextColor)}.fd-toolbar--active.is-focus:after,.fd-toolbar--active:focus:after{border-color:var(--sapContent_FocusColor);border-style:var(--sapContent_FocusStyle);border-width:var(--sapContent_FocusWidth);content:\"\";inset:.0625rem;pointer-events:none;position:absolute}.fd-toolbar--active.is-hover,.fd-toolbar--active:hover{--fdToolbar_Background:var(--sapInfobar_Hover_Background)}.fd-toolbar--active.is-active,.fd-toolbar--active:active{--fdToolbar_Background:var(--sapInfobar_Active_Background)}.fd-toolbar--active.is-focus,.fd-toolbar--active:focus{z-index:5}.fd-toolbar--active.is-focus:after,.fd-toolbar--active:focus:after{border-color:var(--fdToolbar_Info_Outline_Color)}.fd-toolbar--fade-in{opacity:1;-webkit-transition:visibility 0s linear 0s,opacity 1s;transition:visibility 0s linear 0s,opacity 1s;visibility:visible}.fd-toolbar--fade-out{opacity:0;-webkit-transition:visibility 0s linear 1s,opacity 1ms;transition:visibility 0s linear 1s,opacity 1ms;visibility:hidden}.fd-toolbar[class*=-compact],.fd-toolbar[class*=-condensed],[class*=-compact] .fd-toolbar:not([class*=-cozy]),[class*=-condensed] .fd-toolbar:not([class*=-cozy]){--fdToolbar_Height:2rem;--fdToolbar_Separator_Height:1.5rem;--fdToolbar_Overflow_Max_Width:20rem}.fd-toolbar[class*=-compact].fd-toolbar--title,.fd-toolbar[class*=-condensed].fd-toolbar--title,[class*=-compact] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title,[class*=-condensed] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title{--fdToolbar_Height:2.75rem}.fd-toolbar[class*=-compact].fd-toolbar--title-bar,.fd-toolbar[class*=-condensed].fd-toolbar--title-bar,[class*=-compact] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title-bar,[class*=-condensed] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title-bar{--fdToolbar_Height:auto}.fd-toolbar>*{flex-shrink:0}fdk-dynamic-portal:not(:last-of-type) [fd-toolbar-item]{margin-bottom:.25rem}\n/*! Bundled license information:\n\nfundamental-styles/dist/toolbar.css:\n (*!\n * Fundamental Library Styles v0.40.1\n * Copyright (c) 2025 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *)\n*/\n"] }]
536
534
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ContentDensityObserver }, { type: i0.DestroyRef }, { type: i2.ResizeObserverService }, { type: i0.Injector }, { type: undefined, decorators: [{
537
535
  type: Optional
538
536
  }, {