@c8y/ngx-components 1018.503.26 → 1018.503.41

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 (74) hide show
  1. package/assets-navigator/asset-node.service.d.ts +5 -2
  2. package/device-grid/device-grid.component.d.ts +7 -2
  3. package/esm2020/assets-navigator/asset-node.mjs +2 -2
  4. package/esm2020/assets-navigator/asset-node.service.mjs +14 -5
  5. package/esm2020/child-devices/child-devices.component.mjs +1 -1
  6. package/esm2020/core/bootstrap/bootstrap.component.mjs +3 -3
  7. package/esm2020/core/docs/docs.service.mjs +1 -11
  8. package/esm2020/core/dynamic-forms/json-schema/c8y-json-schema.service.mjs +8 -2
  9. package/esm2020/device-grid/columns/registration-date.device-grid-column.mjs +4 -10
  10. package/esm2020/device-grid/device-grid-extension.service.mjs +13 -8
  11. package/esm2020/device-grid/device-grid.component.mjs +30 -15
  12. package/esm2020/device-list/device-list.component.mjs +1 -1
  13. package/esm2020/ecosystem/application-plugins/application-plugins.component.mjs +34 -13
  14. package/esm2020/operations/device-selector/device-selector.component.mjs +1 -1
  15. package/esm2020/replace-device-wizard/replace-device-wizard.component.mjs +2 -2
  16. package/esm2020/repository/shared/repository.service.mjs +4 -4
  17. package/esm2020/services/services-device-tab/columns/last-updated-date.device-grid-column.mjs +4 -10
  18. package/esm2020/sub-assets/add-group/add-group.component.mjs +4 -3
  19. package/esm2020/sub-assets/asset-properties-item.component.mjs +7 -3
  20. package/esm2020/sub-assets/asset-properties.component.mjs +25 -10
  21. package/esm2020/sub-assets/assign-devices/assign-devices.component.mjs +4 -3
  22. package/esm2020/sub-assets/location/asset-location.component.mjs +5 -3
  23. package/fesm2015/c8y-ngx-components-assets-navigator.mjs +16 -9
  24. package/fesm2015/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  25. package/fesm2015/c8y-ngx-components-child-devices.mjs +1 -1
  26. package/fesm2015/c8y-ngx-components-child-devices.mjs.map +1 -1
  27. package/fesm2015/c8y-ngx-components-device-grid.mjs +44 -30
  28. package/fesm2015/c8y-ngx-components-device-grid.mjs.map +1 -1
  29. package/fesm2015/c8y-ngx-components-device-list.mjs +1 -1
  30. package/fesm2015/c8y-ngx-components-device-list.mjs.map +1 -1
  31. package/fesm2015/c8y-ngx-components-ecosystem-application-plugins.mjs +26 -13
  32. package/fesm2015/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  33. package/fesm2015/c8y-ngx-components-ecosystem.mjs +26 -13
  34. package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
  35. package/fesm2015/c8y-ngx-components-operations-device-selector.mjs +1 -1
  36. package/fesm2015/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
  37. package/fesm2015/c8y-ngx-components-replace-device-wizard.mjs +1 -1
  38. package/fesm2015/c8y-ngx-components-replace-device-wizard.mjs.map +1 -1
  39. package/fesm2015/c8y-ngx-components-repository-shared.mjs +3 -3
  40. package/fesm2015/c8y-ngx-components-repository-shared.mjs.map +1 -1
  41. package/fesm2015/c8y-ngx-components-services.mjs +3 -9
  42. package/fesm2015/c8y-ngx-components-services.mjs.map +1 -1
  43. package/fesm2015/c8y-ngx-components-sub-assets.mjs +39 -18
  44. package/fesm2015/c8y-ngx-components-sub-assets.mjs.map +1 -1
  45. package/fesm2015/c8y-ngx-components.mjs +6 -12
  46. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  47. package/fesm2020/c8y-ngx-components-assets-navigator.mjs +16 -9
  48. package/fesm2020/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  49. package/fesm2020/c8y-ngx-components-child-devices.mjs +1 -1
  50. package/fesm2020/c8y-ngx-components-child-devices.mjs.map +1 -1
  51. package/fesm2020/c8y-ngx-components-device-grid.mjs +44 -30
  52. package/fesm2020/c8y-ngx-components-device-grid.mjs.map +1 -1
  53. package/fesm2020/c8y-ngx-components-device-list.mjs +1 -1
  54. package/fesm2020/c8y-ngx-components-device-list.mjs.map +1 -1
  55. package/fesm2020/c8y-ngx-components-ecosystem-application-plugins.mjs +33 -13
  56. package/fesm2020/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  57. package/fesm2020/c8y-ngx-components-ecosystem.mjs +33 -13
  58. package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
  59. package/fesm2020/c8y-ngx-components-operations-device-selector.mjs +1 -1
  60. package/fesm2020/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
  61. package/fesm2020/c8y-ngx-components-replace-device-wizard.mjs +1 -1
  62. package/fesm2020/c8y-ngx-components-replace-device-wizard.mjs.map +1 -1
  63. package/fesm2020/c8y-ngx-components-repository-shared.mjs +3 -3
  64. package/fesm2020/c8y-ngx-components-repository-shared.mjs.map +1 -1
  65. package/fesm2020/c8y-ngx-components-services.mjs +3 -9
  66. package/fesm2020/c8y-ngx-components-services.mjs.map +1 -1
  67. package/fesm2020/c8y-ngx-components-sub-assets.mjs +38 -17
  68. package/fesm2020/c8y-ngx-components-sub-assets.mjs.map +1 -1
  69. package/fesm2020/c8y-ngx-components.mjs +9 -12
  70. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  71. package/package.json +1 -1
  72. package/sub-assets/add-group/add-group.component.d.ts +2 -1
  73. package/sub-assets/asset-properties.component.d.ts +6 -0
  74. package/sub-assets/assign-devices/assign-devices.component.d.ts +2 -1
@@ -30,6 +30,7 @@ export class AssignDevicesComponent {
30
30
  this.actionControls = [];
31
31
  this.headerActionControls = [];
32
32
  this.showChildren = false;
33
+ this.builtInActionsToHide = ["DELETE" /* BuiltInActionType.Delete */];
33
34
  this.isSelectable = true;
34
35
  }
35
36
  onEnterKeyDown(_event) {
@@ -123,7 +124,7 @@ AssignDevicesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
123
124
  provide: DATA_GRID_CONFIGURATION_CONTEXT,
124
125
  useValue: AssignDevicesComponent.GRID_CONFIG_CONTEXT
125
126
  }
