@testgorilla/tgo-ui 2.33.17 → 2.33.18

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.
@@ -13,6 +13,7 @@ export declare class TabDirective implements OnInit {
13
13
  nextTab: Tab;
14
14
  }) => boolean | Promise<boolean>) | undefined>;
15
15
  linkUrl: import("@angular/core").InputSignal<string | undefined>;
16
+ order: import("@angular/core").InputSignal<number | undefined>;
16
17
  private tabsComponent;
17
18
  private template;
18
19
  private syncProps;
@@ -20,5 +21,5 @@ export declare class TabDirective implements OnInit {
20
21
  ngOnInit(): void;
21
22
  private addTab;
22
23
  static ɵfac: i0.ɵɵFactoryDeclaration<TabDirective, never>;
23
- static ɵdir: i0.ɵɵDirectiveDeclaration<TabDirective, "ng-template[uiTab]", never, { "tabLabel": { "alias": "tabLabel"; "required": true; "isSignal": true; }; "tabName": { "alias": "tabName"; "required": true; "isSignal": true; }; "iconLeft": { "alias": "iconLeft"; "required": false; "isSignal": true; }; "iconRight": { "alias": "iconRight"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "canLeave": { "alias": "canLeave"; "required": false; "isSignal": true; }; "linkUrl": { "alias": "linkUrl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
24
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TabDirective, "ng-template[uiTab]", never, { "tabLabel": { "alias": "tabLabel"; "required": true; "isSignal": true; }; "tabName": { "alias": "tabName"; "required": true; "isSignal": true; }; "iconLeft": { "alias": "iconLeft"; "required": false; "isSignal": true; }; "iconRight": { "alias": "iconRight"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "canLeave": { "alias": "canLeave"; "required": false; "isSignal": true; }; "linkUrl": { "alias": "linkUrl"; "required": false; "isSignal": true; }; "order": { "alias": "order"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
24
25
  }
@@ -57,9 +57,12 @@ export declare class TabsComponent {
57
57
  protected tabs: Tab[];
58
58
  readonly tabIndex: import("@angular/core").WritableSignal<number>;
59
59
  protected tabIndexMap: Record<string, number>;
60
+ private insertionCounter;
60
61
  constructor(defaultAppTheme: ApplicationTheme, isMobile$: Observable<boolean>);
61
62
  ngAfterViewInit(): void;
62
63
  addTab(tab: Tab): void;
64
+ private sortTabs;
65
+ private updateTabIndexMap;
63
66
  onTabChange(ev: MatTabChangeEvent): void;
64
67
  selectTab(tabName: string): void;
65
68
  indexOf(tabName: string): number;
@@ -12,5 +12,6 @@ export interface Tab {
12
12
  }) => boolean | Promise<boolean>;
13
13
  linkUrl?: string;
14
14
  ariaLabel?: string;
15
+ order?: number;
15
16
  }
16
17
  export type TabsType = 'underlined' | 'filled';
@@ -10,6 +10,7 @@ export class TabDirective {
10
10
  this.disabled = input(false, { transform: booleanAttribute });
11
11
  this.canLeave = input();
12
12
  this.linkUrl = input();
13
+ this.order = input();
13
14
  this.tabsComponent = inject(TabsComponent);
14
15
  this.template = inject(TemplateRef);
15
16
  this.syncProps = effect(() => {
@@ -20,6 +21,7 @@ export class TabDirective {
20
21
  disabled: this.disabled(),
21
22
  canLeave: this.canLeave(),
22
23
  linkUrl: this.linkUrl(),
24
+ order: this.order(),
23
25
  });
24
26
  });
25
27
  this.cleanup = inject(DestroyRef).onDestroy(() => {
@@ -39,10 +41,11 @@ export class TabDirective {
39
41
  contentTemplateRef: this.template,
40
42
  canLeave: this.canLeave(),
41
43
  linkUrl: this.linkUrl(),
44
+ order: this.order(),
42
45
  });
43
46
  }
44
47
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
45
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.12", type: TabDirective, isStandalone: true, selector: "ng-template[uiTab]", inputs: { tabLabel: { classPropertyName: "tabLabel", publicName: "tabLabel", isSignal: true, isRequired: true, transformFunction: null }, tabName: { classPropertyName: "tabName", publicName: "tabName", isSignal: true, isRequired: true, transformFunction: null }, iconLeft: { classPropertyName: "iconLeft", publicName: "iconLeft", isSignal: true, isRequired: false, transformFunction: null }, iconRight: { classPropertyName: "iconRight", publicName: "iconRight", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, canLeave: { classPropertyName: "canLeave", publicName: "canLeave", isSignal: true, isRequired: false, transformFunction: null }, linkUrl: { classPropertyName: "linkUrl", publicName: "linkUrl", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
48
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.12", type: TabDirective, isStandalone: true, selector: "ng-template[uiTab]", inputs: { tabLabel: { classPropertyName: "tabLabel", publicName: "tabLabel", isSignal: true, isRequired: true, transformFunction: null }, tabName: { classPropertyName: "tabName", publicName: "tabName", isSignal: true, isRequired: true, transformFunction: null }, iconLeft: { classPropertyName: "iconLeft", publicName: "iconLeft", isSignal: true, isRequired: false, transformFunction: null }, iconRight: { classPropertyName: "iconRight", publicName: "iconRight", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, canLeave: { classPropertyName: "canLeave", publicName: "canLeave", isSignal: true, isRequired: false, transformFunction: null }, linkUrl: { classPropertyName: "linkUrl", publicName: "linkUrl", isSignal: true, isRequired: false, transformFunction: null }, order: { classPropertyName: "order", publicName: "order", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
46
49
  }
47
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabDirective, decorators: [{
48
51
  type: Directive,
@@ -51,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
51
54
  selector: 'ng-template[uiTab]',
52
55
  }]
53
56
  }] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy90YWJzL3RhYi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFPakQsTUFBTSxPQUFPLFlBQVk7SUFKekI7UUFLRSxhQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ3BDLFlBQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDbkMsYUFBUSxHQUFHLEtBQUssRUFBWSxDQUFDO1FBQzdCLGNBQVMsR0FBRyxLQUFLLEVBQVksQ0FBQztRQUM5QixhQUFRLEdBQUcsS0FBSyxDQUFrQixLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLGFBQVEsR0FBRyxLQUFLLEVBQTJFLENBQUM7UUFDNUYsWUFBTyxHQUFHLEtBQUssRUFBVSxDQUFDO1FBRWxCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RDLGFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFL0IsY0FBUyxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUMzQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDekIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUMzQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDekIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO2FBQ3hCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUssWUFBTyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO0tBa0JKO0lBaEJDLFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVPLE1BQU07UUFDWixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztZQUN4QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUN2QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUMzQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN6QixrQkFBa0IsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNqQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRTtTQUN4QixDQUFDLENBQUM7SUFDTCxDQUFDOytHQTFDVSxZQUFZO21HQUFaLFlBQVk7OzRGQUFaLFlBQVk7a0JBSnhCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxvQkFBb0I7aUJBQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYm9vbGVhbkF0dHJpYnV0ZSwgRGVzdHJveVJlZiwgRGlyZWN0aXZlLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEljb25OYW1lIH0gZnJvbSAnLi4vaWNvbi9pY29uLm1vZGVsJztcbmltcG9ydCB7IFRhYnNDb21wb25lbnQgfSBmcm9tICcuL3RhYnMuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYiB9IGZyb20gJy4vdGFicy5tb2RlbCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ25nLXRlbXBsYXRlW3VpVGFiXScsXG59KVxuZXhwb3J0IGNsYXNzIFRhYkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHRhYkxhYmVsID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICB0YWJOYW1lID0gaW5wdXQucmVxdWlyZWQ8c3RyaW5nPigpO1xuICBpY29uTGVmdCA9IGlucHV0PEljb25OYW1lPigpO1xuICBpY29uUmlnaHQgPSBpbnB1dDxJY29uTmFtZT4oKTtcbiAgZGlzYWJsZWQgPSBpbnB1dDxib29sZWFuLCBzdHJpbmc+KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcbiAgY2FuTGVhdmUgPSBpbnB1dDwoY3R4PzogeyBjdXJyZW50VGFiOiBUYWI7IG5leHRUYWI6IFRhYiB9KSA9PiBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPj4oKTtcbiAgbGlua1VybCA9IGlucHV0PHN0cmluZz4oKTtcblxuICBwcml2YXRlIHRhYnNDb21wb25lbnQgPSBpbmplY3QoVGFic0NvbXBvbmVudCk7XG4gIHByaXZhdGUgdGVtcGxhdGUgPSBpbmplY3QoVGVtcGxhdGVSZWYpO1xuXG4gIHByaXZhdGUgc3luY1Byb3BzID0gZWZmZWN0KCgpID0+IHtcbiAgICB0aGlzLnRhYnNDb21wb25lbnQudXBkYXRlVGFiKHRoaXMudGFiTmFtZSgpLCB7XG4gICAgICB0YWJMYWJlbDogdGhpcy50YWJMYWJlbCgpLFxuICAgICAgaWNvbkxlZnQ6IHRoaXMuaWNvbkxlZnQoKSxcbiAgICAgIGljb25SaWdodDogdGhpcy5pY29uUmlnaHQoKSxcbiAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkKCksXG4gICAgICBjYW5MZWF2ZTogdGhpcy5jYW5MZWF2ZSgpLFxuICAgICAgbGlua1VybDogdGhpcy5saW5rVXJsKCksXG4gICAgfSk7XG4gIH0pO1xuXG4gIHByaXZhdGUgY2xlYW51cCA9IGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3koKCkgPT4ge1xuICAgIHRoaXMudGFic0NvbXBvbmVudC5yZW1vdmVUYWIodGhpcy50YWJOYW1lKCkpO1xuICB9KTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZFRhYigpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRUYWIoKTogdm9pZCB7XG4gICAgdGhpcy50YWJzQ29tcG9uZW50LmFkZFRhYih7XG4gICAgICB0YWJMYWJlbDogdGhpcy50YWJMYWJlbCgpLFxuICAgICAgdGFiTmFtZTogdGhpcy50YWJOYW1lKCksXG4gICAgICBpY29uTGVmdDogdGhpcy5pY29uTGVmdCgpLFxuICAgICAgaWNvblJpZ2h0OiB0aGlzLmljb25SaWdodCgpLFxuICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQoKSxcbiAgICAgIGNvbnRlbnRUZW1wbGF0ZVJlZjogdGhpcy50ZW1wbGF0ZSxcbiAgICAgIGNhbkxlYXZlOiB0aGlzLmNhbkxlYXZlKCksXG4gICAgICBsaW5rVXJsOiB0aGlzLmxpbmtVcmwoKSxcbiAgICB9KTtcbiAgfVxufVxuIl19
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy90YWJzL3RhYi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFPakQsTUFBTSxPQUFPLFlBQVk7SUFKekI7UUFLRSxhQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBQ3BDLFlBQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFVLENBQUM7UUFDbkMsYUFBUSxHQUFHLEtBQUssRUFBWSxDQUFDO1FBQzdCLGNBQVMsR0FBRyxLQUFLLEVBQVksQ0FBQztRQUM5QixhQUFRLEdBQUcsS0FBSyxDQUFrQixLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLGFBQVEsR0FBRyxLQUFLLEVBQTJFLENBQUM7UUFDNUYsWUFBTyxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQzFCLFVBQUssR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUVoQixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0QyxhQUFRLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRS9CLGNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDM0MsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDM0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUU7YUFDcEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSyxZQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDLENBQUM7S0FtQko7SUFqQkMsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRU8sTUFBTTtRQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ3hCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzNCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3pCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ2pDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFO1NBQ3BCLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBN0NVLFlBQVk7bUdBQVosWUFBWTs7NEZBQVosWUFBWTtrQkFKeEIsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLG9CQUFvQjtpQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgT25Jbml0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWNvbk5hbWUgfSBmcm9tICcuLi9pY29uL2ljb24ubW9kZWwnO1xuaW1wb3J0IHsgVGFic0NvbXBvbmVudCB9IGZyb20gJy4vdGFicy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFiIH0gZnJvbSAnLi90YWJzLm1vZGVsJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnbmctdGVtcGxhdGVbdWlUYWJdJyxcbn0pXG5leHBvcnQgY2xhc3MgVGFiRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgdGFiTGFiZWwgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIHRhYk5hbWUgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XG4gIGljb25MZWZ0ID0gaW5wdXQ8SWNvbk5hbWU+KCk7XG4gIGljb25SaWdodCA9IGlucHV0PEljb25OYW1lPigpO1xuICBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4sIHN0cmluZz4oZmFsc2UsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuICBjYW5MZWF2ZSA9IGlucHV0PChjdHg/OiB7IGN1cnJlbnRUYWI6IFRhYjsgbmV4dFRhYjogVGFiIH0pID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+PigpO1xuICBsaW5rVXJsID0gaW5wdXQ8c3RyaW5nPigpO1xuICBvcmRlciA9IGlucHV0PG51bWJlcj4oKTtcblxuICBwcml2YXRlIHRhYnNDb21wb25lbnQgPSBpbmplY3QoVGFic0NvbXBvbmVudCk7XG4gIHByaXZhdGUgdGVtcGxhdGUgPSBpbmplY3QoVGVtcGxhdGVSZWYpO1xuXG4gIHByaXZhdGUgc3luY1Byb3BzID0gZWZmZWN0KCgpID0+IHtcbiAgICB0aGlzLnRhYnNDb21wb25lbnQudXBkYXRlVGFiKHRoaXMudGFiTmFtZSgpLCB7XG4gICAgICB0YWJMYWJlbDogdGhpcy50YWJMYWJlbCgpLFxuICAgICAgaWNvbkxlZnQ6IHRoaXMuaWNvbkxlZnQoKSxcbiAgICAgIGljb25SaWdodDogdGhpcy5pY29uUmlnaHQoKSxcbiAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkKCksXG4gICAgICBjYW5MZWF2ZTogdGhpcy5jYW5MZWF2ZSgpLFxuICAgICAgbGlua1VybDogdGhpcy5saW5rVXJsKCksXG4gICAgICBvcmRlcjogdGhpcy5vcmRlcigpLFxuICAgIH0pO1xuICB9KTtcblxuICBwcml2YXRlIGNsZWFudXAgPSBpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHtcbiAgICB0aGlzLnRhYnNDb21wb25lbnQucmVtb3ZlVGFiKHRoaXMudGFiTmFtZSgpKTtcbiAgfSk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRUYWIoKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkVGFiKCk6IHZvaWQge1xuICAgIHRoaXMudGFic0NvbXBvbmVudC5hZGRUYWIoe1xuICAgICAgdGFiTGFiZWw6IHRoaXMudGFiTGFiZWwoKSxcbiAgICAgIHRhYk5hbWU6IHRoaXMudGFiTmFtZSgpLFxuICAgICAgaWNvbkxlZnQ6IHRoaXMuaWNvbkxlZnQoKSxcbiAgICAgIGljb25SaWdodDogdGhpcy5pY29uUmlnaHQoKSxcbiAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkKCksXG4gICAgICBjb250ZW50VGVtcGxhdGVSZWY6IHRoaXMudGVtcGxhdGUsXG4gICAgICBjYW5MZWF2ZTogdGhpcy5jYW5MZWF2ZSgpLFxuICAgICAgbGlua1VybDogdGhpcy5saW5rVXJsKCksXG4gICAgICBvcmRlcjogdGhpcy5vcmRlcigpLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -60,6 +60,8 @@ export class TabsComponent {
60
60
  this.tabs = [];
61
61
  this.tabIndex = signal(0);
62
62
  this.tabIndexMap = {};
63
+ // Counter for default ordering when order is not specified
64
+ this.insertionCounter = 0;
63
65
  if (defaultAppTheme) {
64
66
  this.applicationTheme = defaultAppTheme;
65
67
  }
@@ -107,8 +109,29 @@ export class TabsComponent {
107
109
  });
108
110
  }
109
111
  addTab(tab) {
112
+ // If no explicit order is provided, use the insertion counter
113
+ if (tab.order === undefined) {
114
+ tab.order = this.insertionCounter++;
115
+ }
116
+ // Add the tab and sort the tabs array
110
117
  this.tabs.push(tab);
111
- this.tabs.forEach((v, index) => (this.tabIndexMap[v.tabName] = index));
118
+ this.sortTabs();
119
+ // Update the index map
120
+ this.updateTabIndexMap();
121
+ }
122
+ sortTabs() {
123
+ // Sort by the order property (lowest first)
124
+ this.tabs.sort((a, b) => {
125
+ const orderA = a.order ?? Infinity;
126
+ const orderB = b.order ?? Infinity;
127
+ return orderA - orderB;
128
+ });
129
+ }
130
+ updateTabIndexMap() {
131
+ // Update the index map after sorting
132
+ this.tabs.forEach((tab, index) => {
133
+ this.tabIndexMap[tab.tabName] = index;
134
+ });
112
135
  }
113
136
  onTabChange(ev) {
114
137
  const selectedTab = this.tabs[ev.index];
@@ -135,13 +158,18 @@ export class TabsComponent {
135
158
  if (index !== undefined) {
136
159
  this.tabs.splice(index, 1);
137
160
  delete this.tabIndexMap[tabName];
138
- this.tabs.forEach((v, index) => (this.tabIndexMap[v.tabName] = index));
161
+ this.updateTabIndexMap();
139
162
  }
140
163
  }
141
164
  updateTab(tabName, tab) {
142
165
  const index = this.tabIndexMap[tabName];
143
166
  if (index !== undefined) {
144
167
  this.tabs[index] = { ...this.tabs[index], ...tab };
168
+ // Re-sort if the order changed
169
+ if (tab.order !== undefined) {
170
+ this.sortTabs();
171
+ this.updateTabIndexMap();
172
+ }
145
173
  }
146
174
  }
147
175
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabsComponent, deps: [{ token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }, { token: IS_MOBILE_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
@@ -186,4 +214,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
186
214
  type: ViewChild,
187
215
  args: ['tabGroup', { static: true }]
188
216
  }] } });
