@c8y/ngx-components 1011.0.33 → 1011.0.35

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 (34) hide show
  1. package/bundles/c8y-ngx-components-sub-assets.umd.js +4 -5
  2. package/bundles/c8y-ngx-components-sub-assets.umd.js.map +1 -1
  3. package/bundles/c8y-ngx-components-sub-assets.umd.min.js +1 -1
  4. package/bundles/c8y-ngx-components-sub-assets.umd.min.js.map +1 -1
  5. package/bundles/c8y-ngx-components-upgrade.umd.js +6 -5
  6. package/bundles/c8y-ngx-components-upgrade.umd.js.map +1 -1
  7. package/bundles/c8y-ngx-components-upgrade.umd.min.js +1 -1
  8. package/bundles/c8y-ngx-components-upgrade.umd.min.js.map +1 -1
  9. package/bundles/c8y-ngx-components.umd.js +62 -20
  10. package/bundles/c8y-ngx-components.umd.js.map +1 -1
  11. package/bundles/c8y-ngx-components.umd.min.js +1 -1
  12. package/bundles/c8y-ngx-components.umd.min.js.map +1 -1
  13. package/c8y-ngx-components.metadata.json +1 -1
  14. package/core/action-bar/action-bar.component.d.ts +22 -6
  15. package/core/common/outlet.directive.d.ts +7 -0
  16. package/core/data-grid/data-grid.component.d.ts +3 -0
  17. package/esm2015/core/action-bar/action-bar.component.js +41 -15
  18. package/esm2015/core/bootstrap/bootstrap.component.js +2 -2
  19. package/esm2015/core/common/outlet.directive.js +19 -2
  20. package/esm2015/core/data-grid/data-grid.component.js +6 -2
  21. package/esm2015/sub-assets/sub-assets-grid.component.js +6 -7
  22. package/esm2015/upgrade/action-bar.factory.js +6 -2
  23. package/esm2015/upgrade/bridge.service.js +2 -5
  24. package/fesm2015/c8y-ngx-components-sub-assets.js +4 -5
  25. package/fesm2015/c8y-ngx-components-sub-assets.js.map +1 -1
  26. package/fesm2015/c8y-ngx-components-upgrade.js +5 -5
  27. package/fesm2015/c8y-ngx-components-upgrade.js.map +1 -1
  28. package/fesm2015/c8y-ngx-components.js +62 -17
  29. package/fesm2015/c8y-ngx-components.js.map +1 -1
  30. package/package.json +2 -2
  31. package/sub-assets/c8y-ngx-components-sub-assets.metadata.json +1 -1
  32. package/sub-assets/sub-assets-grid.component.d.ts +3 -3
  33. package/upgrade/action-bar.factory.d.ts +1 -0
  34. package/upgrade/c8y-ngx-components-upgrade.metadata.json +1 -1
@@ -1,9 +1,11 @@
1
+ import { OnDestroy, OnInit } from '@angular/core';
1
2
  import { ActionBarItem } from './action-bar.model';
3
+ import { Observable } from 'rxjs';
2
4
  /**
3
5
  * This component is used as the outlet to show the action bars.
4
6
  * In a c8ycli app it is by default placed on the bootstrap component.
5
7
  */