126
- ], viewQueries: [{ propertyName: "showDevicesToggle", first: true, predicate: ["showDevicesToggle"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<div class=\"card-block flex-no-shrink separator-bottom col-xs-12 large-padding p-t-24 p-b-24\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <div class=\"h4 text-center text-medium\">\n {{ 'Assign devices' | translate }}\n </div>\n </div>\n </div>\n</div>\n<c8y-device-grid\n [title]=\"''\"\n [actionControls]=\"actionControls\"\n [infiniteScroll]=\"'auto'\"\n [selectable]=\"isSelectable\"\n [pagination]=\"pagination\"\n (itemsSelect)=\"onSelected($event)\"\n [refresh]=\"refresh\"\n [baseQuery]=\"baseQuery\"\n [headerActionControls]=\"headerActionControls\"\n [withChildren]=\"true\"\n class=\"flex-grow col-xs-12 no-gutter\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{ component: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES }\"\n></c8y-device-grid>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"onCancel.emit()\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES,\n action: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.ACTIONS.CANCEL\n }\"\n >\n <span>{{ 'Cancel' | translate }}</span>\n </button>\n <button\n class=\"btn btn-primary\"\n [ngClass]=\"{ 'btn-pending': pendingStatus }\"\n type=\"button\"\n title=\"{{ 'Assign' | translate }}\"\n (click)=\"assignDevices()\"\n [disabled]=\"selected.length === 0 || !canAssignDevice\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES,\n action: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.ACTIONS.ASSIGN\n }\"\n >\n <span>{{ 'Assign' | translate }}</span>\n </button>\n</div>\n\n<ng-template #showDevicesToggle let-control=\"headerActionControl\">\n <label class=\"c8y-switch a-s-center\" title=\"{{ control.text | translate }}\">\n <input type=\"checkbox\" [(ngModel)]=\"showChildren\" (click)=\"control.callback()\" />\n <span></span>\n <span>{{ control.text | translate }}</span>\n </label>\n <button\n class=\"btn-help m-r-16 a-s-center\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"childDevicesPop\"\n placement=\"bottom\"\n triggers=\"focus\"\n ></button>\n <ng-template #childDevicesPop>\n <span translate>\n Displays the button\n <span title=\"Child devices icon\" class=\"btn btn-dot btn-icon no-pointer\">\n <i class=\"text-primary dlt-c8y-icon-enter-bottom\"></i>\n </span>\n next to target devices with children. Clicking it displays a list with all child devices of\n the selected target device.\n </span>\n </ng-template>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i6.DeviceGridComponent, selector: "c8y-device-grid", inputs: ["dataCallback", "refresh", "title", "loadMoreItemsLabel", "loadingItemsLabel", "legacyConfigKey", "legacyFilterKey", "columns", "pagination", "infiniteScroll", "actionControls", "selectable", "singleSelection", "baseQuery", "bulkActionControls", "headerActionControls", "childDeviceGrid", "parentDeviceId", "withChildren", "showSearch", "activeClassName"], outputs: ["onColumnsChange", "onFilterChange", "onDeviceQueryStringChange", "itemsSelect"] }, { kind: "directive", type: i7.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] });
127
+ ], viewQueries: [{ propertyName: "showDevicesToggle", first: true, predicate: ["showDevicesToggle"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<div class=\"card-block flex-no-shrink separator-bottom col-xs-12 large-padding p-t-24 p-b-24\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <div class=\"h4 text-center text-medium\">\n {{ 'Assign devices' | translate }}\n </div>\n </div>\n </div>\n</div>\n<c8y-device-grid\n [title]=\"''\"\n [actionControls]=\"actionControls\"\n [builtInActionsToHide]=\"builtInActionsToHide\"\n [infiniteScroll]=\"'auto'\"\n [selectable]=\"isSelectable\"\n [pagination]=\"pagination\"\n (itemsSelect)=\"onSelected($event)\"\n [refresh]=\"refresh\"\n [baseQuery]=\"baseQuery\"\n [headerActionControls]=\"headerActionControls\"\n [withChildren]=\"true\"\n class=\"flex-grow col-xs-12 no-gutter\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{ component: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES }\"\n></c8y-device-grid>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"onCancel.emit()\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES,\n action: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.ACTIONS.CANCEL\n }\"\n >\n <span>{{ 'Cancel' | translate }}</span>\n </button>\n <button\n class=\"btn btn-primary\"\n [ngClass]=\"{ 'btn-pending': pendingStatus }\"\n type=\"button\"\n title=\"{{ 'Assign' | translate }}\"\n (click)=\"assignDevices()\"\n [disabled]=\"selected.length === 0 || !canAssignDevice\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES,\n action: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.ACTIONS.ASSIGN\n }\"\n >\n <span>{{ 'Assign' | translate }}</span>\n </button>\n</div>\n\n<ng-template #showDevicesToggle let-control=\"headerActionControl\">\n <label class=\"c8y-switch a-s-center\" title=\"{{ control.text | translate }}\">\n <input type=\"checkbox\" [(ngModel)]=\"showChildren\" (click)=\"control.callback()\" />\n <span></span>\n <span>{{ control.text | translate }}</span>\n </label>\n <button\n class=\"btn-help m-r-16 a-s-center\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"childDevicesPop\"\n placement=\"bottom\"\n triggers=\"focus\"\n ></button>\n <ng-template #childDevicesPop>\n <span translate>\n Displays the button\n <span title=\"Child devices icon\" class=\"btn btn-dot btn-icon no-pointer\">\n <i class=\"text-primary dlt-c8y-icon-enter-bottom\"></i>\n </span>\n next to target devices with children. Clicking it displays a list with all child devices of\n the selected target device.\n </span>\n </ng-template>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i6.DeviceGridComponent, selector: "c8y-device-grid", inputs: ["dataCallback", "refresh", "title", "loadMoreItemsLabel", "loadingItemsLabel", "legacyConfigKey", "legacyFilterKey", "columns", "pagination", "infiniteScroll", "builtInActionsToHide", "actionControls", "selectable", "singleSelection", "baseQuery", "bulkActionControls", "headerActionControls", "childDeviceGrid", "parentDeviceId", "withChildren", "showSearch", "activeClassName"], outputs: ["onColumnsChange", "onFilterChange", "onDeviceQueryStringChange", "itemsSelect"] }, { kind: "directive", type: i7.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] });
127
128
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AssignDevicesComponent, decorators: [{
128
129
  type: Component,
129
130
  args: [{ selector: 'c8y-assign-devices', providers: [
@@ -135,7 +136,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
135
136
  provide: DATA_GRID_CONFIGURATION_CONTEXT,
136
137
  useValue: AssignDevicesComponent.GRID_CONFIG_CONTEXT
137
138
  }
138
- ], template: "<div class=\"card-block flex-no-shrink separator-bottom col-xs-12 large-padding p-t-24 p-b-24\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <div class=\"h4 text-center text-medium\">\n {{ 'Assign devices' | translate }}\n </div>\n </div>\n </div>\n</div>\n<c8y-device-grid\n [title]=\"''\"\n [actionControls]=\"actionControls\"\n [infiniteScroll]=\"'auto'\"\n [selectable]=\"isSelectable\"\n [pagination]=\"pagination\"\n (itemsSelect)=\"onSelected($event)\"\n [refresh]=\"refresh\"\n [baseQuery]=\"baseQuery\"\n [headerActionControls]=\"headerActionControls\"\n [withChildren]=\"true\"\n class=\"flex-grow col-xs-12 no-gutter\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{ component: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES }\"\n></c8y-device-grid>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"onCancel.emit()\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES,\n action: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.ACTIONS.CANCEL\n }\"\n >\n <span>{{ 'Cancel' | translate }}</span>\n </button>\n <button\n class=\"btn btn-primary\"\n [ngClass]=\"{ 'btn-pending': pendingStatus }\"\n type=\"button\"\n title=\"{{ 'Assign' | translate }}\"\n (click)=\"assignDevices()\"\n [disabled]=\"selected.length === 0 || !canAssignDevice\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES,\n action: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.ACTIONS.ASSIGN\n }\"\n >\n <span>{{ 'Assign' | translate }}</span>\n </button>\n</div>\n\n<ng-template #showDevicesToggle let-control=\"headerActionControl\">\n <label class=\"c8y-switch a-s-center\" title=\"{{ control.text | translate }}\">\n <input type=\"checkbox\" [(ngModel)]=\"showChildren\" (click)=\"control.callback()\" />\n <span></span>\n <span>{{ control.text | translate }}</span>\n </label>\n <button\n class=\"btn-help m-r-16 a-s-center\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"childDevicesPop\"\n placement=\"bottom\"\n triggers=\"focus\"\n ></button>\n <ng-template #childDevicesPop>\n <span translate>\n Displays the button\n <span title=\"Child devices icon\" class=\"btn btn-dot btn-icon no-pointer\">\n <i class=\"text-primary dlt-c8y-icon-enter-bottom\"></i>\n </span>\n next to target devices with children. Clicking it displays a list with all child devices of\n the selected target device.\n </span>\n </ng-template>\n</ng-template>\n" }]
139
+ ], template: "<div class=\"card-block flex-no-shrink separator-bottom col-xs-12 large-padding p-t-24 p-b-24\">\n <div class=\"row\">\n <div class=\"col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\">\n <div class=\"h4 text-center text-medium\">\n {{ 'Assign devices' | translate }}\n </div>\n </div>\n </div>\n</div>\n<c8y-device-grid\n [title]=\"''\"\n [actionControls]=\"actionControls\"\n [builtInActionsToHide]=\"builtInActionsToHide\"\n [infiniteScroll]=\"'auto'\"\n [selectable]=\"isSelectable\"\n [pagination]=\"pagination\"\n (itemsSelect)=\"onSelected($event)\"\n [refresh]=\"refresh\"\n [baseQuery]=\"baseQuery\"\n [headerActionControls]=\"headerActionControls\"\n [withChildren]=\"true\"\n class=\"flex-grow col-xs-12 no-gutter\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{ component: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES }\"\n></c8y-device-grid>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"onCancel.emit()\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES,\n action: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.ACTIONS.CANCEL\n }\"\n >\n <span>{{ 'Cancel' | translate }}</span>\n </button>\n <button\n class=\"btn btn-primary\"\n [ngClass]=\"{ 'btn-pending': pendingStatus }\"\n type=\"button\"\n title=\"{{ 'Assign' | translate }}\"\n (click)=\"assignDevices()\"\n [disabled]=\"selected.length === 0 || !canAssignDevice\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.EVENT\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.COMPONENTS.ASSIGN_DEVICES,\n action: PRODUCT_EXPERIENCE.ASSIGN_DEVICES.ACTIONS.ASSIGN\n }\"\n >\n <span>{{ 'Assign' | translate }}</span>\n </button>\n</div>\n\n<ng-template #showDevicesToggle let-control=\"headerActionControl\">\n <label class=\"c8y-switch a-s-center\" title=\"{{ control.text | translate }}\">\n <input type=\"checkbox\" [(ngModel)]=\"showChildren\" (click)=\"control.callback()\" />\n <span></span>\n <span>{{ control.text | translate }}</span>\n </label>\n <button\n class=\"btn-help m-r-16 a-s-center\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"childDevicesPop\"\n placement=\"bottom\"\n triggers=\"focus\"\n ></button>\n <ng-template #childDevicesPop>\n <span translate>\n Displays the button\n <span title=\"Child devices icon\" class=\"btn btn-dot btn-icon no-pointer\">\n <i class=\"text-primary dlt-c8y-icon-enter-bottom\"></i>\n </span>\n next to target devices with children. Clicking it displays a list with all child devices of\n the selected target device.\n </span>\n </ng-template>\n</ng-template>\n" }]
139
140
  }], ctorParameters: function () { return [{ type: i1.AlertService }, { type: i2.SubAssetsService }, { type: i3.InventoryService }, { type: i1.GainsightService }]; }, propDecorators: { currentGroupId: [{
140
141
  type: Input
141
142
  }], refresh: [{
@@ -153,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
153
154
  type: HostListener,
154
155
  args: ['document:keydown.enter', ['$event']]
155
156
  }] } });
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWduLWRldmljZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3ViLWFzc2V0cy9hc3NpZ24tZGV2aWNlcy9hc3NpZ24tZGV2aWNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zdWItYXNzZXRzL2Fzc2lnbi1kZXZpY2VzL2Fzc2lnbi1kZXZpY2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFrQixnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvRCxPQUFPLEVBRUwsWUFBWSxFQUNaLCtCQUErQixFQUMvQixnQ0FBZ0MsRUFDaEMsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFJUCxvQ0FBb0MsRUFFckMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7O0FBZ0J6RCxNQUFNLE9BQU8sc0JBQXNCO0lBNkJqQyxZQUNVLEtBQW1CLEVBQ25CLGdCQUFrQyxFQUNsQyxnQkFBa0MsRUFDbEMsZ0JBQWtDO1FBSGxDLFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUF6QjVDLHFCQUFnQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDakMsdUJBQWtCLEdBQUcsa0JBQWtCLENBQUM7UUFHL0IsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDakMs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QUMsQ0FBQztJQUNsQyxDQUFDOztBQXRIZSwwQ0FBbUIsR0FBcUM7SUFDdEUsR0FBRyxFQUFFLHFCQUFxQjtJQUMxQixZQUFZLEVBQUU7UUFDWixNQUFNLEVBQUUsS0FBSztLQUNkO0NBQ0YsQ0FBQzttSEFOUyxzQkFBc0I7dUdBQXRCLHNCQUFzQiwyU0FYdEI7UUFDVDtZQUNFLE9BQU8sRUFBRSxnQ0FBZ0M7WUFDekMsUUFBUSxFQUFFLG9DQUFvQztTQUMvQztRQUNEO1lBQ0UsT0FBTyxFQUFFLCtCQUErQjtZQUN4QyxRQUFRLEVBQUUsc0JBQXNCLENBQUMsbUJBQW1CO1NBQ3JEO0tBQ0YsNkhBa0J1QyxXQUFXLDZCQ3hEckQsNDRGQW9GQTsyRkQ1Q2Esc0JBQXNCO2tCQWRsQyxTQUFTOytCQUNFLG9CQUFvQixhQUVuQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsZ0NBQWdDOzRCQUN6QyxRQUFRLEVBQUUsb0NBQW9DO3lCQUMvQzt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsK0JBQStCOzRCQUN4QyxRQUFRLEVBQUUsdUJBQXVCLG1CQUFtQjt5QkFDckQ7cUJBQ0Y7Z01BYVEsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDZ0QsaUJBQWlCO3NCQUF2RSxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFvQkQsY0FBYztzQkFBakUsWUFBWTt1QkFBQyx3QkFBd0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFjdGlvbkNvbnRyb2wsXG4gIEFsZXJ0U2VydmljZSxcbiAgREFUQV9HUklEX0NPTkZJR1VSQVRJT05fQ09OVEVYVCxcbiAgREFUQV9HUklEX0NPTkZJR1VSQVRJT05fU1RSQVRFR1ksXG4gIEdhaW5zaWdodFNlcnZpY2UsXG4gIGdldHRleHQsXG4gIEhlYWRlckFjdGlvbkNvbnRyb2wsXG4gIFBhZ2luYXRpb24sXG4gIFJvdyxcbiAgVXNlclByZWZlcmVuY2VzQ29uZmlndXJhdGlvblN0cmF0ZWd5LFxuICBVc2VyUHJlZmVyZW5jZXNHcmlkQ29uZmlnQ29udGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFBST0RVQ1RfRVhQRVJJRU5DRSB9IGZyb20gJy4uL3NoYXJlZC9zdWItYXNzZXRzLm1vZGVsJztcbmltcG9ydCB7IFN1YkFzc2V0c1NlcnZpY2UgfSBmcm9tICcuLi9zdWItYXNzZXRzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYXNzaWduLWRldmljZXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXNzaWduLWRldmljZXMuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBEQVRBX0dSSURfQ09ORklHVVJBVElPTl9TVFJBVEVHWSxcbiAgICAgIHVzZUNsYXNzOiBVc2VyUHJlZmVyZW5jZXNDb25maWd1cmF0aW9uU3RyYXRlZ3lcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IERBVEFfR1JJRF9DT05GSUdVUkFUSU9OX0NPTlRFWFQsXG4gICAgICB1c2VWYWx1ZTogQXNzaWduRGV2aWNlc0NvbXBvbmVudC5HUklEX0NPTkZJR19DT05URVhUXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFzc2lnbkRldmljZXNDb21wb25lbnQge1xuICBzdGF0aWMgcmVhZG9ubHkgR1JJRF9DT05GSUdfQ09OVEVYVDogVXNlclByZWZlcmVuY2VzR3JpZENvbmZpZ0NvbnRleHQgPSB7XG4gICAga2V5OiAnYXNzaWduLWRldmljZXMtZ3JpZCcsXG4gICAgY29uZmlnRmlsdGVyOiB7XG4gICAgICBmaWx0ZXI6IGZhbHNlXG4gICAgfVxuICB9O1xuXG4gIENVUlJFTlRfTE9DQVRJT04gPSBsb2NhdGlvbi5ocmVmO1xuICBQUk9EVUNUX0VYUEVSSUVOQ0UgPSBQUk9EVUNUX0VYUEVSSUVOQ0U7XG5cbiAgQElucHV0KCkgY3VycmVudEdyb3VwSWQ6IHN0cmluZztcbiAgQElucHV0KCkgcmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb25DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uU2hvd0NoaWxkRGV2aWNlcyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkRGV2aWNlID0gbmV3IEV2ZW50RW1pdHRlcjxJTWFuYWdlZE9iamVjdD4oKTtcbiAgQFZpZXdDaGlsZCgnc2hvd0RldmljZXNUb2dnbGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHNob3dEZXZpY2VzVG9nZ2xlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGRldmljZVF1ZXJ5U3RyaW5nT3V0cHV0OiBzdHJpbmc7XG4gIHBlbmRpbmdTdGF0dXMgPSBmYWxzZTtcbiAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbiA9IHsgcGFnZVNpemU6IDIwLCBjdXJyZW50UGFnZTogMSB9O1xuICBzZWxlY3RlZDogc3RyaW5nW10gPSBbXTtcbiAgYmFzZVF1ZXJ5OiBhbnk7XG4gIGNhbkFzc2lnbkRldmljZSA9IGZhbHNlO1xuICBhY3Rpb25Db250cm9sczogQWN0aW9uQ29udHJvbFtdID0gW107XG4gIGhlYWRlckFjdGlvbkNvbnRyb2xzOiBIZWFkZXJBY3Rpb25Db250cm9sW10gPSBbXTtcbiAgc2hvd0NoaWxkcmVuID0gZmFsc2U7XG4gIHJlYWRvbmx5IGlzU2VsZWN0YWJsZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbGVydDogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3ViQXNzZXRzU2VydmljZTogU3ViQXNzZXRzU2VydmljZSxcbiAgICBwcml2YXRlIGludmVudG9yeVNlcnZpY2U6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBnYWluc2lnaHRTZXJ2aWNlOiBHYWluc2lnaHRTZXJ2aWNlXG4gICkge31cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVudGVyJywgWyckZXZlbnQnXSkgb25FbnRlcktleURvd24oX2V2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5hc3NpZ25EZXZpY2VzKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXROb3RJbmNsdWRlZEluR3JvdXBRdWVyeSgpO1xuICAgIHRoaXMuY2FuQXNzaWduRGV2aWNlID0gYXdhaXQgdGhpcy5zdWJBc3NldHNTZXJ2aWNlLmNhbkFzc2lnbkRldmljZSh7XG4gICAgICBpZDogdGhpcy5jdXJyZW50R3JvdXBJZFxuICAgIH0gYXMgSU1hbmFnZWRPYmplY3QpO1xuICAgIHRoaXMuc2V0SGVhZGVyQWN0aW9uQ29udHJvbHMoKTtcbiAgfVxuXG4gIHNldE5vdEluY2x1ZGVkSW5Hcm91cFF1ZXJ5KCkge1xuICAgIGNvbnN0IG5vdEluY2x1ZGVkSW5Hcm91cFF1ZXJ5ID0geyBfX25vdDogeyBfX2J5Z3JvdXBpZDogdGhpcy5jdXJyZW50R3JvdXBJZCB9IH07XG4gICAgdGhpcy5iYXNlUXVlcnkgPSBub3RJbmNsdWRlZEluR3JvdXBRdWVyeTtcbiAgfVxuXG4gIHNldEhlYWRlckFjdGlvbkNvbnRyb2xzKCkge1xuICAgIGNvbnN0IGhlYWRlckFjdGlvbkNvbnRyb2xzOiBIZWFkZXJBY3Rpb25Db250cm9sW10gPSBbXTtcbiAgICBjb25zdCBzaG93Q2hpbGREZXZpY2VzID0ge1xuICAgICAgdHlwZTogJ0RJU1BMQVlfQ0hJTERfREVWSUNFU19CVVRUT04nLFxuICAgICAgdGV4dDogZ2V0dGV4dCgnRW5hYmxlIGNoaWxkIGRldmljZXMgc2VsZWN0aW9uJyksXG4gICAgICB0ZW1wbGF0ZTogdGhpcy5zaG93RGV2aWNlc1RvZ2dsZSxcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0NoaWxkcmVuID0gIXRoaXMuc2hvd0NoaWxkcmVuO1xuICAgICAgICB0aGlzLnNldEFjdGlvbkNvbnRyb2xzKHRoaXMuc2hvd0NoaWxkcmVuKTtcbiAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuRVZFTlQsIHtcbiAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BU1NJR05fREVWSUNFUy5DT01QT05FTlRTLkFTU0lHTl9ERVZJQ0VTLFxuICAgICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFTU0lHTl9ERVZJQ0VTLkFDVElPTlMuRElTUExBWV9DSElMRF9ERVZJQ0VTLFxuICAgICAgICAgIHVybDogdGhpcy5DVVJSRU5UX0xPQ0FUSU9OXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gICAgaGVhZGVyQWN0aW9uQ29udHJvbHMucHVzaChzaG93Q2hpbGREZXZpY2VzKTtcbiAgICB0aGlzLmhlYWRlckFjdGlvbkNvbnRyb2xzID0gaGVhZGVyQWN0aW9uQ29udHJvbHM7XG4gIH1cblxuICBzZXRBY3Rpb25Db250cm9scyhzaG93Q2hpbGRyZW46IGJvb2xlYW4pIHtcbiAgICBjb25zdCBhY3Rpb25Db250cm9sczogQWN0aW9uQ29udHJvbFtdID0gW107XG5cbiAgICBjb25zdCBzZWxlY3RDaGlsZHJlbkFjdGlvbjogQWN0aW9uQ29udHJvbCA9IHtcbiAgICAgIHR5cGU6ICdTSE9XX1RBUkdFVF9DSElMRF9ERVZJQ0VTJyxcbiAgICAgIGljb246ICdlbnRlci1ib3R0b20nLFxuICAgICAgdGV4dDogZ2V0dGV4dCgnU2VsZWN0IHRhcmdldCBjaGlsZCBkZXZpY2VzJyksXG4gICAgICBjYWxsYmFjazogKGFzc2V0OiBSb3cpID0+IHRoaXMuc2VsZWN0Q2hpbGRyZW4oYXNzZXQgYXMgSU1hbmFnZWRPYmplY3QpLFxuICAgICAgc2hvd0lmOiAoYXNzZXQ6IFJvdykgPT4gYXNzZXQuY2hpbGREZXZpY2VzLnJlZmVyZW5jZXMubGVuZ3RoID4gMFxuICAgIH07XG5cbiAgICBpZiAoc2hvd0NoaWxkcmVuKSB7XG4gICAgICBhY3Rpb25Db250cm9scy5wdXNoKHNlbGVjdENoaWxkcmVuQWN0aW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLmFjdGlvbkNvbnRyb2xzID0gYWN0aW9uQ29udHJvbHM7XG4gICAgdGhpcy5yZWZyZXNoLmVtaXQoKTtcbiAgfVxuXG4gIGFzeW5jIGFzc2lnbkRldmljZXMoKSB7XG4gICAgaWYgKHRoaXMuY2FuQXNzaWduRGV2aWNlID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnBlbmRpbmdTdGF0dXMgPSB0cnVlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5jaGlsZEFzc2V0c0J1bGtBZGQodGhpcy5zZWxlY3RlZCwgdGhpcy5jdXJyZW50R3JvdXBJZCk7XG4gICAgICB0aGlzLnJlZnJlc2guZW1pdCgpO1xuICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKGdldHRleHQoJ0RldmljZXMgYXNzaWduZWQuJykpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmFsZXJ0LmRhbmdlcihnZXR0ZXh0KCdDb3VsZCBub3QgYXNzaWduIGRldmljZXMuJyksIGVycm9yKTtcbiAgICB9XG4gICAgdGhpcy5wZW5kaW5nU3RhdHVzID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RlZCA9IFtdO1xuICAgIHRoaXMub25DYW5jZWwuZW1pdCgpO1xuICB9XG5cbiAgb25TZWxlY3RlZChzZWxlY3RlZERldmljZXNJRHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkRGV2aWNlc0lEcztcbiAgfVxuXG4gIHNlbGVjdENoaWxkcmVuKGFzc2V0OiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHRoaXMub25TaG93Q2hpbGREZXZpY2VzLmVtaXQodHJ1ZSk7XG4gICAgdGhpcy5zZWxlY3RlZERldmljZS5lbWl0KGFzc2V0KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgZmxleC1uby1zaHJpbmsgc2VwYXJhdG9yLWJvdHRvbSBjb2wteHMtMTIgbGFyZ2UtcGFkZGluZyBwLXQtMjQgcC1iLTI0XCI+XG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLW1kLW9mZnNldC0zIGNvbC1sZy00IGNvbC1sZy1vZmZzZXQtNFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImg0IHRleHQtY2VudGVyIHRleHQtbWVkaXVtXCI+XG4gICAgICAgIHt7ICdBc3NpZ24gZGV2aWNlcycgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGM4eS1kZXZpY2UtZ3JpZFxuICBbdGl0bGVdPVwiJydcIlxuICBbYWN0aW9uQ29udHJvbHNdPVwiYWN0aW9uQ29udHJvbHNcIlxuICBbaW5maW5pdGVTY3JvbGxdPVwiJ2F1dG8nXCJcbiAgW3NlbGVjdGFibGVdPVwiaXNTZWxlY3RhYmxlXCJcbiAgW3BhZ2luYXRpb25dPVwicGFnaW5hdGlvblwiXG4gIChpdGVtc1NlbGVjdCk9XCJvblNlbGVjdGVkKCRldmVudClcIlxuICBbcmVmcmVzaF09XCJyZWZyZXNoXCJcbiAgW2Jhc2VRdWVyeV09XCJiYXNlUXVlcnlcIlxuICBbaGVhZGVyQWN0aW9uQ29udHJvbHNdPVwiaGVhZGVyQWN0aW9uQ29udHJvbHNcIlxuICBbd2l0aENoaWxkcmVuXT1cInRydWVcIlxuICBjbGFzcz1cImZsZXgtZ3JvdyBjb2wteHMtMTIgbm8tZ3V0dGVyXCJcbiAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgW2FjdGlvbk5hbWVdPVwiUFJPRFVDVF9FWFBFUklFTkNFLkVWRU5UXCJcbiAgW2FjdGlvbkRhdGFdPVwieyBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BU1NJR05fREVWSUNFUy5DT01QT05FTlRTLkFTU0lHTl9ERVZJQ0VTIH1cIlxuPjwvYzh5LWRldmljZS1ncmlkPlxuXG48ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgY2FyZC1mb290ZXIgcC0yNCBzZXBhcmF0b3JcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICB0aXRsZT1cInt7ICdDYW5jZWwnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAoY2xpY2spPVwib25DYW5jZWwuZW1pdCgpXCJcbiAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgIFthY3Rpb25OYW1lXT1cIlBST0RVQ1RfRVhQRVJJRU5DRS5FVkVOVFwiXG4gICAgW2FjdGlvbkRhdGFdPVwie1xuICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVNTSUdOX0RFVklDRVMuQ09NUE9ORU5UUy5BU1NJR05fREVWSUNFUyxcbiAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFTU0lHTl9ERVZJQ0VTLkFDVElPTlMuQ0FOQ0VMXG4gICAgfVwiXG4gID5cbiAgICA8c3Bhbj57eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPC9idXR0b24+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgW25nQ2xhc3NdPVwieyAnYnRuLXBlbmRpbmcnOiBwZW5kaW5nU3RhdHVzIH1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIHRpdGxlPVwie3sgJ0Fzc2lnbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgIChjbGljayk9XCJhc3NpZ25EZXZpY2VzKClcIlxuICAgIFtkaXNhYmxlZF09XCJzZWxlY3RlZC5sZW5ndGggPT09IDAgfHwgIWNhbkFzc2lnbkRldmljZVwiXG4gICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICBbYWN0aW9uTmFtZV09XCJQUk9EVUNUX0VYUEVSSUVOQ0UuRVZFTlRcIlxuICAgIFthY3Rpb25EYXRhXT1cIntcbiAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFTU0lHTl9ERVZJQ0VTLkNPTVBPTkVOVFMuQVNTSUdOX0RFVklDRVMsXG4gICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BU1NJR05fREVWSUNFUy5BQ1RJT05TLkFTU0lHTlxuICAgIH1cIlxuICA+XG4gICAgPHNwYW4+e3sgJ0Fzc2lnbicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjc2hvd0RldmljZXNUb2dnbGUgbGV0LWNvbnRyb2w9XCJoZWFkZXJBY3Rpb25Db250cm9sXCI+XG4gIDxsYWJlbCBjbGFzcz1cImM4eS1zd2l0Y2ggYS1zLWNlbnRlclwiIHRpdGxlPVwie3sgY29udHJvbC50ZXh0IHwgdHJhbnNsYXRlIH19XCI+XG4gICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPVwic2hvd0NoaWxkcmVuXCIgKGNsaWNrKT1cImNvbnRyb2wuY2FsbGJhY2soKVwiIC8+XG4gICAgPHNwYW4+PC9zcGFuPlxuICAgIDxzcGFuPnt7IGNvbnRyb2wudGV4dCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPC9sYWJlbD5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuLWhlbHAgbS1yLTE2IGEtcy1jZW50ZXJcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICBbcG9wb3Zlcl09XCJjaGlsZERldmljZXNQb3BcIlxuICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gID48L2J1dHRvbj5cbiAgPG5nLXRlbXBsYXRlICNjaGlsZERldmljZXNQb3A+XG4gICAgPHNwYW4gdHJhbnNsYXRlPlxuICAgICAgRGlzcGxheXMgdGhlIGJ1dHRvblxuICAgICAgPHNwYW4gdGl0bGU9XCJDaGlsZCBkZXZpY2VzIGljb25cIiBjbGFzcz1cImJ0biBidG4tZG90IGJ0bi1pY29uIG5vLXBvaW50ZXJcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgZGx0LWM4eS1pY29uLWVudGVyLWJvdHRvbVwiPjwvaT5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIG5leHQgdG8gdGFyZ2V0IGRldmljZXMgd2l0aCBjaGlsZHJlbi4gQ2xpY2tpbmcgaXQgZGlzcGxheXMgYSBsaXN0IHdpdGggYWxsIGNoaWxkIGRldmljZXMgb2ZcbiAgICAgIHRoZSBzZWxlY3RlZCB0YXJnZXQgZGV2aWNlLlxuICAgIDwvc3Bhbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaWduLWRldmljZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3ViLWFzc2V0cy9hc3NpZ24tZGV2aWNlcy9hc3NpZ24tZGV2aWNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zdWItYXNzZXRzL2Fzc2lnbi1kZXZpY2VzL2Fzc2lnbi1kZXZpY2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFrQixnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvRCxPQUFPLEVBRUwsWUFBWSxFQUVaLCtCQUErQixFQUMvQixnQ0FBZ0MsRUFDaEMsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFJUCxvQ0FBb0MsRUFFckMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7O0FBZ0J6RCxNQUFNLE9BQU8sc0JBQXNCO0lBOEJqQyxZQUNVLEtBQW1CLEVBQ25CLGdCQUFrQyxFQUNsQyxnQkFBa0MsRUFDbEMsZ0JBQWtDO1FBSGxDLFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbkIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUExQjVDLHFCQUFnQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDakMsdUJBQWtCLEdBQUcsa0JBQWtCLENBQUM7UUFHL0IsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDakMs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Q0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7O0FBdkhlLDBDQUFtQixHQUFxQztJQUN0RSxHQUFHLEVBQUUscUJBQXFCO0lBQzFCLFlBQVksRUFBRTtRQUNaLE1BQU0sRUFBRSxLQUFLO0tBQ2Q7Q0FDRixDQUFDO21IQU5TLHNCQUFzQjt1R0FBdEIsc0JBQXNCLDJTQVh0QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGdDQUFnQztZQUN6QyxRQUFRLEVBQUUsb0NBQW9DO1NBQy9DO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsK0JBQStCO1lBQ3hDLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxtQkFBbUI7U0FDckQ7S0FDRiw2SEFrQnVDLFdBQVcsNkJDekRyRCwrN0ZBcUZBOzJGRDVDYSxzQkFBc0I7a0JBZGxDLFNBQVM7K0JBQ0Usb0JBQW9CLGFBRW5CO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxnQ0FBZ0M7NEJBQ3pDLFFBQVEsRUFBRSxvQ0FBb0M7eUJBQy9DO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSwrQkFBK0I7NEJBQ3hDLFFBQVEsRUFBRSx1QkFBdUIsbUJBQW1CO3lCQUNyRDtxQkFDRjtnTUFhUSxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNnRCxpQkFBaUI7c0JBQXZFLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQXFCRCxjQUFjO3NCQUFqRSxZQUFZO3VCQUFDLHdCQUF3QixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0LCBJbnZlbnRvcnlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQWN0aW9uQ29udHJvbCxcbiAgQWxlcnRTZXJ2aWNlLFxuICBCdWlsdEluQWN0aW9uVHlwZSxcbiAgREFUQV9HUklEX0NPTkZJR1VSQVRJT05fQ09OVEVYVCxcbiAgREFUQV9HUklEX0NPTkZJR1VSQVRJT05fU1RSQVRFR1ksXG4gIEdhaW5zaWdodFNlcnZpY2UsXG4gIGdldHRleHQsXG4gIEhlYWRlckFjdGlvbkNvbnRyb2wsXG4gIFBhZ2luYXRpb24sXG4gIFJvdyxcbiAgVXNlclByZWZlcmVuY2VzQ29uZmlndXJhdGlvblN0cmF0ZWd5LFxuICBVc2VyUHJlZmVyZW5jZXNHcmlkQ29uZmlnQ29udGV4dFxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFBST0RVQ1RfRVhQRVJJRU5DRSB9IGZyb20gJy4uL3NoYXJlZC9zdWItYXNzZXRzLm1vZGVsJztcbmltcG9ydCB7IFN1YkFzc2V0c1NlcnZpY2UgfSBmcm9tICcuLi9zdWItYXNzZXRzLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYXNzaWduLWRldmljZXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXNzaWduLWRldmljZXMuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBEQVRBX0dSSURfQ09ORklHVVJBVElPTl9TVFJBVEVHWSxcbiAgICAgIHVzZUNsYXNzOiBVc2VyUHJlZmVyZW5jZXNDb25maWd1cmF0aW9uU3RyYXRlZ3lcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IERBVEFfR1JJRF9DT05GSUdVUkFUSU9OX0NPTlRFWFQsXG4gICAgICB1c2VWYWx1ZTogQXNzaWduRGV2aWNlc0NvbXBvbmVudC5HUklEX0NPTkZJR19DT05URVhUXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFzc2lnbkRldmljZXNDb21wb25lbnQge1xuICBzdGF0aWMgcmVhZG9ubHkgR1JJRF9DT05GSUdfQ09OVEVYVDogVXNlclByZWZlcmVuY2VzR3JpZENvbmZpZ0NvbnRleHQgPSB7XG4gICAga2V5OiAnYXNzaWduLWRldmljZXMtZ3JpZCcsXG4gICAgY29uZmlnRmlsdGVyOiB7XG4gICAgICBmaWx0ZXI6IGZhbHNlXG4gICAgfVxuICB9O1xuXG4gIENVUlJFTlRfTE9DQVRJT04gPSBsb2NhdGlvbi5ocmVmO1xuICBQUk9EVUNUX0VYUEVSSUVOQ0UgPSBQUk9EVUNUX0VYUEVSSUVOQ0U7XG5cbiAgQElucHV0KCkgY3VycmVudEdyb3VwSWQ6IHN0cmluZztcbiAgQElucHV0KCkgcmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgb25DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uU2hvd0NoaWxkRGV2aWNlcyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHNlbGVjdGVkRGV2aWNlID0gbmV3IEV2ZW50RW1pdHRlcjxJTWFuYWdlZE9iamVjdD4oKTtcbiAgQFZpZXdDaGlsZCgnc2hvd0RldmljZXNUb2dnbGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHNob3dEZXZpY2VzVG9nZ2xlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIGRldmljZVF1ZXJ5U3RyaW5nT3V0cHV0OiBzdHJpbmc7XG4gIHBlbmRpbmdTdGF0dXMgPSBmYWxzZTtcbiAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbiA9IHsgcGFnZVNpemU6IDIwLCBjdXJyZW50UGFnZTogMSB9O1xuICBzZWxlY3RlZDogc3RyaW5nW10gPSBbXTtcbiAgYmFzZVF1ZXJ5OiBhbnk7XG4gIGNhbkFzc2lnbkRldmljZSA9IGZhbHNlO1xuICBhY3Rpb25Db250cm9sczogQWN0aW9uQ29udHJvbFtdID0gW107XG4gIGhlYWRlckFjdGlvbkNvbnRyb2xzOiBIZWFkZXJBY3Rpb25Db250cm9sW10gPSBbXTtcbiAgc2hvd0NoaWxkcmVuID0gZmFsc2U7XG4gIGJ1aWx0SW5BY3Rpb25zVG9IaWRlOiBCdWlsdEluQWN0aW9uVHlwZVtdID0gW0J1aWx0SW5BY3Rpb25UeXBlLkRlbGV0ZV07XG4gIHJlYWRvbmx5IGlzU2VsZWN0YWJsZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbGVydDogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3ViQXNzZXRzU2VydmljZTogU3ViQXNzZXRzU2VydmljZSxcbiAgICBwcml2YXRlIGludmVudG9yeVNlcnZpY2U6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBnYWluc2lnaHRTZXJ2aWNlOiBHYWluc2lnaHRTZXJ2aWNlXG4gICkge31cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVudGVyJywgWyckZXZlbnQnXSkgb25FbnRlcktleURvd24oX2V2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5hc3NpZ25EZXZpY2VzKCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXROb3RJbmNsdWRlZEluR3JvdXBRdWVyeSgpO1xuICAgIHRoaXMuY2FuQXNzaWduRGV2aWNlID0gYXdhaXQgdGhpcy5zdWJBc3NldHNTZXJ2aWNlLmNhbkFzc2lnbkRldmljZSh7XG4gICAgICBpZDogdGhpcy5jdXJyZW50R3JvdXBJZFxuICAgIH0gYXMgSU1hbmFnZWRPYmplY3QpO1xuICAgIHRoaXMuc2V0SGVhZGVyQWN0aW9uQ29udHJvbHMoKTtcbiAgfVxuXG4gIHNldE5vdEluY2x1ZGVkSW5Hcm91cFF1ZXJ5KCkge1xuICAgIGNvbnN0IG5vdEluY2x1ZGVkSW5Hcm91cFF1ZXJ5ID0geyBfX25vdDogeyBfX2J5Z3JvdXBpZDogdGhpcy5jdXJyZW50R3JvdXBJZCB9IH07XG4gICAgdGhpcy5iYXNlUXVlcnkgPSBub3RJbmNsdWRlZEluR3JvdXBRdWVyeTtcbiAgfVxuXG4gIHNldEhlYWRlckFjdGlvbkNvbnRyb2xzKCkge1xuICAgIGNvbnN0IGhlYWRlckFjdGlvbkNvbnRyb2xzOiBIZWFkZXJBY3Rpb25Db250cm9sW10gPSBbXTtcbiAgICBjb25zdCBzaG93Q2hpbGREZXZpY2VzID0ge1xuICAgICAgdHlwZTogJ0RJU1BMQVlfQ0hJTERfREVWSUNFU19CVVRUT04nLFxuICAgICAgdGV4dDogZ2V0dGV4dCgnRW5hYmxlIGNoaWxkIGRldmljZXMgc2VsZWN0aW9uJyksXG4gICAgICB0ZW1wbGF0ZTogdGhpcy5zaG93RGV2aWNlc1RvZ2dsZSxcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0NoaWxkcmVuID0gIXRoaXMuc2hvd0NoaWxkcmVuO1xuICAgICAgICB0aGlzLnNldEFjdGlvbkNvbnRyb2xzKHRoaXMuc2hvd0NoaWxkcmVuKTtcbiAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuRVZFTlQsIHtcbiAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BU1NJR05fREVWSUNFUy5DT01QT05FTlRTLkFTU0lHTl9ERVZJQ0VTLFxuICAgICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFTU0lHTl9ERVZJQ0VTLkFDVElPTlMuRElTUExBWV9DSElMRF9ERVZJQ0VTLFxuICAgICAgICAgIHVybDogdGhpcy5DVVJSRU5UX0xPQ0FUSU9OXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gICAgaGVhZGVyQWN0aW9uQ29udHJvbHMucHVzaChzaG93Q2hpbGREZXZpY2VzKTtcbiAgICB0aGlzLmhlYWRlckFjdGlvbkNvbnRyb2xzID0gaGVhZGVyQWN0aW9uQ29udHJvbHM7XG4gIH1cblxuICBzZXRBY3Rpb25Db250cm9scyhzaG93Q2hpbGRyZW46IGJvb2xlYW4pIHtcbiAgICBjb25zdCBhY3Rpb25Db250cm9sczogQWN0aW9uQ29udHJvbFtdID0gW107XG5cbiAgICBjb25zdCBzZWxlY3RDaGlsZHJlbkFjdGlvbjogQWN0aW9uQ29udHJvbCA9IHtcbiAgICAgIHR5cGU6ICdTSE9XX1RBUkdFVF9DSElMRF9ERVZJQ0VTJyxcbiAgICAgIGljb246ICdlbnRlci1ib3R0b20nLFxuICAgICAgdGV4dDogZ2V0dGV4dCgnU2VsZWN0IHRhcmdldCBjaGlsZCBkZXZpY2VzJyksXG4gICAgICBjYWxsYmFjazogKGFzc2V0OiBSb3cpID0+IHRoaXMuc2VsZWN0Q2hpbGRyZW4oYXNzZXQgYXMgSU1hbmFnZWRPYmplY3QpLFxuICAgICAgc2hvd0lmOiAoYXNzZXQ6IFJvdykgPT4gYXNzZXQuY2hpbGREZXZpY2VzLnJlZmVyZW5jZXMubGVuZ3RoID4gMFxuICAgIH07XG5cbiAgICBpZiAoc2hvd0NoaWxkcmVuKSB7XG4gICAgICBhY3Rpb25Db250cm9scy5wdXNoKHNlbGVjdENoaWxkcmVuQWN0aW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLmFjdGlvbkNvbnRyb2xzID0gYWN0aW9uQ29udHJvbHM7XG4gICAgdGhpcy5yZWZyZXNoLmVtaXQoKTtcbiAgfVxuXG4gIGFzeW5jIGFzc2lnbkRldmljZXMoKSB7XG4gICAgaWYgKHRoaXMuY2FuQXNzaWduRGV2aWNlID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnBlbmRpbmdTdGF0dXMgPSB0cnVlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5jaGlsZEFzc2V0c0J1bGtBZGQodGhpcy5zZWxlY3RlZCwgdGhpcy5jdXJyZW50R3JvdXBJZCk7XG4gICAgICB0aGlzLnJlZnJlc2guZW1pdCgpO1xuICAgICAgdGhpcy5hbGVydC5zdWNjZXNzKGdldHRleHQoJ0RldmljZXMgYXNzaWduZWQuJykpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmFsZXJ0LmRhbmdlcihnZXR0ZXh0KCdDb3VsZCBub3QgYXNzaWduIGRldmljZXMuJyksIGVycm9yKTtcbiAgICB9XG4gICAgdGhpcy5wZW5kaW5nU3RhdHVzID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RlZCA9IFtdO1xuICAgIHRoaXMub25DYW5jZWwuZW1pdCgpO1xuICB9XG5cbiAgb25TZWxlY3RlZChzZWxlY3RlZERldmljZXNJRHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkRGV2aWNlc0lEcztcbiAgfVxuXG4gIHNlbGVjdENoaWxkcmVuKGFzc2V0OiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHRoaXMub25TaG93Q2hpbGREZXZpY2VzLmVtaXQodHJ1ZSk7XG4gICAgdGhpcy5zZWxlY3RlZERldmljZS5lbWl0KGFzc2V0KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgZmxleC1uby1zaHJpbmsgc2VwYXJhdG9yLWJvdHRvbSBjb2wteHMtMTIgbGFyZ2UtcGFkZGluZyBwLXQtMjQgcC1iLTI0XCI+XG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLW1kLW9mZnNldC0zIGNvbC1sZy00IGNvbC1sZy1vZmZzZXQtNFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImg0IHRleHQtY2VudGVyIHRleHQtbWVkaXVtXCI+XG4gICAgICAgIHt7ICdBc3NpZ24gZGV2aWNlcycgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGM4eS1kZXZpY2UtZ3JpZFxuICBbdGl0bGVdPVwiJydcIlxuICBbYWN0aW9uQ29udHJvbHNdPVwiYWN0aW9uQ29udHJvbHNcIlxuICBbYnVpbHRJbkFjdGlvbnNUb0hpZGVdPVwiYnVpbHRJbkFjdGlvbnNUb0hpZGVcIlxuICBbaW5maW5pdGVTY3JvbGxdPVwiJ2F1dG8nXCJcbiAgW3NlbGVjdGFibGVdPVwiaXNTZWxlY3RhYmxlXCJcbiAgW3BhZ2luYXRpb25dPVwicGFnaW5hdGlvblwiXG4gIChpdGVtc1NlbGVjdCk9XCJvblNlbGVjdGVkKCRldmVudClcIlxuICBbcmVmcmVzaF09XCJyZWZyZXNoXCJcbiAgW2Jhc2VRdWVyeV09XCJiYXNlUXVlcnlcIlxuICBbaGVhZGVyQWN0aW9uQ29udHJvbHNdPVwiaGVhZGVyQWN0aW9uQ29udHJvbHNcIlxuICBbd2l0aENoaWxkcmVuXT1cInRydWVcIlxuICBjbGFzcz1cImZsZXgtZ3JvdyBjb2wteHMtMTIgbm8tZ3V0dGVyXCJcbiAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgW2FjdGlvbk5hbWVdPVwiUFJPRFVDVF9FWFBFUklFTkNFLkVWRU5UXCJcbiAgW2FjdGlvbkRhdGFdPVwieyBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BU1NJR05fREVWSUNFUy5DT01QT05FTlRTLkFTU0lHTl9ERVZJQ0VTIH1cIlxuPjwvYzh5LWRldmljZS1ncmlkPlxuXG48ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgY2FyZC1mb290ZXIgcC0yNCBzZXBhcmF0b3JcIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICB0aXRsZT1cInt7ICdDYW5jZWwnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAoY2xpY2spPVwib25DYW5jZWwuZW1pdCgpXCJcbiAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgIFthY3Rpb25OYW1lXT1cIlBST0RVQ1RfRVhQRVJJRU5DRS5FVkVOVFwiXG4gICAgW2FjdGlvbkRhdGFdPVwie1xuICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuQVNTSUdOX0RFVklDRVMuQ09NUE9ORU5UUy5BU1NJR05fREVWSUNFUyxcbiAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFTU0lHTl9ERVZJQ0VTLkFDVElPTlMuQ0FOQ0VMXG4gICAgfVwiXG4gID5cbiAgICA8c3Bhbj57eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPC9idXR0b24+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgW25nQ2xhc3NdPVwieyAnYnRuLXBlbmRpbmcnOiBwZW5kaW5nU3RhdHVzIH1cIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIHRpdGxlPVwie3sgJ0Fzc2lnbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgIChjbGljayk9XCJhc3NpZ25EZXZpY2VzKClcIlxuICAgIFtkaXNhYmxlZF09XCJzZWxlY3RlZC5sZW5ndGggPT09IDAgfHwgIWNhbkFzc2lnbkRldmljZVwiXG4gICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICBbYWN0aW9uTmFtZV09XCJQUk9EVUNUX0VYUEVSSUVOQ0UuRVZFTlRcIlxuICAgIFthY3Rpb25EYXRhXT1cIntcbiAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFTU0lHTl9ERVZJQ0VTLkNPTVBPTkVOVFMuQVNTSUdOX0RFVklDRVMsXG4gICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BU1NJR05fREVWSUNFUy5BQ1RJT05TLkFTU0lHTlxuICAgIH1cIlxuICA+XG4gICAgPHNwYW4+e3sgJ0Fzc2lnbicgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjc2hvd0RldmljZXNUb2dnbGUgbGV0LWNvbnRyb2w9XCJoZWFkZXJBY3Rpb25Db250cm9sXCI+XG4gIDxsYWJlbCBjbGFzcz1cImM4eS1zd2l0Y2ggYS1zLWNlbnRlclwiIHRpdGxlPVwie3sgY29udHJvbC50ZXh0IHwgdHJhbnNsYXRlIH19XCI+XG4gICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPVwic2hvd0NoaWxkcmVuXCIgKGNsaWNrKT1cImNvbnRyb2wuY2FsbGJhY2soKVwiIC8+XG4gICAgPHNwYW4+PC9zcGFuPlxuICAgIDxzcGFuPnt7IGNvbnRyb2wudGV4dCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPC9sYWJlbD5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuLWhlbHAgbS1yLTE2IGEtcy1jZW50ZXJcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICBbcG9wb3Zlcl09XCJjaGlsZERldmljZXNQb3BcIlxuICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gID48L2J1dHRvbj5cbiAgPG5nLXRlbXBsYXRlICNjaGlsZERldmljZXNQb3A+XG4gICAgPHNwYW4gdHJhbnNsYXRlPlxuICAgICAgRGlzcGxheXMgdGhlIGJ1dHRvblxuICAgICAgPHNwYW4gdGl0bGU9XCJDaGlsZCBkZXZpY2VzIGljb25cIiBjbGFzcz1cImJ0biBidG4tZG90IGJ0bi1pY29uIG5vLXBvaW50ZXJcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgZGx0LWM4eS1pY29uLWVudGVyLWJvdHRvbVwiPjwvaT5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIG5leHQgdG8gdGFyZ2V0IGRldmljZXMgd2l0aCBjaGlsZHJlbi4gQ2xpY2tpbmcgaXQgZGlzcGxheXMgYSBsaXN0IHdpdGggYWxsIGNoaWxkIGRldmljZXMgb2ZcbiAgICAgIHRoZSBzZWxlY3RlZCB0YXJnZXQgZGV2aWNlLlxuICAgIDwvc3Bhbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -3,6 +3,7 @@ import { MapComponent, MapService, defaultMapConfig, getC8yMarker } from '@c8y/n
3
3
  import { FormGroup } from '@angular/forms';
