@clr/angular 17.9.0 → 17.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/clarity.api.md +183 -87
  2. package/data/datagrid/datagrid-column.d.ts +6 -1
  3. package/data/datagrid/datagrid-filter.d.ts +2 -9
  4. package/data/datagrid/datagrid-row.d.ts +6 -4
  5. package/data/datagrid/datagrid-virtual-scroll.directive.d.ts +5 -7
  6. package/data/datagrid/datagrid.d.ts +15 -4
  7. package/data/datagrid/index.d.ts +1 -0
  8. package/data/datagrid/interfaces/key-nav-grid-strategy.interface.d.ts +11 -0
  9. package/data/datagrid/interfaces/virtual-scroll-data-range.interface.d.ts +5 -0
  10. package/data/datagrid/providers/items.d.ts +1 -0
  11. package/data/datagrid/utils/datagrid-filter-registrar.d.ts +1 -1
  12. package/data/datagrid/utils/key-navigation-grid.controller.d.ts +8 -24
  13. package/data/datagrid/utils/key-navigation-strategies/default.d.ts +15 -0
  14. package/data/datagrid/utils/key-navigation-strategies/expanded-columns-row.d.ts +12 -0
  15. package/data/datagrid/utils/key-navigation-strategies/expanded-row.d.ts +12 -0
  16. package/data/datagrid/utils/key-navigation-utils.d.ts +24 -0
  17. package/esm2020/accordion/stepper/stepper-panel.mjs +3 -3
  18. package/esm2020/button/button-group/button.mjs +20 -4
  19. package/esm2020/data/datagrid/datagrid-column.mjs +40 -28
  20. package/esm2020/data/datagrid/datagrid-detail-header.mjs +3 -3
  21. package/esm2020/data/datagrid/datagrid-filter.mjs +2 -21
  22. package/esm2020/data/datagrid/datagrid-pagination.mjs +35 -31
  23. package/esm2020/data/datagrid/datagrid-row.mjs +23 -11
  24. package/esm2020/data/datagrid/datagrid-virtual-scroll.directive.mjs +52 -51
  25. package/esm2020/data/datagrid/datagrid.mjs +87 -24
  26. package/esm2020/data/datagrid/index.mjs +2 -1
  27. package/esm2020/data/datagrid/interfaces/key-nav-grid-strategy.interface.mjs +8 -0
  28. package/esm2020/data/datagrid/interfaces/virtual-scroll-data-range.interface.mjs +8 -0
  29. package/esm2020/data/datagrid/providers/items.mjs +5 -1
  30. package/esm2020/data/datagrid/utils/datagrid-filter-registrar.mjs +1 -1
  31. package/esm2020/data/datagrid/utils/key-navigation-grid.controller.mjs +44 -271
  32. package/esm2020/data/datagrid/utils/key-navigation-strategies/default.mjs +132 -0
  33. package/esm2020/data/datagrid/utils/key-navigation-strategies/expanded-columns-row.mjs +129 -0
  34. package/esm2020/data/datagrid/utils/key-navigation-strategies/expanded-row.mjs +165 -0
  35. package/esm2020/data/datagrid/utils/key-navigation-utils.mjs +121 -0
  36. package/esm2020/data/stack-view/stack-block.mjs +3 -3
  37. package/esm2020/emphasis/alert/alert.mjs +3 -3
  38. package/esm2020/forms/combobox/combobox.mjs +3 -3
  39. package/esm2020/forms/combobox/combobox.module.mjs +20 -3
  40. package/esm2020/forms/combobox/index.mjs +2 -1
  41. package/esm2020/forms/combobox/option-group.mjs +42 -0
  42. package/esm2020/forms/combobox/option-items.directive.mjs +5 -1
  43. package/esm2020/forms/combobox/options.mjs +3 -3
  44. package/esm2020/forms/common/abstract-control.mjs +1 -1
  45. package/esm2020/forms/common/if-control-state/abstract-if-state.mjs +1 -1
  46. package/esm2020/forms/datepicker/datepicker-view-manager.mjs +3 -3
  47. package/esm2020/forms/file-input/file-input-container.mjs +2 -2
  48. package/esm2020/forms/file-input/file-input.mjs +11 -4
  49. package/esm2020/forms/number-input/number-input-container.mjs +6 -3
  50. package/esm2020/forms/number-input/number-input.mjs +10 -3
  51. package/esm2020/layout/breadcrumbs/breadcrumbs.mjs +2 -2
  52. package/esm2020/modal/index.mjs +2 -2
  53. package/esm2020/modal/modal-host.component.mjs +29 -0
  54. package/esm2020/modal/modal.mjs +11 -4
  55. package/esm2020/modal/modal.module.mjs +4 -4
  56. package/esm2020/modal/side-panel.mjs +102 -47
  57. package/esm2020/popover/common/abstract-popover.mjs +8 -2
  58. package/esm2020/popover/common/popover.mjs +2 -2
  59. package/esm2020/popover/dropdown/dropdown-item.mjs +10 -4
  60. package/esm2020/popover/dropdown/dropdown-trigger.mjs +12 -4
  61. package/esm2020/popover/dropdown/utils/content-wrapping.mjs +22 -0
  62. package/esm2020/utils/animations/constants.mjs +7 -1
  63. package/esm2020/utils/animations/expandable-animation/base-expandable-animation.mjs +46 -0
  64. package/esm2020/utils/animations/expandable-animation/expandable-animation.directive.mjs +56 -0
  65. package/esm2020/utils/animations/expandable-animation/expandable-animation.mjs +13 -36
  66. package/esm2020/utils/animations/expandable-animation/expandable-animation.module.mjs +3 -2
  67. package/esm2020/utils/animations/expandable-animation/index.mjs +4 -2
  68. package/esm2020/utils/chocolate/oompa-loompa.mjs +1 -1
  69. package/esm2020/utils/focus/focusable-item/basic-focusable-item.service.mjs +2 -2
  70. package/esm2020/utils/i18n/common-strings.default.mjs +2 -1
  71. package/esm2020/utils/i18n/common-strings.interface.mjs +1 -1
  72. package/esm2020/wizard/wizard-stepnav-item.mjs +60 -24
  73. package/esm2020/wizard/wizard.mjs +29 -6
  74. package/fesm2015/clr-angular.mjs +1377 -646
  75. package/fesm2015/clr-angular.mjs.map +1 -1
  76. package/fesm2020/clr-angular.mjs +1371 -641
  77. package/fesm2020/clr-angular.mjs.map +1 -1
  78. package/forms/combobox/combobox.module.d.ts +12 -11
  79. package/forms/combobox/index.d.ts +1 -0
  80. package/forms/combobox/option-group.d.ts +9 -0
  81. package/forms/combobox/option-items.directive.d.ts +1 -0
  82. package/forms/common/abstract-control.d.ts +1 -1
  83. package/forms/common/if-control-state/abstract-if-state.d.ts +1 -1
  84. package/forms/file-input/file-input.d.ts +2 -0
  85. package/forms/number-input/number-input-container.d.ts +1 -0
  86. package/forms/number-input/number-input.d.ts +2 -0
  87. package/modal/index.d.ts +1 -1
  88. package/modal/modal-host.component.d.ts +5 -0
  89. package/modal/modal.d.ts +3 -2
  90. package/modal/modal.module.d.ts +2 -2
  91. package/modal/side-panel.d.ts +18 -10
  92. package/package.json +2 -2
  93. package/popover/common/abstract-popover.d.ts +1 -1
  94. package/popover/dropdown/dropdown-item.d.ts +5 -1
  95. package/popover/dropdown/dropdown-trigger.d.ts +5 -2
  96. package/popover/dropdown/utils/content-wrapping.d.ts +2 -0
  97. package/utils/animations/constants.d.ts +1 -0
  98. package/utils/animations/expandable-animation/base-expandable-animation.d.ts +16 -0
  99. package/utils/animations/expandable-animation/expandable-animation.d.ts +2 -9
  100. package/utils/animations/expandable-animation/expandable-animation.directive.d.ts +16 -0
  101. package/utils/animations/expandable-animation/expandable-animation.module.d.ts +3 -2
  102. package/utils/animations/expandable-animation/index.d.ts +1 -0
  103. package/utils/chocolate/oompa-loompa.d.ts +1 -1
  104. package/utils/i18n/common-strings.interface.d.ts +4 -0
  105. package/wizard/wizard-stepnav-item.d.ts +16 -2
  106. package/wizard/wizard.d.ts +12 -2
  107. package/esm2020/modal/modal-host.directive.mjs +0 -20
  108. package/modal/modal-host.directive.d.ts +0 -5
@@ -1,4 +1,5 @@
1
1
  import { ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewContainerRef } from '@angular/core';
2
+ import { ClrCommonStringsService } from '../../utils';
2
3
  import { ClrDatagridSortOrder } from './enums/sort-order.enum';
3
4
  import { ClrDatagridComparatorInterface } from './interfaces/comparator.interface';
4
5
  import { ClrDatagridFilterInterface } from './interfaces/filter.interface';
@@ -14,11 +15,13 @@ export declare class ClrDatagridColumn<T = any> extends DatagridFilterRegistrar<
14
15
  private vcr;
15
16
  private detailService;
16
17
  private changeDetectorRef;
18
+ private commonStrings;
17
19
  filterStringPlaceholder: string;
18
20
  filterNumberMaxPlaceholder: string;
19
21
  filterNumberMinPlaceholder: string;
20
22
  sortOrderChange: EventEmitter<ClrDatagridSortOrder>;
21
23
  filterValueChange: EventEmitter<any>;
24
+ titleContainer: ElementRef<HTMLElement>;
22
25
  /**
23
26
  * A custom filter for this column that can be provided in the projected content
24
27
  */
@@ -41,7 +44,7 @@ export declare class ClrDatagridColumn<T = any> extends DatagridFilterRegistrar<
41
44
  */
42
45
  private subscriptions;
43
46
  private _showSeparator;
44
- constructor(el: ElementRef<HTMLElement>, _sort: Sort<T>, filters: FiltersProvider<T>, vcr: ViewContainerRef, detailService: DetailService, changeDetectorRef: ChangeDetectorRef);
47
+ constructor(el: ElementRef<HTMLElement>, _sort: Sort<T>, filters: FiltersProvider<T>, vcr: ViewContainerRef, detailService: DetailService, changeDetectorRef: ChangeDetectorRef, commonStrings: ClrCommonStringsService);
45
48
  get isHidden(): boolean;
46
49
  get showSeparator(): boolean;
47
50
  set showSeparator(value: boolean);
@@ -73,6 +76,7 @@ export declare class ClrDatagridColumn<T = any> extends DatagridFilterRegistrar<
73
76
  set filterValue(newValue: any);
74
77
  get _view(): any;
75
78
  ngOnInit(): void;
79
+ ngAfterViewInit(): void;
76
80
  ngOnChanges(changes: SimpleChanges): void;
77
81
  ngOnDestroy(): void;
78
82
  /**
@@ -80,6 +84,7 @@ export declare class ClrDatagridColumn<T = any> extends DatagridFilterRegistrar<
80
84
  */
81
85
  sort(reverse?: boolean): void;
82
86
  private listenForDetailPaneChanges;
87
+ private setFilterToggleAriaLabel;
83
88
  private listenForSortingChanges;
84
89
  private setupDefaultFilter;
85
90
  static ɵfac: i0.ɵɵFactoryDeclaration<ClrDatagridColumn<any>, never>;