189
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Z28tY2Fub3B5LXVpL2NvbXBvbmVudHMvdGFicy90YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy90YWJzL3RhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFPckUsTUFBTSxPQUFPLGFBQWE7SUErRHhCLFlBQzZFLGVBQWlDLEVBQ2hFLFNBQThCO1FBREMsb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBQ2hFLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBaEU1RTs7Ozs7O1dBTUc7UUFHSCxpQkFBWSxHQUFrQixTQUFTLENBQUM7UUFDeEM7Ozs7OztXQU1HO1FBQ00sU0FBSSxHQUFhLFlBQVksQ0FBQztRQUV2Qzs7Ozs7V0FLRztRQUNNLHNCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUVqQzs7Ozs7V0FLRztRQUdILHlCQUFvQixHQUFHLE1BQU0sQ0FBQztRQUU5Qjs7OztXQUlHO1FBQ3FDLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBRTdEOzs7Ozs7V0FNRztRQUNNLHFCQUFnQixHQUFxQixPQUFPLENBQUM7UUFFNUMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM5QyxnQkFBVyxHQUFH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QyxnQkFBZ0IscVlDbkV0QyxrbkRBK0NBOzs0RkR2QmEsYUFBYTtrQkFMekIsU0FBUzsrQkFDRSxTQUFTOzswQkFvRWhCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsb0NBQW9DOzswQkFDdkQsTUFBTTsyQkFBQyxlQUFlO3lDQXZEekIsWUFBWTtzQkFGWCxXQUFXO3VCQUFDLGVBQWU7O3NCQUMzQixLQUFLO2dCQVNHLElBQUk7c0JBQVosS0FBSztnQkFRRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBVU4sb0JBQW9CO3NCQUZuQixXQUFXO3VCQUFDLGdDQUFnQzs7c0JBQzVDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxLQUFhLEVBQVUsRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLEVBQUU7Z0JBUXJCLGFBQWE7c0JBQXBELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBUzdCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFFa0MsUUFBUTtzQkFBaEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWIsIFRhYnNUeXBlIH0gZnJvbSAnLi90YWJzLm1vZGVsJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uVGhlbWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXBwbGljYXRpb24tdGhlbWUubW9kZWwnO1xuaW1wb3J0IHsgSVNfTU9CSUxFX1RPS0VOIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL2lzLW1vYmlsZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNYXRUYWIsIE1hdFRhYkNoYW5nZUV2ZW50LCBNYXRUYWJHcm91cCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHsgRU5URVIsIGhhc01vZGlmaWVyS2V5LCBTUEFDRSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLXRhYnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFicy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYnMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFic0NvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBDb2xvciBvZiB0aGUgVGFicy5cbiAgICogRGVmYXVsdHMgdG8gVGVzdCBHb3JpbGxhIHByaW1hcnkgY29sb3IuXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBUYWJzQ29tcG9uZW50XG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tY29sb3InKVxuICBASW5wdXQoKVxuICBjb21wYW55Q29sb3I6IHN0cmluZyB8IG51bGwgPSAnIzQ2QTk5Nyc7XG4gIC8qKlxuICAgKiBUeXBlIHRoZSBUYWJzLlxuICAgKiBEZWZhdWx0cyB1bmRlcmxpbmVkLlxuICAgKlxuICAgKiBAdHlwZSB7VGFic1R5cGV9XG4gICAqIEBtZW1iZXJvZiBUYWJzQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB0eXBlOiBUYWJzVHlwZSA9ICd1bmRlcmxpbmVkJztcblxuICAvKipcbiAgICogQW5pbWF0aW9uIGR1cmF0aW9uIHdoZW4gc3dpdGNoaW5nIHRhYnNcbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIFRhYnNDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFuaW1hdGlvbkR1cmF0aW9uID0gMzAwO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwYWRkaW5nIGZvciBjb250ZW50IGFuZCBoZWFkZXJcbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIFRhYnNDb21wb25lbnRcbiAgICovXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1oZWFkZXItY29udGVudC1wYWRkaW5nJylcbiAgQElucHV0KHsgdHJhbnNmb3JtOiAodmFsdWU6IG51bWJlcik6IHN0cmluZyA9PiB2YWx1ZSArICdweCcgfSlcbiAgaGVhZGVyQ29udGVudFBhZGRpbmcgPSAnMzJweCc7XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGR5bmFtaWMgaGVpZ2h0IG9mIHRoZSB0YWJcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBUYWJzQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZHluYW1pY0hlaWdodCA9IHRydWU7XG5cbiAgLyoqXG4gICAqXG4gICAqIERlZmluZXMgdGhlIGFwcGxpY2F0aW9uIHRoZW1lXG4gICAqXG4gICAqIEB0eXBlIHtBcHBsaWNhdGlvblRoZW1lfVxuICAgKiBAbWVtYmVyb2YgVGFic0NvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYXBwbGljYXRpb25UaGVtZTogQXBwbGljYXRpb25UaGVtZSA9ICdsaWdodCc7XG5cbiAgQE91dHB1dCgpIHNlbGVjdGVkVGFiSW5kZXggPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkVGFiID0gbmV3IEV2ZW50RW1pdHRlcjxUYWI+KCk7XG5cbiAgQFZpZXdDaGlsZCgndGFiR3JvdXAnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJHcm91cDogTWF0VGFiR3JvdXA7XG5cbiAgcHJvdGVjdGVkIHRhYnM6IFRhYltdID0gW107XG4gIHJlYWRvbmx5IHRhYkluZGV4ID0gc2lnbmFsKDApO1xuICBwcm90ZWN0ZWQgdGFiSW5kZXhNYXA6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KCdDQU5PUFlVSV9ERUZBVUxUX0FQUExJQ0FUSU9OX1RIRU1FJykgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0QXBwVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUsXG4gICAgQEluamVjdChJU19NT0JJTEVfVE9LRU4pIHByb3RlY3RlZCByZWFkb25seSBpc01vYmlsZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj5cbiAgKSB7XG4gICAgaWYgKGRlZmF1bHRBcHBUaGVtZSkge1xuICAgICAgdGhpcy5hcHBsaWNhdGlvblRoZW1lID0gZGVmYXVsdEFwcFRoZW1lO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHRhYkhlYWRlciA9ICh0aGlzLnRhYkdyb3VwIGFzIGFueSkuX3RhYkhlYWRlcjtcbiAgICAgIHRhYkhlYWRlci5faGFuZGxlS2V5ZG93biA9IGFzeW5jIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5Q29kZSkge1xuICAgICAgICAgIGNhc2UgRU5URVI6XG4gICAgICAgICAgY2FzZSBTUEFDRTpcbiAgICAgICAgICAgIGNvbnN0IHRhYkxhYmVsID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0O1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFRhYiA9IHRoaXMudGFic1t0aGlzLnRhYkluZGV4KCldO1xuICAgICAgICAgICAgY29uc3QgbmV4dFRhYiA9IHRoaXMudGFicy5maW5kKHRhYiA9PiB0YWIudGFiTGFiZWwgPT09IHRhYkxhYmVsKTtcblxuICAgICAgICAgICAgaWYgKCFuZXh0VGFiKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY2FuTGVhdmUgPSAoYXdhaXQgY3VycmVudFRhYi5jYW5MZWF2ZT8uKHsgY3VycmVudFRhYiwgbmV4dFRhYiB9KSkgPz8gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50VGFiLnRhYk5hbWUgIT09IG5leHRUYWIudGFiTmFtZSAmJiBjYW5MZWF2ZSkge1xuICAgICAgICAgICAgICBjb25zdCBuZXh0VGFiSW5kZXggPSB0aGlzLnRhYkluZGV4TWFwW25leHRUYWIudGFiTmFtZV07XG4gICAgICAgICAgICAgIHRhYkhlYWRlci5mb2N1c0luZGV4ID0gbmV4dFRhYkluZGV4O1xuICAgICAgICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBuZXh0VGFiSW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGFiSGVhZGVyLl9rZXlNYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgICh0aGlzLnRhYkdyb3VwIGFzIGFueSkuX2hhbmRsZUNsaWNrID0gYXN5bmMgKHRhYjogTWF0VGFiLCB0YWJIZWFkZXI6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXg7XG4gICAgICAgIGlmICh0YWIuZGlzYWJsZWQgfHwgY3VycmVudEluZGV4ID09PSB1bmRlZmluZWQgfHwgaW5kZXggPT09IGN1cnJlbnRJbmRleCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50VGFiID0gdGhpcy50YWJzW3RoaXMudGFiSW5kZXgoKV07XG4gICAgICAgIGNvbnN0IG5leHRUYWIgPSB0aGlzLnRhYnNbaW5kZXhdO1xuICAgICAgICBjb25zdCBjYW5MZWF2ZSA9IChhd2FpdCBjdXJyZW50VGFiLmNhbkxlYXZlPy4oeyBjdXJyZW50VGFiLCBuZXh0VGFiIH0pKSA/PyB0cnVlO1xuICAgICAgICBpZiAodGhpcy50YWJHcm91cC5zZWxlY3RlZEluZGV4ICE9IGluZGV4ICYmIGNhbkxlYXZlKSB7XG4gICAgICAgICAgdGFiSGVhZGVyLmZvY3VzSW5kZXggPSBpbmRleDtcbiAgICAgICAgICB0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggPSBpbmRleDtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZFRhYih0YWI6IFRhYik6IHZvaWQge1xuICAgIHRoaXMudGFicy5wdXNoKHRhYik7XG4gICAgdGhpcy50YWJzLmZvckVhY2goKHYsIGluZGV4KSA9PiAodGhpcy50YWJJbmRleE1hcFt2LnRhYk5hbWVdID0gaW5kZXgpKTtcbiAgfVxuXG4gIG9uVGFiQ2hhbmdlKGV2OiBNYXRUYWJDaGFuZ2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkVGFiID0gdGhpcy50YWJzW2V2LmluZGV4XTtcbiAgICB0aGlzLnRhYkluZGV4LnNldCh0aGlzLnRhYkluZGV4TWFwW3NlbGVjdGVkVGFiLnRhYk5hbWVdKTtcbiAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXguZW1pdChldi5pbmRleCk7XG4gICAgdGhpcy5zZWxlY3RlZFRhYi5lbWl0KHNlbGVjdGVkVGFiKTtcbiAgfVxuXG4gIHNlbGVjdFRhYih0YWJOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMudGFiSW5kZXhNYXBbdGFiTmFtZV07XG4gICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudGFiSW5kZXguc2V0KGluZGV4KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleC5lbWl0KGluZGV4KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWIuZW1pdCh0aGlzLnRhYnNbaW5kZXhdKTtcbiAgICB9XG4gIH1cblxuICBpbmRleE9mKHRhYk5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudGFiSW5kZXhNYXBbdGFiTmFtZV0gPz8gLTE7XG4gIH1cblxuICB0cmFja0J5VGFiTmFtZShpbmRleDogbnVtYmVyLCB0YWI6IFRhYik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRhYi50YWJOYW1lO1xuICB9XG5cbiAgcmVtb3ZlVGFiKHRhYk5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy50YWJJbmRleE1hcFt0YWJOYW1lXTtcbiAgICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50YWJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICBkZWxldGUgdGhpcy50YWJJbmRleE1hcFt0YWJOYW1lXTtcbiAgICAgIHRoaXMudGFicy5mb3JFYWNoKCh2LCBpbmRleCkgPT4gKHRoaXMudGFiSW5kZXhNYXBbdi50YWJOYW1lXSA9IGluZGV4KSk7XG4gICAgfVxuICB9XG4gIHVwZGF0ZVRhYih0YWJOYW1lOiBzdHJpbmcsIHRhYjogUGFydGlhbDxPbWl0PFRhYiwgJ3RhYk5hbWUnPj4pOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMudGFiSW5kZXhNYXBbdGFiTmFtZV07XG4gICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudGFic1tpbmRleF0gPSB7IC4uLnRoaXMudGFic1tpbmRleF0sIC4uLnRhYiB9O1xuICAgIH1cbiAgfVxufVxuIiwiPG1hdC10YWItZ3JvdXBcbiAgI3RhYkdyb3VwXG4gIGhlYWRlclBvc2l0aW9uPVwiYWJvdmVcIlxuICBjbGFzcz1cInRhYnMtY29udGFpbmVyXCJcbiAgW25nQ2xhc3NdPVwiJ3RhYnMtdHlwZS0nICsgKChpc01vYmlsZSQgfCBhc3luYykgPyAndW5kZXJsaW5lZCcgOiB0eXBlKVwiXG4gIFthdHRyLnRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuICBbZHluYW1pY0hlaWdodF09XCJkeW5hbWljSGVpZ2h0XCJcbiAgW3NlbGVjdGVkSW5kZXhdPVwidGFiSW5kZXgoKVwiXG4gIFthbmltYXRpb25EdXJhdGlvbl09XCJhbmltYXRpb25EdXJhdGlvblwiXG4gIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJvblRhYkNoYW5nZSgkZXZlbnQpXCJcbiAgcm9sZT1cInRhYmxpc3RcIlxuPlxuICA8bWF0LXRhYlxuICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgdHJhY2tCeTogdHJhY2tCeVRhYk5hbWU7bGV0IGkgPSBpbmRleFwiXG4gICAgW2Rpc2FibGVkXT1cInRhYi5kaXNhYmxlZCA/PyBmYWxzZVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0YWI/LmFyaWFMYWJlbFwiXG4gID5cbiAgICA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5cbiAgICAgIDxhXG4gICAgICAgIGRhdGEtdGVzdC1yb2xlPVwidGFiLWxpbmtcIlxuICAgICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCJ0YWIudGFiTmFtZVwiXG4gICAgICAgIGNsYXNzPVwidGFiLW5hbWVcIlxuICAgICAgICBbaHJlZl09XCJ0YWI/LmxpbmtVcmwgPyB0YWIubGlua1VybCA6ICcjJ1wiXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaSA9PT0gdGFiSW5kZXgoKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGFiLnRhYkxhYmVsICsgKGkgPT09IHRhYkluZGV4KCkgPyAnLCAnICsgKCdUQUJTLlNFTEVDVEVEJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpIDogJycpXCJcbiAgICAgICAgcm9sZT1cInRhYlwiXG4gICAgICA+XG4gICAgICAgIDx1aS1pY29uIFtzaXplXT1cIicyNCdcIiBbdGFiaW5kZXhdPVwiMVwiIGNsYXNzPVwibGVmdC1pY29uXCIgW25hbWVdPVwidGFiLmljb25MZWZ0IVwiICpuZ0lmPVwidGFiPy5pY29uTGVmdFwiPjwvdWktaWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPnt7IHRhYi50YWJMYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPHVpLWljb25cbiAgICAgICAgICBbc2l6ZV09XCInMjQnXCJcbiAgICAgICAgICBjbGFzcz1cInJpZ2h0LWljb25cIlxuICAgICAgICAgIFtuYW1lXT1cInRhYi5pY29uUmlnaHQhXCJcbiAgICAgICAgICAqbmdJZj1cInRhYj8uaWNvblJpZ2h0XCJcbiAgICAgICAgPjwvdWktaWNvbj5cbiAgICAgIDwvYT5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxkaXZcbiAgICAgIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgICBbYXR0ci5pZF09XCIndGFicGFuZWwtJyArIGlcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIid0YWItJyArIGlcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWIuY29udGVudFRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbWF0LXRhYj5cbjwvbWF0LXRhYi1ncm91cD5cbiJdfQ==
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Z28tY2Fub3B5LXVpL2NvbXBvbmVudHMvdGFicy90YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy90YWJzL3RhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHNUQsT0FBTyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7QUFPckUsTUFBTSxPQUFPLGFBQWE7SUFrRXhCLFlBQzZFLGVBQWlDLEVBQ2hFLFNBQThCO1FBREMsb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBQ2hFLGNBQVMsR0FBVCxTQUFTLENBQXFCO1FBbkU1RTs7Ozs7O1dBTUc7UUFHSCxpQkFBWSxHQUFrQixTQUFTLENBQUM7UUFDeEM7Ozs7OztXQU1HO1FBQ00sU0FBSSxHQUFhLFlBQVksQ0FBQztRQUV2Qzs7Ozs7V0FLRztRQUNNLHNCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUVqQzs7Ozs7V0FLRztRQUdILHlCQUFvQixHQUFHLE1BQU0sQ0FBQztRQUU5Qjs7OztXQUlHO1FBQ3FDLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBRTdEOzs7Ozs7V0FNRztRQUNNLHFCQUFnQixHQUFxQixPQUFPLENBQUM7UUFFNUMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM5QyxnQkFBVyxHQUFH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SUFBSSxFQUFFO2dCQVFyQixhQUFhO3NCQUFwRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQVM3QixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBRWtDLFFBQVE7c0JBQWhELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgc2lnbmFsLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGFiLCBUYWJzVHlwZSB9IGZyb20gJy4vdGFicy5tb2RlbCc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uLXRoZW1lLm1vZGVsJztcbmltcG9ydCB7IElTX01PQklMRV9UT0tFTiB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9pcy1tb2JpbGUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0VGFiLCBNYXRUYWJDaGFuZ2VFdmVudCwgTWF0VGFiR3JvdXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IEVOVEVSLCBoYXNNb2RpZmllcktleSwgU1BBQ0UgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd1aS10YWJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRhYnNDb21wb25lbnQge1xuICAvKipcbiAgICogQ29sb3Igb2YgdGhlIFRhYnMuXG4gICAqIERlZmF1bHRzIHRvIFRlc3QgR29yaWxsYSBwcmltYXJ5IGNvbG9yLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgVGFic0NvbXBvbmVudFxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLWNvbG9yJylcbiAgQElucHV0KClcbiAgY29tcGFueUNvbG9yOiBzdHJpbmcgfCBudWxsID0gJyM0NkE5OTcnO1xuICAvKipcbiAgICogVHlwZSB0aGUgVGFicy5cbiAgICogRGVmYXVsdHMgdW5kZXJsaW5lZC5cbiAgICpcbiAgICogQHR5cGUge1RhYnNUeXBlfVxuICAgKiBAbWVtYmVyb2YgVGFic0NvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgdHlwZTogVGFic1R5cGUgPSAndW5kZXJsaW5lZCc7XG5cbiAgLyoqXG4gICAqIEFuaW1hdGlvbiBkdXJhdGlvbiB3aGVuIHN3aXRjaGluZyB0YWJzXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBUYWJzQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhbmltYXRpb25EdXJhdGlvbiA9IDMwMDtcblxuICAvKipcbiAgICogU2V0cyB0aGUgcGFkZGluZyBmb3IgY29udGVudCBhbmQgaGVhZGVyXG4gICAqXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBUYWJzQ29tcG9uZW50XG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0taGVhZGVyLWNvbnRlbnQtcGFkZGluZycpXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogKHZhbHVlOiBudW1iZXIpOiBzdHJpbmcgPT4gdmFsdWUgKyAncHgnIH0pXG4gIGhlYWRlckNvbnRlbnRQYWRkaW5nID0gJzMycHgnO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkeW5hbWljIGhlaWdodCBvZiB0aGUgdGFiXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgVGFic0NvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGR5bmFtaWNIZWlnaHQgPSB0cnVlO1xuXG4gIC8qKlxuICAgKlxuICAgKiBEZWZpbmVzIHRoZSBhcHBsaWNhdGlvbiB0aGVtZVxuICAgKlxuICAgKiBAdHlwZSB7QXBwbGljYXRpb25UaGVtZX1cbiAgICogQG1lbWJlcm9mIFRhYnNDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFwcGxpY2F0aW9uVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUgPSAnbGlnaHQnO1xuXG4gIEBPdXRwdXQoKSBzZWxlY3RlZFRhYkluZGV4ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RlZFRhYiA9IG5ldyBFdmVudEVtaXR0ZXI8VGFiPigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3RhYkdyb3VwJywgeyBzdGF0aWM6IHRydWUgfSkgdGFiR3JvdXA6IE1hdFRhYkdyb3VwO1xuXG4gIHByb3RlY3RlZCB0YWJzOiBUYWJbXSA9IFtdO1xuICByZWFkb25seSB0YWJJbmRleCA9IHNpZ25hbCgwKTtcbiAgcHJvdGVjdGVkIHRhYkluZGV4TWFwOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge307XG5cbiAgLy8gQ291bnRlciBmb3IgZGVmYXVsdCBvcmRlcmluZyB3aGVuIG9yZGVyIGlzIG5vdCBzcGVjaWZpZWRcbiAgcHJpdmF0ZSBpbnNlcnRpb25Db3VudGVyOiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoJ0NBTk9QWVVJX0RFRkFVTFRfQVBQTElDQVRJT05fVEhFTUUnKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBcHBUaGVtZTogQXBwbGljYXRpb25UaGVtZSxcbiAgICBASW5qZWN0KElTX01PQklMRV9UT0tFTikgcHJvdGVjdGVkIHJlYWRvbmx5IGlzTW9iaWxlJDogT2JzZXJ2YWJsZTxib29sZWFuPlxuICApIHtcbiAgICBpZiAoZGVmYXVsdEFwcFRoZW1lKSB7XG4gICAgICB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPSBkZWZhdWx0QXBwVGhlbWU7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgdGFiSGVhZGVyID0gKHRoaXMudGFiR3JvdXAgYXMgYW55KS5fdGFiSGVhZGVyO1xuICAgICAgdGFiSGVhZGVyLl9oYW5kbGVLZXlkb3duID0gYXN5bmMgKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChoYXNNb2RpZmllcktleShldmVudCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChldmVudC5rZXlDb2RlKSB7XG4gICAgICAgICAgY2FzZSBFTlRFUjpcbiAgICAgICAgICBjYXNlIFNQQUNFOlxuICAgICAgICAgICAgY29uc3QgdGFiTGFiZWwgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQ7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50VGFiID0gdGhpcy50YWJzW3RoaXMudGFiSW5kZXgoKV07XG4gICAgICAgICAgICBjb25zdCBuZXh0VGFiID0gdGhpcy50YWJzLmZpbmQodGFiID0+IHRhYi50YWJMYWJlbCA9PT0gdGFiTGFiZWwpO1xuXG4gICAgICAgICAgICBpZiAoIW5leHRUYWIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjYW5MZWF2ZSA9IChhd2FpdCBjdXJyZW50VGFiLmNhbkxlYXZlPy4oeyBjdXJyZW50VGFiLCBuZXh0VGFiIH0pKSA/PyB0cnVlO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRUYWIudGFiTmFtZSAhPT0gbmV4dFRhYi50YWJOYW1lICYmIGNhbkxlYXZlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5leHRUYWJJbmRleCA9IHRoaXMudGFiSW5kZXhNYXBbbmV4dFRhYi50YWJOYW1lXTtcbiAgICAgICAgICAgICAgdGFiSGVhZGVyLmZvY3VzSW5kZXggPSBuZXh0VGFiSW5kZXg7XG4gICAgICAgICAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IG5leHRUYWJJbmRleDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0YWJIZWFkZXIuX2tleU1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgKHRoaXMudGFiR3JvdXAgYXMgYW55KS5faGFuZGxlQ2xpY2sgPSBhc3luYyAodGFiOiBNYXRUYWIsIHRhYkhlYWRlcjogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleDtcbiAgICAgICAgaWYgKHRhYi5kaXNhYmxlZCB8fCBjdXJyZW50SW5kZXggPT09IHVuZGVmaW5lZCB8fCBpbmRleCA9PT0gY3VycmVudEluZGV4KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJlbnRUYWIgPSB0aGlzLnRhYnNbdGhpcy50YWJJbmRleCgpXTtcbiAgICAgICAgY29uc3QgbmV4dFRhYiA9IHRoaXMudGFic1tpbmRleF07XG4gICAgICAgIGNvbnN0IGNhbkxlYXZlID0gKGF3YWl0IGN1cnJlbnRUYWIuY2FuTGVhdmU/Lih7IGN1cnJlbnRUYWIsIG5leHRUYWIgfSkpID8/IHRydWU7XG4gICAgICAgIGlmICh0aGlzLnRhYkdyb3VwLnNlbGVjdGVkSW5kZXggIT0gaW5kZXggJiYgY2FuTGVhdmUpIHtcbiAgICAgICAgICB0YWJIZWFkZXIuZm9jdXNJbmRleCA9IGluZGV4O1xuICAgICAgICAgIHRoaXMudGFiR3JvdXAuc2VsZWN0ZWRJbmRleCA9IGluZGV4O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgYWRkVGFiKHRhYjogVGFiKTogdm9pZCB7XG4gICAgLy8gSWYgbm8gZXhwbGljaXQgb3JkZXIgaXMgcHJvdmlkZWQsIHVzZSB0aGUgaW5zZXJ0aW9uIGNvdW50ZXJcbiAgICBpZiAodGFiLm9yZGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRhYi5vcmRlciA9IHRoaXMuaW5zZXJ0aW9uQ291bnRlcisrO1xuICAgIH1cblxuICAgIC8vIEFkZCB0aGUgdGFiIGFuZCBzb3J0IHRoZSB0YWJzIGFycmF5XG4gICAgdGhpcy50YWJzLnB1c2godGFiKTtcbiAgICB0aGlzLnNvcnRUYWJzKCk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIGluZGV4IG1hcFxuICAgIHRoaXMudXBkYXRlVGFiSW5kZXhNYXAoKTtcbiAgfVxuXG4gIHByaXZhdGUgc29ydFRhYnMoKTogdm9pZCB7XG4gICAgLy8gU29ydCBieSB0aGUgb3JkZXIgcHJvcGVydHkgKGxvd2VzdCBmaXJzdClcbiAgICB0aGlzLnRhYnMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgY29uc3Qgb3JkZXJBID0gYS5vcmRlciA/PyBJbmZpbml0eTtcbiAgICAgIGNvbnN0IG9yZGVyQiA9IGIub3JkZXIgPz8gSW5maW5pdHk7XG4gICAgICByZXR1cm4gb3JkZXJBIC0gb3JkZXJCO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUYWJJbmRleE1hcCgpOiB2b2lkIHtcbiAgICAvLyBVcGRhdGUgdGhlIGluZGV4IG1hcCBhZnRlciBzb3J0aW5nXG4gICAgdGhpcy50YWJzLmZvckVhY2goKHRhYiwgaW5kZXgpID0+IHtcbiAgICAgIHRoaXMudGFiSW5kZXhNYXBbdGFiLnRhYk5hbWVdID0gaW5kZXg7XG4gICAgfSk7XG4gIH1cblxuICBvblRhYkNoYW5nZShldjogTWF0VGFiQ2hhbmdlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZFRhYiA9IHRoaXMudGFic1tldi5pbmRleF07XG4gICAgdGhpcy50YWJJbmRleC5zZXQodGhpcy50YWJJbmRleE1hcFtzZWxlY3RlZFRhYi50YWJOYW1lXSk7XG4gICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4LmVtaXQoZXYuaW5kZXgpO1xuICAgIHRoaXMuc2VsZWN0ZWRUYWIuZW1pdChzZWxlY3RlZFRhYik7XG4gIH1cblxuICBzZWxlY3RUYWIodGFiTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLnRhYkluZGV4TWFwW3RhYk5hbWVdO1xuICAgIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnRhYkluZGV4LnNldChpbmRleCk7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiSW5kZXguZW1pdChpbmRleCk7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFiLmVtaXQodGhpcy50YWJzW2luZGV4XSk7XG4gICAgfVxuICB9XG5cbiAgaW5kZXhPZih0YWJOYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRhYkluZGV4TWFwW3RhYk5hbWVdID8/IC0xO1xuICB9XG5cbiAgdHJhY2tCeVRhYk5hbWUoaW5kZXg6IG51bWJlciwgdGFiOiBUYWIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0YWIudGFiTmFtZTtcbiAgfVxuXG4gIHJlbW92ZVRhYih0YWJOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMudGFiSW5kZXhNYXBbdGFiTmFtZV07XG4gICAgaWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudGFicy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgZGVsZXRlIHRoaXMudGFiSW5kZXhNYXBbdGFiTmFtZV07XG4gICAgICB0aGlzLnVwZGF0ZVRhYkluZGV4TWFwKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVGFiKHRhYk5hbWU6IHN0cmluZywgdGFiOiBQYXJ0aWFsPE9taXQ8VGFiLCAndGFiTmFtZSc+Pik6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy50YWJJbmRleE1hcFt0YWJOYW1lXTtcbiAgICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50YWJzW2luZGV4XSA9IHsgLi4udGhpcy50YWJzW2luZGV4XSwgLi4udGFiIH07XG5cbiAgICAgIC8vIFJlLXNvcnQgaWYgdGhlIG9yZGVyIGNoYW5nZWRcbiAgICAgIGlmICh0YWIub3JkZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnNvcnRUYWJzKCk7XG4gICAgICAgIHRoaXMudXBkYXRlVGFiSW5kZXhNYXAoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxtYXQtdGFiLWdyb3VwXG4gICN0YWJHcm91cFxuICBoZWFkZXJQb3NpdGlvbj1cImFib3ZlXCJcbiAgY2xhc3M9XCJ0YWJzLWNvbnRhaW5lclwiXG4gIFtuZ0NsYXNzXT1cIid0YWJzLXR5cGUtJyArICgoaXNNb2JpbGUkIHwgYXN5bmMpID8gJ3VuZGVybGluZWQnIDogdHlwZSlcIlxuICBbYXR0ci50aGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgW2R5bmFtaWNIZWlnaHRdPVwiZHluYW1pY0hlaWdodFwiXG4gIFtzZWxlY3RlZEluZGV4XT1cInRhYkluZGV4KClcIlxuICBbYW5pbWF0aW9uRHVyYXRpb25dPVwiYW5pbWF0aW9uRHVyYXRpb25cIlxuICAoc2VsZWN0ZWRUYWJDaGFuZ2UpPVwib25UYWJDaGFuZ2UoJGV2ZW50KVwiXG4gIHJvbGU9XCJ0YWJsaXN0XCJcbj5cbiAgPG1hdC10YWJcbiAgICAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnM7IHRyYWNrQnk6IHRyYWNrQnlUYWJOYW1lO2xldCBpID0gaW5kZXhcIlxuICAgIFtkaXNhYmxlZF09XCJ0YWIuZGlzYWJsZWQgPz8gZmFsc2VcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwidGFiPy5hcmlhTGFiZWxcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlIG1hdC10YWItbGFiZWw+XG4gICAgICA8YVxuICAgICAgICBkYXRhLXRlc3Qtcm9sZT1cInRhYi1saW5rXCJcbiAgICAgICAgW2F0dHIuZGF0YS10ZXN0aWRdPVwidGFiLnRhYk5hbWVcIlxuICAgICAgICBjbGFzcz1cInRhYi1uYW1lXCJcbiAgICAgICAgW2hyZWZdPVwidGFiPy5saW5rVXJsID8gdGFiLmxpbmtVcmwgOiAnIydcIlxuICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImkgPT09IHRhYkluZGV4KClcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRhYi50YWJMYWJlbCArIChpID09PSB0YWJJbmRleCgpID8gJywgJyArICgnVEFCUy5TRUxFQ1RFRCcgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSA6ICcnKVwiXG4gICAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgPlxuICAgICAgICA8dWktaWNvbiBbc2l6ZV09XCInMjQnXCIgW3RhYmluZGV4XT1cIjFcIiBjbGFzcz1cImxlZnQtaWNvblwiIFtuYW1lXT1cInRhYi5pY29uTGVmdCFcIiAqbmdJZj1cInRhYj8uaWNvbkxlZnRcIj48L3VpLWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj57eyB0YWIudGFiTGFiZWwgfX08L3NwYW4+XG4gICAgICAgIDx1aS1pY29uXG4gICAgICAgICAgW3NpemVdPVwiJzI0J1wiXG4gICAgICAgICAgY2xhc3M9XCJyaWdodC1pY29uXCJcbiAgICAgICAgICBbbmFtZV09XCJ0YWIuaWNvblJpZ2h0IVwiXG4gICAgICAgICAgKm5nSWY9XCJ0YWI/Lmljb25SaWdodFwiXG4gICAgICAgID48L3VpLWljb24+XG4gICAgICA8L2E+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8ZGl2XG4gICAgICByb2xlPVwidGFicGFuZWxcIlxuICAgICAgW2F0dHIuaWRdPVwiJ3RhYnBhbmVsLScgKyBpXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCIndGFiLScgKyBpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFiLmNvbnRlbnRUZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L21hdC10YWI+XG48L21hdC10YWItZ3JvdXA+XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy90YWJzL3RhYnMubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEljb25OYW1lIH0gZnJvbSAnLi4vaWNvbi9pY29uLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWIge1xuICB0YWJOYW1lOiBzdHJpbmc7XG4gIHRhYkxhYmVsOiBzdHJpbmc7XG4gIGNvbnRlbnRUZW1wbGF0ZVJlZjogYW55O1xuICBpY29uTGVmdD86IEljb25OYW1lO1xuICBpY29uUmlnaHQ/OiBJY29uTmFtZTtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBjYW5MZWF2ZT86IChjdHg/IDogeyBjdXJyZW50VGFiOlRhYiwgbmV4dFRhYjpUYWIgfSkgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj47XG4gIGxpbmtVcmw/OiBzdHJpbmc7XG4gIGFyaWFMYWJlbD86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgVGFic1R5cGUgPSAndW5kZXJsaW5lZCcgfCAnZmlsbGVkJztcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy90YWJzL3RhYnMubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEljb25OYW1lIH0gZnJvbSAnLi4vaWNvbi9pY29uLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBUYWIge1xuICB0YWJOYW1lOiBzdHJpbmc7XG4gIHRhYkxhYmVsOiBzdHJpbmc7XG4gIGNvbnRlbnRUZW1wbGF0ZVJlZjogYW55O1xuICBpY29uTGVmdD86IEljb25OYW1lO1xuICBpY29uUmlnaHQ/OiBJY29uTmFtZTtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBjYW5MZWF2ZT86IChjdHg/OiB7IGN1cnJlbnRUYWI6IFRhYjsgbmV4dFRhYjogVGFiIH0pID0+IGJvb2xlYW4gfCBQcm9taXNlPGJvb2xlYW4+O1xuICBsaW5rVXJsPzogc3RyaW5nO1xuICBhcmlhTGFiZWw/OiBzdHJpbmc7XG4gIG9yZGVyPzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBUYWJzVHlwZSA9ICd1bmRlcmxpbmVkJyB8ICdmaWxsZWQnO1xuIl19
@@ -14513,6 +14513,8 @@ class TabsComponent {
14513
14513
  this.tabs = [];
14514
14514
  this.tabIndex = signal(0);
14515
14515
  this.tabIndexMap = {};
14516
+ // Counter for default ordering when order is not specified
14517
+ this.insertionCounter = 0;
14516
14518
  if (defaultAppTheme) {
14517
14519
  this.applicationTheme = defaultAppTheme;
14518
14520
  }
@@ -14560,8 +14562,29 @@ class TabsComponent {
14560
14562
  });