4
4
  import { ActivatedRoute } from '@angular/router';
5
5
  import { toggleFullscreen } from '../fullscreen.util';
6
+ import { isNumber } from 'lodash-es';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@angular/router";
8
9
  import * as i2 from "@c8y/ngx-components/map";
@@ -152,9 +153,10 @@ export class AssetLocationComponent {
152
153
  * @param longitude Longitude of the marker
153
154
  */
154
155
  setView(latitude, longitude) {
155
- if (latitude && longitude && this.mapView) {
156
+ if (isNumber(latitude) && isNumber(longitude) && this.mapView) {
156
157
  [latitude, longitude] = this.setLatLngValues(latitude, longitude);
157
- this.mapView.map?.setView([latitude, longitude]);
158
+ this.config.center = [latitude, longitude];
159
+ this.mapView.center();
158
160
  }
159
161
  }
160
162
  setLatLngValues(latitude, longitude) {
@@ -181,4 +183,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
181
183
  }], form: [{
182
184
  type: Input
183
185
  }] } });
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtbG9jYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3ViLWFzc2V0cy9sb2NhdGlvbi9hc3NldC1sb2NhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zdWItYXNzZXRzL2xvY2F0aW9uL2Fzc2V0LWxvY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUtMLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsWUFBWSxFQUVaLFVBQVUsRUFFVixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNiLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFhLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFFdEQsYUFBYTtBQUNiLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9CLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0NBQ3ZCLENBQUM7QUFNWCxNQUFNLE9BQU8sc0JBQXNCO0lBbUJqQyxZQUFvQixlQUErQixFQUFVLFVBQXNCO1FBQS9ELG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFibkYsV0FBTSxHQUFjO1lBQ2xCLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNO1lBQy9CLFNBQVMsRUFBRSxFQUFFO1lBQ2IsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQUUsbUJBQW1CO1NBQzFCLENBQUM7UUFFRixzQkFBaUIsR0FBRyxLQUFLLENB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U0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDbEQ7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLFFBQWdCLEVBQUUsU0FBaUI7UUFDakQsUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDaEYsU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDbkYsT0FBTyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBSztRQUM3QixPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQztJQUMvQyxDQUFDOzttSEE5S1Usc0JBQXNCO3VHQUF0QixzQkFBc0IseUtBQ3RCLFlBQVkscUVDbkN6Qix5ZkFxQkE7MkZEYWEsc0JBQXNCO2tCQUpsQyxTQUFTOytCQUNFLG9CQUFvQjs4SEFLOUIsT0FBTztzQkFETixTQUFTO3VCQUFDLFlBQVk7Z0JBRWQsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgTCBmcm9tICdsZWFmbGV0JztcbmltcG9ydCB7XG4gIE1hcENvbXBvbmVudCxcbiAgTWFwQ29uZmlnLFxuICBNYXBTZXJ2aWNlLFxuICBQb3NpdGlvbk1hbmFnZWRPYmplY3QsXG4gIGRlZmF1bHRNYXBDb25maWcsXG4gIGdldEM4eU1hcmtlclxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL21hcCc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0b2dnbGVGdWxsc2NyZWVuIH0gZnJvbSAnLi4vZnVsbHNjcmVlbi51dGlsJztcblxuLy8gRMO8c3NlbGRvcmZcbmV4cG9ydCBjb25zdCBkZWZhdWx0TWFwTG9jYXRpb24gPSB7XG4gIGxhdDogZGVmYXVsdE1hcENvbmZpZy5jZW50ZXJbMF0sXG4gIGxuZzogZGVmYXVsdE1hcENvbmZpZy5jZW50ZXJbMV1cbn0gYXMgY29uc3Q7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hc3NldC1sb2NhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hc3NldC1sb2NhdGlvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQXNzZXRMb2NhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKE1hcENvbXBvbmVudClcbiAgbWFwVmlldzogTWFwQ29tcG9uZW50O1xuICBASW5wdXQoKSBpc0VkaXQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGxvY2F0aW9uTU86IElNYW5hZ2VkT2JqZWN0O1xuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XG4gIGNvbmZpZzogTWFwQ29uZmlnID0ge1xuICAgIGNlbnRlcjogZGVmYXVsdE1hcENvbmZpZy5jZW50ZXIsXG4gICAgem9vbUxldmVsOiAxMyxcbiAgICBjb2xvcjogJ2dyZWVuJyxcbiAgICBpY29uOiAnYzh5LWljb24tbG9jYXRpb24nXG4gIH07XG4gIGFzc2V0czogUG9zaXRpb25NYW5hZ2VkT2JqZWN0O1xuICBpc01hcmtlckRyYWdnYWJsZSA9IGZhbHNlO1xuICBpc01hcENsaWNrYWJsZSA9IGZhbHNlO1xuICBkcmFnTGlzdGVuZXI6IEwuTGVhZmxldEV2ZW50SGFuZGxlckZuO1xuICBmb3JtU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHNob3dNYXAgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWN0aXZhdGVkUm91dGVyOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSBtYXBTZXJ2aWNlOiBNYXBTZXJ2aWNlKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGxlYWZsZXQgPSBhd2FpdCB0aGlzLm1hcFNlcnZpY2UuZ2V0TGVhZmxldCgpO1xuICAgIGlmIChsZWFmbGV0KSB7XG4gICAgICBjb25zdCB7IGNvbnRleHREYXRhIH0gPVxuICAgICAgICAhdGhpcy5hY3RpdmF0ZWRSb3V0ZXIucGFyZW50IHx8IHRoaXMuYWN0aXZhdGVkUm91dGVyLnNuYXBzaG90LmRhdGEuY29udGV4dFxuICAgICAgICAgID8gdGhpcy5hY3RpdmF0ZWRSb3V0ZXIuc25hcHNob3QuZGF0YVxuICAgICAgICAgIDogdGhpcy5hY3RpdmF0ZWRSb3V0ZXIucGFyZW50LnNuYXBzaG90LmRhdGE7XG4gICAgICB0aGlzLmFzc2V0cyA9IGNvbnRleHREYXRhID8gY29udGV4dERhdGEgOiB0aGlzLmxvY2F0aW9uTU87XG4gICAgICBpZiAodGhpcy5hc3NldHMuYzh5X1Bvc2l0aW9uLmxhdCAmJiB0aGlzLmFzc2V0cy5jOHlfUG9zaXRpb24ubG5nKVxuICAgICAgICB0aGlzLmNvbmZpZy5jZW50ZXIgPSBbdGhpcy5hc3NldHMuYzh5X1Bvc2l0aW9uLmxhdCwgdGhpcy5hc3NldHMuYzh5X1Bvc2l0aW9uLmxuZ107XG4gICAgICB0aGlzLnNldFZpZXcodGhpcy5hc3NldHMuYzh5X1Bvc2l0aW9uLmxhdCwgdGhpcy5hc3NldHMuYzh5X1Bvc2l0aW9uLmxuZyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmlzRWRpdD8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnNob3dNYXAgPSB0cnVlO1xuICAgICAgdGhpcy5pc01hcmtlckRyYWdnYWJsZSA9IHRydWU7XG4gICAgICB0aGlzLmlzTWFwQ2xpY2thYmxlID0gdHJ1ZTtcbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHRoaXMubWFwVmlldz8ubWFwLmludmFsaWRhdGVTaXplKCkpO1xuICAgICAgdGhpcy5tYXBWaWV3Py5tYXAub24oJ2NsaWNrJywgZXZlbnQgPT4ge1xuICAgICAgICB0aGlzLm9uQ2xpY2tPZk1hcChldmVudCk7XG4gICAgICAgIHRoaXMudXBkYXRlTWFya2VyKGV2ZW50LmxhdGxuZy5sYXQsIGV2ZW50LmxhdGxuZy5sbmcpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmZvcm1TdWJzY3JpcHRpb24gPSB0aGlzLmZvcm0/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZU1hcmtlcih2YWx1ZS5jOHlfUG9zaXRpb24ubGF0LCB2YWx1ZS5jOHlfUG9zaXRpb24ubG5nKTtcbiAgICAgICAgdGhpcy5zZXRWaWV3KHZhbHVlLmM4eV9Qb3NpdGlvbi5sYXQsIHZhbHVlLmM4eV9Qb3NpdGlvbi5sbmcpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghY2hhbmdlcy5pc0VkaXQ/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgY29uc3QgaXNBbnlWYWx1ZU1pc3NpbmcgPSB0aGlzLmNoZWNrSWZBbnlWYWx1ZUlzTWlzc2luZyhcbiAgICAgICAgdGhpcy5sb2NhdGlvbk1PPy5jOHlfUG9zaXRpb24ubGF0LFxuICAgICAgICB0aGlzLmxvY2F0aW9uTU8/LmM4eV9Qb3NpdGlvbi5sbmdcbiAgICAgICk7XG4gICAgICBpZiAoaXNBbnlWYWx1ZU1pc3NpbmcpIHtcbiAgICAgICAgdGhpcy5zaG93TWFwID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuaXNNYXJrZXJEcmFnZ2FibGUgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNNYXBDbGlja2FibGUgPSBmYWxzZTtcbiAgICAgIHRoaXMudXBkYXRlTWFya2VyKHRoaXMubG9jYXRpb25NTz8uYzh5X1Bvc2l0aW9uLmxhdCwgdGhpcy5sb2NhdGlvbk1PPy5jOHlfUG9zaXRpb24ubG5nKTtcbiAgICAgIHRoaXMuc2V0Vmlldyh0aGlzLmxvY2F0aW9uTU8/LmM4eV9Qb3NpdGlvbi5sYXQsIHRoaXMubG9jYXRpb25NTz8uYzh5X1Bvc2l0aW9uLmxuZyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5mb3JtU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIGlmICh0aGlzLm1hcFZpZXc/Lm1hcmtlcnMgJiYgdGhpcy5kcmFnTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMubWFwVmlldz8ubWFya2Vycy5mb3JFYWNoKG1hcmtlciA9PiB7XG4gICAgICAgIG1hcmtlci5vZmYoJ2RyYWcnLCB0aGlzLmRyYWdMaXN0ZW5lcik7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBjb21tYW5kIGlzIHVzZWQgdG8gcHJlZmlsbCB0aGUgbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZSB2YWx1ZXMgaW4gdGhlIGZvcm0gd2hlbiB0aGUgbWFya2VyIGlzIGRyYWdnZWQuXG4gICAqL1xuICBvbk1hcmtlckRyYWcoZXZlbnQ6IEwuTGVhZmxldEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZm9ybSkge1xuICAgICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMuZm9ybS5nZXQoJ2M4eV9Qb3NpdGlvbicpIGFzIEZvcm1BcnJheTtcbiAgICAgIHByb3BlcnRpZXM/LmdldCgnbGF0JykucGF0Y2hWYWx1ZShldmVudC50YXJnZXQuX2xhdGxuZy5sYXQpO1xuICAgICAgcHJvcGVydGllcz8uZ2V0KCdsbmcnKS5wYXRjaFZhbHVlKGV2ZW50LnRhcmdldC5fbGF0bG5nLmxuZyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBtYXJrZXIgd2l0aCB0aGUgc3BlY2lmaWVkIHZhbHVlcyBhbmQgaWYgYW55IG9uZSBvZiB0aGUgdmFsdWVzIGlzIG5vdCBhdmFpbGJsZSwgc2V0c1xuICAgKiBzaG93V2FybmluZyB0byB0cnVlLlxuICAgKiBAcGFyYW0gbGF0aXR1ZGUgLSBUaGUgbGF0aXR1ZGUgb2YgdGhlIG1hcmtlclxuICAgKiBAcGFyYW0gbG9uZ2l0dWRlIC0gVGhlIGxvbmdpdHVkZSBvZiB0aGUgbWFya2VyXG4gICAqL1xuICB1cGRhdGVNYXJrZXIobGF0aXR1ZGU6IG51bWJlciwgbG9uZ2l0dWRlOiBudW1iZXIpIHtcbiAgICBjb25zdCBpc0FueVZhbHVlTWlzc2luZyA9IHRoaXMuY2hlY2tJZkFueVZhbHVlSXNNaXNzaW5nKGxhdGl0dWRlLCBsb25naXR1ZGUpO1xuICAgIGlmICghaXNBbnlWYWx1ZU1pc3NpbmcpIHtcbiAgICAgIFtsYXRpdHVkZSwgbG9uZ2l0dWRlXSA9IHRoaXMuc2V0TGF0TG5nVmFsdWVzKGxhdGl0dWRlLCBsb25naXR1ZGUpO1xuICAgICAgY29uc3QgYXNzZXQ6IGFueSA9IHtcbiAgICAgICAgYzh5X1Bvc2l0aW9uOiB7XG4gICAgICAgICAgbGF0aXR1ZGUsXG4gICAgICAgICAgbG9uZ2l0dWRlXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLm1hcFZpZXcpIHtcbiAgICAgICAgY29uc3QgaWNvbiA9IHRoaXMubWFwVmlldy5nZXRBc3NldEljb24odGhpcy5hc3NldHMpO1xuICAgICAgICBjb25zdCBsZWFmbGV0TWFya2VyID0gdGhpcy5tYXBWaWV3LmxlYWZsZXQubWFya2VyKFtsYXRpdHVkZSwgbG9uZ2l0dWRlXSwge1xuICAgICAgICAgIGljb246IGljb24sXG4gICAgICAgICAgZHJhZ2dhYmxlOiB0aGlzLmlzTWFya2VyRHJhZ2dhYmxlXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5pc01hcmtlckRyYWdnYWJsZSkge1xuICAgICAgICAgIHRoaXMuZHJhZ0xpc3RlbmVyID0gZXZlbnQgPT4ge1xuICAgICAgICAgICAgdGhpcy5vbk1hcmtlckRyYWcoZXZlbnQpO1xuICAgICAgICAgIH07XG4gICAgICAgICAgbGVhZmxldE1hcmtlci5vbignZHJhZ2VuZCcsIHRoaXMuZHJhZ0xpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1hcFZpZXcuY2xlYXJNYXJrZXJzKCk7XG4gICAgICAgIGNvbnN0IG1hcmtlciA9IGdldEM4eU1hcmtlcihsZWFmbGV0TWFya2VyLCBhc3NldCk7XG4gICAgICAgIHRoaXMubWFwVmlldy5hZGRNYXJrZXJUb01hcChtYXJrZXIpO1xuICAgICAgICB0aGlzLnNldFZpZXcobGF0aXR1ZGUsIGxvbmdpdHVkZSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubWFwVmlldy5jbGVhck1hcmtlcnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGNvbW1hbmQgaXMgdXNlZCB0byBwcmVmaWxsIHRoZSBsYXRpdHVkZSBhbmQgbG9uZ2l0dWRlIHZhbHVlcyBpbiB0aGUgZm9ybSBvbiBjbGljayBvZiBtYXAuXG4gICAqL1xuICBvbkNsaWNrT2ZNYXAoZXZlbnQ6IEwuTGVhZmxldE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5mb3JtKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5mb3JtLmdldCgnYzh5X1Bvc2l0aW9uJykgYXMgRm9ybUFycmF5O1xuICAgICAgcHJvcGVydGllcz8uZ2V0KCdsYXQnKS5wYXRjaFZhbHVlKGV2ZW50LmxhdGxuZy5sYXQpO1xuICAgICAgcHJvcGVydGllcz8uZ2V0KCdsbmcnKS5wYXRjaFZhbHVlKGV2ZW50LmxhdGxuZy5sbmcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGVuYWJsZSBmdWxsIHNjcmVlbiBvZiB0aGUgbWFwLlxuICAgKi9cbiAgZW5hYmxlRnVsbHNjcmVlbigpIHtcbiAgICB0b2dnbGVGdWxsc2NyZWVuKHRoaXMubWFwVmlldy5tYXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhbnkgb25lIG9mIHRoZSB2YWx1ZXMgaS5lLiwgbGF0aXR1ZGUvbG9uZ2l0dWRlIGlzIHVuZGVmaW5lZCBvciBudWxsLlxuICAgKiBAcGFyYW0gbGF0aXR1ZGUgTGF0aXR1ZGUgdmFsdWUgb2YgdGhlIHBvc2l0aW9uXG4gICAqIEBwYXJhbSBsb25naXR1ZGUgTG9uZ2l0dWRlIHZhbHVlIG9mIHRoZSBwb3NpdGlvblxuICAgKiBAcmV0dXJucyByZXR1cm5zIHRydWUgaWYgYW55IG9uZSBvZiB0aGUgdmFsdWVzIGFyZSBib3RoIHRoZSB2YWx1ZXMgYXJlIG1pc3NpbmcgZWxzZSBpdCByZXR1cm5zIGZhbHNlLlxuICAgKi9cbiAgY2hlY2tJZkFueVZhbHVlSXNNaXNzaW5nKGxhdGl0dWRlOiBudW1iZXIsIGxvbmdpdHVkZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNOdWxsT3JVbmRlZmluZWQobGF0aXR1ZGUpIHx8IHRoaXMuaXNOdWxsT3JVbmRlZmluZWQobG9uZ2l0dWRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2aWV3IG9mIHRoZSBtYXAgYmFzZWQgb24gdGhlIHBvc2l0aW9uIG9mIG1hcmtlci5cbiAgICogQHBhcmFtIGxhdGl0dWRlIC0gTGF0aXR1ZGUgb2YgdGhlIG1hcmtlclxuICAgKiBAcGFyYW0gbG9uZ2l0dWRlIExvbmdpdHVkZSBvZiB0aGUgbWFya2VyXG4gICAqL1xuICBzZXRWaWV3KGxhdGl0dWRlOiBudW1iZXIsIGxvbmdpdHVkZTogbnVtYmVyKSB7XG4gICAgaWYgKGxhdGl0dWRlICYmIGxvbmdpdHVkZSAmJiB0aGlzLm1hcFZpZXcpIHtcbiAgICAgIFtsYXRpdHVkZSwgbG9uZ2l0dWRlXSA9IHRoaXMuc2V0TGF0TG5nVmFsdWVzKGxhdGl0dWRlLCBsb25naXR1ZGUpO1xuICAgICAgdGhpcy5tYXBWaWV3Lm1hcD8uc2V0VmlldyhbbGF0aXR1ZGUsIGxvbmdpdHVkZV0pO1xuICAgIH1cbiAgfVxuXG4gIHNldExhdExuZ1ZhbHVlcyhsYXRpdHVkZTogbnVtYmVyLCBsb25naXR1ZGU6IG51bWJlcik6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgIGxhdGl0dWRlID0gdGhpcy5pc051bGxPclVuZGVmaW5lZChsYXRpdHVkZSkgPyBkZWZhdWx0TWFwTG9jYXRpb24ubGF0IDogbGF0aXR1ZGU7XG4gICAgbG9uZ2l0dWRlID0gdGhpcy5pc051bGxPclVuZGVmaW5lZChsb25naXR1ZGUpID8gZGVmYXVsdE1hcExvY2F0aW9uLmxuZyA6IGxvbmdpdHVkZTtcbiAgICByZXR1cm4gW2xhdGl0dWRlLCBsb25naXR1ZGVdO1xuICB9XG5cbiAgcHJpdmF0ZSBpc051bGxPclVuZGVmaW5lZCh2YWx1ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuICB9XG59XG4iLCI8ZGl2IFtoaWRkZW5dPVwiIXNob3dNYXBcIj5cbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rIHB1bGwtcmlnaHRcIlxuICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEycHhcIlxuICAgICAgdGl0bGU9XCJGdWxsIHNjcmVlblwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGRhdGEtY3k9XCJhc3NldC1sb2NhdGlvbi1mdWxsLXNjcmVlblwiXG4gICAgICAoY2xpY2spPVwiZW5hYmxlRnVsbHNjcmVlbigpXCJcbiAgICA+XG4gICAgPGkgYzh5SWNvbj1cImV4cGFuZFwiPjwvaT5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA0MDBweFwiPlxuICAgIDxjOHktbWFwXG4gICAgICAjbWFwXG4gICAgICBbYXNzZXRzXT1cImFzc2V0c1wiXG4gICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgPjwvYzh5LW1hcD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtbG9jYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3ViLWFzc2V0cy9sb2NhdGlvbi9hc3NldC1sb2NhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zdWItYXNzZXRzL2xvY2F0aW9uL2Fzc2V0LWxvY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUtMLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsWUFBWSxFQUVaLFVBQVUsRUFFVixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNiLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFhLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7OztBQUVyQyxhQUFhO0FBQ2IsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsR0FBRyxFQUFFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0IsR0FBRyxFQUFFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Q0FDdkIsQ0FBQztBQU1YLE1BQU0sT0FBTyxzQkFBc0I7SUFtQmpDLFlBQ1UsZUFBK0IsRUFDL0IsVUFBc0I7UUFEdEIsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQy9CLGVBQVUsR0FBVixVQUFVLENBQVk7UUFmaEMsV0FBTSxHQUFjO1lBQ2xCLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNO1lBQy9CLFNBQVMsRUFBRSxFQUFFO1lBQ2IsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQUUsbUJBQW1CO1NBQzFCLENBQUM7UUFFRixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFHdkIsWUFBTyxHQUFHLElBQUksQ0FBQztJQUtaLENBQUM7SUFFSixLQUFLLENBQUMsUUFBUTtRQUNaLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuRCxJQUFJLE9BQU8sRUFBRTtZQUNYLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FDbkIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTztnQkFDeEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUk7Z0JBQ3BDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2hELElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDMUQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRztnQkFDOUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDcEYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDMUU7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUU7WUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUM5QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUMzQixjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEQsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNoRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2xFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvRCxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRTtZQUNqQyxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FDckQsSUFBSSxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsR0FBRyxFQUNqQyxJQUFJLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQ2xDLENBQUM7WUFDRixJQUFJLGlCQUFpQixFQUFFO2dCQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDckIsT0FBTzthQUNSO1lBQ0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4RixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNwRjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUM5QyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN4QyxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWSxDQUFDLEtBQXFCO1FBQ2hDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBYyxDQUFDO1lBQzlELFVBQVUsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVELFVBQVUsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzdEO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFDLFFBQWdCLEVBQUUsU0FBaUI7UUFDOUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN0QixDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNsRSxNQUFNLEtBQUssR0FBUTtnQkFDakIsWUFBWSxFQUFFO29CQUNaLFFBQVE7b0JBQ1IsU0FBUztpQkFDVjthQUNGLENBQUM7WUFFRixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2hCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDcEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFO29CQUN2RSxJQUFJLEVBQUUsSUFBSTtvQkFDVixTQUFTLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtpQkFDbEMsQ0FBQyxDQUFDO2dCQUNILElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO29CQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxFQUFFO3dCQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMzQixDQUFDLENBQUM7b0JBQ0YsYUFBYSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2lCQUNoRDtnQkFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUM1QixNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNsRCxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7YUFDbkM7WUFDRCxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVksQ0FBQyxLQUEwQjtRQUNyQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQWMsQ0FBQztZQUM5RCxVQUFVLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BELFVBQVUsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckQ7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0I7UUFDZCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCx3QkFBd0IsQ0FBQyxRQUFnQixFQUFFLFNBQWlCO1FBQzFELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE9BQU8sQ0FBQyxRQUFnQixFQUFFLFNBQWlCO1FBQ3pDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzdELENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLFFBQWdCLEVBQUUsU0FBaUI7UUFDakQsUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDaEYsU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDbkYsT0FBTyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBSztRQUM3QixPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQztJQUMvQyxDQUFDOzttSEFsTFUsc0JBQXNCO3VHQUF0QixzQkFBc0IseUtBQ3RCLFlBQVkscUVDcEN6Qix5ZkFxQkE7MkZEY2Esc0JBQXNCO2tCQUpsQyxTQUFTOytCQUNFLG9CQUFvQjs4SEFLOUIsT0FBTztzQkFETixTQUFTO3VCQUFDLFlBQVk7Z0JBRWQsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgTCBmcm9tICdsZWFmbGV0JztcbmltcG9ydCB7XG4gIE1hcENvbXBvbmVudCxcbiAgTWFwQ29uZmlnLFxuICBNYXBTZXJ2aWNlLFxuICBQb3NpdGlvbk1hbmFnZWRPYmplY3QsXG4gIGRlZmF1bHRNYXBDb25maWcsXG4gIGdldEM4eU1hcmtlclxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL21hcCc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0b2dnbGVGdWxsc2NyZWVuIH0gZnJvbSAnLi4vZnVsbHNjcmVlbi51dGlsJztcbmltcG9ydCB7IGlzTnVtYmVyIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuLy8gRMO8c3NlbGRvcmZcbmV4cG9ydCBjb25zdCBkZWZhdWx0TWFwTG9jYXRpb24gPSB7XG4gIGxhdDogZGVmYXVsdE1hcENvbmZpZy5jZW50ZXJbMF0sXG4gIGxuZzogZGVmYXVsdE1hcENvbmZpZy5jZW50ZXJbMV1cbn0gYXMgY29uc3Q7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hc3NldC1sb2NhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hc3NldC1sb2NhdGlvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQXNzZXRMb2NhdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKE1hcENvbXBvbmVudClcbiAgbWFwVmlldzogTWFwQ29tcG9uZW50O1xuICBASW5wdXQoKSBpc0VkaXQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGxvY2F0aW9uTU86IElNYW5hZ2VkT2JqZWN0O1xuICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XG4gIGNvbmZpZzogTWFwQ29uZmlnID0ge1xuICAgIGNlbnRlcjogZGVmYXVsdE1hcENvbmZpZy5jZW50ZXIsXG4gICAgem9vbUxldmVsOiAxMyxcbiAgICBjb2xvcjogJ2dyZWVuJyxcbiAgICBpY29uOiAnYzh5LWljb24tbG9jYXRpb24nXG4gIH07XG4gIGFzc2V0czogUG9zaXRpb25NYW5hZ2VkT2JqZWN0O1xuICBpc01hcmtlckRyYWdnYWJsZSA9IGZhbHNlO1xuICBpc01hcENsaWNrYWJsZSA9IGZhbHNlO1xuICBkcmFnTGlzdGVuZXI6IEwuTGVhZmxldEV2ZW50SGFuZGxlckZuO1xuICBmb3JtU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHNob3dNYXAgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGVyOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIG1hcFNlcnZpY2U6IE1hcFNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGxlYWZsZXQgPSBhd2FpdCB0aGlzLm1hcFNlcnZpY2UuZ2V0TGVhZmxldCgpO1xuICAgIGlmIChsZWFmbGV0KSB7XG4gICAgICBjb25zdCB7IGNvbnRleHREYXRhIH0gPVxuICAgICAgICAhdGhpcy5hY3RpdmF0ZWRSb3V0ZXIucGFyZW50IHx8IHRoaXMuYWN0aXZhdGVkUm91dGVyLnNuYXBzaG90LmRhdGEuY29udGV4dFxuICAgICAgICAgID8gdGhpcy5hY3RpdmF0ZWRSb3V0ZXIuc25hcHNob3QuZGF0YVxuICAgICAgICAgIDogdGhpcy5hY3RpdmF0ZWRSb3V0ZXIucGFyZW50LnNuYXBzaG90LmRhdGE7XG4gICAgICB0aGlzLmFzc2V0cyA9IGNvbnRleHREYXRhID8gY29udGV4dERhdGEgOiB0aGlzLmxvY2F0aW9uTU87XG4gICAgICBpZiAodGhpcy5hc3NldHMuYzh5X1Bvc2l0aW9uLmxhdCAmJiB0aGlzLmFzc2V0cy5jOHlfUG9zaXRpb24ubG5nKVxuICAgICAgICB0aGlzLmNvbmZpZy5jZW50ZXIgPSBbdGhpcy5hc3NldHMuYzh5X1Bvc2l0aW9uLmxhdCwgdGhpcy5hc3NldHMuYzh5X1Bvc2l0aW9uLmxuZ107XG4gICAgICB0aGlzLnNldFZpZXcodGhpcy5hc3NldHMuYzh5X1Bvc2l0aW9uLmxhdCwgdGhpcy5hc3NldHMuYzh5X1Bvc2l0aW9uLmxuZyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmlzRWRpdD8uY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLnNob3dNYXAgPSB0cnVlO1xuICAgICAgdGhpcy5pc01hcmtlckRyYWdnYWJsZSA9IHRydWU7XG4gICAgICB0aGlzLmlzTWFwQ2xpY2thYmxlID0gdHJ1ZTtcbiAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHRoaXMubWFwVmlldz8ubWFwLmludmFsaWRhdGVTaXplKCkpO1xuICAgICAgdGhpcy5tYXBWaWV3Py5tYXAub24oJ2NsaWNrJywgZXZlbnQgPT4ge1xuICAgICAgICB0aGlzLm9uQ2xpY2tPZk1hcChldmVudCk7XG4gICAgICAgIHRoaXMudXBkYXRlTWFya2VyKGV2ZW50LmxhdGxuZy5sYXQsIGV2ZW50LmxhdGxuZy5sbmcpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmZvcm1TdWJzY3JpcHRpb24gPSB0aGlzLmZvcm0/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZU1hcmtlcih2YWx1ZS5jOHlfUG9zaXRpb24ubGF0LCB2YWx1ZS5jOHlfUG9zaXRpb24ubG5nKTtcbiAgICAgICAgdGhpcy5zZXRWaWV3KHZhbHVlLmM4eV9Qb3NpdGlvbi5sYXQsIHZhbHVlLmM4eV9Qb3NpdGlvbi5sbmcpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghY2hhbmdlcy5pc0VkaXQ/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgY29uc3QgaXNBbnlWYWx1ZU1pc3NpbmcgPSB0aGlzLmNoZWNrSWZBbnlWYWx1ZUlzTWlzc2luZyhcbiAgICAgICAgdGhpcy5sb2NhdGlvbk1PPy5jOHlfUG9zaXRpb24ubGF0LFxuICAgICAgICB0aGlzLmxvY2F0aW9uTU8/LmM4eV9Qb3NpdGlvbi5sbmdcbiAgICAgICk7XG4gICAgICBpZiAoaXNBbnlWYWx1ZU1pc3NpbmcpIHtcbiAgICAgICAgdGhpcy5zaG93TWFwID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuaXNNYXJrZXJEcmFnZ2FibGUgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNNYXBDbGlja2FibGUgPSBmYWxzZTtcbiAgICAgIHRoaXMudXBkYXRlTWFya2VyKHRoaXMubG9jYXRpb25NTz8uYzh5X1Bvc2l0aW9uLmxhdCwgdGhpcy5sb2NhdGlvbk1PPy5jOHlfUG9zaXRpb24ubG5nKTtcbiAgICAgIHRoaXMuc2V0Vmlldyh0aGlzLmxvY2F0aW9uTU8/LmM4eV9Qb3NpdGlvbi5sYXQsIHRoaXMubG9jYXRpb25NTz8uYzh5X1Bvc2l0aW9uLmxuZyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5mb3JtU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIGlmICh0aGlzLm1hcFZpZXc/Lm1hcmtlcnMgJiYgdGhpcy5kcmFnTGlzdGVuZXIpIHtcbiAgICAgIHRoaXMubWFwVmlldz8ubWFya2Vycy5mb3JFYWNoKG1hcmtlciA9PiB7XG4gICAgICAgIG1hcmtlci5vZmYoJ2RyYWcnLCB0aGlzLmRyYWdMaXN0ZW5lcik7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBjb21tYW5kIGlzIHVzZWQgdG8gcHJlZmlsbCB0aGUgbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZSB2YWx1ZXMgaW4gdGhlIGZvcm0gd2hlbiB0aGUgbWFya2VyIGlzIGRyYWdnZWQuXG4gICAqL1xuICBvbk1hcmtlckRyYWcoZXZlbnQ6IEwuTGVhZmxldEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZm9ybSkge1xuICAgICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMuZm9ybS5nZXQoJ2M4eV9Qb3NpdGlvbicpIGFzIEZvcm1BcnJheTtcbiAgICAgIHByb3BlcnRpZXM/LmdldCgnbGF0JykucGF0Y2hWYWx1ZShldmVudC50YXJnZXQuX2xhdGxuZy5sYXQpO1xuICAgICAgcHJvcGVydGllcz8uZ2V0KCdsbmcnKS5wYXRjaFZhbHVlKGV2ZW50LnRhcmdldC5fbGF0bG5nLmxuZyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBtYXJrZXIgd2l0aCB0aGUgc3BlY2lmaWVkIHZhbHVlcyBhbmQgaWYgYW55IG9uZSBvZiB0aGUgdmFsdWVzIGlzIG5vdCBhdmFpbGJsZSwgc2V0c1xuICAgKiBzaG93V2FybmluZyB0byB0cnVlLlxuICAgKiBAcGFyYW0gbGF0aXR1ZGUgLSBUaGUgbGF0aXR1ZGUgb2YgdGhlIG1hcmtlclxuICAgKiBAcGFyYW0gbG9uZ2l0dWRlIC0gVGhlIGxvbmdpdHVkZSBvZiB0aGUgbWFya2VyXG4gICAqL1xuICB1cGRhdGVNYXJrZXIobGF0aXR1ZGU6IG51bWJlciwgbG9uZ2l0dWRlOiBudW1iZXIpIHtcbiAgICBjb25zdCBpc0FueVZhbHVlTWlzc2luZyA9IHRoaXMuY2hlY2tJZkFueVZhbHVlSXNNaXNzaW5nKGxhdGl0dWRlLCBsb25naXR1ZGUpO1xuICAgIGlmICghaXNBbnlWYWx1ZU1pc3NpbmcpIHtcbiAgICAgIFtsYXRpdHVkZSwgbG9uZ2l0dWRlXSA9IHRoaXMuc2V0TGF0TG5nVmFsdWVzKGxhdGl0dWRlLCBsb25naXR1ZGUpO1xuICAgICAgY29uc3QgYXNzZXQ6IGFueSA9IHtcbiAgICAgICAgYzh5X1Bvc2l0aW9uOiB7XG4gICAgICAgICAgbGF0aXR1ZGUsXG4gICAgICAgICAgbG9uZ2l0dWRlXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLm1hcFZpZXcpIHtcbiAgICAgICAgY29uc3QgaWNvbiA9IHRoaXMubWFwVmlldy5nZXRBc3NldEljb24odGhpcy5hc3NldHMpO1xuICAgICAgICBjb25zdCBsZWFmbGV0TWFya2VyID0gdGhpcy5tYXBWaWV3LmxlYWZsZXQubWFya2VyKFtsYXRpdHVkZSwgbG9uZ2l0dWRlXSwge1xuICAgICAgICAgIGljb246IGljb24sXG4gICAgICAgICAgZHJhZ2dhYmxlOiB0aGlzLmlzTWFya2VyRHJhZ2dhYmxlXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodGhpcy5pc01hcmtlckRyYWdnYWJsZSkge1xuICAgICAgICAgIHRoaXMuZHJhZ0xpc3RlbmVyID0gZXZlbnQgPT4ge1xuICAgICAgICAgICAgdGhpcy5vbk1hcmtlckRyYWcoZXZlbnQpO1xuICAgICAgICAgIH07XG4gICAgICAgICAgbGVhZmxldE1hcmtlci5vbignZHJhZ2VuZCcsIHRoaXMuZHJhZ0xpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1hcFZpZXcuY2xlYXJNYXJrZXJzKCk7XG4gICAgICAgIGNvbnN0IG1hcmtlciA9IGdldEM4eU1hcmtlcihsZWFmbGV0TWFya2VyLCBhc3NldCk7XG4gICAgICAgIHRoaXMubWFwVmlldy5hZGRNYXJrZXJUb01hcChtYXJrZXIpO1xuICAgICAgICB0aGlzLnNldFZpZXcobGF0aXR1ZGUsIGxvbmdpdHVkZSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubWFwVmlldy5jbGVhck1hcmtlcnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGNvbW1hbmQgaXMgdXNlZCB0byBwcmVmaWxsIHRoZSBsYXRpdHVkZSBhbmQgbG9uZ2l0dWRlIHZhbHVlcyBpbiB0aGUgZm9ybSBvbiBjbGljayBvZiBtYXAuXG4gICAqL1xuICBvbkNsaWNrT2ZNYXAoZXZlbnQ6IEwuTGVhZmxldE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5mb3JtKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5mb3JtLmdldCgnYzh5X1Bvc2l0aW9uJykgYXMgRm9ybUFycmF5O1xuICAgICAgcHJvcGVydGllcz8uZ2V0KCdsYXQnKS5wYXRjaFZhbHVlKGV2ZW50LmxhdGxuZy5sYXQpO1xuICAgICAgcHJvcGVydGllcz8uZ2V0KCdsbmcnKS5wYXRjaFZhbHVlKGV2ZW50LmxhdGxuZy5sbmcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGVuYWJsZSBmdWxsIHNjcmVlbiBvZiB0aGUgbWFwLlxuICAgKi9cbiAgZW5hYmxlRnVsbHNjcmVlbigpIHtcbiAgICB0b2dnbGVGdWxsc2NyZWVuKHRoaXMubWFwVmlldy5tYXBFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhbnkgb25lIG9mIHRoZSB2YWx1ZXMgaS5lLiwgbGF0aXR1ZGUvbG9uZ2l0dWRlIGlzIHVuZGVmaW5lZCBvciBudWxsLlxuICAgKiBAcGFyYW0gbGF0aXR1ZGUgTGF0aXR1ZGUgdmFsdWUgb2YgdGhlIHBvc2l0aW9uXG4gICAqIEBwYXJhbSBsb25naXR1ZGUgTG9uZ2l0dWRlIHZhbHVlIG9mIHRoZSBwb3NpdGlvblxuICAgKiBAcmV0dXJucyByZXR1cm5zIHRydWUgaWYgYW55IG9uZSBvZiB0aGUgdmFsdWVzIGFyZSBib3RoIHRoZSB2YWx1ZXMgYXJlIG1pc3NpbmcgZWxzZSBpdCByZXR1cm5zIGZhbHNlLlxuICAgKi9cbiAgY2hlY2tJZkFueVZhbHVlSXNNaXNzaW5nKGxhdGl0dWRlOiBudW1iZXIsIGxvbmdpdHVkZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNOdWxsT3JVbmRlZmluZWQobGF0aXR1ZGUpIHx8IHRoaXMuaXNOdWxsT3JVbmRlZmluZWQobG9uZ2l0dWRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2aWV3IG9mIHRoZSBtYXAgYmFzZWQgb24gdGhlIHBvc2l0aW9uIG9mIG1hcmtlci5cbiAgICogQHBhcmFtIGxhdGl0dWRlIC0gTGF0aXR1ZGUgb2YgdGhlIG1hcmtlclxuICAgKiBAcGFyYW0gbG9uZ2l0dWRlIExvbmdpdHVkZSBvZiB0aGUgbWFya2VyXG4gICAqL1xuICBzZXRWaWV3KGxhdGl0dWRlOiBudW1iZXIsIGxvbmdpdHVkZTogbnVtYmVyKSB7XG4gICAgaWYgKGlzTnVtYmVyKGxhdGl0dWRlKSAmJiBpc051bWJlcihsb25naXR1ZGUpICYmIHRoaXMubWFwVmlldykge1xuICAgICAgW2xhdGl0dWRlLCBsb25naXR1ZGVdID0gdGhpcy5zZXRMYXRMbmdWYWx1ZXMobGF0aXR1ZGUsIGxvbmdpdHVkZSk7XG4gICAgICB0aGlzLmNvbmZpZy5jZW50ZXIgPSBbbGF0aXR1ZGUsIGxvbmdpdHVkZV07XG4gICAgICB0aGlzLm1hcFZpZXcuY2VudGVyKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0TGF0TG5nVmFsdWVzKGxhdGl0dWRlOiBudW1iZXIsIGxvbmdpdHVkZTogbnVtYmVyKTogW251bWJlciwgbnVtYmVyXSB7XG4gICAgbGF0aXR1ZGUgPSB0aGlzLmlzTnVsbE9yVW5kZWZpbmVkKGxhdGl0dWRlKSA/IGRlZmF1bHRNYXBMb2NhdGlvbi5sYXQgOiBsYXRpdHVkZTtcbiAgICBsb25naXR1ZGUgPSB0aGlzLmlzTnVsbE9yVW5kZWZpbmVkKGxvbmdpdHVkZSkgPyBkZWZhdWx0TWFwTG9jYXRpb24ubG5nIDogbG9uZ2l0dWRlO1xuICAgIHJldHVybiBbbGF0aXR1ZGUsIGxvbmdpdHVkZV07XG4gIH1cblxuICBwcml2YXRlIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XG4gIH1cbn1cbiIsIjxkaXYgW2hpZGRlbl09XCIhc2hvd01hcFwiPlxuICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWxpbmsgcHVsbC1yaWdodFwiXG4gICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogMTJweFwiXG4gICAgICB0aXRsZT1cIkZ1bGwgc2NyZWVuXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgZGF0YS1jeT1cImFzc2V0LWxvY2F0aW9uLWZ1bGwtc2NyZWVuXCJcbiAgICAgIChjbGljayk9XCJlbmFibGVGdWxsc2NyZWVuKClcIlxuICAgID5cbiAgICA8aSBjOHlJY29uPVwiZXhwYW5kXCI+PC9pPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDQwMHB4XCI+XG4gICAgPGM4eS1tYXBcbiAgICAgICNtYXBcbiAgICAgIFthc3NldHNdPVwiYXNzZXRzXCJcbiAgICAgIFtjb25maWddPVwiY29uZmlnXCJcbiAgICA+PC9jOHktbWFwPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -11,13 +11,13 @@ import { filter, first, mergeMap, takeUntil, tap } from 'rxjs/operators';
11
11
  import * as i5 from '@angular/router';
