@fundamental-ngx/core 0.35.3 → 0.35.4-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/action-bar/package.json +1 -1
  2. package/action-sheet/package.json +1 -1
  3. package/alert/package.json +1 -1
  4. package/avatar/package.json +1 -1
  5. package/avatar-group/package.json +1 -1
  6. package/bar/package.json +1 -1
  7. package/breadcrumb/breadcrumb-item.component.d.ts +20 -13
  8. package/breadcrumb/breadcrumb.component.d.ts +46 -34
  9. package/breadcrumb/breadcrumb.module.d.ts +3 -1
  10. package/breadcrumb/esm2020/breadcrumb-item.component.mjs +44 -23
  11. package/breadcrumb/esm2020/breadcrumb.component.mjs +93 -88
  12. package/breadcrumb/esm2020/breadcrumb.module.mjs +12 -4
  13. package/breadcrumb/fesm2015/fundamental-ngx-core-breadcrumb.mjs +147 -114
  14. package/breadcrumb/fesm2015/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  15. package/breadcrumb/fesm2020/fundamental-ngx-core-breadcrumb.mjs +144 -111
  16. package/breadcrumb/fesm2020/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  17. package/breadcrumb/package.json +1 -1
  18. package/busy-indicator/package.json +1 -1
  19. package/button/package.json +1 -1
  20. package/calendar/package.json +1 -1
  21. package/card/package.json +1 -1
  22. package/carousel/package.json +1 -1
  23. package/checkbox/package.json +1 -1
  24. package/combobox/package.json +1 -1
  25. package/content-density/package.json +3 -3
  26. package/date-picker/package.json +1 -1
  27. package/datetime/package.json +1 -1
  28. package/datetime-picker/package.json +1 -1
  29. package/dialog/package.json +1 -1
  30. package/dynamic-page/package.json +1 -1
  31. package/dynamic-side-content/package.json +1 -1
  32. package/esm2020/breadcrumb/breadcrumb-item.component.mjs +44 -23
  33. package/esm2020/breadcrumb/breadcrumb.component.mjs +93 -88
  34. package/esm2020/breadcrumb/breadcrumb.module.mjs +12 -4
  35. package/esm2020/overflow-layout/directives/overflow-expand.directive.mjs +6 -4
  36. package/esm2020/overflow-layout/directives/overflow-item-container-ref.directive.mjs +2 -2
  37. package/esm2020/overflow-layout/directives/overflow-item-ref.directive.mjs +20 -8
  38. package/esm2020/overflow-layout/directives/overflow-layout-item-container.directive.mjs +30 -3
  39. package/esm2020/overflow-layout/directives/overflow-layout-item.directive.mjs +12 -3
  40. package/esm2020/overflow-layout/index.mjs +3 -1
  41. package/esm2020/overflow-layout/interfaces/overflow-expand.interface.mjs +1 -1
  42. package/esm2020/overflow-layout/interfaces/overflow-item-ref.interface.mjs +1 -1
  43. package/esm2020/overflow-layout/interfaces/overflow-item.interface.mjs +1 -1
  44. package/esm2020/overflow-layout/overflow-layout.component.mjs +83 -157
  45. package/esm2020/overflow-layout/overflow-layout.service.mjs +241 -0
  46. package/esm2020/time/time-column/time-column.component.mjs +7 -8
  47. package/esm2020/utils/functions/resize-observable.mjs +9 -2
  48. package/facets/package.json +1 -1
  49. package/feed-input/package.json +1 -1
  50. package/feed-list-item/package.json +1 -1
  51. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs +147 -114
  52. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  53. package/fesm2015/fundamental-ngx-core-overflow-layout.mjs +378 -166
  54. package/fesm2015/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  55. package/fesm2015/fundamental-ngx-core-time.mjs +6 -7
  56. package/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
  57. package/fesm2015/fundamental-ngx-core-utils.mjs +8 -1
  58. package/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
  59. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs +144 -111
  60. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  61. package/fesm2020/fundamental-ngx-core-overflow-layout.mjs +375 -165
  62. package/fesm2020/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  63. package/fesm2020/fundamental-ngx-core-time.mjs +6 -7
  64. package/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
  65. package/fesm2020/fundamental-ngx-core-utils.mjs +8 -1
  66. package/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
  67. package/file-uploader/package.json +1 -1
  68. package/fixed-card-layout/package.json +1 -1
  69. package/flexible-column-layout/package.json +1 -1
  70. package/form/package.json +1 -1
  71. package/formatted-text/package.json +1 -1
  72. package/grid-list/package.json +1 -1
  73. package/icon/package.json +1 -1
  74. package/illustrated-message/package.json +1 -1
  75. package/infinite-scroll/package.json +1 -1
  76. package/info-label/package.json +1 -1
  77. package/inline-help/package.json +1 -1
  78. package/input-group/package.json +1 -1
  79. package/layout-grid/package.json +1 -1
  80. package/layout-panel/package.json +1 -1
  81. package/link/package.json +1 -1
  82. package/list/package.json +1 -1
  83. package/menu/package.json +1 -1
  84. package/message-box/package.json +1 -1
  85. package/message-strip/package.json +1 -1
  86. package/message-toast/package.json +1 -1
  87. package/micro-process-flow/package.json +1 -1
  88. package/mobile-mode/package.json +1 -1
  89. package/multi-input/package.json +1 -1
  90. package/nested-list/package.json +1 -1
  91. package/notification/package.json +1 -1
  92. package/object-identifier/package.json +1 -1
  93. package/object-marker/package.json +1 -1
  94. package/object-number/package.json +1 -1
  95. package/object-status/package.json +1 -1
  96. package/overflow-layout/directives/overflow-expand.directive.d.ts +6 -5
  97. package/overflow-layout/directives/overflow-item-ref.directive.d.ts +16 -6
  98. package/overflow-layout/directives/overflow-layout-item-container.directive.d.ts +13 -1
  99. package/overflow-layout/directives/overflow-layout-item.directive.d.ts +7 -2
  100. package/overflow-layout/esm2020/directives/overflow-expand.directive.mjs +6 -4
  101. package/overflow-layout/esm2020/directives/overflow-item-container-ref.directive.mjs +2 -2
  102. package/overflow-layout/esm2020/directives/overflow-item-ref.directive.mjs +20 -8
  103. package/overflow-layout/esm2020/directives/overflow-layout-item-container.directive.mjs +30 -3
  104. package/overflow-layout/esm2020/directives/overflow-layout-item.directive.mjs +12 -3
  105. package/overflow-layout/esm2020/index.mjs +3 -1
  106. package/overflow-layout/esm2020/interfaces/overflow-expand.interface.mjs +1 -1
  107. package/overflow-layout/esm2020/interfaces/overflow-item-ref.interface.mjs +1 -1
  108. package/overflow-layout/esm2020/interfaces/overflow-item.interface.mjs +1 -1
  109. package/overflow-layout/esm2020/overflow-layout.component.mjs +83 -157
  110. package/overflow-layout/esm2020/overflow-layout.service.mjs +241 -0
  111. package/overflow-layout/fesm2015/fundamental-ngx-core-overflow-layout.mjs +378 -166
  112. package/overflow-layout/fesm2015/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  113. package/overflow-layout/fesm2020/fundamental-ngx-core-overflow-layout.mjs +375 -165
  114. package/overflow-layout/fesm2020/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  115. package/overflow-layout/index.d.ts +2 -0
  116. package/overflow-layout/interfaces/overflow-expand.interface.d.ts +4 -4
  117. package/overflow-layout/interfaces/overflow-item-ref.interface.d.ts +14 -3
  118. package/overflow-layout/interfaces/overflow-item.interface.d.ts +2 -1
  119. package/overflow-layout/overflow-layout.component.d.ts +19 -31
  120. package/overflow-layout/overflow-layout.service.d.ts +90 -0
  121. package/overflow-layout/package.json +14 -13
  122. package/overflow-layout/tokens/overflow-expand.token.d.ts +1 -1
  123. package/overflow-layout/tokens/overflow-item-ref.token.d.ts +1 -1
  124. package/package.json +1 -1
  125. package/pagination/package.json +1 -1
  126. package/panel/package.json +1 -1
  127. package/popover/package.json +1 -1
  128. package/product-switch/package.json +1 -1
  129. package/progress-indicator/package.json +1 -1
  130. package/quick-view/package.json +1 -1
  131. package/radio/package.json +1 -1
  132. package/rating-indicator/package.json +1 -1
  133. package/resizable-card-layout/package.json +1 -1
  134. package/scroll-spy/package.json +1 -1
  135. package/scrollbar/package.json +1 -1
  136. package/segmented-button/package.json +1 -1
  137. package/select/package.json +1 -1
  138. package/shared/package.json +1 -1
  139. package/shellbar/package.json +1 -1
  140. package/side-navigation/package.json +1 -1
  141. package/slider/package.json +1 -1
  142. package/split-button/package.json +1 -1
  143. package/splitter/package.json +1 -1
  144. package/status-indicator/package.json +1 -1
  145. package/step-input/package.json +1 -1
  146. package/switch/package.json +1 -1
  147. package/table/package.json +1 -1
  148. package/tabs/package.json +1 -1
  149. package/text/package.json +1 -1
  150. package/theming/package.json +1 -1
  151. package/tile/package.json +1 -1
  152. package/time/esm2020/time-column/time-column.component.mjs +7 -8
  153. package/time/fesm2015/fundamental-ngx-core-time.mjs +6 -7
  154. package/time/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
  155. package/time/fesm2020/fundamental-ngx-core-time.mjs +6 -7
  156. package/time/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
  157. package/time/package.json +1 -1
  158. package/time/time-column/time-column.component.d.ts +1 -0
  159. package/time-picker/package.json +1 -1
  160. package/timeline/package.json +1 -1
  161. package/title/package.json +1 -1
  162. package/token/package.json +1 -1
  163. package/toolbar/package.json +1 -1
  164. package/tree/package.json +1 -1
  165. package/upload-collection/package.json +1 -1
  166. package/utils/esm2020/functions/resize-observable.mjs +9 -2
  167. package/utils/fesm2015/fundamental-ngx-core-utils.mjs +8 -1
  168. package/utils/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
  169. package/utils/fesm2020/fundamental-ngx-core-utils.mjs +8 -1
  170. package/utils/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
  171. package/utils/package.json +1 -1
  172. package/vertical-navigation/package.json +1 -1
  173. package/wizard/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/action-bar",
