{"version":3,"file":"c8y-ngx-components-cockpit-config.mjs","sources":["../../cockpit-config/cockpit-config.model.ts","../../cockpit-config/cockpit-config.guard.ts","../../cockpit-config/cockpit-config.service.ts","../../cockpit-config/feature-config.component.ts","../../cockpit-config/feature-config.component.html","../../cockpit-config/root-node-config.component.ts","../../cockpit-config/root-node-config.component.html","../../cockpit-config/home-dashboard-config.component.ts","../../cockpit-config/home-dashboard-config.component.html","../../cockpit-config/misc-config.component.ts","../../cockpit-config/misc-config.component.html","../../cockpit-config/cockpit-configuration.component.ts","../../cockpit-config/cockpit-configuration.component.html","../../cockpit-config/setup/cockpit-setup-step.ts","../../cockpit-config/setup/cockpit-setup-stepper-buttons.component.ts","../../cockpit-config/setup/cockpit-setup-stepper-buttons.component.html","../../cockpit-config/setup/cockpit-setup-step1.component.ts","../../cockpit-config/setup/cockpit-setup-step1.component.html","../../cockpit-config/setup/cockpit-setup-step2.component.ts","../../cockpit-config/setup/cockpit-setup-step2.component.html","../../cockpit-config/setup/cockpit-setup-step3.component.ts","../../cockpit-config/setup/cockpit-setup-step3.component.html","../../cockpit-config/setup/cockpit-setup-step4.component.ts","../../cockpit-config/setup/cockpit-setup-step4.component.html","../../cockpit-config/cockpit-config.module.ts","../../cockpit-config/c8y-ngx-components-cockpit-config.ts"],"sourcesContent":["export const DEFAULT_HOME_DASHBOARD_NAME = 'home-cockpit1';\nexport const USER_HOME_DASHBOARD_NAME = 'home-cockpit-user';\n\nexport interface CockpitConfig {\n  rootNodes: CockpitConfigRootNode[];\n  features: {\n    alarms: boolean;\n    dataExplorer: boolean;\n    groups: boolean;\n    reports: boolean;\n    exports: boolean;\n    dataPointLibrary: boolean;\n    globalSmartRules: boolean;\n    smartRules: boolean;\n    subassets: boolean;\n    search: boolean;\n    dashboardManager: boolean;\n    [key: string]: boolean;\n  };\n  hideNavigator: boolean;\n  homeDashboardName: string;\n  userSpecificHomeDashboard: boolean;\n  icon: {\n    class: string;\n  };\n  appTitle?: string;\n}\n\nexport const DEFAULT_CONFIG: CockpitConfig = {\n  rootNodes: [],\n  features: {\n    alarms: true,\n    dataExplorer: true,\n    groups: true,\n    reports: true,\n    exports: true,\n    dataPointLibrary: true,\n    globalSmartRules: true,\n    smartRules: true,\n    subassets: true,\n    search: true,\n    dashboardManager: true\n  },\n  hideNavigator: false,\n  homeDashboardName: DEFAULT_HOME_DASHBOARD_NAME,\n  userSpecificHomeDashboard: false,\n  icon: {\n    class: 'c8y-cockpit'\n  }\n};\n\nexport interface CockpitConfigRootNode {\n  id: string;\n  name: string;\n  hideDevices?: boolean;\n}\n\nexport enum HomeDashboardType {\n  /**\n   * Shared by all Cockpit apps\n   */\n  DEFAULT,\n  /**\n   * Only for the current Cockpit.\n   */\n  APP,\n  /**\n   * Only for the current user.\n   */\n  USER\n}\n\nexport const COCKPIT_CONFIG_PATH = 'cockpit-application-configuration';\n","import { Injectable } from '@angular/core';\n\nimport {\n  AppStateService,\n  gettext,\n  NavigatorNode,\n  NavigatorNodeFactory,\n  Permissions\n} from '@c8y/ngx-components';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\nimport { COCKPIT_CONFIG_PATH } from './cockpit-config.model';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CockpitConfigGuard implements NavigatorNodeFactory {\n  protected readonly configNode: NavigatorNode = new NavigatorNode({\n    path: `/${COCKPIT_CONFIG_PATH}`,\n    parent: gettext('Configuration'),\n    label: gettext('Application configuration'),\n    icon: 'imac-settings',\n    preventDuplicates: true\n  });\n\n  constructor(\n    private permissions: Permissions,\n    private appState: AppStateService,\n    private ecosystemService: EcosystemService\n  ) {}\n\n  get(): NavigatorNode {\n    if (this.canActivate()) {\n      return this.configNode;\n    }\n    return;\n  }\n\n  canActivate(): boolean {\n    return (\n      this.permissions.hasRole(Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN) &&\n      this.ecosystemService.isOwner(this.appState.currentApplication.value)\n    );\n  }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { ApplicationService, InventoryService } from '@c8y/client';\nimport {\n  AppStateService,\n  ExtensionFactory,\n  NavigatorNode,\n  NavigatorService,\n  OptionsService,\n  Permissions,\n  SearchService,\n  Tab,\n  TabsService\n} from '@c8y/ngx-components';\nimport {\n  AssetNavigatorConfig,\n  AssetNodeService,\n  ASSET_NAVIGATOR_CONFIG\n} from '@c8y/ngx-components/assets-navigator';\nimport { isUndefined, startCase } from 'lodash-es';\nimport { map, take } from 'rxjs/operators';\nimport { CockpitConfig, DEFAULT_CONFIG, DEFAULT_HOME_DASHBOARD_NAME } from './cockpit-config.model';\nimport { uniqBy } from 'lodash-es';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CockpitConfigService {\n  currentConfig: CockpitConfig = DEFAULT_CONFIG;\n  nodes: NavigatorNode[] = [];\n  private navigationFactory: ExtensionFactory<NavigatorNode> = {\n    get: () => this.nodes\n  };\n\n  private readonly DEFAULT_NODE_PRIORITY = 2000;\n\n  get excludedFeatureKeys() {\n    return Object.keys(this.currentConfig.features).filter(\n      key => !this.currentConfig.features[key]\n    );\n  }\n\n  constructor(\n    private navigatorService: NavigatorService,\n    private tabsService: TabsService,\n    private searchService: SearchService,\n    private assetNodeService: AssetNodeService,\n    private inventoryService: InventoryService,\n    private appState: AppStateService,\n    private applicationService: ApplicationService,\n    private optionsService: OptionsService,\n    private permissions: Permissions,\n    @Optional() @Inject(ASSET_NAVIGATOR_CONFIG) public moduleConfig: AssetNavigatorConfig\n  ) {\n    this.registerFilterForFeatures();\n    this.init();\n  }\n\n  init() {\n    if (this.optionsService.hideNavigator !== undefined) {\n      this.currentConfig.hideNavigator = this.optionsService.hideNavigator;\n    }\n    this.appState.currentApplicationConfig.subscribe(config => {\n      if (config) {\n        this.currentConfig = { ...DEFAULT_CONFIG, ...config } as CockpitConfig;\n      }\n    });\n\n    this.appState.currentApplicationConfig.pipe(take(1)).subscribe(() => {\n      this.setRootNodes();\n    });\n  }\n\n  /**\n   * Save and apply new cockpit configuration\n   * @param config - New cockpit configuration\n   */\n  async saveConfig(config: CockpitConfig) {\n    this.currentConfig = config;\n    await this.storeApplicationConfig(this.currentConfig);\n    await this.updateApplication(this.currentConfig);\n  }\n\n  /**\n   * Update current application using the provided configuration\n   * @param config - Cockpit configuration\n   */\n  async updateApplication(config: CockpitConfig) {\n    if (!config.appTitle && !config.icon) {\n      return;\n    }\n    const application = this.appState.currentApplication.value;\n\n    const updatedApp = {\n      ...application,\n      name: config.appTitle || application.name\n    };\n\n    const manifest = {\n      ...updatedApp.manifest,\n      name: updatedApp.name,\n      icon: config.icon || { class: 'c8y-cockpit' }\n    };\n\n    await this.applicationService.update({\n      id: updatedApp.id,\n      name: updatedApp.name,\n      manifest\n    });\n\n    this.appState.currentApplication.next(updatedApp);\n  }\n\n  refresh() {\n    this.optionsService.hideNavigator = this.currentConfig.hideNavigator;\n    this.navigatorService.refresh();\n    this.searchService.refresh();\n  }\n\n  async setRootNodes() {\n    this.addNodesToFactories();\n    this.nodes.length = 0;\n    for (const node of this.currentConfig.rootNodes) {\n      try {\n        const { data } = await this.inventoryService.detail(node.id);\n        if (data) {\n          this.nodes.push(\n            this.assetNodeService.createAssetNode({\n              mo: data,\n              hideDevices: node.hideDevices,\n              priority: isUndefined(this.moduleConfig?.rootNodePriority)\n                ? this.DEFAULT_NODE_PRIORITY\n                : this.moduleConfig.rootNodePriority\n            })\n          );\n        }\n      } catch (error) {\n        // do nothing\n      }\n    }\n    this.nodes = uniqBy(this.nodes, 'path');\n    this.refresh();\n  }\n\n  getAppDashboardName() {\n    return `${DEFAULT_HOME_DASHBOARD_NAME.substring(0, DEFAULT_HOME_DASHBOARD_NAME.length - 1)}_${\n      this.appState.state.app.id\n    }`;\n  }\n\n  private async storeApplicationConfig(config: CockpitConfig) {\n    await this.appState.updateCurrentApplicationConfig<CockpitConfig>(config);\n  }\n\n  private addNodesToFactories() {\n    const nodeInFactories = this.navigatorService.factories.find(\n      fatcory => fatcory === this.navigationFactory\n    );\n    if (!nodeInFactories) {\n      this.navigatorService.factories.push(this.navigationFactory);\n    }\n  }\n\n  private registerFilterForFeatures() {\n    this.navigatorService.items$ = this.navigatorService.items$.pipe(\n      map(nodes => this.setHiddenAttrLock(nodes)),\n      map(nodes => this.filterNavigatorNode(nodes))\n    );\n    this.tabsService.items$ = this.tabsService.items$.pipe(map(tabs => this.filterTabs(tabs)));\n    this.searchService.items$ = this.searchService.items$.pipe(\n      map(search => (this.currentConfig.features.search ? search : []))\n    );\n  }\n\n  private setHiddenAttrLock(nodes) {\n    nodes.forEach(node => {\n      Object.keys(this.currentConfig.features).forEach(key => {\n        const childNode = node.find(startCase(key).toLowerCase());\n\n        if (childNode) {\n          if (\n            !this.permissions.hasRole(Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN) &&\n            childNode.lockHiddenAttr === undefined &&\n            childNode.hidden === true\n          ) {\n            childNode.lockHiddenAttr = childNode.hidden;\n          }\n        }\n      });\n    });\n    return nodes;\n  }\n\n  private filterTabs(tabs: Tab[]) {\n    return tabs.filter(tab => !this.excludedFeatureKeys.some(key => tab.featureId === key));\n  }\n\n  private filterNavigatorNode(nodes: NavigatorNode[]) {\n    if (!this.currentConfig) {\n      return nodes;\n    }\n    const disabledFeatures = this.excludedFeatureKeys;\n    const filteredNodes = nodes.filter(\n      node => !disabledFeatures.some(key => node.featureId === key)\n    );\n\n    this.showAllChildrenNodes(nodes);\n    this.hideChildrenNodesThatAreDisabled(nodes, disabledFeatures);\n    return filteredNodes;\n  }\n\n  private hideChildrenNodesThatAreDisabled(nodes: NavigatorNode[], disabledFeatures: string[]) {\n    nodes.forEach(node =>\n      disabledFeatures.forEach(key => {\n        const childNode = node.find(key, 'featureId');\n        if (childNode) {\n          childNode.hidden = true;\n        }\n      })\n    );\n  }\n\n  private showAllChildrenNodes(nodes: NavigatorNode[]) {\n    nodes.forEach(node => {\n      Object.keys(this.currentConfig.features).forEach(key => {\n        const childNode = node.find(startCase(key).toLowerCase());\n\n        if (childNode) {\n          if (childNode.lockHiddenAttr === true) {\n            return;\n          }\n\n          childNode.hidden = false;\n        }\n      });\n    });\n  }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CockpitConfig } from './cockpit-config.model';\n\n@Component({\n  selector: 'c8y-feature-config',\n  templateUrl: './feature-config.component.html'\n})\nexport class FeatureConfigComponent {\n  @Input()\n  config: CockpitConfig;\n\n  @Output()\n  onUpdate = new EventEmitter<void>();\n\n  updateFeatures() {\n    this.onUpdate.emit();\n  }\n}\n","<c8y-list-group>\n  <c8y-li data-cy=\"feature-config--feature-list\" *ngIf=\"'SearchModule' | c8yPluginLoaded | async\">\n    <c8y-li-icon icon=\"search\"></c8y-li-icon>\n    <div class=\"d-flex a-i-center\">\n      <div>\n        <p>{{ 'Global search' | translate }}</p>\n        <p>\n          <small translate>Display the global search in the main header.</small>\n        </p>\n      </div>\n      <label\n        class=\"c8y-switch c8y-switch--inline m-l-auto\"\n        title=\"{{ 'Global search' | translate }}\"\n      >\n        <input\n          name=\"search\"\n          type=\"checkbox\"\n          [(ngModel)]=\"config.features.search\"\n          (change)=\"updateFeatures()\"\n        />\n        <span></span>\n      </label>\n    </div>\n  </c8y-li>\n  <c8y-li data-cy=\"feature-config--feature-list\">\n    <c8y-li-icon icon=\"c8y-group\"></c8y-li-icon>\n    <div class=\"d-flex a-i-center\">\n      <div>\n        <p>{{ 'Groups' | translate }}</p>\n        <p>\n          <small translate>Display top level groups under the Groups navigator menu.</small>\n        </p>\n      </div>\n      <label\n        class=\"c8y-switch c8y-switch--inline m-l-auto\"\n        title=\"{{ 'Groups' | translate }}\"\n      >\n        <input\n          name=\"groups\"\n          type=\"checkbox\"\n          [(ngModel)]=\"config.features.groups\"\n          (change)=\"updateFeatures()\"\n        />\n        <span></span>\n      </label>\n    </div>\n  </c8y-li>\n  <c8y-li data-cy=\"feature-config--feature-list\" *ngIf=\"'CockpitAlarmsModule' | c8yPluginLoaded | async\">\n    <c8y-li-icon icon=\"bell\"></c8y-li-icon>\n    <div class=\"d-flex a-i-center\">\n      <div>\n        <p>{{ 'Alarms' | translate }}</p>\n        <p>\n          <small translate>Display a link to the global alarms list in the navigator menu.</small>\n        </p>\n      </div>\n      <label\n        class=\"c8y-switch c8y-switch--inline m-l-auto\"\n        title=\"{{ 'Global Alarms view' | translate }}\"\n      >\n        <input\n          name=\"alarms\"\n          type=\"checkbox\"\n          [(ngModel)]=\"config.features.alarms\"\n          (change)=\"updateFeatures()\"\n        />\n        <span></span>\n      </label>\n    </div>\n  </c8y-li>\n  <c8y-li data-cy=\"feature-config--feature-list\">\n    <c8y-li-icon icon=\"c8y-data-explorer\"></c8y-li-icon>\n    <div class=\"d-flex a-i-center\">\n      <div>\n        <p>{{ 'Data explorer' | translate }}</p>\n        <p>\n          <small translate>\n            Display the data explorer in the navigator menu and on the group tabs.\n          </small>\n        </p>\n      </div>\n      <label\n        class=\"c8y-switch c8y-switch--inline m-l-auto\"\n        title=\"{{ 'Data explorer' | translate }}\"\n      >\n        <input\n          name=\"dataExplorer\"\n          type=\"checkbox\"\n          [(ngModel)]=\"config.features.dataExplorer\"\n          (change)=\"updateFeatures()\"\n        />\n        <span></span>\n      </label>\n    </div>\n  </c8y-li>\n  <c8y-li data-cy=\"feature-config--feature-list\" *ngIf=\"'ReportDashboardModule' | c8yPluginLoaded | async\">\n    <c8y-li-icon icon=\"c8y-reports\"></c8y-li-icon>\n    <div class=\"d-flex a-i-center\">\n      <div>\n        <p>{{ 'Reports' | translate }}</p>\n        <p>\n          <small translate>Display a link to the Reports list in the navigator menu.</small>\n        </p>\n      </div>\n      <label\n        class=\"c8y-switch c8y-switch--inline m-l-auto\"\n        title=\"{{ 'Reports' | translate }}\"\n      >\n        <input\n          name=\"reports\"\n          type=\"checkbox\"\n          [(ngModel)]=\"config.features.reports\"\n          (change)=\"updateFeatures()\"\n        />\n        <span></span>\n      </label>\n    </div>\n  </c8y-li>\n  <c8y-li data-cy=\"feature-config--feature-list\">\n    <c8y-li-icon icon=\"graph-report\"></c8y-li-icon>\n    <div class=\"d-flex a-i-center\">\n      <div>\n        <p>{{ 'Exports' | translate }}</p>\n        <p>\n          <small translate>\n            Display a link to the Exports list under the Configuration navigator menu.\n          </small>\n        </p>\n      </div>\n      <label\n        class=\"c8y-switch c8y-switch--inline m-l-auto\"\n        title=\"{{ 'Exports' | translate }}\"\n      >\n        <input\n          name=\"exports\"\n          type=\"checkbox\"\n          [(ngModel)]=\"config.features.exports\"\n          (change)=\"updateFeatures()\"\n        />\n        <span></span>\n      </label>\n    </div>\n  </c8y-li>\n  <c8y-li data-cy=\"feature-config--feature-list\" *ngIf=\"'DatapointLibraryModule' | c8yPluginLoaded | async\">\n    <c8y-li-icon icon=\"c8y-data-points\"></c8y-li-icon>\n    <div class=\"d-flex a-i-center\">\n      <div>\n        <p>{{ 'Data point library' | translate }}</p>\n        <p>\n          <small translate>\n            Display a link to the Data point library under the Configuration navigator menu.\n          </small>\n        </p>\n      </div>\n      <label\n        class=\"c8y-switch c8y-switch--inline m-l-auto\"\n        title=\"{{ 'Data point library' | translate }}\"\n      >\n        <input\n          name=\"dataPointLibrary\"\n          type=\"checkbox\"\n          [(ngModel)]=\"config.features.dataPointLibrary\"\n          (change)=\"updateFeatures()\"\n        />\n        <span></span>\n      </label>\n    </div>\n  </c8y-li>\n  <c8y-li data-cy=\"feature-config--feature-list\">\n    <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n    <div class=\"d-flex a-i-center\">\n      <div>\n        <p>{{ 'Global smart rules' | translate }}</p>\n        <p>\n          <small translate>\n            Display a link to the Global smart rules under the Configuration navigator menu.\n          </small>\n        </p>\n      </div>\n      <label\n        class=\"c8y-switch c8y-switch--inline m-l-auto\"\n        title=\"{{ 'Global smart rules' | translate }}\"\n      >\n        <input\n          name=\"globalSmartRules\"\n          type=\"checkbox\"\n          [(ngModel)]=\"config.features.globalSmartRules\"\n          (change)=\"updateFeatures()\"\n        />\n        <span></span>\n      </label>\n    </div>\n  </c8y-li>\n  <c8y-li data-cy=\"feature-config--feature-list\">\n    <c8y-li-icon icon=\"c8y-group-open\"></c8y-li-icon>\n    <div class=\"d-flex a-i-center\">\n      <div>\n        <p>{{ 'Subassets view' | translate }}</p>\n        <p><small translate>Display the \"Subassets\" tab on groups.</small></p>\n      </div>\n      <label\n        class=\"c8y-switch c8y-switch--inline m-l-auto\"\n        title=\"{{ 'Subassets view' | translate }}\"\n      >\n        <input\n          name=\"subassets\"\n          type=\"checkbox\"\n          [(ngModel)]=\"config.features.subassets\"\n          (change)=\"updateFeatures()\"\n        />\n        <span></span>\n      </label>\n    </div>\n  </c8y-li>\n  <c8y-li data-cy=\"feature-config--feature-list\">\n    <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n    <div class=\"d-flex a-i-center\">\n      <div>\n        <p>{{ 'Smart rules for devices and groups' | translate }}</p>\n        <p>\n          <small translate>Display the smart rules tab on groups and devices.</small>\n        </p>\n      </div>\n      <label\n        class=\"c8y-switch c8y-switch--inline m-l-auto\"\n        title=\"{{ 'Smart rules for devices and groups' | translate }}\"\n      >\n        <input\n          name=\"smartRules\"\n          type=\"checkbox\"\n          [(ngModel)]=\"config.features.smartRules\"\n          (change)=\"updateFeatures()\"\n        />\n        <span></span>\n      </label>\n    </div>\n  </c8y-li>\n  <c8y-li data-cy=\"feature-config--feature-list\">\n    <c8y-li-icon icon=\"management1\"></c8y-li-icon>\n    <div class=\"d-flex a-i-center\">\n      <div>\n        <p>{{ 'Dashboard manager' | translate }}</p>\n        <p>\n          <small translate>\n            Display a link to the Dashboard manager under the Configuration navigator menu.\n          </small>\n        </p>\n      </div>\n      <label\n        class=\"c8y-switch c8y-switch--inline m-l-auto\"\n        title=\"{{ 'Dashboard manager' | translate }}\"\n      >\n        <input\n          name=\"dashboardManager\"\n          type=\"checkbox\"\n          [(ngModel)]=\"config.features.dashboardManager\"\n          (change)=\"updateFeatures()\"\n        />\n        <span></span>\n      </label>\n    </div>\n  </c8y-li>\n</c8y-list-group>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CockpitConfig, CockpitConfigRootNode } from './cockpit-config.model';\n\n@Component({\n  selector: 'c8y-root-node-config',\n  templateUrl: './root-node-config.component.html'\n})\nexport class RootNodeConfigComponent {\n  @Input()\n  config: CockpitConfig;\n\n  @Input() disabled = false;\n\n  @Output()\n  onUpdate = new EventEmitter<void>();\n\n  /**\n   * Removes one of the root nodes.\n   * @param node The node to remove.\n   */\n  removeNavigatorNode(node: CockpitConfigRootNode) {\n    const index = this.config.rootNodes.indexOf(node);\n    if (index > -1) {\n      const newNodes = this.config.rootNodes.filter((_, i) => i !== index);\n      this.config.rootNodes = newNodes;\n      this.onUpdate.emit();\n    }\n  }\n}\n","<div class=\"col-sm-6\">\n  <label title=\"{{ 'Current top level nodes' | translate }}\" translate>\n    Current top level nodes\n  </label>\n  <c8y-list-group class=\"separator-top\">\n    <c8y-li *ngIf=\"config.rootNodes.length === 0\">\n      <c8y-ui-empty-state\n        [icon]=\"'folder-open'\"\n        [title]=\"'No top level nodes set.' | translate\"\n        [horizontal]=\"true\"\n      ></c8y-ui-empty-state>\n    </c8y-li>\n    <c8y-li *ngFor=\"let node of config.rootNodes; let index = index\">\n      <c8y-li-icon icon=\"c8y-group\"></c8y-li-icon>\n      <div class=\"content-flex-30\">\n        <div class=\"col-6\">\n          <div class=\"text-truncate\" title=\"{{ node.name }}\">\n            {{ node.name }}\n          </div>\n        </div>\n        <div class=\"col-4\">\n          <label class=\"c8y-switch c8y-switch--inline d-flex\" title=\"{{ 'Hide devices' | translate }}\">\n            <input\n              type=\"checkbox\"\n              [(ngModel)]=\"node.hideDevices\"\n              name=\"node.{{ index }}.hideDevices\"\n              (change)=\"onUpdate.emit()\"\n              [disabled]=\"disabled\"\n            />\n            <span></span>\n            <small class=\"text-truncate a-s-center l-h-1\">{{ 'Hide devices' | translate }}</small>\n          </label>\n        </div>\n        <div class=\"col-2 text-right\">\n          <div class=\"d-flex fit-w\">\n            <button\n              class=\"btn-dot btn-dot--danger m-l-auto\"\n              type=\"button\"\n              [attr.aria-label]=\"'Remove' | translate\"\n              tooltip=\"{{ 'Remove' | translate }}\"\n              [disabled]=\"disabled\"\n              [delay]=\"500\"\n              (click)=\"removeNavigatorNode(node)\"\n            >\n              <i c8yIcon=\"minus-circle\"></i>\n            </button>\n          </div>\n        </div>\n      </div>\n    </c8y-li>\n  </c8y-list-group>\n</div>\n\n<div class=\"col-sm-6 col-md-5\" style=\"height: calc(100vh - 430px)\">\n  <label title=\"{{ 'Select top level nodes' | translate }}\" translate>Select top level nodes</label>\n  <c8y-asset-selector\n    [config]=\"{ groupsOnly: true, multi: true, groupsSelectable: true }\"\n    [(ngModel)]=\"config.rootNodes\"\n    [disabled]=\"disabled\"\n    (onSelected)=\"onUpdate.emit()\"\n    name=\"rootNodes\"\n    class=\"border-top d-block\"\n  ></c8y-asset-selector>\n</div>\n","import { Component, Input } from '@angular/core';\nimport {\n  CockpitConfig,\n  DEFAULT_HOME_DASHBOARD_NAME,\n  HomeDashboardType,\n  USER_HOME_DASHBOARD_NAME\n} from './cockpit-config.model';\nimport { CockpitConfigService } from './cockpit-config.service';\n\n@Component({\n  selector: 'c8y-home-dashboard-config',\n  templateUrl: './home-dashboard-config.component.html'\n})\nexport class HomeDashboardConfigComponent {\n  @Input()\n  config: CockpitConfig;\n\n  /**\n   * The types of dashboard that can be configured.\n   */\n  readonly homeDashboardTypes = HomeDashboardType;\n\n  /**\n   * @ignore\n   */\n  constructor(private cockpitConfigService: CockpitConfigService) {}\n\n  /**\n   * @ignore\n   */\n  dashboardChange(selected: boolean, type: HomeDashboardType) {\n    if (!selected) {\n      return;\n    }\n\n    switch (type) {\n      case this.homeDashboardTypes.DEFAULT: {\n        this.config.homeDashboardName = DEFAULT_HOME_DASHBOARD_NAME;\n        this.config.userSpecificHomeDashboard = false;\n        break;\n      }\n      case this.homeDashboardTypes.APP: {\n        this.config.homeDashboardName = this.cockpitConfigService.getAppDashboardName();\n        this.config.userSpecificHomeDashboard = false;\n        break;\n      }\n      case this.homeDashboardTypes.USER: {\n        this.config.homeDashboardName = USER_HOME_DASHBOARD_NAME;\n        this.config.userSpecificHomeDashboard = true;\n        break;\n      }\n    }\n  }\n\n  /**\n   * @ignore\n   */\n  verifySelected(type: HomeDashboardType) {\n    if (type === this.homeDashboardTypes.USER) {\n      return this.config.userSpecificHomeDashboard;\n    }\n    if (type === this.homeDashboardTypes.DEFAULT) {\n      return this.config.homeDashboardName === DEFAULT_HOME_DASHBOARD_NAME;\n    }\n    return this.config.homeDashboardName === this.cockpitConfigService.getAppDashboardName();\n  }\n}\n","<c8y-list-group>\n  <c8y-li data-cy=\"home-dashboard-config--dashboard-list\">\n    <c8y-li-radio\n      (onSelect)=\"dashboardChange($event, homeDashboardTypes.DEFAULT)\"\n      [selected]=\"verifySelected(homeDashboardTypes.DEFAULT)\"\n    ></c8y-li-radio>\n    <p translate>Default home dashboard</p>\n    <small translate>Changes done in the home dashboard are reflected across the platform.</small>\n  </c8y-li>\n  <c8y-li data-cy=\"home-dashboard-config--dashboard-list\">\n    <c8y-li-radio\n      (onSelect)=\"dashboardChange($event, homeDashboardTypes.APP)\"\n      [selected]=\"verifySelected(homeDashboardTypes.APP)\"\n    ></c8y-li-radio>\n    <p translate>Custom home dashboard</p>\n    <small translate>\n      Changes done to the home dashboard are reflected only in the current application.\n    </small>\n  </c8y-li>\n  <c8y-li data-cy=\"home-dashboard-config--dashboard-list\">\n    <c8y-li-radio\n      (onSelect)=\"dashboardChange($event, homeDashboardTypes.USER)\"\n      [selected]=\"verifySelected(homeDashboardTypes.USER)\"\n    ></c8y-li-radio>\n    <p translate>User home dashboard</p>\n    <small translate>\n      Changes done to the home dashboard are reflected only for the current user. NOTE: This user\n      needs to have inventory write permission.\n    </small>\n  </c8y-li>\n</c8y-list-group>\n","import { Component, Input } from '@angular/core';\nimport { CockpitConfig } from './cockpit-config.model';\n\n@Component({\n  selector: 'c8y-misc-config',\n  templateUrl: './misc-config.component.html'\n})\nexport class MiscConfigComponent {\n  @Input()\n  config: CockpitConfig;\n}\n","<c8y-list-group class=\"separator-top\">\n  <c8y-li>\n    <div class=\"d-flex a-i-center\">\n      <p>{{ 'Always collapse navigator on start up' | translate }}</p>\n      <label\n        class=\"c8y-switch c8y-switch--inline m-l-auto\"\n        title=\"{{ 'Collapse navigator on start up' | translate }}\"\n      >\n        <input data-cy=\"c8y-misc-config--collapse-button\" type=\"checkbox\" [(ngModel)]=\"config.hideNavigator\" name=\"hideNavigator\" />\n        <span></span>\n      </label>\n    </div>\n  </c8y-li>\n</c8y-list-group>\n","import { Component, OnInit } from '@angular/core';\nimport { AlertService, AppStateService, gettext } from '@c8y/ngx-components';\nimport { CockpitConfig, DEFAULT_CONFIG } from './cockpit-config.model';\nimport { CockpitConfigService } from './cockpit-config.service';\n\n@Component({\n  selector: 'c8y-cockpit-configuration',\n  templateUrl: './cockpit-configuration.component.html'\n})\nexport class CockpitConfigurationComponent implements OnInit {\n  /**\n   * The currently used configuration.\n   */\n  config: CockpitConfig = DEFAULT_CONFIG;\n\n  rootNodeDisabled = false;\n\n  constructor(\n    private cockpitConfigService: CockpitConfigService,\n    private alertService: AlertService,\n    private appState: AppStateService\n  ) {}\n\n  /**\n   * @ignore\n   */\n  ngOnInit() {\n    this.config = this.cockpitConfigService.currentConfig;\n  }\n\n  /**\n   * Stores the configuration and shows a success message.\n   */\n  async save() {\n    try {\n      await this.cockpitConfigService.saveConfig(this.config);\n      this.alertService.success(gettext('Cockpit configuration saved.'));\n    } catch (ex) {\n      this.alertService.addServerFailure(ex);\n    }\n  }\n\n  /**\n   * @ignore\n   */\n  iconSelectionChange(icon: string): void {\n    this.config.icon = { class: icon };\n    this.appState.currentApplication.next({\n      ...this.appState.currentApplication.value,\n      ...{ config: this.config }\n    });\n  }\n\n  /**\n   * Updates the features to directly reflect the results of the change.\n   */\n  updateFeatures() {\n    this.cockpitConfigService.currentConfig = this.config;\n    this.cockpitConfigService.refresh();\n  }\n\n  /**\n   * Updates the root nodes to directly reflect the results of the change.\n   */\n  async updateRootNodes() {\n    this.rootNodeDisabled = true;\n    this.cockpitConfigService.currentConfig = this.config;\n    await this.cockpitConfigService.setRootNodes();\n    this.rootNodeDisabled = false;\n  }\n}\n","<c8y-title>{{ 'Application configuration' | translate }}</c8y-title>\n<c8y-breadcrumb>\n  <c8y-breadcrumb-item\n    [icon]=\"'c8y-tools'\"\n    [label]=\"'Configuration' | translate\"\n  ></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item\n    [icon]=\"'c8y-tools'\"\n    [label]=\"'Application configuration' | translate\"\n  ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n  <div class=\"col-lg-12 col-lg-max\">\n    <form #configForm=\"ngForm\">\n      <div class=\"card card--fullpage\">\n        <div class=\"card-header separator\">\n          <div class=\"card-title\">\n            {{ config.appTitle || ('Cockpit' | translate) }} {{ 'configuration' | translate }}\n          </div>\n        </div>\n\n        <div class=\"inner-scroll\">\n          <div class=\"card-block p-t-0 p-b-0\">\n            <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n              <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n                <div\n                  class=\"h4 text-medium d-inline-block m-r-4\"\n                  translate\n                >\n                  Title, icon, and navigator collapse\n                </div>\n              </div>\n              <div class=\"col-xs-12 col-sm-9 col-md-8 p-l-16\">\n                <div class=\"d-flex a-i-start gap-16\">\n                  <div class=\"form-group d-inline-block\">\n                    <label>{{ 'Icon' | translate }}</label>\n                    <c8y-icon-selector-wrapper\n                      [selectedIcon]=\"config?.icon?.class || 'c8y-cockpit'\"\n                      [iconSize]=\"24\"\n                      (onSelect)=\"iconSelectionChange($event)\"\n                    ></c8y-icon-selector-wrapper>\n                  </div>\n                  <div class=\"form-group flex-grow\">\n                    <label\n                      for=\"confAppTitle\"\n                      translate\n                    >\n                      Change application title\n                    </label>\n                    <input\n                      class=\"form-control\"\n                      id=\"confAppTitle\"\n                      placeholder=\"{{ 'e.g. Cockpit' | translate }} \"\n                      type=\"text\"\n                      maxlength=\"254\"\n                      [(ngModel)]=\"config.appTitle\"\n                      [ngModelOptions]=\"{ standalone: true }\"\n                    />\n                  </div>\n                </div>\n\n                <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n              </div>\n            </fieldset>\n            <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n              <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n                <div class=\"d-inline-flex m-b-16\">\n                  <div\n                    class=\"h4 text-medium m-r-4\"\n                    translate\n                  >\n                    Features\n                  </div>\n                  <button\n                    class=\"btn-help btn-help--sm\"\n                    [attr.aria-label]=\"'Help' | translate\"\n                    popover=\"{{\n                      'Define which are the enabled features in the current application.'\n                        | translate\n                    }}\"\n                    placement=\"right\"\n                    triggers=\"focus\"\n                    container=\"body\"\n                    type=\"button\"\n                  ></button>\n                </div>\n              </div>\n              <div class=\"col-xs-12 col-sm-9 col-md-8\">\n                <c8y-feature-config\n                  [config]=\"config\"\n                  (onUpdate)=\"updateFeatures()\"\n                ></c8y-feature-config>\n              </div>\n            </fieldset>\n            <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n              <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n                <div class=\"d-inline-flex m-b-16\">\n                  <div\n                    class=\"h4 text-medium m-r-8\"\n                    translate\n                  >\n                    Top level nodes\n                  </div>\n                  <button\n                    class=\"btn-help btn-help--sm\"\n                    [attr.aria-label]=\"'Help' | translate\"\n                    popover=\"{{\n                      'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n                        | translate\n                    }}\"\n                    placement=\"right\"\n                    triggers=\"focus\"\n                    container=\"body\"\n                    type=\"button\"\n                  ></button>\n                </div>\n              </div>\n              <div class=\"col-xs-12 col-sm-10 col-md-10\">\n                <div class=\"row\">\n                  <c8y-root-node-config\n                    [config]=\"config\"\n                    (onUpdate)=\"updateRootNodes()\"\n                    [disabled]=\"rootNodeDisabled\"\n                  ></c8y-root-node-config>\n                </div>\n              </div>\n            </fieldset>\n\n            <fieldset class=\"row p-t-24 p-b-24\">\n              <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n                <div class=\"d-inline-flex m-b-16\">\n                  <div\n                    class=\"h4 text-medium m-r-8\"\n                    translate\n                  >\n                    Home dashboard\n                  </div>\n                  <button\n                    class=\"btn-help btn-help--sm\"\n                    [attr.aria-label]=\"'Help' | translate\"\n                    popover=\"{{\n                      'The homepage of this application. By default, it is a customizable dashboard displaying the most important alarms and shortcuts to frequently used features.'\n                        | translate\n                    }}\"\n                    placement=\"right\"\n                    triggers=\"focus\"\n                    container=\"body\"\n                    type=\"button\"\n                  ></button>\n                </div>\n              </div>\n              <div class=\"col-xs-12 col-sm-9 col-md-8\">\n                <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n              </div>\n            </fieldset>\n          </div>\n        </div>\n        <div class=\"card-footer separator\">\n          <button\n            class=\"btn btn-primary\"\n            title=\"{{ 'Save' | translate }}\"\n            type=\"submit\"\n            [disabled]=\"!configForm.form.valid\"\n            (click)=\"save()\"\n            [actionName]=\"'cockpitConfigurationSaved'\"\n            [actionData]=\"{ config: config }\"\n            c8yProductExperience\n          >\n            {{ 'Save' | translate }}\n          </button>\n        </div>\n      </div>\n    </form>\n  </div>\n</div>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { AppStateService, AlertService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitConfig, DEFAULT_CONFIG } from '../cockpit-config.model';\nimport { ApplicationService } from '@c8y/client';\nimport { CockpitConfigService } from '../cockpit-config.service';\n\nexport abstract class CockpitSetupStep {\n  config: CockpitConfig = DEFAULT_CONFIG;\n  pending = false;\n\n  constructor(\n    public stepper: C8yStepper,\n    protected step: CdkStep,\n    protected setup: SetupComponent,\n    protected appState: AppStateService,\n    protected alert: AlertService,\n    protected applicationService: ApplicationService,\n    protected cockpitConfigService: CockpitConfigService\n  ) {}\n\n  async next() {\n    this.pending = true;\n    try {\n      const newConfig = { ...this.setup.data$.value, ...this.config };\n      await this.appState.updateCurrentApplicationConfig(newConfig);\n      this.cockpitConfigService.updateApplication(newConfig);\n      this.setup.stepCompleted(this.stepper.selectedIndex);\n      this.setup.data$.next(newConfig);\n      this.stepper.next();\n    } catch (ex) {\n      this.alert.addServerFailure(ex);\n    } finally {\n      this.pending = false;\n    }\n  }\n\n  back() {\n    this.stepper.previous();\n  }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n  selector: 'c8y-cockpit-setup-stepper-buttons',\n  templateUrl: './cockpit-setup-stepper-buttons.component.html'\n})\nexport class CockpitSetupStepperButtonsComponent {\n  @Input() index;\n  @Output() onNext = new EventEmitter<void>();\n  @Output() onBack = new EventEmitter<void>();\n}\n","<div class=\"card-footer separator d-flex j-c-center\">\n  <button\n    class=\"btn btn-default\"\n    type=\"button\"\n    (click)=\"onBack.emit()\"\n    *ngIf=\"index !== 0\"\n    translate\n  >\n    Previous\n  </button>\n  <button data-cy=\"c8y-cockpit-setup-stepper-buttons--save-continue-button\" class=\"btn btn-primary\" type=\"submit\" (click)=\"onNext.emit()\" translate>\n    Continue\n  </button>\n</div>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { AlertService, AppStateService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitSetupStep } from './cockpit-setup-step';\nimport { ApplicationService, IApplication } from '@c8y/client';\nimport { CockpitConfigService } from '../cockpit-config.service';\n\n@Component({\n  selector: 'c8y-cockpit-setup-step1',\n  templateUrl: './cockpit-setup-step1.component.html',\n  host: { class: 'd-contents' }\n})\nexport class CockpitSetupStep1Component extends CockpitSetupStep {\n  app$: Observable<IApplication>;\n\n  constructor(\n    public stepper: C8yStepper,\n    protected step: CdkStep,\n    protected setup: SetupComponent,\n    protected appState: AppStateService,\n    protected alert: AlertService,\n    protected appService: ApplicationService,\n    protected cockpitConfigService: CockpitConfigService\n  ) {\n    super(stepper, step, setup, appState, alert, appService, cockpitConfigService);\n    this.app$ = this.appState.currentApplication.pipe(filter(app => !!app));\n  }\n\n  iconSelectionChange(icon): void {\n    this.config.icon = { class: icon };\n  }\n}\n","<form\n  class=\"d-contents\"\n  name=\"form\"\n  #stepForm=\"ngForm\"\n>\n  <div class=\"container-fluid flex-no-shrink fit-w\">\n    <div class=\"row separator-bottom\">\n      <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n        <h3\n          data-cy=\"c8y-cockpit-setup-step1--step1-header-title\"\n          class=\"text-medium l-h-base\"\n          translate\n        >\n          Title, icon, and navigator collapse\n        </h3>\n        <p\n          class=\"lead text-normal\"\n          translate\n        >\n          Change the icon, the title, and set the initial navigator state.\n        </p>\n      </div>\n    </div>\n  </div>\n  <div class=\"inner-scroll flex-grow\">\n    <div class=\"container-fluid fit-w\">\n      <div class=\"row\">\n        <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n          <div class=\"d-flex a-i-start gap-16 p-t-16\">\n            <div class=\"form-group d-inline-block\">\n              <label>{{ 'Icon' | translate }}</label>\n              <c8y-icon-selector-wrapper\n                [selectedIcon]=\"(app$ | async)?.config?.icon?.class || 'c8y-cockpit'\"\n                [iconSize]=\"24\"\n                (onSelect)=\"iconSelectionChange($event)\"\n              ></c8y-icon-selector-wrapper>\n            </div>\n            <div class=\"form-group flex-grow\">\n              <label\n                for=\"confAppTitle\"\n                translate\n              >\n                Change application title\n              </label>\n              <input\n                class=\"form-control\"\n                id=\"confAppTitle\"\n                placeholder=\"{{ 'e.g. Cockpit' | translate }} \"\n                type=\"text\"\n                maxlength=\"254\"\n                [(ngModel)]=\"config.appTitle\"\n                [ngModelOptions]=\"{ standalone: true }\"\n              />\n            </div>\n          </div>\n\n          <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n        </div>\n      </div>\n    </div>\n  </div>\n  <c8y-cockpit-setup-stepper-buttons\n    [index]=\"stepper.selectedIndex\"\n    (onNext)=\"next()\"\n    (onBack)=\"back()\"\n  ></c8y-cockpit-setup-stepper-buttons>\n</form>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AlertService, AppStateService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitSetupStep } from './cockpit-setup-step';\nimport { ApplicationService } from '@c8y/client';\nimport { CockpitConfigService } from '../cockpit-config.service';\n\n@Component({\n  selector: 'c8y-cockpit-setup-step2',\n  templateUrl: './cockpit-setup-step2.component.html',\n  host: { class: 'd-contents' }\n})\nexport class CockpitSetupStep2Component extends CockpitSetupStep {\n  constructor(\n    public stepper: C8yStepper,\n    protected step: CdkStep,\n    protected setup: SetupComponent,\n    protected appState: AppStateService,\n    protected alert: AlertService,\n    protected appService: ApplicationService,\n    protected cockpitConfigService: CockpitConfigService\n  ) {\n    super(stepper, step, setup, appState, alert, appService, cockpitConfigService);\n  }\n}\n","<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n  <div class=\"container-fluid flex-no-shrink fit-w\">\n    <div class=\"row separator-bottom\">\n      <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3  p-t-24 p-l-16 p-r-16\">\n        <h3 translate class=\"text-medium l-h-base\" data-cy=\"c8y-cockpit-setup-step2--step2-header-title\">Features</h3>\n        <p class=\"lead text-normal\" translate>\n          Define which are the enabled features in the current application.\n        </p>\n      </div>\n    </div>\n  </div>\n  <div class=\"inner-scroll flex-grow\">\n    <div class=\"container-fluid fit-w\">\n      <div class=\"row\">\n        <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n          <c8y-feature-config [config]=\"config\"></c8y-feature-config>\n        </div>\n      </div>\n    </div>\n  </div>\n  <c8y-cockpit-setup-stepper-buttons\n    [index]=\"stepper.selectedIndex\"\n    (onNext)=\"next()\"\n    (onBack)=\"back()\"\n  >\n  </c8y-cockpit-setup-stepper-buttons>\n</form>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AlertService, AppStateService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitSetupStep } from './cockpit-setup-step';\nimport { ApplicationService } from '@c8y/client';\nimport { CockpitConfigService } from '../cockpit-config.service';\n\n@Component({\n  selector: 'c8y-cockpit-setup-step3',\n  templateUrl: './cockpit-setup-step3.component.html',\n  host: { class: 'd-contents' }\n})\nexport class CockpitSetupStep3Component extends CockpitSetupStep {\n  constructor(\n    public stepper: C8yStepper,\n    protected step: CdkStep,\n    protected setup: SetupComponent,\n    protected appState: AppStateService,\n    protected alert: AlertService,\n    protected appService: ApplicationService,\n    protected cockpitConfigService: CockpitConfigService\n  ) {\n    super(stepper, step, setup, appState, alert, appService, cockpitConfigService);\n  }\n}\n","<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n  <div class=\"container-fluid flex-no-shrink fit-w\">\n    <div class=\"row separator-bottom\">\n      <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n        <h3 translate class=\"text-medium l-h-base\" data-cy=\"c8y-cockpit-setup-step3--step3-header-title\">Top level nodes</h3>\n        <p class=\"lead text-normal\" translate>\n          Select which nodes to display in the top level of the navigator menu. By default, only\n          Groups is shown.\n        </p>\n      </div>\n    </div>\n  </div>\n  <div class=\"inner-scroll flex-grow\">\n    <div class=\"container-fluid fit-w p-t-16\">\n      <div class=\"row\">\n        <div class=\"col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2\">\n          <c8y-root-node-config [config]=\"config\"></c8y-root-node-config>\n        </div>\n      </div>\n    </div>\n  </div>\n  <c8y-cockpit-setup-stepper-buttons\n    [index]=\"stepper.selectedIndex\"\n    (onNext)=\"next()\"\n    (onBack)=\"back()\"\n  >\n  </c8y-cockpit-setup-stepper-buttons>\n</form>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AlertService, AppStateService, C8yStepper, SetupComponent } from '@c8y/ngx-components';\nimport { CockpitSetupStep } from './cockpit-setup-step';\nimport { ApplicationService } from '@c8y/client';\nimport { CockpitConfigService } from '../cockpit-config.service';\n\n@Component({\n  selector: 'c8y-cockpit-setup-step4',\n  templateUrl: './cockpit-setup-step4.component.html',\n  host: { class: 'd-contents' }\n})\nexport class CockpitSetupStep4Component extends CockpitSetupStep {\n  constructor(\n    public stepper: C8yStepper,\n    protected step: CdkStep,\n    protected setup: SetupComponent,\n    protected appState: AppStateService,\n    protected alert: AlertService,\n    protected appService: ApplicationService,\n    protected cockpitConfigService: CockpitConfigService\n  ) {\n    super(stepper, step, setup, appState, alert, appService, cockpitConfigService);\n  }\n}\n","<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n  <div class=\"container-fluid flex-no-shrink fit-w\">\n    <div class=\"row separator-bottom\">\n      <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n        <h3 translate class=\"text-medium l-h-base\" data-cy=\"c8y-cockpit-setup-step4--step4-header-title\">Home dashboard</h3>\n        <p class=\"lead text-normal\" translate>\n          The homepage of this application. By default, it is a customizable dashboard displaying\n          the most important alarms and shortcuts to frequently used features.\n        </p>\n      </div>\n    </div>\n  </div>\n  <div class=\"inner-scroll flex-grow\">\n    <div class=\"container-fluid fit-w\">\n      <div class=\"row\">\n        <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n          <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n        </div>\n      </div>\n    </div>\n  </div>\n  <c8y-cockpit-setup-stepper-buttons\n    [index]=\"stepper.selectedIndex\"\n    (onNext)=\"next()\"\n    (onBack)=\"back()\"\n  ></c8y-cockpit-setup-stepper-buttons>\n</form>\n","import { NgModule } from '@angular/core';\nimport {\n  CoreModule,\n  gettext,\n  hookNavigator,\n  hookRoute,\n  hookStepper,\n  SetupStep,\n  Steppers\n} from '@c8y/ngx-components';\nimport { AssetSelectorModule } from '@c8y/ngx-components/assets-navigator';\nimport { EcosystemModule } from '@c8y/ngx-components/ecosystem';\nimport { IconSelectorModule } from '@c8y/ngx-components/icon-selector';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { CockpitConfigGuard } from './cockpit-config.guard';\nimport { COCKPIT_CONFIG_PATH } from './cockpit-config.model';\nimport { CockpitConfigService } from './cockpit-config.service';\nimport { CockpitConfigurationComponent } from './cockpit-configuration.component';\nimport { FeatureConfigComponent } from './feature-config.component';\nimport { HomeDashboardConfigComponent } from './home-dashboard-config.component';\nimport { MiscConfigComponent } from './misc-config.component';\nimport { RootNodeConfigComponent } from './root-node-config.component';\nimport { CockpitSetupStep1Component } from './setup/cockpit-setup-step1.component';\nimport { CockpitSetupStep2Component } from './setup/cockpit-setup-step2.component';\nimport { CockpitSetupStep3Component } from './setup/cockpit-setup-step3.component';\nimport { CockpitSetupStep4Component } from './setup/cockpit-setup-step4.component';\nimport { CockpitSetupStepperButtonsComponent } from './setup/cockpit-setup-stepper-buttons.component';\nimport { PluginLoadedPipe } from '@c8y/ngx-components';\n\n@NgModule({\n  declarations: [\n    CockpitConfigurationComponent,\n    CockpitSetupStep1Component,\n    CockpitSetupStep2Component,\n    CockpitSetupStep3Component,\n    CockpitSetupStep4Component,\n    FeatureConfigComponent,\n    RootNodeConfigComponent,\n    HomeDashboardConfigComponent,\n    MiscConfigComponent,\n    CockpitSetupStepperButtonsComponent\n  ],\n  imports: [\n    CoreModule,\n    AssetSelectorModule,\n    PopoverModule,\n    TooltipModule,\n    EcosystemModule,\n    IconSelectorModule,\n    PluginLoadedPipe\n  ],\n  providers: [\n    CockpitConfigGuard,\n    hookRoute({\n      path: COCKPIT_CONFIG_PATH,\n      component: CockpitConfigurationComponent,\n      canActivate: [CockpitConfigGuard]\n    }),\n    hookNavigator(CockpitConfigGuard),\n    hookStepper([\n      {\n        stepperId: Steppers.SETUP,\n        component: CockpitSetupStep1Component,\n        label: gettext('Title, icon, and navigator collapse'),\n        setupId: 'cockpitMisc',\n        priority: 40\n      },\n      {\n        stepperId: Steppers.SETUP,\n        component: CockpitSetupStep2Component,\n        label: gettext('Features'),\n        setupId: 'cockpitFeatures',\n        priority: 30\n      },\n      {\n        stepperId: Steppers.SETUP,\n        component: CockpitSetupStep3Component,\n        label: gettext('Top level nodes'),\n        setupId: 'cockpitTopLevelNodes',\n        priority: 20\n      },\n      {\n        stepperId: Steppers.SETUP,\n        component: CockpitSetupStep4Component,\n        label: gettext('Home dashboard'),\n        setupId: 'cockpitHomeDashboard',\n        priority: 10\n      }\n    ] as SetupStep[])\n  ]\n})\nexport class CockpitConfigModule {\n  constructor(private service: CockpitConfigService) {\n    // only for DI, not used but needed.\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i4","i5","i1.CockpitConfigService","i1","i6.FeatureConfigComponent","i7.RootNodeConfigComponent","i8.HomeDashboardConfigComponent","i9.MiscConfigComponent","i4.CockpitConfigService","i6","i7.MiscConfigComponent","i8.CockpitSetupStepperButtonsComponent","i9","i7.CockpitSetupStepperButtonsComponent","i6.RootNodeConfigComponent","i6.HomeDashboardConfigComponent"],"mappings":"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"}