12
12
  import { ActivationEnd } from '@angular/router';
13
13
  import * as i2 from '@c8y/ngx-components/api';
14
+ import * as i6 from '@ngx-translate/core';
14
15
  import * as i5$2 from 'ngx-bootstrap/collapse';
15
16
  import { CollapseModule } from 'ngx-bootstrap/collapse';
16
17
  import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
17
- import * as i1$1 from '@ngx-translate/core';
18
18
  import { isArray, isNumber, isString, isObject } from 'lodash';
19
19
  import * as i5$1 from '@angular/common';
20
- import * as i6 from '@angular/forms';
20
+ import * as i6$1 from '@angular/forms';
21
21
  import { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule } from '@angular/forms';
22
22
 
23
23
  var Action;
@@ -118,7 +118,7 @@ class AssetNode extends NavigatorNode {
118
118
  this.translateLabel = true;
119
119
  }
120
120
  else {
121
- this.label = this.mo.name || '--';
121
+ this.label = this.service.label(this.mo);
122
122
  this.translateLabel = false;
123
123
  }
124
124
  }
@@ -448,7 +448,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
448
448
  }], ctorParameters: function () { return [{ type: i3.GroupService }]; } });
449
449
 
450
450
  class AssetNodeService {
451
- constructor(inventory, apiService, modal, alert, breadcrumbService, user, appState, optionsService, moduleConfig, deviceGroupService, router) {
451
+ constructor(inventory, apiService, modal, alert, breadcrumbService, user, appState, optionsService, moduleConfig, deviceGroupService, router, translateService) {
452
452
  this.inventory = inventory;
453
453
  this.apiService = apiService;
454
454
  this.modal = modal;
@@ -460,6 +460,7 @@ class AssetNodeService {
460
460
  this.moduleConfig = moduleConfig;
461
461
  this.deviceGroupService = deviceGroupService;
462
462
  this.router = router;
463
+ this.translateService = translateService;
463
464
  this.firstUrl = true;
464
465
  this.PAGE_SIZE = 20;
465
466
  this.moduleConfig = Object.assign({ rootNodePriority: 2000 }, (moduleConfig || {}));
@@ -518,6 +519,12 @@ class AssetNodeService {
518
519
  });
519
520
  }
520
521
  }
522
+ label(mo) {
523
+ return (mo.name ||
524
+ (this.isDevice(mo) &&
525
+ this.translateService.instant(gettext('Device {{id}}'), { id: mo.id })) ||
526
+ '--');
527
+ }
521
528
  icon(mo, open) {
522
529
  return this.deviceGroupService.icon(mo, open);
523
530
  }
@@ -749,7 +756,7 @@ class AssetNodeService {
749
756
  return combinedQuery;
750
757
  }
751
758
  }