3
- "version": "0.35.3",
3
+ "version": "0.35.4-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/action-sheet",
3
- "version": "0.35.3",
3
+ "version": "0.35.4-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/alert",
3
- "version": "0.35.3",
3
+ "version": "0.35.4-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/avatar",
3
- "version": "0.35.3",
3
+ "version": "0.35.4-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/avatar-group",
3
- "version": "0.35.3",
3
+ "version": "0.35.4-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
package/bar/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/bar",
3
- "version": "0.35.3",
3
+ "version": "0.35.4-rc.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
- import { AfterViewInit, ChangeDetectorRef, ElementRef, Renderer2 } from '@angular/core';
2
- import { LinkComponent } from '@fundamental-ngx/core/link';
3
1
  import { DomPortal } from '@angular/cdk/portal';
2
+ import { AfterViewInit, ElementRef } from '@angular/core';
3
+ import { LinkComponent } from '@fundamental-ngx/core/link';
4
4
  import * as i0 from "@angular/core";
5
5
  /**
6
6
  * Breadcrumb item directive. Must have child breadcrumb link directives.
@@ -12,26 +12,33 @@ import * as i0 from "@angular/core";
12
12
  * ```
13
13
  */
14
14
  export declare class BreadcrumbItemComponent implements AfterViewInit {
15
- private _elementRef;
16
- private renderer2;
17
- private _cdR;
18
- /** @hidden */
19
- get elementRef(): ElementRef<HTMLElement>;
15
+ readonly elementRef: ElementRef<HTMLElement>;
20
16
  /** @hidden */
21
17
  breadcrumbLink: LinkComponent;
22
- /** @hidden */
23
- get width(): number;
24
18
  /** In case there is no link in Item and breadcrumb item is non-interactive, we move whole item content to menu item title */
25
19
  breadcrumbItemPortal: DomPortal<Element>;
26
20
  /** When breadcrumb item has link in it, we are moving link content to menu item title */
27
21
  linkContentPortal: DomPortal;
28
- constructor(_elementRef: ElementRef<HTMLElement>, renderer2: Renderer2, _cdR: ChangeDetectorRef);
22
+ /**
23
+ * Breadcrumb item dom portal.
24
+ */
25
+ portal: DomPortal;
29
26
  /** @hidden */
30
- get needsClickProxy(): boolean;
31
- show: () => void;
32
- hide: () => void;
27
+ private _attached;
28
+ /** @hidden */
29
+ constructor(elementRef: ElementRef<HTMLElement>);
30
+ /** @hidden */
31
+ get _needsClickProxy(): boolean;
33
32
  /** @hidden */
34
33
  ngAfterViewInit(): void;
34
+ /**
35
+ * Sets breadcrumb item dom portal.
36
+ */
37
+ setPortal(): void;
38
+ /** @hidden */
39
+ _detach(): void;
40
+ /** @hidden */
41
+ _attach(): void;
35
42
  static ɵfac: i0.ɵɵFactoryDeclaration<BreadcrumbItemComponent, never>;
36
43
  static ɵcmp: i0.ɵɵComponentDeclaration<BreadcrumbItemComponent, "fd-breadcrumb-item", never, {}, {}, ["breadcrumbLink"], ["*"]>;
37
44
  }
