@fundamental-ngx/core 0.61.2-rc.9 → 0.61.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs +2 -3
- package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs +4 -6
- package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +13 -11
- package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +7 -5
- package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-calendar.mjs +31 -35
- package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-carousel.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs +3 -5
- package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-date-picker.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime.mjs +13 -7
- package/fesm2022/fundamental-ngx-core-datetime.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dialog.mjs +16 -11
- package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +13 -13
- package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-grid-list.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-info-label.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-inline-help.mjs +65 -59
- package/fesm2022/fundamental-ngx-core-inline-help.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-menu.mjs +5 -5
- package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-box.mjs +7 -7
- package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-message-strip.mjs +49 -44
- package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +20 -25
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-input.mjs +8 -6
- package/fesm2022/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-nested-list.mjs +21 -22
- package/fesm2022/fundamental-ngx-core-nested-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-notification.mjs +16 -13
- package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-number.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-object-status.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-pagination.mjs +14 -11
- package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-popover.mjs +9 -3
- package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-product-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +7 -4
- package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs +11 -10
- package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-select.mjs +6 -7
- package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-shellbar.mjs +6 -6
- package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-slider.mjs +6 -6
- package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-split-button.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-step-input.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-switch.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tabs.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-text.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time-picker.mjs +29 -4
- package/fesm2022/fundamental-ngx-core-time-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-time.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-token.mjs +15 -12
- package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-toolbar.mjs +3 -5
- package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-tree.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs +4 -4
- package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-user-menu.mjs +3 -5
- package/fesm2022/fundamental-ngx-core-user-menu.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
- package/package.json +3 -3
- package/types/fundamental-ngx-core-breadcrumb.d.ts +5 -5
- package/types/fundamental-ngx-core-busy-indicator.d.ts +3 -3
- package/types/fundamental-ngx-core-combobox.d.ts +2 -4
- package/types/fundamental-ngx-core-datetime.d.ts +5 -1
- package/types/fundamental-ngx-core-dialog.d.ts +1 -1
- package/types/fundamental-ngx-core-dynamic-page.d.ts +2 -1
- package/types/fundamental-ngx-core-inline-help.d.ts +45 -24
- package/types/fundamental-ngx-core-menu.d.ts +0 -2
- package/types/fundamental-ngx-core-message-box.d.ts +1 -1
- package/types/fundamental-ngx-core-message-strip.d.ts +12 -3
- package/types/fundamental-ngx-core-multi-combobox.d.ts +1 -1
- package/types/fundamental-ngx-core-nested-list.d.ts +10 -10
- package/types/fundamental-ngx-core-notification.d.ts +7 -5
- package/types/fundamental-ngx-core-pagination.d.ts +4 -3
- package/types/fundamental-ngx-core-rating-indicator.d.ts +2 -3
- package/types/fundamental-ngx-core-segmented-button.d.ts +5 -3
- package/types/fundamental-ngx-core-slider.d.ts +1 -1
- package/types/fundamental-ngx-core-time-picker.d.ts +17 -1
- package/types/fundamental-ngx-core-token.d.ts +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-tabs.mjs","sources":["../../../../libs/core/tabs/tab-utils/tab-directives.ts","../../../../libs/core/tabs/tab-item-expand/tab-item-expand.component.ts","../../../../libs/core/tabs/tab-item-expand/tab-item-expand.component.html","../../../../libs/core/tabs/tab-link/tab-link.directive.ts","../../../../libs/core/tabs/tab-item/tab-item.directive.ts","../../../../libs/core/tabs/tab-list.token.ts","../../../../libs/core/tabs/tab-panel/tab-panel.component.ts","../../../../libs/core/tabs/tab-panel/tab-panel.component.html","../../../../libs/core/tabs/tab-utils/tab-info.class.ts","../../../../libs/core/tabs/tab-list.component.ts","../../../../libs/core/tabs/tab-list.component.html","../../../../libs/core/tabs/tab-nav/tab-nav.component.ts","../../../../libs/core/tabs/tabs.module.ts","../../../../libs/core/tabs/fundamental-ngx-core-tabs.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { CssClassBuilder, applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent, IconFont } from '@fundamental-ngx/core/icon';\n\n/**\n * Directive used to identify the template which will populate the tab header.\n * Used to achieve complex headers that require more than a string.\n *\n * ```html\n * <fd-tab>\n * <ng-template fd-tab-title>\n * <fd-icon [glyph]=\"'delete'\"></fd-icon>\n * <span>Tab Label</span>\n * </ng-template>\n * </fd-tab>\n * ```\n */\n@Directive({\n selector: '[fdTabTitleTemplate], [fd-tab-title-template]',\n standalone: true\n})\nexport class TabTitleDirective {}\n\n/**\n * Directive for counter element, available in most of the modes on `tab` component\n */\n@Directive({\n selector: '[fdTabCount], [fd-tab-count]',\n standalone: true\n})\nexport class TabCountDirective {\n /** @hidden */\n @HostBinding('class.fd-tabs__count')\n fdTabsCountClass = true;\n}\n\n/**\n * Directive for icon element, available in most of the modes on `tab` component\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-tab-icon]',\n template: `\n @if (icon) {\n <fd-icon role=\"presentation\" [glyph]=\"icon\" [font]=\"iconFont\"></fd-icon>\n }\n <ng-content></ng-content>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [IconComponent]\n})\nexport class TabIconComponent implements CssClassBuilder, OnChanges {\n /** Apply user custom styles */\n @Input()\n class: string;\n\n /**\n * The icon to include inside the element\n * See the icon page for the list of icons.\n */\n @Input()\n icon: string;\n\n /** Icon font family */\n @Input()\n iconFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n /** @hidden */\n constructor(public readonly elementRef: ElementRef) {}\n\n /** @hidden 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-tabs__icon', this.class];\n }\n\n /** @hidden\n * Function runs when component is initialized\n * function should build component css class\n * function should build css style\n */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n}\n\n@Directive({\n selector: '[fdTabTag], [fd-tab-tag]',\n host: {\n class: 'fd-tabs__tag'\n },\n standalone: true\n})\nexport class TabTagDirective {}\n\n@Directive({\n selector: '[fdTabLabel], [fd-tab-label]',\n host: {\n class: 'fd-tabs__label'\n },\n standalone: true\n})\nexport class TabLabelDirective {}\n\n@Directive({\n selector: '[fdTabProcess], [fd-tab-process]',\n host: {\n class: 'fd-tabs__process'\n },\n standalone: true\n})\nexport class TabProcessDirective {}\n\n@Directive({\n selector: '[fdTabHeader], [fd-tab-header]',\n host: {\n class: 'fd-tabs__header'\n },\n standalone: true\n})\nexport class TabHeaderDirective {}\n\n@Directive({\n selector: '[fdTabCounterHeader], [fd-tab-counter-header]',\n host: {\n class: 'fd-tabs__counter-header'\n },\n standalone: true\n})\nexport class TabCounterHeaderDirective {}\n\n@Directive({\n selector: '[fdTabProcessIcon], [fd-tab-process-icon]',\n host: {\n class: 'fd-tabs__process-icon'\n },\n standalone: true\n})\nexport class TabProcessIconDirective {}\n\n@Directive({\n selector: '[fdTabSeparator], [fd-tab-separator]',\n host: {\n class: 'fd-tabs__separator'\n },\n standalone: true\n})\nexport class TabSeparatorDirective {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { TabTagDirective } from '../tab-utils/tab-directives';\n\n/**\n * Represents a list of tab-panels.\n */\n@Component({\n selector: 'fd-item-expand',\n templateUrl: './tab-item-expand.component.html',\n styleUrl: './tab-item-expand.component.scss',\n host: {\n role: 'tab',\n class: 'fd-tabs__item fd-tabs__item--overflow'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TabTagDirective, IconComponent, FdTranslatePipe]\n})\nexport class TabItemExpandComponent {}\n","<a class=\"fd-tabs__link\" role=\"tab\" [attr.tabindex]=\"0\">\n <span fd-tab-tag>{{ ('coreTabs.tabListExpandButtonText' | fdTranslate)() }}</span>\n <fd-icon glyph=\"slim-arrow-down\" [attr.aria-label]=\"('coreTabs.expandIconLabel' | fdTranslate)()\"></fd-icon>\n</a>\n","import { FocusableOption } from '@angular/cdk/a11y';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\nimport { AbstractFdNgxClass, KeyUtil } from '@fundamental-ngx/cdk/utils';\n\n/**\n * Tab link for nav mode\n *\n * ```html\n * <a fd-tab-link>\n * link\n * </a>\n * ```\n */\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-tab-link]',\n host: {\n role: 'tab',\n tabindex: '-1'\n },\n standalone: true\n})\nexport class TabLinkDirective extends AbstractFdNgxClass implements FocusableOption {\n /** Whether the link is active */\n @Input()\n @HostBinding('attr.aria-selected')\n active: boolean;\n\n /**\n * Only visual / accessibility thing on tab-nav mode\n * RouterLink does not respect preventDefault/stopPropagation\n */\n @Input()\n @HostBinding('attr.aria-disabled')\n @HostBinding('class.is-disabled')\n disabled: boolean;\n\n /** Event Emitted always when, any keyboard event is dispatched on this element */\n @Output()\n readonly keyDown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n /** Event Emitted when item has been focused. */\n @Output()\n readonly focused = new EventEmitter<void>();\n\n /** @hidden */\n @HostListener('focus')\n protected _onFocus(): void {\n this.focused.emit();\n }\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n protected _onKeyUp(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n this.focused.emit();\n }\n }\n\n /** @hidden */\n _setProperties(): void {\n this._addClassToElement('fd-tabs__link');\n if (this.active) {\n this._addClassToElement('is-selected');\n }\n }\n\n /** @hidden */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n}\n","import { ContentChild, Directive, ElementRef, HostBinding, Input, OnChanges, OnInit } from '@angular/core';\nimport { CssClassBuilder, Nullable, applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { TabLinkDirective } from '../tab-link/tab-link.directive';\n\nexport type TabItemState = 'success' | 'error' | 'warning' | 'information' | 'neutral';\n\n/**\n * Tab Item is optional wrapper for Tab link\n *\n * ```html\n * <div fd-tab-item>\n * <a fd-tab-link>\n * link\n * </a>\n * </div>\n * ```\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-tab-item]',\n standalone: true\n})\nexport class TabItemDirective implements CssClassBuilder, OnChanges, OnInit {\n /** Apply user custom styles */\n @Input()\n class = '';\n\n /** Semantic type of the tab item */\n @Input()\n tabItemState: Nullable<TabItemState>;\n\n /** This should be used only on `filterMode`. Flag should be enable for first item */\n @Input()\n header: boolean;\n\n /** Disabled state for tab item */\n @Input()\n @HostBinding('attr.aria-disabled')\n @HostBinding('class.is-disabled')\n disabled = false;\n\n /** Defines if there will be added fd-tabs__item class. Enabled by default. */\n @Input()\n fdTabItemClass = true;\n\n /** @hidden */\n @ContentChild(TabLinkDirective)\n linkItem: TabLinkDirective;\n\n /** @hidden */\n constructor(public readonly elementRef: ElementRef) {}\n\n /** @hidden */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return [\n this.fdTabItemClass ? 'fd-tabs__item' : '',\n this.header ? 'fd-tabs__item--header' : '',\n this.tabItemState ? `fd-tabs__item--${this.tabItemState}` : '',\n this.class\n ];\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { TabListComponentInterface } from './tab-list-component.interface';\n\nexport const LIST_COMPONENT = new InjectionToken<TabListComponentInterface>('ListComponent');\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnChanges,\n Optional,\n Output,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Subject, first } from 'rxjs';\nimport { TabItemState } from '../tab-item/tab-item.directive';\nimport { TabListComponentInterface } from '../tab-list-component.interface';\nimport { LIST_COMPONENT } from '../tab-list.token';\nimport { TabTitleDirective } from '../tab-utils/tab-directives';\n\nlet tabPanelUniqueId = 0;\n\nexport class TabPanelStateChange {\n /**\n * Tab panel state change event\n * @param target Tab panel that is being changed\n * @param state New state of the tab panel\n */\n constructor(\n public target: TabPanelComponent,\n public state: boolean\n ) {}\n}\n\n/**\n * Represents the body of a tab element. It also contains elements pertaining to the associated tab header.\n */\n@Component({\n selector: 'fd-tab',\n templateUrl: './tab-panel.component.html',\n host: {\n role: 'tabpanel',\n class: 'fd-tabs__panel',\n '[id]': '_panelId',\n '[attr.aria-labelledby]': 'id'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: []\n})\nexport class TabPanelComponent implements OnChanges {\n /** Id of the tab. If none is provided, one will be generated. */\n @Input()\n id: string = 'fd-tab-panel' + tabPanelUniqueId++;\n\n /** Aria-label of the tab. */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** Id of the element that labels the tab. */\n @Input()\n ariaLabelledBy: Nullable<string>;\n\n /** The title of tab, depending on mode used, it will be placed in different position */\n @Input()\n title: Nullable<string>;\n\n /** The count of tab, depending on mode used, it will be placed in different position */\n @Input()\n count: Nullable<string>;\n\n /** Glyph icon, it can be used only on */\n @Input()\n glyph: string;\n\n /** Glyph icon, it can be used only on */\n @Input()\n header = false;\n\n /** Disabled state for tab item */\n @Input()\n disabled = false;\n\n /** Semantic type of the tab item */\n @Input()\n tabState: Nullable<TabItemState>;\n\n /** Event that is emitted when the tab panel has been opened. */\n @Output()\n opened = new EventEmitter<void>();\n\n /** Event that is emitted when the tab panel has been closed. */\n @Output()\n closed = new EventEmitter<void>();\n\n /** @hidden */\n @ContentChild(TabTitleDirective, { read: TemplateRef })\n titleTemplate: TemplateRef<any>;\n\n /** @hidden */\n @HostBinding('class.is-expanded')\n _expandedClass = false;\n\n /** @hidden Event that is emitted when the tab panel . */\n _expandedStateChange = new Subject<TabPanelStateChange>();\n\n /** @hidden */\n _forcedVisibility = false;\n\n /** @hidden Whether to display tab panel content */\n private _expanded = false;\n\n /** @hidden */\n get _panelId(): string {\n return this.id + '-panel';\n }\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n private _changeDetRef: ChangeDetectorRef,\n private _ngZone: NgZone,\n @Optional() @Inject(LIST_COMPONENT) private readonly _tabsComponent: TabListComponentInterface | null\n ) {}\n\n /** @hidden\n * Thanks to OnPush change strategy detection on tab-list parent component,\n * every change of any property should be reported. */\n ngOnChanges(): void {\n this._tabsComponent?.tabPanelPropertyChanged.next();\n }\n\n /** Whether tab panel content is expanded */\n get expanded(): boolean {\n return this._expanded;\n }\n\n /** Whether to expand tab panel content */\n open(open: boolean): void {\n this._expandedStateChange.next(new TabPanelStateChange(this, open));\n }\n\n /** @hidden Set new expand state */\n _expand(expanded: boolean): void {\n if (this._expanded !== expanded) {\n this._expanded = expanded;\n\n if (expanded) {\n this.opened.emit();\n } else {\n this.closed.emit();\n }\n\n this._changeDetRef.detectChanges();\n\n this._ngZone.onStable.pipe(first()).subscribe(() => this._updateHost());\n }\n }\n\n /** @hidden */\n _focusFirstFocusableElement(): void {\n this.elementRef.nativeElement\n .querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n ?.focus({ preventScroll: true });\n }\n\n /** @hidden */\n private _updateHost(): void {\n this._expandedClass = this.expanded;\n }\n}\n","@if (expanded) {\n <ng-content></ng-content>\n}\n","import { TemplateRef } from '@angular/core';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { TabItemState } from '../tab-item/tab-item.directive';\nimport { TabPanelComponent } from '../tab-panel/tab-panel.component';\n\n/** @hidden */\nexport class TabInfo {\n /** Whether the tab is active */\n active: boolean;\n\n /** @hidden Width of the tab header */\n headerWidth: number;\n\n /** Corresponding tab panel */\n panel: TabPanelComponent;\n\n /** @hidden */\n constructor(tabPanel: TabPanelComponent) {\n this.panel = tabPanel;\n this.active = tabPanel.expanded;\n }\n\n /** Tab header title */\n get title(): Nullable<string> {\n return this.panel.title;\n }\n\n /** Whether the tab is disabled */\n get disabled(): boolean {\n return this.panel.disabled;\n }\n\n /** Whether the tab is tab header */\n get isHeader(): boolean {\n return this.panel.header;\n }\n\n /** @hidden */\n get id(): Nullable<string> {\n return this.panel.id;\n }\n\n /** @hidden */\n get ariaLabel(): Nullable<string> {\n return this.panel.ariaLabel;\n }\n\n /** @hidden */\n get ariaLabelledBy(): Nullable<string> {\n return this.panel.ariaLabelledBy;\n }\n\n /** @hidden */\n get tabState(): Nullable<TabItemState> {\n return this.panel.tabState;\n }\n\n /** @hidden */\n get titleTemplate(): TemplateRef<any> {\n return this.panel.titleTemplate;\n }\n\n /** @hidden */\n get count(): Nullable<string> {\n return this.panel.count;\n }\n\n /** @hidden */\n get glyph(): string {\n return this.panel.glyph;\n }\n\n /** @hidden */\n get forcedVisibility(): boolean {\n return this.panel._forcedVisibility;\n }\n\n /** @hidden */\n get panelId(): string {\n return this.panel._panelId;\n }\n}\n","import { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n forwardRef,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyUtil, Nullable, scrollTop, warnOnce } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport {\n MenuComponent,\n MenuInteractiveComponent,\n MenuItemComponent,\n MenuTitleDirective,\n MenuTriggerDirective\n} from '@fundamental-ngx/core/menu';\nimport {\n OverflowExpandDirective,\n OverflowItemRefDirective,\n OverflowLayoutComponent,\n OverflowLayoutFocusableItemDirective,\n OverflowLayoutItemDirective\n} from '@fundamental-ngx/core/overflow-layout';\nimport { ScrollSpyDirective } from '@fundamental-ngx/core/scroll-spy';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { FD_TABLIST, TabList } from '@fundamental-ngx/core/shared';\nimport { Observable, Subject, Subscription, fromEvent, merge } from 'rxjs';\nimport { debounceTime, delay, filter, first, map, startWith, switchMap, take, tap } from 'rxjs/operators';\nimport { TabItemExpandComponent } from './tab-item-expand/tab-item-expand.component';\nimport { TabItemDirective } from './tab-item/tab-item.directive';\nimport { TabLinkDirective } from './tab-link/tab-link.directive';\nimport { TabListComponentInterface } from './tab-list-component.interface';\nimport { LIST_COMPONENT } from './tab-list.token';\nimport { TabPanelComponent } from './tab-panel/tab-panel.component';\nimport {\n TabCountDirective,\n TabCounterHeaderDirective,\n TabHeaderDirective,\n TabIconComponent,\n TabLabelDirective,\n TabProcessDirective,\n TabProcessIconDirective,\n TabSeparatorDirective,\n TabTagDirective\n} from './tab-utils/tab-directives';\nimport { TabInfo } from './tab-utils/tab-info.class';\n\nexport type TabModes = 'icon-only' | 'process' | 'filter';\n\nexport type TabSizes = 's' | 'm' | 'l' | 'xl' | 'xxl';\n\n/**\n * Represents a list of tab-panels.\n * @deprecated\n * Use `@fundamental-ngx/platform/icon-tab-bar` instead\n */\n@Component({\n selector: 'fd-tab-list',\n templateUrl: './tab-list.component.html',\n styleUrl: './tab-list.component.scss',\n host: {\n class: 'fd-tabs-custom'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n contentDensityObserverProviders(),\n {\n provide: LIST_COMPONENT,\n useExisting: TabListComponent\n },\n {\n provide: FD_TABLIST,\n useExisting: TabListComponent\n }\n ],\n imports: [\n OverflowLayoutComponent,\n OverflowItemRefDirective,\n TabItemDirective,\n OverflowLayoutItemDirective,\n TabLinkDirective,\n OverflowLayoutFocusableItemDirective,\n NgTemplateOutlet,\n TabHeaderDirective,\n TabCounterHeaderDirective,\n TabLabelDirective,\n TabIconComponent,\n TabCountDirective,\n TabProcessDirective,\n TabTagDirective,\n TabProcessIconDirective,\n TabSeparatorDirective,\n OverflowExpandDirective,\n TabItemExpandComponent,\n MenuTriggerDirective,\n MenuComponent,\n MenuItemComponent,\n MenuInteractiveComponent,\n ScrollSpyDirective,\n CdkScrollable,\n ScrollbarDirective,\n MenuTitleDirective\n ]\n})\nexport class TabListComponent\n implements TabListComponentInterface, AfterContentInit, AfterViewInit, OnDestroy, TabList\n{\n /** Size of tab, it's mostly about adding spacing on tab container, available sizes 's' | 'm' | 'l' | 'xl' | 'xxl' */\n @Input()\n size: TabSizes = 'm';\n\n /**\n * Whether user wants to use tab component in certain mode. Modes available:\n * 'icon-only' | 'process' | 'filter'\n */\n @Input()\n mode: TabModes;\n\n /** Whether to move tabs overflowing in the tab bar to the dropdown */\n @Input()\n collapseOverflow = true;\n\n /** Limits the maximum number of tabs visible in the tab bar in collapseOverflow mode.\n * Other tabs will be moved to the collapsed tabs dropdown */\n @Input()\n maxVisibleTabs = Infinity;\n\n /** Whether to open tab content one under another without collapsing */\n @Input()\n stackContent = false;\n\n /** Maximum height of the content */\n @Input()\n maxContentHeight = '100%';\n\n /** Whether to enable collapsing expanded tab on expanded tab click */\n @Input()\n collapsibleTabs = false;\n\n /** Initially selected tab (by id). First not disabled one if not specified. */\n @Input()\n defaultTab: Nullable<string>;\n\n /** Whether to try to keep selected tab (default value) on tabs change or to select default one (first if not specified). */\n @Input()\n selectDefaultOnTabsChange = false;\n\n /** Whether to focus the first focusable element in a tab panel when using stacked tabs. */\n @Input()\n focusFirstFocusableElement = true;\n\n /** Event emitted when the selected panel changes. */\n @Output()\n selectedTabChange = new EventEmitter<TabPanelComponent>();\n\n /** Event emitted when the selected panel index changes. */\n @Output()\n selectedTabIndexChange = new EventEmitter<number>();\n\n /** Event emitted when visible items count has been changed. */\n @Output()\n visibleItemsCount = new EventEmitter<number>();\n\n /** Event emitted when hidden items count has been changed. */\n @Output()\n hiddenItemsCount = new EventEmitter<number>();\n\n /** @hidden */\n @ContentChildren(forwardRef(() => TabPanelComponent))\n tabPanels: QueryList<TabPanelComponent>;\n\n /** @hidden */\n @ViewChildren(TabLinkDirective)\n tabHeaderLinks: QueryList<TabLinkDirective>;\n\n /** @hidden */\n @ViewChildren(TabItemDirective)\n tabHeaders: QueryList<TabItemDirective>;\n\n /** @hidden */\n @ViewChild(TabItemExpandComponent, { read: ElementRef })\n overflowTrigger: ElementRef;\n\n /** @hidden */\n @ViewChild('headerContainer', { read: ElementRef })\n headerContainer: ElementRef;\n\n /** @hidden */\n @ViewChild(ScrollbarDirective)\n _scrollbar: ScrollbarDirective;\n\n /** @hidden */\n @ViewChild('menu', { read: MenuComponent })\n menu: MenuComponent;\n\n /** @hidden */\n @ViewChild(OverflowLayoutComponent)\n private _overflowLayout: OverflowLayoutComponent;\n\n /** @hidden */\n @ViewChild('scrollSpy', { read: ScrollSpyDirective })\n private readonly _scrollSpy: Nullable<ScrollSpyDirective>;\n\n /** @hidden */\n get contentContainer(): ElementRef<HTMLElement> {\n return this._scrollbar?.elementRef;\n }\n\n /** @hidden Collection of tabs in original order */\n _tabArray: TabInfo[] = [];\n\n /** @hidden Whether to disable scroll spy */\n _disableScrollSpy = false;\n\n /** @hidden */\n _init = true;\n\n /** @hidden */\n _currentNumberOfTabs = 0;\n\n /** Scrollable element reference. */\n get scrollableElement(): Nullable<ElementRef> {\n return this._scrollbar?.elementRef;\n }\n\n /** Event is thrown always when tab is selected by keyboard actions */\n readonly tabSelected: Subject<number> = new Subject<number>();\n\n /** Event is thrown always, when some property is changed */\n readonly tabPanelPropertyChanged: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private readonly _zone = inject(NgZone);\n\n /** @hidden */\n constructor(\n private readonly _changeDetectorRef: ChangeDetectorRef,\n readonly _contentDensityObserver: ContentDensityObserver,\n private readonly _destroyRef: DestroyRef\n ) {\n warnOnce('TabListComponent is deprecated, use `@fundamental-ngx/platform/icon-tab-bar` instead');\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setupTabPanelsChangeListeners();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._initStackContentSubscription();\n this._listenOnTabPanelsExpandedChange();\n this._listenOnTabPanelsAndInitiallyExpandTabPanel();\n this._listenOnPropertiesChange();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n _tabHeaderClickHandler(tabPanel: TabPanelComponent): void {\n this._expandTab(tabPanel, !tabPanel.expanded);\n }\n\n /** @hidden */\n _tabHeaderKeydownHandler(event: KeyboardEvent, tabPanel: TabPanelComponent): void {\n if (!KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n return;\n }\n\n event.preventDefault();\n this._tabHeaderClickHandler(tabPanel);\n }\n\n /** @hidden */\n _overflowingTabHeaderClickHandler(tabPanel: TabPanelComponent): void {\n this._tabArray.forEach((tab) => {\n tab.panel._forcedVisibility = tab.panel === tabPanel;\n });\n\n this._expandTab(tabPanel, true, false);\n\n this._overflowLayout.triggerRecalculation();\n\n this._detectChanges();\n }\n\n /** @hidden */\n selectTab(id: Nullable<string>): void {\n this.highlightActiveTab(id);\n }\n\n /** @hidden */\n highlightActiveTab(id: Nullable<string>): void {\n const tab = this._tabArray.find((_tab) => _tab.panel._panelId === id);\n if (tab) {\n const _tabWasActive = tab.active;\n this._activateStackedTab(tab.panel, false);\n if (!_tabWasActive) {\n this._selectedTabChange(tab.panel);\n }\n }\n }\n\n /** @hidden */\n _onTriggerKeydown(event: KeyboardEvent, menuRef: MenuComponent): void {\n if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n event.preventDefault();\n menuRef.toggle();\n }\n }\n\n /** @hidden */\n private get _tabPanelsChange$(): Observable<TabPanelComponent[]> {\n return this.tabPanels.changes.pipe(\n startWith(this.tabPanels),\n map((tabPanels) => tabPanels.toArray()),\n takeUntilDestroyed(this._destroyRef)\n );\n }\n\n /** @hidden */\n private _detectChanges(): void {\n if (this._changeDetectorRef && !this._changeDetectorRef['destroyed']) {\n this._changeDetectorRef.detectChanges();\n }\n }\n\n /** @hidden */\n private _setupTabPanelsChangeListeners(): void {\n this._listenOnTabPanelsAndUpdateStorageStructures();\n }\n\n /** @hidden Setup mechanisms required for handling the stacked content behavior */\n private _initStackContentSubscription(): void {\n this._tabPanelsChange$\n .pipe(\n filter(() => this.stackContent),\n delay(0),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(() =>\n this._tabArray.filter((tab) => !tab.panel.disabled).forEach((tab) => tab.panel._expand(true))\n );\n }\n\n /** @hidden */\n private _listenOnTabPanelsAndUpdateStorageStructures(): void {\n this._tabPanelsChange$\n .pipe(\n map((tabPanels) =>\n tabPanels.map((el) => this._tabArray?.find((tabInfo) => tabInfo.panel === el) || new TabInfo(el))\n ),\n tap((tabs) => (this._tabArray = tabs)),\n switchMap(() => this._zone.onStable.pipe(startWith(this._zone.isStable))),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(() => {\n if (this.stackContent && this._currentNumberOfTabs !== this._tabArray.length) {\n this._zone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n this._scrollSpy?.onScroll(undefined, true);\n this._currentNumberOfTabs = this._tabArray.length;\n });\n }\n });\n }\n\n /** @hidden */\n private _listenOnTabPanelsExpandedChange(): void {\n this._tabPanelsChange$\n .pipe(\n map((tabPanels) => tabPanels.map((tab) => tab._expandedStateChange.asObservable())),\n switchMap((tabPanels) => merge(...tabPanels)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event) => {\n this._tabArray.forEach((tab) => {\n tab.panel._forcedVisibility = tab.panel === event.target;\n });\n this._expandTab(event.target, event.state);\n this._overflowLayout.triggerRecalculation();\n });\n }\n\n /** @hidden */\n private _listenOnTabPanelsAndInitiallyExpandTabPanel(): void {\n this._tabPanelsChange$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n const activeTab = this._tabArray.find((_tab) => _tab.active);\n let tab: Nullable<TabInfo>;\n\n if (!activeTab || this.selectDefaultOnTabsChange) {\n if (this.defaultTab) {\n tab = this._tabArray.find((_tab) => !_tab.disabled && _tab.id === this.defaultTab);\n }\n\n if (!tab) {\n tab = this._tabArray.find((_tab) => !_tab.disabled);\n }\n }\n\n if (tab && activeTab !== tab) {\n this._expandTab(tab.panel, true);\n }\n });\n }\n\n /** @hidden */\n private _listenOnPropertiesChange(): void {\n merge(this.tabPanelPropertyChanged, this.tabPanels.changes)\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._detectChanges());\n }\n\n /** @hidden */\n private _activateStackedTab(tabPanel: TabPanelComponent, scroll = true): void {\n if (scroll) {\n this._scrollToPanel(tabPanel);\n }\n this._tabArray.forEach((tab) => {\n tab.active = tab.panel === tabPanel;\n });\n }\n\n /** @hidden */\n private _activateExpandableTab(tabPanel: TabPanelComponent, expand: boolean): void {\n const collapse = this.collapsibleTabs && !expand;\n\n this._tabArray.forEach((tab) => {\n const isActive = tab.panel === tabPanel && !collapse;\n\n tab.panel._expand(isActive);\n tab.active = isActive;\n });\n }\n\n /** @hidden */\n private _expandTab(tabPanel: TabPanelComponent, expand: boolean, detectChanges = true): void {\n if (this.stackContent) {\n this._activateStackedTab(tabPanel);\n } else {\n if (!this._canChangeExpandState(tabPanel, expand)) {\n return;\n }\n\n this._activateExpandableTab(tabPanel, expand);\n }\n\n if (detectChanges) {\n this._detectChanges();\n }\n\n this._selectedTabChange(tabPanel);\n }\n\n /** @hidden */\n private _scrollToPanel(tabPanel: TabPanelComponent): void {\n const panelElement = tabPanel.elementRef.nativeElement;\n const containerElement = this.contentContainer.nativeElement;\n const distanceToScroll = panelElement.offsetTop - containerElement.offsetTop;\n const maximumScrollTop = containerElement.scrollHeight - containerElement.clientHeight;\n const currentScrollPosition = Math.ceil(containerElement.scrollTop);\n\n if (!(currentScrollPosition === maximumScrollTop && distanceToScroll > maximumScrollTop)) {\n !this._init ? (this._disableScrollSpy = true) : (this._init = false);\n fromEvent(containerElement, 'scroll')\n .pipe(debounceTime(100), first(), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => (this._disableScrollSpy = false));\n scrollTop(containerElement, distanceToScroll);\n }\n\n if (this.focusFirstFocusableElement) {\n tabPanel._focusFirstFocusableElement();\n }\n }\n\n /** @hidden Whether tab can be expanded/collapsed */\n private _canChangeExpandState(tabPanel: TabPanelComponent, expand: boolean): boolean {\n return !tabPanel.disabled && expand !== tabPanel.expanded && expand === false ? this.collapsibleTabs : true;\n }\n\n /** @hidden */\n private _selectedTabChange(tabPanel: TabPanelComponent): void {\n this.selectedTabChange.emit(tabPanel);\n\n const index = this._tabArray.findIndex((tabInfo) => tabInfo.panel === tabPanel);\n this.selectedTabIndexChange.emit(index);\n }\n}\n","<div #headerContainer role=\"tablist\" class=\"fd-tabs\" [class]=\"(mode ? 'fd-tabs--' + mode : '') + (' fd-tabs--' + size)\">\n <fd-overflow-layout\n [maxVisibleItems]=\"maxVisibleTabs\"\n [enableKeyboardNavigation]=\"true\"\n navigationTrigger=\"keydown\"\n (hiddenItemsCount)=\"hiddenItemsCount.emit($event)\"\n (visibleItemsCount)=\"visibleItemsCount.emit($event)\"\n >\n @for (tab of _tabArray; track tab; let i = $index; let last = $last) {\n <div\n fd-tab-item\n *fdOverflowItemRef=\"tab\"\n fdOverflowLayoutItem\n [forceVisibility]=\"tab.panel._forcedVisibility\"\n [header]=\"tab.isHeader\"\n [tabItemState]=\"tab.tabState\"\n >\n <a\n fd-tab-link\n role=\"tab\"\n [id]=\"tab.id\"\n [attr.aria-controls]=\"tab.panelId\"\n [attr.aria-label]=\"tab.ariaLabel || null\"\n [attr.aria-labelledby]=\"!tab.ariaLabel && tab.ariaLabelledBy ? tab.ariaLabelledBy : null\"\n fdOverflowLayoutFocusableItem\n [focusable]=\"tab.active\"\n [navigable]=\"!tab.disabled\"\n [active]=\"tab.active\"\n [disabled]=\"tab.disabled\"\n (keydown)=\"_tabHeaderKeydownHandler($event, tab.panel)\"\n (click)=\"_tabHeaderClickHandler(tab.panel)\"\n >\n <ng-template [ngTemplateOutlet]=\"tab.titleTemplate || null\"></ng-template>\n @if (!tab.titleTemplate) {\n @switch (mode) {\n @case ('filter') {\n @if (tab.isHeader) {\n <span fd-tab-header>\n @if (tab.count) {\n <span fd-tab-counter-header>{{ tab.count }}</span>\n }\n @if (tab.title) {\n <span fd-tab-label>{{ tab.title }}</span>\n }\n </span>\n }\n @if (!tab.isHeader) {\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n <span fd-tab-label>{{ tab.title }}</span>\n }\n }\n @case ('icon-only') {\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n }\n @case ('process') {\n @if (tab.glyph) {\n <span fd-tab-icon [icon]=\"tab.glyph\"></span>\n }\n <div fd-tab-process>\n @if (tab.count) {\n <span fd-tab-label>{{ tab.count }}</span>\n }\n @if (tab.title) {\n <span fd-tab-label>{{ tab.title }}</span>\n }\n </div>\n }\n @default {\n @if (tab.count) {\n <p fd-tab-count>{{ tab.count }}</p>\n }\n <span fd-tab-tag>{{ tab.title }}</span>\n }\n }\n }\n </a>\n @if (mode === 'process' && !last) {\n <div fd-tab-process-icon></div>\n }\n </div>\n @if (tab.isHeader) {\n <div fd-tab-separator></div>\n }\n }\n <ng-container *fdOverflowExpand=\"let tabs; items: _tabArray\">\n @if (tabs.length > 0) {\n <fd-item-expand [fdMenuTrigger]=\"menu\" (keydown)=\"_onTriggerKeydown($event, menu)\"> </fd-item-expand>\n }\n <fd-menu #menu>\n @for (tab of tabs; track tab) {\n <li fd-menu-item (onSelect)=\"_overflowingTabHeaderClickHandler(tab.item.panel)\">\n <div fd-menu-interactive>\n <ng-template\n [ngTemplateOutlet]=\"\n !tab.item.titleTemplate && mode === 'icon-only'\n ? iconOnlyTemplate\n : tab.item.titleTemplate || textTitle\n \"\n [ngTemplateOutletContext]=\"{ $implicit: tab.item }\"\n ></ng-template>\n </div>\n </li>\n }\n </fd-menu>\n </ng-container>\n </fd-overflow-layout>\n</div>\n<div\n class=\"fd-tabs__content\"\n [style.max-height]=\"maxContentHeight\"\n fdScrollSpy\n #scrollSpy=\"fdScrollSpy\"\n fd-scrollbar\n [trackedTags]=\"['fd-tab']\"\n [scrollSpyDisabled]=\"_disableScrollSpy\"\n (spyChange)=\"highlightActiveTab($event?.id)\"\n>\n <ng-content></ng-content>\n</div>\n<ng-template #textTitle let-tab>\n <span fd-menu-title>{{ tab.title }}</span>\n</ng-template>\n<ng-template #iconOnlyTemplate let-tab>\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n</ng-template>\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n QueryList,\n ViewEncapsulation,\n computed,\n effect,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CssClassBuilder, KeyUtil, RtlService, applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { Subscription, merge } from 'rxjs';\nimport { TabItemDirective } from '../tab-item/tab-item.directive';\nimport { TabLinkDirective } from '../tab-link/tab-link.directive';\nimport { TabModes, TabSizes } from '../tab-list.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-tab-nav]',\n template: ` <ng-content></ng-content>`,\n providers: [contentDensityObserverProviders()],\n styleUrl: './tab-nav.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TabNavComponent implements AfterContentInit, OnChanges, OnInit, OnDestroy, CssClassBuilder {\n /** Apply user custom styles */\n @Input()\n class: string;\n\n /**\n * Whether user wants to use tab component in certain mode. Modes available:\n * 'icon-only' | 'process' | 'filter'\n */\n @Input()\n mode: TabModes;\n\n /** Size of tab, it's mostly about adding spacing on tab container, available sizes 's' | 'm' | 'l' | 'xl' | 'xxl' */\n @Input()\n size: TabSizes = 'm';\n\n /** @hidden */\n @ContentChildren(TabLinkDirective, { descendants: true })\n links: QueryList<TabLinkDirective>;\n\n /** @hidden */\n @ContentChildren(TabItemDirective, { descendants: true })\n items: QueryList<TabItemDirective>;\n\n /** @hidden */\n protected readonly _dir = computed(() => (this._rtlService?.rtl() ? 'rtl' : 'ltr'));\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** An RxJS Subject that will kill the data stream upon component’s 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 _contentDensityObserver = inject(ContentDensityObserver);\n\n /** @hidden */\n private _keyboardEventsManager: FocusKeyManager<TabLinkDirective>;\n\n /** @hidden */\n constructor(public readonly elementRef: ElementRef) {\n this._contentDensityObserver.subscribe();\n\n // React to RTL changes for keyboard navigation\n effect(() => {\n const dir = this._dir();\n if (this._keyboardEventsManager) {\n this._keyboardEventsManager.withHorizontalOrientation(dir);\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 [`fd-tabs`, this.mode ? 'fd-tabs--' + this.mode : '', `fd-tabs--${this.size}`, this.class];\n }\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n protected _keyUpHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [LEFT_ARROW, RIGHT_ARROW])) {\n this._keyboardEventsManager.onKeydown(event);\n }\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setupKeyManager();\n this._refreshSubscription();\n this._listenOnContentQueryListChange();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._keyboardEventsManager?.destroy();\n }\n\n /** Function that gives possibility to get all the link directives, with and without nav__item wrapper */\n get tabLinks(): TabLinkDirective[] {\n let tabLinks: TabLinkDirective[] = [];\n if (this.links) {\n tabLinks = tabLinks.concat(this.links.map((link) => link));\n }\n if (this.items) {\n tabLinks = tabLinks.concat(this.items.filter((item) => !!item.linkItem).map((item) => item.linkItem));\n }\n return tabLinks;\n }\n\n /**\n * Function to select a new tab from an index.\n * @param tabIndex Index of the tab to select.\n */\n selectTab(tabIndex: number): void {\n this.tabLinks[tabIndex].elementRef.nativeElement.click();\n }\n\n /**\n * @hidden\n * Every time any of query is changed, ex. tab is removed or added\n * reference to keydown subscriptions handler is renewed\n */\n private _listenOnContentQueryListChange(): void {\n merge(this.links.changes, this.items.changes)\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._refreshSubscription());\n }\n\n /** Whether any QueryList detects any changes */\n private _refreshSubscription(): void {\n this._subscriptions.unsubscribe();\n this._subscriptions = new Subscription();\n this._listenToFocusedLinks();\n\n this.links.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._listenToFocusedLinks();\n });\n }\n\n /** @hidden */\n private _listenToFocusedLinks(): void {\n const links = this.links.toArray();\n links.forEach((link) => {\n this._subscriptions.add(\n link.focused.subscribe(() => {\n this._keyboardEventsManager.setActiveItem(links.findIndex((item) => item === link));\n })\n );\n });\n }\n\n /** @hidden */\n private _setupKeyManager(): void {\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = new FocusKeyManager(this.links).withWrap().withHorizontalOrientation(this._dir());\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { TabListComponent } from './tab-list.component';\nimport { TabPanelComponent } from './tab-panel/tab-panel.component';\n\nimport { TabItemDirective } from './tab-item/tab-item.directive';\nimport { TabLinkDirective } from './tab-link/tab-link.directive';\nimport { TabNavComponent } from './tab-nav/tab-nav.component';\nimport {\n TabCountDirective,\n TabCounterHeaderDirective,\n TabHeaderDirective,\n TabIconComponent,\n TabLabelDirective,\n TabProcessDirective,\n TabProcessIconDirective,\n TabSeparatorDirective,\n TabTagDirective,\n TabTitleDirective\n} from './tab-utils/tab-directives';\n\nconst components = [\n TabListComponent,\n TabPanelComponent,\n TabTitleDirective,\n TabNavComponent,\n TabItemDirective,\n TabLinkDirective,\n TabTagDirective,\n TabIconComponent,\n TabCountDirective,\n TabLabelDirective,\n TabProcessDirective,\n TabHeaderDirective,\n TabCounterHeaderDirective,\n TabProcessIconDirective,\n TabSeparatorDirective\n];\n\n/**\n * @deprecated\n * Use `@fundamental-ngx/platform/icon-tab-bar` instead\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class TabsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["first"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAaA;;;;;;;;;;;;AAYG;MAKU,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,+CAA+C;AACzD,oBAAA,UAAU,EAAE;AACf,iBAAA;;AAGD;;AAEG;MAKU,iBAAiB,CAAA;AAJ9B,IAAA,WAAA,GAAA;;QAOI,IAAA,CAAA,gBAAgB,GAAG,IAAI;AAC1B,IAAA;8GAJY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAGI,WAAW;uBAAC,sBAAsB;;AAIvC;;AAEG;MAcU,gBAAgB,CAAA;;AAiBzB,IAAA,WAAA,CAA4B,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;;QAHtC,IAAA,CAAA,QAAQ,GAAa,2BAA2B;IAGK;AAErD;;;AAGG;IAEH,sBAAsB,GAAA;AAClB,QAAA,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC;IACxC;AAEA;;;;AAIG;IACH,WAAW,GAAA;QACP,IAAI,CAAC,sBAAsB,EAAE;IACjC;8GAnCS,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAVf;;;;;AAKT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAGS,aAAa,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;AA0BvB,UAAA,CAAA;IADC,aAAa;;;;AAGb,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,IAAA,CAAA;2FA1BQ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAb5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE;;;;;AAKT,IAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,OAAO,EAAE,CAAC,aAAa;AAC1B,iBAAA;;sBAGI;;sBAOA;;sBAIA;;MAgCQ,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;MAUY,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;MAUY,mBAAmB,CAAA;8GAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;MAUY,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;MAUY,yBAAyB,CAAA;8GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,+CAA+C;AACzD,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;MAUY,uBAAuB,CAAA;8GAAvB,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,2CAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2CAA2C;AACrD,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;MAUY,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,sCAAsC;AAChD,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE;AACV,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;;AC1JD;;AAEG;MAaU,sBAAsB,CAAA;8GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,4KCpBnC,sRAIA,EAAA,MAAA,EAAA,CAAA,8XAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDcc,eAAe,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,oKAAE,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;;2FAEhD,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAZlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAAA,IAAA,EAGpB;AACF,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,KAAK,EAAE;AACV,qBAAA,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,eAAe,EAAE,aAAa,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,8XAAA,CAAA,EAAA;;;AEb9D;;;;;;;;AAQG;AAWG,MAAO,gBAAiB,SAAQ,kBAAkB,CAAA;AATxD,IAAA,WAAA,GAAA;;;AA0Ba,QAAA,IAAA,CAAA,OAAO,GAAgC,IAAI,YAAY,EAAiB;;AAIxE,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAQ;AA4B9C,IAAA;;IAxBa,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACvB;;AAIU,IAAA,QAAQ,CAAC,KAAoB,EAAA;AACnC,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;AAC1C,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QACvB;IACJ;;IAGA,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC;AACxC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;QAC1C;IACJ;;IAGA,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;IACzC;8GAhDS,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,KAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAT5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACF,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,QAAQ,EAAE;AACb,qBAAA;AACD,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAGI;;sBACA,WAAW;uBAAC,oBAAoB;;sBAOhC;;sBACA,WAAW;uBAAC,oBAAoB;;sBAChC,WAAW;uBAAC,mBAAmB;;sBAI/B;;sBAIA;;sBAIA,YAAY;uBAAC,OAAO;;sBAMpB,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;AChDrC;;;;;;;;;;AAUG;MAMU,gBAAgB,CAAA;;AA4BzB,IAAA,WAAA,CAA4B,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;;QAzBtC,IAAA,CAAA,KAAK,GAAG,EAAE;;QAcV,IAAA,CAAA,QAAQ,GAAG,KAAK;;QAIhB,IAAA,CAAA,cAAc,GAAG,IAAI;IAOgC;;IAIrD,sBAAsB,GAAA;QAClB,OAAO;YACH,IAAI,CAAC,cAAc,GAAG,eAAe,GAAG,EAAE;YAC1C,IAAI,CAAC,MAAM,GAAG,uBAAuB,GAAG,EAAE;AAC1C,YAAA,IAAI,CAAC,YAAY,GAAG,CAAA,eAAA,EAAkB,IAAI,CAAC,YAAY,CAAA,CAAE,GAAG,EAAE;AAC9D,YAAA,IAAI,CAAC;SACR;IACL;;IAGA,WAAW,GAAA;QACP,IAAI,CAAC,sBAAsB,EAAE;IACjC;;IAGA,QAAQ,GAAA;QACJ,IAAI,CAAC,sBAAsB,EAAE;IACjC;8GAjDS,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,0VAwBX,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;AAQ9B,UAAA,CAAA;IADC,aAAa;;;;AAQb,CAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,IAAA,CAAA;2FAvCQ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,UAAU,EAAE;AACf,iBAAA;;sBAGI;;sBAIA;;sBAIA;;sBAIA;;sBACA,WAAW;uBAAC,oBAAoB;;sBAChC,WAAW;uBAAC,mBAAmB;;sBAI/B;;sBAIA,YAAY;uBAAC,gBAAgB;;;MC3CrB,cAAc,GAAG,IAAI,cAAc,CAA4B,eAAe;;ACqB3F,IAAI,gBAAgB,GAAG,CAAC;MAEX,mBAAmB,CAAA;AAC5B;;;;AAIG;IACH,WAAA,CACW,MAAyB,EACzB,KAAc,EAAA;QADd,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,KAAK,GAAL,KAAK;IACb;AACN;AAED;;AAEG;MAcU,iBAAiB,CAAA;;AA+D1B,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,EAAE,GAAG,QAAQ;IAC7B;;AAGA,IAAA,WAAA,CACW,UAAsB,EACrB,aAAgC,EAChC,OAAe,EAC8B,cAAgD,EAAA;QAH9F,IAAA,CAAA,UAAU,GAAV,UAAU;QACT,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,OAAO,GAAP,OAAO;QACsC,IAAA,CAAA,cAAc,GAAd,cAAc;;AArEvE,QAAA,IAAA,CAAA,EAAE,GAAW,cAAc,GAAG,gBAAgB,EAAE;;QAwBhD,IAAA,CAAA,MAAM,GAAG,KAAK;;QAId,IAAA,CAAA,QAAQ,GAAG,KAAK;;AAQhB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;;AAIjC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAQ;;QAQjC,IAAA,CAAA,cAAc,GAAG,KAAK;;AAGtB,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,OAAO,EAAuB;;QAGzD,IAAA,CAAA,iBAAiB,GAAG,KAAK;;QAGjB,IAAA,CAAA,SAAS,GAAG,KAAK;IAatB;AAEH;;AAEsD;IACtD,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,EAAE,uBAAuB,CAAC,IAAI,EAAE;IACvD;;AAGA,IAAA,IAAI,QAAQ,GAAA;QACR,OAAO,IAAI,CAAC,SAAS;IACzB;;AAGA,IAAA,IAAI,CAAC,IAAa,EAAA;AACd,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvE;;AAGA,IAAA,OAAO,CAAC,QAAiB,EAAA;AACrB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;YAEzB,IAAI,QAAQ,EAAE;AACV,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACtB;iBAAO;AACH,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YACtB;AAEA,YAAA,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;YAElC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC3E;IACJ;;IAGA,2BAA2B,GAAA;QACvB,IAAI,CAAC,UAAU,CAAC;aACX,aAAa,CAAC,0EAA0E;cACvF,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IACxC;;IAGQ,WAAW,GAAA;AACf,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ;IACvC;AAvHS,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,iBAAiB,mGAwEF,cAAc,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAxE7B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA8CZ,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,WAAW,kDCpGxD,sDAGA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDmDa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAb7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAQ,EAAA,IAAA,EAEZ;AACF,wBAAA,IAAI,EAAE,UAAU;AAChB,wBAAA,KAAK,EAAE,gBAAgB;AACvB,wBAAA,MAAM,EAAE,UAAU;AAClB,wBAAA,wBAAwB,EAAE;qBAC7B,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,WACtC,EAAE,EAAA,QAAA,EAAA,sDAAA,EAAA;;0BA0EN;;0BAAY,MAAM;2BAAC,cAAc;;sBAtErC;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;;sBAIrD,WAAW;uBAAC,mBAAmB;;;AElGpC;MACa,OAAO,CAAA;;AAWhB,IAAA,WAAA,CAAY,QAA2B,EAAA;AACnC,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ;IACnC;;AAGA,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK;IAC3B;;AAGA,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ;IAC9B;;AAGA,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM;IAC5B;;AAGA,IAAA,IAAI,EAAE,GAAA;AACF,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE;IACxB;;AAGA,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS;IAC/B;;AAGA,IAAA,IAAI,cAAc,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc;IACpC;;AAGA,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ;IAC9B;;AAGA,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa;IACnC;;AAGA,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK;IAC3B;;AAGA,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK;IAC3B;;AAGA,IAAA,IAAI,gBAAgB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB;IACvC;;AAGA,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ;IAC9B;AACH;;ACbD;;;;AAIG;MAkDU,gBAAgB,CAAA;;AAoGzB,IAAA,IAAI,gBAAgB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,UAAU;IACtC;;AAeA,IAAA,IAAI,iBAAiB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,UAAU;IACtC;;AAeA,IAAA,WAAA,CACqB,kBAAqC,EAC7C,uBAA+C,EACvC,WAAuB,EAAA;QAFvB,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAC1B,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;QACf,IAAA,CAAA,WAAW,GAAX,WAAW;;QApIhC,IAAA,CAAA,IAAI,GAAa,GAAG;;QAWpB,IAAA,CAAA,gBAAgB,GAAG,IAAI;AAEvB;AAC6D;QAE7D,IAAA,CAAA,cAAc,GAAG,QAAQ;;QAIzB,IAAA,CAAA,YAAY,GAAG,KAAK;;QAIpB,IAAA,CAAA,gBAAgB,GAAG,MAAM;;QAIzB,IAAA,CAAA,eAAe,GAAG,KAAK;;QAQvB,IAAA,CAAA,yBAAyB,GAAG,KAAK;;QAIjC,IAAA,CAAA,0BAA0B,GAAG,IAAI;;AAIjC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAqB;;AAIzD,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,YAAY,EAAU;;AAInD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAU;;AAI9C,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAU;;QA4C7C,IAAA,CAAA,SAAS,GAAc,EAAE;;QAGzB,IAAA,CAAA,iBAAiB,GAAG,KAAK;;QAGzB,IAAA,CAAA,KAAK,GAAG,IAAI;;QAGZ,IAAA,CAAA,oBAAoB,GAAG,CAAC;;AAQf,QAAA,IAAA,CAAA,WAAW,GAAoB,IAAI,OAAO,EAAU;;AAGpD,QAAA,IAAA,CAAA,uBAAuB,GAAkB,IAAI,OAAO,EAAQ;;AAG7D,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;;AAG1B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;QAQnC,QAAQ,CAAC,sFAAsF,CAAC;IACpG;;IAGA,kBAAkB,GAAA;QACd,IAAI,CAAC,8BAA8B,EAAE;IACzC;;IAGA,eAAe,GAAA;QACX,IAAI,CAAC,6BAA6B,EAAE;QACpC,IAAI,CAAC,gCAAgC,EAAE;QACvC,IAAI,CAAC,4CAA4C,EAAE;QACnD,IAAI,CAAC,yBAAyB,EAAE;IACpC;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;IACrC;;AAGA,IAAA,sBAAsB,CAAC,QAA2B,EAAA;QAC9C,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACjD;;IAGA,wBAAwB,CAAC,KAAoB,EAAE,QAA2B,EAAA;AACtE,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;YAC3C;QACJ;QAEA,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;IACzC;;AAGA,IAAA,iCAAiC,CAAC,QAA2B,EAAA;QACzD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YAC3B,GAAG,CAAC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,KAAK,KAAK,QAAQ;AACxD,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC;AAEtC,QAAA,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE;QAE3C,IAAI,CAAC,cAAc,EAAE;IACzB;;AAGA,IAAA,SAAS,CAAC,EAAoB,EAAA;AAC1B,QAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC/B;;AAGA,IAAA,kBAAkB,CAAC,EAAoB,EAAA;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,EAAE,CAAC;QACrE,IAAI,GAAG,EAAE;AACL,YAAA,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM;YAChC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;YAC1C,IAAI,CAAC,aAAa,EAAE;AAChB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC;YACtC;QACJ;IACJ;;IAGA,iBAAiB,CAAC,KAAoB,EAAE,OAAsB,EAAA;AAC1D,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;YAC1C,KAAK,CAAC,cAAc,EAAE;YACtB,OAAO,CAAC,MAAM,EAAE;QACpB;IACJ;;AAGA,IAAA,IAAY,iBAAiB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAC9B,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EACzB,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC,EACvC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CACvC;IACL;;IAGQ,cAAc,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE;AAClE,YAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE;QAC3C;IACJ;;IAGQ,8BAA8B,GAAA;QAClC,IAAI,CAAC,4CAA4C,EAAE;IACvD;;IAGQ,6BAA6B,GAAA;AACjC,QAAA,IAAI,CAAC;aACA,IAAI,CACD,MAAM,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,EAC/B,KAAK,CAAC,CAAC,CAAC,EACR,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvC,aAAA,SAAS,CAAC,MACP,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAChG;IACT;;IAGQ,4CAA4C,GAAA;AAChD,QAAA,IAAI,CAAC;AACA,aAAA,IAAI,CACD,GAAG,CAAC,CAAC,SAAS,KACV,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,CACpG,EACD,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,EACtC,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EACzE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aAEvC,SAAS,CAAC,MAAK;AACZ,YAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,oBAAoB,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAC1E,gBAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;oBACrD,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;oBAC1C,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM;AACrD,gBAAA,CAAC,CAAC;YACN;AACJ,QAAA,CAAC,CAAC;IACV;;IAGQ,gCAAgC,GAAA;AACpC,QAAA,IAAI,CAAC;aACA,IAAI,CACD,GAAG,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC,CAAC,EACnF,SAAS,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,EAC7C,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AAEvC,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;YACjB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAC3B,gBAAA,GAAG,CAAC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM;AAC5D,YAAA,CAAC,CAAC;YACF,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC;AAC1C,YAAA,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE;AAC/C,QAAA,CAAC,CAAC;IACV;;IAGQ,4CAA4C,GAAA;AAChD,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC7E,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC;AAC5D,YAAA,IAAI,GAAsB;AAE1B,YAAA,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,yBAAyB,EAAE;AAC9C,gBAAA,IAAI,IAAI,CAAC,UAAU,EAAE;oBACjB,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC;gBACtF;gBAEA,IAAI,CAAC,GAAG,EAAE;AACN,oBAAA,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACvD;YACJ;AAEA,YAAA,IAAI,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE;gBAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC;YACpC;AACJ,QAAA,CAAC,CAAC;IACN;;IAGQ,yBAAyB,GAAA;QAC7B,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO;AACrD,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aACzC,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/C;;AAGQ,IAAA,mBAAmB,CAAC,QAA2B,EAAE,MAAM,GAAG,IAAI,EAAA;QAClE,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;QACjC;QACA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YAC3B,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,KAAK,QAAQ;AACvC,QAAA,CAAC,CAAC;IACN;;IAGQ,sBAAsB,CAAC,QAA2B,EAAE,MAAe,EAAA;QACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,IAAI,CAAC,MAAM;QAEhD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,QAAQ;AAEpD,YAAA,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC3B,YAAA,GAAG,CAAC,MAAM,GAAG,QAAQ;AACzB,QAAA,CAAC,CAAC;IACN;;AAGQ,IAAA,UAAU,CAAC,QAA2B,EAAE,MAAe,EAAE,aAAa,GAAG,IAAI,EAAA;AACjF,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC;QACtC;aAAO;YACH,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;gBAC/C;YACJ;AAEA,YAAA,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC;QACjD;QAEA,IAAI,aAAa,EAAE;YACf,IAAI,CAAC,cAAc,EAAE;QACzB;AAEA,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;IACrC;;AAGQ,IAAA,cAAc,CAAC,QAA2B,EAAA;AAC9C,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa;AACtD,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa;QAC5D,MAAM,gBAAgB,GAAG,YAAY,CAAC,SAAS,GAAG,gBAAgB,CAAC,SAAS;QAC5E,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,YAAY,GAAG,gBAAgB,CAAC,YAAY;QACtF,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;QAEnE,IAAI,EAAE,qBAAqB,KAAK,gBAAgB,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,EAAE;YACtF,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACpE,YAAA,SAAS,CAAC,gBAAgB,EAAE,QAAQ;AAC/B,iBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAEA,OAAK,EAAE,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;AACrE,iBAAA,SAAS,CAAC,OAAO,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,CAAC;AACtD,YAAA,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;QACjD;AAEA,QAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE;YACjC,QAAQ,CAAC,2BAA2B,EAAE;QAC1C;IACJ;;IAGQ,qBAAqB,CAAC,QAA2B,EAAE,MAAe,EAAA;QACtE,OAAO,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM,KAAK,QAAQ,CAAC,QAAQ,IAAI,MAAM,KAAK,KAAK,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI;IAC/G;;AAGQ,IAAA,kBAAkB,CAAC,QAA2B,EAAA;AAClD,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;AAErC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC;AAC/E,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3C;8GAnYS,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,SAAA,EAxCd;AACP,YAAA,+BAA+B,EAAE;AACjC,YAAA;AACI,gBAAA,OAAO,EAAE,cAAc;AACvB,gBAAA,WAAW,EAAE;AAChB,aAAA;AACD,YAAA;AACI,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,CAAA,MA8FiC,iBAAiB,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAYxC,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAIf,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAIrC,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAIF,aAAa,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAI7B,uBAAuB,qHAIF,kBAAkB,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,SAAA,EA5BpC,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAIhB,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnMlC,48LAmIA,EAAA,MAAA,EAAA,CAAA,6snBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDpCQ,uBAAuB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,kBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,wBAAwB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,gBAAgB,qIAChB,2BAA2B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC3B,gBAAgB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,oCAAoC,EAAA,QAAA,EAAA,oEAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpC,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,kBAAkB,EAAA,QAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,yBAAyB,EAAA,QAAA,EAAA,+CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,iBAAiB,yEACjB,gBAAgB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,iBAAiB,EAAA,QAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,mBAAmB,EAAA,QAAA,EAAA,kCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,eAAe,EAAA,QAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,uBAAuB,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,qBAAqB,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,uBAAuB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,sBAAsB,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,oBAAoB,uFACpB,aAAa,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,cAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,iBAAiB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,wBAAwB,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACxB,kBAAkB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,eAAA,EAAA,cAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAElB,kBAAkB,+IAClB,kBAAkB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAGb,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAjD5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,IAAA,EAGjB;AACF,wBAAA,KAAK,EAAE;AACV,qBAAA,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACP,wBAAA,+BAA+B,EAAE;AACjC,wBAAA;AACI,4BAAA,OAAO,EAAE,cAAc;AACvB,4BAAA,WAAW,EAAA;AACd,yBAAA;AACD,wBAAA;AACI,4BAAA,OAAO,EAAE,UAAU;AACnB,4BAAA,WAAW,EAAA;AACd;qBACJ,EAAA,OAAA,EACQ;wBACL,uBAAuB;wBACvB,wBAAwB;wBACxB,gBAAgB;wBAChB,2BAA2B;wBAC3B,gBAAgB;wBAChB,oCAAoC;wBACpC,gBAAgB;wBAChB,kBAAkB;wBAClB,yBAAyB;wBACzB,iBAAiB;wBACjB,gBAAgB;wBAChB,iBAAiB;wBACjB,mBAAmB;wBACnB,eAAe;wBACf,uBAAuB;wBACvB,qBAAqB;wBACrB,uBAAuB;wBACvB,sBAAsB;wBACtB,oBAAoB;wBACpB,aAAa;wBACb,iBAAiB;wBACjB,wBAAwB;wBACxB,kBAAkB;wBAClB,aAAa;wBACb,kBAAkB;wBAClB;AACH,qBAAA,EAAA,QAAA,EAAA,48LAAA,EAAA,MAAA,EAAA,CAAA,6snBAAA,CAAA,EAAA;;sBAMA;;sBAOA;;sBAIA;;sBAKA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA;;sBAIA,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,CAAC,MAAM,iBAAiB,CAAC;;sBAInD,YAAY;uBAAC,gBAAgB;;sBAI7B,YAAY;uBAAC,gBAAgB;;sBAI7B,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;sBAItD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;;sBAIjD,SAAS;uBAAC,kBAAkB;;sBAI5B,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;;sBAIzC,SAAS;uBAAC,uBAAuB;;sBAIjC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;;;MEtL3C,eAAe,CAAA;;AA2CxB,IAAA,WAAA,CAA4B,UAAsB,EAAA;QAAtB,IAAA,CAAA,UAAU,GAAV,UAAU;;QA7BtC,IAAA,CAAA,IAAI,GAAa,GAAG;;QAWD,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAG3E,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE;;AAG1B,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;QAGhC,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAGpD,QAAA,IAAA,CAAA,uBAAuB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAOrE,QAAA,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE;;QAGxC,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE;AACvB,YAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC7B,gBAAA,IAAI,CAAC,sBAAsB,CAAC,yBAAyB,CAAC,GAAG,CAAC;YAC9D;AACJ,QAAA,CAAC,CAAC;IACN;AAEA;;;;AAIG;IAEH,sBAAsB,GAAA;AAClB,QAAA,OAAO,CAAC,CAAA,OAAA,CAAS,EAAE,IAAI,CAAC,IAAI,GAAG,WAAW,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,CAAA,SAAA,EAAY,IAAI,CAAC,IAAI,CAAA,CAAE,EAAE,IAAI,CAAC,KAAK,CAAC;IACrG;;AAIU,IAAA,aAAa,CAAC,KAAoB,EAAA;AACxC,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,EAAE;AACrD,YAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,KAAK,CAAC;QAChD;IACJ;;IAGA,kBAAkB,GAAA;QACd,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,oBAAoB,EAAE;QAC3B,IAAI,CAAC,+BAA+B,EAAE;IAC1C;;IAGA,WAAW,GAAA;QACP,IAAI,CAAC,sBAAsB,EAAE;IACjC;;IAGA,QAAQ,GAAA;QACJ,IAAI,CAAC,sBAAsB,EAAE;IACjC;;IAGA,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;AACjC,QAAA,IAAI,CAAC,sBAAsB,EAAE,OAAO,EAAE;IAC1C;;AAGA,IAAA,IAAI,QAAQ,GAAA;QACR,IAAI,QAAQ,GAAuB,EAAE;AACrC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC9D;AACA,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzG;AACA,QAAA,OAAO,QAAQ;IACnB;AAEA;;;AAGG;AACH,IAAA,SAAS,CAAC,QAAgB,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;IAC5D;AAEA;;;;AAIG;IACK,+BAA+B,GAAA;AACnC,QAAA,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;AACvC,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;aACzC,SAAS,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;IACrD;;IAGQ,oBAAoB,GAAA;AACxB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;AACjC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,YAAY,EAAE;QACxC,IAAI,CAAC,qBAAqB,EAAE;AAE5B,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACzE,IAAI,CAAC,qBAAqB,EAAE;AAChC,QAAA,CAAC,CAAC;IACN;;IAGQ,qBAAqB,GAAA;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AAClC,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACnB,YAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CACnB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;AACxB,gBAAA,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC;YACvF,CAAC,CAAC,CACL;AACL,QAAA,CAAC,CAAC;IACN;;IAGQ,gBAAgB,GAAA;AACpB,QAAA,IAAI,CAAC,sBAAsB,EAAE,OAAO,EAAE;QACtC,IAAI,CAAC,sBAAsB,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACnH;8GA1JS,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,SAAA,EALb,CAAC,+BAA+B,EAAE,CAAC,gDAsB7B,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAIhB,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA3BvB,CAAA,0BAAA,CAA4B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,k2lBAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;AAmEtC,UAAA,CAAA;IADC,aAAa;;;;AAGb,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,IAAA,CAAA;2FA/DQ,eAAe,EAAA,UAAA,EAAA,CAAA;kBAT3B,SAAS;AAEI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,QAAA,EACd,CAAA,0BAAA,CAA4B,EAAA,SAAA,EAC3B,CAAC,+BAA+B,EAAE,CAAC,EAAA,aAAA,EAE/B,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,k2lBAAA,CAAA,EAAA;;sBAI9C;;sBAOA;;sBAIA;;sBAIA,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;sBAIvD,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;;sBA6CvD,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;AClFrC,MAAM,UAAU,GAAG;IACf,gBAAgB;IAChB,iBAAiB;IACjB,iBAAiB;IACjB,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,iBAAiB;IACjB,iBAAiB;IACjB,mBAAmB;IACnB,kBAAkB;IAClB,yBAAyB;IACzB,uBAAuB;IACvB;CACH;AAED;;;AAGG;MAKU,UAAU,CAAA;8GAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAV,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,UAAU,YAzBnB,gBAAgB;YAChB,iBAAiB;YACjB,iBAAiB;YACjB,eAAe;YACf,gBAAgB;YAChB,gBAAgB;YAChB,eAAe;YACf,gBAAgB;YAChB,iBAAiB;YACjB,iBAAiB;YACjB,mBAAmB;YACnB,kBAAkB;YAClB,yBAAyB;YACzB,uBAAuB;AACvB,YAAA,qBAAqB,aAdrB,gBAAgB;YAChB,iBAAiB;YACjB,iBAAiB;YACjB,eAAe;YACf,gBAAgB;YAChB,gBAAgB;YAChB,eAAe;YACf,gBAAgB;YAChB,iBAAiB;YACjB,iBAAiB;YACjB,mBAAmB;YACnB,kBAAkB;YAClB,yBAAyB;YACzB,uBAAuB;YACvB,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAWZ,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,UAAU,YAzBnB,gBAAgB;YAOhB,gBAAgB,CAAA,EAAA,CAAA,CAAA;;2FAkBP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC;AACxB,oBAAA,OAAO,EAAE,CAAC,GAAG,UAAU;AAC1B,iBAAA;;;AC9CD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-tabs.mjs","sources":["../../../../libs/core/tabs/tab-utils/tab-directives.ts","../../../../libs/core/tabs/tab-item-expand/tab-item-expand.component.ts","../../../../libs/core/tabs/tab-item-expand/tab-item-expand.component.html","../../../../libs/core/tabs/tab-link/tab-link.directive.ts","../../../../libs/core/tabs/tab-item/tab-item.directive.ts","../../../../libs/core/tabs/tab-list.token.ts","../../../../libs/core/tabs/tab-panel/tab-panel.component.ts","../../../../libs/core/tabs/tab-panel/tab-panel.component.html","../../../../libs/core/tabs/tab-utils/tab-info.class.ts","../../../../libs/core/tabs/tab-list.component.ts","../../../../libs/core/tabs/tab-list.component.html","../../../../libs/core/tabs/tab-nav/tab-nav.component.ts","../../../../libs/core/tabs/tabs.module.ts","../../../../libs/core/tabs/fundamental-ngx-core-tabs.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n HostBinding,\n Input,\n OnChanges,\n ViewEncapsulation\n} from '@angular/core';\nimport { CssClassBuilder, applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent, IconFont } from '@fundamental-ngx/core/icon';\n\n/**\n * Directive used to identify the template which will populate the tab header.\n * Used to achieve complex headers that require more than a string.\n *\n * ```html\n * <fd-tab>\n * <ng-template fd-tab-title>\n * <fd-icon [glyph]=\"'delete'\"></fd-icon>\n * <span>Tab Label</span>\n * </ng-template>\n * </fd-tab>\n * ```\n */\n@Directive({\n selector: '[fdTabTitleTemplate], [fd-tab-title-template]',\n standalone: true\n})\nexport class TabTitleDirective {}\n\n/**\n * Directive for counter element, available in most of the modes on `tab` component\n */\n@Directive({\n selector: '[fdTabCount], [fd-tab-count]',\n standalone: true\n})\nexport class TabCountDirective {\n /** @hidden */\n @HostBinding('class.fd-tabs__count')\n fdTabsCountClass = true;\n}\n\n/**\n * Directive for icon element, available in most of the modes on `tab` component\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-tab-icon]',\n template: `\n @if (icon) {\n <fd-icon role=\"presentation\" [glyph]=\"icon\" [font]=\"iconFont\"></fd-icon>\n }\n <ng-content></ng-content>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [IconComponent]\n})\nexport class TabIconComponent implements CssClassBuilder, OnChanges {\n /** Apply user custom styles */\n @Input()\n class: string;\n\n /**\n * The icon to include inside the element\n * See the icon page for the list of icons.\n */\n @Input()\n icon: string;\n\n /** Icon font family */\n @Input()\n iconFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n /** @hidden */\n constructor(public readonly elementRef: ElementRef) {}\n\n /** @hidden 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-tabs__icon', this.class];\n }\n\n /** @hidden\n * Function runs when component is initialized\n * function should build component css class\n * function should build css style\n */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n}\n\n@Directive({\n selector: '[fdTabTag], [fd-tab-tag]',\n host: {\n class: 'fd-tabs__tag'\n },\n standalone: true\n})\nexport class TabTagDirective {}\n\n@Directive({\n selector: '[fdTabLabel], [fd-tab-label]',\n host: {\n class: 'fd-tabs__label'\n },\n standalone: true\n})\nexport class TabLabelDirective {}\n\n@Directive({\n selector: '[fdTabProcess], [fd-tab-process]',\n host: {\n class: 'fd-tabs__process'\n },\n standalone: true\n})\nexport class TabProcessDirective {}\n\n@Directive({\n selector: '[fdTabHeader], [fd-tab-header]',\n host: {\n class: 'fd-tabs__header'\n },\n standalone: true\n})\nexport class TabHeaderDirective {}\n\n@Directive({\n selector: '[fdTabCounterHeader], [fd-tab-counter-header]',\n host: {\n class: 'fd-tabs__counter-header'\n },\n standalone: true\n})\nexport class TabCounterHeaderDirective {}\n\n@Directive({\n selector: '[fdTabProcessIcon], [fd-tab-process-icon]',\n host: {\n class: 'fd-tabs__process-icon'\n },\n standalone: true\n})\nexport class TabProcessIconDirective {}\n\n@Directive({\n selector: '[fdTabSeparator], [fd-tab-separator]',\n host: {\n class: 'fd-tabs__separator'\n },\n standalone: true\n})\nexport class TabSeparatorDirective {}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { TabTagDirective } from '../tab-utils/tab-directives';\n\n/**\n * Represents a list of tab-panels.\n */\n@Component({\n selector: 'fd-item-expand',\n templateUrl: './tab-item-expand.component.html',\n styleUrl: './tab-item-expand.component.scss',\n host: {\n role: 'tab',\n class: 'fd-tabs__item fd-tabs__item--overflow'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TabTagDirective, IconComponent, FdTranslatePipe]\n})\nexport class TabItemExpandComponent {}\n","<a class=\"fd-tabs__link\" role=\"tab\" [attr.tabindex]=\"0\">\n <span fd-tab-tag>{{ 'coreTabs.tabListExpandButtonText' | fdTranslate }}</span>\n <fd-icon glyph=\"slim-arrow-down\" aria-label=\"See More\"></fd-icon>\n</a>\n","import { FocusableOption } from '@angular/cdk/a11y';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\nimport { AbstractFdNgxClass, KeyUtil } from '@fundamental-ngx/cdk/utils';\n\n/**\n * Tab link for nav mode\n *\n * ```html\n * <a fd-tab-link>\n * link\n * </a>\n * ```\n */\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-tab-link]',\n host: {\n role: 'tab',\n tabindex: '-1'\n },\n standalone: true\n})\nexport class TabLinkDirective extends AbstractFdNgxClass implements FocusableOption {\n /** Whether the link is active */\n @Input()\n @HostBinding('attr.aria-selected')\n active: boolean;\n\n /**\n * Only visual / accessibility thing on tab-nav mode\n * RouterLink does not respect preventDefault/stopPropagation\n */\n @Input()\n @HostBinding('attr.aria-disabled')\n @HostBinding('class.is-disabled')\n disabled: boolean;\n\n /** Event Emitted always when, any keyboard event is dispatched on this element */\n @Output()\n readonly keyDown: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\n\n /** Event Emitted when item has been focused. */\n @Output()\n readonly focused = new EventEmitter<void>();\n\n /** @hidden */\n @HostListener('focus')\n protected _onFocus(): void {\n this.focused.emit();\n }\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n protected _onKeyUp(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n this.focused.emit();\n }\n }\n\n /** @hidden */\n _setProperties(): void {\n this._addClassToElement('fd-tabs__link');\n if (this.active) {\n this._addClassToElement('is-selected');\n }\n }\n\n /** @hidden */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n}\n","import { ContentChild, Directive, ElementRef, HostBinding, Input, OnChanges, OnInit } from '@angular/core';\nimport { CssClassBuilder, Nullable, applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { TabLinkDirective } from '../tab-link/tab-link.directive';\n\nexport type TabItemState = 'success' | 'error' | 'warning' | 'information' | 'neutral';\n\n/**\n * Tab Item is optional wrapper for Tab link\n *\n * ```html\n * <div fd-tab-item>\n * <a fd-tab-link>\n * link\n * </a>\n * </div>\n * ```\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-tab-item]',\n standalone: true\n})\nexport class TabItemDirective implements CssClassBuilder, OnChanges, OnInit {\n /** Apply user custom styles */\n @Input()\n class = '';\n\n /** Semantic type of the tab item */\n @Input()\n tabItemState: Nullable<TabItemState>;\n\n /** This should be used only on `filterMode`. Flag should be enable for first item */\n @Input()\n header: boolean;\n\n /** Disabled state for tab item */\n @Input()\n @HostBinding('attr.aria-disabled')\n @HostBinding('class.is-disabled')\n disabled = false;\n\n /** Defines if there will be added fd-tabs__item class. Enabled by default. */\n @Input()\n fdTabItemClass = true;\n\n /** @hidden */\n @ContentChild(TabLinkDirective)\n linkItem: TabLinkDirective;\n\n /** @hidden */\n constructor(public readonly elementRef: ElementRef) {}\n\n /** @hidden */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return [\n this.fdTabItemClass ? 'fd-tabs__item' : '',\n this.header ? 'fd-tabs__item--header' : '',\n this.tabItemState ? `fd-tabs__item--${this.tabItemState}` : '',\n this.class\n ];\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { TabListComponentInterface } from './tab-list-component.interface';\n\nexport const LIST_COMPONENT = new InjectionToken<TabListComponentInterface>('ListComponent');\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnChanges,\n Optional,\n Output,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Subject, first } from 'rxjs';\nimport { TabItemState } from '../tab-item/tab-item.directive';\nimport { TabListComponentInterface } from '../tab-list-component.interface';\nimport { LIST_COMPONENT } from '../tab-list.token';\nimport { TabTitleDirective } from '../tab-utils/tab-directives';\n\nlet tabPanelUniqueId = 0;\n\nexport class TabPanelStateChange {\n /**\n * Tab panel state change event\n * @param target Tab panel that is being changed\n * @param state New state of the tab panel\n */\n constructor(\n public target: TabPanelComponent,\n public state: boolean\n ) {}\n}\n\n/**\n * Represents the body of a tab element. It also contains elements pertaining to the associated tab header.\n */\n@Component({\n selector: 'fd-tab',\n templateUrl: './tab-panel.component.html',\n host: {\n role: 'tabpanel',\n class: 'fd-tabs__panel',\n '[id]': '_panelId',\n '[attr.aria-labelledby]': 'id'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: []\n})\nexport class TabPanelComponent implements OnChanges {\n /** Id of the tab. If none is provided, one will be generated. */\n @Input()\n id: string = 'fd-tab-panel' + tabPanelUniqueId++;\n\n /** Aria-label of the tab. */\n @Input()\n ariaLabel: Nullable<string>;\n\n /** Id of the element that labels the tab. */\n @Input()\n ariaLabelledBy: Nullable<string>;\n\n /** The title of tab, depending on mode used, it will be placed in different position */\n @Input()\n title: Nullable<string>;\n\n /** The count of tab, depending on mode used, it will be placed in different position */\n @Input()\n count: Nullable<string>;\n\n /** Glyph icon, it can be used only on */\n @Input()\n glyph: string;\n\n /** Glyph icon, it can be used only on */\n @Input()\n header = false;\n\n /** Disabled state for tab item */\n @Input()\n disabled = false;\n\n /** Semantic type of the tab item */\n @Input()\n tabState: Nullable<TabItemState>;\n\n /** Event that is emitted when the tab panel has been opened. */\n @Output()\n opened = new EventEmitter<void>();\n\n /** Event that is emitted when the tab panel has been closed. */\n @Output()\n closed = new EventEmitter<void>();\n\n /** @hidden */\n @ContentChild(TabTitleDirective, { read: TemplateRef })\n titleTemplate: TemplateRef<any>;\n\n /** @hidden */\n @HostBinding('class.is-expanded')\n _expandedClass = false;\n\n /** @hidden Event that is emitted when the tab panel . */\n _expandedStateChange = new Subject<TabPanelStateChange>();\n\n /** @hidden */\n _forcedVisibility = false;\n\n /** @hidden Whether to display tab panel content */\n private _expanded = false;\n\n /** @hidden */\n get _panelId(): string {\n return this.id + '-panel';\n }\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n private _changeDetRef: ChangeDetectorRef,\n private _ngZone: NgZone,\n @Optional() @Inject(LIST_COMPONENT) private readonly _tabsComponent: TabListComponentInterface | null\n ) {}\n\n /** @hidden\n * Thanks to OnPush change strategy detection on tab-list parent component,\n * every change of any property should be reported. */\n ngOnChanges(): void {\n this._tabsComponent?.tabPanelPropertyChanged.next();\n }\n\n /** Whether tab panel content is expanded */\n get expanded(): boolean {\n return this._expanded;\n }\n\n /** Whether to expand tab panel content */\n open(open: boolean): void {\n this._expandedStateChange.next(new TabPanelStateChange(this, open));\n }\n\n /** @hidden Set new expand state */\n _expand(expanded: boolean): void {\n if (this._expanded !== expanded) {\n this._expanded = expanded;\n\n if (expanded) {\n this.opened.emit();\n } else {\n this.closed.emit();\n }\n\n this._changeDetRef.detectChanges();\n\n this._ngZone.onStable.pipe(first()).subscribe(() => this._updateHost());\n }\n }\n\n /** @hidden */\n _focusFirstFocusableElement(): void {\n this.elementRef.nativeElement\n .querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n ?.focus({ preventScroll: true });\n }\n\n /** @hidden */\n private _updateHost(): void {\n this._expandedClass = this.expanded;\n }\n}\n","@if (expanded) {\n <ng-content></ng-content>\n}\n","import { TemplateRef } from '@angular/core';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { TabItemState } from '../tab-item/tab-item.directive';\nimport { TabPanelComponent } from '../tab-panel/tab-panel.component';\n\n/** @hidden */\nexport class TabInfo {\n /** Whether the tab is active */\n active: boolean;\n\n /** @hidden Width of the tab header */\n headerWidth: number;\n\n /** Corresponding tab panel */\n panel: TabPanelComponent;\n\n /** @hidden */\n constructor(tabPanel: TabPanelComponent) {\n this.panel = tabPanel;\n this.active = tabPanel.expanded;\n }\n\n /** Tab header title */\n get title(): Nullable<string> {\n return this.panel.title;\n }\n\n /** Whether the tab is disabled */\n get disabled(): boolean {\n return this.panel.disabled;\n }\n\n /** Whether the tab is tab header */\n get isHeader(): boolean {\n return this.panel.header;\n }\n\n /** @hidden */\n get id(): Nullable<string> {\n return this.panel.id;\n }\n\n /** @hidden */\n get ariaLabel(): Nullable<string> {\n return this.panel.ariaLabel;\n }\n\n /** @hidden */\n get ariaLabelledBy(): Nullable<string> {\n return this.panel.ariaLabelledBy;\n }\n\n /** @hidden */\n get tabState(): Nullable<TabItemState> {\n return this.panel.tabState;\n }\n\n /** @hidden */\n get titleTemplate(): TemplateRef<any> {\n return this.panel.titleTemplate;\n }\n\n /** @hidden */\n get count(): Nullable<string> {\n return this.panel.count;\n }\n\n /** @hidden */\n get glyph(): string {\n return this.panel.glyph;\n }\n\n /** @hidden */\n get forcedVisibility(): boolean {\n return this.panel._forcedVisibility;\n }\n\n /** @hidden */\n get panelId(): string {\n return this.panel._panelId;\n }\n}\n","import { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n forwardRef,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyUtil, Nullable, scrollTop, warnOnce } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport {\n MenuComponent,\n MenuInteractiveComponent,\n MenuItemComponent,\n MenuTitleDirective,\n MenuTriggerDirective\n} from '@fundamental-ngx/core/menu';\nimport {\n OverflowExpandDirective,\n OverflowItemRefDirective,\n OverflowLayoutComponent,\n OverflowLayoutFocusableItemDirective,\n OverflowLayoutItemDirective\n} from '@fundamental-ngx/core/overflow-layout';\nimport { ScrollSpyDirective } from '@fundamental-ngx/core/scroll-spy';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { FD_TABLIST, TabList } from '@fundamental-ngx/core/shared';\nimport { Observable, Subject, Subscription, fromEvent, merge } from 'rxjs';\nimport { debounceTime, delay, filter, first, map, startWith, switchMap, take, tap } from 'rxjs/operators';\nimport { TabItemExpandComponent } from './tab-item-expand/tab-item-expand.component';\nimport { TabItemDirective } from './tab-item/tab-item.directive';\nimport { TabLinkDirective } from './tab-link/tab-link.directive';\nimport { TabListComponentInterface } from './tab-list-component.interface';\nimport { LIST_COMPONENT } from './tab-list.token';\nimport { TabPanelComponent } from './tab-panel/tab-panel.component';\nimport {\n TabCountDirective,\n TabCounterHeaderDirective,\n TabHeaderDirective,\n TabIconComponent,\n TabLabelDirective,\n TabProcessDirective,\n TabProcessIconDirective,\n TabSeparatorDirective,\n TabTagDirective\n} from './tab-utils/tab-directives';\nimport { TabInfo } from './tab-utils/tab-info.class';\n\nexport type TabModes = 'icon-only' | 'process' | 'filter';\n\nexport type TabSizes = 's' | 'm' | 'l' | 'xl' | 'xxl';\n\n/**\n * Represents a list of tab-panels.\n * @deprecated\n * Use `@fundamental-ngx/platform/icon-tab-bar` instead\n */\n@Component({\n selector: 'fd-tab-list',\n templateUrl: './tab-list.component.html',\n styleUrl: './tab-list.component.scss',\n host: {\n class: 'fd-tabs-custom'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n contentDensityObserverProviders(),\n {\n provide: LIST_COMPONENT,\n useExisting: TabListComponent\n },\n {\n provide: FD_TABLIST,\n useExisting: TabListComponent\n }\n ],\n imports: [\n OverflowLayoutComponent,\n OverflowItemRefDirective,\n TabItemDirective,\n OverflowLayoutItemDirective,\n TabLinkDirective,\n OverflowLayoutFocusableItemDirective,\n NgTemplateOutlet,\n TabHeaderDirective,\n TabCounterHeaderDirective,\n TabLabelDirective,\n TabIconComponent,\n TabCountDirective,\n TabProcessDirective,\n TabTagDirective,\n TabProcessIconDirective,\n TabSeparatorDirective,\n OverflowExpandDirective,\n TabItemExpandComponent,\n MenuTriggerDirective,\n MenuComponent,\n MenuItemComponent,\n MenuInteractiveComponent,\n ScrollSpyDirective,\n CdkScrollable,\n ScrollbarDirective,\n MenuTitleDirective\n ]\n})\nexport class TabListComponent\n implements TabListComponentInterface, AfterContentInit, AfterViewInit, OnDestroy, TabList\n{\n /** Size of tab, it's mostly about adding spacing on tab container, available sizes 's' | 'm' | 'l' | 'xl' | 'xxl' */\n @Input()\n size: TabSizes = 'm';\n\n /**\n * Whether user wants to use tab component in certain mode. Modes available:\n * 'icon-only' | 'process' | 'filter'\n */\n @Input()\n mode: TabModes;\n\n /** Whether to move tabs overflowing in the tab bar to the dropdown */\n @Input()\n collapseOverflow = true;\n\n /** Limits the maximum number of tabs visible in the tab bar in collapseOverflow mode.\n * Other tabs will be moved to the collapsed tabs dropdown */\n @Input()\n maxVisibleTabs = Infinity;\n\n /** Whether to open tab content one under another without collapsing */\n @Input()\n stackContent = false;\n\n /** Maximum height of the content */\n @Input()\n maxContentHeight = '100%';\n\n /** Whether to enable collapsing expanded tab on expanded tab click */\n @Input()\n collapsibleTabs = false;\n\n /** Initially selected tab (by id). First not disabled one if not specified. */\n @Input()\n defaultTab: Nullable<string>;\n\n /** Whether to try to keep selected tab (default value) on tabs change or to select default one (first if not specified). */\n @Input()\n selectDefaultOnTabsChange = false;\n\n /** Whether to focus the first focusable element in a tab panel when using stacked tabs. */\n @Input()\n focusFirstFocusableElement = true;\n\n /** Event emitted when the selected panel changes. */\n @Output()\n selectedTabChange = new EventEmitter<TabPanelComponent>();\n\n /** Event emitted when the selected panel index changes. */\n @Output()\n selectedTabIndexChange = new EventEmitter<number>();\n\n /** Event emitted when visible items count has been changed. */\n @Output()\n visibleItemsCount = new EventEmitter<number>();\n\n /** Event emitted when hidden items count has been changed. */\n @Output()\n hiddenItemsCount = new EventEmitter<number>();\n\n /** @hidden */\n @ContentChildren(forwardRef(() => TabPanelComponent))\n tabPanels: QueryList<TabPanelComponent>;\n\n /** @hidden */\n @ViewChildren(TabLinkDirective)\n tabHeaderLinks: QueryList<TabLinkDirective>;\n\n /** @hidden */\n @ViewChildren(TabItemDirective)\n tabHeaders: QueryList<TabItemDirective>;\n\n /** @hidden */\n @ViewChild(TabItemExpandComponent, { read: ElementRef })\n overflowTrigger: ElementRef;\n\n /** @hidden */\n @ViewChild('headerContainer', { read: ElementRef })\n headerContainer: ElementRef;\n\n /** @hidden */\n @ViewChild(ScrollbarDirective)\n _scrollbar: ScrollbarDirective;\n\n /** @hidden */\n @ViewChild('menu', { read: MenuComponent })\n menu: MenuComponent;\n\n /** @hidden */\n @ViewChild(OverflowLayoutComponent)\n private _overflowLayout: OverflowLayoutComponent;\n\n /** @hidden */\n @ViewChild('scrollSpy', { read: ScrollSpyDirective })\n private readonly _scrollSpy: Nullable<ScrollSpyDirective>;\n\n /** @hidden */\n get contentContainer(): ElementRef<HTMLElement> {\n return this._scrollbar?.elementRef;\n }\n\n /** @hidden Collection of tabs in original order */\n _tabArray: TabInfo[] = [];\n\n /** @hidden Whether to disable scroll spy */\n _disableScrollSpy = false;\n\n /** @hidden */\n _init = true;\n\n /** @hidden */\n _currentNumberOfTabs = 0;\n\n /** Scrollable element reference. */\n get scrollableElement(): Nullable<ElementRef> {\n return this._scrollbar?.elementRef;\n }\n\n /** Event is thrown always when tab is selected by keyboard actions */\n readonly tabSelected: Subject<number> = new Subject<number>();\n\n /** Event is thrown always, when some property is changed */\n readonly tabPanelPropertyChanged: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private readonly _zone = inject(NgZone);\n\n /** @hidden */\n constructor(\n private readonly _changeDetectorRef: ChangeDetectorRef,\n readonly _contentDensityObserver: ContentDensityObserver,\n private readonly _destroyRef: DestroyRef\n ) {\n warnOnce('TabListComponent is deprecated, use `@fundamental-ngx/platform/icon-tab-bar` instead');\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setupTabPanelsChangeListeners();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._initStackContentSubscription();\n this._listenOnTabPanelsExpandedChange();\n this._listenOnTabPanelsAndInitiallyExpandTabPanel();\n this._listenOnPropertiesChange();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n _tabHeaderClickHandler(tabPanel: TabPanelComponent): void {\n this._expandTab(tabPanel, !tabPanel.expanded);\n }\n\n /** @hidden */\n _tabHeaderKeydownHandler(event: KeyboardEvent, tabPanel: TabPanelComponent): void {\n if (!KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n return;\n }\n\n event.preventDefault();\n this._tabHeaderClickHandler(tabPanel);\n }\n\n /** @hidden */\n _overflowingTabHeaderClickHandler(tabPanel: TabPanelComponent): void {\n this._tabArray.forEach((tab) => {\n tab.panel._forcedVisibility = tab.panel === tabPanel;\n });\n\n this._expandTab(tabPanel, true, false);\n\n this._overflowLayout.triggerRecalculation();\n\n this._detectChanges();\n }\n\n /** @hidden */\n selectTab(id: Nullable<string>): void {\n this.highlightActiveTab(id);\n }\n\n /** @hidden */\n highlightActiveTab(id: Nullable<string>): void {\n const tab = this._tabArray.find((_tab) => _tab.panel._panelId === id);\n if (tab) {\n const _tabWasActive = tab.active;\n this._activateStackedTab(tab.panel, false);\n if (!_tabWasActive) {\n this._selectedTabChange(tab.panel);\n }\n }\n }\n\n /** @hidden */\n _onTriggerKeydown(event: KeyboardEvent, menuRef: MenuComponent): void {\n if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n event.preventDefault();\n menuRef.toggle();\n }\n }\n\n /** @hidden */\n private get _tabPanelsChange$(): Observable<TabPanelComponent[]> {\n return this.tabPanels.changes.pipe(\n startWith(this.tabPanels),\n map((tabPanels) => tabPanels.toArray()),\n takeUntilDestroyed(this._destroyRef)\n );\n }\n\n /** @hidden */\n private _detectChanges(): void {\n if (this._changeDetectorRef && !this._changeDetectorRef['destroyed']) {\n this._changeDetectorRef.detectChanges();\n }\n }\n\n /** @hidden */\n private _setupTabPanelsChangeListeners(): void {\n this._listenOnTabPanelsAndUpdateStorageStructures();\n }\n\n /** @hidden Setup mechanisms required for handling the stacked content behavior */\n private _initStackContentSubscription(): void {\n this._tabPanelsChange$\n .pipe(\n filter(() => this.stackContent),\n delay(0),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(() =>\n this._tabArray.filter((tab) => !tab.panel.disabled).forEach((tab) => tab.panel._expand(true))\n );\n }\n\n /** @hidden */\n private _listenOnTabPanelsAndUpdateStorageStructures(): void {\n this._tabPanelsChange$\n .pipe(\n map((tabPanels) =>\n tabPanels.map((el) => this._tabArray?.find((tabInfo) => tabInfo.panel === el) || new TabInfo(el))\n ),\n tap((tabs) => (this._tabArray = tabs)),\n switchMap(() => this._zone.onStable.pipe(startWith(this._zone.isStable))),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(() => {\n if (this.stackContent && this._currentNumberOfTabs !== this._tabArray.length) {\n this._zone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n this._scrollSpy?.onScroll(undefined, true);\n this._currentNumberOfTabs = this._tabArray.length;\n });\n }\n });\n }\n\n /** @hidden */\n private _listenOnTabPanelsExpandedChange(): void {\n this._tabPanelsChange$\n .pipe(\n map((tabPanels) => tabPanels.map((tab) => tab._expandedStateChange.asObservable())),\n switchMap((tabPanels) => merge(...tabPanels)),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event) => {\n this._tabArray.forEach((tab) => {\n tab.panel._forcedVisibility = tab.panel === event.target;\n });\n this._expandTab(event.target, event.state);\n this._overflowLayout.triggerRecalculation();\n });\n }\n\n /** @hidden */\n private _listenOnTabPanelsAndInitiallyExpandTabPanel(): void {\n this._tabPanelsChange$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n const activeTab = this._tabArray.find((_tab) => _tab.active);\n let tab: Nullable<TabInfo>;\n\n if (!activeTab || this.selectDefaultOnTabsChange) {\n if (this.defaultTab) {\n tab = this._tabArray.find((_tab) => !_tab.disabled && _tab.id === this.defaultTab);\n }\n\n if (!tab) {\n tab = this._tabArray.find((_tab) => !_tab.disabled);\n }\n }\n\n if (tab && activeTab !== tab) {\n this._expandTab(tab.panel, true);\n }\n });\n }\n\n /** @hidden */\n private _listenOnPropertiesChange(): void {\n merge(this.tabPanelPropertyChanged, this.tabPanels.changes)\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._detectChanges());\n }\n\n /** @hidden */\n private _activateStackedTab(tabPanel: TabPanelComponent, scroll = true): void {\n if (scroll) {\n this._scrollToPanel(tabPanel);\n }\n this._tabArray.forEach((tab) => {\n tab.active = tab.panel === tabPanel;\n });\n }\n\n /** @hidden */\n private _activateExpandableTab(tabPanel: TabPanelComponent, expand: boolean): void {\n const collapse = this.collapsibleTabs && !expand;\n\n this._tabArray.forEach((tab) => {\n const isActive = tab.panel === tabPanel && !collapse;\n\n tab.panel._expand(isActive);\n tab.active = isActive;\n });\n }\n\n /** @hidden */\n private _expandTab(tabPanel: TabPanelComponent, expand: boolean, detectChanges = true): void {\n if (this.stackContent) {\n this._activateStackedTab(tabPanel);\n } else {\n if (!this._canChangeExpandState(tabPanel, expand)) {\n return;\n }\n\n this._activateExpandableTab(tabPanel, expand);\n }\n\n if (detectChanges) {\n this._detectChanges();\n }\n\n this._selectedTabChange(tabPanel);\n }\n\n /** @hidden */\n private _scrollToPanel(tabPanel: TabPanelComponent): void {\n const panelElement = tabPanel.elementRef.nativeElement;\n const containerElement = this.contentContainer.nativeElement;\n const distanceToScroll = panelElement.offsetTop - containerElement.offsetTop;\n const maximumScrollTop = containerElement.scrollHeight - containerElement.clientHeight;\n const currentScrollPosition = Math.ceil(containerElement.scrollTop);\n\n if (!(currentScrollPosition === maximumScrollTop && distanceToScroll > maximumScrollTop)) {\n !this._init ? (this._disableScrollSpy = true) : (this._init = false);\n fromEvent(containerElement, 'scroll')\n .pipe(debounceTime(100), first(), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => (this._disableScrollSpy = false));\n scrollTop(containerElement, distanceToScroll);\n }\n\n if (this.focusFirstFocusableElement) {\n tabPanel._focusFirstFocusableElement();\n }\n }\n\n /** @hidden Whether tab can be expanded/collapsed */\n private _canChangeExpandState(tabPanel: TabPanelComponent, expand: boolean): boolean {\n return !tabPanel.disabled && expand !== tabPanel.expanded && expand === false ? this.collapsibleTabs : true;\n }\n\n /** @hidden */\n private _selectedTabChange(tabPanel: TabPanelComponent): void {\n this.selectedTabChange.emit(tabPanel);\n\n const index = this._tabArray.findIndex((tabInfo) => tabInfo.panel === tabPanel);\n this.selectedTabIndexChange.emit(index);\n }\n}\n","<div #headerContainer role=\"tablist\" class=\"fd-tabs\" [class]=\"(mode ? 'fd-tabs--' + mode : '') + (' fd-tabs--' + size)\">\n <fd-overflow-layout\n [maxVisibleItems]=\"maxVisibleTabs\"\n [enableKeyboardNavigation]=\"true\"\n navigationTrigger=\"keydown\"\n (hiddenItemsCount)=\"hiddenItemsCount.emit($event)\"\n (visibleItemsCount)=\"visibleItemsCount.emit($event)\"\n >\n @for (tab of _tabArray; track tab; let i = $index; let last = $last) {\n <div\n fd-tab-item\n *fdOverflowItemRef=\"tab\"\n fdOverflowLayoutItem\n [forceVisibility]=\"tab.panel._forcedVisibility\"\n [header]=\"tab.isHeader\"\n [tabItemState]=\"tab.tabState\"\n >\n <a\n fd-tab-link\n role=\"tab\"\n [id]=\"tab.id\"\n [attr.aria-controls]=\"tab.panelId\"\n [attr.aria-label]=\"tab.ariaLabel || null\"\n [attr.aria-labelledby]=\"!tab.ariaLabel && tab.ariaLabelledBy ? tab.ariaLabelledBy : null\"\n fdOverflowLayoutFocusableItem\n [focusable]=\"tab.active\"\n [navigable]=\"!tab.disabled\"\n [active]=\"tab.active\"\n [disabled]=\"tab.disabled\"\n (keydown)=\"_tabHeaderKeydownHandler($event, tab.panel)\"\n (click)=\"_tabHeaderClickHandler(tab.panel)\"\n >\n <ng-template [ngTemplateOutlet]=\"tab.titleTemplate || null\"></ng-template>\n @if (!tab.titleTemplate) {\n @switch (mode) {\n @case ('filter') {\n @if (tab.isHeader) {\n <span fd-tab-header>\n @if (tab.count) {\n <span fd-tab-counter-header>{{ tab.count }}</span>\n }\n @if (tab.title) {\n <span fd-tab-label>{{ tab.title }}</span>\n }\n </span>\n }\n @if (!tab.isHeader) {\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n <span fd-tab-label>{{ tab.title }}</span>\n }\n }\n @case ('icon-only') {\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n }\n @case ('process') {\n @if (tab.glyph) {\n <span fd-tab-icon [icon]=\"tab.glyph\"></span>\n }\n <div fd-tab-process>\n @if (tab.count) {\n <span fd-tab-label>{{ tab.count }}</span>\n }\n @if (tab.title) {\n <span fd-tab-label>{{ tab.title }}</span>\n }\n </div>\n }\n @default {\n @if (tab.count) {\n <p fd-tab-count>{{ tab.count }}</p>\n }\n <span fd-tab-tag>{{ tab.title }}</span>\n }\n }\n }\n </a>\n @if (mode === 'process' && !last) {\n <div fd-tab-process-icon></div>\n }\n </div>\n @if (tab.isHeader) {\n <div fd-tab-separator></div>\n }\n }\n <ng-container *fdOverflowExpand=\"let tabs; items: _tabArray\">\n @if (tabs.length > 0) {\n <fd-item-expand [fdMenuTrigger]=\"menu\" (keydown)=\"_onTriggerKeydown($event, menu)\"> </fd-item-expand>\n }\n <fd-menu #menu>\n @for (tab of tabs; track tab) {\n <li fd-menu-item (onSelect)=\"_overflowingTabHeaderClickHandler(tab.item.panel)\">\n <div fd-menu-interactive>\n <ng-template\n [ngTemplateOutlet]=\"\n !tab.item.titleTemplate && mode === 'icon-only'\n ? iconOnlyTemplate\n : tab.item.titleTemplate || textTitle\n \"\n [ngTemplateOutletContext]=\"{ $implicit: tab.item }\"\n ></ng-template>\n </div>\n </li>\n }\n </fd-menu>\n </ng-container>\n </fd-overflow-layout>\n</div>\n<div\n class=\"fd-tabs__content\"\n [style.max-height]=\"maxContentHeight\"\n fdScrollSpy\n #scrollSpy=\"fdScrollSpy\"\n fd-scrollbar\n [trackedTags]=\"['fd-tab']\"\n [scrollSpyDisabled]=\"_disableScrollSpy\"\n (spyChange)=\"highlightActiveTab($event?.id)\"\n>\n <ng-content></ng-content>\n</div>\n<ng-template #textTitle let-tab>\n <span fd-menu-title>{{ tab.title }}</span>\n</ng-template>\n<ng-template #iconOnlyTemplate let-tab>\n <span fd-tab-icon [icon]=\"tab.glyph\">\n <p fd-tab-count>{{ tab.count }}</p>\n </span>\n</ng-template>\n","import { FocusKeyManager } from '@angular/cdk/a11y';\nimport { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n QueryList,\n ViewEncapsulation,\n computed,\n effect,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { CssClassBuilder, KeyUtil, RtlService, applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { Subscription, merge } from 'rxjs';\nimport { TabItemDirective } from '../tab-item/tab-item.directive';\nimport { TabLinkDirective } from '../tab-link/tab-link.directive';\nimport { TabModes, TabSizes } from '../tab-list.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-tab-nav]',\n template: ` <ng-content></ng-content>`,\n providers: [contentDensityObserverProviders()],\n styleUrl: './tab-nav.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TabNavComponent implements AfterContentInit, OnChanges, OnInit, OnDestroy, CssClassBuilder {\n /** Apply user custom styles */\n @Input()\n class: string;\n\n /**\n * Whether user wants to use tab component in certain mode. Modes available:\n * 'icon-only' | 'process' | 'filter'\n */\n @Input()\n mode: TabModes;\n\n /** Size of tab, it's mostly about adding spacing on tab container, available sizes 's' | 'm' | 'l' | 'xl' | 'xxl' */\n @Input()\n size: TabSizes = 'm';\n\n /** @hidden */\n @ContentChildren(TabLinkDirective, { descendants: true })\n links: QueryList<TabLinkDirective>;\n\n /** @hidden */\n @ContentChildren(TabItemDirective, { descendants: true })\n items: QueryList<TabItemDirective>;\n\n /** @hidden */\n protected readonly _dir = computed(() => (this._rtlService?.rtl() ? 'rtl' : 'ltr'));\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** An RxJS Subject that will kill the data stream upon component’s 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 _contentDensityObserver = inject(ContentDensityObserver);\n\n /** @hidden */\n private _keyboardEventsManager: FocusKeyManager<TabLinkDirective>;\n\n /** @hidden */\n constructor(public readonly elementRef: ElementRef) {\n this._contentDensityObserver.subscribe();\n\n // React to RTL changes for keyboard navigation\n effect(() => {\n const dir = this._dir();\n if (this._keyboardEventsManager) {\n this._keyboardEventsManager.withHorizontalOrientation(dir);\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 [`fd-tabs`, this.mode ? 'fd-tabs--' + this.mode : '', `fd-tabs--${this.size}`, this.class];\n }\n\n /** @hidden */\n @HostListener('keyup', ['$event'])\n protected _keyUpHandler(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [LEFT_ARROW, RIGHT_ARROW])) {\n this._keyboardEventsManager.onKeydown(event);\n }\n }\n\n /** @hidden */\n ngAfterContentInit(): void {\n this._setupKeyManager();\n this._refreshSubscription();\n this._listenOnContentQueryListChange();\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._keyboardEventsManager?.destroy();\n }\n\n /** Function that gives possibility to get all the link directives, with and without nav__item wrapper */\n get tabLinks(): TabLinkDirective[] {\n let tabLinks: TabLinkDirective[] = [];\n if (this.links) {\n tabLinks = tabLinks.concat(this.links.map((link) => link));\n }\n if (this.items) {\n tabLinks = tabLinks.concat(this.items.filter((item) => !!item.linkItem).map((item) => item.linkItem));\n }\n return tabLinks;\n }\n\n /**\n * Function to select a new tab from an index.\n * @param tabIndex Index of the tab to select.\n */\n selectTab(tabIndex: number): void {\n this.tabLinks[tabIndex].elementRef.nativeElement.click();\n }\n\n /**\n * @hidden\n * Every time any of query is changed, ex. tab is removed or added\n * reference to keydown subscriptions handler is renewed\n */\n private _listenOnContentQueryListChange(): void {\n merge(this.links.changes, this.items.changes)\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._refreshSubscription());\n }\n\n /** Whether any QueryList detects any changes */\n private _refreshSubscription(): void {\n this._subscriptions.unsubscribe();\n this._subscriptions = new Subscription();\n this._listenToFocusedLinks();\n\n this.links.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._listenToFocusedLinks();\n });\n }\n\n /** @hidden */\n private _listenToFocusedLinks(): void {\n const links = this.links.toArray();\n links.forEach((link) => {\n this._subscriptions.add(\n link.focused.subscribe(() => {\n this._keyboardEventsManager.setActiveItem(links.findIndex((item) => item === link));\n })\n );\n });\n }\n\n /** @hidden */\n private _setupKeyManager(): void {\n this._keyboardEventsManager?.destroy();\n this._keyboardEventsManager = new FocusKeyManager(this.links).withWrap().withHorizontalOrientation(this._dir());\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { TabListComponent } from './tab-list.component';\nimport { TabPanelComponent } from './tab-panel/tab-panel.component';\n\nimport { TabItemDirective } from './tab-item/tab-item.directive';\nimport { TabLinkDirective } from './tab-link/tab-link.directive';\nimport { TabNavComponent } from './tab-nav/tab-nav.component';\nimport {\n TabCountDirective,\n TabCounterHeaderDirective,\n TabHeaderDirective,\n TabIconComponent,\n TabLabelDirective,\n TabProcessDirective,\n TabProcessIconDirective,\n TabSeparatorDirective,\n TabTagDirective,\n TabTitleDirective\n} from './tab-utils/tab-directives';\n\nconst components = [\n TabListComponent,\n TabPanelComponent,\n TabTitleDirective,\n TabNavComponent,\n TabItemDirective,\n TabLinkDirective,\n TabTagDirective,\n TabIconComponent,\n TabCountDirective,\n TabLabelDirective,\n TabProcessDirective,\n TabHeaderDirective,\n TabCounterHeaderDirective,\n TabProcessIconDirective,\n TabSeparatorDirective\n];\n\n/**\n * @deprecated\n * Use `@fundamental-ngx/platform/icon-tab-bar` instead\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class TabsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["first"],"mappings":"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"}
|
|
@@ -77,11 +77,11 @@ class TextComponent {
|
|
|
77
77
|
this._hasMore.set(!!max && count > max);
|
|
78
78
|
}
|
|
79
79
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
80
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: TextComponent, isStandalone: true, selector: "fd-text", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, maxLines: { classPropertyName: "maxLines", publicName: "maxLines", isSignal: true, isRequired: false, transformFunction: null }, whitespaces: { classPropertyName: "whitespaces", publicName: "whitespaces", isSignal: true, isRequired: false, transformFunction: null }, hyphenation: { classPropertyName: "hyphenation", publicName: "hyphenation", isSignal: true, isRequired: false, transformFunction: null }, expandable: { classPropertyName: "expandable", publicName: "expandable", isSignal: true, isRequired: false, transformFunction: null }, isCollapsed: { classPropertyName: "isCollapsed", publicName: "isCollapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isCollapsed: "isCollapsedChange" }, ngImport: i0, template: "<p class=\"fd-text\" [class.fd-text--pre-wrap]=\"whitespaces()\" [style.hyphens]=\"hyphenation()\">\n <span\n fdkLineClamp\n class=\"fd-text__lineclamp\"\n #lineClamp=\"fdLineClamp\"\n [fdLineclampState]=\"_isCollapsed()\"\n [fdLineClampLines]=\"maxLines()\"\n (lineCountUpdate)=\"checkLineCount($event)\"\n >\n <span fdkLineClampTarget [fdLineClampTargetText]=\"text()\" (update)=\"lineClamp.refreshTarget($event)\"></span>\n </span>\n @if (_expandable() && _hasMore()) {\n <a\n fd-link\n tabindex=\"0\"\n class=\"fd-text__link--more\"\n (keydown.enter)=\"toggleTextView()\"\n (click)=\"toggleTextView()\"\n >\n {{
|
|
80
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.0", type: TextComponent, isStandalone: true, selector: "fd-text", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, maxLines: { classPropertyName: "maxLines", publicName: "maxLines", isSignal: true, isRequired: false, transformFunction: null }, whitespaces: { classPropertyName: "whitespaces", publicName: "whitespaces", isSignal: true, isRequired: false, transformFunction: null }, hyphenation: { classPropertyName: "hyphenation", publicName: "hyphenation", isSignal: true, isRequired: false, transformFunction: null }, expandable: { classPropertyName: "expandable", publicName: "expandable", isSignal: true, isRequired: false, transformFunction: null }, isCollapsed: { classPropertyName: "isCollapsed", publicName: "isCollapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isCollapsed: "isCollapsedChange" }, ngImport: i0, template: "<p class=\"fd-text\" [class.fd-text--pre-wrap]=\"whitespaces()\" [style.hyphens]=\"hyphenation()\">\n <span\n fdkLineClamp\n class=\"fd-text__lineclamp\"\n #lineClamp=\"fdLineClamp\"\n [fdLineclampState]=\"_isCollapsed()\"\n [fdLineClampLines]=\"maxLines()\"\n (lineCountUpdate)=\"checkLineCount($event)\"\n >\n <span fdkLineClampTarget [fdLineClampTargetText]=\"text()\" (update)=\"lineClamp.refreshTarget($event)\"></span>\n </span>\n @if (_expandable() && _hasMore()) {\n <a\n fd-link\n tabindex=\"0\"\n class=\"fd-text__link--more\"\n (keydown.enter)=\"toggleTextView()\"\n (click)=\"toggleTextView()\"\n >\n {{ isCollapsed() ? ('coreText.moreLabel' | fdTranslate) : ('coreText.lessLabel' | fdTranslate) }}\n </a>\n }\n</p>\n", styles: [".fd-text{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;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-text:after,.fd-text:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-text::-moz-selection{background-color:var(--fdText_Selected_Background_Color);color:var(--sapContent_ContrastTextColor)}.fd-text::selection{background-color:var(--fdText_Selected_Background_Color);color:var(--sapContent_ContrastTextColor)}.fd-text--max-lines{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.fd-text--pre-wrap{white-space:pre-wrap}.fd-text--hyphenation{-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.fd-text__link--more{cursor:pointer;text-transform:capitalize}.fd-text__ai-highlight{background-color:var(--sapInformationBackground);border-radius:.25rem;color:inherit;padding-inline:.125rem}.fd-text__ai-highlight.is-focus,.fd-text__ai-highlight.is-hover,.fd-text__ai-highlight:focus,.fd-text__ai-highlight:hover{-webkit-box-shadow:0 0 0 .0625rem var(--sapInformationBorderColor);box-shadow:0 0 0 .0625rem var(--sapInformationBorderColor)}.fd-text__ai-highlight.is-focus,.fd-text__ai-highlight:focus{z-index:5}.fd-text__ai-highlight.is-hidden{background-color:transparent}.fd-text__ai-highlight.is-hidden.is-hover,.fd-text__ai-highlight.is-hidden:hover{-webkit-box-shadow:none;box-shadow:none}.fd-text__ai-highlight.is-hidden.is-focus,.fd-text__ai-highlight.is-hidden:focus{-webkit-box-shadow:none;box-shadow:none;z-index:5}.fd-text__lineclamp{display:block}\n/*! Bundled license information:\n\nfundamental-styles/dist/text.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: LineClampDirective, selector: "[fdkLineClamp]", inputs: ["fdLineClampLines", "fdLineclampState"], outputs: ["lineCountUpdate"], exportAs: ["fdLineClamp"] }, { kind: "directive", type: LineClampTargetDirective, selector: "[fdkLineClampTarget], [fdLineClampTarget], [fd-lineclamp-target]", inputs: ["fdLineClampTargetText"], outputs: ["update"], exportAs: ["fdLineClampTarget"] }, { kind: "component", type: LinkComponent, selector: "[fdLink], [fd-link]", inputs: ["emphasized", "disabled", "inverted", "subtle", "undecorated", "touchTarget"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
81
81
|
}
|
|
82
82
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: TextComponent, decorators: [{
|
|
83
83
|
type: Component,
|
|
84
|
-
args: [{ selector: 'fd-text', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [LineClampDirective, LineClampTargetDirective, LinkComponent, FdTranslatePipe], template: "<p class=\"fd-text\" [class.fd-text--pre-wrap]=\"whitespaces()\" [style.hyphens]=\"hyphenation()\">\n <span\n fdkLineClamp\n class=\"fd-text__lineclamp\"\n #lineClamp=\"fdLineClamp\"\n [fdLineclampState]=\"_isCollapsed()\"\n [fdLineClampLines]=\"maxLines()\"\n (lineCountUpdate)=\"checkLineCount($event)\"\n >\n <span fdkLineClampTarget [fdLineClampTargetText]=\"text()\" (update)=\"lineClamp.refreshTarget($event)\"></span>\n </span>\n @if (_expandable() && _hasMore()) {\n <a\n fd-link\n tabindex=\"0\"\n class=\"fd-text__link--more\"\n (keydown.enter)=\"toggleTextView()\"\n (click)=\"toggleTextView()\"\n >\n {{
|
|
84
|
+
args: [{ selector: 'fd-text', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [LineClampDirective, LineClampTargetDirective, LinkComponent, FdTranslatePipe], template: "<p class=\"fd-text\" [class.fd-text--pre-wrap]=\"whitespaces()\" [style.hyphens]=\"hyphenation()\">\n <span\n fdkLineClamp\n class=\"fd-text__lineclamp\"\n #lineClamp=\"fdLineClamp\"\n [fdLineclampState]=\"_isCollapsed()\"\n [fdLineClampLines]=\"maxLines()\"\n (lineCountUpdate)=\"checkLineCount($event)\"\n >\n <span fdkLineClampTarget [fdLineClampTargetText]=\"text()\" (update)=\"lineClamp.refreshTarget($event)\"></span>\n </span>\n @if (_expandable() && _hasMore()) {\n <a\n fd-link\n tabindex=\"0\"\n class=\"fd-text__link--more\"\n (keydown.enter)=\"toggleTextView()\"\n (click)=\"toggleTextView()\"\n >\n {{ isCollapsed() ? ('coreText.moreLabel' | fdTranslate) : ('coreText.lessLabel' | fdTranslate) }}\n </a>\n }\n</p>\n", styles: [".fd-text{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;line-height:normal;margin-block:0;margin-inline:0;padding-block:0;padding-inline:0}.fd-text:after,.fd-text:before{-webkit-box-sizing:inherit;box-sizing:inherit;font-size:inherit}.fd-text::-moz-selection{background-color:var(--fdText_Selected_Background_Color);color:var(--sapContent_ContrastTextColor)}.fd-text::selection{background-color:var(--fdText_Selected_Background_Color);color:var(--sapContent_ContrastTextColor)}.fd-text--max-lines{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.fd-text--pre-wrap{white-space:pre-wrap}.fd-text--hyphenation{-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.fd-text__link--more{cursor:pointer;text-transform:capitalize}.fd-text__ai-highlight{background-color:var(--sapInformationBackground);border-radius:.25rem;color:inherit;padding-inline:.125rem}.fd-text__ai-highlight.is-focus,.fd-text__ai-highlight.is-hover,.fd-text__ai-highlight:focus,.fd-text__ai-highlight:hover{-webkit-box-shadow:0 0 0 .0625rem var(--sapInformationBorderColor);box-shadow:0 0 0 .0625rem var(--sapInformationBorderColor)}.fd-text__ai-highlight.is-focus,.fd-text__ai-highlight:focus{z-index:5}.fd-text__ai-highlight.is-hidden{background-color:transparent}.fd-text__ai-highlight.is-hidden.is-hover,.fd-text__ai-highlight.is-hidden:hover{-webkit-box-shadow:none;box-shadow:none}.fd-text__ai-highlight.is-hidden.is-focus,.fd-text__ai-highlight.is-hidden:focus{-webkit-box-shadow:none;box-shadow:none;z-index:5}.fd-text__lineclamp{display:block}\n/*! Bundled license information:\n\nfundamental-styles/dist/text.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"] }]
|
|
85
85
|
}], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], maxLines: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxLines", required: false }] }], whitespaces: [{ type: i0.Input, args: [{ isSignal: true, alias: "whitespaces", required: false }] }], hyphenation: [{ type: i0.Input, args: [{ isSignal: true, alias: "hyphenation", required: false }] }], expandable: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandable", required: false }] }], isCollapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "isCollapsed", required: false }] }, { type: i0.Output, args: ["isCollapsedChange"] }] } });
|
|
86
86
|
|
|
87
87
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-text.mjs","sources":["../../../../libs/core/text/text.component.ts","../../../../libs/core/text/text.component.html","../../../../libs/core/text/text.module.ts","../../../../libs/core/text/fundamental-ngx-core-text.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input, model, signal } from '@angular/core';\nimport { LineClampDirective, LineClampTargetDirective } from '@fundamental-ngx/cdk/utils';\nimport { LinkComponent } from '@fundamental-ngx/core/link';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\n\n/**\n * Type of hyphenation to apply to text using CSS hyphens property.\n * - `'none'` - Disables hyphenation\n * - `'manual'` - Only breaks at explicit hyphenation points\n * - `'auto'` - Browser automatically hyphenates\n * - `null` - No hyphenation applied\n */\nexport type HyphenationType = 'none' | 'manual' | 'auto' | null;\n\n/**\n * Text component for displaying text content with optional line clamping, hyphenation, and expand/collapse functionality.\n */\n@Component({\n selector: 'fd-text',\n templateUrl: './text.component.html',\n styleUrl: './text.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [LineClampDirective, LineClampTargetDirective, LinkComponent, FdTranslatePipe]\n})\nexport class TextComponent {\n /**\n * The text content to render.\n * @default ''\n */\n readonly text = input<string>('');\n\n /**\n * Maximum number of visible lines before text is clamped. Set to `null` to disable.\n * @default null\n */\n readonly maxLines = input<number | null>(null);\n\n /**\n * Preserves whitespace and line breaks using CSS `white-space: pre-wrap`.\n * @default false\n */\n readonly whitespaces = input(false);\n\n /**\n * Controls hyphenation behavior using CSS `hyphens` property.\n * @default null\n */\n readonly hyphenation = input<HyphenationType>(null);\n\n /**\n * Displays \"more\"/\"less\" links to expand/collapse text. Requires `maxLines` to be set.\n * @default false\n */\n readonly expandable = input(false);\n\n /**\n * Controls collapsed/expanded state. Two-way bindable via `[(isCollapsed)]`.\n * @default true\n */\n readonly isCollapsed = model(true);\n\n /**\n * Computed signal that checks if maxLines is set to a valid positive number.\n * @hidden\n */\n protected readonly _hasValidMaxLines = computed(() => (this.maxLines() ?? 0) > 0);\n\n /**\n * Computed signal determining if text should display in collapsed state.\n * @hidden\n */\n protected readonly _isCollapsed = computed(() => this.isCollapsed() && this._hasValidMaxLines());\n\n /**\n * Computed signal determining if expand/collapse functionality is enabled.\n * @hidden\n */\n protected readonly _expandable = computed(() => this.expandable() && this._hasValidMaxLines());\n\n /**\n * Tracks whether text content exceeds maximum lines.\n * @hidden\n */\n protected readonly _hasMore = signal(false);\n\n /**\n * Toggles collapsed/expanded state and notifies parent components.\n * @hidden\n */\n protected toggleTextView(): void {\n this.isCollapsed.update((collapsed) => !collapsed);\n }\n\n /**\n * Updates `_hasMore` signal based on actual line count from line clamp directive.\n * Signal update automatically triggers change detection.\n * @hidden\n */\n protected checkLineCount(count: number): void {\n const max = this.maxLines();\n this._hasMore.set(!!max && count > max);\n }\n}\n","<p class=\"fd-text\" [class.fd-text--pre-wrap]=\"whitespaces()\" [style.hyphens]=\"hyphenation()\">\n <span\n fdkLineClamp\n class=\"fd-text__lineclamp\"\n #lineClamp=\"fdLineClamp\"\n [fdLineclampState]=\"_isCollapsed()\"\n [fdLineClampLines]=\"maxLines()\"\n (lineCountUpdate)=\"checkLineCount($event)\"\n >\n <span fdkLineClampTarget [fdLineClampTargetText]=\"text()\" (update)=\"lineClamp.refreshTarget($event)\"></span>\n </span>\n @if (_expandable() && _hasMore()) {\n <a\n fd-link\n tabindex=\"0\"\n class=\"fd-text__link--more\"\n (keydown.enter)=\"toggleTextView()\"\n (click)=\"toggleTextView()\"\n >\n {{
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-text.mjs","sources":["../../../../libs/core/text/text.component.ts","../../../../libs/core/text/text.component.html","../../../../libs/core/text/text.module.ts","../../../../libs/core/text/fundamental-ngx-core-text.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation, computed, input, model, signal } from '@angular/core';\nimport { LineClampDirective, LineClampTargetDirective } from '@fundamental-ngx/cdk/utils';\nimport { LinkComponent } from '@fundamental-ngx/core/link';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\n\n/**\n * Type of hyphenation to apply to text using CSS hyphens property.\n * - `'none'` - Disables hyphenation\n * - `'manual'` - Only breaks at explicit hyphenation points\n * - `'auto'` - Browser automatically hyphenates\n * - `null` - No hyphenation applied\n */\nexport type HyphenationType = 'none' | 'manual' | 'auto' | null;\n\n/**\n * Text component for displaying text content with optional line clamping, hyphenation, and expand/collapse functionality.\n */\n@Component({\n selector: 'fd-text',\n templateUrl: './text.component.html',\n styleUrl: './text.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [LineClampDirective, LineClampTargetDirective, LinkComponent, FdTranslatePipe]\n})\nexport class TextComponent {\n /**\n * The text content to render.\n * @default ''\n */\n readonly text = input<string>('');\n\n /**\n * Maximum number of visible lines before text is clamped. Set to `null` to disable.\n * @default null\n */\n readonly maxLines = input<number | null>(null);\n\n /**\n * Preserves whitespace and line breaks using CSS `white-space: pre-wrap`.\n * @default false\n */\n readonly whitespaces = input(false);\n\n /**\n * Controls hyphenation behavior using CSS `hyphens` property.\n * @default null\n */\n readonly hyphenation = input<HyphenationType>(null);\n\n /**\n * Displays \"more\"/\"less\" links to expand/collapse text. Requires `maxLines` to be set.\n * @default false\n */\n readonly expandable = input(false);\n\n /**\n * Controls collapsed/expanded state. Two-way bindable via `[(isCollapsed)]`.\n * @default true\n */\n readonly isCollapsed = model(true);\n\n /**\n * Computed signal that checks if maxLines is set to a valid positive number.\n * @hidden\n */\n protected readonly _hasValidMaxLines = computed(() => (this.maxLines() ?? 0) > 0);\n\n /**\n * Computed signal determining if text should display in collapsed state.\n * @hidden\n */\n protected readonly _isCollapsed = computed(() => this.isCollapsed() && this._hasValidMaxLines());\n\n /**\n * Computed signal determining if expand/collapse functionality is enabled.\n * @hidden\n */\n protected readonly _expandable = computed(() => this.expandable() && this._hasValidMaxLines());\n\n /**\n * Tracks whether text content exceeds maximum lines.\n * @hidden\n */\n protected readonly _hasMore = signal(false);\n\n /**\n * Toggles collapsed/expanded state and notifies parent components.\n * @hidden\n */\n protected toggleTextView(): void {\n this.isCollapsed.update((collapsed) => !collapsed);\n }\n\n /**\n * Updates `_hasMore` signal based on actual line count from line clamp directive.\n * Signal update automatically triggers change detection.\n * @hidden\n */\n protected checkLineCount(count: number): void {\n const max = this.maxLines();\n this._hasMore.set(!!max && count > max);\n }\n}\n","<p class=\"fd-text\" [class.fd-text--pre-wrap]=\"whitespaces()\" [style.hyphens]=\"hyphenation()\">\n <span\n fdkLineClamp\n class=\"fd-text__lineclamp\"\n #lineClamp=\"fdLineClamp\"\n [fdLineclampState]=\"_isCollapsed()\"\n [fdLineClampLines]=\"maxLines()\"\n (lineCountUpdate)=\"checkLineCount($event)\"\n >\n <span fdkLineClampTarget [fdLineClampTargetText]=\"text()\" (update)=\"lineClamp.refreshTarget($event)\"></span>\n </span>\n @if (_expandable() && _hasMore()) {\n <a\n fd-link\n tabindex=\"0\"\n class=\"fd-text__link--more\"\n (keydown.enter)=\"toggleTextView()\"\n (click)=\"toggleTextView()\"\n >\n {{ isCollapsed() ? ('coreText.moreLabel' | fdTranslate) : ('coreText.lessLabel' | fdTranslate) }}\n </a>\n }\n</p>\n","import { NgModule } from '@angular/core';\nimport { TextComponent } from './text.component';\n\n/**\n * @deprecated Use the standalone `TextComponent` directly instead. Import `TextComponent` in your component's imports array.\n * This module will be removed in a future version.\n */\n@NgModule({\n imports: [TextComponent],\n exports: [TextComponent]\n})\nexport class TextModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|