752
- AssetNodeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AssetNodeService, deps: [{ token: i1.InventoryService }, { token: i2.ApiService }, { token: i3.ModalService }, { token: i3.AlertService }, { token: i3.BreadcrumbService }, { token: i1.UserService }, { token: i3.AppStateService }, { token: i3.OptionsService }, { token: ASSET_NAVIGATOR_CONFIG, optional: true }, { token: DeviceGroupService }, { token: i5.Router }], target: i0.ɵɵFactoryTarget.Injectable });
759
+ AssetNodeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AssetNodeService, deps: [{ token: i1.InventoryService }, { token: i2.ApiService }, { token: i3.ModalService }, { token: i3.AlertService }, { token: i3.BreadcrumbService }, { token: i1.UserService }, { token: i3.AppStateService }, { token: i3.OptionsService }, { token: ASSET_NAVIGATOR_CONFIG, optional: true }, { token: DeviceGroupService }, { token: i5.Router }, { token: i6.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
753
760
  AssetNodeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AssetNodeService, providedIn: 'root' });
754
761
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AssetNodeService, decorators: [{
755
762
  type: Injectable,
@@ -762,7 +769,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
762
769
  }, {
763
770
  type: Inject,
764
771
  args: [ASSET_NAVIGATOR_CONFIG]
765
- }] }, { type: DeviceGroupService }, { type: i5.Router }];
772
+ }] }, { type: DeviceGroupService }, { type: i5.Router }, { type: i6.TranslateService }];
766
773
  } });
