@fundamental-ngx/platform 0.49.0-rc.25 → 0.49.0-rc.26

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.
@@ -4,7 +4,6 @@ import { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@an
4
4
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
5
  import { KeyUtil, OverflowListDirective } from '@fundamental-ngx/cdk/utils';
6
6
  import { FD_DYNAMIC_PAGE } from '@fundamental-ngx/core/dynamic-page';
7
- import { cloneDeep } from 'lodash-es';
8
7
  import { ICON_TAB_HIDDEN_CLASS_NAME } from '../constants';
9
8
  import * as i0 from "@angular/core";
10
9
  export class IconTabBarBase {
@@ -146,7 +145,7 @@ export class IconTabBarBase {
146
145
  const extraTabs = [...this._extraTabs$()];
147
146
  deletedItem.index = selectedItem.index;
148
147
  deletedItem.uId = `${deletedItem.index}`;
149
- const itemToPopover = cloneDeep(deletedItem);
148
+ const itemToPopover = { ...deletedItem };
150
149
  deletedItem.hidden = true;
151
150
  deletedItem.cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);
152
151
  let indexInExtraItems;
@@ -184,7 +183,7 @@ export class IconTabBarBase {
184
183
  });
185
184
  for (let i = this._lastVisibleTabIndex + 1; i < tabs.length; i++) {
186
185
  const tab = tabs[i];
187
- extraTabs.push(cloneDeep(tab));
186
+ extraTabs.push({ ...tab });
188
187
  tab.hidden = true;
189
188
  tab.cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);
190
189
  }
@@ -274,4 +273,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
274
273
  type: ViewChild,
275
274
  args: ['tablist', { read: ElementRef }]
276
275
  }] } });
277
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi10YWItYmFyLWJhc2UuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL2ljb24tdGFiLWJhci1iYXNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFJTixNQUFNLEVBRU4sTUFBTSxFQUVOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBWSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFRMUQsTUFBTSxPQUFnQixjQUFjO0lBRHBDO1FBVUk7O1dBRUc7UUFFSCxTQUFJLEdBQXFCLEVBQUUsQ0FBQztRQStCNUI7O1dBRUc7UUFFSCxhQUFRLEdBQWlDLElBQUksWUFBWSxFQUFrQixDQUFDO1FBRTVFLGlEQUFpRDtRQUVqRCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQVkzRCxjQUFjO1FBQ2QsZ0JBQVcsR0FBRyxNQUFN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O1FBQ2pELElBQUksWUFBWSxFQUFFO1lBQ2QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDcEM7SUFDTCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsSUFBc0I7UUFDM0MsSUFBSSxTQUFxQyxDQUFDO1FBQzFDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRTtnQkFDWixTQUFTLEdBQUcsR0FBRyxDQUFDO2dCQUNoQixNQUFNO2FBQ1Q7aUJBQU0sSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFO2dCQUNyQixTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxTQUFTLEVBQUU7b0JBQ1gsTUFBTTtpQkFDVDthQUNKO1NBQ0o7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDOzhHQTNUaUIsY0FBYztrR0FBZCxjQUFjLGtTQXlEckIscUJBQXFCLHNIQUlGLFVBQVU7OzJGQTdEdEIsY0FBYztrQkFEbkMsU0FBUzs4QkFjTixJQUFJO3NCQURILEtBQUs7Z0JBT04sS0FBSztzQkFESixLQUFLO2dCQVFOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFPRixXQUFXO3NCQURkLEtBQUs7Z0JBV04sV0FBVztzQkFEVixLQUFLO2dCQU9OLFFBQVE7c0JBRFAsTUFBTTtnQkFLUCxpQkFBaUI7c0JBRGhCLE1BQU07Z0JBT1AsaUJBQWlCO3NCQURoQixTQUFTO3VCQUFDLHFCQUFxQjtnQkFLaEMsYUFBYTtzQkFEWixTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRGVzdHJveVJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIGlzRGV2TW9kZSxcbiAgICBOZ1pvbmUsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBzaWduYWwsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBET1dOX0FSUk9XLCBFTlRFUiwgTEVGVF9BUlJPVywgUklHSFRfQVJST1csIFNQQUNFLCBVUF9BUlJPVyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBLZXlVdGlsLCBOdWxsYWJsZSwgT3ZlcmZsb3dMaXN0RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgRkRfRFlOQU1JQ19QQUdFIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2R5bmFtaWMtcGFnZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgSUNPTl9UQUJfSElEREVOX0NMQVNTX05BTUUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgSWNvblRhYkJhckl0ZW0gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ljb24tdGFiLWJhci1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUYWJDb2xvckFzc29jaWF0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGFiLWNvbG9yLWFzc29jaWF0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFiRGVzdGlueU1vZGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBJY29uVGFiQmFyUG9wb3ZlckJhc2UgfSBmcm9tICcuL3BvcG92ZXJzL2ljb24tdGFiLWJhci1wb3BvdmVyLWJhc2UuY2xhc3MnO1xuaW1wb3J0IHsgVGV4dFR5cGVQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi9wb3BvdmVycy90ZXh0LXR5cGUtcG9wb3Zlci90ZXh0LXR5cGUtcG9wb3Zlci5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJY29uVGFiQmFyQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBMaXN0IG9mIHRhYiBlbGVtZW50cywgdGhhdCBjYW4gcmVjZWl2ZSBmb2N1cy5cbiAgICAgKiBUaGVyZSdzIGEgc2VwYXJhdGUgbWFwcGluZyBmdW5jdGlvbiB0byBnZXQgYWN0dWFsIGh0bWwgZWxlbWVudDogYF9nZXRUYWJVSUVsZW1lbnRGb2N1c2FibGVgXG4gICAgICovXG4gICAgYWJzdHJhY3QgX3RhYlVJRWxlbWVudHM6IFF1ZXJ5TGlzdDx1bmtub3duPjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFic3RyYWN0IF90YWJCYXJQb3BvdmVyOiBJY29uVGFiQmFyUG9wb3ZlckJhc2U7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEEgdGFiIGJhciBjb25maWd1cmF0aW9uIHRoYXQgc3RvcmVzIHRoZSBzdGF0ZSBvZiBlYWNoIHRhYi4gQmFzZWQgb24gdGhpcyBjb25maWd1cmF0aW9uLCBhIHRhYiBiYXIgaXMgcmVwcmVzZW50aW5nLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFiczogSWNvblRhYkJhckl0ZW1bXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEZsYWcgcmVwcmVzZW50aW5nIHJ0bCBtb2RlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpc1J0bDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBc3NvY2lhdGlvbnMgZm9yIGNvbG9ycyBvZiB0aGUgdGFicy5cbiAgICAgKiBJZiBhbnkgb2YgdGhlIGNvbG9yIGFzc29jaWF0aW9ucyBwcm92aWRlZCwgdGhleSdsbCBiZSByZWFkIGJ5IHNjcmVlbnJlYWRlciBpbnN0ZWFkIG9mIHRoZSBhY3R1YWwgY29sb3JcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbG9yQXNzb2NpYXRpb25zOiBUYWJDb2xvckFzc29jaWF0aW9ucztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBkZW5zaXR5TW9kZSBzZXR0ZXIgdHJpZ2dlcnMgdGFicyB0byByZS1jYWxjdWxhdGlvbiBvdmVyZmxvd2VkIHRhYnNcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBkZW5zaXR5TW9kZSh2YWx1ZTogVGFiRGVzdGlueU1vZGUpIHtcbiAgICAgICAgLy8gU2tpcCBmaXJzdCB2YWx1ZSAmJiB2YWx1ZSBkb2Vzbid0IGVxdWFsIHRvIHByZXZpb3VzIG9uZVxuICAgICAgICBpZiAodGhpcy5fZGVuc2l0eU1vZGUgJiYgdmFsdWUgIT09IHRoaXMuX2RlbnNpdHlNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl90cmlnZ2VyUmVjYWxjdWxhdGlvblZpc2libGVJdGVtcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2RlbnNpdHlNb2RlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCB0YWIgVW5pcXVlIElELiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0ZWRVaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0cyB3aGVuIHNvbWUgdGFiIGlzIHNlbGVjdGVkLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8SWNvblRhYkJhckl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcjxJY29uVGFiQmFySXRlbT4oKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIHNlbGVjdGVkIHRhYiBVbmlxdWUgSUQgY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzZWxlY3RlZFVpZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jZSB0byBPdmVyZmxvd0xpc3REaXJlY3RpdmVcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKE92ZXJmbG93TGlzdERpcmVjdGl2ZSlcbiAgICBvdmVyZmxvd0RpcmVjdGl2ZTogT3ZlcmZsb3dMaXN0RGlyZWN0aXZlO1xuXG4gICAgLyoqIEhlYWRlciBlbGVtZW50IHJlZmVyZW5jZS4gKi9cbiAgICBAVmlld0NoaWxkKCd0YWJsaXN0JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgaGVhZGVyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9leHRyYVRhYnMkID0gc2lnbmFsPEljb25UYWJCYXJJdGVtW10+KFtdKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2xhc3RWaXNpYmxlVGFiSW5kZXg6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2V4dHJhSXRlbXMkID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2luRHluYW1pY1BhZ2UgPSAhIWluamVjdChGRF9EWU5BTUlDX1BBR0UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfY2QgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgLyoqIEBIaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX25nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZW5zaXR5TW9kZTogVGFiRGVzdGlueU1vZGU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rlc3Ryb3llZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLnRhYnMgJiYgIWNoYW5nZXMudGFicy5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5faW5pdFRhYnMoKTtcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXJSZWNhbGN1bGF0aW9uVmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXMuaXNSdGwgJiYgIWNoYW5nZXMuaXNSdGwuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXJSZWNhbGN1bGF0aW9uVmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5zZWxlY3RlZFVpZCAmJiAhY2hhbmdlcy5zZWxlY3RlZFVpZC5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgY29uc3QgaXNFeHRyYVRhYiA9IHRoaXMuX2V4dHJhVGFicyQoKS5maW5kKCh0YWIpID0+IHRhYi51SWQgPT09IHRoaXMuc2VsZWN0ZWRVaWQpO1xuICAgICAgICAgICAgaWYgKGlzRXh0cmFUYWIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RFeHRyYUl0ZW0oaXNFeHRyYVRhYik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbml0VGFicygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90cmlnZ2VyUmVjYWxjdWxhdGlvblZpc2libGVJdGVtcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3llZCA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBzZWxlY3RlZEl0ZW1cbiAgICAgKiBAcGFyYW0gZXZlbnRcbiAgICAgKi9cbiAgICBfc2VsZWN0SXRlbShzZWxlY3RlZEl0ZW06IEljb25UYWJCYXJJdGVtLCBldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVpZCA9IHNlbGVjdGVkSXRlbS51SWQ7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRVaWRDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkVWlkKTtcbiAgICAgICAgc2VsZWN0ZWRJdGVtLmJhZGdlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdChzZWxlY3RlZEl0ZW0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2tleURvd25IYW5kbGVyKFxuICAgICAgICBldmVudDogS2V5Ym9hcmRFdmVudCxcbiAgICAgICAgdGFiOiBJY29uVGFiQmFySXRlbSB8IHVuZGVmaW5lZCxcbiAgICAgICAgY3VycmVudEluZGV4OiBudW1iZXIsXG4gICAgICAgIHBvcG92ZXI/OiBUZXh0VHlwZVBvcG92ZXJDb21wb25lbnRcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKHRhYiAmJiBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW1NQQUNFLCBFTlRFUl0pKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0SXRlbSh0YWIpO1xuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbUklHSFRfQVJST1csIERPV05fQVJST1ddKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRE9XTl9BUlJPVykgJiYgdGFiPy5zdWJJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcG9wb3Zlcj8uX29wZW5Qb3BvdmVyKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pc1J0bCA/IHRoaXMuX2ZvY3VzUHJldmlvdXNJdGVtKGN1cnJlbnRJbmRleCkgOiB0aGlzLl9mb2N1c05leHRJdGVtKGN1cnJlbnRJbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtMRUZUX0FSUk9XLCBVUF9BUlJPV10pKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5pc1J0bCA/IHRoaXMuX2ZvY3VzTmV4dEl0ZW0oY3VycmVudEluZGV4KSA6IHRoaXMuX2ZvY3VzUHJldmlvdXNJdGVtKGN1cnJlbnRJbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBmb2N1c2VzIG5leHQgdGFiICovXG4gICAgX2ZvY3VzTmV4dEl0ZW0oY3VycmVudEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gY3VycmVudEluZGV4ID09PSB0aGlzLnRhYnMubGVuZ3RoIC0gMSA/IDAgOiBjdXJyZW50SW5kZXggKyAxO1xuICAgICAgICB0aGlzLl9mb2N1c0l0ZW0obmV4dEluZGV4KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBmb2N1c2VzIHByZXZpb3VzIHRhYiAqL1xuICAgIF9mb2N1c1ByZXZpb3VzSXRlbShjdXJyZW50SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoY3VycmVudEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAvLyBpZiBjdXJyZW50IGZvY3VzZWQgZWxlbWVudCBpcyBmaXJzdCwgZm9jdXMgdGhlIGxhc3Qgb25lLiBJZiB0YWJzIGFyZSBvdmVyZmxvd2VkLCBmb2N1cyB0aGUgbGFzdCB0YWIgaW4gdGhlIHBvcG92ZXJcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzSXRlbSh0aGlzLnRhYnMubGVuZ3RoIC0gMSwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c0l0ZW0oY3VycmVudEluZGV4IC0gMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIHRhYkluZGV4IGluZGV4IG9mIHRoZSB0YWIgdG8gYXBwbHkgZm9jdXNcbiAgICAgKiBAcGFyYW0gZm9jdXNMYXN0IHdoZXRoZXIgdG8gZm9jdXMgZmlyc3Qgb3IgbGFzdCBpdGVtIGluIHRoZSBwb3BvdmVyXG4gICAgICovXG4gICAgX2ZvY3VzSXRlbSh0YWJJbmRleDogbnVtYmVyLCBmb2N1c0xhc3QgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBpZiAodGFiSW5kZXggPiB0aGlzLl9sYXN0VmlzaWJsZVRhYkluZGV4KSB7XG4gICAgICAgICAgICB0aGlzLl90YWJCYXJQb3BvdmVyLl9vcGVuUG9wb3Zlcihmb2N1c0xhc3QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaXRlbVRvRm9jdXMgPSB0aGlzLl9nZXRUYWJVSUVsZW1lbnRGb2N1c2FibGUodGhpcy5fdGFiVUlFbGVtZW50cy5nZXQodGFiSW5kZXgpKTtcbiAgICAgICAgICAgIGl0ZW1Ub0ZvY3VzPy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBzZWxlY3RlZEl0ZW1cbiAgICAgKiBAZGVzY3JpcHRpb24gc2VsZWN0IGV4dHJhIGl0ZW0gaW5zaWRlIHBvcG92ZXJcbiAgICAgKi9cbiAgICBfc2VsZWN0RXh0cmFJdGVtKHNlbGVjdGVkSXRlbTogSWNvblRhYkJhckl0ZW0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFicyA9IFsuLi50aGlzLnRhYnNdO1xuICAgICAgICBjb25zdCBkZWxldGVkSXRlbSA9IHRhYnMuc3BsaWNlKHRoaXMuX2xhc3RWaXNpYmxlVGFiSW5kZXgsIDEsIHNlbGVjdGVkSXRlbSlbMF0gYXMgSWNvblRhYkJhckl0ZW07XG4gICAgICAgIHRhYnMuc3BsaWNlKHNlbGVjdGVkSXRlbS5pbmRleCwgMSwgZGVsZXRlZEl0ZW0pO1xuICAgICAgICB0aGlzLnRhYnMgPSB0YWJzO1xuICAgICAgICBjb25zdCBleHRyYVRhYnMgPSBbLi4udGhpcy5fZXh0cmFUYWJzJCgpXTtcblxuICAgICAgICBkZWxldGVkSXRlbS5pbmRleCA9IHNlbGVjdGVkSXRlbS5pbmRleDtcbiAgICAgICAgZGVsZXRlZEl0ZW0udUlkID0gYCR7ZGVsZXRlZEl0ZW0uaW5kZXh9YDtcbiAgICAgICAgY29uc3QgaXRlbVRvUG9wb3ZlciA9IGNsb25lRGVlcChkZWxldGVkSXRlbSk7XG4gICAgICAgIGRlbGV0ZWRJdGVtLmhpZGRlbiA9IHRydWU7XG4gICAgICAgIGRlbGV0ZWRJdGVtLmNzc0NsYXNzZXMucHVzaChJQ09OX1RBQl9ISURERU5fQ0xBU1NfTkFNRSk7XG5cbiAgICAgICAgbGV0IGluZGV4SW5FeHRyYUl0ZW1zO1xuICAgICAgICB0aGlzLl9leHRyYVRhYnMkKCkuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmluZGV4ID09PSBzZWxlY3RlZEl0ZW0uaW5kZXgpIHtcbiAgICAgICAgICAgICAgICBpbmRleEluRXh0cmFJdGVtcyA9IGluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBzZWxlY3RlZEl0ZW0uaW5kZXggPSB0aGlzLl9sYXN0VmlzaWJsZVRhYkluZGV4O1xuICAgICAgICBzZWxlY3RlZEl0ZW0udUlkID0gYCR7c2VsZWN0ZWRJdGVtLmluZGV4fWA7XG4gICAgICAgIHNlbGVjdGVkSXRlbS5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbS5jb2xvcikge1xuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtLmNzc0NsYXNzZXMgPSBbYGZkLWljb24tdGFiLWJhcl9faXRlbS0tJHtzZWxlY3RlZEl0ZW0uY29sb3J9YF07XG4gICAgICAgIH1cbiAgICAgICAgZXh0cmFUYWJzLnNwbGljZShpbmRleEluRXh0cmFJdGVtcywgMSwgaXRlbVRvUG9wb3Zlcik7XG4gICAgICAgIHRoaXMuX2V4dHJhVGFicyQuc2V0KGV4dHJhVGFicyk7XG5cbiAgICAgICAgdGhpcy5fc2VsZWN0SXRlbShzZWxlY3RlZEl0ZW0pO1xuICAgICAgICB0aGlzLl90cmlnZ2VyUmVjYWxjdWxhdGlvblZpc2libGVJdGVtcygpO1xuICAgICAgICB0aGlzLl9mb2N1c0l0ZW0odGhpcy5fbGFzdFZpc2libGVUYWJJbmRleCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBleHRyYUl0ZW1zXG4gICAgICogQGRlc2NyaXB0aW9uIHJlY2FsY3VsYXRlIF9uZXh0U3RlcHMgYW5kIF9wcmV2U3RlcHMgYXJyYXkgaWYgd2UgaGF2ZSBleHRyYSBpdGVtc1xuICAgICAqL1xuICAgIF9yZWNhbGN1bGF0ZVZpc2libGVJdGVtcyhleHRyYUl0ZW1zOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZXh0cmFJdGVtcyQuc2V0KGV4dHJhSXRlbXMgPiAwKTtcbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBjb25zdCB0YWJzID0gWy4uLnRoaXMudGFic107XG4gICAgICAgIGNvbnN0IGV4dHJhVGFiczogSWNvblRhYkJhckl0ZW1bXSA9IFtdO1xuICAgICAgICB0aGlzLl9sYXN0VmlzaWJsZVRhYkluZGV4ID0gdGFicy5sZW5ndGggLSAxIC0gZXh0cmFJdGVtcztcbiAgICAgICAgdGFicy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpdGVtLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICAgICAgaXRlbS5jc3NDbGFzc2VzID0gaXRlbS5jc3NDbGFzc2VzLmZpbHRlcigoY3NzQ2xhc3MpID0+IGNzc0NsYXNzICE9PSBJQ09OX1RBQl9ISURERU5fQ0xBU1NfTkFNRSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLl9sYXN0VmlzaWJsZVRhYkluZGV4ICsgMTsgaSA8IHRhYnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYiA9IHRhYnNbaV07XG4gICAgICAgICAgICBleHRyYVRhYnMucHVzaChjbG9uZURlZXAodGFiKSk7XG4gICAgICAgICAgICB0YWIuaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgICAgIHRhYi5jc3NDbGFzc2VzLnB1c2goSUNPTl9UQUJfSElEREVOX0NMQVNTX05BTUUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2V4dHJhVGFicyQuc2V0KGV4dHJhVGFicyk7XG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWFwcGluZyBmdW5jdGlvbiB0byByZXNvbHZlIFVJIHRhYiBlbGVtZW50IHRvIGl0J3MgZm9jdXNhYmxlIHBhcnQvZGVzY2VuZGFudFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfZ2V0VGFiVUlFbGVtZW50Rm9jdXNhYmxlKHRhYlVJRWxlbWVudDogdW5rbm93bik6IE51bGxhYmxlPEhUTUxFbGVtZW50PiB7XG4gICAgICAgIGlmICh0YWJVSUVsZW1lbnQgJiYgdHlwZW9mIHRhYlVJRWxlbWVudCA9PT0gJ29iamVjdCcgJiYgJ25hdGl2ZUVsZW1lbnQnIGluIHRhYlVJRWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKCg8RWxlbWVudFJlZj50YWJVSUVsZW1lbnQpLm5hdGl2ZUVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAoPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PnRhYlVJRWxlbWVudCkubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRmFpbGVkIHRvIGdldCBmb2N1c2FibGUgdGFiIGVsZW1lbnQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGRlc2NyaXB0aW9uIHRyaWdnZXIgcmVjYWxjdWxhdGlvbiBpdGVtcywgbmVlZCB0byBkbyBpdCBhc3luY2hyb25vdXNseSBhZnRlciBkb20gd2FzIHJlcmVuZGVyZWRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3RyaWdnZXJSZWNhbGN1bGF0aW9uVmlzaWJsZUl0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9uZ1pvbmUub25NaWNyb3Rhc2tFbXB0eS5waXBlKHRha2UoMSksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm92ZXJmbG93RGlyZWN0aXZlICYmICF0aGlzLl9kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHRyYSA9IHRoaXMub3ZlcmZsb3dEaXJlY3RpdmUuZ2V0QW1vdW50T2ZFeHRyYUl0ZW1zKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVjYWxjdWxhdGVWaXNpYmxlSXRlbXMoZXh0cmEpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBkZXNjcmlwdGlvbiBpbml0aWFsaXplIHN0YXRlIG9mIHRhYnNcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2luaXRUYWJzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLl9maW5kQWN0aXZlVGFiSWQodGhpcy50YWJzKSB8fCB0aGlzLnRhYnNbMF07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRVaWQgPSBzZWxlY3RlZEl0ZW0/LnVJZDtcbiAgICAgICAgdGhpcy5fbGFzdFZpc2libGVUYWJJbmRleCA9IHRoaXMudGFicy5sZW5ndGggLSAxO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVWlkQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZFVpZCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkLmVtaXQoc2VsZWN0ZWRJdGVtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2ZpbmRBY3RpdmVUYWJJZCh0YWJzOiBJY29uVGFiQmFySXRlbVtdKTogSWNvblRhYkJhckl0ZW0gfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgYWN0aXZlVGFiOiBJY29uVGFiQmFySXRlbSB8IHVuZGVmaW5lZDtcbiAgICAgICAgZm9yIChjb25zdCB0YWIgb2YgdGFicykge1xuICAgICAgICAgICAgaWYgKHRhYi5hY3RpdmUpIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVUYWIgPSB0YWI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRhYi5zdWJJdGVtcykge1xuICAgICAgICAgICAgICAgIGFjdGl2ZVRhYiA9IHRoaXMuX2ZpbmRBY3RpdmVUYWJJZCh0YWIuc3ViSXRlbXMpO1xuICAgICAgICAgICAgICAgIGlmIChhY3RpdmVUYWIpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjdGl2ZVRhYjtcbiAgICB9XG59XG4iXX0=
276
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi10YWItYmFyLWJhc2UuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2ljb24tdGFiLWJhci9jb21wb25lbnRzL2ljb24tdGFiLWJhci1iYXNlLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFJTixNQUFNLEVBRU4sTUFBTSxFQUVOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLE9BQU8sRUFBWSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBUTFELE1BQU0sT0FBZ0IsY0FBYztJQURwQztRQVVJOztXQUVHO1FBRUgsU0FBSSxHQUFxQixFQUFFLENBQUM7UUErQjVCOztXQUVHO1FBRUgsYUFBUSxHQUFpQyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUU1RSxpREFBaUQ7UUFFakQsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFZM0QsY0FBYztRQUNkLGdCQUFXLEdBQUcsTUFBTSxDQUFtQixFQUFFLENBQUMsQ0FBQztRQUszQyxjQUFjO1FBQ2QsaUJB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aUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3BDO0lBQ0wsQ0FBQztJQUVPLGdCQUFnQixDQUFDLElBQXNCO1FBQzNDLElBQUksU0FBcUMsQ0FBQztRQUMxQyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUU7Z0JBQ1osU0FBUyxHQUFHLEdBQUcsQ0FBQztnQkFDaEIsTUFBTTthQUNUO2lCQUFNLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRTtnQkFDckIsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2hELElBQUksU0FBUyxFQUFFO29CQUNYLE1BQU07aUJBQ1Q7YUFDSjtTQUNKO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQzs4R0EzVGlCLGNBQWM7a0dBQWQsY0FBYyxrU0F5RHJCLHFCQUFxQixzSEFJRixVQUFVOzsyRkE3RHRCLGNBQWM7a0JBRG5DLFNBQVM7OEJBY04sSUFBSTtzQkFESCxLQUFLO2dCQU9OLEtBQUs7c0JBREosS0FBSztnQkFRTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBT0YsV0FBVztzQkFEZCxLQUFLO2dCQVdOLFdBQVc7c0JBRFYsS0FBSztnQkFPTixRQUFRO3NCQURQLE1BQU07Z0JBS1AsaUJBQWlCO3NCQURoQixNQUFNO2dCQU9QLGlCQUFpQjtzQkFEaEIsU0FBUzt1QkFBQyxxQkFBcUI7Z0JBS2hDLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBpc0Rldk1vZGUsXG4gICAgTmdab25lLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgc2lnbmFsLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRE9XTl9BUlJPVywgRU5URVIsIExFRlRfQVJST1csIFJJR0hUX0FSUk9XLCBTUEFDRSwgVVBfQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgS2V5VXRpbCwgTnVsbGFibGUsIE92ZXJmbG93TGlzdERpcmVjdGl2ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEZEX0RZTkFNSUNfUEFHRSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9keW5hbWljLXBhZ2UnO1xuaW1wb3J0IHsgSUNPTl9UQUJfSElEREVOX0NMQVNTX05BTUUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgSWNvblRhYkJhckl0ZW0gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2ljb24tdGFiLWJhci1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBUYWJDb2xvckFzc29jaWF0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMvdGFiLWNvbG9yLWFzc29jaWF0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVGFiRGVzdGlueU1vZGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBJY29uVGFiQmFyUG9wb3ZlckJhc2UgfSBmcm9tICcuL3BvcG92ZXJzL2ljb24tdGFiLWJhci1wb3BvdmVyLWJhc2UuY2xhc3MnO1xuaW1wb3J0IHsgVGV4dFR5cGVQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi9wb3BvdmVycy90ZXh0LXR5cGUtcG9wb3Zlci90ZXh0LXR5cGUtcG9wb3Zlci5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJY29uVGFiQmFyQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBMaXN0IG9mIHRhYiBlbGVtZW50cywgdGhhdCBjYW4gcmVjZWl2ZSBmb2N1cy5cbiAgICAgKiBUaGVyZSdzIGEgc2VwYXJhdGUgbWFwcGluZyBmdW5jdGlvbiB0byBnZXQgYWN0dWFsIGh0bWwgZWxlbWVudDogYF9nZXRUYWJVSUVsZW1lbnRGb2N1c2FibGVgXG4gICAgICovXG4gICAgYWJzdHJhY3QgX3RhYlVJRWxlbWVudHM6IFF1ZXJ5TGlzdDx1bmtub3duPjtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFic3RyYWN0IF90YWJCYXJQb3BvdmVyOiBJY29uVGFiQmFyUG9wb3ZlckJhc2U7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEEgdGFiIGJhciBjb25maWd1cmF0aW9uIHRoYXQgc3RvcmVzIHRoZSBzdGF0ZSBvZiBlYWNoIHRhYi4gQmFzZWQgb24gdGhpcyBjb25maWd1cmF0aW9uLCBhIHRhYiBiYXIgaXMgcmVwcmVzZW50aW5nLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFiczogSWNvblRhYkJhckl0ZW1bXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEZsYWcgcmVwcmVzZW50aW5nIHJ0bCBtb2RlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpc1J0bDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBc3NvY2lhdGlvbnMgZm9yIGNvbG9ycyBvZiB0aGUgdGFicy5cbiAgICAgKiBJZiBhbnkgb2YgdGhlIGNvbG9yIGFzc29jaWF0aW9ucyBwcm92aWRlZCwgdGhleSdsbCBiZSByZWFkIGJ5IHNjcmVlbnJlYWRlciBpbnN0ZWFkIG9mIHRoZSBhY3R1YWwgY29sb3JcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbG9yQXNzb2NpYXRpb25zOiBUYWJDb2xvckFzc29jaWF0aW9ucztcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBkZW5zaXR5TW9kZSBzZXR0ZXIgdHJpZ2dlcnMgdGFicyB0byByZS1jYWxjdWxhdGlvbiBvdmVyZmxvd2VkIHRhYnNcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBkZW5zaXR5TW9kZSh2YWx1ZTogVGFiRGVzdGlueU1vZGUpIHtcbiAgICAgICAgLy8gU2tpcCBmaXJzdCB2YWx1ZSAmJiB2YWx1ZSBkb2Vzbid0IGVxdWFsIHRvIHByZXZpb3VzIG9uZVxuICAgICAgICBpZiAodGhpcy5fZGVuc2l0eU1vZGUgJiYgdmFsdWUgIT09IHRoaXMuX2RlbnNpdHlNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl90cmlnZ2VyUmVjYWxjdWxhdGlvblZpc2libGVJdGVtcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2RlbnNpdHlNb2RlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEN1cnJlbnRseSBzZWxlY3RlZCB0YWIgVW5pcXVlIElELiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2VsZWN0ZWRVaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBFbWl0cyB3aGVuIHNvbWUgdGFiIGlzIHNlbGVjdGVkLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8SWNvblRhYkJhckl0ZW0+ID0gbmV3IEV2ZW50RW1pdHRlcjxJY29uVGFiQmFySXRlbT4oKTtcblxuICAgIC8qKiBFbWl0cyB3aGVuIHNlbGVjdGVkIHRhYiBVbmlxdWUgSUQgY2hhbmdlcy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBzZWxlY3RlZFVpZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgdW5kZWZpbmVkPigpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jZSB0byBPdmVyZmxvd0xpc3REaXJlY3RpdmVcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKE92ZXJmbG93TGlzdERpcmVjdGl2ZSlcbiAgICBvdmVyZmxvd0RpcmVjdGl2ZTogT3ZlcmZsb3dMaXN0RGlyZWN0aXZlO1xuXG4gICAgLyoqIEhlYWRlciBlbGVtZW50IHJlZmVyZW5jZS4gKi9cbiAgICBAVmlld0NoaWxkKCd0YWJsaXN0JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgaGVhZGVyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9leHRyYVRhYnMkID0gc2lnbmFsPEljb25UYWJCYXJJdGVtW10+KFtdKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2xhc3RWaXNpYmxlVGFiSW5kZXg6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2V4dHJhSXRlbXMkID0gc2lnbmFsKGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2luRHluYW1pY1BhZ2UgPSAhIWluamVjdChGRF9EWU5BTUlDX1BBR0UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfY2QgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgLyoqIEBIaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX25nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZW5zaXR5TW9kZTogVGFiRGVzdGlueU1vZGU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Rlc3Ryb3llZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLnRhYnMgJiYgIWNoYW5nZXMudGFicy5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5faW5pdFRhYnMoKTtcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXJSZWNhbGN1bGF0aW9uVmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYW5nZXMuaXNSdGwgJiYgIWNoYW5nZXMuaXNSdGwuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXJSZWNhbGN1bGF0aW9uVmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlcy5zZWxlY3RlZFVpZCAmJiAhY2hhbmdlcy5zZWxlY3RlZFVpZC5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgY29uc3QgaXNFeHRyYVRhYiA9IHRoaXMuX2V4dHJhVGFicyQoKS5maW5kKCh0YWIpID0+IHRhYi51SWQgPT09IHRoaXMuc2VsZWN0ZWRVaWQpO1xuICAgICAgICAgICAgaWYgKGlzRXh0cmFUYWIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RFeHRyYUl0ZW0oaXNFeHRyYVRhYik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pbml0VGFicygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90cmlnZ2VyUmVjYWxjdWxhdGlvblZpc2libGVJdGVtcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3llZCA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBzZWxlY3RlZEl0ZW1cbiAgICAgKiBAcGFyYW0gZXZlbnRcbiAgICAgKi9cbiAgICBfc2VsZWN0SXRlbShzZWxlY3RlZEl0ZW06IEljb25UYWJCYXJJdGVtLCBldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVpZCA9IHNlbGVjdGVkSXRlbS51SWQ7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRVaWRDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkVWlkKTtcbiAgICAgICAgc2VsZWN0ZWRJdGVtLmJhZGdlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdChzZWxlY3RlZEl0ZW0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2tleURvd25IYW5kbGVyKFxuICAgICAgICBldmVudDogS2V5Ym9hcmRFdmVudCxcbiAgICAgICAgdGFiOiBJY29uVGFiQmFySXRlbSB8IHVuZGVmaW5lZCxcbiAgICAgICAgY3VycmVudEluZGV4OiBudW1iZXIsXG4gICAgICAgIHBvcG92ZXI/OiBUZXh0VHlwZVBvcG92ZXJDb21wb25lbnRcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKHRhYiAmJiBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW1NQQUNFLCBFTlRFUl0pKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0SXRlbSh0YWIpO1xuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBbUklHSFRfQVJST1csIERPV05fQVJST1ddKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRE9XTl9BUlJPVykgJiYgdGFiPy5zdWJJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcG9wb3Zlcj8uX29wZW5Qb3BvdmVyKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pc1J0bCA/IHRoaXMuX2ZvY3VzUHJldmlvdXNJdGVtKGN1cnJlbnRJbmRleCkgOiB0aGlzLl9mb2N1c05leHRJdGVtKGN1cnJlbnRJbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFtMRUZUX0FSUk9XLCBVUF9BUlJPV10pKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5pc1J0bCA/IHRoaXMuX2ZvY3VzTmV4dEl0ZW0oY3VycmVudEluZGV4KSA6IHRoaXMuX2ZvY3VzUHJldmlvdXNJdGVtKGN1cnJlbnRJbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBmb2N1c2VzIG5leHQgdGFiICovXG4gICAgX2ZvY3VzTmV4dEl0ZW0oY3VycmVudEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmV4dEluZGV4ID0gY3VycmVudEluZGV4ID09PSB0aGlzLnRhYnMubGVuZ3RoIC0gMSA/IDAgOiBjdXJyZW50SW5kZXggKyAxO1xuICAgICAgICB0aGlzLl9mb2N1c0l0ZW0obmV4dEluZGV4KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBmb2N1c2VzIHByZXZpb3VzIHRhYiAqL1xuICAgIF9mb2N1c1ByZXZpb3VzSXRlbShjdXJyZW50SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoY3VycmVudEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAvLyBpZiBjdXJyZW50IGZvY3VzZWQgZWxlbWVudCBpcyBmaXJzdCwgZm9jdXMgdGhlIGxhc3Qgb25lLiBJZiB0YWJzIGFyZSBvdmVyZmxvd2VkLCBmb2N1cyB0aGUgbGFzdCB0YWIgaW4gdGhlIHBvcG92ZXJcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzSXRlbSh0aGlzLnRhYnMubGVuZ3RoIC0gMSwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c0l0ZW0oY3VycmVudEluZGV4IC0gMSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIHRhYkluZGV4IGluZGV4IG9mIHRoZSB0YWIgdG8gYXBwbHkgZm9jdXNcbiAgICAgKiBAcGFyYW0gZm9jdXNMYXN0IHdoZXRoZXIgdG8gZm9jdXMgZmlyc3Qgb3IgbGFzdCBpdGVtIGluIHRoZSBwb3BvdmVyXG4gICAgICovXG4gICAgX2ZvY3VzSXRlbSh0YWJJbmRleDogbnVtYmVyLCBmb2N1c0xhc3QgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBpZiAodGFiSW5kZXggPiB0aGlzLl9sYXN0VmlzaWJsZVRhYkluZGV4KSB7XG4gICAgICAgICAgICB0aGlzLl90YWJCYXJQb3BvdmVyLl9vcGVuUG9wb3Zlcihmb2N1c0xhc3QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaXRlbVRvRm9jdXMgPSB0aGlzLl9nZXRUYWJVSUVsZW1lbnRGb2N1c2FibGUodGhpcy5fdGFiVUlFbGVtZW50cy5nZXQodGFiSW5kZXgpKTtcbiAgICAgICAgICAgIGl0ZW1Ub0ZvY3VzPy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBwYXJhbSBzZWxlY3RlZEl0ZW1cbiAgICAgKiBAZGVzY3JpcHRpb24gc2VsZWN0IGV4dHJhIGl0ZW0gaW5zaWRlIHBvcG92ZXJcbiAgICAgKi9cbiAgICBfc2VsZWN0RXh0cmFJdGVtKHNlbGVjdGVkSXRlbTogSWNvblRhYkJhckl0ZW0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFicyA9IFsuLi50aGlzLnRhYnNdO1xuICAgICAgICBjb25zdCBkZWxldGVkSXRlbSA9IHRhYnMuc3BsaWNlKHRoaXMuX2xhc3RWaXNpYmxlVGFiSW5kZXgsIDEsIHNlbGVjdGVkSXRlbSlbMF0gYXMgSWNvblRhYkJhckl0ZW07XG4gICAgICAgIHRhYnMuc3BsaWNlKHNlbGVjdGVkSXRlbS5pbmRleCwgMSwgZGVsZXRlZEl0ZW0pO1xuICAgICAgICB0aGlzLnRhYnMgPSB0YWJzO1xuICAgICAgICBjb25zdCBleHRyYVRhYnMgPSBbLi4udGhpcy5fZXh0cmFUYWJzJCgpXTtcblxuICAgICAgICBkZWxldGVkSXRlbS5pbmRleCA9IHNlbGVjdGVkSXRlbS5pbmRleDtcbiAgICAgICAgZGVsZXRlZEl0ZW0udUlkID0gYCR7ZGVsZXRlZEl0ZW0uaW5kZXh9YDtcbiAgICAgICAgY29uc3QgaXRlbVRvUG9wb3ZlciA9IHsgLi4uZGVsZXRlZEl0ZW0gfTtcbiAgICAgICAgZGVsZXRlZEl0ZW0uaGlkZGVuID0gdHJ1ZTtcbiAgICAgICAgZGVsZXRlZEl0ZW0uY3NzQ2xhc3Nlcy5wdXNoKElDT05fVEFCX0hJRERFTl9DTEFTU19OQU1FKTtcblxuICAgICAgICBsZXQgaW5kZXhJbkV4dHJhSXRlbXM7XG4gICAgICAgIHRoaXMuX2V4dHJhVGFicyQoKS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uaW5kZXggPT09IHNlbGVjdGVkSXRlbS5pbmRleCkge1xuICAgICAgICAgICAgICAgIGluZGV4SW5FeHRyYUl0ZW1zID0gaW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNlbGVjdGVkSXRlbS5pbmRleCA9IHRoaXMuX2xhc3RWaXNpYmxlVGFiSW5kZXg7XG4gICAgICAgIHNlbGVjdGVkSXRlbS51SWQgPSBgJHtzZWxlY3RlZEl0ZW0uaW5kZXh9YDtcbiAgICAgICAgc2VsZWN0ZWRJdGVtLmhpZGRlbiA9IGZhbHNlO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtLmNvbG9yKSB7XG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW0uY3NzQ2xhc3NlcyA9IFtgZmQtaWNvbi10YWItYmFyX19pdGVtLS0ke3NlbGVjdGVkSXRlbS5jb2xvcn1gXTtcbiAgICAgICAgfVxuICAgICAgICBleHRyYVRhYnMuc3BsaWNlKGluZGV4SW5FeHRyYUl0ZW1zLCAxLCBpdGVtVG9Qb3BvdmVyKTtcbiAgICAgICAgdGhpcy5fZXh0cmFUYWJzJC5zZXQoZXh0cmFUYWJzKTtcblxuICAgICAgICB0aGlzLl9zZWxlY3RJdGVtKHNlbGVjdGVkSXRlbSk7XG4gICAgICAgIHRoaXMuX3RyaWdnZXJSZWNhbGN1bGF0aW9uVmlzaWJsZUl0ZW1zKCk7XG4gICAgICAgIHRoaXMuX2ZvY3VzSXRlbSh0aGlzLl9sYXN0VmlzaWJsZVRhYkluZGV4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHBhcmFtIGV4dHJhSXRlbXNcbiAgICAgKiBAZGVzY3JpcHRpb24gcmVjYWxjdWxhdGUgX25leHRTdGVwcyBhbmQgX3ByZXZTdGVwcyBhcnJheSBpZiB3ZSBoYXZlIGV4dHJhIGl0ZW1zXG4gICAgICovXG4gICAgX3JlY2FsY3VsYXRlVmlzaWJsZUl0ZW1zKGV4dHJhSXRlbXM6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9leHRyYUl0ZW1zJC5zZXQoZXh0cmFJdGVtcyA+IDApO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIGNvbnN0IHRhYnMgPSBbLi4udGhpcy50YWJzXTtcbiAgICAgICAgY29uc3QgZXh0cmFUYWJzOiBJY29uVGFiQmFySXRlbVtdID0gW107XG4gICAgICAgIHRoaXMuX2xhc3RWaXNpYmxlVGFiSW5kZXggPSB0YWJzLmxlbmd0aCAtIDEgLSBleHRyYUl0ZW1zO1xuICAgICAgICB0YWJzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGl0ZW0uaGlkZGVuID0gZmFsc2U7XG4gICAgICAgICAgICBpdGVtLmNzc0NsYXNzZXMgPSBpdGVtLmNzc0NsYXNzZXMuZmlsdGVyKChjc3NDbGFzcykgPT4gY3NzQ2xhc3MgIT09IElDT05fVEFCX0hJRERFTl9DTEFTU19OQU1FKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuX2xhc3RWaXNpYmxlVGFiSW5kZXggKyAxOyBpIDwgdGFicy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdGFiID0gdGFic1tpXTtcbiAgICAgICAgICAgIGV4dHJhVGFicy5wdXNoKHsgLi4udGFiIH0pO1xuICAgICAgICAgICAgdGFiLmhpZGRlbiA9IHRydWU7XG4gICAgICAgICAgICB0YWIuY3NzQ2xhc3Nlcy5wdXNoKElDT05fVEFCX0hJRERFTl9DTEFTU19OQU1FKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9leHRyYVRhYnMkLnNldChleHRyYVRhYnMpO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1hcHBpbmcgZnVuY3Rpb24gdG8gcmVzb2x2ZSBVSSB0YWIgZWxlbWVudCB0byBpdCdzIGZvY3VzYWJsZSBwYXJ0L2Rlc2NlbmRhbnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2dldFRhYlVJRWxlbWVudEZvY3VzYWJsZSh0YWJVSUVsZW1lbnQ6IHVua25vd24pOiBOdWxsYWJsZTxIVE1MRWxlbWVudD4ge1xuICAgICAgICBpZiAodGFiVUlFbGVtZW50ICYmIHR5cGVvZiB0YWJVSUVsZW1lbnQgPT09ICdvYmplY3QnICYmICduYXRpdmVFbGVtZW50JyBpbiB0YWJVSUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmICgoPEVsZW1lbnRSZWY+dGFiVUlFbGVtZW50KS5uYXRpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj50YWJVSUVsZW1lbnQpLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0ZhaWxlZCB0byBnZXQgZm9jdXNhYmxlIHRhYiBlbGVtZW50Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBkZXNjcmlwdGlvbiB0cmlnZ2VyIHJlY2FsY3VsYXRpb24gaXRlbXMsIG5lZWQgdG8gZG8gaXQgYXN5bmNocm9ub3VzbHkgYWZ0ZXIgZG9tIHdhcyByZXJlbmRlcmVkXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF90cmlnZ2VyUmVjYWxjdWxhdGlvblZpc2libGVJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbmdab25lLm9uTWljcm90YXNrRW1wdHkucGlwZSh0YWtlKDEpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5vdmVyZmxvd0RpcmVjdGl2ZSAmJiAhdGhpcy5fZGVzdHJveWVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXh0cmEgPSB0aGlzLm92ZXJmbG93RGlyZWN0aXZlLmdldEFtb3VudE9mRXh0cmFJdGVtcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlY2FsY3VsYXRlVmlzaWJsZUl0ZW1zKGV4dHJhKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAZGVzY3JpcHRpb24gaW5pdGlhbGl6ZSBzdGF0ZSBvZiB0YWJzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9pbml0VGFicygpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRJdGVtID0gdGhpcy5fZmluZEFjdGl2ZVRhYklkKHRoaXMudGFicykgfHwgdGhpcy50YWJzWzBdO1xuICAgICAgICB0aGlzLnNlbGVjdGVkVWlkID0gc2VsZWN0ZWRJdGVtPy51SWQ7XG4gICAgICAgIHRoaXMuX2xhc3RWaXNpYmxlVGFiSW5kZXggPSB0aGlzLnRhYnMubGVuZ3RoIC0gMTtcbiAgICAgICAgaWYgKHNlbGVjdGVkSXRlbSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFVpZENoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRVaWQpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KHNlbGVjdGVkSXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9maW5kQWN0aXZlVGFiSWQodGFiczogSWNvblRhYkJhckl0ZW1bXSk6IEljb25UYWJCYXJJdGVtIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IGFjdGl2ZVRhYjogSWNvblRhYkJhckl0ZW0gfCB1bmRlZmluZWQ7XG4gICAgICAgIGZvciAoY29uc3QgdGFiIG9mIHRhYnMpIHtcbiAgICAgICAgICAgIGlmICh0YWIuYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgYWN0aXZlVGFiID0gdGFiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0YWIuc3ViSXRlbXMpIHtcbiAgICAgICAgICAgICAgICBhY3RpdmVUYWIgPSB0aGlzLl9maW5kQWN0aXZlVGFiSWQodGFiLnN1Ykl0ZW1zKTtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlVGFiKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY3RpdmVUYWI7XG4gICAgfVxufVxuIl19
@@ -6,11 +6,11 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
6
  import * as i1$1 from '@fundamental-ngx/cdk/utils';