@@ -1,4 +1,4 @@
1
- import { ElementRef, EventEmitter, OnChanges, OnDestroy } from '@angular/core';
1
+ import { ElementRef, EventEmitter, OnDestroy } from '@angular/core';
2
2
  import { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';
3
3
  import { ClrPopoverPosition } from '../../utils/popover/interfaces/popover-position.interface';
4
4
  import { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';
@@ -13,7 +13,7 @@ import * as i0 from "@angular/core";
13
13
  * The reason this is not just an input on DatagridColumn is because we need the filter's template to be projected,
14
14
  * since it can be anything (not just a text input).
15
15
  */
16
- export declare class ClrDatagridFilter<T = any> extends DatagridFilterRegistrar<T, ClrDatagridFilterInterface<T>> implements CustomFilter, OnChanges, OnDestroy {
16
+ export declare class ClrDatagridFilter<T = any> extends DatagridFilterRegistrar<T, ClrDatagridFilterInterface<T>> implements CustomFilter, OnDestroy {
17
17
  commonStrings: ClrCommonStringsService;
18
18
  private smartToggleService;
19
19
  private platformId;
@@ -22,7 +22,6 @@ export declare class ClrDatagridFilter<T = any> extends DatagridFilterRegistrar<
22
22
  openChange: EventEmitter<boolean>;
23
23
  ariaExpanded: boolean;
24
24
  popoverId: string;
25
- toggleButtonAriaLabel: string;
26
25
  smartPosition: ClrPopoverPosition;
27
26
  anchor: ElementRef<HTMLButtonElement>;
28
27
  private _open;
@@ -35,13 +34,7 @@ export declare class ClrDatagridFilter<T = any> extends DatagridFilterRegistrar<
35
34
  * Indicates if the filter is currently active
36
35
  */
37
36
  get active(): boolean;
38
- ngOnChanges(): void;
39
37
  ngOnDestroy(): void;
40
- /**
41
- * This is not in a getter to prevent "expression has changed after it was checked" errors.
42
- * And it's more performant this way since it only runs on change.
43
- */
44
- private setToggleButtonAriaLabel;
45
38
  static ɵfac: i0.ɵɵFactoryDeclaration<ClrDatagridFilter<any>, [null, null, null, null, null, { optional: true; }]>;
46
39
  static ɵcmp: i0.ɵɵComponentDeclaration<ClrDatagridFilter<any>, "clr-dg-filter", never, { "open": "clrDgFilterOpen"; "customFilter": "clrDgFilter"; }, { "openChange": "clrDgFilterOpenChange"; }, never, ["*"], false, never>;
47
40
  }
@@ -1,6 +1,6 @@
1
- import { AfterContentInit, AfterViewInit, ElementRef, EventEmitter, QueryList, Renderer2, ViewContainerRef } from '@angular/core';
1
+ import { AfterContentInit, AfterViewInit, ElementRef, EventEmitter, QueryList, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';
2
2
  import { ReplaySubject } from 'rxjs';
3
- import { ClrExpandableAnimation } from '../../utils/animations/expandable-animation/expandable-animation';
3
+ import { ClrExpandableAnimationDirective } from '../../utils/animations/expandable-animation/expandable-animation.directive';
4
4
  import { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';
5
5
  import { ClrDatagridCell } from './datagrid-cell';
6
6
  import { DatagridIfExpandService } from './datagrid-if-expanded.service';
@@ -20,6 +20,7 @@ export declare class ClrDatagridRow<T = any> implements AfterContentInit, AfterV
20
20
  detailService: DetailService;
21
21
  private displayMode;
22
22
  private vcr;
23
+ el: ElementRef<HTMLElement>;
23
24
  commonStrings: ClrCommonStringsService;
24
25
  private items;
25
26
  private document;
@@ -48,11 +49,12 @@ export declare class ClrDatagridRow<T = any> implements AfterContentInit, AfterV
48
49
  *
49
50
  */
50
51
  dgCells: QueryList<ClrDatagridCell>;
51
- expandAnimation: ClrExpandableAnimation;
52
+ expandAnimation: ClrExpandableAnimationDirective;
52
53
  detailButton: ElementRef<HTMLButtonElement>;
53
54
  _stickyCells: ViewContainerRef;
54
55
  _scrollableCells: ViewContainerRef;
55
56
  _calculatedCells: ViewContainerRef;
57
+ _fixedCellTemplate: TemplateRef<any>;
56
58
  private _item;
57
59
  private _selected;
58
60
  private _detailOpenLabel;
@@ -102,5 +104,5 @@ export declare class ClrDatagridRow<T = any> implements AfterContentInit, AfterV
102
104
  protected selectRow(selected: boolean, $event: any): void;
103
105
  private rangeSelect;
104
106
  static ɵfac: i0.ɵɵFactoryDeclaration<ClrDatagridRow<any>, never>;
105
- static ɵcmp: i0.ɵɵComponentDeclaration<ClrDatagridRow<any>, "clr-dg-row", never, { "detailDisabled": "clrDgDetailDisabled"; "detailHidden": "clrDgDetailHidden"; "skeletonLoading": "clrDgSkeletonLoading"; "item": "clrDgItem"; "clrDgSelectable": "clrDgSelectable"; "selected": "clrDgSelected"; "expanded": "clrDgExpanded"; "clrDgDetailOpenLabel": "clrDgDetailOpenLabel"; "clrDgDetailCloseLabel": "clrDgDetailCloseLabel"; "clrDgRowSelectionLabel": "clrDgRowSelectionLabel"; }, { "selectedChanged": "clrDgSelectedChange"; "expandedChange": "clrDgExpandedChange"; }, ["dgCells"], ["clr-dg-row-detail", "clr-dg-action-overflow", "clr-dg-cell"], false, never>;
107
+ static ɵcmp: i0.ɵɵComponentDeclaration<ClrDatagridRow<any>, "clr-dg-row", never, { "detailDisabled": "clrDgDetailDisabled"; "detailHidden": "clrDgDetailHidden"; "skeletonLoading": "clrDgSkeletonLoading"; "item": "clrDgItem"; "clrDgSelectable": "clrDgSelectable"; "selected": "clrDgSelected"; "expanded": "clrDgExpanded"; "clrDgDetailOpenLabel": "clrDgDetailOpenLabel"; "clrDgDetailCloseLabel": "clrDgDetailCloseLabel"; "clrDgRowSelectionLabel": "clrDgRowSelectionLabel"; }, { "selectedChanged": "clrDgSelectedChange"; "expandedChange": "clrDgExpandedChange"; }, ["dgCells"], ["clr-dg-action-overflow", "clr-dg-cell", "clr-dg-row-detail"], false, never>;
106
108
  }
@@ -3,6 +3,7 @@ import { ListRange } from '@angular/cdk/collections';
3
3
  import { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualForOfContext, ScrollDispatcher, ViewportRuler } from '@angular/cdk/scrolling';
4
4
  import { AfterViewInit, ChangeDetectorRef, DoCheck, EnvironmentInjector, EventEmitter, IterableDiffers, NgZone, OnDestroy, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';
5
5
  import { ClrDatagrid } from './datagrid';
6
+ import { ClrDatagridVirtualScrollRangeInterface } from './interfaces/virtual-scroll-data-range.interface';
6
7
  import { ColumnsService } from './providers/columns.service';
7
8
  import { Items } from './providers/items';
8
9
  import * as i0 from "@angular/core";
@@ -25,6 +26,7 @@ export declare class ClrDatagridVirtualScrollDirective<T> implements AfterViewIn
25
26
  private readonly injector;
26
27
  renderedRangeChange: EventEmitter<ListRange>;
27
28
  persistItems: boolean;
29
+ private shouldUpdateAriaRowIndexes;
28
30
  private _cdkFixedSizeVirtualScrollInputs;
29
31
  private readonly datagridElementRef;
30
32
  private gridRoleElement;
@@ -38,6 +40,7 @@ export declare class ClrDatagridVirtualScrollDirective<T> implements AfterViewIn
38
40
  private cdkVirtualForInputs;
39
41
  private _totalItems;
40
42
  constructor(changeDetectorRef: ChangeDetectorRef, iterableDiffers: IterableDiffers, items: Items<T>, ngZone: NgZone, renderer2: Renderer2, templateRef: TemplateRef<CdkVirtualForOfContext<T>>, viewContainerRef: ViewContainerRef, directionality: Directionality, scrollDispatcher: ScrollDispatcher, viewportRuler: ViewportRuler, datagrid: ClrDatagrid, columnsService: ColumnsService, injector: EnvironmentInjector);
43
+ get totalContentHeight(): string;
41
44
  get cdkVirtualForOf(): CdkVirtualForInputs<T>['cdkVirtualForOf'];
42
45
  set cdkVirtualForOf(value: CdkVirtualForInputs<T>['cdkVirtualForOf']);
43
46
  get cdkVirtualForTrackBy(): CdkVirtualForInputs<T>['cdkVirtualForTrackBy'];
@@ -52,11 +55,7 @@ export declare class ClrDatagridVirtualScrollDirective<T> implements AfterViewIn
52
55
  set minBufferPx(value: CdkFixedSizeVirtualScrollInputs['minBufferPx']);
53
56
  get maxBufferPx(): CdkFixedSizeVirtualScrollInputs['maxBufferPx'];
54
57
  set maxBufferPx(value: CdkFixedSizeVirtualScrollInputs['maxBufferPx']);
55
- set dataRange(range: {
56
- total: number;
57
- skip: number;
58
- data: T[];
59
- });
58
+ set dataRange(range: ClrDatagridVirtualScrollRangeInterface<T>);
60
59
  get totalItems(): number;
61
60
  private set totalItems(value);
62
61
  ngAfterViewInit(): void;
@@ -65,14 +64,13 @@ export declare class ClrDatagridVirtualScrollDirective<T> implements AfterViewIn
65
64
  scrollUp(offset: number, behavior?: ScrollBehavior): void;
66
65
  scrollDown(offset: number, behavior?: ScrollBehavior): void;
67
66
  scrollToIndex(index: number, behavior?: ScrollBehavior): void;
68
- private populatePlaceholderData;
69
67
  private updateDataRange;
70
68
  private updateCdkVirtualForInputs;
71
69
  private updateFixedSizeVirtualScrollInputs;
72
70
  private updateAriaRowCount;
73
71
  private updateAriaRowIndexes;
74
72
  private createVirtualScrollViewportForDatagrid;
75
- static ɵfac: i0.ɵɵFactoryDeclaration<ClrDatagridVirtualScrollDirective<any>, [null, null, { skipSelf: true; }, null, null, null, null, null, null, null, null, null, null]>;
73
+ static ɵfac: i0.ɵɵFactoryDeclaration<ClrDatagridVirtualScrollDirective<any>, never>;
76
74
  static ɵdir: i0.ɵɵDirectiveDeclaration<ClrDatagridVirtualScrollDirective<any>, "[clrVirtualScroll],[ClrVirtualScroll]", never, { "persistItems": "clrVirtualPersistItems"; "cdkVirtualForOf": "clrVirtualRowsOf"; "cdkVirtualForTrackBy": "clrVirtualRowsTrackBy"; "cdkVirtualForTemplate": "clrVirtualRowsTemplate"; "cdkVirtualForTemplateCacheSize": "clrVirtualRowsTemplateCacheSize"; "itemSize": "clrVirtualRowsItemSize"; "minBufferPx": "clrVirtualRowsMinBufferPx"; "maxBufferPx": "clrVirtualRowsMaxBufferPx"; "dataRange": "clrVirtualDataRange"; }, { "renderedRangeChange": "renderedRangeChange"; }, never, never, false, never>;
77
75
  }
78
76
  export {};
@@ -1,4 +1,4 @@
1
- import { AfterContentInit, AfterViewInit, ElementRef, EventEmitter, NgZone, OnDestroy, QueryList, Renderer2, ViewContainerRef } from '@angular/core';
1
+ import { AfterContentInit, AfterViewInit, ElementRef, EventEmitter, NgZone, OnDestroy, QueryList, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';
2
2
  import { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';
3
3
  import { ClrDatagridColumn } from './datagrid-column';
4
4
  import { ClrDatagridItems } from './datagrid-items';
@@ -16,7 +16,7 @@ import { RowActionService } from './providers/row-action-service';
16
16
  import { Selection } from './providers/selection';
17
17
  import { StateProvider } from './providers/state.provider';
18
18
  import { DatagridRenderOrganizer } from './render/render-organizer';
19
- import { KeyNavigationGridController } from './utils/key-navigation-grid.controller';
19
+ import { CellCoordinates, KeyNavigationGridController } from './utils/key-navigation-grid.controller';
20
20
  import * as i0 from "@angular/core";
21
21
  export declare class ClrDatagrid<T = any> implements AfterContentInit, AfterViewInit, OnDestroy {
22
22
  private organizer;
@@ -45,6 +45,11 @@ export declare class ClrDatagrid<T = any> implements AfterContentInit, AfterView
45
45
  * Output emitted whenever the data needs to be refreshed, based on user action or external ones
46
46
  */
47
47
  refresh: EventEmitter<ClrDatagridStateInterface<T>>;
48
+ /**
49
+ * The application can provide custom select all logic.
50
+ */
51
+ customSelectAllEnabled: boolean;
52
+ customSelectAll: EventEmitter<boolean>;
48
53
  /**
49
54
  * Expose virtual scroll directive for applications to access its public methods
50
55
  */
@@ -69,13 +74,19 @@ export declare class ClrDatagrid<T = any> implements AfterContentInit, AfterView
69
74
  rows: QueryList<ClrDatagridRow<T>>;
70
75
  datagrid: ElementRef<HTMLElement>;
71
76
  datagridTable: ElementRef<HTMLElement>;
77
+ datagridHeader: ElementRef<HTMLElement>;
78
+ contentWrapper: ElementRef<HTMLElement>;
72
79
  scrollableColumns: ViewContainerRef;
73
80
  _projectedDisplayColumns: ViewContainerRef;
74
81
  _projectedCalculationColumns: ViewContainerRef;
75
82
  _displayedRows: ViewContainerRef;
76
83
  _calculationRows: ViewContainerRef;
84
+ _fixedColumnTemplate: TemplateRef<any>;
85
+ stickyHeaders: QueryList<ElementRef>;
77
86
  selectAllId: string;
87
+ activeCellCoords: CellCoordinates;
78
88
  SELECTION_TYPE: typeof SelectionType;
89
+ private selectAllCheckbox;
79
90
  /**
80
91
  * Subscriptions to all the services and queries changes
81
92
  */
@@ -106,7 +117,7 @@ export declare class ClrDatagrid<T = any> implements AfterContentInit, AfterView
106
117
  * Indicates if all currently displayed items are selected
107
118
  */
108
119
  get allSelected(): boolean;
109
- set allSelected(_value: boolean);
120
+ set allSelected(value: boolean);
110
121
  ngAfterContentInit(): void;
111
122
  /**
112
123
  * Our setup happens in the view of some of our components, so we wait for it to be done before starting
@@ -125,5 +136,5 @@ export declare class ClrDatagrid<T = any> implements AfterContentInit, AfterView
125
136
  */
126
137
  dataChanged(): void;
127
138
  static ɵfac: i0.ɵɵFactoryDeclaration<ClrDatagrid<any>, never>;
128
- static ɵcmp: i0.ɵɵComponentDeclaration<ClrDatagrid<any>, "clr-datagrid", never, { "loadingMoreItems": "clrLoadingMoreItems"; "clrDgSingleSelectionAriaLabel": "clrDgSingleSelectionAriaLabel"; "clrDgSingleActionableAriaLabel": "clrDgSingleActionableAriaLabel"; "clrDetailExpandableAriaLabel": "clrDetailExpandableAriaLabel"; "clrDgDisablePageFocus": "clrDgDisablePageFocus"; "loading": "clrDgLoading"; "selected": "clrDgSelected"; "singleSelected": "clrDgSingleSelected"; "clrDgPreserveSelection": "clrDgPreserveSelection"; "rowSelectionMode": "clrDgRowSelection"; "trackBy": "clrDgItemsTrackBy"; }, { "selectedChanged": "clrDgSelectedChange"; "singleSelectedChanged": "clrDgSingleSelectedChange"; "refresh": "clrDgRefresh"; }, ["virtualScroll", "iterator", "placeholder", "columns", "rows"], ["clr-dg-action-bar", "clr-dg-placeholder", "clr-dg-footer", "[clrIfDetail],clr-dg-detail"], false, never>;
139
+ static ɵcmp: i0.ɵɵComponentDeclaration<ClrDatagrid<any>, "clr-datagrid", never, { "loadingMoreItems": "clrLoadingMoreItems"; "clrDgSingleSelectionAriaLabel": "clrDgSingleSelectionAriaLabel"; "clrDgSingleActionableAriaLabel": "clrDgSingleActionableAriaLabel"; "clrDetailExpandableAriaLabel": "clrDetailExpandableAriaLabel"; "clrDgDisablePageFocus": "clrDgDisablePageFocus"; "customSelectAllEnabled": "clrDgCustomSelectAllEnabled"; "loading": "clrDgLoading"; "selected": "clrDgSelected"; "singleSelected": "clrDgSingleSelected"; "clrDgPreserveSelection": "clrDgPreserveSelection"; "rowSelectionMode": "clrDgRowSelection"; "trackBy": "clrDgItemsTrackBy"; }, { "selectedChanged": "clrDgSelectedChange"; "singleSelectedChanged": "clrDgSingleSelectedChange"; "refresh": "clrDgRefresh"; "customSelectAll": "clrDgCustomSelectAll"; }, ["virtualScroll", "iterator", "placeholder", "columns", "rows"], ["clr-dg-action-bar", "clr-dg-placeholder", "clr-dg-footer", "[clrIfDetail],clr-dg-detail"], false, never>;
129
140
  }
@@ -25,6 +25,7 @@ export * from './interfaces/filter.interface';
25
25
  export * from './interfaces/string-filter.interface';
26
26
  export * from './interfaces/numeric-filter.interface';
27
27
  export * from './interfaces/comparator.interface';
28
+ export * from './interfaces/virtual-scroll-data-range.interface';
28
29
  export * from './built-in/filters/datagrid-string-filter';
29
30
  export * from './built-in/filters/datagrid-numeric-filter';
30
31
  export * from './built-in/filters/datagrid-property-string-filter';
@@ -0,0 +1,11 @@
1
+ import { CellCoordinates } from '../utils/key-navigation-grid.controller';
2
+ export interface KeyNavigationGridStrategyInterface {
3
+ keyUp(cell: CellCoordinates): CellCoordinates;
4
+ keyDown(cell: CellCoordinates): CellCoordinates;
5
+ keyRight(cell: CellCoordinates): CellCoordinates;
6
+ keyLeft(cell: CellCoordinates): CellCoordinates;
7
+ keyEnd(cell: CellCoordinates, ctrlKey: boolean): CellCoordinates;
8
+ keyHome(cell: CellCoordinates, ctrlKey: boolean): CellCoordinates;
9
+ keyPageUp(cell: CellCoordinates): CellCoordinates;
10
+ keyPageDown(cell: CellCoordinates): CellCoordinates;
11
+ }
@@ -0,0 +1,5 @@
1
+ export interface ClrDatagridVirtualScrollRangeInterface<T> {
2
+ total: number;
3
+ skip: number;
4
+ data: T[];
5
+ }
@@ -59,6 +59,7 @@ export declare class Items<T = any> {
59
59
  * Cleans up our subscriptions to other providers
60
60
  */
61
61
  destroy(): void;
62
+ smartenDown(): void;
62
63
  smartenUp(): void;
63
64
  /**
64
65
  * Manually recompute the list of displayed items
@@ -8,7 +8,7 @@ export declare abstract class DatagridFilterRegistrar<T, F extends ClrDatagridFi
8
8
  * @NOTEe Type `any` is set here to be able to pass templateStrictMode
9
9
  */
10
10
  registered: any;
11
- constructor(filters: FiltersProvider<T>);
11
+ protected constructor(filters: FiltersProvider<T>);
12
12
  get filter(): F;
13
13
  ngOnDestroy(): void;
14
14
  setFilter(filter: F | RegisteredFilter<T, F>): void;
@@ -1,4 +1,4 @@
1
- import { NgZone, OnDestroy } from '@angular/core';
1
+ import { EventEmitter, NgZone, OnDestroy } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare function getTabbableItems(el: HTMLElement): HTMLElement[];
4
4
  export interface KeyNavigationGridConfig {
@@ -9,40 +9,24 @@ export interface KeyNavigationGridConfig {
9
9
  export interface CellCoordinates {
10
10
  x: number;
11
11
  y: number;
12
+ ariaRowIndex?: string;
12
13
  }
13
14
  export declare class KeyNavigationGridController implements OnDestroy {
14
15
  private zone;
16
+ nextCellCoordsEmitter: EventEmitter<CellCoordinates>;
15
17
  skipItemFocus: boolean;
16
- private host;
17
- private config;
18
+ preventScrollOnFocus: boolean;
19
+ config: KeyNavigationGridConfig;
20
+ private keyNavUtils;
18
21
  private listenersAdded;
19
22
  private destroy$;
20
- private _activeCell;
21
23
  constructor(zone: NgZone);
22
- private get grid();
23
- private get rows();
24
- private get cells();
25
24
  ngOnDestroy(): void;
26
25
  addListeners(): void;
27
26
  initializeKeyGrid(host: HTMLElement): void;
28
27
  resetKeyGrid(): void;
29
- removeActiveCell(): void;
30
- getActiveCell(): HTMLElement;
31
- setActiveCell(activeCell: HTMLElement, { keepFocus }?: {
32
- keepFocus: boolean;
33
- }): void;
34
- private getNextForExpandedRowCoordinate;
35
- private getNextItemCoordinate;
36
- private getCalcVariables;
37
- private getCurrentCellCoordinates;
38
- private getCellsForRow;
39
- private isExpandedRow;
40
- private isDetailsRow;
41
- private isRowReplaced;
42
- private isSingleCellExpandedRow;
43
- private actionCellCount;
44
- private actionCellsAsArray;
45
- private isActionCell;
28
+ setActiveCell(activeCell: HTMLElement): void;
29
+ focusElement(activeCell: HTMLElement, options?: FocusOptions): void;
46
30
  static ɵfac: i0.ɵɵFactoryDeclaration<KeyNavigationGridController, never>;
47
31
  static ɵprov: i0.ɵɵInjectableDeclaration<KeyNavigationGridController>;
48
32
  }
@@ -0,0 +1,15 @@
1
+ import { KeyNavigationGridStrategyInterface } from '../../interfaces/key-nav-grid-strategy.interface';
2
+ import { CellCoordinates } from '../key-navigation-grid.controller';
3
+ import { KeyNavigationUtils } from '../key-navigation-utils';
4
+ export declare class DefaultKeyNavigationStrategy implements KeyNavigationGridStrategyInterface {
5
+ protected utils: KeyNavigationUtils;
6
+ constructor(utils: KeyNavigationUtils);
7
+ keyUp(currentCellCoords: CellCoordinates): CellCoordinates;
8
+ keyDown(currentCellCoords: CellCoordinates): CellCoordinates;
9
+ keyLeft(currentCellCoords: CellCoordinates): CellCoordinates;
10
+ keyRight(currentCellCoords: CellCoordinates): CellCoordinates;
11
+ keyEnd(currentCellCoords: CellCoordinates, ctrlKey: boolean): CellCoordinates;
12
+ keyHome(currentCellCoords: CellCoordinates, ctrlKey: boolean): CellCoordinates;
13
+ keyPageUp(currentCellCoords: CellCoordinates): CellCoordinates;
14
+ keyPageDown(currentCellCoords: CellCoordinates): CellCoordinates;
15
+ }
@@ -0,0 +1,12 @@
1
+ import { CellCoordinates } from '../key-navigation-grid.controller';
2
+ import { ExpandedRowKeyNavigationStrategy } from './expanded-row';
3
+ export declare class ExpandedColumnsRowKeyNavigationStrategy extends ExpandedRowKeyNavigationStrategy {
4
+ keyUp(currentCellCoords: CellCoordinates): CellCoordinates;
5
+ keyDown(currentCellCoords: CellCoordinates): CellCoordinates;
6
+ keyLeft(currentCellCoords: CellCoordinates): CellCoordinates;
7
+ keyRight(currentCellCoords: CellCoordinates): CellCoordinates;
8
+ keyEnd(currentCellCoords: CellCoordinates, ctrlKey: boolean): CellCoordinates;
9
+ keyHome(currentCellCoords: CellCoordinates, ctrlKey: boolean): CellCoordinates;
10
+ keyPageUp(currentCellCoords: CellCoordinates): CellCoordinates;
11
+ keyPageDown(currentCellCoords: CellCoordinates): CellCoordinates;
12
+ }
@@ -0,0 +1,12 @@
1
+ import { CellCoordinates } from '../key-navigation-grid.controller';
2
+ import { DefaultKeyNavigationStrategy } from './default';
3
+ export declare class ExpandedRowKeyNavigationStrategy extends DefaultKeyNavigationStrategy {
4
+ keyUp(currentCellCoords: CellCoordinates): CellCoordinates;
5
+ keyDown(currentCellCoords: CellCoordinates): CellCoordinates;
6
+ keyLeft(currentCellCoords: CellCoordinates): CellCoordinates;
7
+ keyRight(currentCellCoords: CellCoordinates): CellCoordinates;
8
+ keyEnd(currentCellCoords: CellCoordinates, ctrlKey: boolean): CellCoordinates;
9
+ keyHome(currentCellCoords: CellCoordinates, ctrlKey: boolean): CellCoordinates;
10
+ keyPageUp(currentCellCoords: CellCoordinates): CellCoordinates;
11
+ keyPageDown(currentCellCoords: CellCoordinates): CellCoordinates;
12
+ }
@@ -0,0 +1,24 @@
1
+ import { CellCoordinates, KeyNavigationGridConfig } from './key-navigation-grid.controller';
2
+ export declare class KeyNavigationUtils {
3
+ host: HTMLElement;
4
+ config: KeyNavigationGridConfig;
5
+ constructor(host: HTMLElement, config: KeyNavigationGridConfig);
6
+ get grid(): Element;
7
+ get rows(): NodeListOf<HTMLElement>;
8
+ get cells(): NodeListOf<HTMLElement>;
9
+ get currentCellCoordinates(): CellCoordinates;
10
+ get averageRowHeight(): number;
11
+ get itemsPerPage(): number;
12
+ setAriaRowIndexTo(cellCoords: CellCoordinates): void;
13
+ getNextItemCoordinate(e: KeyboardEvent): CellCoordinates;
14
+ getCellsForRow(index: number): NodeListOf<Element>;
15
+ isExpandedRow(index: number): boolean;
16
+ isDetailsRow(index: number): boolean;
17
+ isRowReplaced(index: number): boolean;
18
+ isSingleCellExpandedRow(index: number): boolean;
19
+ actionCellCount(index: number): number;
20
+ actionCellsAsArray(index: number): Element[];
21
+ isActionCell(cellCoords: CellCoordinates): boolean;
22
+ createNextCellCoords(cellCoords: CellCoordinates): CellCoordinates;
23
+ private getNavStrategy;
24
+ }
@@ -78,10 +78,10 @@ export class ClrStepperPanel extends ClrAccordionPanel {
78
78
  }
79
79
  }
80
80
  ClrStepperPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrStepperPanel, deps: [{ token: PLATFORM_ID }, { token: i1.ClrCommonStringsService }, { token: i2.FormGroupName, optional: true }, { token: i2.NgModelGroup, optional: true }, { token: i3.StepperService }, { token: i4.IfExpandService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
81
- ClrStepperPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrStepperPanel, selector: "clr-stepper-panel", host: { properties: { "class.clr-stepper-panel": "true" } }, providers: [IfExpandService], viewQueries: [{ propertyName: "headerButton", first: true, predicate: ["headerButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header clr-stepper-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [attr.aria-disabled]=\"panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-step-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle clr-step-angle\"></cds-icon>\n <cds-icon\n status=\"danger\"\n *ngIf=\"panel.status === AccordionStatus.Error\"\n shape=\"exclamation-circle\"\n class=\"clr-step-error-icon\"\n ></cds-icon>\n <cds-icon\n status=\"success\"\n *ngIf=\"panel.status === AccordionStatus.Complete\"\n shape=\"check-circle\"\n class=\"clr-step-complete-icon\"\n ></cds-icon>\n </span>\n <span class=\"clr-step-title-wrapper\">\n <span class=\"clr-step-number\">{{panelNumber}}.</span>\n <ng-content select=\"clr-step-title\"></ng-content>\n </span>\n <ng-content select=\"clr-step-description\"></ng-content>\n </button>\n <div class=\"clr-sr-only\" role=\"status\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\"> {{ stepErrorText(panelNumber)}} </ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">\n {{ stepCompleteText(panelNumber)}}\n </ng-container>\n </div>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n class=\"clr-accordion-content-region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.CdsIconCustomTag, selector: "cds-icon" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], animations: stepAnimation, changeDetection: i0.ChangeDetectionStrategy.OnPush });
81
+ ClrStepperPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ClrStepperPanel, selector: "clr-stepper-panel", host: { properties: { "class.clr-stepper-panel": "true" } }, providers: [IfExpandService], viewQueries: [{ propertyName: "headerButton", first: true, predicate: ["headerButton"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header clr-stepper-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [attr.aria-disabled]=\"panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-step-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle clr-step-angle\"></cds-icon>\n <span class=\"clr-step-status-icon\">\n <cds-icon\n status=\"danger\"\n *ngIf=\"panel.status === AccordionStatus.Error\"\n shape=\"exclamation-circle\"\n class=\"clr-step-error-icon\"\n ></cds-icon>\n <cds-icon\n status=\"success\"\n *ngIf=\"panel.status === AccordionStatus.Complete\"\n shape=\"check-circle\"\n class=\"clr-step-complete-icon\"\n ></cds-icon>\n </span>\n </span>\n <span class=\"clr-step-title-wrapper\">\n <span class=\"clr-step-number\">{{panelNumber}}.</span>\n <ng-content select=\"clr-step-title\"></ng-content>\n </span>\n <ng-content select=\"clr-step-description\"></ng-content>\n </button>\n <div class=\"clr-sr-only\" role=\"status\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\"> {{ stepErrorText(panelNumber)}} </ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">\n {{ stepCompleteText(panelNumber)}}\n </ng-container>\n </div>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n class=\"clr-accordion-content-region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.CdsIconCustomTag, selector: "cds-icon" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], animations: stepAnimation, changeDetection: i0.ChangeDetectionStrategy.OnPush });
82
82
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrStepperPanel, decorators: [{
83
83
  type: Component,
84
- args: [{ selector: 'clr-stepper-panel', host: { '[class.clr-stepper-panel]': 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, animations: stepAnimation, providers: [IfExpandService], template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header clr-stepper-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [attr.aria-disabled]=\"panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-step-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle clr-step-angle\"></cds-icon>\n <cds-icon\n status=\"danger\"\n *ngIf=\"panel.status === AccordionStatus.Error\"\n shape=\"exclamation-circle\"\n class=\"clr-step-error-icon\"\n ></cds-icon>\n <cds-icon\n status=\"success\"\n *ngIf=\"panel.status === AccordionStatus.Complete\"\n shape=\"check-circle\"\n class=\"clr-step-complete-icon\"\n ></cds-icon>\n </span>\n <span class=\"clr-step-title-wrapper\">\n <span class=\"clr-step-number\">{{panelNumber}}.</span>\n <ng-content select=\"clr-step-title\"></ng-content>\n </span>\n <ng-content select=\"clr-step-description\"></ng-content>\n </button>\n <div class=\"clr-sr-only\" role=\"status\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\"> {{ stepErrorText(panelNumber)}} </ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">\n {{ stepCompleteText(panelNumber)}}\n </ng-container>\n </div>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n class=\"clr-accordion-content-region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n" }]
84
+ args: [{ selector: 'clr-stepper-panel', host: { '[class.clr-stepper-panel]': 'true' }, changeDetection: ChangeDetectionStrategy.OnPush, animations: stepAnimation, providers: [IfExpandService], template: "<ng-container *ngIf=\"panel | async; let panel\">\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header clr-stepper-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [attr.aria-disabled]=\"panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-step-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle clr-step-angle\"></cds-icon>\n <span class=\"clr-step-status-icon\">\n <cds-icon\n status=\"danger\"\n *ngIf=\"panel.status === AccordionStatus.Error\"\n shape=\"exclamation-circle\"\n class=\"clr-step-error-icon\"\n ></cds-icon>\n <cds-icon\n status=\"success\"\n *ngIf=\"panel.status === AccordionStatus.Complete\"\n shape=\"check-circle\"\n class=\"clr-step-complete-icon\"\n ></cds-icon>\n </span>\n </span>\n <span class=\"clr-step-title-wrapper\">\n <span class=\"clr-step-number\">{{panelNumber}}.</span>\n <ng-content select=\"clr-step-title\"></ng-content>\n </span>\n <ng-content select=\"clr-step-description\"></ng-content>\n </button>\n <div class=\"clr-sr-only\" role=\"status\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\"> {{ stepErrorText(panelNumber)}} </ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">\n {{ stepCompleteText(panelNumber)}}\n </ng-container>\n </div>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n class=\"clr-accordion-content-region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n" }]
85
85
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
86
86
  type: Inject,
87
87
  args: [PLATFORM_ID]
@@ -93,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
93
93
  type: ViewChild,
94
94
  args: ['headerButton']
95
95
  }] } });
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci1wYW5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2FjY29yZGlvbi9zdGVwcGVyL3N0ZXBwZXItcGFuZWwudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9hY2NvcmRpb24vc3RlcHBlci9zdGVwcGVyLXBhbmVsLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxNQUFNLEVBRU4sUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRS9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7O0FBV25ELE1BQU0sT0FBTyxlQUFnQixTQUFRLGlCQUFpQjtJQU1wRCxZQUMrQixVQUFlLEVBQzVCLGFBQXNDLEVBQ2xDLGFBQTRCLEVBQzVCLFlBQTBCLEVBQ3RDLGNBQThCLEVBQ3RDLGVBQWdDLEVBQ2hDLEdBQXNCO1FBRXRCLEtBQUssQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFScEMsZUFBVSxHQUFW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RUFBRSxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDSixDQUFDO0lBRU8sc0NBQXNDLENBQUMsS0FBMEI7UUFDdkUsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLGVBQWUsQ0FBQyxLQUFLLEVBQUU7WUFDMUMsK0JBQStCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQzs7NEdBMUVVLGVBQWUsa0JBT2hCLFdBQVc7Z0dBUFYsZUFBZSx5R0FGZixDQUFDLGVBQWUsQ0FBQywrSkN0QzlCLDQrRUErREEsNlZEMUJjLGFBQWE7MkZBR2QsZUFBZTtrQkFSM0IsU0FBUzsrQkFDRSxtQkFBbUIsUUFFdkIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLEVBQUUsbUJBQzVCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsYUFBYSxhQUNkLENBQUMsZUFBZSxDQUFDOzswQkFTekIsTUFBTTsyQkFBQyxXQUFXOzswQkFFbEIsUUFBUTs7MEJBQ1IsUUFBUTt1SUFUZ0IsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDI1IEJyb2FkY29tLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhlIHRlcm0gXCJCcm9hZGNvbVwiIHJlZmVycyB0byBCcm9hZGNvbSBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBQTEFURk9STV9JRCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cE5hbWUsIE5nTW9kZWxHcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgc2tpcFVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IElmRXhwYW5kU2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmRpdGlvbmFsL2lmLWV4cGFuZGVkLnNlcnZpY2UnO1xuaW1wb3J0IHsgdHJpZ2dlckFsbEZvcm1Db250cm9sVmFsaWRhdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL2Zvcm1zL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9pMThuL2NvbW1vbi1zdHJpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyQWNjb3JkaW9uUGFuZWwgfSBmcm9tICcuLi9hY2NvcmRpb24tcGFuZWwnO1xuaW1wb3J0IHsgQWNjb3JkaW9uU3RhdHVzIH0gZnJvbSAnLi4vZW51bXMvYWNjb3JkaW9uLXN0YXR1cy5lbnVtJztcbmltcG9ydCB7IEFjY29yZGlvblBhbmVsTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvYWNjb3JkaW9uLm1vZGVsJztcbmltcG9ydCB7IHN0ZXBBbmltYXRpb24gfSBmcm9tICcuLi91dGlscy9hbmltYXRpb24nO1xuaW1wb3J0IHsgU3RlcHBlclNlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9zdGVwcGVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbHItc3RlcHBlci1wYW5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnc3RlcHBlci1wYW5lbC5odG1sJyxcbiAgaG9zdDogeyAnW2NsYXNzLmNsci1zdGVwcGVyLXBhbmVsXSc6ICd0cnVlJyB9LFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogc3RlcEFuaW1hdGlvbixcbiAgcHJvdmlkZXJzOiBbSWZFeHBhbmRTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyU3RlcHBlclBhbmVsIGV4dGVuZHMgQ2xyQWNjb3JkaW9uUGFuZWwgaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKCdoZWFkZXJCdXR0b24nKSBoZWFkZXJCdXR0b246IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICByZWFkb25seSBBY2NvcmRpb25TdGF0dXMgPSBBY2NvcmRpb25TdGF0dXM7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogYW55LFxuICAgIHB1YmxpYyBvdmVycmlkZSBjb21tb25TdHJpbmdzOiBDbHJDb21tb25TdHJpbmdzU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGZvcm1Hcm91cE5hbWU6IEZvcm1Hcm91cE5hbWUsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBuZ01vZGVsR3JvdXA6IE5nTW9kZWxHcm91cCxcbiAgICBwcml2YXRlIHN0ZXBwZXJTZXJ2aWNlOiBTdGVwcGVyU2VydmljZSxcbiAgICBpZkV4cGFuZFNlcnZpY2U6IElmRXhwYW5kU2VydmljZSxcbiAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHN1cGVyKG51bGwsIGNvbW1vblN0cmluZ3MsIHN0ZXBwZXJTZXJ2aWNlLCBpZkV4cGFuZFNlcnZpY2UsIGNkcik7XG4gIH1cblxuICBvdmVycmlkZSBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXBOYW1lID8gdGhpcy5mb3JtR3JvdXBOYW1lLm5hbWUudG9TdHJpbmcoKSA6IHRoaXMubmdNb2RlbEdyb3VwLm5hbWU7XG4gIH1cbiAgb3ZlcnJpZGUgc2V0IGlkKF92YWx1ZTogc3RyaW5nKSB7XG4gICAgLy8gb3ZlcnJpZGluZyBwYXJlbnQgaWQgcmVxdWlyZWQgZW1wdHkgc2V0dGVyXG4gIH1cblxuICBnZXQgZm9ybUdyb3VwKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cE5hbWUgPyB0aGlzLmZvcm1Hcm91cE5hbWUuY29udHJvbCA6IHRoaXMubmdNb2RlbEdyb3VwLmNvbnRyb2w7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMucGFuZWwgPSB0aGlzLnBhbmVsLnBpcGUodGFwKHBhbmVsID0+IHRoaXMudHJpZ2dlckFsbEZvcm1Db250cm9sVmFsaWRhdGlvbklmRXJyb3IocGFuZWwpKSk7XG4gICAgdGhpcy5zdGVwcGVyU2VydmljZS5kaXNhYmxlUGFuZWwodGhpcy5pZCwgdHJ1ZSk7XG4gICAgdGhpcy5saXN0ZW5Ub0ZvY3VzQ2hhbmdlcygpO1xuXG4gICAgLy8gbm90IGFsbCBzdGVwcGVyIHBhbmVscyBhcmUgZ3VhcmFudGVlZCB0byBoYXZlIGEgZm9ybSAoaS5lLiBlbXB0eSB0ZW1wbGF0ZS1kcml2ZW4pXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwKSB7XG4gICAgICAvLyBzZXQgcGFuZWwgc3RhdHVzIG9uIGZvcm0gc3RhdHVzIGNoYW5nZSBvbmx5IGFmdGVyIHRoZSBmb3JtIGJlY29tZXMgaW52YWxpZFxuICAgICAgY29uc3QgaW52YWxpZFN0YXR1c1RyaWdnZXIgPSB0aGlzLmZvcm1Hcm91cC5zdGF0dXNDaGFuZ2VzLnBpcGUoZmlsdGVyKHN0YXR1cyA9PiBzdGF0dXMgPT09ICdJTlZBTElEJykpO1xuXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuc3RhdHVzQ2hhbmdlcy5waXBlKHNraXBVbnRpbChpbnZhbGlkU3RhdHVzVHJpZ2dlciksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZShzdGF0dXMgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5mb3JtR3JvdXAudG91Y2hlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzdGF0dXMgPT09ICdWQUxJRCcpIHtcbiAgICAgICAgICAgIHRoaXMuc3RlcHBlclNlcnZpY2Uuc2V0UGFuZWxWYWxpZCh0aGlzLmlkKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PT0gJ0lOVkFMSUQnKSB7XG4gICAgICAgICAgICB0aGlzLnN0ZXBwZXJTZXJ2aWNlLnNldFBhbmVsSW52YWxpZCh0aGlzLmlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuVG9Gb2N1c0NoYW5nZXMoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnN0ZXBwZXJTZXJ2aWNlLmFjdGl2ZVN0ZXBcbiAgICAgICAgLnBpcGUoZmlsdGVyKHBhbmVsSWQgPT4gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiBwYW5lbElkID09PSB0aGlzLmlkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5oZWFkZXJCdXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHRyaWdnZXJBbGxGb3JtQ29udHJvbFZhbGlkYXRpb25JZkVycm9yKHBhbmVsOiBBY2NvcmRpb25QYW5lbE1vZGVsKSB7XG4gICAgaWYgKHBhbmVsLnN0YXR1cyA9PT0gQWNjb3JkaW9uU3RhdHVzLkVycm9yKSB7XG4gICAgICB0cmlnZ2VyQWxsRm9ybUNvbnRyb2xWYWxpZGF0aW9uKHRoaXMuZm9ybUdyb3VwKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJwYW5lbCB8IGFzeW5jOyBsZXQgcGFuZWxcIj5cbiAgPGRpdiBbbmdDbGFzc109XCJnZXRQYW5lbFN0YXRlQ2xhc3NlcyhwYW5lbClcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2xyLWFjY29yZGlvbi1oZWFkZXIgY2xyLXN0ZXBwZXItaGVhZGVyXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVQYW5lbCgpXCJcbiAgICAgICAgW2lkXT1cImdldEFjY29yZGlvbkhlYWRlcklkKHBhbmVsLnRlbXBsYXRlSWQpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJwYW5lbC5kaXNhYmxlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiZ2V0QWNjb3JkaW9uQ29udGVudElkKHBhbmVsLnRlbXBsYXRlSWQpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJwYW5lbC5vcGVuXCJcbiAgICAgICAgW2NsYXNzLmNsci1hY2NvcmRpb24taGVhZGVyLWhhcy1kZXNjcmlwdGlvbl09XCIoYWNjb3JkaW9uRGVzY3JpcHRpb24uY2hhbmdlcyB8IGFzeW5jKT8ubGVuZ3RoIHx8IGFjY29yZGlvbkRlc2NyaXB0aW9uLmxlbmd0aFwiXG4gICAgICAgICNoZWFkZXJCdXR0b25cbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjbHItc3RlcC1zdGF0dXNcIj5cbiAgICAgICAgICA8Y2RzLWljb24gc2hhcGU9XCJhbmdsZVwiIGRpcmVjdGlvbj1cInJpZ2h0XCIgY2xhc3M9XCJjbHItYWNjb3JkaW9uLWFuZ2xlIGNsci1zdGVwLWFuZ2xlXCI+PC9jZHMtaWNvbj5cbiAgICAgICAgICA8Y2RzLWljb25cbiAgICAgICAgICAgIHN0YXR1cz1cImRhbmdlclwiXG4gICAgICAgICAgICAqbmdJZj1cInBhbmVsLnN0YXR1cyA9PT0gQWNjb3JkaW9uU3RhdHVzLkVycm9yXCJcbiAgICAgICAgICAgIHNoYXBlPVwiZXhjbGFtYXRpb24tY2lyY2xlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY2xyLXN0ZXAtZXJyb3ItaWNvblwiXG4gICAgICAgICAgPjwvY2RzLWljb24+XG4gICAgICAgICAgPGNkcy1pY29uXG4gICAgICAgICAgICBzdGF0dXM9XCJzdWNjZXNzXCJcbiAgICAgICAgICAgICpuZ0lmPVwicGFuZWwuc3RhdHVzID09PSBBY2NvcmRpb25TdGF0dXMuQ29tcGxldGVcIlxuICAgICAgICAgICAgc2hhcGU9XCJjaGVjay1jaXJjbGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJjbHItc3RlcC1jb21wbGV0ZS1pY29uXCJcbiAgICAgICAgICA+PC9jZHMtaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNsci1zdGVwLXRpdGxlLXdyYXBwZXJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNsci1zdGVwLW51bWJlclwiPnt7cGFuZWxOdW1iZXJ9fS48L3NwYW4+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiY2xyLXN0ZXAtdGl0bGVcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiY2xyLXN0ZXAtZGVzY3JpcHRpb25cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjbHItc3Itb25seVwiIHJvbGU9XCJzdGF0dXNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhbmVsLnN0YXR1cyA9PT0gQWNjb3JkaW9uU3RhdHVzLkVycm9yXCI+IHt7IHN0ZXBFcnJvclRleHQocGFuZWxOdW1iZXIpfX0gPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYW5lbC5zdGF0dXMgPT09IEFjY29yZGlvblN0YXR1cy5Db21wbGV0ZVwiPlxuICAgICAgICAgIHt7IHN0ZXBDb21wbGV0ZVRleHQocGFuZWxOdW1iZXIpfX1cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBAc2tpcEluaXRpYWxSZW5kZXJcbiAgICAgIHJvbGU9XCJyZWdpb25cIlxuICAgICAgY2xhc3M9XCJjbHItYWNjb3JkaW9uLWNvbnRlbnQtcmVnaW9uXCJcbiAgICAgIFtpZF09XCJnZXRBY2NvcmRpb25Db250ZW50SWQocGFuZWwudGVtcGxhdGVJZClcIlxuICAgICAgW2F0dHIuYXJpYS1oaWRkZW5dPVwiIXBhbmVsLm9wZW5cIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImdldEFjY29yZGlvbkhlYWRlcklkKHBhbmVsLnRlbXBsYXRlSWQpXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwicGFuZWwub3BlblwiXG4gICAgICAgIEB0b2dnbGVcbiAgICAgICAgKEB0b2dnbGUuZG9uZSk9XCJjb2xsYXBzZVBhbmVsT25BbmltYXRpb25Eb25lKHBhbmVsKVwiXG4gICAgICAgIGNsYXNzPVwiY2xyLWFjY29yZGlvbi1jb250ZW50XCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNsci1hY2NvcmRpb24taW5uZXItY29udGVudFwiPlxuICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci1wYW5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2FjY29yZGlvbi9zdGVwcGVyL3N0ZXBwZXItcGFuZWwudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9hY2NvcmRpb24vc3RlcHBlci9zdGVwcGVyLXBhbmVsLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxNQUFNLEVBRU4sUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRS9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7O0FBV25ELE1BQU0sT0FBTyxlQUFnQixTQUFRLGlCQUFpQjtJQU1wRCxZQUMrQixVQUFlLEVBQzVCLGFBQXNDLEVBQ2xDLGFBQTRCLEVBQzVCLFlBQTBCLEVBQ3RDLGNBQThCLEVBQ3RDLGVBQWdDLEVBQ2hDLEdBQXNCO1FBRXRCLEtBQUssQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFScEMsZUFBVSxHQUFW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RUFBRSxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUNMLENBQUM7SUFDSixDQUFDO0lBRU8sc0NBQXNDLENBQUMsS0FBMEI7UUFDdkUsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLGVBQWUsQ0FBQyxLQUFLLEVBQUU7WUFDMUMsK0JBQStCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQzs7NEdBMUVVLGVBQWUsa0JBT2hCLFdBQVc7Z0dBUFYsZUFBZSx5R0FGZixDQUFDLGVBQWUsQ0FBQywrSkN0QzlCLHdrRkFpRUEsNlZENUJjLGFBQWE7MkZBR2QsZUFBZTtrQkFSM0IsU0FBUzsrQkFDRSxtQkFBbUIsUUFFdkIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLEVBQUUsbUJBQzVCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsYUFBYSxhQUNkLENBQUMsZUFBZSxDQUFDOzswQkFTekIsTUFBTTsyQkFBQyxXQUFXOzswQkFFbEIsUUFBUTs7MEJBQ1IsUUFBUTt1SUFUZ0IsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDI1IEJyb2FkY29tLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhlIHRlcm0gXCJCcm9hZGNvbVwiIHJlZmVycyB0byBCcm9hZGNvbSBJbmMuIGFuZC9vciBpdHMgc3Vic2lkaWFyaWVzLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBQTEFURk9STV9JRCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cE5hbWUsIE5nTW9kZWxHcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgc2tpcFVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IElmRXhwYW5kU2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbmRpdGlvbmFsL2lmLWV4cGFuZGVkLnNlcnZpY2UnO1xuaW1wb3J0IHsgdHJpZ2dlckFsbEZvcm1Db250cm9sVmFsaWRhdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxzL2Zvcm1zL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9pMThuL2NvbW1vbi1zdHJpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyQWNjb3JkaW9uUGFuZWwgfSBmcm9tICcuLi9hY2NvcmRpb24tcGFuZWwnO1xuaW1wb3J0IHsgQWNjb3JkaW9uU3RhdHVzIH0gZnJvbSAnLi4vZW51bXMvYWNjb3JkaW9uLXN0YXR1cy5lbnVtJztcbmltcG9ydCB7IEFjY29yZGlvblBhbmVsTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvYWNjb3JkaW9uLm1vZGVsJztcbmltcG9ydCB7IHN0ZXBBbmltYXRpb24gfSBmcm9tICcuLi91dGlscy9hbmltYXRpb24nO1xuaW1wb3J0IHsgU3RlcHBlclNlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9zdGVwcGVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbHItc3RlcHBlci1wYW5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnc3RlcHBlci1wYW5lbC5odG1sJyxcbiAgaG9zdDogeyAnW2NsYXNzLmNsci1zdGVwcGVyLXBhbmVsXSc6ICd0cnVlJyB9LFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogc3RlcEFuaW1hdGlvbixcbiAgcHJvdmlkZXJzOiBbSWZFeHBhbmRTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyU3RlcHBlclBhbmVsIGV4dGVuZHMgQ2xyQWNjb3JkaW9uUGFuZWwgaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKCdoZWFkZXJCdXR0b24nKSBoZWFkZXJCdXR0b246IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICByZWFkb25seSBBY2NvcmRpb25TdGF0dXMgPSBBY2NvcmRpb25TdGF0dXM7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogYW55LFxuICAgIHB1YmxpYyBvdmVycmlkZSBjb21tb25TdHJpbmdzOiBDbHJDb21tb25TdHJpbmdzU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGZvcm1Hcm91cE5hbWU6IEZvcm1Hcm91cE5hbWUsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBuZ01vZGVsR3JvdXA6IE5nTW9kZWxHcm91cCxcbiAgICBwcml2YXRlIHN0ZXBwZXJTZXJ2aWNlOiBTdGVwcGVyU2VydmljZSxcbiAgICBpZkV4cGFuZFNlcnZpY2U6IElmRXhwYW5kU2VydmljZSxcbiAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHN1cGVyKG51bGwsIGNvbW1vblN0cmluZ3MsIHN0ZXBwZXJTZXJ2aWNlLCBpZkV4cGFuZFNlcnZpY2UsIGNkcik7XG4gIH1cblxuICBvdmVycmlkZSBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXBOYW1lID8gdGhpcy5mb3JtR3JvdXBOYW1lLm5hbWUudG9TdHJpbmcoKSA6IHRoaXMubmdNb2RlbEdyb3VwLm5hbWU7XG4gIH1cbiAgb3ZlcnJpZGUgc2V0IGlkKF92YWx1ZTogc3RyaW5nKSB7XG4gICAgLy8gb3ZlcnJpZGluZyBwYXJlbnQgaWQgcmVxdWlyZWQgZW1wdHkgc2V0dGVyXG4gIH1cblxuICBnZXQgZm9ybUdyb3VwKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cE5hbWUgPyB0aGlzLmZvcm1Hcm91cE5hbWUuY29udHJvbCA6IHRoaXMubmdNb2RlbEdyb3VwLmNvbnRyb2w7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMucGFuZWwgPSB0aGlzLnBhbmVsLnBpcGUodGFwKHBhbmVsID0+IHRoaXMudHJpZ2dlckFsbEZvcm1Db250cm9sVmFsaWRhdGlvbklmRXJyb3IocGFuZWwpKSk7XG4gICAgdGhpcy5zdGVwcGVyU2VydmljZS5kaXNhYmxlUGFuZWwodGhpcy5pZCwgdHJ1ZSk7XG4gICAgdGhpcy5saXN0ZW5Ub0ZvY3VzQ2hhbmdlcygpO1xuXG4gICAgLy8gbm90IGFsbCBzdGVwcGVyIHBhbmVscyBhcmUgZ3VhcmFudGVlZCB0byBoYXZlIGEgZm9ybSAoaS5lLiBlbXB0eSB0ZW1wbGF0ZS1kcml2ZW4pXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwKSB7XG4gICAgICAvLyBzZXQgcGFuZWwgc3RhdHVzIG9uIGZvcm0gc3RhdHVzIGNoYW5nZSBvbmx5IGFmdGVyIHRoZSBmb3JtIGJlY29tZXMgaW52YWxpZFxuICAgICAgY29uc3QgaW52YWxpZFN0YXR1c1RyaWdnZXIgPSB0aGlzLmZvcm1Hcm91cC5zdGF0dXNDaGFuZ2VzLnBpcGUoZmlsdGVyKHN0YXR1cyA9PiBzdGF0dXMgPT09ICdJTlZBTElEJykpO1xuXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuc3RhdHVzQ2hhbmdlcy5waXBlKHNraXBVbnRpbChpbnZhbGlkU3RhdHVzVHJpZ2dlciksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZShzdGF0dXMgPT4ge1xuICAgICAgICAgIGlmICghdGhpcy5mb3JtR3JvdXAudG91Y2hlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzdGF0dXMgPT09ICdWQUxJRCcpIHtcbiAgICAgICAgICAgIHRoaXMuc3RlcHBlclNlcnZpY2Uuc2V0UGFuZWxWYWxpZCh0aGlzLmlkKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PT0gJ0lOVkFMSUQnKSB7XG4gICAgICAgICAgICB0aGlzLnN0ZXBwZXJTZXJ2aWNlLnNldFBhbmVsSW52YWxpZCh0aGlzLmlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuVG9Gb2N1c0NoYW5nZXMoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnN0ZXBwZXJTZXJ2aWNlLmFjdGl2ZVN0ZXBcbiAgICAgICAgLnBpcGUoZmlsdGVyKHBhbmVsSWQgPT4gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiBwYW5lbElkID09PSB0aGlzLmlkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5oZWFkZXJCdXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHRyaWdnZXJBbGxGb3JtQ29udHJvbFZhbGlkYXRpb25JZkVycm9yKHBhbmVsOiBBY2NvcmRpb25QYW5lbE1vZGVsKSB7XG4gICAgaWYgKHBhbmVsLnN0YXR1cyA9PT0gQWNjb3JkaW9uU3RhdHVzLkVycm9yKSB7XG4gICAgICB0cmlnZ2VyQWxsRm9ybUNvbnRyb2xWYWxpZGF0aW9uKHRoaXMuZm9ybUdyb3VwKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJwYW5lbCB8IGFzeW5jOyBsZXQgcGFuZWxcIj5cbiAgPGRpdiBbbmdDbGFzc109XCJnZXRQYW5lbFN0YXRlQ2xhc3NlcyhwYW5lbClcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2xyLWFjY29yZGlvbi1oZWFkZXIgY2xyLXN0ZXBwZXItaGVhZGVyXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImNsci1hY2NvcmRpb24taGVhZGVyLWJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVQYW5lbCgpXCJcbiAgICAgICAgW2lkXT1cImdldEFjY29yZGlvbkhlYWRlcklkKHBhbmVsLnRlbXBsYXRlSWQpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJwYW5lbC5kaXNhYmxlZFwiXG4gICAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiZ2V0QWNjb3JkaW9uQ29udGVudElkKHBhbmVsLnRlbXBsYXRlSWQpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJwYW5lbC5vcGVuXCJcbiAgICAgICAgW2NsYXNzLmNsci1hY2NvcmRpb24taGVhZGVyLWhhcy1kZXNjcmlwdGlvbl09XCIoYWNjb3JkaW9uRGVzY3JpcHRpb24uY2hhbmdlcyB8IGFzeW5jKT8ubGVuZ3RoIHx8IGFjY29yZGlvbkRlc2NyaXB0aW9uLmxlbmd0aFwiXG4gICAgICAgICNoZWFkZXJCdXR0b25cbiAgICAgID5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjbHItc3RlcC1zdGF0dXNcIj5cbiAgICAgICAgICA8Y2RzLWljb24gc2hhcGU9XCJhbmdsZVwiIGRpcmVjdGlvbj1cInJpZ2h0XCIgY2xhc3M9XCJjbHItYWNjb3JkaW9uLWFuZ2xlIGNsci1zdGVwLWFuZ2xlXCI+PC9jZHMtaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNsci1zdGVwLXN0YXR1cy1pY29uXCI+XG4gICAgICAgICAgICA8Y2RzLWljb25cbiAgICAgICAgICAgICAgc3RhdHVzPVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJwYW5lbC5zdGF0dXMgPT09IEFjY29yZGlvblN0YXR1cy5FcnJvclwiXG4gICAgICAgICAgICAgIHNoYXBlPVwiZXhjbGFtYXRpb24tY2lyY2xlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJjbHItc3RlcC1lcnJvci1pY29uXCJcbiAgICAgICAgICAgID48L2Nkcy1pY29uPlxuICAgICAgICAgICAgPGNkcy1pY29uXG4gICAgICAgICAgICAgIHN0YXR1cz1cInN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAqbmdJZj1cInBhbmVsLnN0YXR1cyA9PT0gQWNjb3JkaW9uU3RhdHVzLkNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgc2hhcGU9XCJjaGVjay1jaXJjbGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cImNsci1zdGVwLWNvbXBsZXRlLWljb25cIlxuICAgICAgICAgICAgPjwvY2RzLWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY2xyLXN0ZXAtdGl0bGUtd3JhcHBlclwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2xyLXN0ZXAtbnVtYmVyXCI+e3twYW5lbE51bWJlcn19Ljwvc3Bhbj5cbiAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJjbHItc3RlcC10aXRsZVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJjbHItc3RlcC1kZXNjcmlwdGlvblwiPjwvbmctY29udGVudD5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdiBjbGFzcz1cImNsci1zci1vbmx5XCIgcm9sZT1cInN0YXR1c1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFuZWwuc3RhdHVzID09PSBBY2NvcmRpb25TdGF0dXMuRXJyb3JcIj4ge3sgc3RlcEVycm9yVGV4dChwYW5lbE51bWJlcil9fSA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhbmVsLnN0YXR1cyA9PT0gQWNjb3JkaW9uU3RhdHVzLkNvbXBsZXRlXCI+XG4gICAgICAgICAge3sgc3RlcENvbXBsZXRlVGV4dChwYW5lbE51bWJlcil9fVxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIEBza2lwSW5pdGlhbFJlbmRlclxuICAgICAgcm9sZT1cInJlZ2lvblwiXG4gICAgICBjbGFzcz1cImNsci1hY2NvcmRpb24tY29udGVudC1yZWdpb25cIlxuICAgICAgW2lkXT1cImdldEFjY29yZGlvbkNvbnRlbnRJZChwYW5lbC50ZW1wbGF0ZUlkKVwiXG4gICAgICBbYXR0ci5hcmlhLWhpZGRlbl09XCIhcGFuZWwub3BlblwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiZ2V0QWNjb3JkaW9uSGVhZGVySWQocGFuZWwudGVtcGxhdGVJZClcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJwYW5lbC5vcGVuXCJcbiAgICAgICAgQHRvZ2dsZVxuICAgICAgICAoQHRvZ2dsZS5kb25lKT1cImNvbGxhcHNlUGFuZWxPbkFuaW1hdGlvbkRvbmUocGFuZWwpXCJcbiAgICAgICAgY2xhc3M9XCJjbHItYWNjb3JkaW9uLWNvbnRlbnRcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xyLWFjY29yZGlvbi1pbm5lci1jb250ZW50XCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -112,10 +112,18 @@ ClrButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15
112
112
  [attr.id]="id"
113
113
  >
114
114
  <span class="spinner spinner-inline" *ngIf="loading"></span>
115
- <ng-content></ng-content>
115
+ <ng-container *ngIf="inMenu; then inMenuTemplate; else defaultTemplate"></ng-container>
116
116
  </button>
117
117
  </ng-template>
118
- `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
118
+ <ng-template #defaultTemplate>
119
+ <ng-content></ng-content>
120
+ </ng-template>
121
+ <ng-template #inMenuTemplate>
122
+ <span class="dropdown-item-content">
123
+ <ng-container [ngTemplateOutlet]="defaultTemplate"></ng-container>
124
+ </span>
125
+ </ng-template>
126
+ `, isInline: true, dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
119
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClrButton, decorators: [{
120
128
  type: Component,
121
129
  args: [{
@@ -132,9 +140,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
132
140
  [attr.id]="id"
133
141
  >
134
142
  <span class="spinner spinner-inline" *ngIf="loading"></span>
135
- <ng-content></ng-content>
143
+ <ng-container *ngIf="inMenu; then inMenuTemplate; else defaultTemplate"></ng-container>
136
144
  </button>
137
145
  </ng-template>
146
+ <ng-template #defaultTemplate>
147
+ <ng-content></ng-content>
148
+ </ng-template>
149
+ <ng-template #inMenuTemplate>
150
+ <span class="dropdown-item-content">
151
+ <ng-container [ngTemplateOutlet]="defaultTemplate"></ng-container>
152
+ </span>
153
+ </ng-template>
138
154
  `,
139
155
  providers: [{ provide: LoadingListener, useExisting: ClrButton }],
140
156
  }]
@@ -172,4 +188,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
172
188
  type: Input,
173
189
  args: ['disabled']
174
190
  }] } });
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvYnV0dG9uL2J1dHRvbi1ncm91cC9idXR0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7OztBQXVCdkUsTUFBTSxPQUFPLFNBQVM7SUFnQnBCLFlBQytCLGdCQUFrQyxFQUNoQyxvQkFBMEM7UUFENUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNoQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBakIxRCxXQUFNLEdBQUcsSUFBSSxZQUFZLENBQVUsS0FBSyxDQUFDLENBQUM7UUFPbkQsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixVQUFLLEdBQVcsSUFBSSxDQUFDO1FBQ3JCLFVBQUssR0FBVyxJQUFJLENBQUM7UUFDckIsY0FBUyxHQUFRLElBQUksQ0FBQztRQUN0QixRQUFHLEdBQVcsZUFBZSxFQUFFLENBQUM7SUFLckMsQ0FBQztJQUVKLElBQ0ksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsS0FBYztRQUN2QixLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNoQixJQUFJLElBQUksQ0FB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LEVBQUUsQ0FBQywySkFoQnZEOzs7Ozs7Ozs7Ozs7Ozs7R0FlVDsyRkFHVSxTQUFTO2tCQXBCckIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7R0FlVDtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxXQUFXLEVBQUUsQ0FBQztpQkFDbEU7OzBCQWtCSSxRQUFROzswQkFDUixRQUFROzswQkFBSSxRQUFROzRDQWpCTixNQUFNO3NCQUF0QixNQUFNO3VCQUFDLE9BQU87Z0JBQ1ksdUJBQXVCO3NCQUFqRCxLQUFLO3VCQUFDLGtCQUFrQjtnQkFFMEIsV0FBVztzQkFBN0QsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBa0I3QyxNQUFNO3NCQURULEtBQUs7dUJBQUMsV0FBVztnQkFpQmQsVUFBVTtzQkFEYixLQUFLO3VCQUFDLE9BQU87Z0JBZVYsSUFBSTtzQkFEUCxLQUFLO3VCQUFDLE1BQU07Z0JBV1QsSUFBSTtzQkFEUCxLQUFLO3VCQUFDLE1BQU07Z0JBV1QsRUFBRTtzQkFETCxLQUFLO3VCQUFDLElBQUk7Z0JBV1AsUUFBUTtzQkFEWCxLQUFLO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjUgQnJvYWRjb20uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGUgdGVybSBcIkJyb2FkY29tXCIgcmVmZXJzIHRvIEJyb2FkY29tIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3B0aW9uYWwsIE91dHB1dCwgU2tpcFNlbGYsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlckxpbmtBY3RpdmUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyB1bmlxdWVJZEZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9pZC1nZW5lcmF0b3IvaWQtZ2VuZXJhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyTG9hZGluZ1N0YXRlIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9hZGluZy9sb2FkaW5nJztcbmltcG9ydCB7IExvYWRpbmdMaXN0ZW5lciB9IGZyb20gJy4uLy4uL3V0aWxzL2xvYWRpbmcvbG9hZGluZy1saXN0ZW5lcic7XG5pbXBvcnQgeyBCdXR0b25Jbkdyb3VwU2VydmljZSB9IGZyb20gJy4uL3Byb3ZpZGVycy9idXR0b24taW4tZ3JvdXAuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nsci1idXR0b24nLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy10ZW1wbGF0ZSAjYnV0dG9uUHJvamVjdGVkUmVmPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBbY2xhc3NdPVwiY2xhc3NOYW1lc1wiXG4gICAgICAgIChjbGljayk9XCJlbWl0Q2xpY2soKVwiXG4gICAgICAgIFthdHRyLnR5cGVdPVwidHlwZVwiXG4gICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2F0dHIucm9sZV09XCJyb2xlXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiaWRcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNwaW5uZXIgc3Bpbm5lci1pbmxpbmVcIiAqbmdJZj1cImxvYWRpbmdcIj48L3NwYW4+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGAsXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTG9hZGluZ0xpc3RlbmVyLCB1c2VFeGlzdGluZzogQ2xyQnV0dG9uIH1dLFxufSlcbmV4cG9ydCBjbGFzcyBDbHJCdXR0b24gaW1wbGVtZW50cyBMb2FkaW5nTGlzdGVuZXIge1xuICBAT3V0cHV0KCdjbGljaycpIF9jbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oZmFsc2UpO1xuICBASW5wdXQoJ3JvdXRlckxpbmtBY3RpdmUnKSByb3V0ZXJMaW5rQWN0aXZlQ2xhc3Nlczogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ2J1dHRvblByb2plY3RlZFJlZicsIHsgc3RhdGljOiB0cnVlIH0pIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxDbHJCdXR0b24+O1xuXG4gIGxvYWRpbmc6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfaW5NZW51ID0gZmFsc2U7XG4gIHByaXZhdGUgX2VuYWJsZVNlcnZpY2UgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfY2xhc3NOYW1lcyA9ICdidG4nO1xuICBwcml2YXRlIF9uYW1lOiBzdHJpbmcgPSBudWxsO1xuICBwcml2YXRlIF90eXBlOiBzdHJpbmcgPSBudWxsO1xuICBwcml2YXRlIF9kaXNhYmxlZDogYW55ID0gbnVsbDtcbiAgcHJpdmF0ZSBfaWQ6IHN0cmluZyA9IHVuaXF1ZUlkRmFjdG9yeSgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyTGlua0FjdGl2ZTogUm91dGVyTGlua0FjdGl2ZSxcbiAgICBAU2tpcFNlbGYoKSBAT3B0aW9uYWwoKSBwdWJsaWMgYnV0dG9uSW5Hcm91cFNlcnZpY2U6IEJ1dHRvbkluR3JvdXBTZXJ2aWNlXG4gICkge31cblxuICBASW5wdXQoJ2NsckluTWVudScpXG4gIGdldCBpbk1lbnUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2luTWVudTtcbiAgfVxuICBzZXQgaW5NZW51KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdmFsdWUgPSAhIXZhbHVlO1xuICAgIGlmICh0aGlzLl9pbk1lbnUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl9pbk1lbnUgPSB2YWx1ZTtcbiAgICAgIC8vIFdlIGNoZWNrIGlmIHRoZSBzZXJ2aWNlIGZsYWcgaXMgZW5hYmxlZFxuICAgICAgLy8gYW5kIGlmIHRoZSBzZXJ2aWNlIGV4aXN0cyBiZWNhdXNlIHRoZSBzZXJ2aWNlIGlzIG9wdGlvbmFsXG4gICAgICBpZiAodGhpcy5fZW5hYmxlU2VydmljZSAmJiB0aGlzLmJ1dHRvbkluR3JvdXBTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuYnV0dG9uSW5Hcm91cFNlcnZpY2UudXBkYXRlQnV0dG9uR3JvdXAodGhpcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCdjbGFzcycpXG4gIGdldCBjbGFzc05hbWVzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyTGlua0FjdGl2ZT8uaXNBY3RpdmUgPyBgJHt0aGlzLl9jbGFzc05hbWVzfSAke3RoaXMucm91dGVyTGlua0FjdGl2ZUNsYXNzZXN9YCA6IHRoaXMuX2NsYXNzTmFtZXM7XG4gIH1cbiAgc2V0IGNsYXNzTmFtZXModmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBjbGFzc05hbWVzOiBzdHJpbmdbXSA9IHZhbHVlLnNwbGl0KCcgJyk7XG4gICAgICBpZiAoY2xhc3NOYW1lcy5pbmRleE9mKCdidG4nKSA9PT0gLTEpIHtcbiAgICAgICAgY2xhc3NOYW1lcy5wdXNoKCdidG4nKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2NsYXNzTmFtZXMgPSBjbGFzc05hbWVzLmpvaW4oJyAnKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoJ25hbWUnKVxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG4gIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5fbmFtZSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgndHlwZScpXG4gIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gIH1cbiAgc2V0IHR5cGUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLl90eXBlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCdpZCcpXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuICBzZXQgaWQodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLl9pZCA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgnZGlzYWJsZWQnKVxuICBnZXQgZGlzYWJsZWQoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLl9kaXNhYmxlZCA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kaXNhYmxlZCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJvbGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbk1lbnUgPyAnbWVudWl0ZW0nIDogbnVsbDtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLl9lbmFibGVTZXJ2aWNlID0gdHJ1ZTtcbiAgfVxuXG4gIGxvYWRpbmdTdGF0ZUNoYW5nZShzdGF0ZTogQ2xyTG9hZGluZ1N0YXRlKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkaW5nID0gc3RhdGUgPT09IENsckxvYWRpbmdTdGF0ZS5MT0FESU5HO1xuICB9XG5cbiAgZW1pdENsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuX2NsaWNrLmVtaXQodHJ1ZSk7XG4gIH1cbn1cbiJdfQ==
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvYnV0dG9uL2J1dHRvbi1ncm91cC9idXR0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQWUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7OztBQStCdkUsTUFBTSxPQUFPLFNBQVM7SUFnQnBCLFlBQytCLGdCQUFrQyxFQUNoQyxvQkFBMEM7UUFENUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNoQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBakIxRCxXQUFNLEdBQUcsSUFBSSxZQUFZLENBQVUsS0FBSyxDQUFDLENBQUM7UUFPbkQsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixVQUFLLEdBQVcsSUFBSSxDQUFDO1FBQ3JCLFVBQUssR0FBVyxJQUFJLENBQUM7UUFDckIsY0FBUyxHQUFRLElBQUksQ0FBQztRQUN0QixRQUFHLEdBQVcsZUFBZSxFQUFFLENBQUM7SUFLckMsQ0FBQztJQUVKLElBQ0ksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsS0FBYztRQUN2QixLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNoQixJQUFJLElBQUksQ0FB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LEVBQUUsQ0FBQywySkF4QnZEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCVDsyRkFHVSxTQUFTO2tCQTVCckIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCVDtvQkFDRCxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxXQUFXLEVBQUUsQ0FBQztpQkFDbEU7OzBCQWtCSSxRQUFROzswQkFDUixRQUFROzswQkFBSSxRQUFROzRDQWpCTixNQUFNO3NCQUF0QixNQUFNO3VCQUFDLE9BQU87Z0JBQ1ksdUJBQXVCO3NCQUFqRCxLQUFLO3VCQUFDLGtCQUFrQjtnQkFFMEIsV0FBVztzQkFBN0QsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBa0I3QyxNQUFNO3NCQURULEtBQUs7dUJBQUMsV0FBVztnQkFpQmQsVUFBVTtzQkFEYixLQUFLO3VCQUFDLE9BQU87Z0JBZVYsSUFBSTtzQkFEUCxLQUFLO3VCQUFDLE1BQU07Z0JBV1QsSUFBSTtzQkFEUCxLQUFLO3VCQUFDLE1BQU07Z0JBV1QsRUFBRTtzQkFETCxLQUFLO3VCQUFDLElBQUk7Z0JBV1AsUUFBUTtzQkFEWCxLQUFLO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjUgQnJvYWRjb20uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGUgdGVybSBcIkJyb2FkY29tXCIgcmVmZXJzIHRvIEJyb2FkY29tIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3B0aW9uYWwsIE91dHB1dCwgU2tpcFNlbGYsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlckxpbmtBY3RpdmUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyB1bmlxdWVJZEZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9pZC1nZW5lcmF0b3IvaWQtZ2VuZXJhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyTG9hZGluZ1N0YXRlIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9hZGluZy9sb2FkaW5nJztcbmltcG9ydCB7IExvYWRpbmdMaXN0ZW5lciB9IGZyb20gJy4uLy4uL3V0aWxzL2xvYWRpbmcvbG9hZGluZy1saXN0ZW5lcic7XG5pbXBvcnQgeyBCdXR0b25Jbkdyb3VwU2VydmljZSB9IGZyb20gJy4uL3Byb3ZpZGVycy9idXR0b24taW4tZ3JvdXAuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nsci1idXR0b24nLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy10ZW1wbGF0ZSAjYnV0dG9uUHJvamVjdGVkUmVmPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBbY2xhc3NdPVwiY2xhc3NOYW1lc1wiXG4gICAgICAgIChjbGljayk9XCJlbWl0Q2xpY2soKVwiXG4gICAgICAgIFthdHRyLnR5cGVdPVwidHlwZVwiXG4gICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgIFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2F0dHIucm9sZV09XCJyb2xlXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiaWRcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNwaW5uZXIgc3Bpbm5lci1pbmxpbmVcIiAqbmdJZj1cImxvYWRpbmdcIj48L3NwYW4+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbk1lbnU7IHRoZW4gaW5NZW51VGVtcGxhdGU7IGVsc2UgZGVmYXVsdFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRlbXBsYXRlPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNpbk1lbnVUZW1wbGF0ZT5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24taXRlbS1jb250ZW50XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGVmYXVsdFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBMb2FkaW5nTGlzdGVuZXIsIHVzZUV4aXN0aW5nOiBDbHJCdXR0b24gfV0sXG59KVxuZXhwb3J0IGNsYXNzIENsckJ1dHRvbiBpbXBsZW1lbnRzIExvYWRpbmdMaXN0ZW5lciB7XG4gIEBPdXRwdXQoJ2NsaWNrJykgX2NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPihmYWxzZSk7XG4gIEBJbnB1dCgncm91dGVyTGlua0FjdGl2ZScpIHJvdXRlckxpbmtBY3RpdmVDbGFzc2VzOiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZCgnYnV0dG9uUHJvamVjdGVkUmVmJywgeyBzdGF0aWM6IHRydWUgfSkgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPENsckJ1dHRvbj47XG5cbiAgbG9hZGluZzogYm9vbGVhbjtcblxuICBwcml2YXRlIF9pbk1lbnUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZW5hYmxlU2VydmljZSA9IGZhbHNlO1xuICBwcml2YXRlIF9jbGFzc05hbWVzID0gJ2J0bic7XG4gIHByaXZhdGUgX25hbWU6IHN0cmluZyA9IG51bGw7XG4gIHByaXZhdGUgX3R5cGU6IHN0cmluZyA9IG51bGw7XG4gIHByaXZhdGUgX2Rpc2FibGVkOiBhbnkgPSBudWxsO1xuICBwcml2YXRlIF9pZDogc3RyaW5nID0gdW5pcXVlSWRGYWN0b3J5KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSByb3V0ZXJMaW5rQWN0aXZlOiBSb3V0ZXJMaW5rQWN0aXZlLFxuICAgIEBTa2lwU2VsZigpIEBPcHRpb25hbCgpIHB1YmxpYyBidXR0b25Jbkdyb3VwU2VydmljZTogQnV0dG9uSW5Hcm91cFNlcnZpY2VcbiAgKSB7fVxuXG4gIEBJbnB1dCgnY2xySW5NZW51JylcbiAgZ2V0IGluTWVudSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW5NZW51O1xuICB9XG4gIHNldCBpbk1lbnUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB2YWx1ZSA9ICEhdmFsdWU7XG4gICAgaWYgKHRoaXMuX2luTWVudSAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuX2luTWVudSA9IHZhbHVlO1xuICAgICAgLy8gV2UgY2hlY2sgaWYgdGhlIHNlcnZpY2UgZmxhZyBpcyBlbmFibGVkXG4gICAgICAvLyBhbmQgaWYgdGhlIHNlcnZpY2UgZXhpc3RzIGJlY2F1c2UgdGhlIHNlcnZpY2UgaXMgb3B0aW9uYWxcbiAgICAgIGlmICh0aGlzLl9lbmFibGVTZXJ2aWNlICYmIHRoaXMuYnV0dG9uSW5Hcm91cFNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5idXR0b25Jbkdyb3VwU2VydmljZS51cGRhdGVCdXR0b25Hcm91cCh0aGlzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASW5wdXQoJ2NsYXNzJylcbiAgZ2V0IGNsYXNzTmFtZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZXJMaW5rQWN0aXZlPy5pc0FjdGl2ZSA/IGAke3RoaXMuX2NsYXNzTmFtZXN9ICR7dGhpcy5yb3V0ZXJMaW5rQWN0aXZlQ2xhc3Nlc31gIDogdGhpcy5fY2xhc3NOYW1lcztcbiAgfVxuICBzZXQgY2xhc3NOYW1lcyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IGNsYXNzTmFtZXM6IHN0cmluZ1tdID0gdmFsdWUuc3BsaXQoJyAnKTtcbiAgICAgIGlmIChjbGFzc05hbWVzLmluZGV4T2YoJ2J0bicpID09PSAtMSkge1xuICAgICAgICBjbGFzc05hbWVzLnB1c2goJ2J0bicpO1xuICAgICAgfVxuICAgICAgdGhpcy5fY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXMuam9pbignICcpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgnbmFtZScpXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gIH1cbiAgc2V0IG5hbWUodmFsdWU6IHN0cmluZykge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLl9uYW1lID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCd0eXBlJylcbiAgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuICBzZXQgdHlwZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuX3R5cGUgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoJ2lkJylcbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2lkO1xuICB9XG4gIHNldCBpZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuX2lkID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCdkaXNhYmxlZCcpXG4gIGdldCBkaXNhYmxlZCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVkID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVkID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBnZXQgcm9sZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmluTWVudSA/ICdtZW51aXRlbScgOiBudWxsO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuX2VuYWJsZVNlcnZpY2UgPSB0cnVlO1xuICB9XG5cbiAgbG9hZGluZ1N0YXRlQ2hhbmdlKHN0YXRlOiBDbHJMb2FkaW5nU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRpbmcgPSBzdGF0ZSA9PT0gQ2xyTG9hZGluZ1N0YXRlLkxPQURJTkc7XG4gIH1cblxuICBlbWl0Q2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5fY2xpY2suZW1pdCh0cnVlKTtcbiAgfVxufVxuIl19