767
774
 
768
775
  class AssetNodeFactory {
@@ -1113,12 +1120,12 @@ class AssetSelectorNodeComponent {
1113
1120
  this.cd.markForCheck();
1114
1121
  }
1115
1122
  }
1116
- AssetSelectorNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AssetSelectorNodeComponent, deps: [{ token: i1$1.TranslateService }, { token: i0.ChangeDetectorRef }, { token: AssetSelectorService }], target: i0.ɵɵFactoryTarget.Component });
1123
+ AssetSelectorNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AssetSelectorNodeComponent, deps: [{ token: i6.TranslateService }, { token: i0.ChangeDetectorRef }, { token: AssetSelectorService }], target: i0.ɵɵFactoryTarget.Component });
1117
1124
  AssetSelectorNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: AssetSelectorNodeComponent, selector: "c8y-asset-selector-node", inputs: { node: "node", rootNode: "rootNode", preselected: "preselected", showPath: "showPath", multi: "multi", view: "view", index: "index", active: "active", selectedItems: "selectedItems", handleNextMillerViewColumn: "handleNextMillerViewColumn" }, outputs: { isLoadingState: "isLoadingState", onSelect: "onSelect", onDeselect: "onDeselect" }, ngImport: i0, template: "<!-- Hierarchy tree -->\n<div\n class=\"c8y-asset-selector__item\"\n [ngStyle]=\"{\n 'margin-left': level > 1 ? 16 + 'px' : '0'\n }\"\n *ngIf=\"view === 'tree'\"\n [attr.role]=\"view === 'tree' ? 'tree' : 'list'\"\n [ngClass]=\"{\n 'c8y-asset-selector__item--more': node?.icon === 'plus',\n 'c8y-asset-selector__item--start': level === 0\n }\"\n>\n <div\n class=\"c8y-asset-selector__node\"\n title=\"{{ breadcrumb | translate }}\"\n *ngIf=\"node && !node.root && !node.hidden\"\n [attr.role]=\"view === 'tree' ? 'treeitem' : 'listitem'\"\n [ngClass]=\"{ 'c8y-asset-selector__node--open': node?.open }\"\n >\n <div\n class=\"d-flex a-i-center p-t-4 p-b-4 m-r-8\"\n *ngIf=\"node.toString() !== 'LoadMoreNode'\"\n >\n <label [ngClass]=\"{ 'c8y-checkbox': multi, 'c8y-radio': !multi }\">\n <input\n id=\"nodeLabel\"\n [type]=\"multi ? 'checkbox' : 'radio'\"\n (change)=\"selected(node)\"\n [checked]=\"isSelected()\"\n [disabled]=\"!node.groupsSelectable && node.isGroup()\"\n />\n <span></span>\n <span\n class=\"sr-only\"\n for=\"nodeLabel\"\n translate\n >\n Node label\n </span>\n </label>\n </div>\n\n <!-- group button -->\n <button\n class=\"c8y-asset-selector__btn text-truncate\"\n [attr.aria-expanded]=\"!node.open\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n (click)=\"click()\"\n >\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Smart group' | translate\"\n *ngIf=\"node.icon === 'c8y-group-smart'\"\n ></i>\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Group' | translate\"\n *ngIf=\"node.icon !== 'c8y-group-smart'\"\n ></i>\n <span title=\"{{ breadcrumb }}\">\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n <!-- use just for search results to display the path -->\n <p\n class=\"text-truncate\"\n *ngIf=\"showPath\"\n >\n <small\n class=\"text-muted\"\n title=\"{{ breadcrumb }}\"\n >\n <em>{{ breadcrumb }}</em>\n </small>\n </p>\n <!-- up to here -->\n </span>\n </button>\n <!-- not a group button -->\n <button\n class=\"flex-grow\"\n title=\"{{ breadcrumb }}\"\n type=\"button\"\n *ngIf=\"!node.isGroup() && !node.hasChildDevices()\"\n [ngClass]=\"{\n 'btn btn-default btn-sm m-b-8 d-flex j-c-center': node.icon === 'plus',\n 'c8y-asset-selector__btn text-truncate': node.icon != 'plus'\n }\"\n (click)=\"selected(node)\"\n >\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Smart group' | translate\"\n *ngIf=\"node.icon === 'c8y-group-smart'\"\n ></i>\n <i\n class=\"c8y-icon m-r-4\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Group' | translate\"\n *ngIf=\"node.icon !== 'c8y-group-smart'\"\n [ngClass]=\"{ 'c8y-icon-duocolor text-16 ': node.icon != 'plus' }\"\n ></i>\n <span title=\"{{ breadcrumb }}\">\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n <!-- use just for search results to display the path -->\n <p\n class=\"text-truncate text-muted small\"\n *ngIf=\"showPath\"\n >\n <em>{{ breadcrumb }}</em>\n </p>\n <!-- up to here -->\n </span>\n </button>\n <!-- expand button (only for groups) -->\n <div *ngIf=\"node.isGroup() || node.hasChildDevices()\">\n <button\n class=\"collapse-btn btn\"\n [title]=\"expandTitle\"\n [attr.aria-expanded]=\"node.open\"\n (click)=\"click()\"\n >\n <i c8yIcon=\"angle-down\"></i>\n </button>\n </div>\n </div>\n <div\n class=\"collapse\"\n *ngIf=\"node.countChildren()\"\n [collapse]=\"!node.open\"\n [isAnimated]=\"true\"\n [attr.role]=\"'group'\"\n >\n <c8y-asset-selector-node\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n [preselected]=\"preselected || []\"\n [multi]=\"multi\"\n [active]=\"active\"\n [attr.role]=\"view === 'tree' ? 'treeitem' : 'listitem'\"\n (onSelect)=\"onSelect.emit($event)\"\n (onDeselect)=\"onDeselect.emit($event)\"\n ></c8y-asset-selector-node>\n </div>\n</div>\n\n<!-- Miller columns -->\n<div *ngIf=\"view === 'miller'\">\n <div\n class=\"miller-column__item bg-inherit\"\n title=\"{{ breadcrumb | translate }}\"\n *ngIf=\"node && !node.root && !node.hidden && node !== rootNode\"\n [ngClass]=\"{\n active: isActive(),\n 'miller-column__item--more': node.toString() === 'LoadMoreNode'\n }\"\n >\n <div\n class=\"m-l-4 m-r-4 miller-column__item__checkbox\"\n *ngIf=\"node.toString() !== 'LoadMoreNode'\"\n >\n <label [ngClass]=\"{ 'c8y-radio': !multi, 'c8y-checkbox': multi }\">\n <input\n id=\"nodeLabel2\"\n [type]=\"multi ? 'checkbox' : 'radio'\"\n (change)=\"selected(node)\"\n [checked]=\"isGroupSelected()\"\n [disabled]=\"!node.groupsSelectable && node.isGroup()\"\n />\n <span></span>\n <span\n class=\"sr-only\"\n for=\"nodeLabel2\"\n translate\n >\n Node label\n </span>\n </label>\n </div>\n\n <button\n title=\"{{ breadcrumb | translate }}\"\n type=\"button\"\n [ngClass]=\"{\n 'btn btn-default btn-sm d-flex flex-grow j-c-center m-l-16 m-r-16 m-b-8':\n node.toString() === 'LoadMoreNode',\n 'miller-column__item__btn': node.toString() !== 'LoadMoreNode',\n 'btn-pending': node.loading && node.toString() === 'LoadMoreNode'\n }\"\n (click)=\"millerViewClick(node)\"\n >\n <i\n class=\"c8y-icon m-r-4\"\n [c8yIcon]=\"node.icon\"\n [ngClass]=\"{ 'c8y-icon-duocolor text-16': node.toString() !== 'LoadMoreNode' }\"\n ></i>\n <div class=\"text-left text-truncate\">\n <p\n class=\"text-truncate\"\n title=\"{{ node.translateLabel ? (node.label | translate) : node.label }}\"\n >\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n </p>\n <!-- use just for search results to display the path -->\n <small\n class=\"text-muted text-truncate\"\n title=\"{{ breadcrumb }}\"\n *ngIf=\"showPath\"\n >\n <em>{{ breadcrumb }}</em>\n </small>\n <!-- up to here -->\n </div>\n <span\n class=\"p-l-4 m-l-auto\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n >\n <i c8yIcon=\"angle-right\"></i>\n </span>\n </button>\n </div>\n\n <div\n role=\"list\"\n *ngIf=\"node\"\n [ngClass]=\"{ hidden: node !== rootNode }\"\n >\n <c8y-asset-selector-node\n role=\"listitem\"\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n [rootNode]=\"rootNode\"\n [preselected]=\"preselected || []\"\n [multi]=\"multi\"\n [view]=\"view\"\n [index]=\"index\"\n [selectedItems]=\"selectedItems\"\n [active]=\"active\"\n [handleNextMillerViewColumn]=\"handleNextMillerViewColumn\"\n (onSelect)=\"onSelect.emit($event)\"\n (onDeselect)=\"onDeselect.emit($event)\"\n ></c8y-asset-selector-node>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5$2.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "component", type: AssetSelectorNodeComponent, selector: "c8y-asset-selector-node", inputs: ["node", "rootNode", "preselected", "showPath", "multi", "view", "index", "active", "selectedItems", "handleNextMillerViewColumn"], outputs: ["isLoadingState", "onSelect", "onDeselect"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] });