7
7
  import { KeyUtil, OverflowListDirective, AsyncOrSyncPipe, OverflowListItemDirective, scrollTop } from '@fundamental-ngx/cdk/utils';
8
8
  import { FD_DYNAMIC_PAGE } from '@fundamental-ngx/core/dynamic-page';
9
- import { cloneDeep } from 'lodash-es';
10
9
  import { NgClass, SlicePipe, NgTemplateOutlet, CommonModule } from '@angular/common';
11
10
  import { ButtonComponent } from '@fundamental-ngx/core/button';
12
11
  import { IconComponent, FD_DEFAULT_ICON_FONT_FAMILY } from '@fundamental-ngx/core/icon';
13
12
  import { PopoverComponent, PopoverControlComponent, PopoverBodyComponent } from '@fundamental-ngx/core/popover';
13
+ import { cloneDeep } from 'lodash-es';
14
14
  import * as i1 from '@angular/cdk/drag-drop';
15
15
  import { ReplaySubject, Subject, fromEvent } from 'rxjs';
16
16
  import { ScrollSpyDirective } from '@fundamental-ngx/core/scroll-spy';
@@ -164,7 +164,7 @@ class IconTabBarBase {
164
164
  const extraTabs = [...this._extraTabs$()];
165
165
  deletedItem.index = selectedItem.index;
166
166
  deletedItem.uId = `${deletedItem.index}`;
167
- const itemToPopover = cloneDeep(deletedItem);
167
+ const itemToPopover = { ...deletedItem };
168
168
  deletedItem.hidden = true;
169
169
  deletedItem.cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);
170
170
  let indexInExtraItems;
@@ -202,7 +202,7 @@ class IconTabBarBase {
202
202
  });
203
203
  for (let i = this._lastVisibleTabIndex + 1; i < tabs.length; i++) {
204
204
  const tab = tabs[i];
205
- extraTabs.push(cloneDeep(tab));
205
+ extraTabs.push({ ...tab });
206
206
  tab.hidden = true;
207
207
  tab.cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);