14561
14563
  }
14562
14564
  addTab(tab) {
14565
+ // If no explicit order is provided, use the insertion counter
14566
+ if (tab.order === undefined) {
14567
+ tab.order = this.insertionCounter++;
14568
+ }
14569
+ // Add the tab and sort the tabs array
14563
14570
  this.tabs.push(tab);
14564
- this.tabs.forEach((v, index) => (this.tabIndexMap[v.tabName] = index));
14571
+ this.sortTabs();
14572
+ // Update the index map
14573
+ this.updateTabIndexMap();
14574
+ }
14575
+ sortTabs() {
14576
+ // Sort by the order property (lowest first)
14577
+ this.tabs.sort((a, b) => {
14578
+ const orderA = a.order ?? Infinity;
14579
+ const orderB = b.order ?? Infinity;
14580
+ return orderA - orderB;
14581
+ });
14582
+ }
14583
+ updateTabIndexMap() {
14584
+ // Update the index map after sorting
14585
+ this.tabs.forEach((tab, index) => {
14586
+ this.tabIndexMap[tab.tabName] = index;
14587
+ });
14565
14588
  }
14566
14589
  onTabChange(ev) {
14567
14590
  const selectedTab = this.tabs[ev.index];
@@ -14588,13 +14611,18 @@ class TabsComponent {
14588
14611
  if (index !== undefined) {
14589
14612
  this.tabs.splice(index, 1);
14590
14613
  delete this.tabIndexMap[tabName];
14591
- this.tabs.forEach((v, index) => (this.tabIndexMap[v.tabName] = index));
14614
+ this.updateTabIndexMap();
14592
14615
  }
14593
14616
  }
14594
14617
  updateTab(tabName, tab) {
14595
14618
  const index = this.tabIndexMap[tabName];
14596
14619
  if (index !== undefined) {
14597
14620
  this.tabs[index] = { ...this.tabs[index], ...tab };
14621
+ // Re-sort if the order changed
14622
+ if (tab.order !== undefined) {
14623
+ this.sortTabs();
14624
+ this.updateTabIndexMap();
14625
+ }
14598
14626
  }
14599
14627
  }
14600
14628
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabsComponent, deps: [{ token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }, { token: IS_MOBILE_TOKEN }], target: i0.ɵɵFactoryTarget.Component }); }
@@ -14649,6 +14677,7 @@ class TabDirective {
14649
14677
  this.disabled = input(false, { transform: booleanAttribute });
14650
14678
  this.canLeave = input();
14651
14679
  this.linkUrl = input();
14680
+ this.order = input();
14652
14681
  this.tabsComponent = inject(TabsComponent);
14653
14682
  this.template = inject(TemplateRef);
14654
14683
  this.syncProps = effect(() => {
@@ -14659,6 +14688,7 @@ class TabDirective {
14659
14688
  disabled: this.disabled(),
14660
14689
  canLeave: this.canLeave(),
14661
14690
  linkUrl: this.linkUrl(),
14691
+ order: this.order(),
14662
14692
  });
14663
14693
  });