6
- export declare class ActionBarComponent {
8
+ export declare class ActionBarComponent implements OnInit, OnDestroy {
7
9
  /**
8
10
  * Identifies if the navigator is opened. If yes, the action-bar
9
11
  * needs to move to the right.
@@ -30,15 +32,29 @@ export declare class ActionBarComponent {
30
32
  /**
31
33
  * The current items to display in the ActionBar.
32
34
  */
33
- items: ActionBarItem[];
35
+ items$: Observable<ActionBarItem[]>;
36
+ /**
37
+ * Provides observable for right action items.
38
+ */
39
+ right$: Observable<ActionBarItem[]>;
40
+ /**
41
+ * Provides observable for left action items.
42
+ */
43
+ left$: Observable<ActionBarItem[]>;
44
+ /**
45
+ * Provides observable for more action items.
46
+ */
47
+ more$: Observable<ActionBarItem[]>;
34
48
  /**
35
49
  * Returns true if no items are present and hides the action bar.
36
50
  */
37
- get hidden(): boolean;
51
+ hidden$: Observable<boolean>;
38
52
  /**
39
- * Returns the items sorted by priority and grouped by the placement passed.
40
- * @param {placement} Which placement should be returned sorted.
53
+ * Binds hidden property to this component's native element
41
54
  */
42
- getSortedItems(placement: 'left' | 'right' | 'more'): any;
55
+ hidden: boolean;
56
+ private destroy$;
57
+ ngOnInit(): void;
58
+ ngOnDestroy(): void;
43
59
  private byPriority;
44
60
  }
@@ -5,6 +5,13 @@ import { ComponentFactoryResolver, ElementRef, Renderer2, TemplateRef, Type, Vie
5
5
  * <div *c8yOutlet="template"></div>
6
6
  * <div *c8yOutlet="DeviceStatusComponent; properties: { node }"></div>
7
7
  * <div *c8yOutlet="nodes"></div>
8
+ *
9
+ *
10
+ * note: If template is instance of HTMLElement (for example, node compiled by angularJS) then there can be
11
+ * only single instance rendered, as only one instance of HTMLElement can exist in DOM.
12
+ * If there is need for displaying same element multiple times, please make sure to inject into
13
+ * this element createCopy function, which should return another instance of given element.
14
+ *
8
15
  */
9
16
  export declare class OutletDirective {
10
17
  private viewContainer;
@@ -52,6 +52,9 @@ export declare class DataGridComponent implements DataGrid, OnChanges, AfterView
52
52
  bulkActionControls: BulkActionControl[];
53
53
  set _bulkActionControls(bulkActionControls: any);
54
54
  searchText: string;
55
+ /** Shows the warning for the sub-assets counter */
56
+ showCounterWarning: boolean;
57
+ /** Emits an event when mouse is over a row. */
55
58
  rowMouseOver: EventEmitter<object>;
56
59
  rowMouseLeave: EventEmitter<object>;
57
60
  rowClick: EventEmitter<object>;
@@ -1,4 +1,6 @@
1
1
  import { Component, HostBinding, Input } from '@angular/core';
2
+ import { of, Subject } from 'rxjs';
3
+ import { map, takeUntil } from 'rxjs/operators';
2
4
  import { filter, sortBy } from 'lodash-es';
3
5
  /**
4
6
  * This component is used as the outlet to show the action bars.
@@ -32,20 +34,44 @@ export class ActionBarComponent {
32
34
  /**
33
35
  * The current items to display in the ActionBar.
34
36
  */
35
- this.items = [];
37
+ this.items$ = of([]);
38
+ /**
39
+ * Provides observable for right action items.
40
+ */
41
+ this.right$ = of([]);
42
+ /**
43
+ * Provides observable for left action items.
44
+ */
45
+ this.left$ = of([]);
46
+ /**
47
+ * Provides observable for more action items.
48
+ */
49
+ this.more$ = of([]);
50
+ /**
51
+ * Returns true if no items are present and hides the action bar.
52
+ */
53
+ this.hidden$ = of(true);
54
+ /**
55
+ * Binds hidden property to this component's native element
56
+ */
57
+ this.hidden = true;
58
+ this.destroy$ = new Subject();
36
59
  }
37
- /**
38
- * Returns true if no items are present and hides the action bar.
39
- */
40
- get hidden() {
41
- return !(this.items && this.items.length);
60
+ ngOnInit() {
61
+ this.right$ = this.items$.pipe(map(items => filter(items, { placement: 'right' })), map(items => sortBy(items, this.byPriority)));
62
+ this.left$ = this.items$.pipe(map(items => filter(items, { placement: 'left' })), map(items => sortBy(items, this.byPriority)));
63
+ this.more$ = this.items$.pipe(map(items => filter(items, { placement: 'more' })), map(items => sortBy(items, this.byPriority)));
64
+ this.hidden$ = this.items$.pipe(map(items => {
65
+ return !(items && items.length);
66
+ }));
67
+ this.hidden$
68
+ .pipe(takeUntil(this.destroy$)).subscribe(hidden => {
69
+ this.hidden = hidden;
70
+ });
42
71
  }
43
- /**
44
- * Returns the items sorted by priority and grouped by the placement passed.
45
- * @param {placement} Which placement should be returned sorted.
46
- */
47
- getSortedItems(placement) {
48
- return sortBy(filter(this.items, { placement }), this.byPriority);
72
+ ngOnDestroy() {
73
+ this.destroy$.next();
74
+ this.destroy$.complete();
49
75
  }
50
76
  byPriority(item) {
51
77
  return -item.priority;
@@ -54,7 +80,7 @@ export class ActionBarComponent {
54
80
  ActionBarComponent.decorators = [
55
81
  { type: Component, args: [{
56
82
  selector: 'c8y-action-bar',
57
- template: "<div class=\"navbar-header\">\n <p class=\"text-label-small p-l-16 p-t-8 p-b-8 visible-xs\">\n <span class=\"text-primary\">{{'Action bar' | translate}}</span>\n </p>\n</div>\n\n<div id=\"page-toolbar\" class=\"navbar-collapse\" >\n <ul class=\"nav navbar-nav navbar-left\">\n <ng-container *ngFor=\"let item of getSortedItems('left')\">\n <ng-container *c8yOutlet=\"item.template\"></ng-container>\n </ng-container>\n </ul>\n <ul class=\"nav navbar-nav navbar-right\">\n <ng-container *ngFor=\"let item of getSortedItems('right')\">\n <ng-container *c8yOutlet=\"item.template\"></ng-container>\n </ng-container>\n <li class=\"no-remove more-wrapper\" *ngIf=\"getSortedItems('more').length > 0\">\n <div class=\"dropdown\" dropdown>\n <button\n title=\"{{ 'More' | translate }}\u2026\"\n class=\"dropdown-toggle c8y-dropdown d-flex\"\n dropdownToggle\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <span class=\"text-truncate\" translate>More\u2026</span>\n <i [c8yIcon]=\"'caret-down'\"></i>\n </button>\n <ul class=\"dropdown-menu dropdown-menu-right\" *dropdownMenu>\n <ng-container *ngFor=\"let item of getSortedItems('more')\">\n <ng-container *c8yOutlet=\"item.template\"></ng-container>\n </ng-container>\n </ul>\n <ul class=\"dropdown-menu visible-xs\"> \n <ng-container *ngFor=\"let item of getSortedItems('more')\">\n <ng-container *c8yOutlet=\"item.template\"></ng-container>\n </ng-container>\n </ul>\n </div>\n </li>\n </ul>\n</div>\n",
83
+ template: "<div class=\"navbar-header\">\n <p class=\"text-label-small p-l-16 p-t-8 p-b-8 visible-xs\">\n <span class=\"text-primary\">{{ 'Action bar' | translate }}</span>\n </p>\n</div>\n\n<div id=\"page-toolbar\" class=\"navbar-collapse\">\n <ul class=\"nav navbar-nav navbar-left\">\n <ng-container *ngFor=\"let item of left$ | async\">\n <ng-container *c8yOutlet=\"item.template\"></ng-container>\n </ng-container>\n </ul>\n <ul class=\"nav navbar-nav navbar-right\">\n <ng-container *ngFor=\"let item of right$ | async\">\n <ng-container *c8yOutlet=\"item.template\"></ng-container>\n </ng-container>\n <li class=\"no-remove more-wrapper\" *ngIf=\"(more$ | async).length > 0\">\n <div class=\"dropdown\" dropdown>\n <button\n title=\"{{ 'More' | translate }}\u2026\"\n class=\"dropdown-toggle c8y-dropdown d-flex\"\n dropdownToggle\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <span class=\"text-truncate\" translate>More\u2026</span>\n <i [c8yIcon]=\"'caret-down'\"></i>\n </button>\n <ul class=\"dropdown-menu dropdown-menu-right hidden-xs\" *dropdownMenu>\n <ng-container *ngFor=\"let item of more$ | async\">\n <ng-container *c8yOutlet=\"item.template\"></ng-container>\n </ng-container>\n </ul>\n <ul class=\"dropdown-menu visible-xs\">\n <ng-container *ngFor=\"let item of more$ | async\">\n <ng-container *c8yOutlet=\"item.template\"></ng-container>\n </ng-container>\n </ul>\n </div>\n </li>\n </ul>\n</div>\n",
58
84
  host: { class: 'c8y-ui-action-bar' }
59
85
  },] }
60
86
  ];
@@ -63,7 +89,7 @@ ActionBarComponent.propDecorators = {
63
89
  hasTabs: [{ type: Input }, { type: HostBinding, args: ['class.has-tabs',] }],
64
90
  isTabsHorizontal: [{ type: Input }, { type: HostBinding, args: ['class.horizontal-tabs',] }],
65
91
  uiActionBar: [{ type: HostBinding, args: ['class.c8y-ui-action-bar',] }],
66
- items: [{ type: Input }],
92
+ items$: [{ type: Input }],
67
93
  hidden: [{ type: HostBinding }]
68
94
  };
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2FjdGlvbi1iYXIvYWN0aW9uLWJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUczQzs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sa0JBQWtCO0lBTC9CO1FBTUU7OztXQUdHO1FBQzJDLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRXBFOzs7V0FHRztRQUNxQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRXhEOzs7V0FHRztRQUM0QyxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFeEU7O1dBRUc7UUFDSCwwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFFOUI7O1dBRUc7UUFDcUMsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFFM0Q7O1dBRUc7UUFDTSxVQUFLLEdBQW9CLEVBQUUsQ0FBQztJQW9CdkMsQ0FBQztJQWxCQzs7T0FFRztJQUNILElBQW1CLE1BQU07UUFDdkIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjLENBQUMsU0FBb0M7UUFDakQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU8sVUFBVSxDQUFDLElBQUk7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDeEIsQ0FBQzs7O1lBeERGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixzcERBQTBDO2dCQUMxQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUU7YUFDckM7Ozs0QkFNRSxLQUFLLFlBQUksV0FBVyxTQUFDLHNCQUFzQjtzQkFNM0MsS0FBSyxZQUFJLFdBQVcsU0FBQyxnQkFBZ0I7K0JBTXJDLEtBQUssWUFBSSxXQUFXLFNBQUMsdUJBQXVCOzBCQVU1QyxXQUFXLFNBQUMseUJBQXlCO29CQUtyQyxLQUFLO3FCQUtMLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgQWZ0ZXJDb250ZW50SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlsdGVyLCBzb3J0QnkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQWN0aW9uQmFySXRlbSB9IGZyb20gJy4vYWN0aW9uLWJhci5tb2RlbCc7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaXMgdXNlZCBhcyB0aGUgb3V0bGV0IHRvIHNob3cgdGhlIGFjdGlvbiBiYXJzLlxuICogSW4gYSBjOHljbGkgYXBwIGl0IGlzIGJ5IGRlZmF1bHQgcGxhY2VkIG9uIHRoZSBib290c3RyYXAgY29tcG9uZW50LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYWN0aW9uLWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24tYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDogeyBjbGFzczogJ2M4eS11aS1hY3Rpb24tYmFyJyB9XG59KVxuZXhwb3J0IGNsYXNzIEFjdGlvbkJhckNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVzIGlmIHRoZSBuYXZpZ2F0b3IgaXMgb3BlbmVkLiBJZiB5ZXMsIHRoZSBhY3Rpb24tYmFyXG4gICAqIG5lZWRzIHRvIG1vdmUgdG8gdGhlIHJpZ2h0LlxuICAgKi9cbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdjbGFzcy5uYXZpZ2F0b3Itb3BlbicpIG5hdmlnYXRvck9wZW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogSWRlbnRpZmllcyBpZiB0aGUgY3VycmVudCB2aWV3IGhhcyB0YWJzLiBJZiB5ZXMsIHRoZSBhY3Rpb24gYmFyIG5lZWRzXG4gICAqIHRvIG1vdmUgZG93bi5cbiAgICovXG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MuaGFzLXRhYnMnKSBoYXNUYWJzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIElkZW50aWZpZXMgaWYgdGhlIHRhYnMgYXJlIGFsaWduZWQgaG9yaXpvbnRhbGx5LiBJZiB5ZXMsIHRoZSB0YWJzIGRvbid0XG4gICAqIG5lZWQgdG8gbW92ZSB0byB0aGUgbGVmdC5cbiAgICovXG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MuaG9yaXpvbnRhbC10YWJzJykgaXNUYWJzSG9yaXpvbnRhbCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVzIGlmIGluIGEgbW9iaWxlIHZpZXcgdGhlIHRvb2xiYXIgaXMgZXhwYW5kZWQgb3Igbm90LlxuICAgKi9cbiAgaXNQYWdlVG9vbGJhckV4cGFuZGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIGRlZmF1bHQgYGM4eS11aS1hY3Rpb24tYmFyYCBjbGFzcy5cbiAgICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYzh5LXVpLWFjdGlvbi1iYXInKSB1aUFjdGlvbkJhciA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGl0ZW1zIHRvIGRpc3BsYXkgaW4gdGhlIEFjdGlvbkJhci5cbiAgICovXG4gIEBJbnB1dCgpIGl0ZW1zOiBBY3Rpb25CYXJJdGVtW10gPSBbXTtcblxuICAvKipcbiAgICogUmV0dXJucyB0cnVlIGlmIG5vIGl0ZW1zIGFyZSBwcmVzZW50IGFuZCBoaWRlcyB0aGUgYWN0aW9uIGJhci5cbiAgICovXG4gIEBIb3N0QmluZGluZygpIGdldCBoaWRkZW4oKSB7XG4gICAgcmV0dXJuICEodGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgaXRlbXMgc29ydGVkIGJ5IHByaW9yaXR5IGFuZCBncm91cGVkIGJ5IHRoZSBwbGFjZW1lbnQgcGFzc2VkLlxuICAgKiBAcGFyYW0ge3BsYWNlbWVudH0gV2hpY2ggcGxhY2VtZW50IHNob3VsZCBiZSByZXR1cm5lZCBzb3J0ZWQuXG4gICAqL1xuICBnZXRTb3J0ZWRJdGVtcyhwbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCcgfCAnbW9yZScpIHtcbiAgICByZXR1cm4gc29ydEJ5KGZpbHRlcih0aGlzLml0ZW1zLCB7IHBsYWNlbWVudCB9KSwgdGhpcy5ieVByaW9yaXR5KTtcbiAgfVxuXG4gIHByaXZhdGUgYnlQcmlvcml0eShpdGVtKSB7XG4gICAgcmV0dXJuIC1pdGVtLnByaW9yaXR5O1xuICB9XG59XG4iXX0=
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2FjdGlvbi1iYXIvYWN0aW9uLWJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUVqRixPQUFPLEVBQWMsRUFBRSxFQUFHLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTNDOzs7R0FHRztBQU1ILE1BQU0sT0FBTyxrQkFBa0I7SUFML0I7UUFNRTs7O1dBR0c7UUFDMkMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFFcEU7OztXQUdHO1FBQ3FDLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFFeEQ7OztXQUdHO1FBQzRDLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUV4RTs7V0FFRztRQUNILDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUU5Qjs7V0FFRztRQUNxQyxnQkFBVyxHQUFHLElBQUksQ0FBQztRQUUzRDs7V0FFRztRQUNNLFdBQU0sR0FBZ0MsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXREOztXQUVHO1FBQ0gsV0FBTSxHQUFnQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFN0M7O1dBRUc7UUFDSCxVQUFLLEdBQWdDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU1Qzs7V0FFRztRQUNILFVBQUssR0FBZ0MsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTVDOztXQUVHO1FBQ0gsWUFBTyxHQUF3QixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEM7O1dBRUc7UUFFSCxXQUFNLEdBQVksSUFBSSxDQUFDO1FBRWYsYUFBUSxHQUFpQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBeUNqRCxDQUFDO0lBdkNDLFFBQVE7UUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUM1QixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFDbkQsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FDN0MsQ0FBQztRQUVGLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzNCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUNsRCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUM3QyxDQUFDO1FBRUYsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDM0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQ2xELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQzdDLENBQUM7UUFFRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUM3QixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDVixPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLENBQUMsT0FBTzthQUNULElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUN6QixDQUFDLFNBQVMsQ0FDVCxNQUFNLENBQUMsRUFBRTtZQUNQLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLFVBQVUsQ0FBQyxJQUFJO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3hCLENBQUM7OztZQXpHRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIscW5EQUEwQztnQkFDMUMsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFO2FBQ3JDOzs7NEJBTUUsS0FBSyxZQUFJLFdBQVcsU0FBQyxzQkFBc0I7c0JBTTNDLEtBQUssWUFBSSxXQUFXLFNBQUMsZ0JBQWdCOytCQU1yQyxLQUFLLFlBQUksV0FBVyxTQUFDLHVCQUF1QjswQkFVNUMsV0FBVyxTQUFDLHlCQUF5QjtxQkFLckMsS0FBSztxQkF5QkwsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uQmFySXRlbSB9IGZyb20gJy4vYWN0aW9uLWJhci5tb2RlbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiAsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzb3J0QnkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG4vKipcbiAqIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgYXMgdGhlIG91dGxldCB0byBzaG93IHRoZSBhY3Rpb24gYmFycy5cbiAqIEluIGEgYzh5Y2xpIGFwcCBpdCBpcyBieSBkZWZhdWx0IHBsYWNlZCBvbiB0aGUgYm9vdHN0cmFwIGNvbXBvbmVudC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWFjdGlvbi1iYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9uLWJhci5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHsgY2xhc3M6ICdjOHktdWktYWN0aW9uLWJhcicgfVxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25CYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVzIGlmIHRoZSBuYXZpZ2F0b3IgaXMgb3BlbmVkLiBJZiB5ZXMsIHRoZSBhY3Rpb24tYmFyXG4gICAqIG5lZWRzIHRvIG1vdmUgdG8gdGhlIHJpZ2h0LlxuICAgKi9cbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdjbGFzcy5uYXZpZ2F0b3Itb3BlbicpIG5hdmlnYXRvck9wZW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogSWRlbnRpZmllcyBpZiB0aGUgY3VycmVudCB2aWV3IGhhcyB0YWJzLiBJZiB5ZXMsIHRoZSBhY3Rpb24gYmFyIG5lZWRzXG4gICAqIHRvIG1vdmUgZG93bi5cbiAgICovXG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MuaGFzLXRhYnMnKSBoYXNUYWJzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIElkZW50aWZpZXMgaWYgdGhlIHRhYnMgYXJlIGFsaWduZWQgaG9yaXpvbnRhbGx5LiBJZiB5ZXMsIHRoZSB0YWJzIGRvbid0XG4gICAqIG5lZWQgdG8gbW92ZSB0byB0aGUgbGVmdC5cbiAgICovXG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZygnY2xhc3MuaG9yaXpvbnRhbC10YWJzJykgaXNUYWJzSG9yaXpvbnRhbCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVzIGlmIGluIGEgbW9iaWxlIHZpZXcgdGhlIHRvb2xiYXIgaXMgZXhwYW5kZWQgb3Igbm90LlxuICAgKi9cbiAgaXNQYWdlVG9vbGJhckV4cGFuZGVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIGRlZmF1bHQgYGM4eS11aS1hY3Rpb24tYmFyYCBjbGFzcy5cbiAgICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYzh5LXVpLWFjdGlvbi1iYXInKSB1aUFjdGlvbkJhciA9IHRydWU7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGl0ZW1zIHRvIGRpc3BsYXkgaW4gdGhlIEFjdGlvbkJhci5cbiAgICovXG4gIEBJbnB1dCgpIGl0ZW1zJDogT2JzZXJ2YWJsZTxBY3Rpb25CYXJJdGVtW10+ID0gb2YoW10pO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBvYnNlcnZhYmxlIGZvciByaWdodCBhY3Rpb24gaXRlbXMuXG4gICAqL1xuICByaWdodCQ6IE9ic2VydmFibGU8QWN0aW9uQmFySXRlbVtdPiA9IG9mKFtdKTtcblxuICAvKipcbiAgICogUHJvdmlkZXMgb2JzZXJ2YWJsZSBmb3IgbGVmdCBhY3Rpb24gaXRlbXMuXG4gICAqL1xuICBsZWZ0JDogT2JzZXJ2YWJsZTxBY3Rpb25CYXJJdGVtW10+ID0gb2YoW10pO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBvYnNlcnZhYmxlIGZvciBtb3JlIGFjdGlvbiBpdGVtcy5cbiAgICovXG4gIG1vcmUkOiBPYnNlcnZhYmxlPEFjdGlvbkJhckl0ZW1bXT4gPSBvZihbXSk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiBubyBpdGVtcyBhcmUgcHJlc2VudCBhbmQgaGlkZXMgdGhlIGFjdGlvbiBiYXIuXG4gICAqL1xuICBoaWRkZW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gb2YodHJ1ZSk7XG5cbiAgLyoqXG4gICAqIEJpbmRzIGhpZGRlbiBwcm9wZXJ0eSB0byB0aGlzIGNvbXBvbmVudCdzIG5hdGl2ZSBlbGVtZW50XG4gICAqL1xuICBASG9zdEJpbmRpbmcoKVxuICBoaWRkZW46IGJvb2xlYW4gPSB0cnVlO1xuXG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yaWdodCQgPSB0aGlzLml0ZW1zJC5waXBlKFxuICAgICAgbWFwKGl0ZW1zID0+IGZpbHRlcihpdGVtcywgeyBwbGFjZW1lbnQ6ICdyaWdodCcgfSkpLFxuICAgICAgbWFwKGl0ZW1zID0+IHNvcnRCeShpdGVtcywgdGhpcy5ieVByaW9yaXR5KSlcbiAgICApO1xuXG4gICAgdGhpcy5sZWZ0JCA9IHRoaXMuaXRlbXMkLnBpcGUoXG4gICAgICBtYXAoaXRlbXMgPT4gZmlsdGVyKGl0ZW1zLCB7IHBsYWNlbWVudDogJ2xlZnQnIH0pKSxcbiAgICAgIG1hcChpdGVtcyA9PiBzb3J0QnkoaXRlbXMsIHRoaXMuYnlQcmlvcml0eSkpXG4gICAgKTtcblxuICAgIHRoaXMubW9yZSQgPSB0aGlzLml0ZW1zJC5waXBlKFxuICAgICAgbWFwKGl0ZW1zID0+IGZpbHRlcihpdGVtcywgeyBwbGFjZW1lbnQ6ICdtb3JlJyB9KSksXG4gICAgICBtYXAoaXRlbXMgPT4gc29ydEJ5KGl0ZW1zLCB0aGlzLmJ5UHJpb3JpdHkpKVxuICAgICk7XG5cbiAgICB0aGlzLmhpZGRlbiQgPSB0aGlzLml0ZW1zJC5waXBlKFxuICAgICAgbWFwKGl0ZW1zID0+IHtcbiAgICAgICAgcmV0dXJuICEoaXRlbXMgJiYgaXRlbXMubGVuZ3RoKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuaGlkZGVuJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgKS5zdWJzY3JpYmUoXG4gICAgICAgIGhpZGRlbiA9PiB7XG4gICAgICAgICAgdGhpcy5oaWRkZW4gPSBoaWRkZW47XG4gICAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBieVByaW9yaXR5KGl0ZW0pIHtcbiAgICByZXR1cm4gLWl0ZW0ucHJpb3JpdHk7XG4gIH1cbn1cbiJdfQ==
@@ -29,7 +29,7 @@ export class BootstrapComponent {
29
29
  BootstrapComponent.decorators = [
30
30
  { type: Component, args: [{
31
31
  selector: 'c8y-bootstrap',
32
- template: "<c8y-login *ngIf=\"!(ui.currentUser | async)\"></c8y-login>\n\n<div *ngIf=\"ui.currentUser | async\" [class.head-open]=\"headerService.headerOpen\">\n <c8y-header-bar #header></c8y-header-bar>\n <c8y-navigator-outlet\n [nodes]=\"navigator.items$ | async\"\n [open]=\"headerService.navigatorOpen$ | async\"\n >\n <header class=\"title navigator-slot-top\">\n <div class=\"tenant-brand\"></div>\n <c8y-app-icon\n [name]=\"(ui.state$ | async).app.name\"\n [contextPath]=\"(ui.state$ | async).app.contextPath\"\n ></c8y-app-icon>\n <span>{{ (ui.state$ | async).app | humanizeAppName | async }}</span>\n </header>\n <div class=\"powered-by navigator-slot-bottom\" *ngIf=\"showPoweredBy\">\n <p translate>powered by Cumulocity</p>\n </div>\n </c8y-navigator-outlet>\n\n <div class=\"alerts\">\n <c8y-alert-outlet></c8y-alert-outlet>\n </div>\n <c8y-tabs-outlet\n #tabsComponent\n [tabs]=\"tabs.items$ | async\"\n [navigatorOpen]=\"headerService.navigatorOpen$ | async\"\n [orientation]=\"tabs.orientation$ | async\"\n >\n </c8y-tabs-outlet>\n <c8y-action-bar\n #actionBarComponent\n [navigatorOpen]=\"headerService.navigatorOpen$ | async\"\n [hasTabs]=\"tabsComponent.hasTabs\"\n [isTabsHorizontal]=\"tabsComponent.isHorizontal\"\n [items]=\"actionBar.items$ | async\"\n >\n </c8y-action-bar>\n\n <div\n class=\"mcontainer\"\n [ngClass]=\"{\n open: headerService.navigatorOpen$ | async,\n 'no-apps-margin': noAppsMargin$ | async,\n 'horizontal-tabs': tabsComponent.isHorizontal,\n 'vertical-tabs': !tabsComponent.isHorizontal,\n 'has-tabs': tabsComponent.hasTabs,\n 'has-action-bar': !actionBarComponent.hidden\n }\"\n >\n <div class=\"container-fluid\">\n <router-outlet></router-outlet>\n <ng-content select=\"#c8y-legacy-view\"></ng-content>\n <!-- legacy ng-view, will not be migrated atm -->\n </div>\n </div>\n</div>\n<c8y-cookie-banner></c8y-cookie-banner>\n"
32
+ template: "<c8y-login *ngIf=\"!(ui.currentUser | async)\"></c8y-login>\n\n<div *ngIf=\"ui.currentUser | async\" [class.head-open]=\"headerService.headerOpen\">\n <c8y-header-bar #header></c8y-header-bar>\n <c8y-navigator-outlet\n [nodes]=\"navigator.items$ | async\"\n [open]=\"headerService.navigatorOpen$ | async\"\n >\n <header class=\"title navigator-slot-top\">\n <div class=\"tenant-brand\"></div>\n <c8y-app-icon\n [name]=\"(ui.state$ | async).app.name\"\n [contextPath]=\"(ui.state$ | async).app.contextPath\"\n ></c8y-app-icon>\n <span>{{ (ui.state$ | async).app | humanizeAppName | async }}</span>\n </header>\n <div class=\"powered-by navigator-slot-bottom\" *ngIf=\"showPoweredBy\">\n <p translate>powered by Cumulocity</p>\n </div>\n </c8y-navigator-outlet>\n\n <div class=\"alerts\">\n <c8y-alert-outlet></c8y-alert-outlet>\n </div>\n <c8y-tabs-outlet\n #tabsComponent\n [tabs]=\"tabs.items$ | async\"\n [navigatorOpen]=\"headerService.navigatorOpen$ | async\"\n [orientation]=\"tabs.orientation$ | async\"\n >\n </c8y-tabs-outlet>\n <c8y-action-bar\n #actionBarComponent\n [navigatorOpen]=\"headerService.navigatorOpen$ | async\"\n [hasTabs]=\"tabsComponent.hasTabs\"\n [isTabsHorizontal]=\"tabsComponent.isHorizontal\"\n [items$]=\"actionBar.items$\"\n >\n </c8y-action-bar>\n\n <div\n class=\"mcontainer\"\n [ngClass]=\"{\n open: headerService.navigatorOpen$ | async,\n 'no-apps-margin': noAppsMargin$ | async,\n 'horizontal-tabs': tabsComponent.isHorizontal,\n 'vertical-tabs': !tabsComponent.isHorizontal,\n 'has-tabs': tabsComponent.hasTabs,\n 'has-action-bar': !actionBarComponent.hidden\n }\"\n >\n <div class=\"container-fluid\">\n <router-outlet></router-outlet>\n <ng-content select=\"#c8y-legacy-view\"></ng-content>\n <!-- legacy ng-view, will not be migrated atm -->\n </div>\n </div>\n</div>\n<c8y-cookie-banner></c8y-cookie-banner>\n"
33
33
  },] }
34
34
  ];
35
35
  BootstrapComponent.ctorParameters = () => [
@@ -40,4 +40,4 @@ BootstrapComponent.ctorParameters = () => [
40
40
  { type: OptionsService },
41
41
  { type: HeaderService }
42
42
  ];
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFNbkQsTUFBTSxPQUFPLGtCQUFrQjtJQU03QixZQUNTLElBQWlCLEVBQ2pCLEVBQW1CLEVBQ25CLFNBQTJCLEVBQzNCLFNBQTJCLEVBQzFCLE9BQXVCLEVBQ3hCLGFBQTRCO1FBTDVCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsT0FBRSxHQUFGLEVBQUUsQ0FBaUI7UUFDbkIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDMUIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDeEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFSckMsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFVNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDL0UsSUFBSSxDQUFDLEVBQUU7YUFDSixHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUM7YUFDdkIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDNUIsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7O1lBM0JGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsaS9EQUF3QzthQUN6Qzs7O1lBTFEsV0FBVztZQUhYLGVBQWU7WUFFZixnQkFBZ0I7WUFKaEIsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFFZCxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFjdGlvbkJhclNlcnZpY2UgfSBmcm9tICcuLi9hY3Rpb24tYmFyL2FjdGlvbi1iYXIuc2VydmljZSc7XG5pbXBvcnQgeyBPcHRpb25zU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9vcHRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3VpLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVhZGVyU2VydmljZSB9IGZyb20gJy4uL2hlYWRlci9oZWFkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vbmF2aWdhdG9yL25hdmlnYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYnNTZXJ2aWNlIH0gZnJvbSAnLi4vdGFicy90YWJzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYm9vdHN0cmFwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jvb3RzdHJhcC50ZW1wbGF0ZS5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBCb290c3RyYXBDb21wb25lbnQge1xuICBuYXZpZ2F0b3JPcGVuJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgbm9BcHBzTWFyZ2luJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgdGFic09yaWVudGF0aW9uOiBzdHJpbmc7XG4gIHNob3dQb3dlcmVkQnk6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWJzOiBUYWJzU2VydmljZSxcbiAgICBwdWJsaWMgdWk6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwdWJsaWMgbmF2aWdhdG9yOiBOYXZpZ2F0b3JTZXJ2aWNlLFxuICAgIHB1YmxpYyBhY3Rpb25CYXI6IEFjdGlvbkJhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcHRpb25zOiBPcHRpb25zU2VydmljZSxcbiAgICBwdWJsaWMgaGVhZGVyU2VydmljZTogSGVhZGVyU2VydmljZVxuICApIHtcbiAgICB0aGlzLm5vQXBwc01hcmdpbiQgPSB0aGlzLmhlYWRlclNlcnZpY2UubWFwKCh7IG5hdiB9KSA9PiAhbmF2Lm9wZW4gJiYgbmF2LmhpZGRlbk9uU3RhcnR1cCk7XG4gICAgdGhpcy50YWJzT3JpZW50YXRpb24gPSB0aGlzLm9wdGlvbnMudGFic0hvcml6b250YWwgPyAnaG9yaXpvbnRhbCcgOiAndmVydGljYWwnO1xuICAgIHRoaXMudWlcbiAgICAgIC5tYXAoKHsgbGFuZyB9KSA9PiBsYW5nKVxuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmFjdGlvbkJhci5yZWZyZXNoKCk7XG4gICAgICB9KTtcbiAgICB0aGlzLnNob3dQb3dlcmVkQnkgPSAhdGhpcy5vcHRpb25zLmdldCgnaGlkZVBvd2VyZWQnKTtcbiAgfVxufVxuIl19
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFNbkQsTUFBTSxPQUFPLGtCQUFrQjtJQU03QixZQUNTLElBQWlCLEVBQ2pCLEVBQW1CLEVBQ25CLFNBQTJCLEVBQzNCLFNBQTJCLEVBQzFCLE9BQXVCLEVBQ3hCLGFBQTRCO1FBTDVCLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsT0FBRSxHQUFGLEVBQUUsQ0FBaUI7UUFDbkIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDMUIsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFDeEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFSckMsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFVNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDL0UsSUFBSSxDQUFDLEVBQUU7YUFDSixHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUM7YUFDdkIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDNUIsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDTCxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7O1lBM0JGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZUFBZTtnQkFDekIsMCtEQUF3QzthQUN6Qzs7O1lBTFEsV0FBVztZQUhYLGVBQWU7WUFFZixnQkFBZ0I7WUFKaEIsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFFZCxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFjdGlvbkJhclNlcnZpY2UgfSBmcm9tICcuLi9hY3Rpb24tYmFyL2FjdGlvbi1iYXIuc2VydmljZSc7XG5pbXBvcnQgeyBPcHRpb25zU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi9vcHRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3VpLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSGVhZGVyU2VydmljZSB9IGZyb20gJy4uL2hlYWRlci9oZWFkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vbmF2aWdhdG9yL25hdmlnYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFRhYnNTZXJ2aWNlIH0gZnJvbSAnLi4vdGFicy90YWJzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYm9vdHN0cmFwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jvb3RzdHJhcC50ZW1wbGF0ZS5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBCb290c3RyYXBDb21wb25lbnQge1xuICBuYXZpZ2F0b3JPcGVuJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgbm9BcHBzTWFyZ2luJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgdGFic09yaWVudGF0aW9uOiBzdHJpbmc7XG4gIHNob3dQb3dlcmVkQnk6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0YWJzOiBUYWJzU2VydmljZSxcbiAgICBwdWJsaWMgdWk6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwdWJsaWMgbmF2aWdhdG9yOiBOYXZpZ2F0b3JTZXJ2aWNlLFxuICAgIHB1YmxpYyBhY3Rpb25CYXI6IEFjdGlvbkJhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvcHRpb25zOiBPcHRpb25zU2VydmljZSxcbiAgICBwdWJsaWMgaGVhZGVyU2VydmljZTogSGVhZGVyU2VydmljZVxuICApIHtcbiAgICB0aGlzLm5vQXBwc01hcmdpbiQgPSB0aGlzLmhlYWRlclNlcnZpY2UubWFwKCh7IG5hdiB9KSA9PiAhbmF2Lm9wZW4gJiYgbmF2LmhpZGRlbk9uU3RhcnR1cCk7XG4gICAgdGhpcy50YWJzT3JpZW50YXRpb24gPSB0aGlzLm9wdGlvbnMudGFic0hvcml6b250YWwgPyAnaG9yaXpvbnRhbCcgOiAndmVydGljYWwnO1xuICAgIHRoaXMudWlcbiAgICAgIC5tYXAoKHsgbGFuZyB9KSA9PiBsYW5nKVxuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmFjdGlvbkJhci5yZWZyZXNoKCk7XG4gICAgICB9KTtcbiAgICB0aGlzLnNob3dQb3dlcmVkQnkgPSAhdGhpcy5vcHRpb25zLmdldCgnaGlkZVBvd2VyZWQnKTtcbiAgfVxufVxuIl19
@@ -6,6 +6,13 @@ import { ComponentFactoryResolver, Directive, ElementRef, Input, Renderer2, Temp
6
6
  * <div *c8yOutlet="template"></div>
7
7
  * <div *c8yOutlet="DeviceStatusComponent; properties: { node }"></div>
8
8
  * <div *c8yOutlet="nodes"></div>
9
+ *
10
+ *
11
+ * note: If template is instance of HTMLElement (for example, node compiled by angularJS) then there can be
12
+ * only single instance rendered, as only one instance of HTMLElement can exist in DOM.
13
+ * If there is need for displaying same element multiple times, please make sure to inject into
14
+ * this element createCopy function, which should return another instance of given element.
15
+ *
9
16
  */
10
17
  export class OutletDirective {
11
18
  constructor(viewContainer, resolver, renderer, el) {
@@ -38,7 +45,17 @@ export class OutletDirective {
38
45
  else if (template instanceof Element) {
39
46
  const parent = this.renderer.parentNode(this.el.nativeElement);
40
47
  this.destroy();
41
- this._element = template;
48
+ /**
49
+ * Because compiled element can be used only once, we need to create copy of it
50
+ * in order to display it in multiple locations.
51
+ * For example standard "More" menu, and its RWD version.
52
+ */
53
+ if (template.createCopy) {
54
+ this._element = template.createCopy();
55
+ }
56
+ else {
57
+ this._element = template;
58
+ }
42
59
  this.renderer.insertBefore(parent, this._element, this.el.nativeElement);
43
60
  // case Component -> <div *c8yOutlet="DeviceStatusComponent; properties: { node }"></div>
44
61
  }
@@ -76,4 +93,4 @@ OutletDirective.propDecorators = {
76
93
  c8yOutlet: [{ type: Input }],
77
94
  c8yOutletProperties: [{ type: Input }]
78
95
  };
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0bGV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL291dGxldC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuQyxPQUFPLEVBRUwsd0JBQXdCLEVBQ3hCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLFNBQVMsRUFDVCxXQUFXLEVBRVgsZ0JBQWdCLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFFekI7Ozs7OztHQU1HO0FBSUgsTUFBTSxPQUFPLGVBQWU7SUFJMUIsWUFDVSxhQUErQixFQUMvQixRQUFrQyxFQUNsQyxRQUFtQixFQUNuQixFQUFjO1FBSGQsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQy9CLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQVBoQixlQUFVLEdBQUcsRUFBRSxDQUFDO0lBUXBCLENBQUM7SUFFTDs7Ozs7O09BTUc7SUFDSCxJQUFhLFNBQVMsQ0FBQyxRQUFnRDtRQUNyRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsT0FBTztTQUNSO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxZQUFZLE9BQU8sRUFBRTtZQUNwQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDeEU7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTNCLHdEQUF3RDtRQUN4RCxJQUFJLFFBQVEsWUFBWSxXQUFXLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVsRCxxREFBcUQ7U0FDcEQ7YUFBTSxJQUFJLFFBQVEsWUFBWSxPQUFPLEVBQUU7WUFDdEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBRTNFLHlGQUF5RjtTQUN4RjthQUFNO1lBQ0wsTUFBTSxPQUFPLEdBQTBCLElBQUksQ0FBQyxRQUFRLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdkYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDOUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQztJQUVELElBQWEsbUJBQW1CLENBQUMsS0FBSztRQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRU8sT0FBTztRQUNiLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNuRDtJQUNILENBQUM7OztZQTlERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGFBQWE7YUFDeEI7OztZQVpDLGdCQUFnQjtZQVBoQix3QkFBd0I7WUFJeEIsU0FBUztZQUZULFVBQVU7Ozt3QkFvQ1QsS0FBSztrQ0E0QkwsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2lnbiB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBDb21wb25lbnRGYWN0b3J5LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIFJlbmRlcmVyMixcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGUsXG4gIFZpZXdDb250YWluZXJSZWZcbiAgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBEaXJlY3RpdmUgdG8gc2V0IGEgRE9NIG5vZGUsIGEgVGVtcGxhdGVSZWYgb3IgYW55IENvbXBvbmVudCB0byBhIGNvbnRhaW5lciBvciBhbnkgbm9kZS5cbiAqIEBleGFtcGxlXG4gKiA8ZGl2ICpjOHlPdXRsZXQ9XCJ0ZW1wbGF0ZVwiPjwvZGl2PlxuICogPGRpdiAqYzh5T3V0bGV0PVwiRGV2aWNlU3RhdHVzQ29tcG9uZW50OyBwcm9wZXJ0aWVzOiB7IG5vZGUgfVwiPjwvZGl2PlxuICogPGRpdiAqYzh5T3V0bGV0PVwibm9kZXNcIj48L2Rpdj5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2M4eU91dGxldF0nLFxufSlcbmV4cG9ydCBjbGFzcyBPdXRsZXREaXJlY3RpdmUge1xuICBwcml2YXRlIHByb3BlcnRpZXMgPSB7fTtcbiAgcHJpdmF0ZSBfZWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSByZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmXG4gICkgeyB9XG5cbiAgLyoqXG4gICAqIERpcmVjdGl2ZSB0byBzZXQgYSBET00gbm9kZSwgYSBUZW1wbGF0ZVJlZiBvciBhbnkgQ29tcG9uZW50IHRvIGEgY29udGFpbmVyIG9yIGFueSBub2RlLlxuICAgKiBAZXhhbXBsZVxuICAgKiA8ZGl2ICpjOHlPdXRsZXQ9XCJ0ZW1wbGF0ZVwiPjwvZGl2PlxuICAgKiA8ZGl2ICpjOHlPdXRsZXQ9XCJEZXZpY2VTdGF0dXNDb21wb25lbnQ7IHByb3BlcnRpZXM6IHsgbm9kZSB9XCI+PC9kaXY+XG4gICAqIDxkaXYgKmM4eU91dGxldD1cIm5vZGVzXCI+PC9kaXY+XG4gICAqL1xuICBASW5wdXQoKSBzZXQgYzh5T3V0bGV0KHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgVHlwZTxhbnk+IHwgRWxlbWVudCkge1xuICAgIGlmICghdGVtcGxhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2VsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKHRoaXMuX2VsZW1lbnQucGFyZW50RWxlbWVudCwgIHRoaXMuX2VsZW1lbnQpO1xuICAgIH1cbiAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcblxuICAgIC8vIGNhc2UgVGVtcGxhdGVSZWYgLT4gPGRpdiAqYzh5T3V0bGV0PVwidGVtcGxhdGVcIj48L2Rpdj5cbiAgICBpZiAodGVtcGxhdGUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0ZW1wbGF0ZSk7XG5cbiAgICAvLyBjYXNlIERPTSBFbGVtZW50IC0+IDxkaXYgKmM4eU91dGxldD1cIm5vZGVzXCI+PC9kaXY+XG4gICAgfSBlbHNlIGlmICh0ZW1wbGF0ZSBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMucmVuZGVyZXIucGFyZW50Tm9kZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICB0aGlzLl9lbGVtZW50ID0gdGVtcGxhdGU7XG4gICAgICB0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZShwYXJlbnQsIHRoaXMuX2VsZW1lbnQsIHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG5cbiAgICAvLyBjYXNlIENvbXBvbmVudCAtPiA8ZGl2ICpjOHlPdXRsZXQ9XCJEZXZpY2VTdGF0dXNDb21wb25lbnQ7IHByb3BlcnRpZXM6IHsgbm9kZSB9XCI+PC9kaXY+XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8YW55PiA9IHRoaXMucmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodGVtcGxhdGUpO1xuICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy52aWV3Q29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChmYWN0b3J5KTtcbiAgICAgIGFzc2lnbihjb21wb25lbnQuaW5zdGFuY2UsIHRoaXMucHJvcGVydGllcyk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgc2V0IGM4eU91dGxldFByb3BlcnRpZXModmFsdWUpIHtcbiAgICB0aGlzLnByb3BlcnRpZXMgPSB2YWx1ZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95KCkge1xuICAgIGlmICh0aGlzLl9lbGVtZW50KSB7XG4gICAgICBjb25zdCBfcGFyZW50ID0gdGhpcy5yZW5kZXJlci5wYXJlbnROb2RlKHRoaXMuX2VsZW1lbnQpO1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChfcGFyZW50LCB0aGlzLl9lbGVtZW50KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0bGV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL291dGxldC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuQyxPQUFPLEVBRUwsd0JBQXdCLEVBQ3hCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLFNBQVMsRUFDVCxXQUFXLEVBRVgsZ0JBQWdCLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFFekI7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUlILE1BQU0sT0FBTyxlQUFlO0lBSTFCLFlBQ1UsYUFBK0IsRUFDL0IsUUFBa0MsRUFDbEMsUUFBbUIsRUFDbkIsRUFBYztRQUhkLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQixhQUFRLEdBQVIsUUFBUSxDQUEwQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLE9BQUUsR0FBRixFQUFFLENBQVk7UUFQaEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztJQVFwQixDQUFDO0lBRUw7Ozs7OztPQU1HO0lBQ0gsSUFBYSxTQUFTLENBQUMsUUFBZ0Q7UUFDckUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNiLE9BQU87U0FDUjtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsWUFBWSxPQUFPLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUzQix3REFBd0Q7UUFDeEQsSUFBSSxRQUFRLFlBQVksV0FBVyxFQUFFO1lBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFbEQscURBQXFEO1NBQ3BEO2FBQU0sSUFBSSxRQUFRLFlBQVksT0FBTyxFQUFFO1lBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRWY7Ozs7ZUFJRztZQUNILElBQUssUUFBZ0IsQ0FBQyxVQUFVLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUksUUFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNoRDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQzthQUMxQjtZQUVELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFM0UseUZBQXlGO1NBQ3hGO2FBQU07WUFDTCxNQUFNLE9BQU8sR0FBMEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN2RixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5RCxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDN0M7SUFDSCxDQUFDO0lBRUQsSUFBYSxtQkFBbUIsQ0FBQyxLQUFLO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTyxPQUFPO1FBQ2IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ25EO0lBQ0gsQ0FBQzs7O1lBekVGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsYUFBYTthQUN4Qjs7O1lBbkJDLGdCQUFnQjtZQVBoQix3QkFBd0I7WUFJeEIsU0FBUztZQUZULFVBQVU7Ozt3QkEyQ1QsS0FBSztrQ0F1Q0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2lnbiB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBDb21wb25lbnRGYWN0b3J5LFxuICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIFJlbmRlcmVyMixcbiAgVGVtcGxhdGVSZWYsXG4gIFR5cGUsXG4gIFZpZXdDb250YWluZXJSZWZcbiAgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBEaXJlY3RpdmUgdG8gc2V0IGEgRE9NIG5vZGUsIGEgVGVtcGxhdGVSZWYgb3IgYW55IENvbXBvbmVudCB0byBhIGNvbnRhaW5lciBvciBhbnkgbm9kZS5cbiAqIEBleGFtcGxlXG4gKiA8ZGl2ICpjOHlPdXRsZXQ9XCJ0ZW1wbGF0ZVwiPjwvZGl2PlxuICogPGRpdiAqYzh5T3V0bGV0PVwiRGV2aWNlU3RhdHVzQ29tcG9uZW50OyBwcm9wZXJ0aWVzOiB7IG5vZGUgfVwiPjwvZGl2PlxuICogPGRpdiAqYzh5T3V0bGV0PVwibm9kZXNcIj48L2Rpdj5cbiAqXG4gKlxuICogbm90ZTogSWYgdGVtcGxhdGUgaXMgaW5zdGFuY2Ugb2YgSFRNTEVsZW1lbnQgKGZvciBleGFtcGxlLCBub2RlIGNvbXBpbGVkIGJ5IGFuZ3VsYXJKUykgdGhlbiB0aGVyZSBjYW4gYmVcbiAqIG9ubHkgc2luZ2xlIGluc3RhbmNlIHJlbmRlcmVkLCBhcyBvbmx5IG9uZSBpbnN0YW5jZSBvZiBIVE1MRWxlbWVudCBjYW4gZXhpc3QgaW4gRE9NLlxuICogSWYgdGhlcmUgaXMgbmVlZCBmb3IgZGlzcGxheWluZyBzYW1lIGVsZW1lbnQgbXVsdGlwbGUgdGltZXMsIHBsZWFzZSBtYWtlIHN1cmUgdG8gaW5qZWN0IGludG9cbiAqIHRoaXMgZWxlbWVudCBjcmVhdGVDb3B5IGZ1bmN0aW9uLCB3aGljaCBzaG91bGQgcmV0dXJuIGFub3RoZXIgaW5zdGFuY2Ugb2YgZ2l2ZW4gZWxlbWVudC5cbiAqXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjOHlPdXRsZXRdJyxcbn0pXG5leHBvcnQgY2xhc3MgT3V0bGV0RGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBwcm9wZXJ0aWVzID0ge307XG4gIHByaXZhdGUgX2VsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgcmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZlxuICApIHsgfVxuXG4gIC8qKlxuICAgKiBEaXJlY3RpdmUgdG8gc2V0IGEgRE9NIG5vZGUsIGEgVGVtcGxhdGVSZWYgb3IgYW55IENvbXBvbmVudCB0byBhIGNvbnRhaW5lciBvciBhbnkgbm9kZS5cbiAgICogQGV4YW1wbGVcbiAgICogPGRpdiAqYzh5T3V0bGV0PVwidGVtcGxhdGVcIj48L2Rpdj5cbiAgICogPGRpdiAqYzh5T3V0bGV0PVwiRGV2aWNlU3RhdHVzQ29tcG9uZW50OyBwcm9wZXJ0aWVzOiB7IG5vZGUgfVwiPjwvZGl2PlxuICAgKiA8ZGl2ICpjOHlPdXRsZXQ9XCJub2Rlc1wiPjwvZGl2PlxuICAgKi9cbiAgQElucHV0KCkgc2V0IGM4eU91dGxldCh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IFR5cGU8YW55PiB8IEVsZW1lbnQpIHtcbiAgICBpZiAoIXRlbXBsYXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLl9lbGVtZW50IGluc3RhbmNlb2YgRWxlbWVudCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLl9lbGVtZW50LnBhcmVudEVsZW1lbnQsICB0aGlzLl9lbGVtZW50KTtcbiAgICB9XG4gICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG5cbiAgICAvLyBjYXNlIFRlbXBsYXRlUmVmIC0+IDxkaXYgKmM4eU91dGxldD1cInRlbXBsYXRlXCI+PC9kaXY+XG4gICAgaWYgKHRlbXBsYXRlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWYpIHtcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGVtcGxhdGUpO1xuXG4gICAgLy8gY2FzZSBET00gRWxlbWVudCAtPiA8ZGl2ICpjOHlPdXRsZXQ9XCJub2Rlc1wiPjwvZGl2PlxuICAgIH0gZWxzZSBpZiAodGVtcGxhdGUgaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnJlbmRlcmVyLnBhcmVudE5vZGUodGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICAgIHRoaXMuZGVzdHJveSgpO1xuXG4gICAgICAvKipcbiAgICAgICAqIEJlY2F1c2UgY29tcGlsZWQgZWxlbWVudCBjYW4gYmUgdXNlZCBvbmx5IG9uY2UsIHdlIG5lZWQgdG8gY3JlYXRlIGNvcHkgb2YgaXRcbiAgICAgICAqIGluIG9yZGVyIHRvIGRpc3BsYXkgaXQgaW4gbXVsdGlwbGUgbG9jYXRpb25zLlxuICAgICAgICogRm9yIGV4YW1wbGUgc3RhbmRhcmQgXCJNb3JlXCIgbWVudSwgYW5kIGl0cyBSV0QgdmVyc2lvbi5cbiAgICAgICAqL1xuICAgICAgaWYgKCh0ZW1wbGF0ZSBhcyBhbnkpLmNyZWF0ZUNvcHkpIHtcbiAgICAgICAgdGhpcy5fZWxlbWVudCA9ICh0ZW1wbGF0ZSBhcyBhbnkpLmNyZWF0ZUNvcHkoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2VsZW1lbnQgPSB0ZW1wbGF0ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUocGFyZW50LCB0aGlzLl9lbGVtZW50LCB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgLy8gY2FzZSBDb21wb25lbnQgLT4gPGRpdiAqYzh5T3V0bGV0PVwiRGV2aWNlU3RhdHVzQ29tcG9uZW50OyBwcm9wZXJ0aWVzOiB7IG5vZGUgfVwiPjwvZGl2PlxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5PGFueT4gPSB0aGlzLnJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHRlbXBsYXRlKTtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoZmFjdG9yeSk7XG4gICAgICBhc3NpZ24oY29tcG9uZW50Lmluc3RhbmNlLCB0aGlzLnByb3BlcnRpZXMpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBjOHlPdXRsZXRQcm9wZXJ0aWVzKHZhbHVlKSB7XG4gICAgdGhpcy5wcm9wZXJ0aWVzID0gdmFsdWU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3koKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5fZWxlbWVudCkge1xuICAgICAgY29uc3QgX3BhcmVudCA9IHRoaXMucmVuZGVyZXIucGFyZW50Tm9kZSh0aGlzLl9lbGVtZW50KTtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQoX3BhcmVudCwgdGhpcy5fZWxlbWVudCk7XG4gICAgfVxuICB9XG59XG4iXX0=