@@ -1,8 +1,7 @@
1
- import { AfterViewInit, ChangeDetectorRef, ElementRef, NgZone, OnDestroy, OnInit, QueryList } from '@angular/core';
1
+ import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnInit } from '@angular/core';
2
2
  import { BreadcrumbItemComponent } from './breadcrumb-item.component';
3
- import { ResizeObserverService, RtlService } from '@fundamental-ngx/core/utils';
3
+ import { DestroyedService, RtlService } from '@fundamental-ngx/core/utils';
4
4
  import { BehaviorSubject } from 'rxjs';
5
- import { MenuComponent } from '@fundamental-ngx/core/menu';
6
5
  import { Placement } from '@fundamental-ngx/core/shared';
7
6
  import * as i0 from "@angular/core";
8
7
  /**
@@ -16,52 +15,65 @@ import * as i0 from "@angular/core";
16
15
  * </fd-breadcrumb>
17
16
  * ```
18
17
  */
19
- export declare class BreadcrumbComponent implements AfterViewInit, OnInit, OnDestroy {
20
- readonly elementRef: ElementRef<Element>;
21
- private readonly _rtlService;
22
- private readonly _cdRef;
23
- private readonly _resizeObserver;
24
- private readonly _ngZone;
25
- /** @hidden */
26
- _breadcrumbItems: QueryList<BreadcrumbItemComponent>;
27
- /** @hidden */
28
- _menuComponent: MenuComponent;
29
- private readonly _overflowContainer;
30
- /** @hidden */
31
- _collapsedBreadcrumbItems: Array<BreadcrumbItemComponent>;
32
- /** @hidden */
33
- _placement$: BehaviorSubject<Placement>;
18
+ export declare class BreadcrumbComponent implements OnInit, AfterViewInit {
19
+ elementRef: ElementRef<HTMLElement>;
20
+ private _onDestroy$;
21
+ private _rtlService;
22
+ private _cdr;
34
23
  /**
24
+ * @deprecated
25
+ * Breadcrumbs component now uses more advanced calculation mechanism without the need of specifying the container element.
26
+ *
35
27
  * The element to act as the breadcrumb container. When provided, the breadcrumb's responsive collapsing behavior
36
28
  * performs better. When not provided, the immediate parent element's width will be used.
37
29
  */
38
- containerElement: HTMLElement;
30
+ set containerElement(_: HTMLElement);
39
31
  /** Whether to append items to the overflow dropdown in reverse order. Default is true. */
40
32
  reverse: boolean;
33
+ /**
34
+ * Event emitted when visible items count is changed.
35
+ */
36
+ visibleItemsCount: EventEmitter<number>;
37
+ /**
38
+ * Event emitted when hidden items count is changed.
39
+ */
40
+ hiddenItemsCount: EventEmitter<number>;
41
41
  /** @hidden */
42
- _containerBoundary: number;
42
+ private readonly _contentItems;
43
43
  /** @hidden */
44
- private _subscriptions;
44
+ private readonly _menuComponent;
45
45
  /** @hidden */
46
- private _itemToSize;
47
- constructor(elementRef: ElementRef<Element>, _rtlService: RtlService | null, _cdRef: ChangeDetectorRef, _resizeObserver: ResizeObserverService, _ngZone: NgZone);
46
+ private readonly _overflowLayout;
47
+ /**
48
+ * @hidden
49
+ * Array of breadcrumb items.
50
+ */
51
+ _items: BreadcrumbItemComponent[];
48
52
  /** @hidden */
49
- ngOnInit(): void;
53
+ _placement$: BehaviorSubject<Placement>;
50
54
  /** @hidden */
51
- ngAfterViewInit(): void;
55
+ constructor(elementRef: ElementRef<HTMLElement>, _onDestroy$: DestroyedService, _rtlService: RtlService | null, _cdr: ChangeDetectorRef);
52
56
  /** @hidden */
53
- ngOnDestroy(): void;
54
- /**
55
- * Callback function when breadcrumbs container has been resized.
56
- */
57
- onResize(): void;
57
+ ngOnInit(): void;
58
58
  /** @hidden */
59
- _keyDownHandle(event: Event): void;
59
+ onResize(): void;
60
60
  /**
61
61
  * We catch interactions with item, Enter, Space, Mouse click and Touch click,
62
62
  * if original element had router link we are proxying click to that element
63
63
  * */
64
- itemClicked(breadcrumbItem: BreadcrumbItemComponent, $event: any): void;
65
- static ɵfac: i0.ɵɵFactoryDeclaration<BreadcrumbComponent, [null, { optional: true; }, null, null, null]>;
66
- static ɵcmp: i0.ɵɵComponentDeclaration<BreadcrumbComponent, "fd-breadcrumb", never, { "containerElement": "containerElement"; "reverse": "reverse"; }, {}, ["_breadcrumbItems"], ["*"]>;
64
+ itemClicked(breadcrumbItem: any, $event: any): void;
65
+ /** @hidden */
66
+ ngAfterViewInit(): void;
67
+ /** @hidden */
68
+ _keyDownHandle(event: Event): void;
69
+ /** @hidden */
70
+ _onHiddenChange(isHidden: boolean, breadcrumb: BreadcrumbItemComponent): void;
71
+ /** @hidden */
72
+ _onVisibleItemsCountChange(visibleItemsCount: number): void;
73
+ /** @hidden */
74
+ _onHiddenItemsCountChange(hiddenItemsCount: number): void;
75
+ /** @hidden */
76
+ private _setItems;
77
+ static ɵfac: i0.ɵɵFactoryDeclaration<BreadcrumbComponent, [null, null, { optional: true; }, null]>;
78
+ static ɵcmp: i0.ɵɵComponentDeclaration<BreadcrumbComponent, "fd-breadcrumb", never, { "containerElement": "containerElement"; "reverse": "reverse"; }, { "visibleItemsCount": "visibleItemsCount"; "hiddenItemsCount": "hiddenItemsCount"; }, ["_contentItems"], ["*"]>;
67
79
  }
@@ -10,8 +10,10 @@ import * as i8 from "@fundamental-ngx/core/link";
10
10
  import * as i9 from "@angular/cdk/portal";
11
11
  import * as i10 from "@fundamental-ngx/core/utils";
12
12
  import * as i11 from "@fundamental-ngx/core/content-density";
13
+ import * as i12 from "@fundamental-ngx/core/overflow-layout";
14
+ import * as i13 from "@fundamental-ngx/core/button";
13
15
  export declare class BreadcrumbModule {
14
16
  static ɵfac: i0.ɵɵFactoryDeclaration<BreadcrumbModule, never>;
15
- static ɵmod: i0.ɵɵNgModuleDeclaration<BreadcrumbModule, [typeof i1.BreadcrumbComponent, typeof i2.BreadcrumbItemComponent, typeof i3.DeprecatedBreadcrumbsCompactDirective], [typeof i4.CommonModule, typeof i5.IconModule, typeof i6.PopoverModule, typeof i7.MenuModule, typeof i8.LinkModule, typeof i9.PortalModule, typeof i10.PipeModule, typeof i11.ContentDensityModule], [typeof i1.BreadcrumbComponent, typeof i2.BreadcrumbItemComponent, typeof i8.LinkModule, typeof i3.DeprecatedBreadcrumbsCompactDirective, typeof i11.ContentDensityModule]>;
17
+ static ɵmod: i0.ɵɵNgModuleDeclaration<BreadcrumbModule, [typeof i1.BreadcrumbComponent, typeof i2.BreadcrumbItemComponent, typeof i3.DeprecatedBreadcrumbsCompactDirective], [typeof i4.CommonModule, typeof i5.IconModule, typeof i6.PopoverModule, typeof i7.MenuModule, typeof i8.LinkModule, typeof i9.PortalModule, typeof i10.PipeModule, typeof i11.ContentDensityModule, typeof i12.OverflowLayoutModule, typeof i13.ButtonModule], [typeof i1.BreadcrumbComponent, typeof i2.BreadcrumbItemComponent, typeof i8.LinkModule, typeof i3.DeprecatedBreadcrumbsCompactDirective, typeof i11.ContentDensityModule]>;
16
18
  static ɵinj: i0.ɵɵInjectorDeclaration<BreadcrumbModule>;
17
19
  }
@@ -1,6 +1,6 @@
1
- import { ChangeDetectorRef, Component, ContentChild, ElementRef, forwardRef, Renderer2 } from '@angular/core';
2
- import { LinkComponent } from '@fundamental-ngx/core/link';
3
1
  import { DomPortal } from '@angular/cdk/portal';
2
+ import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, forwardRef, ViewEncapsulation } from '@angular/core';
3
+ import { LinkComponent } from '@fundamental-ngx/core/link';
4
4
  import * as i0 from "@angular/core";