14664
14694
  this.cleanup = inject(DestroyRef).onDestroy(() => {
@@ -14678,10 +14708,11 @@ class TabDirective {
14678
14708
  contentTemplateRef: this.template,
14679
14709
  canLeave: this.canLeave(),
14680
14710
  linkUrl: this.linkUrl(),
14711
+ order: this.order(),
14681
14712
  });
14682
14713
  }
14683
14714
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
14684
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.12", type: TabDirective, isStandalone: true, selector: "ng-template[uiTab]", inputs: { tabLabel: { classPropertyName: "tabLabel", publicName: "tabLabel", isSignal: true, isRequired: true, transformFunction: null }, tabName: { classPropertyName: "tabName", publicName: "tabName", isSignal: true, isRequired: true, transformFunction: null }, iconLeft: { classPropertyName: "iconLeft", publicName: "iconLeft", isSignal: true, isRequired: false, transformFunction: null }, iconRight: { classPropertyName: "iconRight", publicName: "iconRight", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, canLeave: { classPropertyName: "canLeave", publicName: "canLeave", isSignal: true, isRequired: false, transformFunction: null }, linkUrl: { classPropertyName: "linkUrl", publicName: "linkUrl", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
14715
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.12", type: TabDirective, isStandalone: true, selector: "ng-template[uiTab]", inputs: { tabLabel: { classPropertyName: "tabLabel", publicName: "tabLabel", isSignal: true, isRequired: true, transformFunction: null }, tabName: { classPropertyName: "tabName", publicName: "tabName", isSignal: true, isRequired: true, transformFunction: null }, iconLeft: { classPropertyName: "iconLeft", publicName: "iconLeft", isSignal: true, isRequired: false, transformFunction: null }, iconRight: { classPropertyName: "iconRight", publicName: "iconRight", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, canLeave: { classPropertyName: "canLeave", publicName: "canLeave", isSignal: true, isRequired: false, transformFunction: null }, linkUrl: { classPropertyName: "linkUrl", publicName: "linkUrl", isSignal: true, isRequired: false, transformFunction: null }, order: { classPropertyName: "order", publicName: "order", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
14685
14716
  }
14686
14717
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabDirective, decorators: [{
14687
14718
  type: Directive,