1118
1125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AssetSelectorNodeComponent, decorators: [{
1119
1126
  type: Component,
1120
1127
  args: [{ selector: 'c8y-asset-selector-node', template: "<!-- Hierarchy tree -->\n<div\n class=\"c8y-asset-selector__item\"\n [ngStyle]=\"{\n 'margin-left': level > 1 ? 16 + 'px' : '0'\n }\"\n *ngIf=\"view === 'tree'\"\n [attr.role]=\"view === 'tree' ? 'tree' : 'list'\"\n [ngClass]=\"{\n 'c8y-asset-selector__item--more': node?.icon === 'plus',\n 'c8y-asset-selector__item--start': level === 0\n }\"\n>\n <div\n class=\"c8y-asset-selector__node\"\n title=\"{{ breadcrumb | translate }}\"\n *ngIf=\"node && !node.root && !node.hidden\"\n [attr.role]=\"view === 'tree' ? 'treeitem' : 'listitem'\"\n [ngClass]=\"{ 'c8y-asset-selector__node--open': node?.open }\"\n >\n <div\n class=\"d-flex a-i-center p-t-4 p-b-4 m-r-8\"\n *ngIf=\"node.toString() !== 'LoadMoreNode'\"\n >\n <label [ngClass]=\"{ 'c8y-checkbox': multi, 'c8y-radio': !multi }\">\n <input\n id=\"nodeLabel\"\n [type]=\"multi ? 'checkbox' : 'radio'\"\n (change)=\"selected(node)\"\n [checked]=\"isSelected()\"\n [disabled]=\"!node.groupsSelectable && node.isGroup()\"\n />\n <span></span>\n <span\n class=\"sr-only\"\n for=\"nodeLabel\"\n translate\n >\n Node label\n </span>\n </label>\n </div>\n\n <!-- group button -->\n <button\n class=\"c8y-asset-selector__btn text-truncate\"\n [attr.aria-expanded]=\"!node.open\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n (click)=\"click()\"\n >\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Smart group' | translate\"\n *ngIf=\"node.icon === 'c8y-group-smart'\"\n ></i>\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Group' | translate\"\n *ngIf=\"node.icon !== 'c8y-group-smart'\"\n ></i>\n <span title=\"{{ breadcrumb }}\">\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n <!-- use just for search results to display the path -->\n <p\n class=\"text-truncate\"\n *ngIf=\"showPath\"\n >\n <small\n class=\"text-muted\"\n title=\"{{ breadcrumb }}\"\n >\n <em>{{ breadcrumb }}</em>\n </small>\n </p>\n <!-- up to here -->\n </span>\n </button>\n <!-- not a group button -->\n <button\n class=\"flex-grow\"\n title=\"{{ breadcrumb }}\"\n type=\"button\"\n *ngIf=\"!node.isGroup() && !node.hasChildDevices()\"\n [ngClass]=\"{\n 'btn btn-default btn-sm m-b-8 d-flex j-c-center': node.icon === 'plus',\n 'c8y-asset-selector__btn text-truncate': node.icon != 'plus'\n }\"\n (click)=\"selected(node)\"\n >\n <i\n class=\"c8y-icon c8y-icon-duocolor m-r-4 text-16\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Smart group' | translate\"\n *ngIf=\"node.icon === 'c8y-group-smart'\"\n ></i>\n <i\n class=\"c8y-icon m-r-4\"\n [c8yIcon]=\"node.icon\"\n [title]=\"'Group' | translate\"\n *ngIf=\"node.icon !== 'c8y-group-smart'\"\n [ngClass]=\"{ 'c8y-icon-duocolor text-16 ': node.icon != 'plus' }\"\n ></i>\n <span title=\"{{ breadcrumb }}\">\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n <!-- use just for search results to display the path -->\n <p\n class=\"text-truncate text-muted small\"\n *ngIf=\"showPath\"\n >\n <em>{{ breadcrumb }}</em>\n </p>\n <!-- up to here -->\n </span>\n </button>\n <!-- expand button (only for groups) -->\n <div *ngIf=\"node.isGroup() || node.hasChildDevices()\">\n <button\n class=\"collapse-btn btn\"\n [title]=\"expandTitle\"\n [attr.aria-expanded]=\"node.open\"\n (click)=\"click()\"\n >\n <i c8yIcon=\"angle-down\"></i>\n </button>\n </div>\n </div>\n <div\n class=\"collapse\"\n *ngIf=\"node.countChildren()\"\n [collapse]=\"!node.open\"\n [isAnimated]=\"true\"\n [attr.role]=\"'group'\"\n >\n <c8y-asset-selector-node\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n [preselected]=\"preselected || []\"\n [multi]=\"multi\"\n [active]=\"active\"\n [attr.role]=\"view === 'tree' ? 'treeitem' : 'listitem'\"\n (onSelect)=\"onSelect.emit($event)\"\n (onDeselect)=\"onDeselect.emit($event)\"\n ></c8y-asset-selector-node>\n </div>\n</div>\n\n<!-- Miller columns -->\n<div *ngIf=\"view === 'miller'\">\n <div\n class=\"miller-column__item bg-inherit\"\n title=\"{{ breadcrumb | translate }}\"\n *ngIf=\"node && !node.root && !node.hidden && node !== rootNode\"\n [ngClass]=\"{\n active: isActive(),\n 'miller-column__item--more': node.toString() === 'LoadMoreNode'\n }\"\n >\n <div\n class=\"m-l-4 m-r-4 miller-column__item__checkbox\"\n *ngIf=\"node.toString() !== 'LoadMoreNode'\"\n >\n <label [ngClass]=\"{ 'c8y-radio': !multi, 'c8y-checkbox': multi }\">\n <input\n id=\"nodeLabel2\"\n [type]=\"multi ? 'checkbox' : 'radio'\"\n (change)=\"selected(node)\"\n [checked]=\"isGroupSelected()\"\n [disabled]=\"!node.groupsSelectable && node.isGroup()\"\n />\n <span></span>\n <span\n class=\"sr-only\"\n for=\"nodeLabel2\"\n translate\n >\n Node label\n </span>\n </label>\n </div>\n\n <button\n title=\"{{ breadcrumb | translate }}\"\n type=\"button\"\n [ngClass]=\"{\n 'btn btn-default btn-sm d-flex flex-grow j-c-center m-l-16 m-r-16 m-b-8':\n node.toString() === 'LoadMoreNode',\n 'miller-column__item__btn': node.toString() !== 'LoadMoreNode',\n 'btn-pending': node.loading && node.toString() === 'LoadMoreNode'\n }\"\n (click)=\"millerViewClick(node)\"\n >\n <i\n class=\"c8y-icon m-r-4\"\n [c8yIcon]=\"node.icon\"\n [ngClass]=\"{ 'c8y-icon-duocolor text-16': node.toString() !== 'LoadMoreNode' }\"\n ></i>\n <div class=\"text-left text-truncate\">\n <p\n class=\"text-truncate\"\n title=\"{{ node.translateLabel ? (node.label | translate) : node.label }}\"\n >\n {{ node.translateLabel ? (node.label | translate) : node.label }}\n </p>\n <!-- use just for search results to display the path -->\n <small\n class=\"text-muted text-truncate\"\n title=\"{{ breadcrumb }}\"\n *ngIf=\"showPath\"\n >\n <em>{{ breadcrumb }}</em>\n </small>\n <!-- up to here -->\n </div>\n <span\n class=\"p-l-4 m-l-auto\"\n *ngIf=\"node.isGroup() || node.hasChildDevices()\"\n >\n <i c8yIcon=\"angle-right\"></i>\n </span>\n </button>\n </div>\n\n <div\n role=\"list\"\n *ngIf=\"node\"\n [ngClass]=\"{ hidden: node !== rootNode }\"\n >\n <c8y-asset-selector-node\n role=\"listitem\"\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n [rootNode]=\"rootNode\"\n [preselected]=\"preselected || []\"\n [multi]=\"multi\"\n [view]=\"view\"\n [index]=\"index\"\n [selectedItems]=\"selectedItems\"\n [active]=\"active\"\n [handleNextMillerViewColumn]=\"handleNextMillerViewColumn\"\n (onSelect)=\"onSelect.emit($event)\"\n (onDeselect)=\"onDeselect.emit($event)\"\n ></c8y-asset-selector-node>\n </div>\n</div>\n" }]
1121
- }], ctorParameters: function () { return [{ type: i1$1.TranslateService }, { type: i0.ChangeDetectorRef }, { type: AssetSelectorService }]; }, propDecorators: { node: [{
1128
+ }], ctorParameters: function () { return [{ type: i6.TranslateService }, { type: i0.ChangeDetectorRef }, { type: AssetSelectorService }]; }, propDecorators: { node: [{
1122
1129
  type: Input
1123
1130
  }], rootNode: [{
1124
1131
  type: Input
@@ -1626,7 +1633,7 @@ AssetSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
1626
1633
  useExisting: forwardRef(() => AssetSelectorComponent),
1627
1634
  multi: true
1628
1635
  }
1629
- ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"bg-inherit p-t-8 p-b-8 separator-bottom\"\n [ngStyle]=\"{ 'z-index': config.singleColumn && config.search ? '30' : '20' }\"\n [ngClass]=\"{ 'p-l-16 p-absolute p-r-16': config.view === 'miller', 'sticky-top': config.multi }\"\n *ngIf=\"!selectedDevice && index === 0 && (config.search || config.singleColumn)\"\n>\n <p\n class=\"text-medium\"\n [ngClass]=\"{ 'm-b-4': config.search && root }\"\n >\n {{ config.label | translate }}\n </p>\n <c8y-search-input\n *ngIf=\"config.search && root\"\n (onClick)=\"onSearchResultClick($event)\"\n (reset)=\"onSearchResultReset($event)\"\n [mode]=\"'select'\"\n [container]=\"container\"\n [groupsOnly]=\"config.groupsOnly\"\n ></c8y-search-input>\n <div\n class=\"bg-component p-t-4 d-flex flex-wrap gap-4\"\n *ngIf=\"config.multi\"\n >\n <span\n class=\"label label-info chip\"\n *ngFor=\"let selectedItem of selected\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ selectedItem.name }}\"\n type=\"button\"\n (click)=\"deselect(selectedItem)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ selectedItem.name }}\n </span>\n </div>\n</div>\n\n<div\n class=\"p-r-16\"\n *ngIf=\"selectedDevice\"\n>\n <div class=\"d-flex p-b-4\">\n <p\n class=\"text-medium p-t-8 m-r-8\"\n *ngIf=\"selectedDevice; else multiAssets\"\n >\n {{ 'Selected asset' | translate }}\n </p>\n <ng-template #multiAssets>\n <p class=\"text-medium m-r-8\">{{ 'Selected assets' | translate }}</p>\n </ng-template>\n <button\n class=\"btn btn-default btn-xs a-s-center m-t-4 m-l-auto\"\n title=\"{{ 'Change' | translate }}\"\n type=\"button\"\n (click)=\"clearSelectedDevices()\"\n >\n {{ 'Change' | translate }}\n </button>\n </div>\n <div class=\"d-flex\">\n <i\n class=\"text-success p-l-0 p-r-8\"\n [c8yIcon]=\"'check-circle'\"\n ></i>\n <i\n class=\"m-r-4 icon-20\"\n [c8yIcon]=\"selectedDevice | getGroupIcon | async\"\n ></i>\n <span>{{ selectedDevice.name }}</span>\n </div>\n</div>\n\n<!-- miller columns header -->\n<div\n class=\"miller-column__header sticky-top bg-inherit separator-bottom\"\n [ngStyle]=\"{ top: config.search && !config.singleColumn ? '72px' : '0' }\"\n *ngIf=\"\n config.view === 'miller' &&\n ((config.showFilter && !rootNode.root) || config.columnHeaders || config.singleColumn) &&\n !selectedDevice\n \"\n [ngClass]=\"{ 'm-t-72 p-t-8': config.search, 'm-t-32': !config.search && config.singleColumn }\"\n>\n <p\n class=\"text-12 text-muted text-truncate m-b-4\"\n title=\"{{ rootNode.breadcrumb || rootNode.label | translate }}\"\n *ngIf=\"config.singleColumn && index !== 0\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"home\"\n ></i>\n {{ rootNode.breadcrumb || rootNode.label | translate }}\n </p>\n <div\n class=\"d-flex a-i-center\"\n *ngIf=\"config.columnHeaders || config.singleColumn\"\n >\n <button\n class=\"btn btn-default btn-xs m-r-8 p-t-0 p-b-0 p-l-4 p-r-4 l-h-1\"\n title=\"{{ 'Back' | translate }}\"\n type=\"button\"\n *ngIf=\"config.singleColumn && !rootNode.root && index !== 0\"\n (click)=\"back()\"\n >\n <i c8yIcon=\"angle-left\"></i>\n </button>\n <label\n class=\"c8y-radio checkbox-inline m-r-8\"\n *ngIf=\"!rootNode.root && index === 0 && (config.groupsSelectable || !rootNode.isGroup())\"\n >\n <input\n title=\"{{ 'Select group' | translate }}\"\n type=\"radio\"\n (change)=\"select(rootNode.mo)\"\n [checked]=\"isGroupSelected()\"\n />\n <span></span>\n </label>\n\n <i\n class=\"icon-20 c8y-icon-duocolor m-r-4\"\n [c8yIcon]=\"this.rootNode.mo | getGroupIcon : true : this.rootNode.icon | async\"\n *ngIf=\"config.columnHeaders && (config.singleColumn || (!rootNode.root && index === 0))\"\n ></i>\n <p\n class=\"text-truncate\"\n title=\"{{ rootNode.label | translate }}\"\n *ngIf=\"config.columnHeaders\"\n [ngClass]=\"{\n 'text-label-small': !config.singleColumn,\n 'text-medium': config.singleColumn\n }\"\n >\n {{ rootNode.label | translate }}\n </p>\n </div>\n\n <div\n *ngIf=\"!rootNode.root && config.showFilter\"\n [ngClass]=\"{ 'p-t-4': config.columnHeaders }\"\n >\n <div class=\"input-group input-group-sm input-group-search\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n [(ngModel)]=\"filterText\"\n (keyup.enter)=\"applyFilter('*' + filterText + '*')\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot p-r-8 p-l-4\"\n title=\"{{ 'Apply filter' | translate }}\"\n type=\"button\"\n (click)=\"applyFilter('*' + filterText + '*')\"\n >\n <i c8yIcon=\"filter\"></i>\n </button>\n <button\n class=\"btn btn-dot p-r-8 p-l-4\"\n title=\" {{ 'Clear filters' | translate }}\"\n type=\"button\"\n (click)=\"clearFilters()\"\n *ngIf=\"filterText.length\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n </span>\n </div>\n </div>\n</div>\n\n<c8y-asset-selector-node\n class=\"d-block bg-inherit p-relative\"\n style=\"z-index: 9\"\n *ngIf=\"rootNode && !selectedDevice\"\n [node]=\"rootNode\"\n [rootNode]=\"rootNode\"\n [preselected]=\"selected\"\n [multi]=\"config.multi\"\n [view]=\"config.view\"\n [index]=\"index\"\n [selectedItems]=\"selectedItems\"\n [active]=\"active\"\n [handleNextMillerViewColumn]=\"handleNextMillerViewColumn.bind(this)\"\n (isLoadingState)=\"onLoading($event)\"\n (onSelect)=\"onSelect($event)\"\n (onDeselect)=\"onDeselect($event)\"\n [ngClass]=\"{ 'collapse show': !rootNode.root && !rootNode.hidden && config.view !== 'miller' }\"\n></c8y-asset-selector-node>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.SearchInputComponent, selector: "c8y-search-input", inputs: ["mode", "enableCustomTemplatePlaceholder", "customPlaceholder", "externalTerm", "customDataQuery", "container", "groupsOnly"], outputs: ["filter", "search", "reset", "onClick"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AssetSelectorNodeComponent, selector: "c8y-asset-selector-node", inputs: ["node", "rootNode", "preselected", "showPath", "multi", "view", "index", "active", "selectedItems", "handleNextMillerViewColumn"], outputs: ["isLoadingState", "onSelect", "onDeselect"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.GetGroupIconPipe, name: "getGroupIcon" }] });
1636
+ ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"bg-inherit p-t-8 p-b-8 separator-bottom\"\n [ngStyle]=\"{ 'z-index': config.singleColumn && config.search ? '30' : '20' }\"\n [ngClass]=\"{ 'p-l-16 p-absolute p-r-16': config.view === 'miller', 'sticky-top': config.multi }\"\n *ngIf=\"!selectedDevice && index === 0 && (config.search || config.singleColumn)\"\n>\n <p\n class=\"text-medium\"\n [ngClass]=\"{ 'm-b-4': config.search && root }\"\n >\n {{ config.label | translate }}\n </p>\n <c8y-search-input\n *ngIf=\"config.search && root\"\n (onClick)=\"onSearchResultClick($event)\"\n (reset)=\"onSearchResultReset($event)\"\n [mode]=\"'select'\"\n [container]=\"container\"\n [groupsOnly]=\"config.groupsOnly\"\n ></c8y-search-input>\n <div\n class=\"bg-component p-t-4 d-flex flex-wrap gap-4\"\n *ngIf=\"config.multi\"\n >\n <span\n class=\"label label-info chip\"\n *ngFor=\"let selectedItem of selected\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10\"\n title=\"{{ selectedItem.name }}\"\n type=\"button\"\n (click)=\"deselect(selectedItem)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ selectedItem.name }}\n </span>\n </div>\n</div>\n\n<div\n class=\"p-r-16\"\n *ngIf=\"selectedDevice\"\n>\n <div class=\"d-flex p-b-4\">\n <p\n class=\"text-medium p-t-8 m-r-8\"\n *ngIf=\"selectedDevice; else multiAssets\"\n >\n {{ 'Selected asset' | translate }}\n </p>\n <ng-template #multiAssets>\n <p class=\"text-medium m-r-8\">{{ 'Selected assets' | translate }}</p>\n </ng-template>\n <button\n class=\"btn btn-default btn-xs a-s-center m-t-4 m-l-auto\"\n title=\"{{ 'Change' | translate }}\"\n type=\"button\"\n (click)=\"clearSelectedDevices()\"\n >\n {{ 'Change' | translate }}\n </button>\n </div>\n <div class=\"d-flex\">\n <i\n class=\"text-success p-l-0 p-r-8\"\n [c8yIcon]=\"'check-circle'\"\n ></i>\n <i\n class=\"m-r-4 icon-20\"\n [c8yIcon]=\"selectedDevice | getGroupIcon | async\"\n ></i>\n <span>{{ selectedDevice.name }}</span>\n </div>\n</div>\n\n<!-- miller columns header -->\n<div\n class=\"miller-column__header sticky-top bg-inherit separator-bottom\"\n [ngStyle]=\"{ top: config.search && !config.singleColumn ? '72px' : '0' }\"\n *ngIf=\"\n config.view === 'miller' &&\n ((config.showFilter && !rootNode.root) || config.columnHeaders || config.singleColumn) &&\n !selectedDevice\n \"\n [ngClass]=\"{ 'm-t-72 p-t-8': config.search, 'm-t-32': !config.search && config.singleColumn }\"\n>\n <p\n class=\"text-12 text-muted text-truncate m-b-4\"\n title=\"{{ rootNode.breadcrumb || rootNode.label | translate }}\"\n *ngIf=\"config.singleColumn && index !== 0\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"home\"\n ></i>\n {{ rootNode.breadcrumb || rootNode.label | translate }}\n </p>\n <div\n class=\"d-flex a-i-center\"\n *ngIf=\"config.columnHeaders || config.singleColumn\"\n >\n <button\n class=\"btn btn-default btn-xs m-r-8 p-t-0 p-b-0 p-l-4 p-r-4 l-h-1\"\n title=\"{{ 'Back' | translate }}\"\n type=\"button\"\n *ngIf=\"config.singleColumn && !rootNode.root && index !== 0\"\n (click)=\"back()\"\n >\n <i c8yIcon=\"angle-left\"></i>\n </button>\n <label\n class=\"c8y-radio checkbox-inline m-r-8\"\n *ngIf=\"!rootNode.root && index === 0 && (config.groupsSelectable || !rootNode.isGroup())\"\n >\n <input\n title=\"{{ 'Select group' | translate }}\"\n type=\"radio\"\n (change)=\"select(rootNode.mo)\"\n [checked]=\"isGroupSelected()\"\n />\n <span></span>\n </label>\n\n <i\n class=\"icon-20 c8y-icon-duocolor m-r-4\"\n [c8yIcon]=\"this.rootNode.mo | getGroupIcon : true : this.rootNode.icon | async\"\n *ngIf=\"config.columnHeaders && (config.singleColumn || (!rootNode.root && index === 0))\"\n ></i>\n <p\n class=\"text-truncate\"\n title=\"{{ rootNode.label | translate }}\"\n *ngIf=\"config.columnHeaders\"\n [ngClass]=\"{\n 'text-label-small': !config.singleColumn,\n 'text-medium': config.singleColumn\n }\"\n >\n {{ rootNode.label | translate }}\n </p>\n </div>\n\n <div\n *ngIf=\"!rootNode.root && config.showFilter\"\n [ngClass]=\"{ 'p-t-4': config.columnHeaders }\"\n >\n <div class=\"input-group input-group-sm input-group-search\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n [(ngModel)]=\"filterText\"\n (keyup.enter)=\"applyFilter('*' + filterText + '*')\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot p-r-8 p-l-4\"\n title=\"{{ 'Apply filter' | translate }}\"\n type=\"button\"\n (click)=\"applyFilter('*' + filterText + '*')\"\n >\n <i c8yIcon=\"filter\"></i>\n </button>\n <button\n class=\"btn btn-dot p-r-8 p-l-4\"\n title=\" {{ 'Clear filters' | translate }}\"\n type=\"button\"\n (click)=\"clearFilters()\"\n *ngIf=\"filterText.length\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n </span>\n </div>\n </div>\n</div>\n\n<c8y-asset-selector-node\n class=\"d-block bg-inherit p-relative\"\n style=\"z-index: 9\"\n *ngIf=\"rootNode && !selectedDevice\"\n [node]=\"rootNode\"\n [rootNode]=\"rootNode\"\n [preselected]=\"selected\"\n [multi]=\"config.multi\"\n [view]=\"config.view\"\n [index]=\"index\"\n [selectedItems]=\"selectedItems\"\n [active]=\"active\"\n [handleNextMillerViewColumn]=\"handleNextMillerViewColumn.bind(this)\"\n (isLoadingState)=\"onLoading($event)\"\n (onSelect)=\"onSelect($event)\"\n (onDeselect)=\"onDeselect($event)\"\n [ngClass]=\"{ 'collapse show': !rootNode.root && !rootNode.hidden && config.view !== 'miller' }\"\n></c8y-asset-selector-node>\n", dependencies: [{ kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.SearchInputComponent, selector: "c8y-search-input", inputs: ["mode", "enableCustomTemplatePlaceholder", "customPlaceholder", "externalTerm", "customDataQuery", "container", "groupsOnly"], outputs: ["filter", "search", "reset", "onClick"] }, { kind: "directive", type: i6$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AssetSelectorNodeComponent, selector: "c8y-asset-selector-node", inputs: ["node", "rootNode", "preselected", "showPath", "multi", "view", "index", "active", "selectedItems", "handleNextMillerViewColumn"], outputs: ["isLoadingState", "onSelect", "onDeselect"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.GetGroupIconPipe, name: "getGroupIcon" }] });
1630
1637
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: AssetSelectorComponent, decorators: [{
1631
1638
  type: Component,
1632
1639
  args: [{ selector: 'c8y-asset-selector', providers: [