5
5
  /**
6
6
  * Breadcrumb item directive. Must have child breadcrumb link directives.
@@ -12,47 +12,68 @@ import * as i0 from "@angular/core";
12
12
  * ```
13
13
  */
14
14
  export class BreadcrumbItemComponent {
15
- constructor(_elementRef, renderer2, _cdR) {
16
- this._elementRef = _elementRef;
17
- this.renderer2 = renderer2;
18
- this._cdR = _cdR;
19
- this.show = () => this.renderer2.setStyle(this._elementRef.nativeElement, 'display', 'inline-block');
20
- this.hide = () => this.renderer2.setStyle(this._elementRef.nativeElement, 'display', 'none');
15
+ /** @hidden */
16
+ constructor(elementRef) {
17
+ this.elementRef = elementRef;
18
+ /** @hidden */
19
+ this._attached = false;
21
20
  }
22
21
  /** @hidden */
23
- get elementRef() {
24
- return this._elementRef;
22
+ get _needsClickProxy() {
23
+ return (!!this.breadcrumbLink?.elementRef().nativeElement.getAttribute('href') || !!this.breadcrumbLink.routerLink);
25
24
  }
26
25
  /** @hidden */
27
- get width() {
28
- return this._elementRef.nativeElement.getBoundingClientRect().width;
26
+ ngAfterViewInit() {
27
+ this._attach();
28
+ }
29
+ /**
30
+ * Sets breadcrumb item dom portal.
31
+ */
32
+ setPortal() {
33
+ if (!this.portal) {
34
+ this.portal = new DomPortal(this.elementRef);
35
+ }
29
36
  }
30
37
  /** @hidden */
31
- get needsClickProxy() {
32
- return (!!this.breadcrumbLink?.elementRef().nativeElement.getAttribute('href') || !!this.breadcrumbLink.routerLink);
38
+ _detach() {
39
+ if (!this._attached) {
40
+ return;
41
+ }
42
+ if (this.linkContentPortal?.isAttached) {
43
+ this.linkContentPortal?.detach();
44
+ }
45
+ if (this.breadcrumbItemPortal?.isAttached) {
46
+ this.breadcrumbItemPortal?.detach();
47
+ }
48
+ this._attached = false;
33
49
  }
34
50
  /** @hidden */
35
- ngAfterViewInit() {
36
- if (this.breadcrumbLink) {
51
+ _attach() {
52
+ if (this._attached) {
53
+ return;
54
+ }
55
+ if (this.breadcrumbLink && this.breadcrumbLink.contentSpan) {
37
56
  this.linkContentPortal = new DomPortal(this.breadcrumbLink.contentSpan.nativeElement);
38
57
  }
39
58
  this.breadcrumbItemPortal = new DomPortal(this.elementRef.nativeElement.firstElementChild);
40
- this._cdR.detectChanges();
59
+ this._attached = true;
41
60
  }
42
61
  }
43
- BreadcrumbItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: BreadcrumbItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
44
- BreadcrumbItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: BreadcrumbItemComponent, selector: "fd-breadcrumb-item", host: { classAttribute: "fd-breadcrumb__item" }, queries: [{ propertyName: "breadcrumbLink", first: true, predicate: i0.forwardRef(function () { return LinkComponent; }), descendants: true }], ngImport: i0, template: '<div style="display: inline"><ng-content></ng-content></div>', isInline: true });
62
+ BreadcrumbItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: BreadcrumbItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
63
+ BreadcrumbItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: BreadcrumbItemComponent, selector: "fd-breadcrumb-item", host: { classAttribute: "fd-breadcrumb__item" }, queries: [{ propertyName: "breadcrumbLink", first: true, predicate: i0.forwardRef(function () { return LinkComponent; }), descendants: true }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
45
64
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: BreadcrumbItemComponent, decorators: [{
46
65
  type: Component,
47
66
  args: [{
48
67
  selector: 'fd-breadcrumb-item',
49
- template: '<div style="display: inline"><ng-content></ng-content></div>',
68
+ template: '<ng-content></ng-content>',
50
69
  host: {
51
70
  class: 'fd-breadcrumb__item'
52
- }
71
+ },
72
+ encapsulation: ViewEncapsulation.None,
73
+ changeDetection: ChangeDetectionStrategy.OnPush
53
74
  }]
54
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { breadcrumbLink: [{
75
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { breadcrumbLink: [{
55
76
  type: ContentChild,
56
77
  args: [forwardRef(() => LinkComponent)]
57
78
  }] } });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFVBQVUsRUFDVixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFFaEQ7Ozs7Ozs7O0dBUUc7QUFRSCxNQUFNLE9BQU8sdUJBQXVCO0lBcUJoQyxZQUNZLFdBQW9DLEVBQ3BDLFNBQW9CLEVBQ3BCLElBQXVCO1FBRnZCLGdCQUFXLEdBQVgsV0FBVyxDQUF5QjtRQUNwQyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBVW5DLFNBQUksR0FBRyxHQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDdEcsU0FBSSxHQUFHLEdBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQVYzRixDQUFDO0lBeEJKLGNBQWM7SUFDZCxJQUFJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDNUIsQ0FBQztJQU1ELGNBQWM7SUFDZCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hFLENBQUM7SUFjRCxjQUFjO0lBQ2QsSUFBSSxlQUFlO1FBQ2YsT0FBTyxDQUNILENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUM3RyxDQUFDO0lBQ04sQ0FBQztJQUtELGNBQWM7SUFDZCxlQUFlO1FBQ1gsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLFNBQVMsQ0FBYyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN0RztRQUNELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxpQkFBNEIsQ0FBQyxDQUFDO1FBQ3RHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUIsQ0FBQzs7b0hBNUNRLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDBMQU9ELGFBQWEsb0RBWmxDLDhEQUE4RDsyRkFLL0QsdUJBQXVCO2tCQVBuQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRSw4REFBOEQ7b0JBQ3hFLElBQUksRUFBRTt3QkFDRixLQUFLLEVBQUUscUJBQXFCO3FCQUMvQjtpQkFDSjt5SkFTRyxjQUFjO3NCQURiLFlBQVk7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBSZW5kZXJlcjJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaW5rQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2xpbmsnO1xuaW1wb3J0IHsgRG9tUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5cbi8qKlxuICogQnJlYWRjcnVtYiBpdGVtIGRpcmVjdGl2ZS4gTXVzdCBoYXZlIGNoaWxkIGJyZWFkY3J1bWIgbGluayBkaXJlY3RpdmVzLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxmZC1icmVhZGNydW1iLWl0ZW0+XG4gKiAgICAgPGEgZmQtbGluayBbcm91dGVyTGlua109XCInIydcIj5CcmVhZGNydW1iIExpbms8L2E+XG4gKiA8L2ZkLWJyZWFkY3J1bWItaXRlbT5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLWJyZWFkY3J1bWItaXRlbScsXG4gICAgdGVtcGxhdGU6ICc8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lXCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PicsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkLWJyZWFkY3J1bWJfX2l0ZW0nXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1iSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IGVsZW1lbnRSZWYoKTogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBMaW5rQ29tcG9uZW50KSlcbiAgICBicmVhZGNydW1iTGluazogTGlua0NvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IHdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIEluIGNhc2UgdGhlcmUgaXMgbm8gbGluayBpbiBJdGVtIGFuZCBicmVhZGNydW1iIGl0ZW0gaXMgbm9uLWludGVyYWN0aXZlLCB3ZSBtb3ZlIHdob2xlIGl0ZW0gY29udGVudCB0byBtZW51IGl0ZW0gdGl0bGUgKi9cbiAgICBicmVhZGNydW1iSXRlbVBvcnRhbDogRG9tUG9ydGFsPEVsZW1lbnQ+O1xuXG4gICAgLyoqIFdoZW4gYnJlYWRjcnVtYiBpdGVtIGhhcyBsaW5rIGluIGl0LCB3ZSBhcmUgbW92aW5nIGxpbmsgY29udGVudCB0byBtZW51IGl0ZW0gdGl0bGUgKi9cbiAgICBsaW5rQ29udGVudFBvcnRhbDogRG9tUG9ydGFsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyMjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIF9jZFI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgbmVlZHNDbGlja1Byb3h5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgISF0aGlzLmJyZWFkY3J1bWJMaW5rPy5lbGVtZW50UmVmKCkubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSB8fCAhIXRoaXMuYnJlYWRjcnVtYkxpbmsucm91dGVyTGlua1xuICAgICAgICApO1xuICAgIH1cblxuICAgIHNob3cgPSAoKTogdm9pZCA9PiB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5JywgJ2lubGluZS1ibG9jaycpO1xuICAgIGhpZGUgPSAoKTogdm9pZCA9PiB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5JywgJ25vbmUnKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5icmVhZGNydW1iTGluaykge1xuICAgICAgICAgICAgdGhpcy5saW5rQ29udGVudFBvcnRhbCA9IG5ldyBEb21Qb3J0YWw8SFRNTEVsZW1lbnQ+KHRoaXMuYnJlYWRjcnVtYkxpbmsuY29udGVudFNwYW4ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5icmVhZGNydW1iSXRlbVBvcnRhbCA9IG5ldyBEb21Qb3J0YWwodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQgYXMgRWxlbWVudCk7XG4gICAgICAgIHRoaXMuX2NkUi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuIl19
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixVQUFVLEVBQ1YsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFM0Q7Ozs7Ozs7O0dBUUc7QUFVSCxNQUFNLE9BQU8sdUJBQXVCO0lBbUJoQyxjQUFjO0lBQ2QsWUFBNEIsVUFBbUM7UUFBbkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7UUFKL0QsY0FBYztRQUNOLGNBQVMsR0FBRyxLQUFLLENBQUM7SUFHd0MsQ0FBQztJQUVuRSxjQUFjO0lBQ2QsSUFBSSxnQkFBZ0I7UUFDaEIsT0FBTyxDQUNILENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUM3RyxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWM7SUFDZCxlQUFlO1FBQ1gsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVM7UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNkLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2hEO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxPQUFPO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDakIsT0FBTztTQUNWO1FBRUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztTQUNwQztRQUVELElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLFVBQVUsRUFBRTtZQUN2QyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLENBQUM7U0FDdkM7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsY0FBYztJQUNkLE9BQU87UUFDSCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEIsT0FBTztTQUNWO1FBRUQsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFO1lBQ3hELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLFNBQVMsQ0FBYyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUN0RztRQUVELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxpQkFBNEIsQ0FBQyxDQUFDO1FBQ3RHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7O29IQXhFUSx1QkFBdUI7d0dBQXZCLHVCQUF1QiwwTEFFRCxhQUFhLG9EQVRsQywyQkFBMkI7MkZBTzVCLHVCQUF1QjtrQkFUbkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxJQUFJLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLHFCQUFxQjtxQkFDL0I7b0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRDtpR0FJRyxjQUFjO3NCQURiLFlBQVk7dUJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERvbVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGlua0NvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9saW5rJztcblxuLyoqXG4gKiBCcmVhZGNydW1iIGl0ZW0gZGlyZWN0aXZlLiBNdXN0IGhhdmUgY2hpbGQgYnJlYWRjcnVtYiBsaW5rIGRpcmVjdGl2ZXMuXG4gKlxuICogYGBgaHRtbFxuICogPGZkLWJyZWFkY3J1bWItaXRlbT5cbiAqICAgICA8YSBmZC1saW5rIFtyb3V0ZXJMaW5rXT1cIicjJ1wiPkJyZWFkY3J1bWIgTGluazwvYT5cbiAqIDwvZmQtYnJlYWRjcnVtYi1pdGVtPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtYnJlYWRjcnVtYi1pdGVtJyxcbiAgICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZC1icmVhZGNydW1iX19pdGVtJ1xuICAgIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBCcmVhZGNydW1iSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IExpbmtDb21wb25lbnQpKVxuICAgIGJyZWFkY3J1bWJMaW5rOiBMaW5rQ29tcG9uZW50O1xuXG4gICAgLyoqIEluIGNhc2UgdGhlcmUgaXMgbm8gbGluayBpbiBJdGVtIGFuZCBicmVhZGNydW1iIGl0ZW0gaXMgbm9uLWludGVyYWN0aXZlLCB3ZSBtb3ZlIHdob2xlIGl0ZW0gY29udGVudCB0byBtZW51IGl0ZW0gdGl0bGUgKi9cbiAgICBicmVhZGNydW1iSXRlbVBvcnRhbDogRG9tUG9ydGFsPEVsZW1lbnQ+O1xuXG4gICAgLyoqIFdoZW4gYnJlYWRjcnVtYiBpdGVtIGhhcyBsaW5rIGluIGl0LCB3ZSBhcmUgbW92aW5nIGxpbmsgY29udGVudCB0byBtZW51IGl0ZW0gdGl0bGUgKi9cbiAgICBsaW5rQ29udGVudFBvcnRhbDogRG9tUG9ydGFsO1xuXG4gICAgLyoqXG4gICAgICogQnJlYWRjcnVtYiBpdGVtIGRvbSBwb3J0YWwuXG4gICAgICovXG4gICAgcG9ydGFsOiBEb21Qb3J0YWw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2F0dGFjaGVkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9uZWVkc0NsaWNrUHJveHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhIXRoaXMuYnJlYWRjcnVtYkxpbms/LmVsZW1lbnRSZWYoKS5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnaHJlZicpIHx8ICEhdGhpcy5icmVhZGNydW1iTGluay5yb3V0ZXJMaW5rXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2F0dGFjaCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgYnJlYWRjcnVtYiBpdGVtIGRvbSBwb3J0YWwuXG4gICAgICovXG4gICAgc2V0UG9ydGFsKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMucG9ydGFsKSB7XG4gICAgICAgICAgICB0aGlzLnBvcnRhbCA9IG5ldyBEb21Qb3J0YWwodGhpcy5lbGVtZW50UmVmKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2RldGFjaCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9hdHRhY2hlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubGlua0NvbnRlbnRQb3J0YWw/LmlzQXR0YWNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMubGlua0NvbnRlbnRQb3J0YWw/LmRldGFjaCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYnJlYWRjcnVtYkl0ZW1Qb3J0YWw/LmlzQXR0YWNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYkl0ZW1Qb3J0YWw/LmRldGFjaCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fYXR0YWNoZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hdHRhY2goKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9hdHRhY2hlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYnJlYWRjcnVtYkxpbmsgJiYgdGhpcy5icmVhZGNydW1iTGluay5jb250ZW50U3Bhbikge1xuICAgICAgICAgICAgdGhpcy5saW5rQ29udGVudFBvcnRhbCA9IG5ldyBEb21Qb3J0YWw8SFRNTEVsZW1lbnQ+KHRoaXMuYnJlYWRjcnVtYkxpbmsuY29udGVudFNwYW4ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJyZWFkY3J1bWJJdGVtUG9ydGFsID0gbmV3IERvbVBvcnRhbCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCBhcyBFbGVtZW50KTtcbiAgICAgICAgdGhpcy5fYXR0YWNoZWQgPSB0cnVlO1xuICAgIH1cbn1cbiJdfQ==