208
208
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-platform-icon-tab-bar.mjs","sources":["../../../../libs/platform/icon-tab-bar/constants.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-base.class.ts","../../../../libs/platform/icon-tab-bar/components/closable-icon-tab-bar.class.ts","../../../../libs/platform/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.ts","../../../../libs/platform/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.ts","../../../../libs/platform/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.html","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.html","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.html","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.html","../../../../libs/platform/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.ts","../../../../libs/platform/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.ts","../../../../libs/platform/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.ts","../../../../libs/platform/icon-tab-bar/components/text-type-tab-item/icon-tab-bar-text-type-tab-item.component.ts","../../../../libs/platform/icon-tab-bar/components/text-type-tab-item/icon-tab-bar-text-type-tab-item.component.html","../../../../libs/platform/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.ts","../../../../libs/platform/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.html","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.html","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-tab/icon-tab-bar-tab.component.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-tab/icon-tab-bar-tab.component.html","../../../../libs/platform/icon-tab-bar/directives/icon-tab-bar-free-content.directive.ts","../../../../libs/platform/icon-tab-bar/icon-tab-bar.component.ts","../../../../libs/platform/icon-tab-bar/icon-tab-bar.component.html","../../../../libs/platform/icon-tab-bar/icon-tab-bar.module.ts","../../../../libs/platform/icon-tab-bar/fundamental-ngx-platform-icon-tab-bar.ts"],"sourcesContent":["export const UNIQUE_KEY_SEPARATOR = '.';\nexport const FLIPPER_SIZE = {\n width: 20,\n height: 44,\n verticalHeight: 20\n};\nexport const ICON_TAB_HIDDEN_CLASS_NAME = 'fd-icon-tab-bar__item--hidden';\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n isDevMode,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n signal,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\n\nimport { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyUtil, Nullable, OverflowListDirective } from '@fundamental-ngx/cdk/utils';\nimport { FD_DYNAMIC_PAGE } from '@fundamental-ngx/core/dynamic-page';\nimport { cloneDeep } from 'lodash-es';\nimport { ICON_TAB_HIDDEN_CLASS_NAME } from '../constants';\nimport { IconTabBarItem } from '../interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from '../interfaces/tab-color-associations.interface';\nimport { TabDestinyMode } from '../types';\nimport { IconTabBarPopoverBase } from './popovers/icon-tab-bar-popover-base.class';\nimport { TextTypePopoverComponent } from './popovers/text-type-popover/text-type-popover.component';\n\n@Directive()\nexport abstract class IconTabBarBase implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n /**\n * @hidden\n * List of tab elements, that can receive focus.\n * There's a separate mapping function to get actual html element: `_getTabUIElementFocusable`\n */\n abstract _tabUIElements: QueryList<unknown>;\n /** @hidden */\n abstract _tabBarPopover: IconTabBarPopoverBase;\n /**\n * @description A tab bar configuration that stores the state of each tab. Based on this configuration, a tab bar is representing.\n */\n @Input()\n tabs: IconTabBarItem[] = [];\n\n /**\n * @description Flag representing rtl mode\n */\n @Input()\n isRtl: boolean;\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n @Input()\n colorAssociations: TabColorAssociations;\n\n /**\n * @description densityMode setter triggers tabs to re-calculation overflowed tabs\n */\n @Input()\n set densityMode(value: TabDestinyMode) {\n // Skip first value && value doesn't equal to previous one\n if (this._densityMode && value !== this._densityMode) {\n this._triggerRecalculationVisibleItems();\n }\n this._densityMode = value;\n }\n\n /** Currently selected tab Unique ID. */\n @Input()\n selectedUid: string | undefined;\n\n /**\n * @description Emits when some tab is selected.\n */\n @Output()\n selected: EventEmitter<IconTabBarItem> = new EventEmitter<IconTabBarItem>();\n\n /** Emits when selected tab Unique ID changes. */\n @Output()\n selectedUidChange = new EventEmitter<string | undefined>();\n\n /**\n * @description Reference to OverflowListDirective\n */\n @ViewChild(OverflowListDirective)\n overflowDirective: OverflowListDirective;\n\n /** Header element reference. */\n @ViewChild('tablist', { read: ElementRef })\n headerElement: ElementRef<HTMLElement>;\n\n /** @hidden */\n _extraTabs$ = signal<IconTabBarItem[]>([]);\n\n /** @hidden */\n _lastVisibleTabIndex: number;\n\n /** @hidden */\n _extraItems$ = signal(false);\n\n /** @hidden */\n readonly _inDynamicPage = !!inject(FD_DYNAMIC_PAGE, { optional: true });\n\n /** @hidden */\n protected readonly _cd = inject(ChangeDetectorRef);\n\n /** @Hidden */\n protected readonly _ngZone = inject(NgZone);\n\n /** @hidden */\n private _densityMode: TabDestinyMode;\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _destroyed = false;\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.tabs && !changes.tabs.firstChange) {\n this._initTabs();\n this._triggerRecalculationVisibleItems();\n return;\n }\n if (changes.isRtl && !changes.isRtl.firstChange) {\n this._triggerRecalculationVisibleItems();\n }\n\n if (changes.selectedUid && !changes.selectedUid.firstChange) {\n const isExtraTab = this._extraTabs$().find((tab) => tab.uId === this.selectedUid);\n if (isExtraTab) {\n this._selectExtraItem(isExtraTab);\n }\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._initTabs();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._triggerRecalculationVisibleItems();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyed = true;\n }\n\n /**\n * @hidden\n * @param selectedItem\n * @param event\n */\n _selectItem(selectedItem: IconTabBarItem, event?: Event): void {\n event?.stopPropagation();\n this.selectedUid = selectedItem.uId;\n this.selectedUidChange.emit(this.selectedUid);\n selectedItem.badge = false;\n this.selected.emit(selectedItem);\n }\n\n /** @hidden */\n _keyDownHandler(\n event: KeyboardEvent,\n tab: IconTabBarItem | undefined,\n currentIndex: number,\n popover?: TextTypePopoverComponent\n ): void {\n if (tab && KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n event.preventDefault();\n this._selectItem(tab);\n } else if (KeyUtil.isKeyCode(event, [RIGHT_ARROW, DOWN_ARROW])) {\n event.preventDefault();\n if (KeyUtil.isKeyCode(event, DOWN_ARROW) && tab?.subItems?.length) {\n popover?._openPopover();\n return;\n }\n this.isRtl ? this._focusPreviousItem(currentIndex) : this._focusNextItem(currentIndex);\n } else if (KeyUtil.isKeyCode(event, [LEFT_ARROW, UP_ARROW])) {\n event.preventDefault();\n this.isRtl ? this._focusNextItem(currentIndex) : this._focusPreviousItem(currentIndex);\n }\n }\n\n /** @hidden focuses next tab */\n _focusNextItem(currentIndex: number): void {\n const nextIndex = currentIndex === this.tabs.length - 1 ? 0 : currentIndex + 1;\n this._focusItem(nextIndex);\n }\n\n /** @hidden focuses previous tab */\n _focusPreviousItem(currentIndex: number): void {\n if (currentIndex === 0) {\n // if current focused element is first, focus the last one. If tabs are overflowed, focus the last tab in the popover\n this._focusItem(this.tabs.length - 1, true);\n } else {\n this._focusItem(currentIndex - 1);\n }\n }\n\n /**\n * @hidden\n * @param tabIndex index of the tab to apply focus\n * @param focusLast whether to focus first or last item in the popover\n */\n _focusItem(tabIndex: number, focusLast = false): void {\n if (tabIndex > this._lastVisibleTabIndex) {\n this._tabBarPopover._openPopover(focusLast);\n } else {\n const itemToFocus = this._getTabUIElementFocusable(this._tabUIElements.get(tabIndex));\n itemToFocus?.focus();\n }\n }\n\n /**\n * @hidden\n * @param selectedItem\n * @description select extra item inside popover\n */\n _selectExtraItem(selectedItem: IconTabBarItem): void {\n const tabs = [...this.tabs];\n const deletedItem = tabs.splice(this._lastVisibleTabIndex, 1, selectedItem)[0] as IconTabBarItem;\n tabs.splice(selectedItem.index, 1, deletedItem);\n this.tabs = tabs;\n const extraTabs = [...this._extraTabs$()];\n\n deletedItem.index = selectedItem.index;\n deletedItem.uId = `${deletedItem.index}`;\n const itemToPopover = cloneDeep(deletedItem);\n deletedItem.hidden = true;\n deletedItem.cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n\n let indexInExtraItems;\n this._extraTabs$().forEach((item, index) => {\n if (item.index === selectedItem.index) {\n indexInExtraItems = index;\n }\n });\n\n selectedItem.index = this._lastVisibleTabIndex;\n selectedItem.uId = `${selectedItem.index}`;\n selectedItem.hidden = false;\n if (selectedItem.color) {\n selectedItem.cssClasses = [`fd-icon-tab-bar__item--${selectedItem.color}`];\n }\n extraTabs.splice(indexInExtraItems, 1, itemToPopover);\n this._extraTabs$.set(extraTabs);\n\n this._selectItem(selectedItem);\n this._triggerRecalculationVisibleItems();\n this._focusItem(this._lastVisibleTabIndex);\n }\n\n /**\n * @hidden\n * @param extraItems\n * @description recalculate _nextSteps and _prevSteps array if we have extra items\n */\n _recalculateVisibleItems(extraItems: number): void {\n this._extraItems$.set(extraItems > 0);\n this._cd.detectChanges();\n const tabs = [...this.tabs];\n const extraTabs: IconTabBarItem[] = [];\n this._lastVisibleTabIndex = tabs.length - 1 - extraItems;\n tabs.forEach((item) => {\n item.hidden = false;\n item.cssClasses = item.cssClasses.filter((cssClass) => cssClass !== ICON_TAB_HIDDEN_CLASS_NAME);\n });\n\n for (let i = this._lastVisibleTabIndex + 1; i < tabs.length; i++) {\n const tab = tabs[i];\n extraTabs.push(cloneDeep(tab));\n tab.hidden = true;\n tab.cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n }\n this._extraTabs$.set(extraTabs);\n this._cd.detectChanges();\n }\n\n /**\n * @hidden\n * Mapping function to resolve UI tab element to it's focusable part/descendant\n */\n protected _getTabUIElementFocusable(tabUIElement: unknown): Nullable<HTMLElement> {\n if (tabUIElement && typeof tabUIElement === 'object' && 'nativeElement' in tabUIElement) {\n if ((<ElementRef>tabUIElement).nativeElement instanceof HTMLElement) {\n return (<ElementRef<HTMLElement>>tabUIElement).nativeElement;\n }\n }\n if (isDevMode()) {\n console.warn('Failed to get focusable tab element');\n }\n return null;\n }\n\n /**\n * @hidden\n * @description trigger recalculation items, need to do it asynchronously after dom was rerendered\n */\n protected _triggerRecalculationVisibleItems(): void {\n this._ngZone.onMicrotaskEmpty.pipe(take(1), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n if (this.overflowDirective && !this._destroyed) {\n const extra = this.overflowDirective.getAmountOfExtraItems();\n this._recalculateVisibleItems(extra);\n this._cd.detectChanges();\n }\n });\n }\n\n /**\n * @hidden\n * @description initialize state of tabs\n */\n protected _initTabs(): void {\n const selectedItem = this._findActiveTabId(this.tabs) || this.tabs[0];\n this.selectedUid = selectedItem?.uId;\n this._lastVisibleTabIndex = this.tabs.length - 1;\n if (selectedItem) {\n this.selectedUidChange.emit(this.selectedUid);\n this.selected.emit(selectedItem);\n }\n }\n\n private _findActiveTabId(tabs: IconTabBarItem[]): IconTabBarItem | undefined {\n let activeTab: IconTabBarItem | undefined;\n for (const tab of tabs) {\n if (tab.active) {\n activeTab = tab;\n break;\n } else if (tab.subItems) {\n activeTab = this._findActiveTabId(tab.subItems);\n if (activeTab) {\n break;\n }\n }\n }\n\n return activeTab;\n }\n}\n","import { BACKSPACE, DELETE } from '@angular/cdk/keycodes';\nimport { Directive, EventEmitter, Output } from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { UNIQUE_KEY_SEPARATOR } from '../constants';\nimport { IconTabBarItem } from '../interfaces/icon-tab-bar-item.interface';\nimport { IconTabBarBase } from './icon-tab-bar-base.class';\nimport { IconTabBarPopoverBase } from './popovers/icon-tab-bar-popover-base.class';\nimport { TextTypePopoverComponent } from './popovers/text-type-popover/text-type-popover.component';\n\n@Directive()\nexport abstract class ClosableIconTabBar extends IconTabBarBase {\n abstract _tabBarPopover: IconTabBarPopoverBase;\n /**\n * Event emits when user clicks on x button in tab.\n */\n @Output()\n closeTab = new EventEmitter<IconTabBarItem>();\n\n /** @hidden */\n _closeTab(itemIndex: string, checkPopover = false): void {\n const popoverPresent = !!this._tabBarPopover;\n const tab = this._getTabInfoFromMainList(itemIndex);\n\n if (!tab?.parent) {\n return;\n }\n\n tab.parent.splice(\n tab.parent.findIndex((item) => item.uId === itemIndex),\n 1\n );\n\n this.tabs = this._updateTabs(this.tabs);\n\n this._triggerRecalculationVisibleItems();\n this.closeTab.emit(tab.tab);\n\n if (!checkPopover) {\n return;\n }\n // Delay to ensure popover is recalculated.\n setTimeout(() => {\n // Popover has been removed, shift focus to the last item of the tab bar.\n if (popoverPresent && !this._tabBarPopover) {\n this._focusItem(this._lastVisibleTabIndex);\n }\n });\n }\n\n /** @hidden */\n _keyDownHandler(\n event: KeyboardEvent,\n tab: IconTabBarItem | undefined,\n currentIndex: number,\n popover?: TextTypePopoverComponent\n ): void {\n if (tab?.closable && KeyUtil.isKeyCode(event, [BACKSPACE, DELETE])) {\n event.preventDefault();\n this._closeTab(tab.uId);\n // Need to detect changes to trigger query list refresh.\n this._cd.detectChanges();\n\n // If last tab was closed, focus new last item, otherwhise set focus to the item that took place of removed one.\n const newFocusIndex = this.tabs.length - 1 < currentIndex ? this.tabs.length - 1 : currentIndex;\n\n this._focusItem(newFocusIndex);\n return;\n }\n super._keyDownHandler(event, tab, currentIndex, popover);\n }\n\n /**\n * @hidden\n * @param arr\n * @param parentUid\n * @description Update indexes, uIds, styles.\n */\n protected _updateTabs(arr: IconTabBarItem[], parentUid?: string, flatIndexRef = { value: 0 }): IconTabBarItem[] {\n return arr.map((item, index) => {\n item.index = index;\n item.uId = parentUid ? `${parentUid}${UNIQUE_KEY_SEPARATOR}${index}` : `${index}`;\n item.flatIndex = flatIndexRef.value++;\n item.parentUId = parentUid;\n if (!parentUid && item.color) {\n item.cssClasses = [`fd-icon-tab-bar__item--${item.color}`];\n }\n if (Array.isArray(item.subItems)) {\n item.subItems = this._updateTabs(item.subItems, item.uId, flatIndexRef);\n }\n return { ...item };\n });\n }\n\n /**\n * @hidden\n * @param uid\n * @param arr\n * @returns {parent, tab}\n * @description Get tab reference inside main tab array and reference to parent array.\n */\n protected _getTabInfoFromMainList(\n uid: string,\n arr: any[] = this.tabs\n ): { parent: IconTabBarItem[]; tab: IconTabBarItem } | undefined {\n let result: { parent: IconTabBarItem[]; tab: IconTabBarItem } | undefined;\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n if (item.uId === uid) {\n result = { parent: arr, tab: item };\n break;\n } else if (Array.isArray(item.subItems)) {\n result = this._getTabInfoFromMainList(uid, item.subItems);\n if (result) {\n break;\n }\n }\n }\n return result;\n }\n}\n","import { BACKSPACE, DELETE, DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { PopoverComponent } from '@fundamental-ngx/core/popover';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from '../../interfaces/tab-color-associations.interface';\n\n@Directive()\nexport abstract class IconTabBarPopoverBase implements OnChanges {\n /** @hidden list of tab html elements, that can receive focus. Each item should have \"data-flatIndex\" attribute */\n abstract _tabExtraUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /**\n * @description Flag representing rtl mode\n */\n @Input()\n isRtl: boolean;\n\n /**\n * @description Reference to PopoverComponent\n */\n @ViewChild('popover')\n popover: PopoverComponent;\n\n /**\n * @description Sub items array\n */\n @Input()\n extraTabs: IconTabBarItem[];\n\n /**\n * @description Should we show separator between subItems\n */\n @Input()\n isSeparators = false;\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n @Input()\n colorAssociations: TabColorAssociations;\n\n /**\n * @description Emits when some tab is selected.\n */\n @Output()\n selectedExtraItem: EventEmitter<IconTabBarItem> = new EventEmitter<IconTabBarItem>();\n\n /** @description Emits when popover is closed and focus should be applied to first visible tab */\n @Output()\n focusFirstVisibleItem: EventEmitter<void> = new EventEmitter<void>();\n\n /** @description Emits when popover is closed and focus should be applied to last visible tab */\n @Output()\n focusLastVisibleItem: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emits when user clicks on x button in tab. */\n @Output()\n closeTab = new EventEmitter<string>();\n\n /**\n * @hidden\n * @description state of popover\n */\n _isOpen = false;\n\n /** @hidden */\n constructor(protected _cd: ChangeDetectorRef) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.extraTabs) {\n this._setStyles(this.extraTabs);\n }\n }\n\n /**\n * @hidden\n * @param focusLast whether to focus first or last item in the popover\n */\n _openPopover(focusLast = false): void {\n if (!this._isOpen) {\n this.popover.open();\n }\n if (focusLast) {\n this._tabExtraUIElements.get(this._tabExtraUIElements.length - 1)?.nativeElement.focus();\n }\n }\n\n /** @hidden */\n _focusPreviousPopoverItem(currentIndex: number): void {\n if (currentIndex === 0) {\n this.popover.close();\n this.focusLastVisibleItem.emit();\n } else {\n this._focusPopoverItem(currentIndex - 1);\n }\n }\n\n /** @hidden */\n _focusNextPopoverItem(currentIndex: number): void {\n if (currentIndex === this._tabExtraUIElements.length - 1) {\n this.popover.close();\n this.focusFirstVisibleItem.emit();\n } else {\n this._focusPopoverItem(currentIndex + 1);\n }\n }\n\n /** @hidden */\n _focusPopoverItem(index: number): void {\n const ordered = this._getOrderedTabExtraUIElements();\n ordered[index]?.focus();\n }\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this.selectedExtraItem.emit(selectedItem);\n this.popover.close();\n }\n\n /** @hidden */\n _keyDownHandler(event: KeyboardEvent, tab: IconTabBarItem, currentIndex: number): void {\n if (tab?.closable && KeyUtil.isKeyCode(event, [BACKSPACE, DELETE])) {\n event.preventDefault();\n this.closeTab.emit(tab.uId);\n this._focusPopoverItem(currentIndex);\n } else if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n event.preventDefault();\n this._selectItem(tab);\n } else if (KeyUtil.isKeyCode(event, [RIGHT_ARROW, DOWN_ARROW])) {\n event.preventDefault();\n this.isRtl ? this._focusPreviousPopoverItem(currentIndex) : this._focusNextPopoverItem(currentIndex);\n } else if (KeyUtil.isKeyCode(event, [LEFT_ARROW, UP_ARROW])) {\n event.preventDefault();\n this.isRtl ? this._focusNextPopoverItem(currentIndex) : this._focusPreviousPopoverItem(currentIndex);\n }\n }\n\n /**\n * @hidden\n * @description Generate styles for subItems\n */\n protected _setStyles(items: IconTabBarItem[]): void {\n items.forEach((item) => {\n if (item.color) {\n item.cssClasses = [`fd-icon-tab-bar__list-item--${item.color}`];\n }\n if (Array.isArray(item.subItems)) {\n this._setStyles(item.subItems);\n }\n });\n }\n\n /** @hidden */\n private _getOrderedTabExtraUIElements(): HTMLElement[] {\n return this._tabExtraUIElements\n .toArray()\n .map((e) => ({\n flatIndex: parseInt(e.nativeElement.getAttribute('data-flatIndex')!, 10),\n nativeElement: e.nativeElement\n }))\n .sort(({ flatIndex: aFlatIndex }, { flatIndex: bFlatIndex }) => aFlatIndex - bFlatIndex)\n .map(({ nativeElement }) => nativeElement);\n }\n}\n","import { NgClass } from '@angular/common';\nimport { Component, ElementRef, Input, QueryList, ViewChildren } from '@angular/core';\nimport { AsyncOrSyncPipe } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { IconTabBarPopoverBase } from '../icon-tab-bar-popover-base.class';\n\n@Component({\n selector: 'fdp-icon-tab-bar-popover',\n templateUrl: './icon-tab-bar-popover.component.html',\n standalone: true,\n imports: [\n PopoverComponent,\n PopoverControlComponent,\n PopoverBodyComponent,\n IconComponent,\n NgClass,\n ButtonComponent,\n AsyncOrSyncPipe\n ]\n})\nexport class IconTabBarPopoverComponent extends IconTabBarPopoverBase {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabExtraUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /**\n * @description Flag representing position inside container left/right\n */\n @Input()\n leftSide = false;\n\n /**\n * @description Label for button\n */\n @Input()\n label = 'more';\n\n /** Whether to display labels for tab items */\n @Input()\n showItemLabel: boolean;\n}\n","<fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\" tabindex=\"-1\">\n <span class=\"fd-icon-tab-bar__overflow-text\">{{ label }}</span>\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\" role=\"list\">\n @for (item of extraTabs; track item.uId; let idx = $index) {\n @if (isSeparators) {\n <li tabindex=\"-1\" class=\"fd-icon-tab-bar__icon-separator\">\n <fd-icon glyph=\"process\"></fd-icon>\n </li>\n }\n <li\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n role=\"listitem\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n tabindex=\"0\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n <span class=\"fd-icon-tab-bar__list-item-icon-container\">\n <span class=\"fd-list__icon fd-icon-tab-bar__list-item-icon\">\n <fd-icon [glyph]=\"item.icon | fdkAsyncOrSync\"></fd-icon>\n </span>\n </span>\n @if (showItemLabel && (item.label | fdkAsyncOrSync)) {\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{\n item.label | fdkAsyncOrSync\n }}</span>\n }\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.counter | fdkAsyncOrSync; as itemCounter) {\n <span class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\"\n >({{ itemCounter }})\n </span>\n }\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[itemColor]) || itemColor }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n </ul>\n </fd-popover-body>\n</fd-popover>\n","import { SlicePipe } from '@angular/common';\nimport { Component, ElementRef, Input, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { AsyncOrSyncPipe, OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { IconTabBarPopoverComponent } from '../popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\n\n@Component({\n selector: 'fdp-icon-tab-bar-filter-type',\n templateUrl: './icon-tab-bar-filter-type.component.html',\n standalone: true,\n providers: [\n {\n provide: IconTabBarBase,\n useExisting: IconTabBarFilterTypeComponent\n }\n ],\n imports: [\n OverflowListDirective,\n OverflowListItemDirective,\n IconComponent,\n IconTabBarPopoverComponent,\n SlicePipe,\n ButtonComponent,\n AsyncOrSyncPipe\n ]\n})\nexport class IconTabBarFilterTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** @hidden */\n @ViewChild(IconTabBarPopoverComponent) _tabBarPopover: IconTabBarPopoverComponent;\n\n /**\n * @description Boolean flag indicating to show total tab\n */\n @Input()\n showTotalTab = true;\n\n /** @hidden */\n _totalTab?: IconTabBarItem;\n\n /**\n * @hidden\n * @description initialize state of tabs\n */\n protected _initTabs(): void {\n super._initTabs();\n this._totalTab = this.showTotalTab ? this.tabs[0] : undefined;\n }\n}\n","<ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n #tablist\n [overflowOffset]=\"100\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n>\n @if (showTotalTab) {\n <li class=\"fd-icon-tab-bar__item\" role=\"presentation\" fdkOverflowListItem>\n <a\n (click)=\"_totalTab && _selectItem(_totalTab)\"\n (keydown)=\"_keyDownHandler($event, _totalTab, 0)\"\n [attr.aria-selected]=\"_totalTab?.uId === selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n tabindex=\"0\"\n #tabItem\n role=\"tab\"\n >\n <div class=\"fd-icon-tab-bar__container fd-icon-tab-bar__container--filter\">\n @if (_totalTab?.counter) {\n <span class=\"fd-icon-tab-bar__filter-counter\">{{ _totalTab?.counter }}</span>\n }\n <span class=\"fd-icon-tab-bar__filter-label\">{{ _totalTab?.label | fdkAsyncOrSync }}</span>\n </div>\n </a>\n </li>\n }\n @for (item of tabs | slice: 1; track item.uId; let idx = $index) {\n <li\n [class]=\"item.cssClasses\"\n class=\"fd-icon-tab-bar__item\"\n role=\"presentation\"\n fdkOverflowListItem\n [attr.aria-hidden]=\"item.hidden\"\n >\n <a\n (click)=\"_selectItem(item)\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n [attr.tabindex]=\"showTotalTab ? -1 : idx > 0 ? -1 : 0\"\n (keydown)=\"_keyDownHandler($event, item, idx + (showTotalTab ? 1 : 0))\"\n role=\"tab\"\n >\n <div class=\"fd-icon-tab-bar__container\">\n <span class=\"fd-icon-tab-bar__icon\">\n <fd-icon [glyph]=\"item.icon\"></fd-icon>\n </span>\n @if (item.counter) {\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n }\n </div>\n <div class=\"fd-icon-tab-bar__label\">{{ item.label | fdkAsyncOrSync }}</div>\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[itemColor]) || itemColor }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraItems$()) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-icon-tab-bar-popover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs$()\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event, true)\"\n ></fdp-icon-tab-bar-popover>\n </li>\n }\n</ul>\n","import { NgClass } from '@angular/common';\nimport { Component, ElementRef, Input, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { AsyncOrSyncPipe, OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent } from '@fundamental-ngx/core/icon';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { IconTabBarPopoverComponent } from '../popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\n\n@Component({\n selector: 'fdp-icon-tab-bar-icon-type',\n templateUrl: './icon-tab-bar-icon-type.component.html',\n standalone: true,\n providers: [\n {\n provide: IconTabBarBase,\n useExisting: IconTabBarIconTypeComponent\n }\n ],\n imports: [\n OverflowListDirective,\n OverflowListItemDirective,\n NgClass,\n IconComponent,\n ButtonComponent,\n IconTabBarPopoverComponent,\n AsyncOrSyncPipe\n ]\n})\nexport class IconTabBarIconTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** @hidden */\n @ViewChild(IconTabBarPopoverComponent) _tabBarPopover: IconTabBarPopoverComponent;\n\n /** Whether to display labels for tab items */\n @Input()\n showLabel: boolean;\n\n /** @hidden */\n readonly _defaultFontFamily = FD_DEFAULT_ICON_FONT_FAMILY;\n}\n","<ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n #tablist\n [overflowOffset]=\"100\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n>\n @for (item of tabs; track item.uId; let idx = $index) {\n <li\n [ngClass]=\"item.cssClasses\"\n [class.fd-icon-tab-bar__item--closable]=\"item.closable\"\n fdkOverflowListItem\n [attr.aria-hidden]=\"item.hidden\"\n class=\"fd-icon-tab-bar__item\"\n role=\"presentation\"\n >\n <a\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n role=\"tab\"\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n <div class=\"fd-icon-tab-bar__container\">\n <span class=\"fd-icon-tab-bar__icon\">\n <fd-icon [glyph]=\"item.icon\" [font]=\"item.iconFont || _defaultFontFamily\"></fd-icon>\n </span>\n @if (item.counter && (!item.label || !showLabel)) {\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n }\n </div>\n @if (showLabel && item.label) {\n <div class=\"fd-icon-tab-bar__details\">\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n <span class=\"fd-icon-tab-bar__label\">{{ item.label }}</span>\n </div>\n }\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[itemColor]) || itemColor }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraItems$()) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-icon-tab-bar-popover\n [showItemLabel]=\"showLabel\"\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs$()\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event, true)\"\n ></fdp-icon-tab-bar-popover>\n </li>\n }\n</ul>\n","import { Component, ElementRef, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { take } from 'rxjs/operators';\n\nimport { AsyncOrSyncPipe, OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { cloneDeep } from 'lodash-es';\nimport { ICON_TAB_HIDDEN_CLASS_NAME } from '../../constants';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { IconTabBarPopoverComponent } from '../popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\n\n@Component({\n selector: 'fdp-icon-tab-bar-process-type',\n templateUrl: './icon-tab-bar-process-type.component.html',\n standalone: true,\n providers: [\n {\n provide: IconTabBarBase,\n useExisting: IconTabBarProcessTypeComponent\n }\n ],\n imports: [\n OverflowListDirective,\n IconTabBarPopoverComponent,\n OverflowListItemDirective,\n IconComponent,\n ButtonComponent,\n AsyncOrSyncPipe\n ]\n})\nexport class IconTabBarProcessTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** @hidden */\n @ViewChild(IconTabBarPopoverComponent) _tabBarPopover: IconTabBarPopoverComponent;\n\n /** @hidden */\n _offsetOverflowDirective = 30;\n\n /**\n * @hidden\n * An array containing extra tabs for the next steps\n */\n _nextSteps: IconTabBarItem[] = [];\n\n /**\n * @hidden\n * An array containing extra tabs for the next steps\n */\n _prevSteps: IconTabBarItem[] = [];\n\n /** @hidden */\n _showLeftBtn = false;\n\n /** @hidden */\n _showRightBtn = false;\n\n /** @hidden */\n private _firstVisibleTabIndex = 0;\n\n /** @hidden */\n private _currentStepIndex = 0;\n\n /** @hidden */\n _anchorIndexForExtraBtnDirective: number;\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this._currentStepIndex = selectedItem.index;\n super._selectItem(selectedItem);\n }\n\n /**\n * @hidden\n * @param selectedItem\n * @description select extra item inside popover\n */\n async _selectExtraItem(selectedItem: IconTabBarItem): Promise<void> {\n this._currentStepIndex = selectedItem.index;\n let amountOfPreviousSteps;\n let amountOfNextSteps;\n // We have to cases (strategy) for overflow extra tabs.\n // 1) When user click on step inside previous steps popover\n // 2) When user click on step inside next steps popover\n let isPreviousStepsStrategy: boolean;\n if (this._currentStepIndex > this._lastVisibleTabIndex) {\n amountOfNextSteps = this._nextSteps.length - (this._currentStepIndex - this._lastVisibleTabIndex);\n this._showRightBtn = amountOfNextSteps > 0;\n this._showLeftBtn = true;\n isPreviousStepsStrategy = false;\n } else {\n amountOfPreviousSteps = this._prevSteps.length - (this._firstVisibleTabIndex - this._currentStepIndex);\n this._showRightBtn = true;\n isPreviousStepsStrategy = true;\n this._showLeftBtn = amountOfPreviousSteps > 0;\n }\n this._selectItem(selectedItem);\n\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n if (this.overflowDirective) {\n const extra = this.overflowDirective.getAmountOfExtraItems();\n isPreviousStepsStrategy\n ? this.recalculateItemsByPrevArr(extra, amountOfPreviousSteps)\n : this._recalculateItemsByNextArr(extra, amountOfNextSteps);\n this._cd.detectChanges();\n }\n });\n }\n\n /**\n * @hidden\n * @param extraItems\n * @description recalculate _nextSteps and _prevSteps array if we have extra items\n */\n _recalculateVisibleItems(extraItems: number): void {\n const amountOfPrevSteps = this._currentStepIndex > extraItems ? extraItems : this._currentStepIndex;\n this.recalculateItemsByPrevArr(extraItems, amountOfPrevSteps);\n }\n\n /** @hidden */\n private _clearExtraList(): void {\n this._nextSteps = [];\n this._prevSteps = [];\n this.tabs.forEach((item) => {\n item.hidden = false;\n item.cssClasses = item.cssClasses.filter((cssClass) => cssClass !== ICON_TAB_HIDDEN_CLASS_NAME);\n });\n }\n\n /**\n * @hidden\n * @param extraItems\n * @param amountOfNextSteps\n * @description We fill the array of the next steps to the selected tab,\n * based on this we generate the array of the previous steps if it is necessary\n */\n private _recalculateItemsByNextArr(extraItems: number, amountOfNextSteps: number): void {\n this._clearExtraList();\n if (!extraItems) {\n return;\n }\n const tabs = [...this.tabs];\n const visibleAmountOfItems = tabs.length - extraItems;\n for (let i = tabs.length - amountOfNextSteps; i < tabs.length; i++) {\n this._nextSteps.push(cloneDeep(tabs[i]));\n tabs[i].hidden = true;\n tabs[i].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n }\n\n this._showRightBtn = !!this._nextSteps.length;\n this._firstVisibleTabIndex = tabs.length - visibleAmountOfItems - this._nextSteps.length;\n this._lastVisibleTabIndex = tabs.length - amountOfNextSteps - 1;\n\n if (this._nextSteps.length === extraItems) {\n return;\n }\n\n let amountOfPrevSteps = extraItems - this._nextSteps.length;\n let nextIndex = this._firstVisibleTabIndex - 1;\n while (amountOfPrevSteps > 0) {\n this._prevSteps.push(cloneDeep(tabs[nextIndex]));\n tabs[nextIndex].hidden = true;\n tabs[nextIndex].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n\n --nextIndex;\n --amountOfPrevSteps;\n }\n // Added +1 for left button\n this._anchorIndexForExtraBtnDirective = this._prevSteps.length\n ? this._prevSteps.length + visibleAmountOfItems\n : this._prevSteps.length + visibleAmountOfItems - 1;\n\n this._showLeftBtn = !!this._prevSteps.length;\n this._cd.detectChanges();\n }\n\n /**\n * @hidden\n * @param extraItems\n * @param amountOfPreviousSteps\n * @description We fill the array of the previous steps to the selected tab,\n * based on this we generate the array of the next steps if it is necessary\n */\n private recalculateItemsByPrevArr(extraItems: number, amountOfPreviousSteps: number): void {\n this._clearExtraList();\n if (!extraItems) {\n return;\n }\n const tabs = [...this.tabs];\n const visibleAmountOfItems = tabs.length - extraItems;\n for (let i = amountOfPreviousSteps - 1; i >= 0; i--) {\n this._prevSteps.push(cloneDeep(tabs[i]));\n tabs[i].hidden = true;\n tabs[i].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n }\n\n this._firstVisibleTabIndex = this._prevSteps.length;\n this._lastVisibleTabIndex = this._prevSteps.length + visibleAmountOfItems - 1;\n this._showLeftBtn = !!this._prevSteps.length;\n\n if (this._prevSteps.length === extraItems) {\n this._showRightBtn = false;\n return;\n }\n\n let amountOfNextSteps = extraItems - this._prevSteps.length;\n let nextIndex = this._prevSteps.length ? this._prevSteps.length + visibleAmountOfItems : visibleAmountOfItems;\n while (amountOfNextSteps > 0) {\n this._nextSteps.push(cloneDeep(tabs[nextIndex]));\n tabs[nextIndex].hidden = true;\n tabs[nextIndex].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n\n ++nextIndex;\n --amountOfNextSteps;\n }\n // Add +1 for left btn\n this._anchorIndexForExtraBtnDirective = this._prevSteps.length\n ? this._prevSteps.length + visibleAmountOfItems\n : this._prevSteps.length + visibleAmountOfItems - 1;\n\n this._showRightBtn = !!this._nextSteps.length;\n this._offsetOverflowDirective = this._nextSteps.length ? 70 : 0;\n this._cd.detectChanges();\n }\n}\n","<ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n #tablist\n [class.fd-icon-tab-bar__header--left-offset]=\"_showLeftBtn\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"_offsetOverflowDirective\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n>\n @if (_showLeftBtn) {\n <li\n role=\"presentation\"\n class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow fd-icon-tab-bar__item--overflow-left\"\n >\n <fdp-icon-tab-bar-popover\n [extraTabs]=\"_prevSteps\"\n [label]=\"_prevSteps.length.toString()\"\n [isSeparators]=\"true\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n ></fdp-icon-tab-bar-popover>\n </li>\n }\n @for (item of tabs; track item.uId; let idx = $index) {\n <li\n [class]=\"item.cssClasses\"\n class=\"fd-icon-tab-bar__item\"\n role=\"presentation\"\n fdkOverflowListItem\n [attr.aria-hidden]=\"item.hidden\"\n >\n <a\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n role=\"tab\"\n >\n @if (item.icon) {\n <div class=\"fd-icon-tab-bar__container\">\n <span class=\"fd-icon-tab-bar__icon\">\n <fd-icon [glyph]=\"item.icon\"></fd-icon>\n </span>\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n </div>\n <div class=\"fd-icon-tab-bar__details\">\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n <span class=\"fd-icon-tab-bar__label\">{{ item.label | fdkAsyncOrSync }}</span>\n </div>\n } @else {\n <span class=\"fd-icon-tab-bar__tag\">{{ item.label | fdkAsyncOrSync }}</span>\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n }\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[itemColor]) || itemColor }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n @if (_lastVisibleTabIndex !== idx) {\n <span class=\"fd-icon-tab-bar__separator\">\n <fd-icon glyph=\"process\"></fd-icon>\n </span>\n }\n </li>\n }\n @if (_showRightBtn) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-icon-tab-bar-popover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_nextSteps\"\n [isSeparators]=\"true\"\n [label]=\"_nextSteps.length.toString()\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event, true)\"\n >\n </fdp-icon-tab-bar-popover>\n </li>\n }\n</ul>\n","import { DragRef, Point } from '@angular/cdk/drag-drop';\nimport { DestroyRef, Directive, ElementRef, EventEmitter, Input, Output, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FLIPPER_SIZE } from '../../constants';\nimport {\n ElementChord,\n IconTabBarDndItem,\n IconTabBarDndList,\n IconTabBarItem\n} from '../../interfaces/icon-tab-bar-item.interface';\n\nexport interface FdDnDEvent {\n draggableItem: IconTabBarItem;\n targetItem: IconTabBarItem;\n action: 'replace' | 'insert';\n}\n\n@Directive({\n selector: '[fdpIconBarDndContainer], [fdp-icon-bar-dnd-container]',\n standalone: true\n})\nexport class IconBarDndContainerDirective {\n /**\n * @description Defines if drag and drop feature should be enabled for list items\n */\n @Input()\n set draggable(draggable: boolean) {\n this._draggable = draggable;\n this._changeDraggableState(draggable);\n }\n\n /**\n * @description Event that is thrown, when the item is dropped\n */\n @Output()\n dropped = new EventEmitter<FdDnDEvent>();\n\n /** @hidden */\n private _dragRefItems: DragRef[] = [];\n\n /** @hidden */\n private dndItemDirectives: IconTabBarDndItem[] = [];\n\n /** @hidden */\n private _dndListDirectives: Set<IconTabBarDndList> = new Set<IconTabBarDndList>();\n\n /** @hidden */\n private _elementsCoordinates: ElementChord[];\n\n /** @hidden */\n private _virtualSeparatorsCoordinates: ElementChord[] = [];\n\n /** @hidden */\n private _closestItemIndex: number | null = null;\n\n /** @hidden */\n private _closestSeparatorIndex: number | null = null;\n\n /** @hidden */\n private _draggable = true;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor(public elementRef: ElementRef) {}\n\n /**\n * @description Method called, when element is started to be dragged\n */\n dragStart(): void {\n /** Counting all of the elements's chords */\n this._elementsCoordinates = this.dndItemDirectives.map((item: IconTabBarDndItem) =>\n item.getElementCoordinates()\n );\n this._generateVirtualSeparators();\n }\n\n /**\n * @param mousePosition\n * @description Method called, when the item is being moved by 1 px\n */\n onMove(mousePosition: Point): void {\n let newClosestIndex: number | null = null;\n let newClosestSeparatorIndex: number | null = null;\n\n this._elementsCoordinates.find((element, index) => {\n /** Check if element can be replaced */\n if (newClosestIndex !== index) {\n const isMouseOnElement = this._isMouseOnElement(element, mousePosition);\n if (isMouseOnElement) {\n newClosestIndex = index;\n return true;\n }\n }\n });\n\n if (newClosestIndex !== null && newClosestIndex === this._closestItemIndex) {\n return;\n }\n\n if (this._closestItemIndex !== newClosestIndex) {\n this.dndItemDirectives[this._closestItemIndex]?.toggleHoveredStyles();\n this.dndItemDirectives[this._closestSeparatorIndex!]?.toggleSeparatorStyles();\n }\n\n this._closestItemIndex = newClosestIndex;\n\n if (newClosestIndex !== null) {\n this._closestSeparatorIndex = null;\n this.dndItemDirectives[newClosestIndex].toggleHoveredStyles(true);\n return;\n }\n\n // If we aren't on tab then check separator element.\n this._virtualSeparatorsCoordinates.find((element, index) => {\n const isMouseOnFlipper = this._isMouseOnFlipper(element, mousePosition);\n if (isMouseOnFlipper) {\n newClosestSeparatorIndex = index;\n return true;\n }\n });\n\n if (newClosestSeparatorIndex !== null && newClosestSeparatorIndex === this._closestSeparatorIndex) {\n return;\n }\n\n if (this._closestSeparatorIndex !== newClosestSeparatorIndex) {\n this.dndItemDirectives[this._closestItemIndex!]?.toggleHoveredStyles();\n this.dndItemDirectives[this._closestSeparatorIndex]?.toggleSeparatorStyles();\n }\n\n this._closestSeparatorIndex = newClosestSeparatorIndex;\n\n if (newClosestSeparatorIndex !== null) {\n this._closestItemIndex = null;\n this.dndItemDirectives[newClosestSeparatorIndex].toggleSeparatorStyles(true);\n return;\n }\n }\n\n /**\n * @param dragDir\n * @description Method called, when element is released\n */\n dragEnd(dragDir: IconTabBarDndItem): void {\n if (this._closestSeparatorIndex || this._closestSeparatorIndex === 0) {\n this.dndItemDirectives[this._closestSeparatorIndex].toggleSeparatorStyles();\n this.dropped.emit({\n draggableItem: dragDir.dndItemData,\n targetItem: this.dndItemDirectives[this._closestSeparatorIndex].dndItemData,\n action: 'replace'\n });\n }\n if (this._closestItemIndex || this._closestItemIndex === 0) {\n this.dndItemDirectives[this._closestItemIndex].toggleHoveredStyles();\n this.dropped.emit({\n draggableItem: dragDir.dndItemData,\n targetItem: this.dndItemDirectives[this._closestItemIndex].dndItemData,\n action: 'insert'\n });\n }\n /** Reset */\n this._elementsCoordinates = [];\n this._virtualSeparatorsCoordinates = [];\n this._closestItemIndex = null;\n this._closestSeparatorIndex = null;\n }\n\n /**\n * @param dragItem\n * @description Register IconTabBarDndItem to current container\n */\n registerDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems.push(dragItem.dragRef);\n this.dndItemDirectives.push(dragItem);\n dragItem.moved.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((position: Point) => this.onMove(position));\n dragItem.started.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.dragStart());\n dragItem.released.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.dragEnd(dragItem));\n }\n\n /**\n * @param dragItem\n * @description Remove registered IconTabBarDndItem to current container\n */\n removeDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems = this._dragRefItems.filter((item) => item !== dragItem.dragRef);\n this.dndItemDirectives = this.dndItemDirectives.filter((item) => item !== dragItem);\n }\n\n /**\n * @param listDir\n * @description Register IconTabBarDndList to current container\n */\n registerDndList(listDir: IconTabBarDndList): void {\n this._dndListDirectives.add(listDir);\n listDir.changeDraggableState(this._draggable);\n }\n\n /**\n * @param listDir\n * @description Remove registered IconTabBarDndList to current container\n */\n removeDndList(listDir: IconTabBarDndList): void {\n this._dndListDirectives.delete(listDir);\n }\n\n /**\n * @description Generate virtual elements as separator between tabs\n */\n private _generateVirtualSeparators(): void {\n this._elementsCoordinates.forEach((item, index) => {\n const isVertical = this.dndItemDirectives[index].isVertical;\n this._virtualSeparatorsCoordinates.push({\n x: isVertical ? item.x : item.x - FLIPPER_SIZE.width,\n y: isVertical ? item.y + FLIPPER_SIZE.verticalHeight : item.y,\n width: isVertical ? item.width : FLIPPER_SIZE.width,\n height: isVertical ? FLIPPER_SIZE.verticalHeight : FLIPPER_SIZE.height\n });\n });\n }\n\n /** @hidden */\n private _changeDraggableState(draggable: boolean): void {\n for (const list of this._dndListDirectives) {\n list.changeDraggableState(draggable);\n }\n }\n\n /** @hidden */\n private _isMouseOnFlipper(element: ElementChord, mousePosition: Point): boolean {\n const startX = element.x;\n const endX = element.x + element.width;\n\n const startY = element.y;\n const endY = element.y + element.height;\n\n return _between(mousePosition.x, startX, endX) && _between(mousePosition.y, startY, endY);\n }\n\n /** @hidden */\n private _isMouseOnElement(element: ElementChord, mousePosition: Point, isVertical: boolean = false): boolean {\n const startX = element.x;\n const endX = element.x + element.width;\n\n const startY = isVertical ? element.y - FLIPPER_SIZE.verticalHeight / 2 : element.y;\n const endY = element.y + element.height - FLIPPER_SIZE.verticalHeight / 2;\n\n return _between(mousePosition.x, startX, endX) && _between(mousePosition.y, startY, endY);\n }\n}\n\n/** @hidden */\nfunction _between(x: number, min: number, max: number): boolean {\n return x >= min && x <= max;\n}\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, Input, OnDestroy, inject } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\n\nimport { DragDrop, DragRef, DropListRef } from '@angular/cdk/drag-drop';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { debounceTime } from 'rxjs/operators';\nimport { IconTabBarDndItem, IconTabBarDndList } from '../../interfaces/icon-tab-bar-item.interface';\nimport { IconBarDndContainerDirective } from './icon-bar-dnd-container.directive';\n\n@Directive({\n selector: '[fdpIconBarDndList], [fdp-icon-bar-dnd-list]',\n standalone: true\n})\nexport class IconBarDndListDirective implements IconTabBarDndList, AfterViewInit, OnDestroy {\n /**\n * @description Direction in which the list is oriented.\n */\n @Input()\n dndOrientation: 'horizontal' | 'vertical' = 'vertical';\n\n /**\n * @description Is disabled autoscroll inside draggable list\n */\n @Input()\n dndAutoScroll = true;\n\n /** @hidden */\n private _dropListRef: DropListRef;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _dragRefItems: DragRef[] = [];\n\n /** @hidden */\n private readonly _dndItems$ = new ReplaySubject<void>(1);\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n private _dragDrop: DragDrop,\n private _dndContainer: IconBarDndContainerDirective\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._dropListRef = this._dragDrop.createDropList(this.elementRef.nativeElement);\n this._dropListRef.sortingDisabled = true;\n this._dropListRef.autoScrollDisabled = this.dndAutoScroll;\n this._dropListRef.disabled = true;\n this._dropListRef.withOrientation(this.dndOrientation);\n\n this._dndContainer.registerDndList(this);\n\n this._dndItems$\n .pipe(debounceTime(100), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._dropListRef.withItems(this._dragRefItems));\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._dropListRef.dispose();\n this._dndContainer.removeDndList(this);\n }\n\n /**\n * @param dragItem\n * @description Register IconTabBarDndItem to current list\n */\n registerDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems.push(dragItem.dragRef);\n this._dndItems$.next();\n }\n\n /**\n * @param dragItem\n * @description Remove registered IconTabBarDndItem to current list\n */\n removeDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems = this._dragRefItems.filter((item) => item !== dragItem.dragRef);\n this._dndItems$.next();\n }\n\n /**\n * @param draggable\n */\n changeDraggableState(draggable: boolean): void {\n this._dropListRef.disabled = !draggable;\n }\n}\n","import { DragDrop, DragRef, Point } from '@angular/cdk/drag-drop';\nimport { AfterViewInit, DestroyRef, Directive, ElementRef, Input, OnDestroy, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ElementChord, IconTabBarDndItem, IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { IconBarDndContainerDirective } from './icon-bar-dnd-container.directive';\nimport { IconBarDndListDirective } from './icon-bar-dnd-list.directive';\n\n@Directive({\n selector: '[fdpIconBarDndItem], [fdp-icon-bar-dnd-item]',\n standalone: true\n})\nexport class IconBarDndItemDirective implements IconTabBarDndItem, AfterViewInit, OnDestroy {\n /**\n * @description Tab info\n */\n @Input()\n dndItemData: IconTabBarItem;\n\n /**\n * @description Classes for draggable preview\n */\n @Input()\n previewClass: string[] = ['fd-icon-tab-bar__item--dnd-preview'];\n\n /**\n * @description Classes for hovered state\n */\n @Input()\n dndHoveredClass: string[] = ['fd-icon-tab-bar__item--dnd-hovered'];\n\n /**\n * @description Classes for separator, when draggable element between two tabs\n */\n @Input()\n dndSeparatorClass: string[] = [\n 'fd-icon-tab-bar__item--dnd-separator',\n 'fd-icon-tab-bar__item--dnd-separator-vertical'\n ];\n\n /**\n * @description Event thrown when the element is moved by 1px\n */\n readonly moved = new Subject<Point>();\n\n /**\n * @description Event thrown when the element is released\n */\n readonly released = new Subject<void>();\n\n /**\n * @description Event thrown when the element is started to be dragged\n */\n readonly started = new Subject<void>();\n\n /** @hidden */\n isVertical = false;\n\n /**\n * @hidden\n * @description Drag reference, object created from DND CDK Service\n */\n dragRef: DragRef;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n protected _dragDrop: DragDrop,\n private _dndListDir: IconBarDndListDirective,\n private _dndContainerDir: IconBarDndContainerDirective\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.isVertical = this._dndListDir?.dndOrientation === 'vertical';\n this._setCDKDrag();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._dndListDir.removeDragItem(this);\n this._dndContainerDir.removeDragItem(this);\n this.dragRef.dispose();\n }\n\n /** @hidden */\n onCdkDragStart(): void {\n /** Adds class */\n this.started.next();\n }\n\n /** @hidden */\n onCdkMove(position: Point): void {\n this.moved.next(position);\n }\n\n /** @hidden */\n onCdkDragReleased(): void {\n this.released.next();\n }\n\n /** @hidden */\n getElementCoordinates(): ElementChord {\n /** Takes distance from the beginning of window page */\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n\n /** Vertically distance is counted by distance from top of the side + half of the element height */\n return {\n x: rect.left,\n y: rect.top,\n width: rect.width,\n height: rect.height\n };\n }\n\n /**\n * @description Add/delete separator classes\n */\n toggleSeparatorStyles(force: boolean = false): void {\n force\n ? this.elementRef.nativeElement.classList.add(...this.dndSeparatorClass)\n : this.elementRef.nativeElement.classList.remove(...this.dndSeparatorClass);\n }\n\n /**\n * @description Add/delete hovered state classes\n */\n toggleHoveredStyles(force: boolean = false): void {\n force\n ? this.elementRef.nativeElement.classList.add(...this.dndHoveredClass)\n : this.elementRef.nativeElement.classList.remove(...this.dndHoveredClass);\n }\n\n /** @hidden */\n private _setCDKDrag(): void {\n this.dragRef = this._dragDrop.createDrag(this.elementRef);\n this.dragRef.previewClass = this.previewClass;\n\n this._dndListDir?.registerDragItem(this);\n this._dndContainerDir?.registerDragItem(this);\n\n this.dragRef.moved\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((event) => this.onCdkMove(event.pointerPosition));\n\n this.dragRef.released.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.onCdkDragReleased());\n\n this.dragRef.started.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.onCdkDragStart());\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { AsyncOrSyncPipe, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from '../../interfaces/tab-color-associations.interface';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdp-icon-tab-bar-text-type-tab-item]',\n standalone: true,\n imports: [AsyncOrSyncPipe],\n templateUrl: './icon-tab-bar-text-type-tab-item.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'fd-icon-tab-bar__tab',\n role: 'tab'\n }\n})\nexport class IconTabBarTextTypeTabItemComponent {\n /** Tab item. */\n @Input()\n item: Nullable<IconTabBarItem>;\n\n /**\n * @description Layout type for tab.\n */\n @Input()\n layoutMode: 'row' | 'column';\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n @Input()\n colorAssociations: TabColorAssociations;\n\n /** @hidden */\n get nativeElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /** @hiddem */\n private readonly _elementRef = inject(ElementRef);\n}\n","@if (layoutMode === 'row') {\n <span class=\"fd-icon-tab-bar__tag\">\n {{ item?.label | fdkAsyncOrSync }}\n @if (item?.counter | fdkAsyncOrSync; as itemCounter) {\n ({{ itemCounter }})\n }\n </span>\n} @else {\n <span class=\"fd-icon-tab-bar__counter\">{{ item?.counter }}</span>\n <span class=\"fd-icon-tab-bar__tag\">{{ item?.label | fdkAsyncOrSync }}</span>\n}\n@if (item?.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n}\n@if (item?.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[itemColor]) || itemColor }}\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewChildren\n} from '@angular/core';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport {\n PopoverBodyComponent,\n PopoverComponent,\n PopoverControlComponent,\n TriggerConfig\n} from '@fundamental-ngx/core/popover';\nimport { IconBarDndItemDirective } from '../../../directives/dnd/icon-bar-dnd-item.directive';\nimport { IconBarDndListDirective } from '../../../directives/dnd/icon-bar-dnd-list.directive';\nimport { IconTabBarItem } from '../../../interfaces/icon-tab-bar-item.interface';\nimport { IconTabBarTextTypeTabItemComponent } from '../../text-type-tab-item/icon-tab-bar-text-type-tab-item.component';\nimport { IconTabBarPopoverBase } from '../icon-tab-bar-popover-base.class';\n\n@Component({\n selector: 'fdp-text-type-popover',\n templateUrl: './text-type-popover.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n PopoverComponent,\n PopoverControlComponent,\n PopoverBodyComponent,\n IconBarDndListDirective,\n NgTemplateOutlet,\n IconBarDndItemDirective,\n NgClass,\n ButtonComponent,\n IconComponent,\n IconTabBarTextTypeTabItemComponent\n ]\n})\nexport class TextTypePopoverComponent extends IconTabBarPopoverBase implements OnChanges {\n /** @hidden reference for html element, that opens dropdown and can receive focus */\n @ViewChild('dropdownTrigger', { read: ElementRef }) _dropdownTrigger: ElementRef<HTMLElement>;\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem', { read: ElementRef }) _tabExtraUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** Whether to render item as a multi-click variant. */\n @Input()\n multiClick = false;\n\n /**\n * @description Layout type for tab.\n */\n @Input()\n layoutMode: 'row' | 'column';\n\n /**\n * @description Is extra items mode or subitems mode\n */\n @Input()\n isExtraItemsMode = false;\n\n /**\n * @description Parent tab need for subItems mode\n */\n @Input()\n parentTab: IconTabBarItem;\n\n /**\n * @description uId of selected subItem\n */\n @Input()\n selectedSubItemUid: Nullable<string>;\n\n /**\n * @description tabIndex of the particular item. Aplicable only for subitems mode\n */\n @Input()\n tabindex = -1;\n\n /**\n * @description Emits when some subTab is selected and isExtraItemsMode is disabled\n */\n @Output()\n selectedSubItem: EventEmitter<any> = new EventEmitter<any>();\n\n /** Emits when root item is being selected. Applicable for multi-click variant only. */\n @Output()\n selectedItem = new EventEmitter<void>();\n\n /** @hidden */\n _containsSelected = false;\n\n /** @hidden */\n _popoverTriggers: TriggerConfig[] = [\n { trigger: 'click', openAction: true, closeAction: true, stopPropagation: true }\n ];\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n if (!this.isExtraItemsMode && changes.parentTab && this.parentTab.subItems) {\n this._setStyles(this.parentTab.subItems);\n }\n if (changes.selectedSubItemUid) {\n this._calculateIfContainsSelected();\n }\n }\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this.isExtraItemsMode ? this.selectedExtraItem.emit(selectedItem) : this.selectedSubItem.emit(selectedItem);\n this.popover.close();\n }\n\n /** @hidden */\n _textPopoverKeyDownHandler(event: KeyboardEvent, tab: IconTabBarItem): void {\n // using relative index within popover (first popover tab should start from 0)\n const baseIndex = this.parentTab ? this.parentTab.flatIndex + 1 : this.extraTabs[0].flatIndex;\n const currentIndex = tab.flatIndex - baseIndex;\n super._keyDownHandler(event, tab, currentIndex);\n }\n\n /** @hidden */\n private _calculateIfContainsSelected(): void {\n this._containsSelected =\n (this.multiClick && this.parentTab.uId === this.selectedSubItemUid) ||\n (!!this.parentTab.subItems &&\n this._getChildren(this.parentTab.subItems).some(({ uId }) => uId === this.selectedSubItemUid));\n }\n\n /** @hidden */\n private _getChildren(items: IconTabBarItem[]): IconTabBarItem[] {\n return items.reduce((acc: IconTabBarItem[], item: IconTabBarItem) => {\n acc = acc.concat(item);\n if (item.subItems) {\n acc = acc.concat(this._getChildren(item.subItems));\n }\n return acc;\n }, []);\n }\n}\n","@if (isExtraItemsMode) {\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\" tabindex=\"-1\">\n <span class=\"fd-icon-tab-bar__overflow-text\">More</span>\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-template [ngTemplateOutletContext]=\"{ level: 1, items: extraTabs }\" [ngTemplateOutlet]=\"subItem\">\n </ng-template>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n@if (multiClick) {\n <a\n #dropdownTrigger\n fdp-icon-tab-bar-text-type-tab-item\n [item]=\"parentTab\"\n [attr.aria-selected]=\"_containsSelected\"\n [colorAssociations]=\"colorAssociations\"\n [layoutMode]=\"layoutMode\"\n [attr.tabindex]=\"tabindex\"\n (click)=\"selectedItem.emit()\"\n >\n </a>\n}\n@if (!isExtraItemsMode && parentTab && parentTab.subItems?.length) {\n <fd-popover\n [class.fd-icon-tab-bar__popover]=\"multiClick\"\n placement=\"bottom-end\"\n [focusAutoCapture]=\"true\"\n [triggers]=\"_popoverTriggers\"\n [focusTrapped]=\"true\"\n #popover\n >\n <fd-popover-control>\n @if (multiClick) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button fd-button fdType=\"transparent\" tabindex=\"-1\" class=\"fd-icon-tab-bar__button\">\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </button>\n </div>\n } @else {\n <a\n [attr.aria-selected]=\"_containsSelected\"\n class=\"fd-icon-tab-bar__tab\"\n role=\"tab\"\n [attr.tabindex]=\"tabindex\"\n #dropdownTrigger\n >\n <div class=\"fd-icon-tab-bar__tab-container\">\n <span class=\"fd-icon-tab-bar__tag\">{{ parentTab.label }}</span>\n <span class=\"fd-icon-tab-bar__arrow\">\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </span>\n @if (parentTab.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n </div>\n </a>\n }\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-container\n [ngTemplateOutletContext]=\"{ level: 1, items: parentTab.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n<ng-template #subItem let-items=\"items\" let-level=\"level\">\n @for (item of items; track item.uId) {\n <li\n [attr.aria-level]=\"level\"\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n fdpIconBarDndItem\n [dndItemData]=\"item\"\n role=\"listitem\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n tabindex=\"0\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n [attr.aria-selected]=\"item.uId === selectedSubItemUid\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_textPopoverKeyDownHandler($event, item)\"\n >\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.counter) {\n <span class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\">({{ item.counter }}) </span>\n }\n @if (item.color) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n @if (item.subItems?.length) {\n <ng-container\n [ngTemplateOutletContext]=\"{ level: level + 1, items: item.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n }\n }\n</ng-template>\n","import { Component, ElementRef, EventEmitter, Input, Output, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { AsyncOrSyncPipe, Nullable } from '@fundamental-ngx/cdk/utils';\n\nimport { NgClass } from '@angular/common';\nimport { OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { UNIQUE_KEY_SEPARATOR } from '../../constants';\nimport { FdDnDEvent, IconBarDndContainerDirective } from '../../directives/dnd/icon-bar-dnd-container.directive';\nimport { IconBarDndItemDirective } from '../../directives/dnd/icon-bar-dnd-item.directive';\nimport { IconBarDndListDirective } from '../../directives/dnd/icon-bar-dnd-list.directive';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { TextTypePopoverComponent } from '../popovers/text-type-popover/text-type-popover.component';\nimport { IconTabBarTextTypeTabItemComponent } from '../text-type-tab-item/icon-tab-bar-text-type-tab-item.component';\n\n/** @hidden */\ninterface DataForReordering {\n arr: IconTabBarItem[];\n item: IconTabBarItem;\n parentUid: string;\n}\n\n/** @hidden */\ntype TabItem = ElementRef<HTMLElement> | TextTypePopoverComponent;\n\n@Component({\n selector: 'fdp-icon-tab-bar-text-type',\n templateUrl: './icon-tab-bar-text-type.component.html',\n standalone: true,\n providers: [\n {\n provide: IconTabBarBase,\n useExisting: IconTabBarTextTypeComponent\n }\n ],\n imports: [\n IconBarDndContainerDirective,\n OverflowListDirective,\n IconBarDndListDirective,\n OverflowListItemDirective,\n IconBarDndItemDirective,\n NgClass,\n TextTypePopoverComponent,\n ButtonComponent,\n IconComponent,\n AsyncOrSyncPipe,\n IconTabBarTextTypeTabItemComponent\n ]\n})\nexport class IconTabBarTextTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<TabItem>;\n\n /** @hidden */\n @ViewChild('extraItemsPopover') _tabBarPopover: TextTypePopoverComponent;\n\n /**\n * @description Disable or enable reordering(drag and drop) feature.\n */\n @Input()\n enableTabReordering = false;\n\n /**\n * @description Layout type for tab.\n */\n @Input()\n layoutMode: 'row' | 'column';\n\n /** Whether to render icon tab item as multi-click variant. */\n @Input()\n multiClick = false;\n\n /**\n * @description Emits when user drops the tab.\n */\n @Output()\n reordered = new EventEmitter<IconTabBarItem[]>();\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectExtraItem(selectedItem: IconTabBarItem | undefined): void {\n // Check if the selected item is subItem\n // Then to find root tab, and pass it to the parent method.\n if (selectedItem?.uId.includes(UNIQUE_KEY_SEPARATOR)) {\n const rootTabUid = selectedItem.uId.split(UNIQUE_KEY_SEPARATOR)[0];\n selectedItem = this.tabs.find((tab) => tab.uId === rootTabUid);\n }\n if (!selectedItem) {\n return;\n }\n super._selectExtraItem(selectedItem);\n }\n\n /**\n * @hidden\n * @param draggableItem\n * @param targetItem\n * @param action\n */\n _onDropped(event: FdDnDEvent): void {\n if (!this._canDrop(event)) {\n return;\n }\n\n const replacedParsedUidArr = event.targetItem.uId.split(UNIQUE_KEY_SEPARATOR);\n replacedParsedUidArr.length = replacedParsedUidArr.length - 1;\n const draggableParsedUidArr = event.draggableItem.uId.split(UNIQUE_KEY_SEPARATOR);\n draggableParsedUidArr.length = draggableParsedUidArr.length - 1;\n\n const tabInfoForNewList = this._getTabInfoFromMainList(event.targetItem.uId);\n const tabInfoForPrevList = this._getTabInfoFromMainList(event.draggableItem.uId);\n\n if (!tabInfoForNewList || !tabInfoForPrevList) {\n return;\n }\n\n const dataForAction = {\n replacedItemInfo: {\n arr: tabInfoForNewList.parent,\n item: tabInfoForNewList.tab,\n parentUid: replacedParsedUidArr.length ? replacedParsedUidArr.join(UNIQUE_KEY_SEPARATOR) : ''\n },\n draggableItemInfo: {\n arr: tabInfoForPrevList.parent,\n item: tabInfoForPrevList.tab,\n parentUid: draggableParsedUidArr.length ? draggableParsedUidArr.join(UNIQUE_KEY_SEPARATOR) : ''\n }\n };\n\n event.action === 'replace' ? this._replaceAsSibling(dataForAction) : this._insertItemAsChild(dataForAction);\n\n this.reordered.emit(this.tabs);\n }\n\n /** @hidden */\n protected _getTabUIElementFocusable(tabUIElement: Nullable<TabItem>): Nullable<HTMLElement> {\n if (!tabUIElement) {\n return tabUIElement;\n }\n if (typeof tabUIElement === 'object' && 'nativeElement' in tabUIElement) {\n return tabUIElement.nativeElement;\n }\n return tabUIElement._dropdownTrigger.nativeElement;\n }\n\n /** @hidden */\n private _canDrop(event: FdDnDEvent): boolean {\n let parentUId: Nullable<string> =\n event.action === 'replace' ? event.targetItem.parentUId : event.targetItem.uId;\n while (parentUId) {\n if (parentUId === event.draggableItem.uId) {\n return false;\n }\n const nextSeparatorIdx = parentUId.lastIndexOf(UNIQUE_KEY_SEPARATOR);\n\n parentUId = nextSeparatorIdx > 0 ? parentUId.slice(0, nextSeparatorIdx) : null;\n }\n return true;\n }\n\n /**\n * @hidden\n * @param data\n * @description Insert tab into another tab.\n */\n private _insertItemAsChild(data: {\n replacedItemInfo: DataForReordering;\n draggableItemInfo: DataForReordering;\n }): void {\n const { replacedItemInfo, draggableItemInfo } = data;\n // Remove draggable tab from previous list\n draggableItemInfo.arr.splice(draggableItemInfo.item.index, 1);\n if (!replacedItemInfo.item.subItems?.length) {\n replacedItemInfo.item.subItems = [];\n }\n // Add tab to subitem of the target tab\n replacedItemInfo.item.subItems.push(draggableItemInfo.item);\n this.tabs = this._updateTabs(this.tabs);\n this._triggerRecalculationVisibleItems();\n }\n\n /**\n * @hidden\n * @param data\n * @description Insert tab between tabs\n */\n private _replaceAsSibling(data: {\n replacedItemInfo: DataForReordering;\n draggableItemInfo: DataForReordering;\n }): void {\n const { replacedItemInfo, draggableItemInfo } = data;\n draggableItemInfo.arr.splice(draggableItemInfo.item.index, 1);\n const newIndex = replacedItemInfo?.item?.index || 0;\n replacedItemInfo.arr.splice(newIndex, 0, draggableItemInfo.item);\n this.tabs = this._updateTabs(this.tabs);\n this._triggerRecalculationVisibleItems();\n }\n}\n","<ng-container fdpIconBarDndContainer [draggable]=\"enableTabReordering\" (dropped)=\"_onDropped($event)\">\n <ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n #tablist\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"100\"\n fdpIconBarDndList\n dndOrientation=\"horizontal\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n >\n @for (item of tabs; track item.uId; let idx = $index) {\n <li\n [ngClass]=\"item.cssClasses\"\n [class.fd-icon-tab-bar__item--multi-click]=\"multiClick && item.subItems?.length\"\n fdkOverflowListItem\n fdpIconBarDndItem\n [dndSeparatorClass]=\"['fd-icon-tab-bar__item--dnd-separator']\"\n [dndItemData]=\"item\"\n class=\"fd-icon-tab-bar__item\"\n [class.fd-icon-tab-bar__item--closable]=\"item.closable\"\n [attr.aria-hidden]=\"item.hidden\"\n role=\"presentation\"\n >\n @if (!item.subItems?.length && !multiClick) {\n <a\n #tabItem\n fdp-icon-tab-bar-text-type-tab-item\n [item]=\"item\"\n [layoutMode]=\"layoutMode\"\n [colorAssociations]=\"colorAssociations\"\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n (click)=\"_selectItem(item, $event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n </a>\n }\n @if (item.subItems?.length || multiClick) {\n <fdp-text-type-popover\n #tabItem\n #itemPopover\n [tabindex]=\"idx === 0 ? 0 : -1\"\n [parentTab]=\"item\"\n [layoutMode]=\"layoutMode\"\n [multiClick]=\"multiClick\"\n [selectedSubItemUid]=\"selectedUid\"\n [colorAssociations]=\"colorAssociations\"\n (selectedSubItem)=\"_selectItem($event)\"\n (keydown)=\"_keyDownHandler($event, item, idx, itemPopover)\"\n (closeTab)=\"_closeTab($event)\"\n (selectedItem)=\"_selectItem(item)\"\n >\n </fdp-text-type-popover>\n }\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraItems$()) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-text-type-popover\n #extraItemsPopover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs$()\"\n [isExtraItemsMode]=\"true\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event, true)\"\n >\n </fdp-text-type-popover>\n </li>\n }\n </ul>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n HostBinding,\n Input,\n QueryList,\n TemplateRef,\n ViewChild,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { HasElementRef, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconFont } from '@fundamental-ngx/core/icon';\nimport { TabConfig } from '../../interfaces/tab-config.interface';\nimport { SemanticColor } from '../../types';\n\nlet defaultIdIndex = 0;\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fdp-icon-tab-bar-tab-content',\n standalone: true\n})\nexport class IconTabBarTabContentDirective implements HasElementRef {\n /** Tab ID. */\n @HostBinding('attr.id')\n @Input()\n id: Nullable<string>;\n\n /** Tab Unique ID. */\n @Input()\n uId: Nullable<string>;\n\n /** Element reference. */\n readonly elementRef = inject(ElementRef);\n}\n\n@Component({\n selector: 'fdp-icon-tab-bar-tab',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './icon-tab-bar-tab.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IconTabBarTabComponent implements TabConfig {\n /** Tab Label. */\n @Input()\n label: Nullable<string>;\n\n /** Tab text color. */\n @Input()\n color: SemanticColor;\n\n /** Tab icon. */\n @Input()\n icon: string;\n\n /** Tab icon font family. */\n @Input()\n iconFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n /** Tab counter. */\n @Input()\n counter: number;\n\n /** whether the tab is selected */\n @Input({ transform: booleanAttribute })\n active = false;\n\n /** if set to true, will show red circle in top-right corner of tab */\n @Input({ transform: booleanAttribute })\n badge = false;\n\n /** Whether the tab can be closed. */\n @Input({ transform: booleanAttribute })\n closable = false;\n\n /** Tab ID. */\n @Input()\n id = `fdp-icon-tab-bar-tab-${defaultIdIndex++}`;\n\n /** Content renderer. */\n @ViewChild('renderer')\n readonly renderer: TemplateRef<any>;\n\n /** @hidden */\n @ContentChildren(IconTabBarTabComponent)\n readonly children: QueryList<IconTabBarTabComponent>;\n}\n","<ng-template #renderer>\n <ng-content></ng-content>\n</ng-template>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[fdpIconTabBarFreeContent]',\n standalone: true\n})\nexport class IconTabBarFreeContentDirective {}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Optional,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n inject,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ContentDensityService, Nullable, RtlService, scrollTop } from '@fundamental-ngx/cdk/utils';\nimport { FD_DYNAMIC_PAGE } from '@fundamental-ngx/core/dynamic-page';\nimport { IconFont } from '@fundamental-ngx/core/icon';\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 { fromEvent } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, first, startWith } from 'rxjs/operators';\nimport { IconTabBarBase } from './components';\nimport { IconTabBarFilterTypeComponent } from './components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component';\nimport { IconTabBarIconTypeComponent } from './components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component';\nimport { IconTabBarProcessTypeComponent } from './components/icon-tab-bar-process-type/icon-tab-bar-process-type.component';\nimport {\n IconTabBarTabComponent,\n IconTabBarTabContentDirective\n} from './components/icon-tab-bar-tab/icon-tab-bar-tab.component';\nimport { IconTabBarTextTypeComponent } from './components/icon-tab-bar-text-type/icon-tab-bar-text-type.component';\nimport { UNIQUE_KEY_SEPARATOR } from './constants';\nimport { IconTabBarItem } from './interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from './interfaces/tab-color-associations.interface';\nimport { TabConfig } from './interfaces/tab-config.interface';\nimport { IconTabBarBackground, IconTabBarSize, TabDestinyMode, TabType } from './types';\n\n@Component({\n selector: 'fdp-icon-tab-bar',\n templateUrl: './icon-tab-bar.component.html',\n styleUrl: './icon-tab-bar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n providers: [\n {\n provide: FD_TABLIST,\n useExisting: IconTabBarComponent\n }\n ],\n imports: [\n NgTemplateOutlet,\n IconTabBarProcessTypeComponent,\n IconTabBarFilterTypeComponent,\n IconTabBarIconTypeComponent,\n IconTabBarTextTypeComponent,\n ScrollbarDirective,\n ScrollSpyDirective,\n IconTabBarTabContentDirective\n ]\n})\nexport class IconTabBarComponent implements OnInit, AfterViewInit, TabList {\n /**\n * @description Type of tab bar view.\n */\n @Input()\n iconTabType: TabType = 'text';\n\n /**\n * @description A tab bar configuration that stores the state of each tab. Based on this configuration, a tab bar is representing.\n */\n @Input()\n set tabsConfig(value: TabConfig[]) {\n this._tabsConfig$.set(value);\n }\n\n get tabsConfig(): TabConfig[] {\n return this._tabsConfig$();\n }\n\n /**\n * @description Destiny mode.\n */\n @Input()\n densityMode: TabDestinyMode = 'inherit';\n\n /**\n * @description Icon font\n */\n @Input()\n iconTabFont: IconFont = 'SAP-icons';\n\n /**\n * @description Disable or enable reordering(drag and drop) feature. (supported by text type only)\n */\n @Input()\n enableTabReordering = false;\n\n /**\n * @description Boolean flag indicating to show total tab.(supported by filter type only)\n */\n @Input()\n showTotalTab = true;\n\n /** Whether to render icon tab item as multi-click variant. */\n @Input()\n multiClick = false;\n\n /**\n * @description Layout type for tab (supported by text type only)\n */\n @Input()\n layoutMode: 'row' | 'column' = 'row';\n\n /**\n * @description Icon tab bar background type.\n */\n @Input()\n iconTabBackground: IconTabBarBackground = 'solid';\n\n /**\n * @description Icon tab bar size.\n */\n @Input()\n iconTabSize: IconTabBarSize;\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n @Input()\n colorAssociations: TabColorAssociations;\n\n /**\n * Whether to open tab content one under another without collapsing.\n * Works only for content-projected tab content.\n */\n @Input({ transform: booleanAttribute })\n stackContent = false;\n\n /**\n * Maximum height of the content.\n * Works only for content-projected tab content.\n */\n @Input()\n maxContentHeight = '100%';\n\n /**\n * @description Emits when some tab is selected.\n */\n @Output()\n iconTabSelected = new EventEmitter<IconTabBarItem>();\n\n /**\n * @description Emits when user drop tab.\n */\n @Output()\n iconTabReordered = new EventEmitter<IconTabBarItem[]>();\n\n /** Event emitted when user clicks on x icon in tab. */\n @Output()\n closeTab = new EventEmitter<IconTabBarItem>();\n\n /** @hidden */\n @ContentChildren(IconTabBarTabComponent, { descendants: false })\n children: QueryList<IconTabBarTabComponent>;\n\n /** @hidden */\n @ContentChildren(IconTabBarTabComponent, { descendants: true })\n allChildren: QueryList<IconTabBarTabComponent>;\n\n /** @hidden */\n @ViewChild(ScrollbarDirective)\n _scrollbar: ScrollbarDirective;\n\n /** @hidden */\n @ViewChildren(IconTabBarTabContentDirective)\n tabDirectives: QueryList<IconTabBarTabContentDirective>;\n\n @HostBinding('class.fd-tabs-custom')\n private get _customTabs(): boolean {\n return this._inDynamicPahe;\n }\n\n @ViewChild(IconTabBarBase)\n private readonly _iconTabBarCmp: Nullable<IconTabBarBase>;\n\n /** @hidden */\n get headerContainer(): Nullable<ElementRef> {\n return this._iconTabBarCmp?.headerElement;\n }\n\n /** @hidden */\n _cssClassForContainer: string[];\n\n /** @hidden */\n _disableScrollSpy = false;\n\n /** @hidden */\n _init = true;\n\n /** Scrollable element reference. */\n get scrollableElement(): Nullable<ElementRef> {\n return this._scrollbar?.elementRef;\n }\n\n /** @hidden */\n readonly _selectedUid = signal<string | undefined>(undefined);\n\n /** @hidden */\n readonly _tabs$ = computed(() => this._generateTabBarItems(this._tabsConfig$()));\n\n /** @hidden */\n readonly _flatTabs$ = computed(() => this._generateFlatTabs(this._tabs$()));\n\n /** @hidden */\n readonly _tabRenderer$ = signal<IconTabBarItem | null>(null);\n\n /** @hidden */\n readonly _tabRenderers$ = signal<{ renderer: TemplateRef<any>; id: string }[]>([]);\n\n /** @hidden */\n readonly _rtl$ = computed(() => !!this._rtlService?.rtlSignal());\n\n /** @hidden */\n readonly _tabsConfig$ = signal<TabConfig[]>([]);\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n private readonly _inDynamicPahe = !!inject(FD_DYNAMIC_PAGE, { optional: true });\n\n /** @hidden */\n constructor(\n private _cd: ChangeDetectorRef,\n @Optional() private _contentDensityService: ContentDensityService,\n @Optional() private _rtlService: RtlService\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._cssClassForContainer = this._generateContainerStyles();\n\n if (this.densityMode === 'inherit') {\n this._contentDensityService?._contentDensityListener\n .pipe(distinctUntilChanged(), takeUntilDestroyed(this._destroyRef))\n .subscribe((density) => {\n this.densityMode = density;\n if (density !== 'compact') {\n this._cssClassForContainer = this._cssClassForContainer.filter(\n (cssClass) => cssClass !== 'fd-icon-tab-bar--compact'\n );\n } else {\n this._cssClassForContainer.push('fd-icon-tab-bar--compact');\n }\n this._cd.detectChanges();\n });\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.children.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n const projectedTabs = this.children.toArray();\n\n if (projectedTabs.length === 0) {\n return;\n }\n\n this.tabsConfig = projectedTabs.map((t) => this._generateTabConfig(t));\n this._cd.detectChanges();\n });\n\n this.allChildren.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._tabRenderers$.set(\n this.allChildren.map((c) => ({\n renderer: c.renderer,\n id: c.id\n }))\n );\n });\n }\n\n /**\n * @hidden\n * @param event reordered array of IconTabBarItem\n */\n _onReorder(event: IconTabBarItem[]): void {\n this.iconTabReordered.emit(event);\n }\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this._tabRenderer$.set(selectedItem);\n this.iconTabSelected.emit(selectedItem);\n\n if (this.stackContent) {\n this._scrollToPanel(this.tabDirectives.find((tab) => tab.uId === selectedItem.uId)!);\n }\n }\n\n /** @hidden */\n _closeTab(item: IconTabBarItem): void {\n this.closeTab.emit(item);\n }\n\n /** Programmatically select tab. */\n selectTab(id: Nullable<string>): void {\n const selectedItem = this._flatTabs$().find((t) => t.id === id);\n if (!selectedItem) {\n return;\n }\n this._selectedUid.set(selectedItem.uId);\n this._selectItem(selectedItem);\n this._cd.detectChanges();\n }\n\n /** @hidden */\n highlightActiveTab(id: Nullable<string>, scroll = false): void {\n if (this._disableScrollSpy) {\n return;\n }\n const activeTab = this.tabDirectives.find((tab) => tab.id === id);\n this._selectedUid.set(activeTab?.uId || undefined);\n if (scroll && activeTab) {\n this._scrollToPanel(activeTab);\n }\n }\n\n /**\n * @hidden\n * @returns array of css classes for icon-tab-bar container\n */\n private _generateContainerStyles(): string[] {\n const styles = [`fd-icon-tab-bar--${this.iconTabType}`];\n if (this.iconTabType === 'process' && this.tabsConfig[0].icon) {\n styles.push('fd-icon-tab-bar--icon');\n }\n if (this.iconTabBackground !== 'solid') {\n styles.push(`fd-icon-tab-bar--${this.iconTabBackground}`);\n }\n if (this.iconTabSize) {\n styles.push(`fd-icon-tab-bar--${this.iconTabSize}`);\n }\n if (this.densityMode === 'compact') {\n styles.push('fd-icon-tab-bar--compact');\n }\n if (this.layoutMode === 'column') {\n styles.push('fd-icon-tab-bar--counters');\n }\n return styles;\n }\n\n private _generateTabConfig(tab: IconTabBarTabComponent): TabConfig {\n const tabConfig: TabConfig = {\n label: tab.label,\n color: tab.color,\n active: tab.active,\n counter: tab.counter,\n renderer: tab.renderer,\n id: tab.id,\n subItems: tab.children.map((c) => this._generateTabConfig(c))\n };\n\n return tabConfig;\n }\n\n /** @hidden */\n private _scrollToPanel(tabPanel: Nullable<IconTabBarTabContentDirective>): void {\n if (!tabPanel) {\n return;\n }\n const panelElement = tabPanel.elementRef.nativeElement;\n const containerElement = this._scrollbar.elementRef.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._disableScrollSpy = true;\n fromEvent(containerElement, 'scroll')\n .pipe(debounceTime(100), first(), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => (this._disableScrollSpy = false));\n scrollTop(containerElement, distanceToScroll);\n }\n }\n\n /**\n * @hidden\n * @description generate IconTabItems from TabConfig array\n */\n private _generateTabBarItems(\n config: TabConfig[],\n indexPrefix = '',\n flatIndexRef?: FlatIndex,\n parentUId?: string\n ): IconTabBarItem[] {\n flatIndexRef = flatIndexRef || { value: 0 };\n return config.map((item, index) => {\n const uId = `${indexPrefix}${index}`;\n const result: IconTabBarItem = {\n ...item,\n index,\n cssClasses: [],\n uId,\n hidden: false,\n parentUId,\n flatIndex: flatIndexRef!.value++,\n subItems: this._generateTabBarItems(\n item.subItems || [],\n `${uId}${UNIQUE_KEY_SEPARATOR}`,\n flatIndexRef,\n uId\n )\n };\n if (item.color) {\n result.cssClasses = [`fd-icon-tab-bar__item--${item.color}`];\n }\n return result;\n });\n }\n\n private _generateFlatTabs(tabs: IconTabBarItem[]): IconTabBarItem[] {\n const flatTabs = tabs.reduce((acc: IconTabBarItem[], tab) => {\n acc.push(tab);\n if (tab.subItems) {\n acc.push(...this._generateFlatTabs(tab.subItems));\n }\n return acc;\n }, []);\n\n return flatTabs;\n }\n}\n\n/** @hidden helper object that is used in tab generation functions to calculate their indexes not depending on level of nesting */\ninterface FlatIndex {\n value: number;\n}\n","<div class=\"fd-icon-tab-bar\" [class]=\"_cssClassForContainer\">\n @if (iconTabType === 'text') {\n <ng-template [ngTemplateOutlet]=\"textType\"></ng-template>\n }\n @if (iconTabType === 'icon' || iconTabType === 'icon-only') {\n <ng-template [ngTemplateOutlet]=\"iconType\"></ng-template>\n }\n @if (iconTabType === 'filter') {\n <ng-template [ngTemplateOutlet]=\"filterType\"></ng-template>\n }\n @if (iconTabType === 'process') {\n <ng-template [ngTemplateOutlet]=\"processType\"></ng-template>\n }\n <div\n class=\"fd-icon-tab-bar__content\"\n fd-scrollbar\n (spyChange)=\"highlightActiveTab($event.id)\"\n [scrollSpyDisabled]=\"!stackContent || _disableScrollSpy\"\n fdScrollSpy\n [trackedTags]=\"['fdp-icon-tab-bar-tab-content']\"\n [style.max-height]=\"maxContentHeight\"\n >\n @if (stackContent) {\n @for (tab of _flatTabs$(); track tab) {\n <fdp-icon-tab-bar-tab-content [id]=\"tab.id\" [uId]=\"tab.uId\" class=\"fd-icon-tab-bar__tab-content\">\n <ng-template [ngTemplateOutlet]=\"tab.renderer || null\"></ng-template>\n </fdp-icon-tab-bar-tab-content>\n }\n } @else {\n @if (_tabRenderer$(); as tabRenderer) {\n <fdp-icon-tab-bar-tab-content\n [id]=\"tabRenderer.id\"\n [uId]=\"tabRenderer.uId\"\n class=\"fd-icon-tab-bar__tab-content\"\n >\n <ng-template [ngTemplateOutlet]=\"tabRenderer.renderer || null\"></ng-template>\n </fdp-icon-tab-bar-tab-content>\n }\n }\n <ng-content select=\"[fdpIconTabBarFreeContent]\"></ng-content>\n </div>\n</div>\n<ng-template #processType>\n <fdp-icon-tab-bar-process-type\n [tabs]=\"_tabs$()\"\n [isRtl]=\"_rtl$()\"\n [selectedUid]=\"_selectedUid()\"\n (selectedUidChange)=\"_selectedUid.set($event)\"\n [densityMode]=\"densityMode\"\n [colorAssociations]=\"colorAssociations\"\n (selected)=\"_selectItem($event)\"\n ></fdp-icon-tab-bar-process-type>\n</ng-template>\n<ng-template #filterType>\n <fdp-icon-tab-bar-filter-type\n [tabs]=\"_tabs$()\"\n [showTotalTab]=\"showTotalTab\"\n [isRtl]=\"_rtl$()\"\n [selectedUid]=\"_selectedUid()\"\n (selectedUidChange)=\"_selectedUid.set($event)\"\n [densityMode]=\"densityMode\"\n [colorAssociations]=\"colorAssociations\"\n (selected)=\"_selectItem($event)\"\n ></fdp-icon-tab-bar-filter-type>\n</ng-template>\n<ng-template #iconType>\n <fdp-icon-tab-bar-icon-type\n [showLabel]=\"iconTabType === 'icon'\"\n [tabs]=\"_tabs$()\"\n [isRtl]=\"_rtl$()\"\n [selectedUid]=\"_selectedUid()\"\n (selectedUidChange)=\"_selectedUid.set($event)\"\n [densityMode]=\"densityMode\"\n [colorAssociations]=\"colorAssociations\"\n (selected)=\"_selectItem($event)\"\n (closeTab)=\"_closeTab($event)\"\n ></fdp-icon-tab-bar-icon-type>\n</ng-template>\n<ng-template #textType>\n <fdp-icon-tab-bar-text-type\n [tabs]=\"_tabs$()\"\n [multiClick]=\"multiClick\"\n [layoutMode]=\"layoutMode\"\n [isRtl]=\"_rtl$()\"\n [selectedUid]=\"_selectedUid()\"\n (selectedUidChange)=\"_selectedUid.set($event)\"\n [densityMode]=\"densityMode\"\n [enableTabReordering]=\"enableTabReordering\"\n [colorAssociations]=\"colorAssociations\"\n (reordered)=\"_onReorder($event)\"\n (selected)=\"_selectItem($event)\"\n (closeTab)=\"_closeTab($event)\"\n ></fdp-icon-tab-bar-text-type>\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { IconTabBarFilterTypeComponent } from './components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component';\nimport { IconTabBarIconTypeComponent } from './components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component';\nimport { IconTabBarProcessTypeComponent } from './components/icon-tab-bar-process-type/icon-tab-bar-process-type.component';\nimport { IconTabBarTabComponent } from './components/icon-tab-bar-tab/icon-tab-bar-tab.component';\nimport { IconTabBarTextTypeComponent } from './components/icon-tab-bar-text-type/icon-tab-bar-text-type.component';\nimport { IconTabBarPopoverComponent } from './components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\nimport { TextTypePopoverComponent } from './components/popovers/text-type-popover/text-type-popover.component';\nimport { IconBarDndContainerDirective } from './directives/dnd/icon-bar-dnd-container.directive';\nimport { IconBarDndItemDirective } from './directives/dnd/icon-bar-dnd-item.directive';\nimport { IconBarDndListDirective } from './directives/dnd/icon-bar-dnd-list.directive';\nimport { IconTabBarFreeContentDirective } from './directives/icon-tab-bar-free-content.directive';\nimport { IconTabBarComponent } from './icon-tab-bar.component';\n\nconst components = [\n IconTabBarComponent,\n IconTabBarTextTypeComponent,\n IconTabBarIconTypeComponent,\n IconTabBarProcessTypeComponent,\n IconTabBarFilterTypeComponent,\n IconTabBarPopoverComponent,\n TextTypePopoverComponent,\n IconBarDndListDirective,\n IconBarDndItemDirective,\n IconBarDndContainerDirective,\n IconTabBarTabComponent,\n IconTabBarFreeContentDirective\n];\n\nexport const FDP_ICON_TAB_BAR = [IconTabBarComponent, IconTabBarTabComponent, IconTabBarFreeContentDirective] as const;\n\n/**\n * @deprecated\n * Import `IconTabBarComponent` directly instead.\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class PlatformIconTabBarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.IconBarDndContainerDirective","i2.IconBarDndListDirective","i3.IconBarDndContainerDirective","i1"],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-platform-icon-tab-bar.mjs","sources":["../../../../libs/platform/icon-tab-bar/constants.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-base.class.ts","../../../../libs/platform/icon-tab-bar/components/closable-icon-tab-bar.class.ts","../../../../libs/platform/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.ts","../../../../libs/platform/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.ts","../../../../libs/platform/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.html","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.html","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.html","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.html","../../../../libs/platform/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.ts","../../../../libs/platform/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.ts","../../../../libs/platform/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.ts","../../../../libs/platform/icon-tab-bar/components/text-type-tab-item/icon-tab-bar-text-type-tab-item.component.ts","../../../../libs/platform/icon-tab-bar/components/text-type-tab-item/icon-tab-bar-text-type-tab-item.component.html","../../../../libs/platform/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.ts","../../../../libs/platform/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.html","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.html","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-tab/icon-tab-bar-tab.component.ts","../../../../libs/platform/icon-tab-bar/components/icon-tab-bar-tab/icon-tab-bar-tab.component.html","../../../../libs/platform/icon-tab-bar/directives/icon-tab-bar-free-content.directive.ts","../../../../libs/platform/icon-tab-bar/icon-tab-bar.component.ts","../../../../libs/platform/icon-tab-bar/icon-tab-bar.component.html","../../../../libs/platform/icon-tab-bar/icon-tab-bar.module.ts","../../../../libs/platform/icon-tab-bar/fundamental-ngx-platform-icon-tab-bar.ts"],"sourcesContent":["export const UNIQUE_KEY_SEPARATOR = '.';\nexport const FLIPPER_SIZE = {\n width: 20,\n height: 44,\n verticalHeight: 20\n};\nexport const ICON_TAB_HIDDEN_CLASS_NAME = 'fd-icon-tab-bar__item--hidden';\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n DestroyRef,\n Directive,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n isDevMode,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n signal,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\n\nimport { DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KeyUtil, Nullable, OverflowListDirective } from '@fundamental-ngx/cdk/utils';\nimport { FD_DYNAMIC_PAGE } from '@fundamental-ngx/core/dynamic-page';\nimport { ICON_TAB_HIDDEN_CLASS_NAME } from '../constants';\nimport { IconTabBarItem } from '../interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from '../interfaces/tab-color-associations.interface';\nimport { TabDestinyMode } from '../types';\nimport { IconTabBarPopoverBase } from './popovers/icon-tab-bar-popover-base.class';\nimport { TextTypePopoverComponent } from './popovers/text-type-popover/text-type-popover.component';\n\n@Directive()\nexport abstract class IconTabBarBase implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n /**\n * @hidden\n * List of tab elements, that can receive focus.\n * There's a separate mapping function to get actual html element: `_getTabUIElementFocusable`\n */\n abstract _tabUIElements: QueryList<unknown>;\n /** @hidden */\n abstract _tabBarPopover: IconTabBarPopoverBase;\n /**\n * @description A tab bar configuration that stores the state of each tab. Based on this configuration, a tab bar is representing.\n */\n @Input()\n tabs: IconTabBarItem[] = [];\n\n /**\n * @description Flag representing rtl mode\n */\n @Input()\n isRtl: boolean;\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n @Input()\n colorAssociations: TabColorAssociations;\n\n /**\n * @description densityMode setter triggers tabs to re-calculation overflowed tabs\n */\n @Input()\n set densityMode(value: TabDestinyMode) {\n // Skip first value && value doesn't equal to previous one\n if (this._densityMode && value !== this._densityMode) {\n this._triggerRecalculationVisibleItems();\n }\n this._densityMode = value;\n }\n\n /** Currently selected tab Unique ID. */\n @Input()\n selectedUid: string | undefined;\n\n /**\n * @description Emits when some tab is selected.\n */\n @Output()\n selected: EventEmitter<IconTabBarItem> = new EventEmitter<IconTabBarItem>();\n\n /** Emits when selected tab Unique ID changes. */\n @Output()\n selectedUidChange = new EventEmitter<string | undefined>();\n\n /**\n * @description Reference to OverflowListDirective\n */\n @ViewChild(OverflowListDirective)\n overflowDirective: OverflowListDirective;\n\n /** Header element reference. */\n @ViewChild('tablist', { read: ElementRef })\n headerElement: ElementRef<HTMLElement>;\n\n /** @hidden */\n _extraTabs$ = signal<IconTabBarItem[]>([]);\n\n /** @hidden */\n _lastVisibleTabIndex: number;\n\n /** @hidden */\n _extraItems$ = signal(false);\n\n /** @hidden */\n readonly _inDynamicPage = !!inject(FD_DYNAMIC_PAGE, { optional: true });\n\n /** @hidden */\n protected readonly _cd = inject(ChangeDetectorRef);\n\n /** @Hidden */\n protected readonly _ngZone = inject(NgZone);\n\n /** @hidden */\n private _densityMode: TabDestinyMode;\n\n /** @hidden */\n private _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _destroyed = false;\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.tabs && !changes.tabs.firstChange) {\n this._initTabs();\n this._triggerRecalculationVisibleItems();\n return;\n }\n if (changes.isRtl && !changes.isRtl.firstChange) {\n this._triggerRecalculationVisibleItems();\n }\n\n if (changes.selectedUid && !changes.selectedUid.firstChange) {\n const isExtraTab = this._extraTabs$().find((tab) => tab.uId === this.selectedUid);\n if (isExtraTab) {\n this._selectExtraItem(isExtraTab);\n }\n }\n }\n\n /** @hidden */\n ngOnInit(): void {\n this._initTabs();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._triggerRecalculationVisibleItems();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._destroyed = true;\n }\n\n /**\n * @hidden\n * @param selectedItem\n * @param event\n */\n _selectItem(selectedItem: IconTabBarItem, event?: Event): void {\n event?.stopPropagation();\n this.selectedUid = selectedItem.uId;\n this.selectedUidChange.emit(this.selectedUid);\n selectedItem.badge = false;\n this.selected.emit(selectedItem);\n }\n\n /** @hidden */\n _keyDownHandler(\n event: KeyboardEvent,\n tab: IconTabBarItem | undefined,\n currentIndex: number,\n popover?: TextTypePopoverComponent\n ): void {\n if (tab && KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n event.preventDefault();\n this._selectItem(tab);\n } else if (KeyUtil.isKeyCode(event, [RIGHT_ARROW, DOWN_ARROW])) {\n event.preventDefault();\n if (KeyUtil.isKeyCode(event, DOWN_ARROW) && tab?.subItems?.length) {\n popover?._openPopover();\n return;\n }\n this.isRtl ? this._focusPreviousItem(currentIndex) : this._focusNextItem(currentIndex);\n } else if (KeyUtil.isKeyCode(event, [LEFT_ARROW, UP_ARROW])) {\n event.preventDefault();\n this.isRtl ? this._focusNextItem(currentIndex) : this._focusPreviousItem(currentIndex);\n }\n }\n\n /** @hidden focuses next tab */\n _focusNextItem(currentIndex: number): void {\n const nextIndex = currentIndex === this.tabs.length - 1 ? 0 : currentIndex + 1;\n this._focusItem(nextIndex);\n }\n\n /** @hidden focuses previous tab */\n _focusPreviousItem(currentIndex: number): void {\n if (currentIndex === 0) {\n // if current focused element is first, focus the last one. If tabs are overflowed, focus the last tab in the popover\n this._focusItem(this.tabs.length - 1, true);\n } else {\n this._focusItem(currentIndex - 1);\n }\n }\n\n /**\n * @hidden\n * @param tabIndex index of the tab to apply focus\n * @param focusLast whether to focus first or last item in the popover\n */\n _focusItem(tabIndex: number, focusLast = false): void {\n if (tabIndex > this._lastVisibleTabIndex) {\n this._tabBarPopover._openPopover(focusLast);\n } else {\n const itemToFocus = this._getTabUIElementFocusable(this._tabUIElements.get(tabIndex));\n itemToFocus?.focus();\n }\n }\n\n /**\n * @hidden\n * @param selectedItem\n * @description select extra item inside popover\n */\n _selectExtraItem(selectedItem: IconTabBarItem): void {\n const tabs = [...this.tabs];\n const deletedItem = tabs.splice(this._lastVisibleTabIndex, 1, selectedItem)[0] as IconTabBarItem;\n tabs.splice(selectedItem.index, 1, deletedItem);\n this.tabs = tabs;\n const extraTabs = [...this._extraTabs$()];\n\n deletedItem.index = selectedItem.index;\n deletedItem.uId = `${deletedItem.index}`;\n const itemToPopover = { ...deletedItem };\n deletedItem.hidden = true;\n deletedItem.cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n\n let indexInExtraItems;\n this._extraTabs$().forEach((item, index) => {\n if (item.index === selectedItem.index) {\n indexInExtraItems = index;\n }\n });\n\n selectedItem.index = this._lastVisibleTabIndex;\n selectedItem.uId = `${selectedItem.index}`;\n selectedItem.hidden = false;\n if (selectedItem.color) {\n selectedItem.cssClasses = [`fd-icon-tab-bar__item--${selectedItem.color}`];\n }\n extraTabs.splice(indexInExtraItems, 1, itemToPopover);\n this._extraTabs$.set(extraTabs);\n\n this._selectItem(selectedItem);\n this._triggerRecalculationVisibleItems();\n this._focusItem(this._lastVisibleTabIndex);\n }\n\n /**\n * @hidden\n * @param extraItems\n * @description recalculate _nextSteps and _prevSteps array if we have extra items\n */\n _recalculateVisibleItems(extraItems: number): void {\n this._extraItems$.set(extraItems > 0);\n this._cd.detectChanges();\n const tabs = [...this.tabs];\n const extraTabs: IconTabBarItem[] = [];\n this._lastVisibleTabIndex = tabs.length - 1 - extraItems;\n tabs.forEach((item) => {\n item.hidden = false;\n item.cssClasses = item.cssClasses.filter((cssClass) => cssClass !== ICON_TAB_HIDDEN_CLASS_NAME);\n });\n\n for (let i = this._lastVisibleTabIndex + 1; i < tabs.length; i++) {\n const tab = tabs[i];\n extraTabs.push({ ...tab });\n tab.hidden = true;\n tab.cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n }\n this._extraTabs$.set(extraTabs);\n this._cd.detectChanges();\n }\n\n /**\n * @hidden\n * Mapping function to resolve UI tab element to it's focusable part/descendant\n */\n protected _getTabUIElementFocusable(tabUIElement: unknown): Nullable<HTMLElement> {\n if (tabUIElement && typeof tabUIElement === 'object' && 'nativeElement' in tabUIElement) {\n if ((<ElementRef>tabUIElement).nativeElement instanceof HTMLElement) {\n return (<ElementRef<HTMLElement>>tabUIElement).nativeElement;\n }\n }\n if (isDevMode()) {\n console.warn('Failed to get focusable tab element');\n }\n return null;\n }\n\n /**\n * @hidden\n * @description trigger recalculation items, need to do it asynchronously after dom was rerendered\n */\n protected _triggerRecalculationVisibleItems(): void {\n this._ngZone.onMicrotaskEmpty.pipe(take(1), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n if (this.overflowDirective && !this._destroyed) {\n const extra = this.overflowDirective.getAmountOfExtraItems();\n this._recalculateVisibleItems(extra);\n this._cd.detectChanges();\n }\n });\n }\n\n /**\n * @hidden\n * @description initialize state of tabs\n */\n protected _initTabs(): void {\n const selectedItem = this._findActiveTabId(this.tabs) || this.tabs[0];\n this.selectedUid = selectedItem?.uId;\n this._lastVisibleTabIndex = this.tabs.length - 1;\n if (selectedItem) {\n this.selectedUidChange.emit(this.selectedUid);\n this.selected.emit(selectedItem);\n }\n }\n\n private _findActiveTabId(tabs: IconTabBarItem[]): IconTabBarItem | undefined {\n let activeTab: IconTabBarItem | undefined;\n for (const tab of tabs) {\n if (tab.active) {\n activeTab = tab;\n break;\n } else if (tab.subItems) {\n activeTab = this._findActiveTabId(tab.subItems);\n if (activeTab) {\n break;\n }\n }\n }\n\n return activeTab;\n }\n}\n","import { BACKSPACE, DELETE } from '@angular/cdk/keycodes';\nimport { Directive, EventEmitter, Output } from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { UNIQUE_KEY_SEPARATOR } from '../constants';\nimport { IconTabBarItem } from '../interfaces/icon-tab-bar-item.interface';\nimport { IconTabBarBase } from './icon-tab-bar-base.class';\nimport { IconTabBarPopoverBase } from './popovers/icon-tab-bar-popover-base.class';\nimport { TextTypePopoverComponent } from './popovers/text-type-popover/text-type-popover.component';\n\n@Directive()\nexport abstract class ClosableIconTabBar extends IconTabBarBase {\n abstract _tabBarPopover: IconTabBarPopoverBase;\n /**\n * Event emits when user clicks on x button in tab.\n */\n @Output()\n closeTab = new EventEmitter<IconTabBarItem>();\n\n /** @hidden */\n _closeTab(itemIndex: string, checkPopover = false): void {\n const popoverPresent = !!this._tabBarPopover;\n const tab = this._getTabInfoFromMainList(itemIndex);\n\n if (!tab?.parent) {\n return;\n }\n\n tab.parent.splice(\n tab.parent.findIndex((item) => item.uId === itemIndex),\n 1\n );\n\n this.tabs = this._updateTabs(this.tabs);\n\n this._triggerRecalculationVisibleItems();\n this.closeTab.emit(tab.tab);\n\n if (!checkPopover) {\n return;\n }\n // Delay to ensure popover is recalculated.\n setTimeout(() => {\n // Popover has been removed, shift focus to the last item of the tab bar.\n if (popoverPresent && !this._tabBarPopover) {\n this._focusItem(this._lastVisibleTabIndex);\n }\n });\n }\n\n /** @hidden */\n _keyDownHandler(\n event: KeyboardEvent,\n tab: IconTabBarItem | undefined,\n currentIndex: number,\n popover?: TextTypePopoverComponent\n ): void {\n if (tab?.closable && KeyUtil.isKeyCode(event, [BACKSPACE, DELETE])) {\n event.preventDefault();\n this._closeTab(tab.uId);\n // Need to detect changes to trigger query list refresh.\n this._cd.detectChanges();\n\n // If last tab was closed, focus new last item, otherwhise set focus to the item that took place of removed one.\n const newFocusIndex = this.tabs.length - 1 < currentIndex ? this.tabs.length - 1 : currentIndex;\n\n this._focusItem(newFocusIndex);\n return;\n }\n super._keyDownHandler(event, tab, currentIndex, popover);\n }\n\n /**\n * @hidden\n * @param arr\n * @param parentUid\n * @description Update indexes, uIds, styles.\n */\n protected _updateTabs(arr: IconTabBarItem[], parentUid?: string, flatIndexRef = { value: 0 }): IconTabBarItem[] {\n return arr.map((item, index) => {\n item.index = index;\n item.uId = parentUid ? `${parentUid}${UNIQUE_KEY_SEPARATOR}${index}` : `${index}`;\n item.flatIndex = flatIndexRef.value++;\n item.parentUId = parentUid;\n if (!parentUid && item.color) {\n item.cssClasses = [`fd-icon-tab-bar__item--${item.color}`];\n }\n if (Array.isArray(item.subItems)) {\n item.subItems = this._updateTabs(item.subItems, item.uId, flatIndexRef);\n }\n return { ...item };\n });\n }\n\n /**\n * @hidden\n * @param uid\n * @param arr\n * @returns {parent, tab}\n * @description Get tab reference inside main tab array and reference to parent array.\n */\n protected _getTabInfoFromMainList(\n uid: string,\n arr: any[] = this.tabs\n ): { parent: IconTabBarItem[]; tab: IconTabBarItem } | undefined {\n let result: { parent: IconTabBarItem[]; tab: IconTabBarItem } | undefined;\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n if (item.uId === uid) {\n result = { parent: arr, tab: item };\n break;\n } else if (Array.isArray(item.subItems)) {\n result = this._getTabInfoFromMainList(uid, item.subItems);\n if (result) {\n break;\n }\n }\n }\n return result;\n }\n}\n","import { BACKSPACE, DELETE, DOWN_ARROW, ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\nimport { PopoverComponent } from '@fundamental-ngx/core/popover';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from '../../interfaces/tab-color-associations.interface';\n\n@Directive()\nexport abstract class IconTabBarPopoverBase implements OnChanges {\n /** @hidden list of tab html elements, that can receive focus. Each item should have \"data-flatIndex\" attribute */\n abstract _tabExtraUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /**\n * @description Flag representing rtl mode\n */\n @Input()\n isRtl: boolean;\n\n /**\n * @description Reference to PopoverComponent\n */\n @ViewChild('popover')\n popover: PopoverComponent;\n\n /**\n * @description Sub items array\n */\n @Input()\n extraTabs: IconTabBarItem[];\n\n /**\n * @description Should we show separator between subItems\n */\n @Input()\n isSeparators = false;\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n @Input()\n colorAssociations: TabColorAssociations;\n\n /**\n * @description Emits when some tab is selected.\n */\n @Output()\n selectedExtraItem: EventEmitter<IconTabBarItem> = new EventEmitter<IconTabBarItem>();\n\n /** @description Emits when popover is closed and focus should be applied to first visible tab */\n @Output()\n focusFirstVisibleItem: EventEmitter<void> = new EventEmitter<void>();\n\n /** @description Emits when popover is closed and focus should be applied to last visible tab */\n @Output()\n focusLastVisibleItem: EventEmitter<void> = new EventEmitter<void>();\n\n /** Event emits when user clicks on x button in tab. */\n @Output()\n closeTab = new EventEmitter<string>();\n\n /**\n * @hidden\n * @description state of popover\n */\n _isOpen = false;\n\n /** @hidden */\n constructor(protected _cd: ChangeDetectorRef) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.extraTabs) {\n this._setStyles(this.extraTabs);\n }\n }\n\n /**\n * @hidden\n * @param focusLast whether to focus first or last item in the popover\n */\n _openPopover(focusLast = false): void {\n if (!this._isOpen) {\n this.popover.open();\n }\n if (focusLast) {\n this._tabExtraUIElements.get(this._tabExtraUIElements.length - 1)?.nativeElement.focus();\n }\n }\n\n /** @hidden */\n _focusPreviousPopoverItem(currentIndex: number): void {\n if (currentIndex === 0) {\n this.popover.close();\n this.focusLastVisibleItem.emit();\n } else {\n this._focusPopoverItem(currentIndex - 1);\n }\n }\n\n /** @hidden */\n _focusNextPopoverItem(currentIndex: number): void {\n if (currentIndex === this._tabExtraUIElements.length - 1) {\n this.popover.close();\n this.focusFirstVisibleItem.emit();\n } else {\n this._focusPopoverItem(currentIndex + 1);\n }\n }\n\n /** @hidden */\n _focusPopoverItem(index: number): void {\n const ordered = this._getOrderedTabExtraUIElements();\n ordered[index]?.focus();\n }\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this.selectedExtraItem.emit(selectedItem);\n this.popover.close();\n }\n\n /** @hidden */\n _keyDownHandler(event: KeyboardEvent, tab: IconTabBarItem, currentIndex: number): void {\n if (tab?.closable && KeyUtil.isKeyCode(event, [BACKSPACE, DELETE])) {\n event.preventDefault();\n this.closeTab.emit(tab.uId);\n this._focusPopoverItem(currentIndex);\n } else if (KeyUtil.isKeyCode(event, [SPACE, ENTER])) {\n event.preventDefault();\n this._selectItem(tab);\n } else if (KeyUtil.isKeyCode(event, [RIGHT_ARROW, DOWN_ARROW])) {\n event.preventDefault();\n this.isRtl ? this._focusPreviousPopoverItem(currentIndex) : this._focusNextPopoverItem(currentIndex);\n } else if (KeyUtil.isKeyCode(event, [LEFT_ARROW, UP_ARROW])) {\n event.preventDefault();\n this.isRtl ? this._focusNextPopoverItem(currentIndex) : this._focusPreviousPopoverItem(currentIndex);\n }\n }\n\n /**\n * @hidden\n * @description Generate styles for subItems\n */\n protected _setStyles(items: IconTabBarItem[]): void {\n items.forEach((item) => {\n if (item.color) {\n item.cssClasses = [`fd-icon-tab-bar__list-item--${item.color}`];\n }\n if (Array.isArray(item.subItems)) {\n this._setStyles(item.subItems);\n }\n });\n }\n\n /** @hidden */\n private _getOrderedTabExtraUIElements(): HTMLElement[] {\n return this._tabExtraUIElements\n .toArray()\n .map((e) => ({\n flatIndex: parseInt(e.nativeElement.getAttribute('data-flatIndex')!, 10),\n nativeElement: e.nativeElement\n }))\n .sort(({ flatIndex: aFlatIndex }, { flatIndex: bFlatIndex }) => aFlatIndex - bFlatIndex)\n .map(({ nativeElement }) => nativeElement);\n }\n}\n","import { NgClass } from '@angular/common';\nimport { Component, ElementRef, Input, QueryList, ViewChildren } from '@angular/core';\nimport { AsyncOrSyncPipe } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { PopoverBodyComponent, PopoverComponent, PopoverControlComponent } from '@fundamental-ngx/core/popover';\nimport { IconTabBarPopoverBase } from '../icon-tab-bar-popover-base.class';\n\n@Component({\n selector: 'fdp-icon-tab-bar-popover',\n templateUrl: './icon-tab-bar-popover.component.html',\n standalone: true,\n imports: [\n PopoverComponent,\n PopoverControlComponent,\n PopoverBodyComponent,\n IconComponent,\n NgClass,\n ButtonComponent,\n AsyncOrSyncPipe\n ]\n})\nexport class IconTabBarPopoverComponent extends IconTabBarPopoverBase {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabExtraUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /**\n * @description Flag representing position inside container left/right\n */\n @Input()\n leftSide = false;\n\n /**\n * @description Label for button\n */\n @Input()\n label = 'more';\n\n /** Whether to display labels for tab items */\n @Input()\n showItemLabel: boolean;\n}\n","<fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\" tabindex=\"-1\">\n <span class=\"fd-icon-tab-bar__overflow-text\">{{ label }}</span>\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\" role=\"list\">\n @for (item of extraTabs; track item.uId; let idx = $index) {\n @if (isSeparators) {\n <li tabindex=\"-1\" class=\"fd-icon-tab-bar__icon-separator\">\n <fd-icon glyph=\"process\"></fd-icon>\n </li>\n }\n <li\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n role=\"listitem\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n tabindex=\"0\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n <span class=\"fd-icon-tab-bar__list-item-icon-container\">\n <span class=\"fd-list__icon fd-icon-tab-bar__list-item-icon\">\n <fd-icon [glyph]=\"item.icon | fdkAsyncOrSync\"></fd-icon>\n </span>\n </span>\n @if (showItemLabel && (item.label | fdkAsyncOrSync)) {\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{\n item.label | fdkAsyncOrSync\n }}</span>\n }\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.counter | fdkAsyncOrSync; as itemCounter) {\n <span class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\"\n >({{ itemCounter }})\n </span>\n }\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[itemColor]) || itemColor }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n </ul>\n </fd-popover-body>\n</fd-popover>\n","import { SlicePipe } from '@angular/common';\nimport { Component, ElementRef, Input, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { AsyncOrSyncPipe, OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { IconTabBarPopoverComponent } from '../popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\n\n@Component({\n selector: 'fdp-icon-tab-bar-filter-type',\n templateUrl: './icon-tab-bar-filter-type.component.html',\n standalone: true,\n providers: [\n {\n provide: IconTabBarBase,\n useExisting: IconTabBarFilterTypeComponent\n }\n ],\n imports: [\n OverflowListDirective,\n OverflowListItemDirective,\n IconComponent,\n IconTabBarPopoverComponent,\n SlicePipe,\n ButtonComponent,\n AsyncOrSyncPipe\n ]\n})\nexport class IconTabBarFilterTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** @hidden */\n @ViewChild(IconTabBarPopoverComponent) _tabBarPopover: IconTabBarPopoverComponent;\n\n /**\n * @description Boolean flag indicating to show total tab\n */\n @Input()\n showTotalTab = true;\n\n /** @hidden */\n _totalTab?: IconTabBarItem;\n\n /**\n * @hidden\n * @description initialize state of tabs\n */\n protected _initTabs(): void {\n super._initTabs();\n this._totalTab = this.showTotalTab ? this.tabs[0] : undefined;\n }\n}\n","<ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n #tablist\n [overflowOffset]=\"100\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n>\n @if (showTotalTab) {\n <li class=\"fd-icon-tab-bar__item\" role=\"presentation\" fdkOverflowListItem>\n <a\n (click)=\"_totalTab && _selectItem(_totalTab)\"\n (keydown)=\"_keyDownHandler($event, _totalTab, 0)\"\n [attr.aria-selected]=\"_totalTab?.uId === selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n tabindex=\"0\"\n #tabItem\n role=\"tab\"\n >\n <div class=\"fd-icon-tab-bar__container fd-icon-tab-bar__container--filter\">\n @if (_totalTab?.counter) {\n <span class=\"fd-icon-tab-bar__filter-counter\">{{ _totalTab?.counter }}</span>\n }\n <span class=\"fd-icon-tab-bar__filter-label\">{{ _totalTab?.label | fdkAsyncOrSync }}</span>\n </div>\n </a>\n </li>\n }\n @for (item of tabs | slice: 1; track item.uId; let idx = $index) {\n <li\n [class]=\"item.cssClasses\"\n class=\"fd-icon-tab-bar__item\"\n role=\"presentation\"\n fdkOverflowListItem\n [attr.aria-hidden]=\"item.hidden\"\n >\n <a\n (click)=\"_selectItem(item)\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n [attr.tabindex]=\"showTotalTab ? -1 : idx > 0 ? -1 : 0\"\n (keydown)=\"_keyDownHandler($event, item, idx + (showTotalTab ? 1 : 0))\"\n role=\"tab\"\n >\n <div class=\"fd-icon-tab-bar__container\">\n <span class=\"fd-icon-tab-bar__icon\">\n <fd-icon [glyph]=\"item.icon\"></fd-icon>\n </span>\n @if (item.counter) {\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n }\n </div>\n <div class=\"fd-icon-tab-bar__label\">{{ item.label | fdkAsyncOrSync }}</div>\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[itemColor]) || itemColor }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraItems$()) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-icon-tab-bar-popover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs$()\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event, true)\"\n ></fdp-icon-tab-bar-popover>\n </li>\n }\n</ul>\n","import { NgClass } from '@angular/common';\nimport { Component, ElementRef, Input, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { AsyncOrSyncPipe, OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent } from '@fundamental-ngx/core/icon';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { IconTabBarPopoverComponent } from '../popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\n\n@Component({\n selector: 'fdp-icon-tab-bar-icon-type',\n templateUrl: './icon-tab-bar-icon-type.component.html',\n standalone: true,\n providers: [\n {\n provide: IconTabBarBase,\n useExisting: IconTabBarIconTypeComponent\n }\n ],\n imports: [\n OverflowListDirective,\n OverflowListItemDirective,\n NgClass,\n IconComponent,\n ButtonComponent,\n IconTabBarPopoverComponent,\n AsyncOrSyncPipe\n ]\n})\nexport class IconTabBarIconTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** @hidden */\n @ViewChild(IconTabBarPopoverComponent) _tabBarPopover: IconTabBarPopoverComponent;\n\n /** Whether to display labels for tab items */\n @Input()\n showLabel: boolean;\n\n /** @hidden */\n readonly _defaultFontFamily = FD_DEFAULT_ICON_FONT_FAMILY;\n}\n","<ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n #tablist\n [overflowOffset]=\"100\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n>\n @for (item of tabs; track item.uId; let idx = $index) {\n <li\n [ngClass]=\"item.cssClasses\"\n [class.fd-icon-tab-bar__item--closable]=\"item.closable\"\n fdkOverflowListItem\n [attr.aria-hidden]=\"item.hidden\"\n class=\"fd-icon-tab-bar__item\"\n role=\"presentation\"\n >\n <a\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n role=\"tab\"\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n <div class=\"fd-icon-tab-bar__container\">\n <span class=\"fd-icon-tab-bar__icon\">\n <fd-icon [glyph]=\"item.icon\" [font]=\"item.iconFont || _defaultFontFamily\"></fd-icon>\n </span>\n @if (item.counter && (!item.label || !showLabel)) {\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n }\n </div>\n @if (showLabel && item.label) {\n <div class=\"fd-icon-tab-bar__details\">\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n <span class=\"fd-icon-tab-bar__label\">{{ item.label }}</span>\n </div>\n }\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[itemColor]) || itemColor }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraItems$()) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-icon-tab-bar-popover\n [showItemLabel]=\"showLabel\"\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs$()\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event, true)\"\n ></fdp-icon-tab-bar-popover>\n </li>\n }\n</ul>\n","import { Component, ElementRef, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { take } from 'rxjs/operators';\n\nimport { AsyncOrSyncPipe, OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { cloneDeep } from 'lodash-es';\nimport { ICON_TAB_HIDDEN_CLASS_NAME } from '../../constants';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { IconTabBarPopoverComponent } from '../popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\n\n@Component({\n selector: 'fdp-icon-tab-bar-process-type',\n templateUrl: './icon-tab-bar-process-type.component.html',\n standalone: true,\n providers: [\n {\n provide: IconTabBarBase,\n useExisting: IconTabBarProcessTypeComponent\n }\n ],\n imports: [\n OverflowListDirective,\n IconTabBarPopoverComponent,\n OverflowListItemDirective,\n IconComponent,\n ButtonComponent,\n AsyncOrSyncPipe\n ]\n})\nexport class IconTabBarProcessTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** @hidden */\n @ViewChild(IconTabBarPopoverComponent) _tabBarPopover: IconTabBarPopoverComponent;\n\n /** @hidden */\n _offsetOverflowDirective = 30;\n\n /**\n * @hidden\n * An array containing extra tabs for the next steps\n */\n _nextSteps: IconTabBarItem[] = [];\n\n /**\n * @hidden\n * An array containing extra tabs for the next steps\n */\n _prevSteps: IconTabBarItem[] = [];\n\n /** @hidden */\n _showLeftBtn = false;\n\n /** @hidden */\n _showRightBtn = false;\n\n /** @hidden */\n private _firstVisibleTabIndex = 0;\n\n /** @hidden */\n private _currentStepIndex = 0;\n\n /** @hidden */\n _anchorIndexForExtraBtnDirective: number;\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this._currentStepIndex = selectedItem.index;\n super._selectItem(selectedItem);\n }\n\n /**\n * @hidden\n * @param selectedItem\n * @description select extra item inside popover\n */\n async _selectExtraItem(selectedItem: IconTabBarItem): Promise<void> {\n this._currentStepIndex = selectedItem.index;\n let amountOfPreviousSteps;\n let amountOfNextSteps;\n // We have to cases (strategy) for overflow extra tabs.\n // 1) When user click on step inside previous steps popover\n // 2) When user click on step inside next steps popover\n let isPreviousStepsStrategy: boolean;\n if (this._currentStepIndex > this._lastVisibleTabIndex) {\n amountOfNextSteps = this._nextSteps.length - (this._currentStepIndex - this._lastVisibleTabIndex);\n this._showRightBtn = amountOfNextSteps > 0;\n this._showLeftBtn = true;\n isPreviousStepsStrategy = false;\n } else {\n amountOfPreviousSteps = this._prevSteps.length - (this._firstVisibleTabIndex - this._currentStepIndex);\n this._showRightBtn = true;\n isPreviousStepsStrategy = true;\n this._showLeftBtn = amountOfPreviousSteps > 0;\n }\n this._selectItem(selectedItem);\n\n this._ngZone.onMicrotaskEmpty.pipe(take(1)).subscribe(() => {\n if (this.overflowDirective) {\n const extra = this.overflowDirective.getAmountOfExtraItems();\n isPreviousStepsStrategy\n ? this.recalculateItemsByPrevArr(extra, amountOfPreviousSteps)\n : this._recalculateItemsByNextArr(extra, amountOfNextSteps);\n this._cd.detectChanges();\n }\n });\n }\n\n /**\n * @hidden\n * @param extraItems\n * @description recalculate _nextSteps and _prevSteps array if we have extra items\n */\n _recalculateVisibleItems(extraItems: number): void {\n const amountOfPrevSteps = this._currentStepIndex > extraItems ? extraItems : this._currentStepIndex;\n this.recalculateItemsByPrevArr(extraItems, amountOfPrevSteps);\n }\n\n /** @hidden */\n private _clearExtraList(): void {\n this._nextSteps = [];\n this._prevSteps = [];\n this.tabs.forEach((item) => {\n item.hidden = false;\n item.cssClasses = item.cssClasses.filter((cssClass) => cssClass !== ICON_TAB_HIDDEN_CLASS_NAME);\n });\n }\n\n /**\n * @hidden\n * @param extraItems\n * @param amountOfNextSteps\n * @description We fill the array of the next steps to the selected tab,\n * based on this we generate the array of the previous steps if it is necessary\n */\n private _recalculateItemsByNextArr(extraItems: number, amountOfNextSteps: number): void {\n this._clearExtraList();\n if (!extraItems) {\n return;\n }\n const tabs = [...this.tabs];\n const visibleAmountOfItems = tabs.length - extraItems;\n for (let i = tabs.length - amountOfNextSteps; i < tabs.length; i++) {\n this._nextSteps.push(cloneDeep(tabs[i]));\n tabs[i].hidden = true;\n tabs[i].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n }\n\n this._showRightBtn = !!this._nextSteps.length;\n this._firstVisibleTabIndex = tabs.length - visibleAmountOfItems - this._nextSteps.length;\n this._lastVisibleTabIndex = tabs.length - amountOfNextSteps - 1;\n\n if (this._nextSteps.length === extraItems) {\n return;\n }\n\n let amountOfPrevSteps = extraItems - this._nextSteps.length;\n let nextIndex = this._firstVisibleTabIndex - 1;\n while (amountOfPrevSteps > 0) {\n this._prevSteps.push(cloneDeep(tabs[nextIndex]));\n tabs[nextIndex].hidden = true;\n tabs[nextIndex].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n\n --nextIndex;\n --amountOfPrevSteps;\n }\n // Added +1 for left button\n this._anchorIndexForExtraBtnDirective = this._prevSteps.length\n ? this._prevSteps.length + visibleAmountOfItems\n : this._prevSteps.length + visibleAmountOfItems - 1;\n\n this._showLeftBtn = !!this._prevSteps.length;\n this._cd.detectChanges();\n }\n\n /**\n * @hidden\n * @param extraItems\n * @param amountOfPreviousSteps\n * @description We fill the array of the previous steps to the selected tab,\n * based on this we generate the array of the next steps if it is necessary\n */\n private recalculateItemsByPrevArr(extraItems: number, amountOfPreviousSteps: number): void {\n this._clearExtraList();\n if (!extraItems) {\n return;\n }\n const tabs = [...this.tabs];\n const visibleAmountOfItems = tabs.length - extraItems;\n for (let i = amountOfPreviousSteps - 1; i >= 0; i--) {\n this._prevSteps.push(cloneDeep(tabs[i]));\n tabs[i].hidden = true;\n tabs[i].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n }\n\n this._firstVisibleTabIndex = this._prevSteps.length;\n this._lastVisibleTabIndex = this._prevSteps.length + visibleAmountOfItems - 1;\n this._showLeftBtn = !!this._prevSteps.length;\n\n if (this._prevSteps.length === extraItems) {\n this._showRightBtn = false;\n return;\n }\n\n let amountOfNextSteps = extraItems - this._prevSteps.length;\n let nextIndex = this._prevSteps.length ? this._prevSteps.length + visibleAmountOfItems : visibleAmountOfItems;\n while (amountOfNextSteps > 0) {\n this._nextSteps.push(cloneDeep(tabs[nextIndex]));\n tabs[nextIndex].hidden = true;\n tabs[nextIndex].cssClasses.push(ICON_TAB_HIDDEN_CLASS_NAME);\n\n ++nextIndex;\n --amountOfNextSteps;\n }\n // Add +1 for left btn\n this._anchorIndexForExtraBtnDirective = this._prevSteps.length\n ? this._prevSteps.length + visibleAmountOfItems\n : this._prevSteps.length + visibleAmountOfItems - 1;\n\n this._showRightBtn = !!this._nextSteps.length;\n this._offsetOverflowDirective = this._nextSteps.length ? 70 : 0;\n this._cd.detectChanges();\n }\n}\n","<ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n #tablist\n [class.fd-icon-tab-bar__header--left-offset]=\"_showLeftBtn\"\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"_offsetOverflowDirective\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n>\n @if (_showLeftBtn) {\n <li\n role=\"presentation\"\n class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow fd-icon-tab-bar__item--overflow-left\"\n >\n <fdp-icon-tab-bar-popover\n [extraTabs]=\"_prevSteps\"\n [label]=\"_prevSteps.length.toString()\"\n [isSeparators]=\"true\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n ></fdp-icon-tab-bar-popover>\n </li>\n }\n @for (item of tabs; track item.uId; let idx = $index) {\n <li\n [class]=\"item.cssClasses\"\n class=\"fd-icon-tab-bar__item\"\n role=\"presentation\"\n fdkOverflowListItem\n [attr.aria-hidden]=\"item.hidden\"\n >\n <a\n (click)=\"_selectItem(item)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n class=\"fd-icon-tab-bar__tab\"\n #tabItem\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n role=\"tab\"\n >\n @if (item.icon) {\n <div class=\"fd-icon-tab-bar__container\">\n <span class=\"fd-icon-tab-bar__icon\">\n <fd-icon [glyph]=\"item.icon\"></fd-icon>\n </span>\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n </div>\n <div class=\"fd-icon-tab-bar__details\">\n <span class=\"fd-icon-tab-bar__counter\">{{ item.counter }}</span>\n <span class=\"fd-icon-tab-bar__label\">{{ item.label | fdkAsyncOrSync }}</span>\n </div>\n } @else {\n <span class=\"fd-icon-tab-bar__tag\">{{ item.label | fdkAsyncOrSync }}</span>\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n }\n @if (item.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[itemColor]) || itemColor }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n @if (_lastVisibleTabIndex !== idx) {\n <span class=\"fd-icon-tab-bar__separator\">\n <fd-icon glyph=\"process\"></fd-icon>\n </span>\n }\n </li>\n }\n @if (_showRightBtn) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-icon-tab-bar-popover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_nextSteps\"\n [isSeparators]=\"true\"\n [label]=\"_nextSteps.length.toString()\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event, true)\"\n >\n </fdp-icon-tab-bar-popover>\n </li>\n }\n</ul>\n","import { DragRef, Point } from '@angular/cdk/drag-drop';\nimport { DestroyRef, Directive, ElementRef, EventEmitter, Input, Output, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FLIPPER_SIZE } from '../../constants';\nimport {\n ElementChord,\n IconTabBarDndItem,\n IconTabBarDndList,\n IconTabBarItem\n} from '../../interfaces/icon-tab-bar-item.interface';\n\nexport interface FdDnDEvent {\n draggableItem: IconTabBarItem;\n targetItem: IconTabBarItem;\n action: 'replace' | 'insert';\n}\n\n@Directive({\n selector: '[fdpIconBarDndContainer], [fdp-icon-bar-dnd-container]',\n standalone: true\n})\nexport class IconBarDndContainerDirective {\n /**\n * @description Defines if drag and drop feature should be enabled for list items\n */\n @Input()\n set draggable(draggable: boolean) {\n this._draggable = draggable;\n this._changeDraggableState(draggable);\n }\n\n /**\n * @description Event that is thrown, when the item is dropped\n */\n @Output()\n dropped = new EventEmitter<FdDnDEvent>();\n\n /** @hidden */\n private _dragRefItems: DragRef[] = [];\n\n /** @hidden */\n private dndItemDirectives: IconTabBarDndItem[] = [];\n\n /** @hidden */\n private _dndListDirectives: Set<IconTabBarDndList> = new Set<IconTabBarDndList>();\n\n /** @hidden */\n private _elementsCoordinates: ElementChord[];\n\n /** @hidden */\n private _virtualSeparatorsCoordinates: ElementChord[] = [];\n\n /** @hidden */\n private _closestItemIndex: number | null = null;\n\n /** @hidden */\n private _closestSeparatorIndex: number | null = null;\n\n /** @hidden */\n private _draggable = true;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor(public elementRef: ElementRef) {}\n\n /**\n * @description Method called, when element is started to be dragged\n */\n dragStart(): void {\n /** Counting all of the elements's chords */\n this._elementsCoordinates = this.dndItemDirectives.map((item: IconTabBarDndItem) =>\n item.getElementCoordinates()\n );\n this._generateVirtualSeparators();\n }\n\n /**\n * @param mousePosition\n * @description Method called, when the item is being moved by 1 px\n */\n onMove(mousePosition: Point): void {\n let newClosestIndex: number | null = null;\n let newClosestSeparatorIndex: number | null = null;\n\n this._elementsCoordinates.find((element, index) => {\n /** Check if element can be replaced */\n if (newClosestIndex !== index) {\n const isMouseOnElement = this._isMouseOnElement(element, mousePosition);\n if (isMouseOnElement) {\n newClosestIndex = index;\n return true;\n }\n }\n });\n\n if (newClosestIndex !== null && newClosestIndex === this._closestItemIndex) {\n return;\n }\n\n if (this._closestItemIndex !== newClosestIndex) {\n this.dndItemDirectives[this._closestItemIndex]?.toggleHoveredStyles();\n this.dndItemDirectives[this._closestSeparatorIndex!]?.toggleSeparatorStyles();\n }\n\n this._closestItemIndex = newClosestIndex;\n\n if (newClosestIndex !== null) {\n this._closestSeparatorIndex = null;\n this.dndItemDirectives[newClosestIndex].toggleHoveredStyles(true);\n return;\n }\n\n // If we aren't on tab then check separator element.\n this._virtualSeparatorsCoordinates.find((element, index) => {\n const isMouseOnFlipper = this._isMouseOnFlipper(element, mousePosition);\n if (isMouseOnFlipper) {\n newClosestSeparatorIndex = index;\n return true;\n }\n });\n\n if (newClosestSeparatorIndex !== null && newClosestSeparatorIndex === this._closestSeparatorIndex) {\n return;\n }\n\n if (this._closestSeparatorIndex !== newClosestSeparatorIndex) {\n this.dndItemDirectives[this._closestItemIndex!]?.toggleHoveredStyles();\n this.dndItemDirectives[this._closestSeparatorIndex]?.toggleSeparatorStyles();\n }\n\n this._closestSeparatorIndex = newClosestSeparatorIndex;\n\n if (newClosestSeparatorIndex !== null) {\n this._closestItemIndex = null;\n this.dndItemDirectives[newClosestSeparatorIndex].toggleSeparatorStyles(true);\n return;\n }\n }\n\n /**\n * @param dragDir\n * @description Method called, when element is released\n */\n dragEnd(dragDir: IconTabBarDndItem): void {\n if (this._closestSeparatorIndex || this._closestSeparatorIndex === 0) {\n this.dndItemDirectives[this._closestSeparatorIndex].toggleSeparatorStyles();\n this.dropped.emit({\n draggableItem: dragDir.dndItemData,\n targetItem: this.dndItemDirectives[this._closestSeparatorIndex].dndItemData,\n action: 'replace'\n });\n }\n if (this._closestItemIndex || this._closestItemIndex === 0) {\n this.dndItemDirectives[this._closestItemIndex].toggleHoveredStyles();\n this.dropped.emit({\n draggableItem: dragDir.dndItemData,\n targetItem: this.dndItemDirectives[this._closestItemIndex].dndItemData,\n action: 'insert'\n });\n }\n /** Reset */\n this._elementsCoordinates = [];\n this._virtualSeparatorsCoordinates = [];\n this._closestItemIndex = null;\n this._closestSeparatorIndex = null;\n }\n\n /**\n * @param dragItem\n * @description Register IconTabBarDndItem to current container\n */\n registerDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems.push(dragItem.dragRef);\n this.dndItemDirectives.push(dragItem);\n dragItem.moved.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((position: Point) => this.onMove(position));\n dragItem.started.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.dragStart());\n dragItem.released.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.dragEnd(dragItem));\n }\n\n /**\n * @param dragItem\n * @description Remove registered IconTabBarDndItem to current container\n */\n removeDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems = this._dragRefItems.filter((item) => item !== dragItem.dragRef);\n this.dndItemDirectives = this.dndItemDirectives.filter((item) => item !== dragItem);\n }\n\n /**\n * @param listDir\n * @description Register IconTabBarDndList to current container\n */\n registerDndList(listDir: IconTabBarDndList): void {\n this._dndListDirectives.add(listDir);\n listDir.changeDraggableState(this._draggable);\n }\n\n /**\n * @param listDir\n * @description Remove registered IconTabBarDndList to current container\n */\n removeDndList(listDir: IconTabBarDndList): void {\n this._dndListDirectives.delete(listDir);\n }\n\n /**\n * @description Generate virtual elements as separator between tabs\n */\n private _generateVirtualSeparators(): void {\n this._elementsCoordinates.forEach((item, index) => {\n const isVertical = this.dndItemDirectives[index].isVertical;\n this._virtualSeparatorsCoordinates.push({\n x: isVertical ? item.x : item.x - FLIPPER_SIZE.width,\n y: isVertical ? item.y + FLIPPER_SIZE.verticalHeight : item.y,\n width: isVertical ? item.width : FLIPPER_SIZE.width,\n height: isVertical ? FLIPPER_SIZE.verticalHeight : FLIPPER_SIZE.height\n });\n });\n }\n\n /** @hidden */\n private _changeDraggableState(draggable: boolean): void {\n for (const list of this._dndListDirectives) {\n list.changeDraggableState(draggable);\n }\n }\n\n /** @hidden */\n private _isMouseOnFlipper(element: ElementChord, mousePosition: Point): boolean {\n const startX = element.x;\n const endX = element.x + element.width;\n\n const startY = element.y;\n const endY = element.y + element.height;\n\n return _between(mousePosition.x, startX, endX) && _between(mousePosition.y, startY, endY);\n }\n\n /** @hidden */\n private _isMouseOnElement(element: ElementChord, mousePosition: Point, isVertical: boolean = false): boolean {\n const startX = element.x;\n const endX = element.x + element.width;\n\n const startY = isVertical ? element.y - FLIPPER_SIZE.verticalHeight / 2 : element.y;\n const endY = element.y + element.height - FLIPPER_SIZE.verticalHeight / 2;\n\n return _between(mousePosition.x, startX, endX) && _between(mousePosition.y, startY, endY);\n }\n}\n\n/** @hidden */\nfunction _between(x: number, min: number, max: number): boolean {\n return x >= min && x <= max;\n}\n","import { AfterViewInit, DestroyRef, Directive, ElementRef, Input, OnDestroy, inject } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\n\nimport { DragDrop, DragRef, DropListRef } from '@angular/cdk/drag-drop';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { debounceTime } from 'rxjs/operators';\nimport { IconTabBarDndItem, IconTabBarDndList } from '../../interfaces/icon-tab-bar-item.interface';\nimport { IconBarDndContainerDirective } from './icon-bar-dnd-container.directive';\n\n@Directive({\n selector: '[fdpIconBarDndList], [fdp-icon-bar-dnd-list]',\n standalone: true\n})\nexport class IconBarDndListDirective implements IconTabBarDndList, AfterViewInit, OnDestroy {\n /**\n * @description Direction in which the list is oriented.\n */\n @Input()\n dndOrientation: 'horizontal' | 'vertical' = 'vertical';\n\n /**\n * @description Is disabled autoscroll inside draggable list\n */\n @Input()\n dndAutoScroll = true;\n\n /** @hidden */\n private _dropListRef: DropListRef;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n private _dragRefItems: DragRef[] = [];\n\n /** @hidden */\n private readonly _dndItems$ = new ReplaySubject<void>(1);\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n private _dragDrop: DragDrop,\n private _dndContainer: IconBarDndContainerDirective\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._dropListRef = this._dragDrop.createDropList(this.elementRef.nativeElement);\n this._dropListRef.sortingDisabled = true;\n this._dropListRef.autoScrollDisabled = this.dndAutoScroll;\n this._dropListRef.disabled = true;\n this._dropListRef.withOrientation(this.dndOrientation);\n\n this._dndContainer.registerDndList(this);\n\n this._dndItems$\n .pipe(debounceTime(100), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => this._dropListRef.withItems(this._dragRefItems));\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._dropListRef.dispose();\n this._dndContainer.removeDndList(this);\n }\n\n /**\n * @param dragItem\n * @description Register IconTabBarDndItem to current list\n */\n registerDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems.push(dragItem.dragRef);\n this._dndItems$.next();\n }\n\n /**\n * @param dragItem\n * @description Remove registered IconTabBarDndItem to current list\n */\n removeDragItem(dragItem: IconTabBarDndItem): void {\n this._dragRefItems = this._dragRefItems.filter((item) => item !== dragItem.dragRef);\n this._dndItems$.next();\n }\n\n /**\n * @param draggable\n */\n changeDraggableState(draggable: boolean): void {\n this._dropListRef.disabled = !draggable;\n }\n}\n","import { DragDrop, DragRef, Point } from '@angular/cdk/drag-drop';\nimport { AfterViewInit, DestroyRef, Directive, ElementRef, Input, OnDestroy, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ElementChord, IconTabBarDndItem, IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { IconBarDndContainerDirective } from './icon-bar-dnd-container.directive';\nimport { IconBarDndListDirective } from './icon-bar-dnd-list.directive';\n\n@Directive({\n selector: '[fdpIconBarDndItem], [fdp-icon-bar-dnd-item]',\n standalone: true\n})\nexport class IconBarDndItemDirective implements IconTabBarDndItem, AfterViewInit, OnDestroy {\n /**\n * @description Tab info\n */\n @Input()\n dndItemData: IconTabBarItem;\n\n /**\n * @description Classes for draggable preview\n */\n @Input()\n previewClass: string[] = ['fd-icon-tab-bar__item--dnd-preview'];\n\n /**\n * @description Classes for hovered state\n */\n @Input()\n dndHoveredClass: string[] = ['fd-icon-tab-bar__item--dnd-hovered'];\n\n /**\n * @description Classes for separator, when draggable element between two tabs\n */\n @Input()\n dndSeparatorClass: string[] = [\n 'fd-icon-tab-bar__item--dnd-separator',\n 'fd-icon-tab-bar__item--dnd-separator-vertical'\n ];\n\n /**\n * @description Event thrown when the element is moved by 1px\n */\n readonly moved = new Subject<Point>();\n\n /**\n * @description Event thrown when the element is released\n */\n readonly released = new Subject<void>();\n\n /**\n * @description Event thrown when the element is started to be dragged\n */\n readonly started = new Subject<void>();\n\n /** @hidden */\n isVertical = false;\n\n /**\n * @hidden\n * @description Drag reference, object created from DND CDK Service\n */\n dragRef: DragRef;\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef,\n protected _dragDrop: DragDrop,\n private _dndListDir: IconBarDndListDirective,\n private _dndContainerDir: IconBarDndContainerDirective\n ) {}\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.isVertical = this._dndListDir?.dndOrientation === 'vertical';\n this._setCDKDrag();\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._dndListDir.removeDragItem(this);\n this._dndContainerDir.removeDragItem(this);\n this.dragRef.dispose();\n }\n\n /** @hidden */\n onCdkDragStart(): void {\n /** Adds class */\n this.started.next();\n }\n\n /** @hidden */\n onCdkMove(position: Point): void {\n this.moved.next(position);\n }\n\n /** @hidden */\n onCdkDragReleased(): void {\n this.released.next();\n }\n\n /** @hidden */\n getElementCoordinates(): ElementChord {\n /** Takes distance from the beginning of window page */\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n\n /** Vertically distance is counted by distance from top of the side + half of the element height */\n return {\n x: rect.left,\n y: rect.top,\n width: rect.width,\n height: rect.height\n };\n }\n\n /**\n * @description Add/delete separator classes\n */\n toggleSeparatorStyles(force: boolean = false): void {\n force\n ? this.elementRef.nativeElement.classList.add(...this.dndSeparatorClass)\n : this.elementRef.nativeElement.classList.remove(...this.dndSeparatorClass);\n }\n\n /**\n * @description Add/delete hovered state classes\n */\n toggleHoveredStyles(force: boolean = false): void {\n force\n ? this.elementRef.nativeElement.classList.add(...this.dndHoveredClass)\n : this.elementRef.nativeElement.classList.remove(...this.dndHoveredClass);\n }\n\n /** @hidden */\n private _setCDKDrag(): void {\n this.dragRef = this._dragDrop.createDrag(this.elementRef);\n this.dragRef.previewClass = this.previewClass;\n\n this._dndListDir?.registerDragItem(this);\n this._dndContainerDir?.registerDragItem(this);\n\n this.dragRef.moved\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((event) => this.onCdkMove(event.pointerPosition));\n\n this.dragRef.released.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.onCdkDragReleased());\n\n this.dragRef.started.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => this.onCdkDragStart());\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { AsyncOrSyncPipe, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from '../../interfaces/tab-color-associations.interface';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fdp-icon-tab-bar-text-type-tab-item]',\n standalone: true,\n imports: [AsyncOrSyncPipe],\n templateUrl: './icon-tab-bar-text-type-tab-item.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'fd-icon-tab-bar__tab',\n role: 'tab'\n }\n})\nexport class IconTabBarTextTypeTabItemComponent {\n /** Tab item. */\n @Input()\n item: Nullable<IconTabBarItem>;\n\n /**\n * @description Layout type for tab.\n */\n @Input()\n layoutMode: 'row' | 'column';\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n @Input()\n colorAssociations: TabColorAssociations;\n\n /** @hidden */\n get nativeElement(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /** @hiddem */\n private readonly _elementRef = inject(ElementRef);\n}\n","@if (layoutMode === 'row') {\n <span class=\"fd-icon-tab-bar__tag\">\n {{ item?.label | fdkAsyncOrSync }}\n @if (item?.counter | fdkAsyncOrSync; as itemCounter) {\n ({{ itemCounter }})\n }\n </span>\n} @else {\n <span class=\"fd-icon-tab-bar__counter\">{{ item?.counter }}</span>\n <span class=\"fd-icon-tab-bar__tag\">{{ item?.label | fdkAsyncOrSync }}</span>\n}\n@if (item?.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n}\n@if (item?.color | fdkAsyncOrSync; as itemColor) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[itemColor]) || itemColor }}\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewChildren\n} from '@angular/core';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport {\n PopoverBodyComponent,\n PopoverComponent,\n PopoverControlComponent,\n TriggerConfig\n} from '@fundamental-ngx/core/popover';\nimport { IconBarDndItemDirective } from '../../../directives/dnd/icon-bar-dnd-item.directive';\nimport { IconBarDndListDirective } from '../../../directives/dnd/icon-bar-dnd-list.directive';\nimport { IconTabBarItem } from '../../../interfaces/icon-tab-bar-item.interface';\nimport { IconTabBarTextTypeTabItemComponent } from '../../text-type-tab-item/icon-tab-bar-text-type-tab-item.component';\nimport { IconTabBarPopoverBase } from '../icon-tab-bar-popover-base.class';\n\n@Component({\n selector: 'fdp-text-type-popover',\n templateUrl: './text-type-popover.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n PopoverComponent,\n PopoverControlComponent,\n PopoverBodyComponent,\n IconBarDndListDirective,\n NgTemplateOutlet,\n IconBarDndItemDirective,\n NgClass,\n ButtonComponent,\n IconComponent,\n IconTabBarTextTypeTabItemComponent\n ]\n})\nexport class TextTypePopoverComponent extends IconTabBarPopoverBase implements OnChanges {\n /** @hidden reference for html element, that opens dropdown and can receive focus */\n @ViewChild('dropdownTrigger', { read: ElementRef }) _dropdownTrigger: ElementRef<HTMLElement>;\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem', { read: ElementRef }) _tabExtraUIElements: QueryList<ElementRef<HTMLElement>>;\n\n /** Whether to render item as a multi-click variant. */\n @Input()\n multiClick = false;\n\n /**\n * @description Layout type for tab.\n */\n @Input()\n layoutMode: 'row' | 'column';\n\n /**\n * @description Is extra items mode or subitems mode\n */\n @Input()\n isExtraItemsMode = false;\n\n /**\n * @description Parent tab need for subItems mode\n */\n @Input()\n parentTab: IconTabBarItem;\n\n /**\n * @description uId of selected subItem\n */\n @Input()\n selectedSubItemUid: Nullable<string>;\n\n /**\n * @description tabIndex of the particular item. Aplicable only for subitems mode\n */\n @Input()\n tabindex = -1;\n\n /**\n * @description Emits when some subTab is selected and isExtraItemsMode is disabled\n */\n @Output()\n selectedSubItem: EventEmitter<any> = new EventEmitter<any>();\n\n /** Emits when root item is being selected. Applicable for multi-click variant only. */\n @Output()\n selectedItem = new EventEmitter<void>();\n\n /** @hidden */\n _containsSelected = false;\n\n /** @hidden */\n _popoverTriggers: TriggerConfig[] = [\n { trigger: 'click', openAction: true, closeAction: true, stopPropagation: true }\n ];\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n super.ngOnChanges(changes);\n if (!this.isExtraItemsMode && changes.parentTab && this.parentTab.subItems) {\n this._setStyles(this.parentTab.subItems);\n }\n if (changes.selectedSubItemUid) {\n this._calculateIfContainsSelected();\n }\n }\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this.isExtraItemsMode ? this.selectedExtraItem.emit(selectedItem) : this.selectedSubItem.emit(selectedItem);\n this.popover.close();\n }\n\n /** @hidden */\n _textPopoverKeyDownHandler(event: KeyboardEvent, tab: IconTabBarItem): void {\n // using relative index within popover (first popover tab should start from 0)\n const baseIndex = this.parentTab ? this.parentTab.flatIndex + 1 : this.extraTabs[0].flatIndex;\n const currentIndex = tab.flatIndex - baseIndex;\n super._keyDownHandler(event, tab, currentIndex);\n }\n\n /** @hidden */\n private _calculateIfContainsSelected(): void {\n this._containsSelected =\n (this.multiClick && this.parentTab.uId === this.selectedSubItemUid) ||\n (!!this.parentTab.subItems &&\n this._getChildren(this.parentTab.subItems).some(({ uId }) => uId === this.selectedSubItemUid));\n }\n\n /** @hidden */\n private _getChildren(items: IconTabBarItem[]): IconTabBarItem[] {\n return items.reduce((acc: IconTabBarItem[], item: IconTabBarItem) => {\n acc = acc.concat(item);\n if (item.subItems) {\n acc = acc.concat(this._getChildren(item.subItems));\n }\n return acc;\n }, []);\n }\n}\n","@if (isExtraItemsMode) {\n <fd-popover placement=\"bottom-end\" [focusAutoCapture]=\"true\" [focusTrapped]=\"true\" #popover>\n <fd-popover-control>\n <button class=\"fd-icon-tab-bar__overflow\" tabindex=\"-1\">\n <span class=\"fd-icon-tab-bar__overflow-text\">More</span>\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </button>\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-template [ngTemplateOutletContext]=\"{ level: 1, items: extraTabs }\" [ngTemplateOutlet]=\"subItem\">\n </ng-template>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n@if (multiClick) {\n <a\n #dropdownTrigger\n fdp-icon-tab-bar-text-type-tab-item\n [item]=\"parentTab\"\n [attr.aria-selected]=\"_containsSelected\"\n [colorAssociations]=\"colorAssociations\"\n [layoutMode]=\"layoutMode\"\n [attr.tabindex]=\"tabindex\"\n (click)=\"selectedItem.emit()\"\n >\n </a>\n}\n@if (!isExtraItemsMode && parentTab && parentTab.subItems?.length) {\n <fd-popover\n [class.fd-icon-tab-bar__popover]=\"multiClick\"\n placement=\"bottom-end\"\n [focusAutoCapture]=\"true\"\n [triggers]=\"_popoverTriggers\"\n [focusTrapped]=\"true\"\n #popover\n >\n <fd-popover-control>\n @if (multiClick) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button fd-button fdType=\"transparent\" tabindex=\"-1\" class=\"fd-icon-tab-bar__button\">\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </button>\n </div>\n } @else {\n <a\n [attr.aria-selected]=\"_containsSelected\"\n class=\"fd-icon-tab-bar__tab\"\n role=\"tab\"\n [attr.tabindex]=\"tabindex\"\n #dropdownTrigger\n >\n <div class=\"fd-icon-tab-bar__tab-container\">\n <span class=\"fd-icon-tab-bar__tag\">{{ parentTab.label }}</span>\n <span class=\"fd-icon-tab-bar__arrow\">\n <fd-icon glyph=\"slim-arrow-down\" role=\"presentation\"></fd-icon>\n </span>\n @if (parentTab.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n </div>\n </a>\n }\n </fd-popover-control>\n <fd-popover-body class=\"fd-icon-tab-bar\">\n <ul\n fdpIconBarDndList\n class=\"fd-list fd-list--navigation fd-list--no-border fd-icon-tab-bar__list\"\n role=\"list\"\n >\n <ng-container\n [ngTemplateOutletContext]=\"{ level: 1, items: parentTab.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n </ul>\n </fd-popover-body>\n </fd-popover>\n}\n<ng-template #subItem let-items=\"items\" let-level=\"level\">\n @for (item of items; track item.uId) {\n <li\n [attr.aria-level]=\"level\"\n class=\"fd-list__item fd-list__item--link fd-icon-tab-bar__list-item\"\n [class.fd-icon-tab-bar__list-item--closable]=\"item.closable\"\n [ngClass]=\"item.cssClasses\"\n fdpIconBarDndItem\n [dndItemData]=\"item\"\n role=\"listitem\"\n tabindex=\"-1\"\n >\n <a\n class=\"fd-list__link fd-icon-tab-bar__list-link\"\n tabindex=\"0\"\n #tabItem\n [attr.data-flatIndex]=\"item.flatIndex\"\n [attr.aria-selected]=\"item.uId === selectedSubItemUid\"\n (click)=\"_selectItem(item)\"\n (keydown)=\"_textPopoverKeyDownHandler($event, item)\"\n >\n <span class=\"fd-list__title fd-icon-tab-bar__list-item-title\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"fd-icon-tab-bar__badge\"></span>\n }\n @if (item.counter) {\n <span class=\"fd-list__counter fd-icon-tab-bar__list-item-counter\">({{ item.counter }}) </span>\n }\n @if (item.color) {\n <div class=\"screenreader-only\">\n {{ (colorAssociations && colorAssociations[item.color]) || item.color }}\n </div>\n }\n </a>\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"closeTab.emit(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n @if (item.subItems?.length) {\n <ng-container\n [ngTemplateOutletContext]=\"{ level: level + 1, items: item.subItems }\"\n [ngTemplateOutlet]=\"subItem\"\n ></ng-container>\n }\n }\n</ng-template>\n","import { Component, ElementRef, EventEmitter, Input, Output, QueryList, ViewChild, ViewChildren } from '@angular/core';\nimport { AsyncOrSyncPipe, Nullable } from '@fundamental-ngx/cdk/utils';\n\nimport { NgClass } from '@angular/common';\nimport { OverflowListDirective, OverflowListItemDirective } from '@fundamental-ngx/cdk/utils';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { UNIQUE_KEY_SEPARATOR } from '../../constants';\nimport { FdDnDEvent, IconBarDndContainerDirective } from '../../directives/dnd/icon-bar-dnd-container.directive';\nimport { IconBarDndItemDirective } from '../../directives/dnd/icon-bar-dnd-item.directive';\nimport { IconBarDndListDirective } from '../../directives/dnd/icon-bar-dnd-list.directive';\nimport { IconTabBarItem } from '../../interfaces/icon-tab-bar-item.interface';\nimport { ClosableIconTabBar } from '../closable-icon-tab-bar.class';\nimport { IconTabBarBase } from '../icon-tab-bar-base.class';\nimport { TextTypePopoverComponent } from '../popovers/text-type-popover/text-type-popover.component';\nimport { IconTabBarTextTypeTabItemComponent } from '../text-type-tab-item/icon-tab-bar-text-type-tab-item.component';\n\n/** @hidden */\ninterface DataForReordering {\n arr: IconTabBarItem[];\n item: IconTabBarItem;\n parentUid: string;\n}\n\n/** @hidden */\ntype TabItem = ElementRef<HTMLElement> | TextTypePopoverComponent;\n\n@Component({\n selector: 'fdp-icon-tab-bar-text-type',\n templateUrl: './icon-tab-bar-text-type.component.html',\n standalone: true,\n providers: [\n {\n provide: IconTabBarBase,\n useExisting: IconTabBarTextTypeComponent\n }\n ],\n imports: [\n IconBarDndContainerDirective,\n OverflowListDirective,\n IconBarDndListDirective,\n OverflowListItemDirective,\n IconBarDndItemDirective,\n NgClass,\n TextTypePopoverComponent,\n ButtonComponent,\n IconComponent,\n AsyncOrSyncPipe,\n IconTabBarTextTypeTabItemComponent\n ]\n})\nexport class IconTabBarTextTypeComponent extends ClosableIconTabBar {\n /** @hidden list of tab html elements, that can receive focus */\n @ViewChildren('tabItem') _tabUIElements: QueryList<TabItem>;\n\n /** @hidden */\n @ViewChild('extraItemsPopover') _tabBarPopover: TextTypePopoverComponent;\n\n /**\n * @description Disable or enable reordering(drag and drop) feature.\n */\n @Input()\n enableTabReordering = false;\n\n /**\n * @description Layout type for tab.\n */\n @Input()\n layoutMode: 'row' | 'column';\n\n /** Whether to render icon tab item as multi-click variant. */\n @Input()\n multiClick = false;\n\n /**\n * @description Emits when user drops the tab.\n */\n @Output()\n reordered = new EventEmitter<IconTabBarItem[]>();\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectExtraItem(selectedItem: IconTabBarItem | undefined): void {\n // Check if the selected item is subItem\n // Then to find root tab, and pass it to the parent method.\n if (selectedItem?.uId.includes(UNIQUE_KEY_SEPARATOR)) {\n const rootTabUid = selectedItem.uId.split(UNIQUE_KEY_SEPARATOR)[0];\n selectedItem = this.tabs.find((tab) => tab.uId === rootTabUid);\n }\n if (!selectedItem) {\n return;\n }\n super._selectExtraItem(selectedItem);\n }\n\n /**\n * @hidden\n * @param draggableItem\n * @param targetItem\n * @param action\n */\n _onDropped(event: FdDnDEvent): void {\n if (!this._canDrop(event)) {\n return;\n }\n\n const replacedParsedUidArr = event.targetItem.uId.split(UNIQUE_KEY_SEPARATOR);\n replacedParsedUidArr.length = replacedParsedUidArr.length - 1;\n const draggableParsedUidArr = event.draggableItem.uId.split(UNIQUE_KEY_SEPARATOR);\n draggableParsedUidArr.length = draggableParsedUidArr.length - 1;\n\n const tabInfoForNewList = this._getTabInfoFromMainList(event.targetItem.uId);\n const tabInfoForPrevList = this._getTabInfoFromMainList(event.draggableItem.uId);\n\n if (!tabInfoForNewList || !tabInfoForPrevList) {\n return;\n }\n\n const dataForAction = {\n replacedItemInfo: {\n arr: tabInfoForNewList.parent,\n item: tabInfoForNewList.tab,\n parentUid: replacedParsedUidArr.length ? replacedParsedUidArr.join(UNIQUE_KEY_SEPARATOR) : ''\n },\n draggableItemInfo: {\n arr: tabInfoForPrevList.parent,\n item: tabInfoForPrevList.tab,\n parentUid: draggableParsedUidArr.length ? draggableParsedUidArr.join(UNIQUE_KEY_SEPARATOR) : ''\n }\n };\n\n event.action === 'replace' ? this._replaceAsSibling(dataForAction) : this._insertItemAsChild(dataForAction);\n\n this.reordered.emit(this.tabs);\n }\n\n /** @hidden */\n protected _getTabUIElementFocusable(tabUIElement: Nullable<TabItem>): Nullable<HTMLElement> {\n if (!tabUIElement) {\n return tabUIElement;\n }\n if (typeof tabUIElement === 'object' && 'nativeElement' in tabUIElement) {\n return tabUIElement.nativeElement;\n }\n return tabUIElement._dropdownTrigger.nativeElement;\n }\n\n /** @hidden */\n private _canDrop(event: FdDnDEvent): boolean {\n let parentUId: Nullable<string> =\n event.action === 'replace' ? event.targetItem.parentUId : event.targetItem.uId;\n while (parentUId) {\n if (parentUId === event.draggableItem.uId) {\n return false;\n }\n const nextSeparatorIdx = parentUId.lastIndexOf(UNIQUE_KEY_SEPARATOR);\n\n parentUId = nextSeparatorIdx > 0 ? parentUId.slice(0, nextSeparatorIdx) : null;\n }\n return true;\n }\n\n /**\n * @hidden\n * @param data\n * @description Insert tab into another tab.\n */\n private _insertItemAsChild(data: {\n replacedItemInfo: DataForReordering;\n draggableItemInfo: DataForReordering;\n }): void {\n const { replacedItemInfo, draggableItemInfo } = data;\n // Remove draggable tab from previous list\n draggableItemInfo.arr.splice(draggableItemInfo.item.index, 1);\n if (!replacedItemInfo.item.subItems?.length) {\n replacedItemInfo.item.subItems = [];\n }\n // Add tab to subitem of the target tab\n replacedItemInfo.item.subItems.push(draggableItemInfo.item);\n this.tabs = this._updateTabs(this.tabs);\n this._triggerRecalculationVisibleItems();\n }\n\n /**\n * @hidden\n * @param data\n * @description Insert tab between tabs\n */\n private _replaceAsSibling(data: {\n replacedItemInfo: DataForReordering;\n draggableItemInfo: DataForReordering;\n }): void {\n const { replacedItemInfo, draggableItemInfo } = data;\n draggableItemInfo.arr.splice(draggableItemInfo.item.index, 1);\n const newIndex = replacedItemInfo?.item?.index || 0;\n replacedItemInfo.arr.splice(newIndex, 0, draggableItemInfo.item);\n this.tabs = this._updateTabs(this.tabs);\n this._triggerRecalculationVisibleItems();\n }\n}\n","<ng-container fdpIconBarDndContainer [draggable]=\"enableTabReordering\" (dropped)=\"_onDropped($event)\">\n <ul\n class=\"fd-icon-tab-bar__header\"\n [class.fd-dynamic-page__tabs]=\"_inDynamicPage\"\n role=\"tablist\"\n #tablist\n fdkOverflowList\n [isRtl]=\"isRtl\"\n [overflowOffset]=\"100\"\n fdpIconBarDndList\n dndOrientation=\"horizontal\"\n (overflowChanged)=\"_recalculateVisibleItems($event)\"\n >\n @for (item of tabs; track item.uId; let idx = $index) {\n <li\n [ngClass]=\"item.cssClasses\"\n [class.fd-icon-tab-bar__item--multi-click]=\"multiClick && item.subItems?.length\"\n fdkOverflowListItem\n fdpIconBarDndItem\n [dndSeparatorClass]=\"['fd-icon-tab-bar__item--dnd-separator']\"\n [dndItemData]=\"item\"\n class=\"fd-icon-tab-bar__item\"\n [class.fd-icon-tab-bar__item--closable]=\"item.closable\"\n [attr.aria-hidden]=\"item.hidden\"\n role=\"presentation\"\n >\n @if (!item.subItems?.length && !multiClick) {\n <a\n #tabItem\n fdp-icon-tab-bar-text-type-tab-item\n [item]=\"item\"\n [layoutMode]=\"layoutMode\"\n [colorAssociations]=\"colorAssociations\"\n [attr.tabindex]=\"idx === 0 ? 0 : -1\"\n [attr.aria-selected]=\"item.uId === selectedUid\"\n (click)=\"_selectItem(item, $event)\"\n (keydown)=\"_keyDownHandler($event, item, idx)\"\n >\n </a>\n }\n @if (item.subItems?.length || multiClick) {\n <fdp-text-type-popover\n #tabItem\n #itemPopover\n [tabindex]=\"idx === 0 ? 0 : -1\"\n [parentTab]=\"item\"\n [layoutMode]=\"layoutMode\"\n [multiClick]=\"multiClick\"\n [selectedSubItemUid]=\"selectedUid\"\n [colorAssociations]=\"colorAssociations\"\n (selectedSubItem)=\"_selectItem($event)\"\n (keydown)=\"_keyDownHandler($event, item, idx, itemPopover)\"\n (closeTab)=\"_closeTab($event)\"\n (selectedItem)=\"_selectItem(item)\"\n >\n </fdp-text-type-popover>\n }\n @if (item.closable) {\n <div class=\"fd-icon-tab-bar__button-container\">\n <button\n fd-button\n tabindex=\"-1\"\n class=\"fd-icon-tab-bar__button\"\n fdType=\"transparent\"\n (click)=\"_closeTab(item.uId)\"\n >\n <fd-icon glyph=\"decline\"></fd-icon>\n </button>\n </div>\n }\n </li>\n }\n @if (_extraItems$()) {\n <li role=\"presentation\" class=\"fd-icon-tab-bar__item fd-icon-tab-bar__item--overflow\">\n <fdp-text-type-popover\n #extraItemsPopover\n [isRtl]=\"isRtl\"\n [extraTabs]=\"_extraTabs$()\"\n [isExtraItemsMode]=\"true\"\n [colorAssociations]=\"colorAssociations\"\n (selectedExtraItem)=\"_selectExtraItem($event)\"\n (focusFirstVisibleItem)=\"_focusItem(0)\"\n (focusLastVisibleItem)=\"_focusItem(_lastVisibleTabIndex)\"\n (closeTab)=\"_closeTab($event, true)\"\n >\n </fdp-text-type-popover>\n </li>\n }\n </ul>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Directive,\n ElementRef,\n HostBinding,\n Input,\n QueryList,\n TemplateRef,\n ViewChild,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { HasElementRef, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconFont } from '@fundamental-ngx/core/icon';\nimport { TabConfig } from '../../interfaces/tab-config.interface';\nimport { SemanticColor } from '../../types';\n\nlet defaultIdIndex = 0;\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fdp-icon-tab-bar-tab-content',\n standalone: true\n})\nexport class IconTabBarTabContentDirective implements HasElementRef {\n /** Tab ID. */\n @HostBinding('attr.id')\n @Input()\n id: Nullable<string>;\n\n /** Tab Unique ID. */\n @Input()\n uId: Nullable<string>;\n\n /** Element reference. */\n readonly elementRef = inject(ElementRef);\n}\n\n@Component({\n selector: 'fdp-icon-tab-bar-tab',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './icon-tab-bar-tab.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class IconTabBarTabComponent implements TabConfig {\n /** Tab Label. */\n @Input()\n label: Nullable<string>;\n\n /** Tab text color. */\n @Input()\n color: SemanticColor;\n\n /** Tab icon. */\n @Input()\n icon: string;\n\n /** Tab icon font family. */\n @Input()\n iconFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n /** Tab counter. */\n @Input()\n counter: number;\n\n /** whether the tab is selected */\n @Input({ transform: booleanAttribute })\n active = false;\n\n /** if set to true, will show red circle in top-right corner of tab */\n @Input({ transform: booleanAttribute })\n badge = false;\n\n /** Whether the tab can be closed. */\n @Input({ transform: booleanAttribute })\n closable = false;\n\n /** Tab ID. */\n @Input()\n id = `fdp-icon-tab-bar-tab-${defaultIdIndex++}`;\n\n /** Content renderer. */\n @ViewChild('renderer')\n readonly renderer: TemplateRef<any>;\n\n /** @hidden */\n @ContentChildren(IconTabBarTabComponent)\n readonly children: QueryList<IconTabBarTabComponent>;\n}\n","<ng-template #renderer>\n <ng-content></ng-content>\n</ng-template>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[fdpIconTabBarFreeContent]',\n standalone: true\n})\nexport class IconTabBarFreeContentDirective {}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Optional,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n inject,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ContentDensityService, Nullable, RtlService, scrollTop } from '@fundamental-ngx/cdk/utils';\nimport { FD_DYNAMIC_PAGE } from '@fundamental-ngx/core/dynamic-page';\nimport { IconFont } from '@fundamental-ngx/core/icon';\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 { fromEvent } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, first, startWith } from 'rxjs/operators';\nimport { IconTabBarBase } from './components';\nimport { IconTabBarFilterTypeComponent } from './components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component';\nimport { IconTabBarIconTypeComponent } from './components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component';\nimport { IconTabBarProcessTypeComponent } from './components/icon-tab-bar-process-type/icon-tab-bar-process-type.component';\nimport {\n IconTabBarTabComponent,\n IconTabBarTabContentDirective\n} from './components/icon-tab-bar-tab/icon-tab-bar-tab.component';\nimport { IconTabBarTextTypeComponent } from './components/icon-tab-bar-text-type/icon-tab-bar-text-type.component';\nimport { UNIQUE_KEY_SEPARATOR } from './constants';\nimport { IconTabBarItem } from './interfaces/icon-tab-bar-item.interface';\nimport { TabColorAssociations } from './interfaces/tab-color-associations.interface';\nimport { TabConfig } from './interfaces/tab-config.interface';\nimport { IconTabBarBackground, IconTabBarSize, TabDestinyMode, TabType } from './types';\n\n@Component({\n selector: 'fdp-icon-tab-bar',\n templateUrl: './icon-tab-bar.component.html',\n styleUrl: './icon-tab-bar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n providers: [\n {\n provide: FD_TABLIST,\n useExisting: IconTabBarComponent\n }\n ],\n imports: [\n NgTemplateOutlet,\n IconTabBarProcessTypeComponent,\n IconTabBarFilterTypeComponent,\n IconTabBarIconTypeComponent,\n IconTabBarTextTypeComponent,\n ScrollbarDirective,\n ScrollSpyDirective,\n IconTabBarTabContentDirective\n ]\n})\nexport class IconTabBarComponent implements OnInit, AfterViewInit, TabList {\n /**\n * @description Type of tab bar view.\n */\n @Input()\n iconTabType: TabType = 'text';\n\n /**\n * @description A tab bar configuration that stores the state of each tab. Based on this configuration, a tab bar is representing.\n */\n @Input()\n set tabsConfig(value: TabConfig[]) {\n this._tabsConfig$.set(value);\n }\n\n get tabsConfig(): TabConfig[] {\n return this._tabsConfig$();\n }\n\n /**\n * @description Destiny mode.\n */\n @Input()\n densityMode: TabDestinyMode = 'inherit';\n\n /**\n * @description Icon font\n */\n @Input()\n iconTabFont: IconFont = 'SAP-icons';\n\n /**\n * @description Disable or enable reordering(drag and drop) feature. (supported by text type only)\n */\n @Input()\n enableTabReordering = false;\n\n /**\n * @description Boolean flag indicating to show total tab.(supported by filter type only)\n */\n @Input()\n showTotalTab = true;\n\n /** Whether to render icon tab item as multi-click variant. */\n @Input()\n multiClick = false;\n\n /**\n * @description Layout type for tab (supported by text type only)\n */\n @Input()\n layoutMode: 'row' | 'column' = 'row';\n\n /**\n * @description Icon tab bar background type.\n */\n @Input()\n iconTabBackground: IconTabBarBackground = 'solid';\n\n /**\n * @description Icon tab bar size.\n */\n @Input()\n iconTabSize: IconTabBarSize;\n\n /**\n * @description Associations for colors of the tabs.\n * If any of the color associations provided, they'll be read by screenreader instead of the actual color\n */\n @Input()\n colorAssociations: TabColorAssociations;\n\n /**\n * Whether to open tab content one under another without collapsing.\n * Works only for content-projected tab content.\n */\n @Input({ transform: booleanAttribute })\n stackContent = false;\n\n /**\n * Maximum height of the content.\n * Works only for content-projected tab content.\n */\n @Input()\n maxContentHeight = '100%';\n\n /**\n * @description Emits when some tab is selected.\n */\n @Output()\n iconTabSelected = new EventEmitter<IconTabBarItem>();\n\n /**\n * @description Emits when user drop tab.\n */\n @Output()\n iconTabReordered = new EventEmitter<IconTabBarItem[]>();\n\n /** Event emitted when user clicks on x icon in tab. */\n @Output()\n closeTab = new EventEmitter<IconTabBarItem>();\n\n /** @hidden */\n @ContentChildren(IconTabBarTabComponent, { descendants: false })\n children: QueryList<IconTabBarTabComponent>;\n\n /** @hidden */\n @ContentChildren(IconTabBarTabComponent, { descendants: true })\n allChildren: QueryList<IconTabBarTabComponent>;\n\n /** @hidden */\n @ViewChild(ScrollbarDirective)\n _scrollbar: ScrollbarDirective;\n\n /** @hidden */\n @ViewChildren(IconTabBarTabContentDirective)\n tabDirectives: QueryList<IconTabBarTabContentDirective>;\n\n @HostBinding('class.fd-tabs-custom')\n private get _customTabs(): boolean {\n return this._inDynamicPahe;\n }\n\n @ViewChild(IconTabBarBase)\n private readonly _iconTabBarCmp: Nullable<IconTabBarBase>;\n\n /** @hidden */\n get headerContainer(): Nullable<ElementRef> {\n return this._iconTabBarCmp?.headerElement;\n }\n\n /** @hidden */\n _cssClassForContainer: string[];\n\n /** @hidden */\n _disableScrollSpy = false;\n\n /** @hidden */\n _init = true;\n\n /** Scrollable element reference. */\n get scrollableElement(): Nullable<ElementRef> {\n return this._scrollbar?.elementRef;\n }\n\n /** @hidden */\n readonly _selectedUid = signal<string | undefined>(undefined);\n\n /** @hidden */\n readonly _tabs$ = computed(() => this._generateTabBarItems(this._tabsConfig$()));\n\n /** @hidden */\n readonly _flatTabs$ = computed(() => this._generateFlatTabs(this._tabs$()));\n\n /** @hidden */\n readonly _tabRenderer$ = signal<IconTabBarItem | null>(null);\n\n /** @hidden */\n readonly _tabRenderers$ = signal<{ renderer: TemplateRef<any>; id: string }[]>([]);\n\n /** @hidden */\n readonly _rtl$ = computed(() => !!this._rtlService?.rtlSignal());\n\n /** @hidden */\n readonly _tabsConfig$ = signal<TabConfig[]>([]);\n\n /** @hidden */\n private readonly _destroyRef = inject(DestroyRef);\n\n private readonly _inDynamicPahe = !!inject(FD_DYNAMIC_PAGE, { optional: true });\n\n /** @hidden */\n constructor(\n private _cd: ChangeDetectorRef,\n @Optional() private _contentDensityService: ContentDensityService,\n @Optional() private _rtlService: RtlService\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._cssClassForContainer = this._generateContainerStyles();\n\n if (this.densityMode === 'inherit') {\n this._contentDensityService?._contentDensityListener\n .pipe(distinctUntilChanged(), takeUntilDestroyed(this._destroyRef))\n .subscribe((density) => {\n this.densityMode = density;\n if (density !== 'compact') {\n this._cssClassForContainer = this._cssClassForContainer.filter(\n (cssClass) => cssClass !== 'fd-icon-tab-bar--compact'\n );\n } else {\n this._cssClassForContainer.push('fd-icon-tab-bar--compact');\n }\n this._cd.detectChanges();\n });\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.children.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n const projectedTabs = this.children.toArray();\n\n if (projectedTabs.length === 0) {\n return;\n }\n\n this.tabsConfig = projectedTabs.map((t) => this._generateTabConfig(t));\n this._cd.detectChanges();\n });\n\n this.allChildren.changes.pipe(startWith(null), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n this._tabRenderers$.set(\n this.allChildren.map((c) => ({\n renderer: c.renderer,\n id: c.id\n }))\n );\n });\n }\n\n /**\n * @hidden\n * @param event reordered array of IconTabBarItem\n */\n _onReorder(event: IconTabBarItem[]): void {\n this.iconTabReordered.emit(event);\n }\n\n /**\n * @hidden\n * @param selectedItem\n */\n _selectItem(selectedItem: IconTabBarItem): void {\n this._tabRenderer$.set(selectedItem);\n this.iconTabSelected.emit(selectedItem);\n\n if (this.stackContent) {\n this._scrollToPanel(this.tabDirectives.find((tab) => tab.uId === selectedItem.uId)!);\n }\n }\n\n /** @hidden */\n _closeTab(item: IconTabBarItem): void {\n this.closeTab.emit(item);\n }\n\n /** Programmatically select tab. */\n selectTab(id: Nullable<string>): void {\n const selectedItem = this._flatTabs$().find((t) => t.id === id);\n if (!selectedItem) {\n return;\n }\n this._selectedUid.set(selectedItem.uId);\n this._selectItem(selectedItem);\n this._cd.detectChanges();\n }\n\n /** @hidden */\n highlightActiveTab(id: Nullable<string>, scroll = false): void {\n if (this._disableScrollSpy) {\n return;\n }\n const activeTab = this.tabDirectives.find((tab) => tab.id === id);\n this._selectedUid.set(activeTab?.uId || undefined);\n if (scroll && activeTab) {\n this._scrollToPanel(activeTab);\n }\n }\n\n /**\n * @hidden\n * @returns array of css classes for icon-tab-bar container\n */\n private _generateContainerStyles(): string[] {\n const styles = [`fd-icon-tab-bar--${this.iconTabType}`];\n if (this.iconTabType === 'process' && this.tabsConfig[0].icon) {\n styles.push('fd-icon-tab-bar--icon');\n }\n if (this.iconTabBackground !== 'solid') {\n styles.push(`fd-icon-tab-bar--${this.iconTabBackground}`);\n }\n if (this.iconTabSize) {\n styles.push(`fd-icon-tab-bar--${this.iconTabSize}`);\n }\n if (this.densityMode === 'compact') {\n styles.push('fd-icon-tab-bar--compact');\n }\n if (this.layoutMode === 'column') {\n styles.push('fd-icon-tab-bar--counters');\n }\n return styles;\n }\n\n private _generateTabConfig(tab: IconTabBarTabComponent): TabConfig {\n const tabConfig: TabConfig = {\n label: tab.label,\n color: tab.color,\n active: tab.active,\n counter: tab.counter,\n renderer: tab.renderer,\n id: tab.id,\n subItems: tab.children.map((c) => this._generateTabConfig(c))\n };\n\n return tabConfig;\n }\n\n /** @hidden */\n private _scrollToPanel(tabPanel: Nullable<IconTabBarTabContentDirective>): void {\n if (!tabPanel) {\n return;\n }\n const panelElement = tabPanel.elementRef.nativeElement;\n const containerElement = this._scrollbar.elementRef.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._disableScrollSpy = true;\n fromEvent(containerElement, 'scroll')\n .pipe(debounceTime(100), first(), takeUntilDestroyed(this._destroyRef))\n .subscribe(() => (this._disableScrollSpy = false));\n scrollTop(containerElement, distanceToScroll);\n }\n }\n\n /**\n * @hidden\n * @description generate IconTabItems from TabConfig array\n */\n private _generateTabBarItems(\n config: TabConfig[],\n indexPrefix = '',\n flatIndexRef?: FlatIndex,\n parentUId?: string\n ): IconTabBarItem[] {\n flatIndexRef = flatIndexRef || { value: 0 };\n return config.map((item, index) => {\n const uId = `${indexPrefix}${index}`;\n const result: IconTabBarItem = {\n ...item,\n index,\n cssClasses: [],\n uId,\n hidden: false,\n parentUId,\n flatIndex: flatIndexRef!.value++,\n subItems: this._generateTabBarItems(\n item.subItems || [],\n `${uId}${UNIQUE_KEY_SEPARATOR}`,\n flatIndexRef,\n uId\n )\n };\n if (item.color) {\n result.cssClasses = [`fd-icon-tab-bar__item--${item.color}`];\n }\n return result;\n });\n }\n\n private _generateFlatTabs(tabs: IconTabBarItem[]): IconTabBarItem[] {\n const flatTabs = tabs.reduce((acc: IconTabBarItem[], tab) => {\n acc.push(tab);\n if (tab.subItems) {\n acc.push(...this._generateFlatTabs(tab.subItems));\n }\n return acc;\n }, []);\n\n return flatTabs;\n }\n}\n\n/** @hidden helper object that is used in tab generation functions to calculate their indexes not depending on level of nesting */\ninterface FlatIndex {\n value: number;\n}\n","<div class=\"fd-icon-tab-bar\" [class]=\"_cssClassForContainer\">\n @if (iconTabType === 'text') {\n <ng-template [ngTemplateOutlet]=\"textType\"></ng-template>\n }\n @if (iconTabType === 'icon' || iconTabType === 'icon-only') {\n <ng-template [ngTemplateOutlet]=\"iconType\"></ng-template>\n }\n @if (iconTabType === 'filter') {\n <ng-template [ngTemplateOutlet]=\"filterType\"></ng-template>\n }\n @if (iconTabType === 'process') {\n <ng-template [ngTemplateOutlet]=\"processType\"></ng-template>\n }\n <div\n class=\"fd-icon-tab-bar__content\"\n fd-scrollbar\n (spyChange)=\"highlightActiveTab($event.id)\"\n [scrollSpyDisabled]=\"!stackContent || _disableScrollSpy\"\n fdScrollSpy\n [trackedTags]=\"['fdp-icon-tab-bar-tab-content']\"\n [style.max-height]=\"maxContentHeight\"\n >\n @if (stackContent) {\n @for (tab of _flatTabs$(); track tab) {\n <fdp-icon-tab-bar-tab-content [id]=\"tab.id\" [uId]=\"tab.uId\" class=\"fd-icon-tab-bar__tab-content\">\n <ng-template [ngTemplateOutlet]=\"tab.renderer || null\"></ng-template>\n </fdp-icon-tab-bar-tab-content>\n }\n } @else {\n @if (_tabRenderer$(); as tabRenderer) {\n <fdp-icon-tab-bar-tab-content\n [id]=\"tabRenderer.id\"\n [uId]=\"tabRenderer.uId\"\n class=\"fd-icon-tab-bar__tab-content\"\n >\n <ng-template [ngTemplateOutlet]=\"tabRenderer.renderer || null\"></ng-template>\n </fdp-icon-tab-bar-tab-content>\n }\n }\n <ng-content select=\"[fdpIconTabBarFreeContent]\"></ng-content>\n </div>\n</div>\n<ng-template #processType>\n <fdp-icon-tab-bar-process-type\n [tabs]=\"_tabs$()\"\n [isRtl]=\"_rtl$()\"\n [selectedUid]=\"_selectedUid()\"\n (selectedUidChange)=\"_selectedUid.set($event)\"\n [densityMode]=\"densityMode\"\n [colorAssociations]=\"colorAssociations\"\n (selected)=\"_selectItem($event)\"\n ></fdp-icon-tab-bar-process-type>\n</ng-template>\n<ng-template #filterType>\n <fdp-icon-tab-bar-filter-type\n [tabs]=\"_tabs$()\"\n [showTotalTab]=\"showTotalTab\"\n [isRtl]=\"_rtl$()\"\n [selectedUid]=\"_selectedUid()\"\n (selectedUidChange)=\"_selectedUid.set($event)\"\n [densityMode]=\"densityMode\"\n [colorAssociations]=\"colorAssociations\"\n (selected)=\"_selectItem($event)\"\n ></fdp-icon-tab-bar-filter-type>\n</ng-template>\n<ng-template #iconType>\n <fdp-icon-tab-bar-icon-type\n [showLabel]=\"iconTabType === 'icon'\"\n [tabs]=\"_tabs$()\"\n [isRtl]=\"_rtl$()\"\n [selectedUid]=\"_selectedUid()\"\n (selectedUidChange)=\"_selectedUid.set($event)\"\n [densityMode]=\"densityMode\"\n [colorAssociations]=\"colorAssociations\"\n (selected)=\"_selectItem($event)\"\n (closeTab)=\"_closeTab($event)\"\n ></fdp-icon-tab-bar-icon-type>\n</ng-template>\n<ng-template #textType>\n <fdp-icon-tab-bar-text-type\n [tabs]=\"_tabs$()\"\n [multiClick]=\"multiClick\"\n [layoutMode]=\"layoutMode\"\n [isRtl]=\"_rtl$()\"\n [selectedUid]=\"_selectedUid()\"\n (selectedUidChange)=\"_selectedUid.set($event)\"\n [densityMode]=\"densityMode\"\n [enableTabReordering]=\"enableTabReordering\"\n [colorAssociations]=\"colorAssociations\"\n (reordered)=\"_onReorder($event)\"\n (selected)=\"_selectItem($event)\"\n (closeTab)=\"_closeTab($event)\"\n ></fdp-icon-tab-bar-text-type>\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { IconTabBarFilterTypeComponent } from './components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component';\nimport { IconTabBarIconTypeComponent } from './components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component';\nimport { IconTabBarProcessTypeComponent } from './components/icon-tab-bar-process-type/icon-tab-bar-process-type.component';\nimport { IconTabBarTabComponent } from './components/icon-tab-bar-tab/icon-tab-bar-tab.component';\nimport { IconTabBarTextTypeComponent } from './components/icon-tab-bar-text-type/icon-tab-bar-text-type.component';\nimport { IconTabBarPopoverComponent } from './components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component';\nimport { TextTypePopoverComponent } from './components/popovers/text-type-popover/text-type-popover.component';\nimport { IconBarDndContainerDirective } from './directives/dnd/icon-bar-dnd-container.directive';\nimport { IconBarDndItemDirective } from './directives/dnd/icon-bar-dnd-item.directive';\nimport { IconBarDndListDirective } from './directives/dnd/icon-bar-dnd-list.directive';\nimport { IconTabBarFreeContentDirective } from './directives/icon-tab-bar-free-content.directive';\nimport { IconTabBarComponent } from './icon-tab-bar.component';\n\nconst components = [\n IconTabBarComponent,\n IconTabBarTextTypeComponent,\n IconTabBarIconTypeComponent,\n IconTabBarProcessTypeComponent,\n IconTabBarFilterTypeComponent,\n IconTabBarPopoverComponent,\n TextTypePopoverComponent,\n IconBarDndListDirective,\n IconBarDndItemDirective,\n IconBarDndContainerDirective,\n IconTabBarTabComponent,\n IconTabBarFreeContentDirective\n];\n\nexport const FDP_ICON_TAB_BAR = [IconTabBarComponent, IconTabBarTabComponent, IconTabBarFreeContentDirective] as const;\n\n/**\n * @deprecated\n * Import `IconTabBarComponent` directly instead.\n */\n@NgModule({\n imports: [...components],\n exports: [...components]\n})\nexport class PlatformIconTabBarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.IconBarDndContainerDirective","i2.IconBarDndListDirective","i3.IconBarDndContainerDirective","i1"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/platform",
3
- "version": "0.49.0-rc.25",
3
+ "version": "0.49.0-rc.26",
4
4
  "schematics": "./schematics/collection.json",
5
5
  "description": "Fundamental Library for Angular - platform",
6
6
  "license": "Apache-2.0",
@@ -13,9 +13,9 @@
13
13
  "node": ">= 10"
14
14
  },
15
15
  "peerDependencies": {
16
- "@fundamental-ngx/cdk": "0.49.0-rc.25",
17
- "@fundamental-ngx/core": "0.49.0-rc.25",
18
- "@fundamental-ngx/i18n": "0.49.0-rc.25"
16
+ "@fundamental-ngx/cdk": "0.49.0-rc.26",
17
+ "@fundamental-ngx/core": "0.49.0-rc.26",
18
+ "@fundamental-ngx/i18n": "0.49.0-rc.26"
19
19
  },
20
20
  "dependencies": {
21
21
  "fast-deep-equal": "3.1.3",