{"version":3,"file":"c8y-ngx-components-ecosystem.mjs","sources":["../../ecosystem/activity-log/activity-log.component.ts","../../ecosystem/activity-log/activity-log.component.html","../../ecosystem/application-properties/subscription-modal/subscription-modal.component.ts","../../ecosystem/application-properties/subscription-modal/subscription-modal.component.html","../../ecosystem/application-plugins/appState.pipe.ts","../../ecosystem/application-plugins/apps-to-update-remotes-select.component.ts","../../ecosystem/application-plugins/apps-to-update-remotes-select.component.html","../../ecosystem/application-plugins/plugin-list-item.component.ts","../../ecosystem/application-plugins/plugin-list-item.component.html","../../ecosystem/application-plugins/plugin-list.component.ts","../../ecosystem/application-plugins/plugin-list.component.html","../../ecosystem/application-properties/update-application-modal/update-application-modal.component.ts","../../ecosystem/application-properties/update-application-modal/update-application-modal.component.html","../../ecosystem/application-properties/application-properties.component.ts","../../ecosystem/application-properties/application-properties.component.html","../../ecosystem/application-properties/application-properties.guard.ts","../../ecosystem/applications/add-external-applicaiton/add-external-application.component.ts","../../ecosystem/applications/add-external-applicaiton/add-external-application.component.html","../../ecosystem/applications/add-web-application/add-web-application.component.ts","../../ecosystem/applications/application-list/application-list.component.ts","../../ecosystem/applications/application-list/application-list.component.html","../../ecosystem/applications/install-from-package/install-from-package.component.ts","../../ecosystem/applications/install-from-package/install-from-package.component.html","../../ecosystem/ecosystem-navigation.factory.ts","../../ecosystem/ecosystem-tabs.factory.ts","../../ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.ts","../../ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.html","../../ecosystem/application-plugins/install-plugin.component.ts","../../ecosystem/application-plugins/install-plugin.component.html","../../ecosystem/application-plugins/label-cell-renderer.component.ts","../../ecosystem/application-plugins/label-cell-renderer.component.html","../../ecosystem/application-plugins/orphaned-status-cell-renderer.component.ts","../../ecosystem/application-plugins/orphaned-status-cell-renderer.component.html","../../ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.ts","../../ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.html","../../ecosystem/application-plugins/application-plugins.component.ts","../../ecosystem/application-plugins/application-plugins.component.html","../../ecosystem/application-plugins/application-plugins.guard.ts","../../ecosystem/application-plugins/application-plugins.module.ts","../../ecosystem/features/feature-list.component.ts","../../ecosystem/features/feature-list.component.html","../../ecosystem/microservices/add-microservice.component.ts","../../ecosystem/microservices/microservice-list.component.ts","../../ecosystem/microservices/microservice-list.component.html","../../ecosystem/packages/add-package.component.ts","../../ecosystem/packages/deploy-application/deploy-application.component.ts","../../ecosystem/packages/deploy-application/deploy-application.component.html","../../ecosystem/packages/package-details/package-details.component.ts","../../ecosystem/packages/package-details/package-details.component.html","../../ecosystem/packages/package-list/packages-list.component.ts","../../ecosystem/packages/package-list/packages-list.component.html","../../ecosystem/packages/package-versions.guard.ts","../../ecosystem/packages/package-versions/package-contents/contents-apps/contents-apps.component.ts","../../ecosystem/packages/package-versions/package-contents/contents-apps/contents-apps.component.html","../../ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.ts","../../ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.html","../../ecosystem/packages/package-versions/package-contents/packages-contents.component.ts","../../ecosystem/packages/package-versions/package-contents/packages-contents.component.html","../../ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.ts","../../ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.html","../../ecosystem/packages/package-versions/packages-versions.component.ts","../../ecosystem/packages/package-versions/packages-versions.component.html","../../ecosystem/packages/package.guard.ts","../../ecosystem/ecosystem.module.ts","../../ecosystem/c8y-ngx-components-ecosystem.ts"],"sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\nimport { IApplication, IApplicationBinary } from '@c8y/client';\nimport { AlertService } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n  selector: 'c8y-activity-log',\n  templateUrl: './activity-log.component.html'\n})\nexport class ActivityLogComponent implements OnInit {\n  @Input() application: IApplication;\n  @Input() hasAdminPermissions = false;\n  archives: IApplicationBinary[] = [];\n  toActivateVersionId: string;\n  last: IApplicationBinary;\n  isLoading: boolean;\n  canReactivate = false;\n\n  constructor(private ecosystemService: EcosystemService, private alertService: AlertService) {}\n\n  get uploadProgress(): BehaviorSubject<number> {\n    return this.ecosystemService.progress;\n  }\n\n  async ngOnInit() {\n    this.canReactivate = this.showReactivate();\n    this.refresh();\n  }\n\n  isActive(archive: IApplicationBinary): boolean {\n    return this.application.activeVersionId === archive.id;\n  }\n\n  toActivate(archive: IApplicationBinary): boolean {\n    return this.toActivateVersionId === archive.id;\n  }\n\n  checkIfLast(archive: IApplicationBinary): boolean {\n    return archive.id === this.last.id;\n  }\n\n  showReactivate(): boolean {\n    return this.ecosystemService.isApplication(this.application);\n  }\n\n  async setActive(archive): Promise<void> {\n    const id = archive.id || archive;\n    this.toActivateVersionId = id;\n    this.isLoading = true;\n    try {\n      this.application = (\n        await this.ecosystemService.setAppActiveVersion(this.application, id)\n      ).data;\n    } catch (ex) {\n      this.alertService.addServerFailure(ex);\n    }\n    this.isLoading = false;\n    this.refresh();\n  }\n\n  async deleteArchive(archive: IApplicationBinary): Promise<void> {\n    await this.ecosystemService.deleteArchive(archive, this.application);\n    this.refresh();\n  }\n\n  async downloadArchive(archive: IApplicationBinary): Promise<void> {\n    await this.ecosystemService.downloadArchive(this.application, archive);\n  }\n\n  async reactivateArchive(): Promise<void> {\n    await this.ecosystemService.reactivateArchive(this.application);\n  }\n\n  async onRefresh() {\n    await this.refresh();\n  }\n\n  private async refresh(): Promise<void> {\n    this.isLoading = true;\n    this.archives = await this.ecosystemService.listArchives(this.application.id);\n    if (this.application.manifest?.package === 'blueprint') {\n      // filter out entries without description because using them as active may break application's\n      //  manifest (changing isPackage property of deployed app to 'true')\n      this.archives = this.archives.filter((archive: IApplicationBinary) => !!archive.description);\n    }\n    this.archives.sort((a, b) => {\n      return (new Date(b.created) as any) - (new Date(a.created) as any);\n    });\n    this.last = this.archives[this.archives.length - 1];\n    this.isLoading = false;\n  }\n}\n","<div class=\"inner-scroll bg-level-1 flex-grow inner-scroll--md overflow-visible-sm overflow-visible-xs\">\n  <div class=\"card-block overflow-visible\">\n    <c8y-list-group>\n      <c8y-li-timeline *ngFor=\"let archive of archives\" [ngClass]=\"{ active: isActive(archive) }\">\n        {{ archive.created | date: 'd MMM YYYY' }}\n        {{ archive.created | date: 'shortTime' }}\n        <c8y-li>\n          <c8y-li-icon\n            [icon]=\"checkIfLast(archive) ? 'flag-checkered' : 'file-zip-o'\"\n          ></c8y-li-icon>\n          <c8y-li-body>\n            <div class=\"d-flex a-i-start\">\n              <div style=\"min-width: 0; flex: 1\">\n                <span class=\"text-truncate-wrap\" title=\" {{ archive.description || archive.name }}\">\n                  {{ archive.description || archive.name }}\n                </span>\n                <small *ngIf=\"archive.description\" class=\"text-muted\">{{\n                  archive.description\n                }}</small>\n              </div>\n              <i\n                *ngIf=\"isLoading && toActivate(archive)\"\n                [c8yIcon]=\"'circle-o-notch'\"\n                class=\"icon-spin\"\n                title=\"{{ 'Activating' | translate }}\"\n              ></i>\n\n              <span *ngIf=\"isActive(archive)\" class=\"label label-primary m-l-auto m-t-4\">{{\n                'Active' | translate\n              }}</span>\n            </div>\n          </c8y-li-body>\n          <c8y-li-action\n            (click)=\"setActive(archive)\"\n            *ngIf=\"hasAdminPermissions && !isLoading && !isActive(archive)\"\n            icon=\"check-square-o\"\n          >\n            {{ 'Set as active`archive`' | translate }}\n          </c8y-li-action>\n          <c8y-li-action (click)=\"downloadArchive(archive)\" icon=\"download\">\n            {{ 'Download`archive`' | translate }}\n          </c8y-li-action>\n          <c8y-li-action\n            (click)=\"deleteArchive(archive)\"\n            *ngIf=\"\n              hasAdminPermissions &&\n              archives.length > 1 &&\n              !checkIfLast(archive) &&\n              !isActive(archive)\n            \"\n            icon=\"delete\"\n          >\n            {{ 'Delete`archive`' | translate }}\n          </c8y-li-action>\n          <c8y-li-action\n            (click)=\"reactivateArchive()\"\n            *ngIf=\"hasAdminPermissions && canReactivate && isActive(archive)\"\n            icon=\"undo\"\n          >\n            {{ 'Reactivate archive' | translate }}\n          </c8y-li-action>\n        </c8y-li>\n      </c8y-li-timeline>\n    </c8y-list-group>\n  </div>\n</div>\n<div class=\"card-footer\" *ngIf=\"!isLoading && hasAdminPermissions\">\n  <c8y-form-group class=\"m-auto\">\n    <c8y-upload-archive [(application)]=\"application\" (refresh)=\"onRefresh()\"></c8y-upload-archive>\n  </c8y-form-group>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { ApplicationService, IApplication, IApplicationManagedObject } from '@c8y/client';\nimport {\n  AlertService,\n  ContextRouteService,\n  gettext,\n  ModalService,\n  Status,\n  TabsService\n} from '@c8y/ngx-components';\nimport { isEmpty } from 'lodash';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n  selector: 'c8y-subscription-modal',\n  templateUrl: './subscription-modal.component.html'\n})\nexport class SubscriptionModalComponent implements OnInit {\n  readonly RETRY_TIMEOUT = 3000;\n  application: IApplication;\n  message: string;\n  isLoading = false;\n  result: Promise<void> = new Promise(resolve => {\n    this._resolve = resolve;\n  });\n  isSubscribed: boolean;\n  retryCounter = 0;\n\n  private readonly TABS: string[] = ['Logs', 'Status'];\n  private _resolve: (value: void | PromiseLike<void>) => void;\n\n  constructor(\n    private bsModalRef: BsModalRef,\n    private ecosystemService: EcosystemService,\n    private tabsService: TabsService,\n    private modal: ModalService,\n    private applicationService: ApplicationService,\n    private alertService: AlertService,\n    private contextRouteService: ContextRouteService\n  ) {}\n\n  ngOnInit() {\n    if (this.isSubscribed) {\n      this.unsubscribe();\n    } else {\n      this.subscribe();\n    }\n  }\n\n  async subscribe(): Promise<void> {\n    this.retryCounter = 0;\n    this.isLoading = true;\n    this.message = gettext('Subscribing…');\n    await this.ecosystemService.subscribeApp(this.application);\n    this.getStatusDetails('subscribe');\n  }\n\n  async unsubscribe(): Promise<void> {\n    this.retryCounter = 0;\n    this.isLoading = true;\n    this.message = gettext('Unsubscribing…');\n    await this.ecosystemService.unsubscribeApp(this.application);\n    this.getStatusDetails('unsubscribe');\n  }\n\n  private async getStatusDetails(action: 'subscribe' | 'unsubscribe') {\n    this.contextRouteService.refreshContext();\n    const actionSuccessful =\n      action === 'subscribe' ? await this.onSubscribe() : this.onUnsubscribe();\n    if (actionSuccessful) {\n      return this.hideSubscriptionModal();\n    }\n    if (this.retryCounter === 4) {\n      this.showWarningModal(action);\n      return this.hideSubscriptionModal();\n    }\n    this.retryCounter += 1;\n    setTimeout(async () => {\n      this.getStatusDetails(action);\n    }, this.RETRY_TIMEOUT);\n  }\n\n  private async onSubscribe(): Promise<boolean> {\n    try {\n      if (!this.application.activeVersionId) {\n        return true;\n      }\n      const res: IApplicationManagedObject = (\n        await this.applicationService.getStatusDetails(this.application)\n      ).data[0];\n      return this.shouldShowMSSpecificTabs(res);\n    } catch (er) {\n      this.alertService.addServerFailure(er);\n    }\n  }\n\n  // Checks if the UI should show tabs with logs and status\n  private shouldShowMSSpecificTabs(mo: IApplicationManagedObject): boolean {\n    return !isEmpty(mo.c8y_Status?.instances) && !!mo.c8y_SupportedLogs;\n  }\n\n  private onUnsubscribe(): boolean {\n    return !this.tabsService.areAvailable(this.TABS);\n  }\n\n  private hideSubscriptionModal(): void {\n    this._resolve();\n    this.bsModalRef.hide();\n    this.isLoading = false;\n  }\n\n  private showWarningModal(action: string): void {\n    const title = gettext('Warning');\n    const body =\n      action === 'subscribe'\n        ? gettext('Something went wrong, please refresh the page or resubscribe the application.')\n        : gettext(\n            'Something went wrong, please refresh the page or retry to unsubscribe from the application.'\n          );\n    this.modal.acknowledge(title, body, Status.WARNING, gettext('Close'));\n  }\n}\n","<div class=\"viewport-modal\">\n  <div class=\"modal-header dialog-header\">\n    <i c8yIcon=\"c8y-atom\"></i>\n    <h4 id=\"modal-title\">{{ message | translate }}</h4>\n  </div>\n  <div class=\"modal-body\" id=\"modal-body\" *ngIf=\"isLoading\">\n    <div class=\"p-16 text-center\">\n      <c8y-loading></c8y-loading>\n    </div>\n  </div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { ApplicationState, EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\n@Pipe({\n  name: 'appState',\n  pure: true\n})\nexport class AppStatePipe implements PipeTransform {\n  constructor(private ecosystemService: EcosystemService) {}\n\n  transform(\n    app: IApplication,\n    arg: keyof ApplicationState\n  ): ApplicationState[keyof ApplicationState] {\n    const appState = this.ecosystemService.getAppState(app);\n    return appState[arg];\n  }\n}\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { WizardConfig, WizardModalService, gettext } from '@c8y/ngx-components';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\nimport { ApplicationType } from '@c8y/client';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { IApplication } from '@c8y/client';\nimport { UpdateType } from './apps-to-update-remotes-select.model';\nimport { Subject, BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\n\n@Component({\n  templateUrl: './apps-to-update-remotes-select.component.html',\n  selector: 'c8y-apps-to-update-remotes-select'\n})\nexport class AppsToUpdateRemotesSelectComponent implements OnInit, OnDestroy {\n  @Input() apps: IApplication[];\n  @Input() updateType: UpdateType;\n  @Input() pluginName: string;\n  @Input() appsDisabled: Set<IApplication['id']>;\n  private destroy$ = new Subject<void>();\n  filterTerm$: BehaviorSubject<string> = new BehaviorSubject('');\n  filteredApps$: Observable<IApplication[]> = new BehaviorSubject([]);\n  textConfig: {\n    header: string;\n    applyButton: string;\n  };\n  appsToUpdateRemotes: IApplication[] = [];\n  result: Promise<IApplication[]> = new Promise((resolve, reject) => {\n    this._update = resolve;\n    this._cancel = reject;\n  });\n  private _update: (apps: IApplication[]) => void;\n  private _cancel: (reason?: any) => void;\n\n  constructor(\n    private bsModalRef: BsModalRef,\n    private wizardModalService: WizardModalService,\n    private ecosystemService: EcosystemService\n  ) {}\n\n  ngOnInit(): void {\n    this.filteredApps$ = combineLatest([of(this.apps), this.filterTerm$]).pipe(\n      map(([apps, filterTerm]) =>\n        filterTerm.trim().length === 0\n          ? apps\n          : apps.filter((application: IApplication) =>\n              this.ecosystemService.filterContainString(application.name, filterTerm)\n            )\n      )\n    );\n    this.textConfig =\n      this.updateType === 'install'\n        ? {\n            header: gettext('Select applications to install the plugin to'),\n            applyButton: gettext('Install')\n          }\n        : {\n            header: gettext('Select applications to uninstall the plugin from'),\n            applyButton: gettext('Uninstall')\n          };\n  }\n\n  cancel() {\n    this.bsModalRef.hide();\n    this._cancel();\n  }\n\n  setSelectedApps(selected: boolean, app: IApplication) {\n    selected\n      ? this.appsToUpdateRemotes.push(app)\n      : (this.appsToUpdateRemotes = this.appsToUpdateRemotes.filter(\n          application => app.key !== application.key\n        ));\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  async duplicateApp() {\n    const wizardConfig: WizardConfig = {\n      headerText: gettext('Duplicate application'),\n      headerIcon: 'c8y-copy'\n    };\n\n    const initialState: Record<string, unknown> = {\n      wizardConfig,\n      componentInitialState: {\n        noBackButton: true\n      },\n      id: 'duplicateApplication'\n    };\n\n    const modalOptions: ModalOptions = { initialState };\n\n    const modalRef = this.wizardModalService.show(modalOptions);\n    modalRef.content.onClose.pipe(takeUntil(this.destroy$)).subscribe(async () => {\n      this.apps = await this.getOwnedHostedApps();\n      this.ngOnInit();\n    });\n  }\n\n  async apply() {\n    this._update(this.appsToUpdateRemotes);\n    this.bsModalRef.hide();\n  }\n\n  private async getOwnedHostedApps(): Promise<IApplication[]> {\n    return (await this.ecosystemService.getWebApplications()).filter(\n      app => this.ecosystemService.isOwner(app) && app.type !== ApplicationType.EXTERNAL\n    );\n  }\n}\n","<div class=\"viewport-modal\">\n  <div class=\"modal-header dialog-header\">\n    <i [c8yIcon]=\"'c8y-modules'\"></i>\n    <div class=\"modal-title h4\" id=\"modal-title\" translate>Custom applications</div>\n  </div>\n  <div class=\"inner-scroll\" id=\"modal-body\">\n    <div class=\"p-16 text-center separator-bottom sticky-top bg-component\">\n      <p class=\"text-medium\">\n        {{ textConfig.header | translate }}\n      </p>\n      <c8y-filter (onSearch)=\"filterTerm$.next($event)\"></c8y-filter>\n    </div>\n    <c8y-list-group *ngIf=\"apps.length; else emptyList\">\n      <c8y-li\n        [ngClass]=\"{ disabled: updateType === 'install' && appsDisabled.has(app.id) }\"\n        *ngFor=\"let app of filteredApps$ | async\"\n        data-cy=\"apps-to-update-remotes-select--applications-list\"\n      >\n        <c8y-li-checkbox (onSelect)=\"setSelectedApps($event, app)\" data-cy=\"apps-to-update-remotes-select--app-checkbox\"></c8y-li-checkbox>\n        <c8y-li-icon class=\"p-l-0 icon-32\">\n          <c8y-app-icon\n            class=\"list-group-icon\"\n            [app]=\"app\"\n            [contextPath]=\"app.contextPath\"\n            [name]=\"app.name\"\n          ></c8y-app-icon>\n        </c8y-li-icon>\n        <div class=\"d-flex\">\n          <div class=\"p-r-8\">\n            <p class=\"text-medium\" [innerText]=\"app | humanizeAppName | async\"></p>\n            <p class=\"small text-muted\">{{ app.description }}</p>\n          </div>\n          <span class=\"label m-l-auto a-s-start\" [ngClass]=\"app | appState: 'class'\">\n            {{ app | appState: 'label' | translate }}\n          </span>\n        </div>\n      </c8y-li>\n    </c8y-list-group>\n  </div>\n  <div class=\"modal-footer\">\n    <button\n      class=\"btn btn-default\"\n      title=\"{{ 'Cancel' | translate }}\"\n      type=\"button\"\n      (click)=\"cancel()\"\n    >\n      {{ 'Cancel' | translate }}\n    </button>\n    <button\n      class=\"btn btn-primary\"\n      title=\"{{ textConfig.applyButton | translate }}\"\n      [disabled]=\"appsToUpdateRemotes.length === 0\"\n      (click)=\"apply()\"\n    >\n      {{ textConfig.applyButton | translate }}\n    </button>\n  </div>\n</div>\n<ng-template #emptyList>\n  <c8y-ui-empty-state\n    [icon]=\"'c8y-modules'\"\n    [title]=\"'No custom applications available.' | translate\"\n    *ngIf=\"updateType !== 'install'\"\n    [horizontal]=\"true\"\n  ></c8y-ui-empty-state>\n  <ng-container *ngIf=\"updateType === 'install'\">\n    <c8y-ui-empty-state\n      [icon]=\"'c8y-modules'\"\n      [title]=\"'No custom applications available.' | translate\"\n      [subtitle]=\"'Create a custom application by duplicating an existing one.' | translate\"\n      [horizontal]=\"true\"\n    >\n      <button\n        class=\"btn btn-sm btn-default m-t-8\"\n        title=\"{{ 'Duplicate' | translate }}\"\n        (click)=\"duplicateApp()\"\n      >\n        {{ 'Duplicate' | translate }}\n      </button>\n    </c8y-ui-empty-state>\n  </ng-container>\n</ng-template>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ApplicationPlugin, PackageType, PluginsService } from '@c8y/ngx-components';\n\n@Component({\n  selector: 'c8y-plugin-list-item',\n  templateUrl: './plugin-list-item.component.html'\n})\nexport class PluginListItemComponent implements OnInit {\n  @Input() plugin: ApplicationPlugin;\n  @Input() selectable: boolean;\n  @Input() hideSource = false;\n  @Output() isItemSelected: EventEmitter<boolean> = new EventEmitter();\n\n  packageType: PackageType = PackageType.UNKNOWN;\n\n  readonly PACKAGE_TYPE = PackageType;\n\n  constructor(private pluginService: PluginsService) {}\n\n  ngOnInit() {\n    this.packageType = this.pluginService.getPackageType(this.plugin.originApp);\n  }\n\n  onChange(event) {\n    this.plugin.selected = !this.plugin.selected;\n    this.isItemSelected.next(event);\n  }\n}\n","<c8y-li-checkbox\n  class=\"p-r-16 p-l-0\"\n  (change)=\"onChange($event.target.checked)\"\n  *ngIf=\"selectable\"\n  [disabled]=\"plugin.installed\"\n  [selected]=\"plugin.selected\"\n></c8y-li-checkbox>\n<c8y-li-icon class=\"p-l-0 text-center\">\n  <i class=\"c8y-plugin-icon\">\n    <span>{{ plugin.name?.substr(0, 2) }}</span>\n  </i>\n</c8y-li-icon>\n<div class=\"p-relative\">\n  <div [ngClass]=\"{ 'p-r-8': selectable }\">\n    <p>\n      <span class=\"text-medium\">{{ plugin.name }}</span>\n      <em class=\"text-muted small m-l-8\">{{ plugin.version }}</em>\n      <span *ngIf=\"plugin.installed\">\n        <i\n          class=\"text-success\"\n          [c8yIcon]=\"'check-circle'\"\n        ></i>\n        <em\n          class=\"text-muted small\"\n          translate\n        >\n          Installed`plugins`\n        </em>\n      </span>\n    </p>\n    <p class=\"small l-h-tight\">{{ plugin.description }}</p>\n  </div>\n\n  <span\n    class=\"tag tag--info a-s-start m-t-8\"\n    *ngIf=\"selectable && !hideSource\"\n  >\n    {{ plugin.contextPath }}\n  </span>\n\n  <span\n    class=\"tag a-s-start m-t-8 m-l-4\"\n    [ngClass]=\"{\n      'tag--default': packageType === PACKAGE_TYPE.COMMUNITY,\n      'tag--primary': packageType === PACKAGE_TYPE.OFFICIAL\n    }\"\n  >\n    {{ plugin.originApp?.label || plugin.originApp?.manifest?.label | translatePackageLabel }}\n  </span>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ApplicationRemotePlugins, ApplicationType, IApplication } from '@c8y/client';\nimport {\n  AlertService,\n  ApplicationPlugin,\n  GainsightService,\n  PluginsService,\n  gettext,\n  HumanizeAppNamePipe\n} from '@c8y/ngx-components';\nimport {\n  EcosystemService,\n  PRODUCT_EXPERIENCE_ECOSYSTEM\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, firstValueFrom, Observable } from 'rxjs';\nimport { AppsToUpdateRemotesSelectComponent } from './apps-to-update-remotes-select.component';\nimport { UpdateType } from './apps-to-update-remotes-select.model';\nimport { pick } from 'lodash-es';\n\n@Component({\n  selector: 'c8y-plugin-list',\n  templateUrl: './plugin-list.component.html'\n})\nexport class PluginListComponent {\n  CURRENT_LOCATION = location.href;\n\n  @Input() plugins$: Observable<ApplicationPlugin[]>;\n  @Input() emptyListText = '';\n  @Input() selectable: boolean;\n  @Input() hideSource = false;\n  /**\n   * Shows the install button for each plugin separately. Currently used in package-details view.\n   */\n  @Input() installable = false;\n  @Input() package: IApplication;\n  @Output() selectedItems: EventEmitter<ApplicationPlugin[]> = new EventEmitter();\n  remotePlugins$: BehaviorSubject<ApplicationRemotePlugins> = new BehaviorSubject({});\n  selectedPlugins: { [key: string]: ApplicationPlugin } = {};\n  updatingPluginId: Record<UpdateType, string> = { install: '', uninstall: '' };\n  appsDisabled: Set<IApplication['id']> = new Set<IApplication['id']>();\n\n  constructor(\n    private ecosystemService: EcosystemService,\n    private bsModalService: BsModalService,\n    private pluginsService: PluginsService,\n    private alertService: AlertService,\n    private translateService: TranslateService,\n    private gainsightService: GainsightService,\n    private humanizeAppNamePipe: HumanizeAppNamePipe\n  ) {}\n\n  updateSelectedItems(selected: boolean, plugin: ApplicationPlugin) {\n    this.selectedPlugins[plugin.id] = selected ? plugin : undefined;\n    const onlyInstalledPlugins = Object.values(this.selectedPlugins).filter(Boolean);\n    this.selectedItems.emit(onlyInstalledPlugins);\n  }\n\n  async installPlugin(plugin: ApplicationPlugin) {\n    await this.updateAppRemotes(plugin, 'install');\n  }\n\n  async uninstallPlugin(plugin: ApplicationPlugin) {\n    await this.updateAppRemotes(plugin, 'uninstall');\n  }\n\n  private async updateAppRemotes(plugin: ApplicationPlugin, updateType: UpdateType) {\n    this.updatingPluginId[updateType] = plugin?.id;\n    let initialState: Pick<\n      AppsToUpdateRemotesSelectComponent,\n      'apps' | 'updateType' | 'pluginName' | 'appsDisabled'\n    >;\n    try {\n      const apps = await this.getAppsForUpdate(plugin, updateType);\n      initialState = {\n        apps,\n        updateType,\n        pluginName: plugin.name,\n        appsDisabled: this.appsDisabled\n      };\n    } catch (e) {\n      this.alertService.addServerFailure(e);\n      this.updatingPluginId[updateType] = '';\n      return;\n    }\n\n    let selectedApps: IApplication[];\n    try {\n      selectedApps = await this.selectApps(initialState);\n      if (!selectedApps) {\n        this.updatingPluginId[updateType] = '';\n        return;\n      }\n    } catch {\n      // unreached\n    }\n\n    if (updateType === 'install') {\n      const isArchived = await this.ecosystemService.verifyArchived([plugin]);\n      if (!isArchived) {\n        this.updatingPluginId[updateType] = '';\n        return;\n      }\n\n      const licensesVerifiedByUser = await this.ecosystemService.verifyLicenses([plugin]);\n      if (!licensesVerifiedByUser) {\n        this.updatingPluginId[updateType] = '';\n        return;\n      }\n    }\n\n    for (const app of selectedApps) {\n      try {\n        if (updateType === 'install') {\n          const versionIsCompatible = await this.ecosystemService.verifyPluginVersionsCompatibility(\n            [plugin],\n            app\n          );\n\n          if (!versionIsCompatible) {\n            continue;\n          }\n        }\n\n        await this.handleRemotesUpdate(app, plugin, updateType);\n        const humanizedAppName = await firstValueFrom(this.humanizeAppNamePipe.transform(app));\n        const successText =\n          updateType === 'install'\n            ? this.translateService.instant(\n                gettext('Plugin installed to application \"{{ appName }}\".'),\n                {\n                  appName: humanizedAppName\n                }\n              )\n            : this.translateService.instant(\n                gettext('Plugin uninstalled from application \"{{ appName }}\".'),\n                { appName: humanizedAppName }\n              );\n        this.alertService.success(successText);\n        this.onUpdateEventHandleGS(plugin, app, updateType);\n      } catch (error) {\n        this.onUpdateEventHandleGS(plugin, app, updateType, error);\n      }\n    }\n    this.updatingPluginId[updateType] = '';\n  }\n\n  private onUpdateEventHandleGS(\n    plugin: ApplicationPlugin,\n    app: IApplication,\n    updateType: UpdateType,\n    error?: unknown\n  ) {\n    const pluginCustomEventInfo = pick(plugin, [\n      'name',\n      'contextPath',\n      'module',\n      'version',\n      'type',\n      'id'\n    ] satisfies (keyof ApplicationPlugin)[]);\n\n    const gsEventResult =\n      updateType === 'install'\n        ? PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.PLUGIN_INSTALLED\n        : PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.PLUGIN_REMOVED;\n\n    const eventData = {\n      component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PLUGIN_LIST,\n      result: error || gsEventResult,\n      url: this.CURRENT_LOCATION,\n      ...pluginCustomEventInfo,\n      targetApplicationName: app.name,\n      targetApplicationContextPath: app.contextPath,\n      ...(error && { error })\n    };\n\n    this.gainsightService.triggerEvent(\n      PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_PLUGINS,\n      eventData\n    );\n  }\n\n  private async getAppsForUpdate(plugin: ApplicationPlugin, updateType: UpdateType) {\n    let apps = (await this.ecosystemService.getWebApplications()).filter(\n      app => this.ecosystemService.isOwner(app) && app.type !== ApplicationType.EXTERNAL\n    );\n\n    if (updateType === 'install') {\n      this.appsDisabled.clear();\n      for (const app of apps) {\n        if (this.isPluginInstalledInApp(plugin, app)) {\n          this.appsDisabled.add(app.id);\n        }\n      }\n    }\n\n    if (updateType === 'uninstall') {\n      const installedApps: IApplication[] = [];\n      for (const app of apps) {\n        if (this.isPluginInstalledInApp(plugin, app)) {\n          installedApps.push(app);\n        }\n      }\n      apps = installedApps;\n    }\n    return apps;\n  }\n\n  private isPluginInstalledInApp(plugin: ApplicationPlugin, app: IApplication): boolean {\n    const appRemotes = this.pluginsService.getMFRemotes(app) || {};\n\n    for (const [remoteName, modules] of Object.entries(appRemotes)) {\n      const pluginFromThisPackageIsInstalled =\n        this.getPluginContextPathWithoutVersion(remoteName) === plugin.contextPath;\n      const specificPluginModuleIsInstalled = modules.some(module => module === plugin.module);\n      if (pluginFromThisPackageIsInstalled && specificPluginModuleIsInstalled) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  private getPluginContextPathWithoutVersion(remote: string) {\n    return remote.split('@')[0];\n  }\n\n  private async handleRemotesUpdate(\n    application: IApplication,\n    plugin: ApplicationPlugin,\n    updateType: UpdateType\n  ) {\n    try {\n      // When remotes object is not set in the configuration object of an application.\n      // Fallback to setInitialRemotes is triggered.\n      const { remotes, excludedRemotes } = await (updateType === 'install'\n        ? this.pluginsService.addRemotes(application, plugin)\n        : this.pluginsService.removeRemotes(application, this.getAllPluginsToRemove(plugin)));\n      if (!application.config) {\n        application.config = {};\n      }\n      application.config.remotes = remotes;\n      application.config.excludedRemotes = excludedRemotes;\n      const actualRemotes = this.pluginsService.getMFRemotes(application);\n      return this.emitRemotes(actualRemotes);\n    } catch (er) {\n      if (er) {\n        this.alertService.addServerFailure(er);\n      }\n      throw er;\n    }\n  }\n\n  private getAllPluginsToRemove(plugin: ApplicationPlugin): ApplicationPlugin[] {\n    return this.package.applicationVersions.map(av => ({\n      id: `${plugin.contextPath}@${av.version}/${plugin.module}`,\n      idLatest: `${plugin.contextPath}/${plugin.module}`,\n      module: plugin.module,\n      path: plugin.path\n    }));\n  }\n\n  private emitRemotes(remotes: ApplicationRemotePlugins): ApplicationRemotePlugins {\n    this.remotePlugins$.next(remotes);\n    return { ...this.remotePlugins$.value };\n  }\n\n  private async selectApps(\n    initialState: Pick<\n      AppsToUpdateRemotesSelectComponent,\n      'apps' | 'updateType' | 'pluginName' | 'appsDisabled'\n    >\n  ): Promise<IApplication[]> {\n    try {\n      return await (\n        this.bsModalService.show(AppsToUpdateRemotesSelectComponent, {\n          class: 'modal-sm',\n          ariaDescribedby: 'modal-body',\n          ariaLabelledBy: 'modal-title',\n          initialState,\n          ignoreBackdropClick: true,\n          keyboard: false\n        }).content as AppsToUpdateRemotesSelectComponent\n      ).result;\n    } catch (er) {\n      return;\n    }\n  }\n}\n","<c8y-list-group class=\"bg-inherit\">\n  <ng-container *ngIf=\"(plugins$ | async)?.length !== 0; else emptyList\">\n    <ng-container *ngFor=\"let plugin of plugins$ | async\">\n      <c8y-li [ngClass]=\"{ disabled: plugin.installed }\" class=\"bg-inherit\">\n        <c8y-plugin-list-item\n          (isItemSelected)=\"updateSelectedItems($event, plugin)\"\n          [plugin]=\"plugin\"\n          [selectable]=\"selectable\"\n          [hideSource]=\"hideSource\"\n          class=\"d-flex\"\n        ></c8y-plugin-list-item>\n        <div class=\"p-l-40 m-t-4\">\n          <button\n            *ngIf=\"installable\"\n            (click)=\"uninstallPlugin(plugin)\"\n            [ngClass]=\"{ 'btn-pending': plugin.id === updatingPluginId.uninstall }\"\n            [disabled]=\"updatingPluginId.uninstall && plugin.id !== updatingPluginId.uninstall\"\n            class=\"btn btn-danger btn-sm m-l-4\"\n            title=\"{{ 'Uninstall plugin' | translate }}\"\n            data-cy=\"plugin-list--uninstall-plugin-button\"\n            translate\n          >\n            Uninstall plugin\n          </button>\n          <button\n            *ngIf=\"installable\"\n            (click)=\"installPlugin(plugin)\"\n            [ngClass]=\"{ 'btn-pending': plugin.id === updatingPluginId.install }\"\n            [disabled]=\"updatingPluginId.install && plugin.id !== updatingPluginId.install\"\n            class=\"btn btn-default btn-sm m-l-8\"\n            title=\"{{ 'Install plugin' | translate }}\"\n            data-cy=\"plugin-list--install-plugin-button\"\n            translate\n          >\n            Install plugin\n          </button>\n        </div>\n      </c8y-li>\n    </ng-container>\n  </ng-container>\n</c8y-list-group>\n<ng-template #emptyList>\n  <div class=\"c8y-empty-state text-left\" *ngIf=\"emptyListText\">\n    <h1 c8yIcon=\"plugin\"></h1>\n    <p>\n      {{ emptyListText | translate }}\n    </p>\n  </div>\n</ng-template>\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { IApplication, InventoryService } from '@c8y/client';\nimport { ApplicationPlugin, PluginsService } from '@c8y/ngx-components';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\nimport { PluginsExportScopes } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\n\n@Component({\n  selector: 'c8y-update-application-modal',\n  templateUrl: './update-application-modal.component.html'\n})\nexport class UpdateApplicationModalComponent implements OnInit {\n  @ViewChild('modal', { static: false }) private modal;\n  isUpdateOngoing = false;\n  updateFailure = false;\n  sourcePackage: IApplication;\n  application: IApplication;\n  result: Promise<void> = new Promise((resolve, reject) => {\n    this._resolve = resolve;\n    this._reject = reject;\n  });\n  orphanedPlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n  newPlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n\n  private _resolve: (value: void | PromiseLike<void>) => void;\n  private _reject: (value: void | PromiseLike<void>) => void;\n\n  constructor(\n    private inventoryService: InventoryService,\n    private ecosystemService: EcosystemService,\n    private pluginsService: PluginsService\n  ) {}\n\n  ngOnInit(): void {\n    const hasDelta = this.getRemoteDelta();\n    if (!hasDelta) {\n      // start update directly if no remote delta detected\n      this.updateApplication();\n    }\n  }\n\n  /**\n   * Checks if there is a delta between the current application and the source package remotes.\n   * @returns {boolean} true if there is a delta between the current application and the source package remotes.\n   */\n  getRemoteDelta() {\n    const currentRemotes = this.pluginsService.getMFExports(this.application, []);\n    const possibleNewRemotes = this.pluginsService.getMFExports(this.sourcePackage, []);\n    const installedRemotes = this.pluginsService.getMFRemotes(this.application);\n    const installedRemotesIds = PluginsService.convertInstalledRemotesToIds(installedRemotes);\n\n    const allRemotesToRemove = this.getAllRemotesToRemove(\n      currentRemotes,\n      possibleNewRemotes,\n      installedRemotesIds\n    );\n\n    const allRemotesToAdd = this.getAllRemotesToAdd(possibleNewRemotes, currentRemotes);\n\n    this.orphanedPlugins$.next(allRemotesToRemove);\n    this.newPlugins$.next(allRemotesToAdd);\n\n    return allRemotesToRemove.length !== 0 || allRemotesToAdd.length !== 0;\n  }\n\n  close() {\n    this._reject();\n    this.modal._dismiss();\n  }\n\n  done() {\n    if (!this.updateFailure) {\n      this._resolve();\n      this.modal._dismiss();\n      return;\n    }\n    this._reject();\n    this.modal._dismiss();\n  }\n\n  async updateApplication() {\n    try {\n      this.isUpdateOngoing = true;\n      const toInstallPlugins = this.newPlugins$.value.filter(({ selected }) => selected === true);\n      const toRemovePlugins = this.orphanedPlugins$.value;\n      this.orphanedPlugins$.next([]);\n      this.newPlugins$.next([]);\n      if (toRemovePlugins.length > 0) {\n        const remotes = await this.pluginsService.removeRemotes(this.application, toRemovePlugins);\n        this.application.config.remotes = remotes;\n      }\n      if (toInstallPlugins.length > 0) {\n        const remotes = await this.pluginsService.addRemotes(this.application, toInstallPlugins);\n        this.application.config.remotes = remotes;\n      }\n      const binaryMoId = this.sourcePackage.activeVersionId;\n      await this.inventoryService.detail(binaryMoId); // only trying if we can access it\n      await this.ecosystemService.uploadBinaryFromOtherPackage(\n        this.sourcePackage,\n        this.application,\n        this.sourcePackage.activeVersionId\n      );\n    } catch (e) {\n      if (e.res?.status === 404) {\n        try {\n          this.updateFailure = !(await this.ecosystemService.fallbackToClone(\n            this.application,\n            this.sourcePackage\n          ));\n        } catch (ex) {\n          this.updateFailure = true;\n          this.ecosystemService.alertError(e);\n        }\n      } else {\n        this.updateFailure = true;\n        this.ecosystemService.alertError(e);\n      }\n    } finally {\n      this.isUpdateOngoing = false;\n    }\n  }\n\n  private getAllRemotesToAdd(\n    possibleNewRemotes: ApplicationPlugin[],\n    currentRemotes: ApplicationPlugin[]\n  ) {\n    return possibleNewRemotes\n      .filter(possibleNewRemote => {\n        const isUnchanged = !!currentRemotes.some(\n          currentRemote =>\n            PluginsService.createPluginId(\n              this.application.contextPath,\n              possibleNewRemote.module,\n              '',\n              true\n            ) === currentRemote.idLatest\n        );\n\n        const isSelf =\n          possibleNewRemote.scope === PluginsExportScopes.SELF ||\n          possibleNewRemote.scope === PluginsExportScopes.SELF_OPTIONAL;\n\n        return !isUnchanged && isSelf;\n      })\n      .map(newRemote => {\n        newRemote.contextPath = this.application.contextPath;\n        newRemote.id = `${newRemote.contextPath}/${newRemote.module}`;\n        newRemote.selected = newRemote.scope === PluginsExportScopes.SELF;\n        return newRemote;\n      });\n  }\n\n  private getAllRemotesToRemove(\n    currentRemotes: ApplicationPlugin[],\n    possibleNewRemotes: ApplicationPlugin[],\n    installedRemotesIds: string[]\n  ) {\n    return currentRemotes\n      .filter(currentRemote => {\n        const isUnchanged = !!possibleNewRemotes.some(\n          newRemote =>\n            PluginsService.createPluginId(\n              this.application.contextPath,\n              newRemote.module,\n              '',\n              true\n            ) === currentRemote.idLatest\n        );\n        const isInstalled = installedRemotesIds\n          ? !!installedRemotesIds.some(\n              currentInstalled =>\n                currentRemote.id === currentInstalled || currentRemote.idLatest === currentInstalled\n            )\n          : false;\n\n        const isSelf =\n          currentRemote.scope === PluginsExportScopes.SELF ||\n          currentRemote.scope === PluginsExportScopes.SELF_OPTIONAL;\n\n        return !isUnchanged && isInstalled && isSelf;\n      })\n      .map(toRemoveRemote => {\n        toRemoveRemote.contextPath = this.application.contextPath;\n        toRemoveRemote.id = `${toRemoveRemote.contextPath}/${toRemoveRemote.module}`;\n        toRemoveRemote.selected = true;\n        return toRemoveRemote;\n      });\n  }\n}\n","<c8y-modal\n  [title]=\"'Update application' | translate\"\n  [headerClasses]=\"'dialog-header'\"\n  [customFooter]=\"true\"\n  #modal\n>\n  <ng-container c8y-modal-title>\n    <span class=\"dlt-c8y-icon-installing-updates\"></span>\n  </ng-container>\n\n  <ng-container\n    *ngIf=\"\n      (orphanedPlugins$ | async).length > 0 || (newPlugins$ | async).length > 0;\n      else updateProgress\n    \"\n  >\n    <p\n      class=\"text-center text-break-word p-24 text-14\"\n      translate\n    >\n      Updating this blueprint will change the default plugins. Review the plugin changes before\n      proceeding.\n    </p>\n    <c8y-list-group *ngIf=\"(orphanedPlugins$ | async).length > 0\">\n      <c8y-li [collapsed]=\"true\">\n        <c8y-li-icon>\n          <span class=\"badge badge-danger\">{{ (orphanedPlugins$ | async).length }}</span>\n        </c8y-li-icon>\n        <c8y-li-body>\n          <div translate>Orphaned plugins</div>\n        </c8y-li-body>\n        <c8y-li-footer translate>\n          Some plugins are not contained in the new version of this blueprint and will therefore get\n          removed.\n        </c8y-li-footer>\n        <c8y-li-collapse>\n          <c8y-plugin-list\n            class=\"m-t-16\"\n            [emptyListText]=\"'No plugins available' | translate\"\n            [plugins$]=\"orphanedPlugins$\"\n            [selectable]=\"false\"\n            [hideSource]=\"true\"\n          ></c8y-plugin-list>\n        </c8y-li-collapse>\n      </c8y-li>\n    </c8y-list-group>\n\n    <c8y-list-group *ngIf=\"(newPlugins$ | async).length > 0\">\n      <c8y-li [collapsed]=\"false\">\n        <c8y-li-icon>\n          <span class=\"badge badge-success\">{{ (newPlugins$ | async).length }}</span>\n        </c8y-li-icon>\n        <c8y-li-body>\n          <div translate>New plugins added</div>\n        </c8y-li-body>\n        <c8y-li-footer translate>\n          This blueprint will add new plugins. Please choose which you want to install.\n        </c8y-li-footer>\n        <c8y-li-collapse>\n          <c8y-plugin-list\n            class=\"m-t-16\"\n            [emptyListText]=\"'No plugins available' | translate\"\n            [plugins$]=\"newPlugins$\"\n            [selectable]=\"true\"\n            [hideSource]=\"false\"\n          ></c8y-plugin-list>\n        </c8y-li-collapse>\n      </c8y-li>\n    </c8y-list-group>\n  </ng-container>\n\n  <ng-container c8y-modal-footer-custom>\n    <div\n      class=\"modal-footer\"\n      *ngIf=\"\n        (orphanedPlugins$ | async).length > 0 || (newPlugins$ | async).length > 0;\n        else updateProgressButtons\n      \"\n    >\n      <button\n        class=\"btn btn-default\"\n        title=\"{{ 'Close' | translate }}\"\n        (click)=\"close()\"\n        [disabled]=\"isUpdateOngoing\"\n      >\n        {{ 'Close' | translate }}\n      </button>\n      <button\n        class=\"btn btn-primary\"\n        title=\"{{ 'Continue' | translate }}\"\n        (click)=\"updateApplication()\"\n        *ngIf=\"(orphanedPlugins$ | async).length > 0 || (newPlugins$ | async).length > 0\"\n        [disabled]=\"isUpdateOngoing\"\n      >\n        {{ 'Continue' | translate }}\n      </button>\n    </div>\n  </ng-container>\n\n  <ng-template #updateProgressButtons>\n    <ng-container c8y-modal-footer-custom>\n      <div class=\"modal-footer\">\n        <button\n          class=\"btn btn-default\"\n          title=\"{{ 'Close' | translate }}\"\n          (click)=\"done()\"\n          [disabled]=\"isUpdateOngoing\"\n        >\n          {{ 'Close' | translate }}\n        </button>\n      </div>\n    </ng-container>\n  </ng-template>\n\n  <ng-template #updateProgress>\n    <c8y-loading\n      class=\"text-center d-block p-t-56 p-b-56 m-t-4 m-b-4\"\n      style=\"min-height: 180px\"\n      layout=\"application\"\n      *ngIf=\"isUpdateOngoing\"\n      [message]=\"'Updating…' | translate\"\n    ></c8y-loading>\n\n    <c8y-operation-result\n      type=\"success\"\n      *ngIf=\"!isUpdateOngoing && !updateFailure\"\n      text=\"{{ 'Update completed' | translate }}\"\n      [size]=\"120\"\n      [vertical]=\"true\"\n    ></c8y-operation-result>\n    <c8y-operation-result\n      type=\"error\"\n      *ngIf=\"!isUpdateOngoing && updateFailure\"\n      text=\"{{ 'Failed to update application.' | translate }}\"\n      [size]=\"120\"\n      [vertical]=\"true\"\n    ></c8y-operation-result>\n  </ng-template>\n</c8y-modal>\n","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n  ApplicationService,\n  ApplicationType,\n  BillingMode,\n  IApplication,\n  IManagedObject,\n  InventoryService,\n  Isolation\n} from '@c8y/client';\nimport {\n  AlertService,\n  GainsightService,\n  ModalService,\n  Permissions,\n  PropertiesListItem,\n  ViewContext,\n  gettext\n} from '@c8y/ngx-components';\nimport {\n  ApplicationState,\n  EcosystemService,\n  PRODUCT_EXPERIENCE_ECOSYSTEM,\n  packageProperties\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { SubscriptionModalComponent } from './subscription-modal/subscription-modal.component';\nimport { UpdateApplicationModalComponent } from './update-application-modal/update-application-modal.component';\n\nconst MICROSERVICES_BASE_PATH = '/ecosystem/microservice/microservices';\nconst APPLICATIONS_BASE_PATH = '/ecosystem/application/applications';\n\n@Component({\n  selector: 'c8y-application-properties',\n  templateUrl: './application-properties.component.html'\n})\nexport class ApplicationPropertiesComponent implements OnInit {\n  CURRENT_LOCATION = location.href;\n  formGroup: FormGroup;\n  application: IApplication;\n  binaryMo: IManagedObject;\n  singleTenant = false;\n  subscription = false;\n  canOpenInBrowser: boolean;\n  disableOpenInBrowser: boolean;\n  canDelete: boolean;\n  isOwner: boolean;\n  isSubscribed: boolean;\n  isPackage: boolean;\n  isMicroservice: boolean;\n  isFeature: boolean;\n  isExternal: boolean;\n  isUnpacked: boolean;\n  iconMap = {\n    HOSTED: 'cloud',\n    EXTERNAL: 'external-link-square',\n    MICROSERVICE: 'microchip'\n  };\n  appState: ApplicationState;\n  sourcePackage: IApplication;\n  isLoading = true;\n  isActivityLogSupported: boolean;\n  isCustomMicroservice: boolean;\n  hasAdminPermissions = false;\n  noDescriptionLabel = gettext('No description available.');\n\n  breadcrumbConfig: { icon: string; label: string; path: string };\n  packageProperties: PropertiesListItem[] = [...packageProperties];\n  isUpdateAvailable = false;\n\n  private blueprintApplicationVersion: string;\n\n  constructor(\n    private activatedRoute: ActivatedRoute,\n    private ecosystemService: EcosystemService,\n    private router: Router,\n    private formBuilder: FormBuilder,\n    private applicationService: ApplicationService,\n    private alertService: AlertService,\n    private inventoryService: InventoryService,\n    private permissions: Permissions,\n    private modalService: ModalService,\n    private translate: TranslateService,\n    private bsModalService: BsModalService,\n    private gainsightService: GainsightService\n  ) {}\n\n  async ngOnInit() {\n    this.hasAdminPermissions = this.permissions.hasRole(\n      Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN\n    );\n    await this.refresh();\n  }\n\n  async refresh() {\n    await this.load();\n    this.isUnpacked = this.ecosystemService.isUnpacked(this.application);\n    this.isPackage = this.ecosystemService.isPackage(this.application);\n    this.isFeature = this.ecosystemService.isFeature(this.application);\n    this.isExternal = this.ecosystemService.isExternal(this.application);\n    this.isMicroservice = this.ecosystemService.isMicroservice(this.application);\n    this.appState = this.ecosystemService.getAppState(this.application);\n\n    if (this.isUnpacked) {\n      await this.resolveSourcePackageDetails();\n    }\n\n    this.setBreadcrumbConfig();\n\n    if (this.isCustomMicroservice) {\n      this.loadBinaryMo();\n    }\n  }\n\n  async load() {\n    this.isLoading = true;\n    this.initForm();\n    await this.loadApplication();\n    this.isLoading = false;\n  }\n\n  onApplication(app: IApplication) {\n    if (app.manifest) {\n      this.singleTenant = app.manifest.isolation === Isolation.PER_TENANT;\n      this.subscription = app.manifest.billingMode === BillingMode.SUBSCRIPTION;\n    }\n  }\n\n  cancel() {\n    if (this.application.type === ApplicationType.MICROSERVICE) {\n      this.router.navigateByUrl(MICROSERVICES_BASE_PATH);\n    } else {\n      this.router.navigateByUrl(APPLICATIONS_BASE_PATH);\n    }\n  }\n\n  openApp(app) {\n    this.ecosystemService.openApp(app);\n  }\n\n  getPackage(entityOrId: string | number | IApplication) {\n    return this.applicationService.detail(entityOrId);\n  }\n\n  async delete() {\n    try {\n      await this.ecosystemService.deleteApp(this.application);\n      if (this.application.type === ApplicationType.MICROSERVICE) {\n        this.router.navigateByUrl(MICROSERVICES_BASE_PATH);\n      } else {\n        this.router.navigateByUrl(APPLICATIONS_BASE_PATH);\n      }\n    } catch (ex) {\n      if (ex) {\n        this.alertService.addServerFailure(ex);\n      }\n    }\n  }\n\n  async subscribe() {\n    const initialState = { application: this.application, isSubscribed: false };\n    await this.confirmSubscriptionChange(initialState);\n    this.loadApplication();\n  }\n\n  async unsubscribe() {\n    const initialState = { application: this.application, isSubscribed: true };\n    await this.confirmSubscriptionChange(initialState);\n    this.loadApplication();\n  }\n\n  async loadApplication() {\n    const { id } = this.activatedRoute.snapshot.parent.data.contextData;\n    this.application = await this.ecosystemService.getApplication(id);\n    if (this.application.type === ApplicationType.MICROSERVICE) {\n      this.formGroup.get('name').disable();\n    }\n\n    const updatedApplication = {\n      ...this.application,\n      description: this.getDescription(this.application),\n      icon: this.application.config?.icon?.class || this.application.manifest?.icon?.class\n    };\n\n    this.formGroup.patchValue(updatedApplication);\n    this.canOpenInBrowser = this.ecosystemService.canOpenAppInBrowser(this.application);\n    this.disableOpenInBrowser =\n      this.canOpenInBrowser &&\n      (await this.ecosystemService.isOverwrittenByCustomApp(this.application));\n    this.canDelete = await this.ecosystemService.canDeleteApp(this.application);\n    this.isOwner = this.ecosystemService.isOwner(this.application);\n    this.isActivityLogSupported = this.isActivityLogSupportedByApp(this.application);\n    this.isCustomMicroservice = this.ecosystemService.isCustomMicroservice(this.application);\n    this.isSubscribed = await this.ecosystemService.checkIfSubscribed(this.application);\n    this.onApplication(this.application);\n  }\n\n  async save(app: IApplication) {\n    const icon = this.formGroup.controls['icon'].value;\n    const name = this.formGroup.controls['name'].value;\n    if (icon) {\n      app = {\n        ...app,\n        config: { ...this.application.config, icon: { class: icon }, appTitle: name }\n      };\n    } else if (this.application.config) {\n      app = {\n        ...app,\n        config: { ...this.application.config, appTitle: name }\n      };\n    }\n    app.id = this.application.id;\n    try {\n      const { data } = await this.ecosystemService.updateApp(app);\n      this.formGroup.reset();\n      this.loadApplication();\n      if (data) {\n        this.alertService.success(gettext('Application saved.'));\n      }\n    } catch (ex) {\n      // do nothing\n    }\n  }\n\n  onNewArchive() {\n    this.loadBinaryMo();\n  }\n\n  async updateToLatestVersion() {\n    this.gainsightService.triggerEvent(\n      PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.APPLICATION_PROPERTIES,\n      {\n        component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_PROPERTIES,\n        action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.UPDATE_AVAILABLE,\n        url: this.CURRENT_LOCATION\n      }\n    );\n\n    try {\n      const translatedBody = this.translate.instant(\n        gettext(\n          `You're using the version {{ currentVersion }} of the {{ packageName }} package, the latest version available is {{ latestVersion }}, do you want to update? You can always revert to a previous version in the Activity log panel.`\n        ),\n        {\n          currentVersion: this.application.manifest?.version,\n          latestVersion: this.blueprintApplicationVersion,\n          packageName: this.sourcePackage.name\n        }\n      );\n      await this.modalService.confirm(gettext('Update application'), translatedBody, 'warning', {\n        ok: gettext('Update'),\n        cancel: gettext('Cancel')\n      });\n    } catch {\n      // modal canceled\n      return;\n    }\n\n    try {\n      await this.bsModalService.show<UpdateApplicationModalComponent>(\n        UpdateApplicationModalComponent,\n        {\n          ariaDescribedby: 'modal-body',\n          ariaLabelledBy: 'modal-title',\n          class: 'modal-sm',\n          ignoreBackdropClick: true,\n          initialState: {\n            sourcePackage: this.sourcePackage,\n            application: this.application\n          }\n        }\n      ).content.result;\n    } catch {\n      // modal canceled\n      return;\n    }\n\n    await this.refresh();\n    this.alertService.success(gettext('Application updated.'));\n  }\n\n  private getDescription(application: IApplication): string | undefined {\n    if (!application) {\n      return;\n    }\n    return application.description || application.manifest?.description;\n  }\n\n  private async confirmSubscriptionChange(initialState: {\n    application: IApplication;\n    isSubscribed: boolean;\n  }) {\n    await (\n      this.bsModalService.show(SubscriptionModalComponent, {\n        class: 'modal-sm',\n        ariaDescribedby: 'modal-body',\n        ariaLabelledBy: 'modal-title',\n        initialState,\n        ignoreBackdropClick: true\n      }).content as SubscriptionModalComponent\n    ).result;\n  }\n\n  private async resolveSourcePackageDetails() {\n    try {\n      this.sourcePackage = (await this.getPackage(this.application.manifest?.source)).data;\n      if (this.sourcePackage) {\n        this.packageProperties.push({\n          label: gettext('Source package'),\n          value: this.sourcePackage.name,\n          type: 'link',\n          action: () =>\n            this.router.navigateByUrl(\n              ViewContext.Extension.replace(':id', this.sourcePackage.id.toString())\n            )\n        });\n      }\n    } catch {\n      this.alertService.warning(gettext('Unable to resolve source package.'));\n      return;\n    }\n\n    await this.extractVersionInformation(this.application);\n  }\n\n  private initForm(): void {\n    this.formGroup = this.formBuilder.group({\n      id: [{ value: '' }],\n      name: [Validators.required, Validators.maxLength(120)],\n      key: [Validators.required, Validators.maxLength(120)],\n      contextPath: [Validators.required, Validators.maxLength(120)],\n      description: ['', Validators.maxLength(200)],\n      username: [Validators.required],\n      password: [Validators.required],\n      externalUrl: [Validators.required],\n      icon: [undefined, [Validators.minLength(1)]]\n    });\n    if (!this.hasAdminPermissions) {\n      this.formGroup.disable();\n    }\n  }\n\n  private isActivityLogSupportedByApp(app: IApplication): boolean {\n    return (\n      this.ecosystemService.isOwner(app) &&\n      app.type !== ApplicationType.MICROSERVICE &&\n      app.type !== ApplicationType.EXTERNAL\n    );\n  }\n\n  private setBreadcrumbConfig() {\n    this.breadcrumbConfig = {\n      icon: this.isMicroservice ? 'microchip' : this.isFeature ? 'tab' : 'c8y-modules',\n      label: this.isMicroservice\n        ? gettext('Microservices')\n        : this.isFeature\n          ? gettext('Features')\n          : gettext('Applications'),\n      path: this.isMicroservice\n        ? '/ecosystem/microservice/microservices'\n        : this.isFeature\n          ? 'ecosystem/application/features'\n          : 'ecosystem/application/applications'\n    };\n  }\n\n  private async loadBinaryMo() {\n    this.binaryMo = (await this.inventoryService.detail(this.application.activeVersionId)).data;\n  }\n\n  private async extractVersionInformation(application: IApplication) {\n    if (!application.manifest.isPackage && !application.manifest.source) {\n      return;\n    }\n\n    const blueprintApplicationId = application.manifest?.source;\n    const currentVersion = application.manifest?.version;\n\n    try {\n      const { data: blueprintApplicationVersions } =\n        await this.applicationService.listVersions(blueprintApplicationId);\n      const blueprintLatestVersion = this.ecosystemService.getApplicationVersionObjectByTag(\n        blueprintApplicationVersions,\n        'latest'\n      );\n      this.blueprintApplicationVersion = blueprintLatestVersion.version;\n      this.isUpdateAvailable = this.ecosystemService.shouldUpgradePackage(\n        currentVersion,\n        blueprintLatestVersion\n      );\n    } catch {\n      this.alertService.warning(gettext('Unable to resolve versions of source package.'));\n    }\n  }\n}\n","<c8y-title>{{ application | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"!isMicroservice\">\n  <c8y-breadcrumb-item\n    [icon]=\"'c8y-atom'\"\n    [label]=\"'Ecosystem' | translate\"\n  ></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item\n    [icon]=\"'c8y-modules'\"\n    [label]=\"'Applications' | translate\"\n    [path]=\"'ecosystem/application/applications'\"\n  ></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item\n    [icon]=\"breadcrumbConfig?.icon\"\n    *ngIf=\"isFeature\"\n    [label]=\"breadcrumbConfig?.label\"\n    [path]=\"breadcrumbConfig?.path\"\n  ></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item [label]=\"application | humanizeAppName | async\"></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item [label]=\"'Properties' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-breadcrumb *ngIf=\"isMicroservice\">\n  <c8y-breadcrumb-item\n    [icon]=\"'c8y-atom'\"\n    [label]=\"'Ecosystem' | translate\"\n  ></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item\n    [icon]=\"breadcrumbConfig?.icon\"\n    [label]=\"breadcrumbConfig?.label\"\n    [path]=\"breadcrumbConfig?.path\"\n  ></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item [label]=\"application | humanizeAppName | async\"></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item [label]=\"'Properties' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div class=\"row\">\n  <div [ngClass]=\"{ 'col-md-8': !isActivityLogSupported, 'col-md-12': isActivityLogSupported }\">\n    <div\n      class=\"card content-fullpage\"\n      *ngIf=\"application\"\n      [ngClass]=\"{ 'd-grid grid__col--7-5--md': isActivityLogSupported }\"\n    >\n      <form\n        class=\"d-flex d-col content-fullpage\"\n        (ngSubmit)=\"formGroup.valid && save(formGroup.value)\"\n        [formGroup]=\"formGroup\"\n        novalidate\n      >\n        <div\n          class=\"d-contents\"\n          *ngIf=\"!isLoading\"\n        >\n          <div class=\"card-block separator-bottom large-padding flex-no-shrink\">\n            <div class=\"d-flex-md a-i-start text-center text-left-md\">\n              <c8y-app-icon\n                class=\"icon-48\"\n                *ngIf=\"!isPackage && !isFeature && !isMicroservice && !isExternal\"\n                [app]=\"application\"\n                [contextPath]=\"application.contextPath\"\n                [name]=\"application.name\"\n              ></c8y-app-icon>\n              <i\n                class=\"icon-48\"\n                c8yIcon=\"big-parcel\"\n                *ngIf=\"isPackage\"\n              ></i>\n              <i\n                class=\"icon-48\"\n                c8yIcon=\"tab\"\n                *ngIf=\"isFeature\"\n              ></i>\n              <i\n                class=\"icon-48\"\n                c8yIcon=\"microchip\"\n                *ngIf=\"isMicroservice\"\n              ></i>\n              <i\n                class=\"icon-48\"\n                c8yIcon=\"globe1\"\n                *ngIf=\"isExternal\"\n              ></i>\n\n              <div class=\"p-t-md-16 p-l-md-16 p-r-md-32 flex-grow\">\n                <p class=\"h4 text-medium m-b-8\">{{ application | humanizeAppName | async }}</p>\n                <p *ngIf=\"!isOwner\">\n                  <em class=\"text-muted\">\n                    {{\n                      formGroup?.controls?.description?.value || (noDescriptionLabel | translate)\n                    }}\n                  </em>\n                </p>\n                <div\n                  class=\"form-group m-b-0\"\n                  *ngIf=\"isOwner\"\n                >\n                  <label\n                    class=\"editable\"\n                    [ngClass]=\"{ updated: formGroup?.controls?.description?.dirty }\"\n                  >\n                    <textarea\n                      class=\"form-control no-resize\"\n                      placeholder=\"{{ noDescriptionLabel | translate }}\"\n                      name=\"description\"\n                      c8y-textarea-autoresize\n                      formControlName=\"description\"\n                    ></textarea>\n                  </label>\n                </div>\n              </div>\n              <div class=\"text-right-md m-t-4\">\n                <span\n                  class=\"label\"\n                  [ngClass]=\"appState?.class\"\n                >\n                  {{ appState?.label | translate }}\n                </span>\n                <div\n                  class=\"fit-w m-t-2\"\n                  *ngIf=\"application.manifest?.version\"\n                  data-cy=\"application-detail--version\"\n                >\n                  <label\n                    class=\"text-label-small\"\n                    translate\n                  >\n                    Version:\n                  </label>\n                  <small class=\"p-l-4 text-bold\">{{ application.manifest?.version }}</small>\n                </div>\n                <div\n                  class=\"fit-w m-t-2\"\n                  *ngIf=\"!isUnpacked\"\n                >\n                  <label\n                    class=\"text-label-small\"\n                    translate\n                  >\n                    Creation time:\n                  </label>\n                  <small class=\"p-l-4 text-bold\">\n                    {{ (binaryMo?.creationTime | c8yDate) || '---' }}\n                  </small>\n                </div>\n                <div class=\"m-t-8\">\n                  <button\n                    class=\"btn btn-default btn-sm\"\n                    [attr.aria-label]=\"\n                      'There\\'s a newer version available, click to update' | translate\n                    \"\n                    tooltip=\"{{\n                      'There\\'s a newer version available, click to update' | translate\n                    }}\"\n                    placement=\"top\"\n                    type=\"button\"\n                    *ngIf=\"isUpdateAvailable\"\n                    (click)=\"updateToLatestVersion()\"\n                    [delay]=\"300\"\n                  >\n                    <i [c8yIcon]=\"'installing-updates'\"></i>\n                    {{ 'Update available' | translate }}\n                  </button>\n                  <button\n                    class=\"btn btn-default btn-sm\"\n                    title=\"{{ 'Open' | translate }}\"\n                    type=\"button\"\n                    (click)=\"openApp(application)\"\n                    [disabled]=\"disableOpenInBrowser\"\n                    *ngIf=\"canOpenInBrowser\"\n                  >\n                    <i [c8yIcon]=\"'external-link'\"></i>\n                    {{ 'Open' | translate }}\n                  </button>\n                  <div *ngIf=\"canOpenInBrowser && disableOpenInBrowser\">\n                    <small\n                      class=\"text-muted\"\n                      translate\n                    >\n                      The application is overwritten by a custom application sharing the same path\n                    </small>\n                  </div>\n                  <span *ngIf=\"isCustomMicroservice\">\n                    <button\n                      class=\"btn btn-default btn-sm\"\n                      title=\"{{ 'Subscribe' | translate }}\"\n                      type=\"button\"\n                      (click)=\"subscribe()\"\n                      *ngIf=\"!isSubscribed\"\n                    >\n                      <i [c8yIcon]=\"'check-circle-o'\"></i>\n                      {{ 'Subscribe' | translate }}\n                    </button>\n                    <button\n                      class=\"btn btn-default btn-sm\"\n                      title=\"{{ 'Unsubscribe' | translate }}\"\n                      type=\"button\"\n                      (click)=\"unsubscribe()\"\n                      *ngIf=\"isSubscribed\"\n                    >\n                      <i [c8yIcon]=\"'minus-circle'\"></i>\n                      {{ 'Unsubscribe' | translate }}\n                    </button>\n                  </span>\n                </div>\n              </div>\n            </div>\n          </div>\n          <div class=\"inner-scroll bg-level-0 flex-grow\">\n            <div class=\"card-block large-padding\">\n              <div\n                class=\"row p-16\"\n                *ngIf=\"isPackage\"\n              >\n                <c8y-properties-list\n                  icon=\"info\"\n                  [title]=\"'Package details' | translate\"\n                  [data]=\"application.manifest\"\n                  [properties]=\"packageProperties\"\n                  [emptyLabel]=\"'---'\"\n                ></c8y-properties-list>\n              </div>\n              <div\n                class=\"row p-16\"\n                *ngIf=\"sourcePackage\"\n              >\n                <c8y-properties-list\n                  icon=\"info\"\n                  [title]=\"'Source package information' | translate\"\n                  [data]=\"sourcePackage.manifest\"\n                  [properties]=\"packageProperties\"\n                  [emptyLabel]=\"'---'\"\n                ></c8y-properties-list>\n              </div>\n              <div class=\"row\">\n                <div class=\"col-sm-5\">\n                  <c8y-form-group>\n                    <label for=\"appId\">ID</label>\n                    <input\n                      class=\"form-control\"\n                      id=\"appId\"\n                      name=\"id\"\n                      type=\"text\"\n                      autocomplete=\"off\"\n                      [readonly]=\"true\"\n                      formControlName=\"id\"\n                    />\n                  </c8y-form-group>\n                </div>\n                <div class=\"col-sm-7\">\n                  <c8y-form-group>\n                    <label>{{ 'Name' | translate }}</label>\n                    <input\n                      class=\"form-control\"\n                      placeholder=\"{{ 'e.g. My application' | translate }}\"\n                      name=\"name\"\n                      type=\"text\"\n                      required\n                      [readonly]=\"!isOwner\"\n                      formControlName=\"name\"\n                    />\n                  </c8y-form-group>\n                </div>\n              </div>\n\n              <div class=\"row\">\n                <div class=\"col-sm-5\">\n                  <c8y-form-group>\n                    <label>{{ 'Application key' | translate }}</label>\n                    <input\n                      class=\"form-control\"\n                      placeholder=\"{{ 'e.g. my-application-key' | translate }}\"\n                      name=\"key\"\n                      type=\"text\"\n                      required\n                      [readonly]=\"application.id || !isOwner\"\n                      formControlName=\"key\"\n                    />\n                  </c8y-form-group>\n                </div>\n\n                <div class=\"col-sm-7\" data-cy=\"application-detail--type\">\n                  <c8y-form-group>\n                    <label>{{ 'Type' | translate }}</label>\n                    <div>\n                      <div *ngIf=\"application.id\">\n                        <p class=\"form-control-static\">\n                          <i [c8yIcon]=\"iconMap[application.type]\"></i>\n                          <span>\n                            {{ application.type | translate }}\n                          </span>\n                        </p>\n                      </div>\n                    </div>\n                  </c8y-form-group>\n                </div>\n              </div>\n\n              <div [ngSwitch]=\"application.type\">\n                <div *ngSwitchCase=\"'HOSTED'\">\n                  <c8y-form-group>\n                    <label>{{ 'Path' | translate }}</label>\n                    <div class=\"input-group\">\n                      <span class=\"input-group-addon\">/apps/</span>\n                      <input\n                        class=\"form-control\"\n                        placeholder=\"{{ 'e.g. my-application`used in URL`' | translate }}\"\n                        name=\"contextPath\"\n                        type=\"text\"\n                        required\n                        [readOnly]=\"application.id || !isOwner\"\n                        formControlName=\"contextPath\"\n                      />\n                    </div>\n                  </c8y-form-group>\n                </div>\n\n                <div *ngSwitchCase=\"'MICROSERVICE'\">\n                  <c8y-form-group>\n                    <label>{{ 'Path' | translate }}</label>\n                    <div class=\"input-group\">\n                      <span class=\"input-group-addon\">/service/</span>\n                      <input\n                        class=\"form-control\"\n                        placeholder=\"{{ 'e.g. my-microservice`used in URL`' | translate }}\"\n                        name=\"contextPath\"\n                        type=\"text\"\n                        required\n                        [readOnly]=\"application.id || !isOwner\"\n                        formControlName=\"contextPath\"\n                      />\n                    </div>\n                  </c8y-form-group>\n                  <div class=\"row\">\n                    <div\n                      class=\"col-sm-4 m-b-16 flex-auto\"\n                      *ngIf=\"application.manifest.version\"\n                      data-cy=\"application-detail--version\"\n                    >\n                      <label>{{ 'Version' | translate }}</label>\n                      <p class=\"form-control-static\">\n                        {{ application.manifest.version }}\n                      </p>\n                    </div>\n                    <div\n                      class=\"col-sm-4 m-b-16 flex-auto\"\n                      *ngIf=\"application.manifest.isolation\"\n                      data-cy=\"application-detail--isolation\"\n                    >\n                      <label>{{ 'Isolation' | translate }}</label>\n                      <p class=\"form-control-static\">\n                        <span *ngIf=\"singleTenant\">\n                          <i\n                            class=\"c8y-icon-duocolor h4\"\n                            [c8yIcon]=\"'c8y-enterprise'\"\n                          ></i>\n                          {{ 'Single tenant' | translate }}\n                        </span>\n                        <span *ngIf=\"!singleTenant\">\n                          <i\n                            class=\"c8y-icon-duocolor icon-32\"\n                            [c8yIcon]=\"'c8y-sub-tenants'\"\n                          ></i>\n                          {{ 'Multi tenant' | translate }}\n                        </span>\n                      </p>\n                    </div>\n                    <div\n                      class=\"col-sm-4 m-b-16 flex-auto\"\n                      *ngIf=\"application.manifest.isolation\"\n                      data-cy=\"application-detail--billing-mode\"\n                    >\n                      <label>{{ 'Billing mode' | translate }}</label>\n                      <p class=\"form-control-static\">\n                        <span\n                          [tooltip]=\"'Resources usage assigned to: Owner' | translate\"\n                          *ngIf=\"subscription\"\n                        >\n                          {{ 'Subscription' | translate }}\n                        </span>\n                        <span\n                          [tooltip]=\"'Resources usage assigned to: Subscriber | translate'\"\n                          *ngIf=\"!subscription && singleTenant\"\n                        >\n                          {{ 'Resources' | translate }}\n                        </span>\n                        <span\n                          [tooltip]=\"'Resources usage assigned to: Owner' | translate\"\n                          *ngIf=\"!subscription && !singleTenant\"\n                        >\n                          {{ 'Resources' | translate }}\n                        </span>\n                      </p>\n                    </div>\n                  </div>\n\n                  <div\n                    class=\"legend form-block m-t-40\"\n                    *ngIf=\"application.manifest.provider\"\n                  >\n                    {{ 'Provider' | translate }}\n                  </div>\n                  <div\n                    class=\"list-inline\"\n                    *ngIf=\"application.manifest.provider\"\n                    data-cy=\"application-detail--provider\"\n                  >\n                    <div *ngIf=\"application.manifest.provider.name\">\n                      <div class=\"col-sm-4 m-b-16\">\n                        <label>{{ 'Name' | translate }}</label>\n                        <p class=\"form-control-static\">\n                          {{ application.manifest.provider.name }}\n                        </p>\n                      </div>\n                    </div>\n                    <div *ngIf=\"application.manifest.provider.domain\">\n                      <div class=\"col-sm-4 m-b-16\">\n                        <label>{{ 'Domain' | translate }}</label>\n                        <p class=\"form-control-static\">\n                          {{ application.manifest.provider.domain }}\n                        </p>\n                      </div>\n                    </div>\n                    <div *ngIf=\"application.manifest.provider.support\">\n                      <div class=\"col-sm-4 m-b-16\">\n                        <label>{{ 'Support' | translate }}</label>\n                        <p class=\"form-control-static\">\n                          {{ application.manifest.provider.support }}\n                        </p>\n                      </div>\n                    </div>\n                  </div>\n                </div>\n\n                <div *ngSwitchCase=\"'EXTERNAL'\">\n                  <c8y-form-group>\n                    <label>{{ 'External URL' | translate }}</label>\n                    <input\n                      class=\"form-control\"\n                      placeholder=\"{{ 'e.g.' | translate }} http://www.example.com/\"\n                      name=\"externalUrl\"\n                      type=\"url\"\n                      required\n                      [pattern]=\"'^(?!javascript:).+'\"\n                      [readOnly]=\"!isOwner\"\n                      formControlName=\"externalUrl\"\n                    />\n                    <c8y-messages>\n                      <c8y-message\n                        [name]=\"'pattern'\"\n                        [text]=\"'Valid URL required.' | translate\"\n                      ></c8y-message>\n                    </c8y-messages>\n                  </c8y-form-group>\n                </div>\n\n                <div *ngIf=\"isOwner && !isCustomMicroservice\">\n                  <label>{{ 'Select icon' | translate }}</label>\n                  <c8y-icon-selector-wrapper\n                    name=\"icon\"\n                    formControlName=\"icon\"\n                  ></c8y-icon-selector-wrapper>\n                </div>\n              </div>\n            </div>\n          </div>\n          <ng-container *ngIf=\"isCustomMicroservice\">\n            <div\n              class=\"d-contents\"\n              *ngIf=\"!isLoading\"\n            >\n              <c8y-upload-archive\n                [(application)]=\"application\"\n                (refresh)=\"onNewArchive()\"\n              ></c8y-upload-archive>\n            </div>\n          </ng-container>\n          <div\n            class=\"card-footer separator\"\n            *ngIf=\"application && !!isOwner && hasAdminPermissions\"\n          >\n            <button\n              class=\"btn btn-default\"\n              title=\"{{ 'Cancel' | translate }}\"\n              type=\"button\"\n              (click)=\"cancel()\"\n            >\n              {{ 'Cancel' | translate }}\n            </button>\n            <button\n              class=\"btn btn-danger\"\n              title=\"{{ 'Delete' | translate }}\"\n              type=\"button\"\n              (click)=\"delete()\"\n              *ngIf=\"canDelete\"\n            >\n              {{ 'Delete' | translate }}\n            </button>\n            <button\n              class=\"btn btn-primary btn-form\"\n              title=\"{{ 'Save' | translate }}\"\n              type=\"submit\"\n              [disabled]=\"!application.type || formGroup.invalid || formGroup.pristine\"\n            >\n              {{ 'Save' | translate }}\n            </button>\n          </div>\n        </div>\n      </form>\n\n      <div\n        class=\"content-fullpage d-flex d-col bg-level-1\"\n        *ngIf=\"isActivityLogSupported\"\n      >\n        <div class=\"card-header separator\">\n          <div\n            class=\"card-title\"\n            translate\n          >\n            Activity log\n          </div>\n          <div class=\"m-l-auto\">\n            <button\n              class=\"btn btn-link btn-sm\"\n              title=\"{{ 'Reload' | translate }}\"\n              type=\"button\"\n              (click)=\"load()\"\n            >\n              <i\n                c8yIcon=\"refresh\"\n                [ngClass]=\"{ 'icon-spin': isLoading }\"\n              ></i>\n              {{ 'Reload' | translate }}\n            </button>\n          </div>\n        </div>\n        <div\n          class=\"p-16 text-center\"\n          *ngIf=\"isLoading\"\n        >\n          <c8y-loading></c8y-loading>\n        </div>\n        <c8y-activity-log\n          class=\"d-contents\"\n          *ngIf=\"!isLoading\"\n          [hasAdminPermissions]=\"hasAdminPermissions\"\n          [application]=\"application\"\n        ></c8y-activity-log>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\n\n@Injectable()\nexport class ApplicationPropertiesGuard {\n  constructor(private ecosystemService: EcosystemService) {}\n\n  canActivate(route: ActivatedRouteSnapshot) {\n    const app = route.data.contextData || route.parent.data.contextData;\n    if (!app) {\n      return false;\n    }\n    return !this.ecosystemService.isPackage(app);\n  }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ApplicationService, ApplicationType, IApplication, IManifest } from '@c8y/client';\nimport { AlertService, WizardComponent } from '@c8y/ngx-components';\n\n@Component({\n  selector: 'c8y-add-external-application',\n  templateUrl: './add-external-application.component.html'\n})\nexport class AddExternalApplicationComponent implements OnInit {\n  formGroup: FormGroup;\n  createdApp: IApplication;\n\n  constructor(\n    private applicationService: ApplicationService,\n    private formBuilder: FormBuilder,\n    private alertService: AlertService,\n    private wizardComponent: WizardComponent\n  ) {}\n\n  ngOnInit() {\n    this.initForm();\n  }\n\n  back() {\n    this.wizardComponent.reset();\n  }\n\n  cancel() {\n    this.wizardComponent.close();\n  }\n\n  done() {\n    this.wizardComponent.close();\n  }\n\n  async save(app: IApplication) {\n    const appToSave = {\n      manifest: {} as IManifest,\n      externalUrl: app.externalUrl,\n      type: ApplicationType.EXTERNAL,\n      name: app.name,\n      key: app.key\n    };\n    try {\n      this.createdApp = await this.applicationService.create(appToSave);\n    } catch (ex) {\n      this.alertService.addServerFailure(ex);\n    }\n  }\n\n  private initForm(): void {\n    this.formGroup = this.formBuilder.group({\n      name: ['', [Validators.required, Validators.maxLength(120)]],\n      key: ['', [Validators.required, Validators.maxLength(120)]],\n      externalUrl: ['', Validators.required]\n    });\n  }\n}\n","<form *ngIf=\"!createdApp; else appCreated\" [formGroup]=\"formGroup\" novalidate>\n  <c8y-wizard-header>\n    <i [c8yIcon]=\"'cloud-link'\"></i>\n    <h4 translate id=\"modal-title\">Add external application</h4>\n  </c8y-wizard-header>\n\n  <c8y-wizard-body>\n    <p class=\"p-16 text-medium text-center bg-level-0 separator-bottom sticky-top\">\n      {{ 'Provide external application details' | translate }}\n    </p>\n    <div class=\"modal-body p-t-8\" id=\"modal-body\">\n      <c8y-form-group>\n        <label style=\"text-align: left\">{{ 'Name' | translate }}</label>\n        <input\n          class=\"form-control\"\n          formControlName=\"name\"\n          name=\"name\"\n          placeholder=\"{{ 'e.g. My application' | translate }}\"\n          required\n          type=\"text\"\n        />\n      </c8y-form-group>\n\n      <c8y-form-group>\n        <label style=\"text-align: left\">{{ 'Application key' | translate }}</label>\n        <input\n          class=\"form-control\"\n          formControlName=\"key\"\n          name=\"key\"\n          placeholder=\"{{ 'e.g. my-external-application-key' | translate }}\"\n          required\n          type=\"text\"\n        />\n      </c8y-form-group>\n\n      <c8y-form-group>\n        <label style=\"text-align: left\">{{ 'External URL' | translate }}</label>\n        <input\n          [pattern]=\"'^(?!javascript:).+'\"\n          class=\"form-control\"\n          formControlName=\"externalUrl\"\n          name=\"externalUrl\"\n          placeholder=\"{{ 'e.g.' | translate }} https://www.example.com\"\n          required\n          type=\"url\"\n        />\n      </c8y-form-group>\n    </div>\n  </c8y-wizard-body>\n\n  <c8y-wizard-footer>\n    <button\n      (click)=\"back()\"\n      class=\"btn btn-default\"\n      title=\"{{ 'Back' | translate }}\"\n      translate\n      type=\"button\"\n    >\n      Back\n    </button>\n    <button (click)=\"cancel()\" class=\"btn btn-default\" title=\"{{ 'Cancel' | translate }}\" translate>\n      Cancel\n    </button>\n    <button\n      (click)=\"save(formGroup.value)\"\n      [disabled]=\"formGroup.invalid || formGroup.pristine\"\n      class=\"btn btn-primary btn-form\"\n      title=\"{{ 'Add application' | translate }}\"\n      type=\"button\"\n    >\n      {{ 'Add application' | translate }}\n    </button>\n  </c8y-wizard-footer>\n</form>\n<ng-template #appCreated>\n  <c8y-wizard-body>\n    <div class=\"d-flex d-col j-c-center a-i-center\" style=\"min-height: 324px\">\n      <c8y-operation-result\n        text=\"{{ 'Application created' | translate }}\"\n        [size]=\"84\"\n        [vertical]=\"true\"\n        type=\"success\"\n        class=\"lead\"\n      ></c8y-operation-result>\n    </div>\n  </c8y-wizard-body>\n  <c8y-wizard-footer>\n    <button (click)=\"done()\" class=\"btn btn-default\" title=\"{{ 'Done' | translate }}\" translate>\n      Done\n    </button>\n    <a\n      (click)=\"$event.stopPropagation()\"\n      [href]=\"formGroup.value.externalUrl\"\n      target=\"_blank\"\n      rel=\"noopener noreferrer\"\n      class=\"btn btn-primary\"\n      title=\"{{ 'Open' | translate }}\"\n    >\n      <i c8yIcon=\"external-link\" class=\"m-r-4\"></i>\n      {{ 'Open' | translate }}\n    </a>\n  </c8y-wizard-footer>\n</ng-template>\n","import { Component } from '@angular/core';\nimport { ApplicationType, IApplication } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n  selector: 'c8y-add-web-application',\n  template: `<c8y-add-application\n    [headerText]=\"headerText\"\n    [headerIcon]=\"'upload'\"\n    [successText]=\"successText\"\n    [createApplicationHandler]=\"createApplicationHandler\"\n    [uploadApplicationHandler]=\"uploadApplicationHandler\"\n    [canGoBack]=\"true\"\n  ></c8y-add-application>`\n})\nexport class AddWebApplicationComponent {\n  headerText: string = gettext('Upload web application');\n  successText: string = gettext('Application created');\n\n  constructor(private ecosystemService: EcosystemService) {}\n\n  createApplicationHandler = (f: File) => this.createApplication(f);\n  uploadApplicationHandler = (f: File, app: IApplication) => this.uploadApplication(f, app);\n\n  async createApplication(file: File): Promise<IApplication> {\n    await this.ecosystemService.isValidAppType(file, ApplicationType.HOSTED);\n    return this.ecosystemService.createAppForArchive(file);\n  }\n\n  async uploadApplication(file: File, app: IApplication): Promise<IApplication> {\n    return this.ecosystemService.uploadArchiveToApp(file, app);\n  }\n}\n","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { WizardConfig, WizardModalService } from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { shareReplay, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport {\n  EcosystemService,\n  EcosystemWizards,\n  defaultPackageAvailabilities,\n  FilterPipe,\n  ListFiltersComponent,\n  FilterableAppOrPlugin\n} from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n  selector: 'c8y-application-list',\n  templateUrl: './application-list.component.html'\n})\nexport class ApplicationListComponent implements OnInit, OnDestroy {\n  reloading = false;\n  reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n\n  apps$: Observable<IApplication[]> = this.reload$.pipe(\n    tap(() => (this.reloading = true)),\n    switchMap(() => this.ecosystemService.getWebApplications()),\n    tap(apps => {\n      apps.forEach(app => {\n        app.filterProps = this.ecosystemService.getAppFilterProps(app);\n      });\n    }),\n    tap(() => (this.reloading = false)),\n    shareReplay()\n  );\n  filteredApps$: Observable<FilterableAppOrPlugin[]>;\n  listClass: string;\n  packageAvailabilities = defaultPackageAvailabilities;\n  @ViewChild(ListFiltersComponent) filtersComponent: ListFiltersComponent;\n  private destroy$ = new Subject<void>();\n\n  constructor(\n    private ecosystemService: EcosystemService,\n    private wizardModalService: WizardModalService\n  ) {}\n\n  ngOnInit() {\n    this.loadApplications();\n  }\n\n  loadApplications() {\n    this.reload$.next();\n  }\n\n  addApplication() {\n    const wizardConfig: WizardConfig = {\n      headerText: 'Add Application',\n      headerIcon: 'c8y-atom'\n    };\n\n    const initialState: Record<string, unknown> = {\n      wizardConfig,\n      id: EcosystemWizards.APPLICATION_UPLOAD\n    };\n\n    const modalOptions: ModalOptions = { initialState };\n\n    const modalRef = this.wizardModalService.show(modalOptions);\n    modalRef.content.onClose.pipe(takeUntil(this.destroy$)).subscribe(() => {\n      this.loadApplications();\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  setFilterPipe(pipe: FilterPipe) {\n    this.filteredApps$ = this.apps$.pipe(src => pipe(src));\n  }\n\n  resetFilters() {\n    this.filtersComponent.resetAllFilters();\n  }\n}\n","<c8y-title>{{ 'Applications' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n  <c8y-breadcrumb-item\n    [icon]=\"'c8y-atom'\"\n    [label]=\"'Ecosystem' | translate\"\n  ></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item\n    [icon]=\"'c8y-modules'\"\n    [label]=\"'Applications' | translate\"\n    [path]=\"'ecosystem/application/applications'\"\n  ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n  [placement]=\"'right'\"\n  *c8yIfAllowed=\"['ROLE_APPLICATION_MANAGEMENT_ADMIN']\"\n>\n  <button\n    class=\"btn btn-link\"\n    title=\"{{ 'Add application' | translate }}\"\n    (click)=\"addApplication()\"\n  >\n    <i c8yIcon=\"plus-circle\"></i>\n    {{ 'Add application' | translate }}\n  </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n  <button\n    class=\"btn btn-link\"\n    title=\"{{ 'Reload' | translate }}\"\n    (click)=\"loadApplications()\"\n  >\n    <i\n      c8yIcon=\"refresh\"\n      [ngClass]=\"{ 'icon-spin': reloading }\"\n    ></i>\n    {{ 'Reload' | translate }}\n  </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\">\n  <c8y-list-filters\n    *ngIf=\"apps$ | async\"\n    (filterPipeChange)=\"setFilterPipe($event)\"\n    [packageAvailabilities]=\"packageAvailabilities\"\n  ></c8y-list-filters>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n  [placement]=\"'left'\"\n  itemClass=\"navbar-form hidden-xs\"\n>\n  <c8y-list-display-switch\n    (onListClassChange)=\"listClass = $event\"\n    [listLength]=\"(apps$ | async)?.length\"\n  ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/docs/standard-tenant/ecosystem/#managing-applications\"></c8y-help>\n\n<div\n  class=\"c8y-empty-state text-center\"\n  *ngIf=\"(apps$ | async)?.length === 0\"\n>\n  <h1 class=\"c8y-icon c8y-icon-modules c8y-icon-duocolor\"></h1>\n  <h3 translate>No applications to display.</h3>\n  <p translate>Add your first application by clicking below.</p>\n  <p>\n    <button\n      class=\"btn btn-primary\"\n      title=\"{{ 'Add application' | translate }}\"\n      (click)=\"addApplication()\"\n    >\n      {{ 'Add application' | translate }}\n    </button>\n  </p>\n</div>\n\n<div\n  class=\"card-group\"\n  [ngClass]=\"listClass\"\n>\n  <div\n    class=\"page-sticky-header hidden-xs d-flex\"\n    *ngIf=\"(apps$ | async)?.length > 0\"\n  >\n    <div class=\"card-block card-column-40\">\n      <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n      {{ 'Application' | translate }}\n    </div>\n    <div class=\"card-block p-0 card-column-80 m-r-40\">\n      <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n      <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n      <div class=\"card-block card-column-20\"></div>\n    </div>\n  </div>\n  <div\n    class=\"col-xs-12 col-sm-4 col-md-3\"\n    *ngFor=\"let app of filteredApps$ | async\"\n  >\n    <c8y-application-card\n      class=\"d-contents\"\n      (onAppDeleted)=\"loadApplications()\"\n      (onAppCloned)=\"loadApplications()\"\n      [app]=\"app\"\n    ></c8y-application-card>\n  </div>\n</div>\n\n<c8y-ui-empty-state\n  [icon]=\"'search'\"\n  [title]=\"'No matching applications.' | translate\"\n  [subtitle]=\"'Refine your search terms and/or the filters' | translate\"\n  *ngIf=\"(apps$ | async)?.length > 0 && (filteredApps$ | async)?.length === 0\"\n>\n  <button\n    class=\"btn btn-primary\"\n    title=\"{{ 'Reset filters' | translate }}\"\n    type=\"button\"\n    (click)=\"resetFilters()\"\n  >\n    {{ 'Reset filters' | translate }}\n  </button>\n</c8y-ui-empty-state>\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { ApplicationService, IApplication, IApplicationVersion, IResultList } from '@c8y/client';\nimport { PluginsService, WizardComponent } from '@c8y/ngx-components';\nimport { BehaviorSubject, combineLatest, from, Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { EcosystemService, LicensedApplicationPlugin } from '@c8y/ngx-components/ecosystem/shared';\nimport { ApplicationPropertiesFormComponent } from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n  selector: 'c8y-install-from-package',\n  templateUrl: './install-from-package.component.html'\n})\nexport class InstallFromPackageComponent implements OnInit {\n  newAppConfig: IApplication;\n  selectedPackage: IApplication;\n  packages: IApplication[];\n  inProgress: boolean;\n  deployedWithSuccess = false;\n  isDeployed = false;\n\n  model = {\n    selected: undefined,\n    binary: {\n      id: undefined\n    }\n  };\n  canDeploy = false;\n  onInput: BehaviorSubject<string> = new BehaviorSubject<string>('');\n  versions$: Observable<IResultList<IApplicationVersion>>;\n  @ViewChild(ApplicationPropertiesFormComponent)\n  applicationPropertiesForm: ApplicationPropertiesFormComponent;\n\n  constructor(\n    private ecosystemService: EcosystemService,\n    private applicationService: ApplicationService,\n    private wizardComponent: WizardComponent,\n    private pluginsService: PluginsService\n  ) {}\n\n  async ngOnInit() {\n    this.loadPackages();\n  }\n\n  back() {\n    this.wizardComponent.reset();\n  }\n\n  clean() {\n    this.selectedPackage = undefined;\n    this.versions$ = undefined;\n    this.model = {\n      selected: undefined,\n      binary: {\n        id: undefined\n      }\n    };\n  }\n\n  cancel() {\n    this.wizardComponent.close();\n  }\n\n  async deployApp() {\n    this.inProgress = true;\n    const formGroupValue = this.applicationPropertiesForm.formGroup.getRawValue();\n    const { contextPath, license, name } = this.selectedPackage;\n    const type = this.pluginsService.getPackageType(this.selectedPackage);\n    const licensedApp: LicensedApplicationPlugin = {\n      contextPath,\n      license,\n      name,\n      type,\n      version: this.model.selected.version\n    };\n    const isArchived = await this.ecosystemService.verifyArchived([licensedApp]);\n    if (!isArchived) {\n      this.cancel();\n      return;\n    }\n\n    const licensesVerifiedByUser = await this.ecosystemService.verifyLicenses([licensedApp]);\n    if (!licensesVerifiedByUser) {\n      this.cancel();\n      return;\n    }\n\n    // Verify if selected package version is compatible with current platform versions.\n    this.selectedPackage.manifest.version = this.model.selected.version;\n    const verifyVersionCompatibility =\n      await this.ecosystemService.verifyBlueprintVersionsCompatibility(\n        this.selectedPackage.manifest\n      );\n\n    if (!verifyVersionCompatibility) {\n      this.cancel();\n      return;\n    }\n\n    try {\n      await this.ecosystemService.deployApp(this.selectedPackage, formGroupValue, this.model);\n      this.deployedWithSuccess = true;\n    } catch (error) {\n      this.ecosystemService.alertError(error);\n    } finally {\n      this.markAsDeployed();\n    }\n  }\n\n  onAppVersionSelect(appVersion: IApplicationVersion) {\n    Object.assign(this.model, {\n      selected: appVersion\n    });\n    this.canDeploy = true;\n  }\n\n  async selectPackage(selectedPackage: IApplication) {\n    const apps = await this.ecosystemService.getHostedAndPackageApplications();\n    this.newAppConfig = this.ecosystemService.getUniqueAppConfig(selectedPackage, apps);\n    this.selectedPackage = selectedPackage;\n\n    this.loadSelectedPackageVersions();\n  }\n\n  private loadSelectedPackageVersions() {\n    this.versions$ = combineLatest([\n      this.getAppVersions(this.selectPackage),\n      this.onInput.asObservable()\n    ]).pipe(\n      map(([resultList, filterStr]) => {\n        this.canDeploy = false;\n        const versionsFilteredByStr = this.filterAppVersions(resultList.data, filterStr);\n        const sortedAppVersions = this.pluginsService.sortVersions(\n          {\n            list: versionsFilteredByStr,\n            path: ['version']\n          },\n          'desc'\n        );\n\n        this.setInitialValueForInput(sortedAppVersions);\n        return { data: sortedAppVersions, res: resultList.res };\n      })\n    );\n  }\n\n  private getAppVersions(mo: IApplication) {\n    const versions = mo?.applicationVersions;\n    return versions && versions.length > 0\n      ? of({ data: versions, res: undefined })\n      : from(this.applicationService.listVersions(this.selectedPackage.id));\n  }\n\n  private setInitialValueForInput(versions: IApplicationVersion[]) {\n    if (!this.model.selected && versions.length > 0) {\n      const latest = versions.find(v => v.tags.includes('latest'));\n      this.model.selected = latest || versions[0];\n      this.canDeploy = true;\n    }\n  }\n\n  private filterAppVersions(\n    appVersions: IApplicationVersion[],\n    filterStr: string\n  ): IApplicationVersion[] {\n    return filterStr === ''\n      ? appVersions\n      : appVersions.filter(appVersion => appVersion.version.includes(filterStr));\n  }\n\n  private markAsDeployed() {\n    this.isDeployed = true;\n    this.inProgress = false;\n  }\n\n  private async loadPackages(): Promise<void> {\n    const applications = await this.ecosystemService.getPackageApplications();\n    this.packages = applications.filter(app => this.ecosystemService.isPackageBlueprint(app));\n  }\n}\n","<c8y-wizard-header>\n  <i [c8yIcon]=\"'big-parcel'\"></i>\n  <h4\n    id=\"modal-title\"\n    translate\n  >\n    Install from extension package\n  </h4>\n</c8y-wizard-header>\n<c8y-wizard-body>\n  <ng-container *ngIf=\"!selectedPackage\">\n    <div\n      class=\"modal-inner-scroll\"\n      id=\"modal-body\"\n    >\n      <p class=\"p-16 text-medium text-center separator-bottom sticky-top bg-level-0\">\n        {{ 'Select from available extension packages' | translate }}\n      </p>\n\n      <c8y-ui-empty-state\n        [icon]=\"'big-parcel'\"\n        [title]=\"'No extension packages to display.' | translate\"\n        *ngIf=\"!packages?.length\"\n        [horizontal]=\"true\"\n      ></c8y-ui-empty-state>\n\n      <div\n        class=\"c8y-wizard-list-nav\"\n        style=\"min-height: 257px\"\n        *ngIf=\"packages?.length\"\n      >\n        <button\n          class=\"list-group-item text-truncate\"\n          title=\"{{ package.name }}\"\n          type=\"button\"\n          *ngFor=\"let package of packages\"\n          (click)=\"selectPackage(package)\"\n        >\n          <i\n            class=\"list-group-icon\"\n            c8yIcon=\"big-parcel\"\n          ></i>\n          <span [innerText]=\"package.name\"></span>\n        </button>\n      </div>\n    </div>\n  </ng-container>\n  <ng-container *ngIf=\"!isDeployed && selectedPackage\">\n    <p class=\"p-16 text-center text-medium separator-bottom sticky-top bg-level-0\">\n      {{ 'Provide application details' | translate }}\n    </p>\n    <div\n      class=\"d-flex d-col a-i-center j-c-center\"\n      style=\"min-height: 257px\"\n    >\n      <c8y-application-properties-form\n        class=\"d-block fit-w\"\n        *ngIf=\"!inProgress\"\n        [application]=\"newAppConfig\"\n      ></c8y-application-properties-form>\n\n      <ng-container *ngIf=\"!inProgress\">\n        <div\n          class=\"d-block fit-w bg-gray-white\"\n          [ngStyle]=\"{ padding: '0 16px' }\"\n        >\n          <label\n            for=\"packageVersion\"\n            translate\n          >\n            Use extension package version\n          </label>\n          <c8y-form-group>\n            <c8y-typeahead\n              placeholder=\"{{ 'Select or enter' | translate }}\"\n              name=\"packageVersion\"\n              [(ngModel)]=\"model.selected\"\n              (onSearch)=\"onInput.next($event)\"\n              [displayProperty]=\"'version'\"\n              [required]=\"true\"\n              [hideNew]=\"true\"\n              [container]=\"'body'\"\n            >\n              <c8y-li\n                class=\"p-l-8 p-r-8 c8y-list__item--link\"\n                *c8yFor=\"let version of versions$; loadMore: 'auto'; notFound: notFoundTemplate\"\n                (click)=\"onAppVersionSelect(version)\"\n                [active]=\"model.selected === version\"\n              >\n                <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n                <span\n                  [ngStyle]=\"{\n                    display: 'flex',\n                    'flex-direction': 'row',\n                    'align-content': 'center',\n                    'justify-content': 'space-between',\n                    'align-items': 'center'\n                  }\"\n                >\n                  <c8y-highlight\n                    [text]=\"version.version || '--'\"\n                    [pattern]=\"onInput | async\"\n                  ></c8y-highlight>\n\n                  <span>\n                    <span\n                      class=\"label label-info m-l-4\"\n                      *ngFor=\"let tag of version.tags\"\n                    >\n                      {{ tag }}\n                    </span>\n                  </span>\n                </span>\n              </c8y-li>\n              <ng-template #notFoundTemplate>\n                <c8y-li\n                  class=\"bg-gray-lighter p-8\"\n                  *ngIf=\"(onInput | async)?.length > 0 && (versions$ | async)?.data?.length === 0\"\n                >\n                  <span translate>No match found.</span>\n                </c8y-li>\n              </ng-template>\n            </c8y-typeahead>\n          </c8y-form-group>\n        </div>\n      </ng-container>\n\n      <c8y-loading\n        class=\"text-center d-block\"\n        [message]=\"'Installing…' | translate\"\n        *ngIf=\"inProgress\"\n        layout=\"application\"\n      ></c8y-loading>\n    </div>\n  </ng-container>\n\n  <ng-container *ngIf=\"isDeployed\">\n    <div\n      class=\"d-flex a-i-center j-c-center\"\n      style=\"min-height: 257px\"\n      *ngIf=\"deployedWithSuccess; else failedDeploy\"\n    >\n      <c8y-operation-result\n        class=\"lead\"\n        type=\"success\"\n        text=\"{{ 'Application created' | translate }}\"\n        [size]=\"84\"\n        [vertical]=\"true\"\n      ></c8y-operation-result>\n    </div>\n    <ng-template #failedDeploy>\n      <div\n        class=\"d-flex a-i-center j-c-center\"\n        style=\"min-height: 257px\"\n      >\n        <c8y-operation-result\n          class=\"lead\"\n          type=\"error\"\n          text=\"{{ 'Application creation failed' | translate }}\"\n          [size]=\"84\"\n          [vertical]=\"true\"\n        ></c8y-operation-result>\n      </div>\n    </ng-template>\n  </ng-container>\n</c8y-wizard-body>\n\n<c8y-wizard-footer>\n  <button\n    class=\"btn btn-default\"\n    title=\"{{ 'Back' | translate }}\"\n    type=\"button\"\n    *ngIf=\"!isDeployed\"\n    (click)=\"selectedPackage ? clean() : back()\"\n    [disabled]=\"inProgress\"\n  >\n    {{ 'Back' | translate }}\n  </button>\n  <button\n    class=\"btn btn-default\"\n    title=\"{{ isDeployed && deployedWithSuccess ? ('Close' | translate) : ('Cancel' | translate) }}\"\n    type=\"button\"\n    (click)=\"cancel()\"\n  >\n    {{ isDeployed && deployedWithSuccess ? ('Close' | translate) : ('Cancel' | translate) }}\n  </button>\n\n  <button\n    class=\"btn btn-primary\"\n    title=\"{{ 'Install' | translate }}\"\n    type=\"button\"\n    (click)=\"deployApp()\"\n    [disabled]=\"inProgress || !packages?.length\"\n    *ngIf=\"!isDeployed\"\n  >\n    {{ 'Install' | translate }}\n  </button>\n</c8y-wizard-footer>\n","import { Injectable } from '@angular/core';\nimport { NavigatorNode, NavigatorNodeFactory, Permissions } from '@c8y/ngx-components';\n\n@Injectable()\nexport class EcosystemNavigationFactory implements NavigatorNodeFactory {\n  private navs: NavigatorNode[] = [];\n  private showNavigatorNodes: boolean;\n\n  constructor(private permissions: Permissions) {\n    this.showNavigatorNodes = this.permissions.hasAnyRole([\n      Permissions.ROLE_APPLICATION_MANAGEMENT_READ,\n      Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN\n    ]);\n  }\n\n  async get() {\n    /*\nThe NavigatorNodes are added in AngularJS code to keep the Quick links widget working.\nAfter the Quick links widget is migrated to Angular, the logic of adding the NavigatorNodes can be migrated as well.\n    if (this.navs.length === 0 && this.showNavigatorNodes) {\n      const applicationsNode: NavigatorNode = new NavigatorNode({\n        label: gettext('Applications'),\n        icon: 'c8y-modules',\n        path: '/ecosystem',\n        priority: 300,\n        routerLinkExact: false\n      });\n\n      const microservicesNode = new NavigatorNode({\n        label: gettext('Microservices'),\n        icon: 'microchip',\n        path: '/microservices',\n        priority: 200,\n        routerLinkExact: false\n      });\n\n      this.navs.push(\n        new NavigatorNode({\n          label: gettext('Ecosystem'),\n          icon: 'c8y-atom',\n          priority: 3200,\n          children: [applicationsNode, microservicesNode]\n        })\n      );\n    }\n*/\n    return this.navs;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { gettext, Tab, TabFactory } from '@c8y/ngx-components';\nimport { Router } from '@angular/router';\n\n@Injectable()\nexport class EcosystemTabs implements TabFactory {\n  ecosystemTabs: Tab[] = [\n    {\n      icon: 'c8y-modules',\n      priority: 1000,\n      label: gettext('Applications'),\n      path: 'ecosystem/application/applications'\n    },\n    {\n      icon: 'tab',\n      priority: 998,\n      label: gettext('Features'),\n      path: 'ecosystem/application/features'\n    }\n  ];\n\n  constructor(public router: Router) {}\n\n  get(): Tab[] {\n    if (\n      this.router.url === '/ecosystem/application/applications' ||\n      this.router.url === '/ecosystem/application/features'\n    ) {\n      return this.ecosystemTabs;\n    }\n    return [];\n  }\n}\n","import { Component } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { ApplicationPlugin, gettext } from '@c8y/ngx-components';\nimport { ListFiltersComponent } from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n  selector: 'c8y-only-latest-filter',\n  templateUrl: './only-latest-filter.component.html'\n})\nexport class OnlyLatestFilterComponent {\n  onlyLatestFormControl: FormControl;\n  private readonly filterLabel = gettext('Only latest versions');\n\n  constructor(public filterComponent: ListFiltersComponent) {\n    this.onlyLatestFormControl = new FormControl(true);\n    (this.filterComponent.formGroup.controls.custom as FormGroup).addControl(\n      this.filterLabel,\n      this.onlyLatestFormControl\n    );\n    filterComponent.customFilters.set(\n      this.filterLabel,\n      (plugin: ApplicationPlugin, enabled: boolean) => {\n        return !enabled || !!plugin.tags?.includes('latest');\n      }\n    );\n  }\n}\n","<label class=\"c8y-switch\">\n  <input\n    type=\"checkbox\"\n    checked=\"checked\"\n    [formControl]=\"onlyLatestFormControl\"\n  />\n  <span></span>\n  {{ 'Show only latest version of plugins' | translate }}\n</label>\n","import { Component, Input } from '@angular/core';\nimport { ApplicationPlugin } from '@c8y/ngx-components';\nimport {\n  defaultPackageTypes,\n  EcosystemService,\n  FilterableAppOrPlugin,\n  FilterPipe\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, map, Observable } from 'rxjs';\n\n@Component({\n  selector: 'c8y-install-plugin',\n  templateUrl: './install-plugin.component.html'\n})\nexport class InstallPluginComponent {\n  @Input() plugins$: Observable<FilterableAppOrPlugin[]>;\n  filteredPlugins$: Observable<FilterableAppOrPlugin[]> = new BehaviorSubject([]);\n  selectedPlugins: ApplicationPlugin[] = [];\n  packageTypes = defaultPackageTypes;\n  result: Promise<ApplicationPlugin[]> = new Promise((resolve, reject) => {\n    this._install = resolve;\n    this._cancel = reject;\n  });\n  onlyLatestPluginVersion = true;\n  private _install;\n  private _cancel;\n\n  constructor(\n    private bsModalRef: BsModalRef,\n    private ecosystemService: EcosystemService\n  ) {}\n\n  setFilterPipe(filterPipe: FilterPipe) {\n    this.filteredPlugins$ = this.plugins$.pipe(\n      map(plugins =>\n        plugins.map(plugin => {\n          plugin.filterProps = this.ecosystemService.getAppFilterProps(plugin.originApp);\n          return plugin;\n        })\n      ),\n      src => filterPipe(src)\n    );\n  }\n\n  cancel() {\n    this.bsModalRef.hide();\n    this._cancel();\n  }\n\n  install() {\n    this._install(this.selectedPlugins);\n    this.bsModalRef.hide();\n  }\n}\n","<div class=\"viewport-modal\">\n  <div class=\"modal-header dialog-header\">\n    <i [c8yIcon]=\"'plugin'\"></i>\n    <div\n      class=\"modal-title h4\"\n      id=\"modal-title\"\n      translate\n    >\n      Available plugins\n    </div>\n  </div>\n  <div class=\"p-t-8 p-16 text-center separator-bottom flex-no-shrink\">\n    <p\n      class=\"text-medium m-b-8\"\n      translate\n    >\n      Select the compatible plugins to install\n    </p>\n    <c8y-list-filters\n      (filterPipeChange)=\"setFilterPipe($event)\"\n      [packageTypes]=\"packageTypes\"\n    >\n      <c8y-archived-filter></c8y-archived-filter>\n      <c8y-only-latest-filter></c8y-only-latest-filter>\n    </c8y-list-filters>\n  </div>\n  <div\n    class=\"modal-inner-scroll\"\n    id=\"modal-body\"\n  >\n    <c8y-plugin-list\n      class=\"m-t-16\"\n      (selectedItems)=\"selectedPlugins = $event\"\n      [emptyListText]=\"'No plugins available' | translate\"\n      [plugins$]=\"filteredPlugins$\"\n      [selectable]=\"true\"\n    ></c8y-plugin-list>\n  </div>\n\n  <div class=\"modal-footer\">\n    <button\n      class=\"btn btn-default\"\n      title=\"{{ 'Cancel' | translate }}\"\n      type=\"button\"\n      (click)=\"cancel()\"\n      data-cy=\"install-plugin--cancel-button\"\n    >\n      {{ 'Cancel' | translate }}\n    </button>\n    <button\n      class=\"btn btn-primary\"\n      title=\"{{ 'Install' | translate }}\"\n      type=\"button\"\n      (click)=\"install()\"\n      [disabled]=\"selectedPlugins.length === 0\"\n      data-cy=\"install-plugin--install-button\"\n    >\n      {{ 'Install' | translate }}\n      <span\n        class=\"badge\"\n        *ngIf=\"selectedPlugins.length as length\"\n      >\n        {{ length }}\n      </span>\n    </button>\n  </div>\n</div>\n","import { Component } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\n\n@Component({\n  selector: 'c8y-label-cell-renderer',\n  templateUrl: './label-cell-renderer.component.html'\n})\nexport class LabelCellRendererComponent {\n  constructor(public context: CellRendererContext) {}\n}\n","<span class=\"label label-info\">{{ context.value }}</span>\n","import { Component } from '@angular/core';\nimport { ApplicationPluginStatus, CellRendererContext, gettext } from '@c8y/ngx-components';\n\n@Component({\n  selector: 'c8y-orphaned-status-cell-renderer',\n  templateUrl: './orphaned-status-cell-renderer.component.html'\n})\nexport class OrphanedStatusCellRendererComponent {\n  label: { value: string; class: string; text: string } | null;\n  constructor(public context: CellRendererContext) {\n    this.label = this.getLabel(context.value);\n  }\n\n  private getLabel(statusValue: ApplicationPluginStatus): {\n    value: string;\n    class: string;\n    text: string;\n  } | null {\n    switch (statusValue) {\n      case ApplicationPluginStatus.OUTDATED:\n        return {\n          value: statusValue,\n          text: gettext('OUTDATED`plugin status`'),\n          class: 'label-warning'\n        };\n      case ApplicationPluginStatus.ORPHANED:\n        return {\n          value: statusValue,\n          text: gettext('ORPHANED`plugin status`'),\n          class: 'label-danger'\n        };\n      case ApplicationPluginStatus.REVOKED:\n        return {\n          value: statusValue,\n          text: gettext('REVOKED`plugin status`'),\n          class: 'label-danger'\n        };\n      case ApplicationPluginStatus.LATEST:\n        return {\n          value: statusValue,\n          text: gettext('LATEST`plugin status`'),\n          class: 'label-success'\n        };\n      case ApplicationPluginStatus.AUTO:\n        return {\n          value: statusValue,\n          text: gettext('AUTO`plugin status`'),\n          class: 'label-success'\n        };\n      default:\n        return null;\n    }\n  }\n}\n","<span\n  *ngIf=\"label\"\n  class=\"label\"\n  [ngClass]=\"label.class\"\n  [title]=\"label.text | translate\"\n>\n  {{ label.text | translate }}\n</span>\n","import { Component } from '@angular/core';\nimport { ApplicationRemotePlugins, IApplication, IApplicationVersion } from '@c8y/client';\nimport {\n  AlertService,\n  ApplicationPlugin,\n  GainsightService,\n  PluginsService,\n  gettext\n} from '@c8y/ngx-components';\nimport { uniq } from 'lodash-es';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport {\n  EcosystemService,\n  PRODUCT_EXPERIENCE_ECOSYSTEM\n} from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n  selector: 'c8y-update-plugin-of-app',\n  templateUrl: './update-plugin-of-app.component.html'\n})\nexport class UpdatePluginOfAppComponent {\n  CURRENT_LOCATION = location.href;\n\n  app: IApplication;\n  plugin: ApplicationPlugin;\n  downgrade: boolean;\n  result: Promise<void> = new Promise((resolve, reject) => {\n    this._install = resolve;\n    this._cancel = reject;\n  });\n  applicationVersion: IApplicationVersion;\n  updateAll = true;\n\n  private _install: () => void;\n  private _cancel: (reason?: any) => void;\n\n  constructor(\n    private bsModalRef: BsModalRef,\n    private pluginsService: PluginsService,\n    private alert: AlertService,\n    private ecosystemService: EcosystemService,\n    private gainsightService: GainsightService\n  ) {}\n\n  async update() {\n    const remotes = this.pluginsService.getMFRemotes(this.app);\n    const oldRemotePath = `${this.plugin.contextPath}@${this.plugin.version}`;\n    const newRemotePath = `${this.plugin.contextPath}@${this.applicationVersion.version}`;\n    let oldRemoteModules = [...(remotes[oldRemotePath] || [])];\n    if (!oldRemoteModules.length) {\n      this.alert.warning(gettext('Could not change the version of plugin.'));\n      this.cancel();\n      return;\n    }\n\n    const isArchived = await this.ecosystemService.verifyArchived([this.plugin]);\n    if (!isArchived) {\n      this.alert.warning(gettext('Plugin update aborted by user.'));\n      this.cancel();\n      return;\n    }\n\n    const result = await this.ecosystemService.verifyLicenses([this.plugin]);\n    if (!result) {\n      this.alert.warning(gettext('Plugin update aborted by user.'));\n      this.cancel();\n      return;\n    }\n\n    let remoteModulesOfNewVersion = [...(remotes[newRemotePath] || [])];\n    let olderVersions: ApplicationRemotePlugins = {};\n    if (this.updateAll) {\n      olderVersions = Object.keys(remotes)\n        .filter(key => key.startsWith(`${this.plugin.contextPath}@`))\n        .reduceRight((prev, curr) => {\n          prev[curr] = undefined;\n          return prev;\n        }, {});\n\n      oldRemoteModules = Object.keys(olderVersions)\n        .map(version => remotes[version])\n        .reduceRight((prev, curr) => {\n          prev.push(...curr);\n          return prev;\n        }, []);\n      remoteModulesOfNewVersion.push(...oldRemoteModules);\n    } else {\n      remoteModulesOfNewVersion.push(this.plugin.module);\n      olderVersions[oldRemotePath] = oldRemoteModules.filter(\n        module => module !== this.plugin.module\n      );\n      if (!olderVersions[oldRemotePath].length) {\n        olderVersions[oldRemotePath] = undefined;\n      }\n    }\n\n    remoteModulesOfNewVersion = uniq(remoteModulesOfNewVersion);\n    const newRemotes: ApplicationRemotePlugins = {\n      ...remotes,\n      ...olderVersions,\n      [newRemotePath]: remoteModulesOfNewVersion\n    };\n\n    try {\n      await this.pluginsService.updateRemotesInAppConfig(this.app, newRemotes);\n      this.alert.success(gettext(`Switched the version of plugin.`));\n      this.gainsightService.triggerEvent(\n        PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.INSTALLED_PLUGINS,\n        {\n          component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.UPDATE_PLUGIN_OF_APP,\n          action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.CHANGE_PLUGIN_VERSION,\n          result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.PLUGIN_VERSION_CHANGED,\n          url: this.CURRENT_LOCATION\n        }\n      );\n    } catch (e) {\n      this.alert.addServerFailure(e);\n      this.gainsightService.triggerEvent(\n        PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.INSTALLED_PLUGINS,\n        {\n          component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.UPDATE_PLUGIN_OF_APP,\n          action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.CHANGE_PLUGIN_VERSION,\n          result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE,\n          url: this.CURRENT_LOCATION\n        }\n      );\n    }\n\n    this.bsModalRef.hide();\n    this._install();\n  }\n\n  cancel() {\n    this.bsModalRef.hide();\n    this._cancel();\n  }\n}\n","<div class=\"viewport-modal\">\n  <div class=\"modal-header dialog-header\">\n    <i [c8yIcon]=\"'c8y-modules'\"></i>\n    <h4 *ngIf=\"!downgrade\" id=\"modal-title\" translate>Update plugin</h4>\n    <h4 *ngIf=\"downgrade\" id=\"modal-title\" translate>Downgrade plugin</h4>\n  </div>\n  <div class=\"inner-scroll\" id=\"modal-body\">\n    <div class=\"p-16\">\n      <div class=\"d-block fit-w bg-gray-white\">\n        <c8y-package-version-select\n          [packageContextPath]=\"plugin?.contextPath\"\n          [(ngModel)]=\"applicationVersion\"\n        ></c8y-package-version-select>\n        <div\n          *ngIf=\"plugin?.version && plugin.version === applicationVersion?.version\"\n          class=\"alert alert-info\"\n          role=\"alert\"\n        >\n          <span translate ngNonBindable [translateParams]=\"applicationVersion\">\n            Select another version, as {{ version }} is currently used.\n          </span>\n        </div>\n      </div>\n\n      <div class=\"form-group\">\n        <label class=\"c8y-checkbox\">\n          <input [(ngModel)]=\"updateAll\" type=\"checkbox\" />\n          <span></span>\n          <span translate ngNonBindable [translateParams]=\"plugin\">\n            Set version for all plugins using the same context path \"{{ contextPath }}\".\n          </span>\n        </label>\n      </div>\n    </div>\n  </div>\n  <div class=\"modal-footer\">\n    <button\n      class=\"btn btn-default\"\n      title=\"{{ 'Cancel' | translate }}\"\n      type=\"button\"\n      (click)=\"cancel()\"\n    >\n      {{ 'Cancel' | translate }}\n    </button>\n    <button\n      class=\"btn btn-primary\"\n      title=\"{{ 'Set version' | translate }}\"\n      [disabled]=\"!applicationVersion || plugin?.version === applicationVersion?.version\"\n      (click)=\"update()\"\n    >\n      {{ 'Set version' | translate }}\n    </button>\n  </div>\n</div>\n","import { Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ApplicationRemotePlugins, IApplication } from '@c8y/client';\nimport {\n  ActionControl,\n  AlertService,\n  ApplicationPlugin,\n  ApplicationPluginStatus,\n  BulkActionControl,\n  Column,\n  DataGridComponent,\n  DisplayOptions,\n  GainsightService,\n  gettext,\n  HeaderActionControl,\n  Pagination,\n  PluginsConfig,\n  PluginsService,\n  PluginsExportScopes\n} from '@c8y/ngx-components';\nimport {\n  EcosystemService,\n  PRODUCT_EXPERIENCE_ECOSYSTEM\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { pick } from 'lodash-es';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, combineLatest, firstValueFrom, Observable, Subject } from 'rxjs';\nimport { map, shareReplay } from 'rxjs/operators';\nimport { InstallPluginComponent } from './install-plugin.component';\nimport { LabelCellRendererComponent } from './label-cell-renderer.component';\nimport { OrphanedStatusCellRendererComponent } from './orphaned-status-cell-renderer.component';\nimport { UpdatePluginOfAppComponent } from './update-plugin-of-app/update-plugin-of-app.component';\n\n@Component({\n  selector: 'c8y-app-plugins',\n  templateUrl: './application-plugins.component.html'\n})\nexport class ApplicationPluginsComponent implements OnInit, OnDestroy {\n  PRODUCT_EXPERIENCE = PRODUCT_EXPERIENCE_ECOSYSTEM;\n  CURRENT_LOCATION = location.href;\n\n  @Input() appId: string | number;\n  @ViewChild(DataGridComponent, { static: false })\n  dataGrid: DataGridComponent;\n\n  remotePlugins$: BehaviorSubject<ApplicationRemotePlugins> = new BehaviorSubject({});\n  allAvailablePlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n  selfPlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n\n  installedPlugins$: Observable<ApplicationPlugin[]> = combineLatest([\n    this.remotePlugins$.pipe(map(remotes => PluginsService.convertInstalledRemotesToIds(remotes))),\n    this.allAvailablePlugins$\n  ]).pipe(\n    map(([remotePlugins, allPlugins]) => this.getInstalledPlugins(allPlugins, remotePlugins)),\n    shareReplay(1)\n  );\n  orphanedPlugins$ = this.installedPlugins$.pipe(\n    map(plugins => plugins.filter(p => p.status === ApplicationPluginStatus.ORPHANED))\n  );\n  isStandard$ = combineLatest([this.installedPlugins$, this.selfPlugins$]).pipe(\n    map(([installedPlugins, selfPlugins]) => {\n      const manifestRemotes = this.app?.manifest?.remotes || {};\n      // ensure that every installed plugin is a self plugin or a plugin from the manifest\n      const allInstalledPluginsAreSelf = installedPlugins.every(\n        p =>\n          selfPlugins.some(selfPlugin => selfPlugin.id === p.id) ||\n          (Array.isArray(manifestRemotes[p.contextPath]) &&\n            manifestRemotes[p.contextPath].includes(p.module))\n      );\n\n      // ensure that every self plugin is installed\n      const allSelfPluginsAreInstalled = selfPlugins.every(selfPlugin =>\n        installedPlugins.some(p => p.id === selfPlugin.id)\n      );\n      const configRemotes = this.app?.config?.remotes || {};\n\n      // ensure that every remote from the manifest is in the config\n      // if no config exists we are also all good\n      const everyRemoteFromManifestIsInConfig =\n        !this.app?.config?.remotes ||\n        Object.keys(manifestRemotes).every(\n          contextPath =>\n            Array.isArray(configRemotes[contextPath]) &&\n            Array.isArray(manifestRemotes[contextPath]) &&\n            manifestRemotes[contextPath].every(module =>\n              configRemotes[contextPath].includes(module)\n            )\n        );\n\n      return (\n        allInstalledPluginsAreSelf &&\n        allSelfPluginsAreInstalled &&\n        everyRemoteFromManifestIsInConfig\n      );\n    })\n  );\n  app: IApplication;\n  isLoading: boolean;\n  title: string = gettext('Installed plugins');\n  loadMoreItemsLabel: string = gettext('Load more packages');\n  loadingItemsLabel: string = gettext('Loading packages…');\n  actionControls: ActionControl[] = this.getActionControls();\n  bulkActionControls: BulkActionControl[] = this.getBulkActionControls();\n  headerActionControls: HeaderActionControl[] = [];\n  noResultsMessage = gettext('No plugins to display.');\n  noDataMessage = gettext('No plugins installed.');\n  noResultsSubtitle = gettext('Refine your search terms or check your spelling.');\n  noDataSubtitle = gettext(\"This application doesn't have any plugin. Click below to install.\");\n  pagination: Pagination = {\n    pageSize: 10,\n    currentPage: 1\n  };\n  displayOptions: DisplayOptions = {\n    bordered: false,\n    striped: true,\n    filter: true,\n    gridHeader: true,\n    hover: true\n  };\n  columns: Column[] = [\n    {\n      name: 'name',\n      header: gettext('Plugin name'),\n      path: 'name',\n      filterable: true\n    },\n    {\n      name: 'Version',\n      header: gettext('Version'),\n      path: 'version',\n      filterable: false\n    },\n    {\n      name: 'Tag',\n      header: gettext('Tag`noun`'),\n      path: 'installedViaTag',\n      filterable: false,\n      cellRendererComponent: LabelCellRendererComponent\n    },\n    {\n      name: 'description',\n      header: gettext('Description'),\n      path: 'description',\n      filterable: false,\n      cellCSSClassName: 'small'\n    },\n    {\n      name: 'contextPath',\n      header: gettext('Source'),\n      path: 'contextPath',\n      filterable: false,\n      cellRendererComponent: LabelCellRendererComponent\n    },\n    {\n      name: 'scope',\n      header: gettext('Scope'),\n      path: 'scope',\n      filterable: false,\n      visible: false,\n      cellRendererComponent: LabelCellRendererComponent\n    },\n    {\n      name: 'status',\n      header: gettext('Status'),\n      path: 'status',\n      filterable: false,\n      cellRendererComponent: OrphanedStatusCellRendererComponent\n    }\n  ];\n  private destroy$: Subject<void> = new Subject();\n\n  constructor(\n    private activatedRoute: ActivatedRoute,\n    private ecosystemService: EcosystemService,\n    private bsModalService: BsModalService,\n    private pluginsService: PluginsService,\n    private alertService: AlertService,\n    private gainsightService: GainsightService\n  ) {}\n\n  ngOnInit() {\n    this.addInstallButtonToHeaderActionControls();\n    this.loadData();\n  }\n\n  async loadData() {\n    this.isLoading = true;\n    await this.getApplicationMO();\n    await this.getApplicationMFRemotes(this.app);\n    await this.getAllApplicationsMFExports(this.app);\n    await this.getAllSelfMFExports(this.app);\n    this.isLoading = false;\n  }\n\n  async resetToDefault() {\n    this.isLoading = true;\n    await this.pluginsService.resetRemotes(this.app);\n    await this.loadData();\n    this.alertService.success(gettext('The application was reset to its default plugins.'));\n  }\n\n  async installPlugins() {\n    let currentPlugin: ApplicationPlugin | null = null;\n\n    try {\n      this.gainsightService.triggerEvent(\n        PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.INSTALLED_PLUGINS,\n        {\n          component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,\n          action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.INSTALL_PLUGINS_INITIATED,\n          url: this.CURRENT_LOCATION,\n          targetApplicationName: this.app.name,\n          targetApplicationContextPath: this.app.contextPath\n        }\n      );\n      const pluginsToAdd: ApplicationPlugin[] =\n        await this.bsModalService.show<InstallPluginComponent>(InstallPluginComponent, {\n          class: 'modal-md',\n          ariaDescribedby: 'modal-body',\n          ariaLabelledBy: 'modal-title',\n          initialState: this.getInstallModalInitState(),\n          ignoreBackdropClick: true\n        }).content.result;\n\n      const isArchived = await this.ecosystemService.verifyArchived(pluginsToAdd);\n      if (!isArchived) {\n        return;\n      }\n\n      const licensesVerifiedByUser = await this.ecosystemService.verifyLicenses(pluginsToAdd);\n      if (!licensesVerifiedByUser) {\n        return;\n      }\n      const verifyVersionCompatibility =\n        await this.ecosystemService.verifyPluginVersionsCompatibility(pluginsToAdd, this.app);\n\n      if (!verifyVersionCompatibility) {\n        return;\n      }\n\n      this.isLoading = true;\n      await this.handleRemotesInstallation(pluginsToAdd);\n\n      this.alertService.success(gettext('Plugins installed.'));\n      pluginsToAdd.forEach(plugin => {\n        currentPlugin = plugin;\n\n        this.triggerPluginEvent(\n          plugin,\n          PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.PLUGIN_INSTALLED\n        );\n      });\n    } catch (ex) {\n      if (ex) {\n        this.alertService.addServerFailure(ex);\n        this.triggerPluginEvent(\n          currentPlugin,\n          PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE\n        );\n      }\n    } finally {\n      this.isLoading = false;\n    }\n  }\n\n  async removePlugins(plugins: string[]) {\n    let currentPlugin: ApplicationPlugin | null = null;\n\n    try {\n      this.isLoading = true;\n      const installedPlugins: ApplicationPlugin[] = await firstValueFrom(this.installedPlugins$);\n      const pluginsToRemove: ApplicationPlugin[] = installedPlugins.filter(p =>\n        plugins.includes(p.id)\n      );\n      const updatedRemotes = await this.pluginsService.removeRemotes(\n        this.app,\n        plugins.map(id => installedPlugins.find(p => p.id === id))\n      );\n      this.emitRemotes(updatedRemotes);\n\n      this.isLoading = false;\n      this.dataGrid.cancel();\n      this.alertService.success(gettext('Plugins removed.'));\n\n      pluginsToRemove.forEach(plugin => {\n        currentPlugin = plugin;\n\n        this.triggerPluginEvent(\n          plugin,\n          PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.PLUGIN_REMOVED\n        );\n      });\n    } catch (ex) {\n      if (ex) {\n        this.alertService.addServerFailure(ex);\n        this.triggerPluginEvent(\n          currentPlugin,\n          PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE\n        );\n      }\n    } finally {\n      this.isLoading = false;\n    }\n  }\n\n  async cleanupOrphanedPlugins(plugins: ApplicationPlugin[]) {\n    const pluginIds = plugins.map(p => p.id);\n    await this.removePlugins(pluginIds);\n  }\n\n  getActionControls(): ActionControl[] {\n    return [\n      {\n        type: 'customUpdate',\n        text: gettext('Update'),\n        icon: 'caret-square-o-up',\n        showIf: plugin => {\n          return (\n            plugin.status === ApplicationPluginStatus.OUTDATED ||\n            plugin.status === ApplicationPluginStatus.REVOKED\n          );\n        },\n        callback: plugin => this.updatePlugin(this.app, plugin as ApplicationPlugin)\n      },\n      {\n        type: 'customDowngrade',\n        text: gettext('Downgrade'),\n        icon: 'caret-square-o-down',\n        showIf: (plugin: ApplicationPlugin) => {\n          if (\n            plugin.scope === PluginsExportScopes.SELF ||\n            plugin.scope === PluginsExportScopes.SELF_OPTIONAL\n          ) {\n            return false;\n          }\n          return plugin.status === ApplicationPluginStatus.LATEST;\n        },\n        callback: plugin => this.updatePlugin(this.app, plugin as ApplicationPlugin, true)\n      }\n    ];\n  }\n\n  getBulkActionControls(): BulkActionControl[] {\n    return [\n      {\n        type: 'customDelete',\n        text: gettext('Remove'),\n        icon: 'trash',\n        callback: plugins => this.removePlugins(plugins)\n      }\n    ];\n  }\n\n  async updatePlugin(app: IApplication, plugin: ApplicationPlugin, downgrade = false) {\n    try {\n      await (\n        this.bsModalService.show(UpdatePluginOfAppComponent, {\n          class: 'modal-sm',\n          ariaDescribedby: 'modal-body',\n          ariaLabelledBy: 'modal-title',\n          initialState: {\n            app,\n            plugin,\n            downgrade\n          },\n          ignoreBackdropClick: true\n        }).content as UpdatePluginOfAppComponent\n      ).result;\n      this.refresh();\n    } catch (er) {\n      return;\n    }\n  }\n\n  refresh() {\n    this.loadData();\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  private addInstallButtonToHeaderActionControls() {\n    if (this.appId) {\n      this.headerActionControls = [\n        {\n          text: gettext('Install plugins'),\n          callback: () => {\n            this.installPlugins();\n          },\n          icon: 'plus-circle',\n          type: 'custom'\n        }\n      ];\n    }\n  }\n\n  private async handleRemotesInstallation(plugins: ApplicationPlugin[]) {\n    const updatedRemotes = await this.pluginsService.addRemotes(this.app, plugins);\n    return this.emitRemotes(updatedRemotes);\n  }\n\n  private emitRemotes(pluginsConfig: PluginsConfig) {\n    const { remotes, excludedRemotes } = pluginsConfig;\n\n    // needed for first time adding/removing a plugin\n    if (!this.app.config) {\n      this.app.config = {};\n    }\n\n    this.app.config.remotes = remotes;\n    this.app.config.excludedRemotes = excludedRemotes;\n    const actualRemotes = this.pluginsService.getMFRemotes(this.app);\n    this.remotePlugins$.next(actualRemotes);\n    return { ...this.remotePlugins$.value };\n  }\n\n  private async getApplicationMO(): Promise<IApplication> {\n    let id = this.appId;\n    if (!id) {\n      const { id: routeId } = this.activatedRoute.snapshot.parent.data.contextData;\n      id = routeId;\n    }\n\n    try {\n      this.app = await this.ecosystemService.getApplication(id);\n    } catch (er) {\n      if (er) {\n        this.alertService.addServerFailure(er);\n      }\n    }\n    return this.app;\n  }\n\n  private async getApplicationMFExports(app: IApplication) {\n    const exports = this.pluginsService.getMFExports(app, [], true);\n    return exports;\n  }\n\n  private async getApplicationMFRemotes(app: IApplication) {\n    const appConfigRemotes = this.pluginsService.getMFRemotes(app);\n    this.remotePlugins$.next(appConfigRemotes || {});\n  }\n\n  private async getAllApplicationsMFExports(app: IApplication) {\n    const exportedByCurrentApp = await this.getApplicationMFExports(app);\n    const allAppsMFExports = await this.pluginsService.getAllMFExports(true);\n    this.allAvailablePlugins$.next([...allAppsMFExports, ...exportedByCurrentApp]);\n  }\n\n  private async getAllSelfMFExports(app: IApplication) {\n    const exportedByCurrentApp = await this.getApplicationMFExports(app);\n    this.selfPlugins$.next(exportedByCurrentApp.filter(({ scope }) => scope === 'self'));\n  }\n\n  private getInstallModalInitState(): any {\n    return {\n      plugins$: combineLatest([this.allAvailablePlugins$, this.installedPlugins$]).pipe(\n        map(([allPlugins, installedPlugins]) => {\n          // to not mutate the original array and objects contained in it\n          const allPluginsAsNewObjects = allPlugins.map(p => ({ ...p }));\n\n          for (const plugin of installedPlugins) {\n            let installedPlugin = allPluginsAsNewObjects.find(p => p.id === plugin.id);\n\n            if (!installedPlugin && plugin.installedViaTag) {\n              installedPlugin = allPluginsAsNewObjects.find(\n                p =>\n                  p.contextPath === plugin.contextPath &&\n                  p.module === plugin.module &&\n                  p.tags?.includes(plugin.installedViaTag as string)\n              );\n            }\n\n            if (installedPlugin) {\n              installedPlugin.installed = true;\n              continue;\n            }\n          }\n\n          return allPluginsAsNewObjects.map(p => ({ ...p, installed: !!p.installed }));\n        }),\n        shareReplay(1)\n      )\n    };\n  }\n\n  private getOrphanedPlugins(\n    orphanedPluginIds: string[],\n    allPlugins: ApplicationPlugin[]\n  ): ApplicationPlugin[] {\n    const orphanedPlugins: ApplicationPlugin[] = orphanedPluginIds.map(p => this.extractDetails(p));\n    const orphanedPluginsUpdated = orphanedPlugins.map(p => {\n      const pluginWithMatchingTag = allPlugins.find(\n        tmp =>\n          tmp.contextPath === p.contextPath &&\n          tmp.module === p.module &&\n          tmp.tags?.includes(p.version || 'latest')\n      );\n      if (pluginWithMatchingTag) {\n        return {\n          ...pluginWithMatchingTag,\n          id: p.id,\n          status: ApplicationPluginStatus.AUTO,\n          installedViaTag: p.version || 'latest'\n        };\n      }\n      const pluginInDifferentVersion = allPlugins.find(\n        tmp => tmp.contextPath === p.contextPath && tmp.module === p.module\n      );\n      if (pluginInDifferentVersion) {\n        return {\n          ...pluginInDifferentVersion,\n          version: p.version,\n          id: p.id,\n          status: ApplicationPluginStatus.OUTDATED\n        };\n      }\n      return p;\n    });\n\n    return orphanedPluginsUpdated;\n  }\n\n  private splitOrphanedPluginsIntoOrphanedAndRevokedPlugins(\n    allPlugins: ApplicationPlugin[],\n    orphanedPlugins: ApplicationPlugin[]\n  ) {\n    const revokedPlugins = new Array<ApplicationPlugin>();\n    const actuallyOrphanedPlugins = new Array<ApplicationPlugin>();\n\n    for (const plugin of orphanedPlugins) {\n      const foundFamiliarPlugin = allPlugins.find(\n        plugin1 => plugin.contextPath === plugin1.contextPath && plugin.module === plugin1.module\n      );\n      if (foundFamiliarPlugin) {\n        revokedPlugins.push(\n          Object.assign({}, foundFamiliarPlugin, plugin, {\n            status: ApplicationPluginStatus.REVOKED\n          })\n        );\n      } else {\n        actuallyOrphanedPlugins.push(plugin);\n      }\n    }\n\n    return { revokedPlugins, actuallyOrphanedPlugins };\n  }\n\n  private getInstalledPlugins(\n    allPlugins: ApplicationPlugin[],\n    remotePlugins: string[]\n  ): ApplicationPlugin[] {\n    const availablePlugins = allPlugins\n      .filter(plugin => remotePlugins.includes(plugin.id))\n      .map(plugin =>\n        Object.assign(plugin, {\n          status: plugin.tags?.includes('latest')\n            ? ApplicationPluginStatus.LATEST\n            : ApplicationPluginStatus.OUTDATED\n        })\n      );\n    const orphanedPluginIds = remotePlugins.filter(\n      r => !availablePlugins.find(plugin => plugin.id === r)\n    );\n    const orphanedPlugins: ApplicationPlugin[] = this.getOrphanedPlugins(\n      orphanedPluginIds,\n      allPlugins\n    );\n\n    const notActuallyOrphanedPlugins = orphanedPlugins.filter(\n      p => p.status === ApplicationPluginStatus.AUTO\n    );\n\n    const orphanedOrRevokedPlugins = orphanedPlugins.filter(\n      p => p.status !== ApplicationPluginStatus.AUTO\n    );\n\n    const { actuallyOrphanedPlugins, revokedPlugins } =\n      this.splitOrphanedPluginsIntoOrphanedAndRevokedPlugins(allPlugins, orphanedOrRevokedPlugins);\n\n    return [\n      ...availablePlugins,\n      ...notActuallyOrphanedPlugins,\n      ...revokedPlugins,\n      ...actuallyOrphanedPlugins\n    ];\n  }\n\n  private extractDetails(pluginId: string): ApplicationPlugin {\n    const contextPath = this.getStringMatchingRegex(pluginId, /^[^@]*(@|\\/)/);\n    const version = this.getStringMatchingRegex(pluginId, /@.*\\//);\n    const module = this.getStringMatchingRegex(pluginId, /\\/.*$/);\n    const unavailable = gettext('unavailable`plugin`');\n    return {\n      id: pluginId,\n      idLatest: `${contextPath}/${module}`,\n      path: '',\n      module,\n      name: module,\n      status: ApplicationPluginStatus.ORPHANED,\n      contextPath: contextPath,\n      description: unavailable,\n      version: version\n    };\n  }\n\n  private getStringMatchingRegex(\n    str: string,\n    regex: { [Symbol.match](string: string): RegExpMatchArray | null }\n  ): string {\n    const matches = str.match(regex);\n    const value = matches ? matches[0] : '';\n\n    return value.replace(/(@|\\/)/g, '');\n  }\n\n  private triggerPluginEvent(plugin: ApplicationPlugin, result: string): void {\n    const pluginInfo = pick(plugin, [\n      'name',\n      'contextPath',\n      'module',\n      'version',\n      'type',\n      'id'\n    ] satisfies (keyof ApplicationPlugin)[]);\n\n    this.gainsightService.triggerEvent(\n      PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.INSTALLED_PLUGINS,\n      {\n        component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.APPLICATION_PLUGINS,\n        result,\n        url: this.CURRENT_LOCATION,\n        ...pluginInfo,\n        targetApplicationName: this.app.name,\n        targetApplicationContextPath: this.app.contextPath\n      }\n    );\n  }\n}\n","<c8y-title>{{ app | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n  <c8y-breadcrumb-item\n    [icon]=\"'c8y-atom'\"\n    [label]=\"'Ecosystem' | translate\"\n  ></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item\n    [icon]=\"'c8y-modules'\"\n    [label]=\"'Applications' | translate\"\n    [path]=\"'ecosystem/application/applications'\"\n  ></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item [label]=\"app | humanizeAppName | async\"></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item [label]=\"'Plugins' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n  [placement]=\"'right'\"\n  *ngIf=\"!(isStandard$ | async)\"\n>\n  <button\n    class=\"btn btn-link\"\n    title=\"{{ 'Reset to default plugins' | translate }}\"\n    [ngClass]=\"{ 'btn-pending': isLoading }\"\n    (click)=\"resetToDefault()\"\n  >\n    <i c8yIcon=\"undo\"></i>\n    {{ 'Reset to default' | translate }}\n  </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n  <button\n    class=\"btn btn-link\"\n    title=\"{{ 'Install plugins' | translate }}\"\n    (click)=\"installPlugins()\"\n    [ngClass]=\"{ 'btn-pending': isLoading }\"\n  >\n    <i c8yIcon=\"plus-circle\"></i>\n    {{ 'Install plugins' | translate }}\n  </button>\n</c8y-action-bar-item>\n\n<ng-container *ngIf=\"orphanedPlugins$ | async as orphanedPlugins\">\n  <c8y-action-bar-item\n    *ngIf=\"orphanedPlugins?.length\"\n    [placement]=\"'right'\"\n  >\n    <button\n      class=\"btn btn-link\"\n      title=\"{{ 'Clean up orphaned plugins' | translate }}\"\n      (click)=\"cleanupOrphanedPlugins(orphanedPlugins)\"\n      [ngClass]=\"{ 'btn-pending': isLoading }\"\n    >\n      <i c8yIcon=\"erase\"></i>\n      {{ 'Clean up orphaned plugins' | translate }}\n    </button>\n  </c8y-action-bar-item>\n</ng-container>\n\n<div class=\"content-fullpage d-flex d-col border-top\">\n  <c8y-data-grid\n    class=\"d-contents\"\n    [title]=\"title\"\n    [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n    [loadingItemsLabel]=\"loadingItemsLabel\"\n    [displayOptions]=\"displayOptions\"\n    [columns]=\"columns\"\n    [rows]=\"installedPlugins$ | async\"\n    [pagination]=\"pagination\"\n    [selectable]=\"true\"\n    [actionControls]=\"actionControls\"\n    [bulkActionControls]=\"bulkActionControls\"\n    [headerActionControls]=\"headerActionControls\"\n    (onReload)=\"refresh()\"\n  >\n    <c8y-ui-empty-state\n      [icon]=\"stats?.size > 0 ? 'search' : 'plugin'\"\n      [title]=\"stats?.size > 0 ? (noResultsMessage | translate) : (noDataMessage | translate)\"\n      [subtitle]=\"stats?.size > 0 ? (noResultsSubtitle | translate) : (noDataSubtitle | translate)\"\n      *emptyStateContext=\"let stats\"\n      [horizontal]=\"stats?.size > 0\"\n    >\n      <p *ngIf=\"stats?.size === 0\">\n        <button\n          class=\"btn btn-primary btn-sm\"\n          title=\"{{ 'Install plugins' | translate }}\"\n          (click)=\"installPlugins()\"\n          [ngClass]=\"{ 'btn-pending': isLoading }\"\n          translate\n        >\n          Install plugins\n        </button>\n      </p>\n    </c8y-ui-empty-state>\n  </c8y-data-grid>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { ApplicationType, IApplication } from '@c8y/client';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\n\n@Injectable()\nexport class ApplicationPluginsGuard {\n  constructor(private ecosystemService: EcosystemService) {}\n\n  canActivate(route: ActivatedRouteSnapshot) {\n    const app: IApplication = route.data.contextData || route.parent.data.contextData;\n    if (!app) {\n      return false;\n    }\n    const manifest = app.manifest;\n    if (!manifest) {\n      return false;\n    }\n    return (\n      app.type === ApplicationType.HOSTED &&\n      this.ecosystemService.isOwner(app) &&\n      !this.ecosystemService.isPackage(app) &&\n      // apps like e.g. the public-options should not have the plugins tab\n      !manifest.noAppSwitcher\n    );\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { SharedEcosystemModule } from '@c8y/ngx-components/ecosystem/shared';\nimport { ApplicationPluginsComponent } from './application-plugins.component';\nimport { UpdatePluginOfAppComponent } from './update-plugin-of-app/update-plugin-of-app.component';\nimport { AppStatePipe } from './appState.pipe';\nimport { AppsToUpdateRemotesSelectComponent } from './apps-to-update-remotes-select.component';\nimport { InstallPluginComponent } from './install-plugin.component';\nimport { OrphanedStatusCellRendererComponent } from './orphaned-status-cell-renderer.component';\nimport { PluginListItemComponent } from './plugin-list-item.component';\nimport { PluginListComponent } from './plugin-list.component';\nimport { LabelCellRendererComponent } from './label-cell-renderer.component';\nimport { gettext, hookRoute, ViewContext } from '@c8y/ngx-components';\nimport { ApplicationPluginsGuard } from './application-plugins.guard';\nimport { OnlyLatestFilterComponent } from './only-latest-filter/only-latest-filter.component';\n\n@NgModule({\n  imports: [CoreModule, SharedEcosystemModule],\n  declarations: [\n    ApplicationPluginsComponent,\n    PluginListItemComponent,\n    InstallPluginComponent,\n    PluginListComponent,\n    AppsToUpdateRemotesSelectComponent,\n    AppStatePipe,\n    LabelCellRendererComponent,\n    OrphanedStatusCellRendererComponent,\n    UpdatePluginOfAppComponent,\n    OnlyLatestFilterComponent\n  ],\n  exports: [\n    ApplicationPluginsComponent,\n    PluginListItemComponent,\n    InstallPluginComponent,\n    PluginListComponent,\n    AppsToUpdateRemotesSelectComponent,\n    AppStatePipe,\n    LabelCellRendererComponent,\n    OrphanedStatusCellRendererComponent,\n    UpdatePluginOfAppComponent,\n    OnlyLatestFilterComponent\n  ],\n  providers: [\n    ApplicationPluginsGuard,\n    hookRoute([\n      {\n        path: 'plugins',\n        component: ApplicationPluginsComponent,\n        icon: 'plugin',\n        label: gettext('Plugins'),\n        context: ViewContext.Application,\n        priority: 3,\n        canActivate: [ApplicationPluginsGuard]\n      }\n    ])\n  ]\n})\nexport class ApplicationPluginsModule {}\n","import { Component, ViewChild } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { IApplication } from '@c8y/client';\nimport { shareReplay, switchMap, tap } from 'rxjs/operators';\nimport {\n  EcosystemService,\n  FilterableAppOrPlugin,\n  FilterPipe,\n  ListFiltersComponent\n} from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n  selector: 'c8y-feature-list',\n  templateUrl: './feature-list.component.html'\n})\nexport class FeatureListComponent {\n  reloading = false;\n  reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n\n  features$: Observable<IApplication[]> = this.reload$.pipe(\n    tap(() => (this.reloading = true)),\n    switchMap(() => this.ecosystemService.getFeatureApplications()),\n    tap(() => (this.reloading = false)),\n    shareReplay()\n  );\n  filteredFeatures$: Observable<FilterableAppOrPlugin[]>;\n  listClass: string;\n  @ViewChild(ListFiltersComponent) filtersComponent: ListFiltersComponent;\n\n  constructor(private ecosystemService: EcosystemService) {}\n\n  ngOnInit() {\n    this.loadFeatures();\n  }\n\n  loadFeatures() {\n    this.reload$.next();\n  }\n\n  setFilterPipe(pipe: FilterPipe) {\n    this.filteredFeatures$ = this.features$.pipe(src => pipe(src));\n  }\n\n  resetFilters() {\n    this.filtersComponent?.resetAllFilters();\n  }\n}\n","<c8y-title>{{ 'Features' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n  <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item\n    [icon]=\"'c8y-modules'\"\n    [label]=\"'Applications' | translate\"\n    [path]=\"'ecosystem/application/applications'\"\n  ></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item [icon]=\"'tab'\" [label]=\"'Features' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n  <button (click)=\"reload$.next()\" class=\"btn btn-link\" title=\"{{ 'Reload' | translate }}\">\n    <i [ngClass]=\"{ 'icon-spin': reloading }\" c8yIcon=\"refresh\"></i>\n    {{ 'Reload' | translate }}\n  </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\">\n  <c8y-list-filters\n    *ngIf=\"features$ | async\"\n    (filterPipeChange)=\"setFilterPipe($event)\"\n  ></c8y-list-filters>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\" itemClass=\"navbar-form hidden-xs\">\n  <c8y-list-display-switch\n    (onListClassChange)=\"listClass = $event\"\n    [listLength]=\"(features$ | async)?.length\"\n  ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<div *ngIf=\"(features$ | async)?.length === 0\" class=\"c8y-empty-state text-center\">\n  <h1 class=\"c8y-icon c8y-icon-modules c8y-icon-duocolor\"></h1>\n  <h3 translate>No features to display.</h3>\n  <p translate>No additional features are subscribed to the tenant.</p>\n</div>\n\n<div [ngClass]=\"listClass\" class=\"card-group\">\n  <div class=\"page-sticky-header hidden-xs d-flex\" *ngIf=\"(features$ | async)?.length > 0\">\n    <div class=\"card-block card-column-40\">\n      <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n      {{ 'Feature' | translate }}\n    </div>\n    <div class=\"card-block p-0 card-column-80\">\n      <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n      <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n    </div>\n  </div>\n  <div *ngFor=\"let feature of filteredFeatures$ | async\" class=\"col-xs-12 col-sm-4 col-md-3\">\n    <c8y-application-card\n      [app]=\"feature\"\n      [canEdit]=\"false\"\n      class=\"d-contents\"\n    ></c8y-application-card>\n  </div>\n</div>\n\n<c8y-ui-empty-state\n  *ngIf=\"(features$ | async)?.length > 0 && (filteredFeatures$ | async)?.length === 0\"\n  [icon]=\"'search'\"\n  [title]=\"'No matching features.' | translate\"\n  [subtitle]=\"'Refine your search terms and/or the filters' | translate\"\n>\n  <button\n    class=\"btn btn-primary\"\n    type=\"button\"\n    title=\"{{ 'Reset filters' | translate }}\"\n    (click)=\"resetFilters()\"\n  >\n    {{ 'Reset filters' | translate }}\n  </button>\n</c8y-ui-empty-state>\n","import { Component } from '@angular/core';\nimport { DocsService, gettext, ModalService, Status } from '@c8y/ngx-components';\nimport { ApplicationType, IApplication, TenantService } from '@c8y/client';\nimport { EcosystemService, ERROR_TYPE } from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n  selector: 'c8y-add-microservice',\n  template: `<div class=\"p-16\" translate [translateParams]=\"{ slaHref: slaHref }\" ngNonBindable>\n      By uploading a microservice, you agree to the\n      <a href=\"{{ slaHref }}\" target=\"_blank\" rel=\"noopener noreferrer\"\n        >Microservice Deployment SLA</a\n      >\n      which outlines our microservices hosting terms, conditions, and performance standards.\n    </div>\n    <c8y-add-application\n      [headerIcon]=\"'microchip'\"\n      [headerText]=\"headerText\"\n      [successText]=\"successText\"\n      [createApplicationHandler]=\"createMicroserviceApplicationHandler\"\n      [uploadApplicationHandler]=\"uploadMicroserviceHandler\"\n    ></c8y-add-application>`\n})\nexport class AddMicroserviceComponent {\n  readonly slaHref = this.docs.getUserGuideLink(\n    'docs/service-terms/service-level/#microservices-sla'\n  );\n  headerText: string = gettext('Add microservice');\n  successText: string = gettext('Microservice created');\n\n  constructor(\n    private ecosystemService: EcosystemService,\n    private modal: ModalService,\n    private tenantService: TenantService,\n    private docs: DocsService\n  ) {}\n\n  createMicroserviceApplicationHandler = (f: File) => this.createMicroserviceApplication(f);\n  uploadMicroserviceHandler = (f: File, app: IApplication) => this.uploadMicroservice(f, app);\n\n  async createMicroserviceApplication(file: File): Promise<IApplication> {\n    await this.ecosystemService.isValidAppType(file, ApplicationType.MICROSERVICE);\n    return this.ecosystemService.createAppForArchive(file);\n  }\n\n  async uploadMicroservice(file: File, microservice: IApplication): Promise<void> {\n    const subscribeToCurrentTenant = await this.askIfActivationAfterUploadNeeded();\n    await this.ecosystemService.uploadArchiveToApp(file, microservice);\n    await this.subscribeMicroservice(microservice, subscribeToCurrentTenant);\n  }\n\n  private async askIfActivationAfterUploadNeeded(): Promise<boolean> {\n    try {\n      await this.modal.confirm(\n        gettext('Subscribe to microservice'),\n        gettext(\n          'You are about to subscribe to the microservice after upload. Do you want to subscribe to it?'\n        ),\n        Status.INFO,\n        { ok: gettext('Subscribe'), cancel: gettext(\"Don't subscribe\") }\n      );\n      return true;\n    } catch (ex) {\n      return false;\n    }\n  }\n\n  private async subscribeMicroservice(\n    app: IApplication,\n    subscribeToCurrentTenant: boolean\n  ): Promise<any> {\n    const tenant = (await this.tenantService.current()).data;\n    const applications = tenant.applications.references;\n\n    const isSubscribed = applications.some(({ application }) => application.id === app.id);\n    if (!isSubscribed && subscribeToCurrentTenant) {\n      try {\n        return await this.tenantService.subscribeApplication(tenant, app);\n      } catch (res) {\n        if (res.status === 409) {\n          throw Error(ERROR_TYPE.ALREADY_SUBSCRIBED);\n        }\n      }\n    } else if (isSubscribed && !subscribeToCurrentTenant) {\n      return this.tenantService.unsubscribeApplication(tenant, app);\n    }\n  }\n}\n","import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { WizardModalService } from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { shareReplay, switchMap, tap } from 'rxjs/operators';\nimport {\n  APP_STATE,\n  EcosystemService,\n  EcosystemWizards,\n  FilterPipe,\n  PackageFilters,\n  ListFiltersComponent,\n  FilterableAppOrPlugin\n} from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n  selector: 'c8y-microservice-list',\n  templateUrl: './microservice-list.component.html'\n})\nexport class MicroserviceListComponent implements OnInit {\n  reloading = false;\n  reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n  microservices$: Observable<IApplication[]> = this.reload$.pipe(\n    tap(() => (this.reloading = true)),\n    switchMap(() => this.ecosystemService.getMicroservices()),\n    tap(microservices => {\n      microservices.forEach(microservice => {\n        microservice.filterProps = this.ecosystemService.getAppFilterProps(microservice);\n      });\n    }),\n    tap(() => (this.reloading = false)),\n    shareReplay()\n  );\n  filteredMicroservices$: Observable<FilterableAppOrPlugin[]>;\n  isMicroserviceHostingAllowed$: Observable<boolean> = this.reload$.pipe(\n    switchMap(() => this.ecosystemService.isMicroserviceHostingAllowed()),\n    shareReplay()\n  );\n  listClass: string;\n  packageAvailabilities: (keyof PackageFilters['availability'])[] = [\n    APP_STATE.SUBSCRIBED.label,\n    APP_STATE.CUSTOM.label\n  ];\n  @ViewChild(ListFiltersComponent) filtersComponent: ListFiltersComponent;\n\n  constructor(\n    private ecosystemService: EcosystemService,\n    private wizardModalService: WizardModalService,\n    private cd: ChangeDetectorRef\n  ) {}\n\n  ngOnInit() {\n    this.loadMicroservices();\n    // manually trigger detection to not have ExpressionChangedAfterItHasBeenChecked error in spec file\n    this.cd.detectChanges();\n  }\n\n  loadMicroservices() {\n    this.reload$.next();\n  }\n\n  addMicroservice() {\n    const initialState: Record<string, unknown> = {\n      id: EcosystemWizards.MICROSERVICE_UPLOAD\n    };\n    const modalOptions: ModalOptions = { initialState };\n\n    const modalRef = this.wizardModalService.show(modalOptions);\n    modalRef.content.onClose.subscribe(() => {\n      this.loadMicroservices();\n    });\n  }\n\n  setFilterPipe(pipe: FilterPipe) {\n    this.filteredMicroservices$ = this.microservices$.pipe(src => pipe(src));\n  }\n\n  resetFilters() {\n    this.filtersComponent?.resetAllFilters();\n  }\n}\n","<c8y-title>{{ 'Microservices' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n  <c8y-breadcrumb-item\n    [icon]=\"'c8y-atom'\"\n    [label]=\"'Ecosystem' | translate\"\n  ></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item\n    [icon]=\"'microchip'\"\n    [label]=\"'Microservices' | translate\"\n    [path]=\"'ecosystem/microservice/microservices'\"\n  ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<ng-container *c8yIfAllowed=\"['ROLE_APPLICATION_MANAGEMENT_ADMIN']\">\n  <c8y-action-bar-item\n    [placement]=\"'right'\"\n    [priority]=\"100\"\n    *ngIf=\"isMicroserviceHostingAllowed$ | async\"\n  >\n    <button\n      class=\"btn btn-link\"\n      title=\"{{ 'Add microservice' | translate }}\"\n      (click)=\"addMicroservice()\"\n    >\n      <i c8yIcon=\"plus-circle\"></i>\n      {{ 'Add microservice' | translate }}\n    </button>\n  </c8y-action-bar-item>\n</ng-container>\n\n<c8y-help src=\"/docs/standard-tenant/ecosystem/#managing-microservices\"></c8y-help>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n  <button\n    class=\"btn btn-link\"\n    title=\"{{ 'Reload' | translate }}\"\n    (click)=\"reload$.next()\"\n  >\n    <i\n      c8yIcon=\"refresh\"\n      [ngClass]=\"{ 'icon-spin': reloading }\"\n    ></i>\n    {{ 'Reload' | translate }}\n  </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'left'\">\n  <c8y-list-filters\n    *ngIf=\"microservices$ | async\"\n    (filterPipeChange)=\"setFilterPipe($event)\"\n    [packageAvailabilities]=\"packageAvailabilities\"\n  ></c8y-list-filters>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n  [placement]=\"'left'\"\n  itemClass=\"navbar-form hidden-xs\"\n>\n  <c8y-list-display-switch\n    (onListClassChange)=\"listClass = $event\"\n    [listLength]=\"(microservices$ | async)?.length\"\n  ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<div\n  class=\"c8y-empty-state text-center\"\n  *ngIf=\"(microservices$ | async)?.length === 0\"\n>\n  <h1 class=\"c8y-icon c8y-icon-modules c8y-icon-duocolor\"></h1>\n  <h3 translate>No microservices to display.</h3>\n  <p translate>Add your first microservice by clicking below.</p>\n  <p>\n    <button\n      class=\"btn btn-primary\"\n      title=\"{{ 'Add microservice' | translate }}\"\n      (click)=\"addMicroservice()\"\n    >\n      {{ 'Add microservice' | translate }}\n    </button>\n  </p>\n</div>\n\n<div\n  class=\"card-group\"\n  [ngClass]=\"listClass\"\n>\n  <div\n    class=\"page-sticky-header hidden-xs d-flex\"\n    *ngIf=\"(microservices$ | async)?.length > 0\"\n  >\n    <div class=\"card-block card-column-40\">\n      <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n      {{ 'Microservice' | translate }}\n    </div>\n    <div class=\"card-block p-0 card-column-80 m-r-40\">\n      <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n      <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n      <div class=\"card-block card-column-20\"></div>\n    </div>\n  </div>\n  <div\n    class=\"col-xs-12 col-sm-4 col-md-3\"\n    *ngFor=\"let microservice of filteredMicroservices$ | async\"\n  >\n    <c8y-application-card\n      class=\"d-contents\"\n      (onAppDeleted)=\"loadMicroservices()\"\n      [app]=\"microservice\"\n    ></c8y-application-card>\n  </div>\n</div>\n\n<c8y-ui-empty-state\n  [icon]=\"'search'\"\n  [title]=\"'No matching microservices.' | translate\"\n  [subtitle]=\"'Refine your search terms and/or the filters' | translate\"\n  *ngIf=\"(microservices$ | async)?.length > 0 && (filteredMicroservices$ | async)?.length === 0\"\n>\n  <button\n    class=\"btn btn-primary\"\n    title=\"{{ 'Reset filters' | translate }}\"\n    type=\"button\"\n    (click)=\"resetFilters()\"\n  >\n    {{ 'Reset filters' | translate }}\n  </button>\n</c8y-ui-empty-state>\n","import { Component, ViewChild } from '@angular/core';\nimport { ApplicationType, IApplication } from '@c8y/client';\nimport { C8yStepper, gettext } from '@c8y/ngx-components';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n  selector: 'c8y-add-package',\n  template: `<c8y-add-application\n    [headerIcon]=\"'big-parcel'\"\n    [headerText]=\"headerText\"\n    [successText]=\"successText\"\n    [createApplicationHandler]=\"createPackageAppHandler\"\n    [uploadApplicationHandler]=\"uploadPackageHandler\"\n    [applicationType]=\"'package'\"\n  ></c8y-add-application>`\n})\nexport class AddPackageComponent {\n  @ViewChild(C8yStepper, { static: true })\n  stepper: C8yStepper;\n  headerText: string = gettext('Add extension package');\n  successText: string = gettext('Extension package created');\n\n  constructor(private ecosystemService: EcosystemService) {}\n\n  createPackageAppHandler = (f: File) => this.createPackageApp(f);\n  uploadPackageHandler = (f: File, app: IApplication) => this.uploadPackage(f, app);\n\n  async createPackageApp(file: File): Promise<IApplication> {\n    await this.ecosystemService.isValidAppType(file, ApplicationType.HOSTED);\n    return await this.ecosystemService.createAppForArchive(file, true);\n  }\n\n  uploadPackage(file: File, pckg: IApplication): Promise<IApplication> {\n    return this.ecosystemService.uploadArchiveToApp(file, pckg, true);\n  }\n\n  next() {\n    this.stepper.next();\n  }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { IApplication, IApplicationVersion } from '@c8y/client';\nimport {\n  GainsightService,\n  PluginsService,\n  ViewContext,\n  WizardComponent,\n  gettext\n} from '@c8y/ngx-components';\nimport {\n  ApplicationPropertiesFormComponent,\n  EcosystemService,\n  LicensedApplicationPlugin,\n  PRODUCT_EXPERIENCE_ECOSYSTEM\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { TranslateService } from '@ngx-translate/core';\nimport { pick } from 'lodash-es';\n\n@Component({\n  selector: 'c8y-deploy-application',\n  templateUrl: './deploy-application.component.html'\n})\nexport class DeployApplicationComponent implements OnInit {\n  CURRENT_LOCATION = location.href;\n\n  inProgress = true;\n  package: IApplication;\n  isDeployed = false;\n  deployedWithSuccess = false;\n  newAppConfig: IApplication;\n  deployedApp: IApplication;\n  applicationHref: string;\n\n  model = {\n    selected: undefined,\n    binary: {\n      id: undefined\n    }\n  };\n  canDeploy = false;\n\n  @ViewChild(ApplicationPropertiesFormComponent)\n  applicationPropertiesForm: ApplicationPropertiesFormComponent;\n\n  readonly descriptionTemplate: string = gettext(\n    'Deploy application using \"{{ packageName }}\" package'\n  );\n  readonly successMessageTemplate = gettext('Application \"{{ packageName }}\" created');\n  readonly doneLabel = gettext('Done');\n  readonly cancelLabel = gettext('Cancel');\n  headerText: string;\n\n  constructor(\n    private ecosystemService: EcosystemService,\n    private wizardComponent: WizardComponent,\n    private translate: TranslateService,\n    private pluginService: PluginsService,\n    private gainsightService: GainsightService,\n    private router: Router\n  ) {\n    this.package = (this.wizardComponent as any).package;\n  }\n\n  async ngOnInit() {\n    const apps = await this.ecosystemService.getHostedAndPackageApplications();\n    this.newAppConfig = this.ecosystemService.getUniqueAppConfig(this.package, apps);\n    this.headerText = this.getHeaderText();\n    this.inProgress = false;\n  }\n\n  async deployApp() {\n    this.inProgress = true;\n    const formGroupValue = this.applicationPropertiesForm.formGroup.getRawValue();\n    // Verify if selected package version is compatible with current platform versions.\n    this.package.manifest.version = this.model.selected.version;\n    const verifyVersionCompatibility =\n      await this.ecosystemService.verifyBlueprintVersionsCompatibility(this.package.manifest);\n\n    if (!verifyVersionCompatibility) {\n      this.cancel();\n      return;\n    }\n\n    const { contextPath, license, name, manifest } = this.package;\n    const type = this.pluginService.getPackageType(this.package);\n    const licensedApp: LicensedApplicationPlugin = {\n      contextPath,\n      license: license || manifest.license,\n      name,\n      type,\n      version: this.model.selected.version\n    };\n\n    const isArchived = await this.ecosystemService.verifyArchived([licensedApp]);\n    if (!isArchived) {\n      this.cancel();\n      return;\n    }\n\n    const licensesVerifiedByUser = await this.ecosystemService.verifyLicenses([licensedApp]);\n    if (!licensesVerifiedByUser) {\n      this.cancel();\n      return;\n    }\n\n    try {\n      this.deployedApp = await this.ecosystemService.deployApp(\n        this.package,\n        formGroupValue,\n        this.model\n      );\n      const applicationCustomEventInfo = pick(this.package, [\n        'id',\n        'name',\n        'contextPath',\n        'label',\n        'key'\n      ] satisfies (keyof IApplication)[]);\n\n      this.deployedWithSuccess = true;\n      this.gainsightService.triggerEvent(\n        PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.DEPLOY_APPLICATION,\n        {\n          component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.DEPLOY_APPLICATION,\n          action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DEPLOY_APPLICATION,\n          result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.DEPLOYED,\n          url: this.CURRENT_LOCATION,\n          ...applicationCustomEventInfo,\n          package: this.deployedApp?.manifest?.package ?? null\n        }\n      );\n    } catch (error) {\n      this.ecosystemService.alertError(error);\n      this.gainsightService.triggerEvent(\n        PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.DEPLOY_APPLICATION,\n        {\n          component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.DEPLOY_APPLICATION,\n          action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DEPLOY_APPLICATION,\n          result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE,\n          url: this.CURRENT_LOCATION,\n          error\n        }\n      );\n    } finally {\n      this.markAsDeployed();\n    }\n  }\n\n  cancel() {\n    this.wizardComponent.close();\n  }\n\n  onAppVersionSelect(appVersion: IApplicationVersion) {\n    Object.assign(this.model, {\n      selected: appVersion\n    });\n    this.canDeploy = true;\n  }\n\n  open() {\n    this.router.navigateByUrl(ViewContext.Application.replace(':id', `${this.deployedApp.id}`));\n    this.cancel();\n  }\n\n  private markAsDeployed() {\n    this.isDeployed = true;\n    this.inProgress = false;\n  }\n\n  private getHeaderText() {\n    return this.translate.instant(this.descriptionTemplate, {\n      packageName: this.package.name\n    });\n  }\n}\n","<c8y-wizard-header>\n  <div class=\"modal-header dialog-header\">\n    <i c8yIcon=\"output\"></i>\n    <h4 id=\"modal-title\">{{ 'Deploy application' | translate }}</h4>\n  </div>\n</c8y-wizard-header>\n\n<c8y-wizard-body id=\"modal-body\">\n  <ng-container *ngIf=\"!isDeployed\">\n    <div class=\"fadeIn animated d-flex a-i-center j-c-center d-col\" style=\"min-height: 309px\">\n      <p\n        class=\"bg-level-0 fit-w p-16 text-center text-medium sticky-top bg-level-0 separator-bottom\"\n        *ngIf=\"!inProgress\"\n      >\n        {{ headerText | translate }}\n      </p>\n      <c8y-application-properties-form\n        *ngIf=\"!inProgress\"\n        [application]=\"newAppConfig\"\n        class=\"d-block fit-w bg-level-1\"\n      ></c8y-application-properties-form>\n\n      <ng-container *ngIf=\"!inProgress\">\n        <div [ngStyle]=\"{ padding: '0 16px' }\" class=\"d-block fit-w bg-gray-white\">\n          <c8y-package-version-select\n            [ngModel]=\"model.selected\"\n            (ngModelChange)=\"onAppVersionSelect($event)\"\n            [packageId]=\"package?.id\"\n            [label]=\"'Use extension package version' | translate\"\n          ></c8y-package-version-select>\n        </div>\n      </ng-container>\n\n      <c8y-loading\n        *ngIf=\"inProgress\"\n        [message]=\"'Deploying…' | translate\"\n        class=\"text-center\"\n        layout=\"application\"\n      ></c8y-loading>\n    </div>\n  </ng-container>\n\n  <ng-container *ngIf=\"isDeployed\">\n    <div\n      *ngIf=\"deployedWithSuccess; else failedDeploy\"\n      class=\"modal-body fadeIn animated\"\n      style=\"min-height: 309px\"\n    >\n      <div class=\"d-flex a-i-center j-c-center d-col\">\n        <c8y-operation-result\n          type=\"success\"\n          [size]=\"84\"\n          [vertical]=\"true\"\n          [text]=\"successMessageTemplate | translate: { packageName: package.name }\"\n          class=\"lead d-block m-b-16\"\n        ></c8y-operation-result>\n      </div>\n    </div>\n    <ng-template #failedDeploy>\n      <div class=\"modal-body fadeIn animated text-center\" style=\"min-height: 257px\">\n        <c8y-operation-result\n          type=\"error\"\n          [size]=\"84\"\n          [vertical]=\"true\"\n          text=\"{{ 'Application creation failed' | translate }}\"\n          class=\"lead\"\n        ></c8y-operation-result>\n      </div>\n    </ng-template>\n  </ng-container>\n</c8y-wizard-body>\n\n<c8y-wizard-footer>\n  <button\n    (click)=\"cancel()\"\n    type=\"button\"\n    class=\"btn btn-default\"\n    data-cy=\"c8y-deploy-application--cancel-blueprint-button\"\n    title=\"{{ (isDeployed && deployedWithSuccess ? doneLabel : cancelLabel) | translate }}\"\n  >\n    {{ (isDeployed && deployedWithSuccess ? doneLabel : cancelLabel) | translate }}\n  </button>\n\n  <button\n    (click)=\"deployApp()\"\n    *ngIf=\"!isDeployed\"\n    [disabled]=\"inProgress || !canDeploy\"\n    [ngClass]=\"{ 'btn-pending': inProgress }\"\n    class=\"btn btn-primary\"\n    type=\"button\"\n    data-cy=\"c8y-deploy-application--deploy-blueprint-button\"\n    title=\"{{ 'Deploy' | translate }}\"\n  >\n    {{ 'Deploy' | translate }}\n  </button>\n\n  <button\n    (click)=\"open()\"\n    type=\"button\"\n    class=\"btn btn-primary\"\n    *ngIf=\"isDeployed && deployedWithSuccess\"\n    title=\"{{ 'Open the application details' | translate }}\"\n    translate\n  >\n    Open\n  </button>\n</c8y-wizard-footer>\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n  ApplicationAvailability,\n  FetchClient,\n  IApplication,\n  IFetchOptions,\n  IFetchResponse\n} from '@c8y/client';\nimport {\n  ApplicationPlugin,\n  AppStateService,\n  ContextRouteService,\n  GainsightService,\n  PackageType,\n  PluginsService,\n  PropertiesListItem,\n  WizardModalService\n} from '@c8y/ngx-components';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject } from 'rxjs';\nimport {\n  ApplicationState,\n  EcosystemService,\n  EcosystemWizards,\n  packageProperties,\n  PACKAGE_TYPE_LABELS,\n  PackageAvailabilityService,\n  PRODUCT_EXPERIENCE_ECOSYSTEM\n} from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n  selector: 'c8y-package-details',\n  templateUrl: './package-details.component.html'\n})\nexport class PackageDetailsComponent implements OnInit {\n  markdown: string;\n  baseUrl: string;\n  package: IApplication = {};\n  name: string;\n  description: string;\n  appState: ApplicationState;\n  isPackageBlueprint: boolean;\n  exportedPlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n  isChangingAvailability = false;\n  isOwnedByCurrentTenant = false;\n  isAllowedToCreateSubtenants = false;\n  packageContentState: ApplicationState;\n  packageType: PackageType;\n  packageAvailability: ApplicationAvailability;\n\n  readonly packageTypeLabels = PACKAGE_TYPE_LABELS;\n  readonly PACKAGE_TYPE = PackageType;\n  readonly packageProperties: PropertiesListItem[] = packageProperties;\n  private readonly headers: any = { 'Content-Type': 'text/markdown', responseType: 'blob' };\n  private NOT_FOUND_ERROR_CODE = 404;\n\n  constructor(\n    private activatedRoute: ActivatedRoute,\n    private client: FetchClient,\n    private wizardModalService: WizardModalService,\n    private ecosystemService: EcosystemService,\n    private contextRouteService: ContextRouteService,\n    private pluginsService: PluginsService,\n    private packageAvailabilityService: PackageAvailabilityService,\n    private ui: AppStateService,\n    private pluginService: PluginsService,\n    private gainsightService: GainsightService\n  ) {}\n\n  async ngOnInit() {\n    this.isAllowedToCreateSubtenants = !!this.ui.currentTenant.value?.allowCreateTenants;\n    await this.loadData();\n  }\n\n  deploy() {\n    this.gainsightService.triggerEvent(\n      PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_PLUGINS,\n      {\n        component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_DETAILS,\n        action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DEPLOY_APPLICATION_INITIATED\n      }\n    );\n\n    const initialState: any = {\n      wizardConfig: {},\n      id: EcosystemWizards.BLUEPRINT_DEPLOYMENT,\n      package: this.package\n    };\n    const modalOptions: ModalOptions = { initialState };\n    this.wizardModalService.show(modalOptions);\n  }\n\n  async togglePackageAvailability(pckg: IApplication, newAvailability: ApplicationAvailability) {\n    this.isChangingAvailability = true;\n    pckg = await this.packageAvailabilityService.askIfAvailabilityShouldBeSetTo(\n      pckg,\n      newAvailability\n    );\n    const availabilityHasChanged = pckg.availability === newAvailability;\n    if (availabilityHasChanged) {\n      await this.loadData(pckg);\n      this.contextRouteService.setContext(this.activatedRoute, pckg);\n    } else {\n      this.packageAvailability = this.package.availability;\n    }\n    this.isChangingAvailability = false;\n  }\n\n  private async loadData(pckg?: IApplication) {\n    this.package = pckg\n      ? pckg\n      : this.contextRouteService.getContextData(this.activatedRoute)?.contextData;\n    this.packageAvailability = this.package.availability;\n    this.packageContentState = this.ecosystemService.getPackageContentState(this.package);\n    this.packageType = this.pluginService.getPackageType(this.package);\n    this.name = this.package?.name;\n    this.description = this.package?.manifest?.description;\n    this.markdown = await this.getReadmeFileContent();\n    this.baseUrl = this.getBaseUrl();\n    this.appState = this.ecosystemService.getAppState(this.package);\n    this.isPackageBlueprint = this.ecosystemService.isPackageBlueprint(this.package);\n    this.isOwnedByCurrentTenant =\n      this.package?.owner?.tenant?.id === this.ui.currentTenant.value?.name;\n    this.extractPackageMFExports();\n  }\n\n  private extractPackageMFExports() {\n    const exports = this.pluginsService.getMFExports(this.package);\n    this.exportedPlugins$.next(exports);\n  }\n\n  private async getReadmeFileContent(): Promise<string> {\n    const readmeFile = await this.getReadmeFile();\n\n    if (readmeFile.status === 200) {\n      return await readmeFile.text();\n    }\n    return '';\n  }\n\n  private async getReadmeFile(): Promise<IFetchResponse> {\n    const baseUrl = this.getBaseUrl();\n    let result: IFetchResponse;\n    const options: IFetchOptions = {\n      method: 'GET',\n      headers: this.headers\n    };\n    result = await this.client.fetch(`${baseUrl}README.md`, options);\n\n    if (result && result.status === this.NOT_FOUND_ERROR_CODE) {\n      result = await this.client.fetch(`${baseUrl}readme.md`, options);\n    }\n    return result;\n  }\n\n  private getBaseUrl(): string {\n    return `/apps/${this.package.contextPath}/`;\n  }\n}\n","<c8y-title>{{ name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n  <c8y-breadcrumb-item\n    [icon]=\"'c8y-atom'\"\n    [label]=\"'Ecosystem' | translate\"\n  ></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item\n    [icon]=\"'big-parcel'\"\n    [label]=\"'Extensions' | translate\"\n    [path]=\"'ecosystem/extension/extensions'\"\n  ></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item [label]=\"name | humanizeAppName | async\"></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item [label]=\"'Extension package' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n  placement=\"right\"\n  itemClass=\"navbar-form\"\n  *ngIf=\"isOwnedByCurrentTenant && isAllowedToCreateSubtenants\"\n>\n  <div class=\"form-horizontal\">\n    <div class=\"form-group\">\n      <label\n        for=\"availability\"\n        translate\n      >\n        Availability`of package based on app state`\n      </label>\n      <div class=\"c8y-select-wrapper\">\n        <select\n          class=\"form-control\"\n          id=\"availability\"\n          [(ngModel)]=\"packageAvailability\"\n          [disabled]=\"isChangingAvailability\"\n          (ngModelChange)=\"togglePackageAvailability(package, $event)\"\n        >\n          <option\n            *ngFor=\"let availability of packageAvailabilityService.availabilities\"\n            [ngValue]=\"availability.value\"\n          >\n            {{ availability.label | translate }}\n          </option>\n        </select>\n        <span></span>\n      </div>\n    </div>\n  </div>\n</c8y-action-bar-item>\n\n<div class=\"card content-fullpage d-grid grid__col--8-4--md grid__row--fit-auto\">\n  <div class=\"bg-level-1 grid__col--fullspan separator-bottom\">\n    <div class=\"card-block p-t-24 p-b-24 large-padding\">\n      <button\n        class=\"card__ribbon btn-clean\"\n        [attr.aria-label]=\"\n          (package.label || package.manifest.label | translatePackageLabel) +\n          ': ' +\n          (packageTypeLabels[packageType].tooltip | translate)\n        \"\n        tooltip=\"{{ packageTypeLabels[packageType].tooltip | translate }}\"\n        placement=\"bottom\"\n        type=\"button\"\n        *ngIf=\"packageType !== PACKAGE_TYPE.CUSTOM\"\n        [delay]=\"500\"\n      >\n        <span\n          [ngClass]=\"{\n            'bg-info': packageType === PACKAGE_TYPE.COMMUNITY,\n            'bg-primary': packageType === PACKAGE_TYPE.OFFICIAL,\n            'bg-warning': packageType === PACKAGE_TYPE.ARCHIVED\n          }\"\n        >\n          {{ package.label || package.manifest.label | translatePackageLabel }}\n        </span>\n      </button>\n      <div class=\"content-flex-70\">\n        <div class=\"text-center\">\n          <i\n            class=\"c8y-icon-duocolor icon-48\"\n            c8yIcon=\"big-parcel\"\n          ></i>\n          <button\n            class=\"btn-clean\"\n            [attr.aria-label]=\"\n              (appState?.label | translate) + ': ' + (appState?.tooltip | translate)\n            \"\n            [tooltip]=\"appState?.tooltip | translate\"\n            placement=\"top\"\n            type=\"button\"\n            [delay]=\"500\"\n          >\n            <span\n              class=\"label\"\n              [ngClass]=\"appState?.class\"\n            >\n              {{ appState?.label | translate }}\n            </span>\n          </button>\n          <button\n            class=\"btn-clean\"\n            [attr.aria-label]=\"\n              (packageContentState?.label | translate) +\n              ': ' +\n              (packageContentState?.tooltip | translate)\n            \"\n            [tooltip]=\"packageContentState?.tooltip | translate\"\n            placement=\"bottom\"\n            type=\"button\"\n            [delay]=\"500\"\n          >\n            <span\n              class=\"label\"\n              [ngClass]=\"packageContentState?.class\"\n            >\n              {{ packageContentState?.label | translate }}\n            </span>\n          </button>\n        </div>\n\n        <div class=\"flex-grow col-10\">\n          <div class=\"content-flex-80\">\n            <div class=\"col-5\">\n              <div class=\"card-title text-bold m-b-8\">{{ name | humanizeAppName | async }}</div>\n              <p *ngIf=\"description\">{{ description }}</p>\n              <p\n                class=\"text-muted\"\n                *ngIf=\"!description\"\n              >\n                <em>{{ 'No description available.' | translate }}</em>\n              </p>\n            </div>\n            <div\n              class=\"col-3 text-right-md p-r-md-40\"\n              *ngIf=\"isPackageBlueprint\"\n            >\n              <button\n                class=\"btn btn-primary btn-sm\"\n                (click)=\"deploy()\"\n                data-cy=\"c8y-package-details--deploy-application-button\"\n              >\n                <i\n                  class=\"m-r-4\"\n                  c8yIcon=\"output\"\n                ></i>\n                {{ 'Deploy application' | translate }}\n              </button>\n            </div>\n            <div class=\"flex-grow\">\n              <c8y-properties-list\n                [data]=\"package.manifest\"\n                [properties]=\"packageProperties\"\n              ></c8y-properties-list>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <div class=\"inner-scroll\">\n    <div class=\"card-header separator sticky-top\">\n      <div class=\"card-title\">{{ 'Extension package overview' | translate }}</div>\n    </div>\n    <div class=\"card-block p-l-16 p-r-16\">\n      <div\n        class=\"alert alert-warning m-b-16\"\n        style=\"margin: auto\"\n        *ngIf=\"packageType === PACKAGE_TYPE.ARCHIVED\"\n        translate\n      >\n        The package was archived by the owner marking it as out of maintenance. It is not\n        recommended to install the package.\n      </div>\n      <c8y-ui-empty-state\n        [icon]=\"'user-manual'\"\n        [title]=\"'No README.md found' | translate\"\n        [subtitle]=\"\n          'To view the contents of &quot;README&quot;, add the file &quot;README.md&quot; to the package.'\n            | translate\n        \"\n        *ngIf=\"!markdown\"\n        [horizontal]=\"true\"\n      ></c8y-ui-empty-state>\n      <div\n        class=\"markdown-content\"\n        [innerHTML]=\"markdown | markdownToHtml: { baseUrl } | async\"\n      ></div>\n    </div>\n    <div class=\"separator-bottom visible-sm visible-xs\"></div>\n  </div>\n\n  <div class=\"inner-scroll d-flex d-col\">\n    <div class=\"card-header separator sticky-top\">\n      <div class=\"card-title\">{{ 'Package plugins' | translate }}</div>\n    </div>\n    <div class=\"border-left flex-grow\">\n      <!-- empty state -->\n      <div\n        class=\"p-16\"\n        *ngIf=\"(exportedPlugins$ | async).length === 0\"\n      >\n        <c8y-ui-empty-state\n          [icon]=\"'plugin'\"\n          [title]=\"'No plugins to display.' | translate\"\n          [subtitle]=\"'This package doesn\\'t contain plugins.' | translate\"\n          [horizontal]=\"true\"\n        ></c8y-ui-empty-state>\n      </div>\n      <c8y-plugin-list\n        [plugins$]=\"exportedPlugins$\"\n        [selectable]=\"false\"\n        [installable]=\"true\"\n        [package]=\"package\"\n      ></c8y-plugin-list>\n    </div>\n  </div>\n</div>\n","import { Component, OnDestroy, ViewChild } from '@angular/core';\nimport { IApplication } from '@c8y/client';\nimport { gettext, Permissions, WizardModalService } from '@c8y/ngx-components';\nimport {\n  APP_STATE,\n  defaultPackageContents,\n  defaultPackageTypes,\n  EcosystemService,\n  EcosystemWizards,\n  FilterableAppOrPlugin,\n  FilterPipe,\n  ListFiltersComponent,\n  PackageFilters\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { ModalOptions } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { shareReplay, switchMap, takeUntil, tap } from 'rxjs/operators';\n\n@Component({\n  selector: 'c8y-packages-list',\n  templateUrl: './packages-list.component.html'\n})\nexport class PackagesListComponent implements OnDestroy {\n  reloading = false;\n  reload$: BehaviorSubject<void> = new BehaviorSubject(null);\n\n  packages$: Observable<IApplication[]>;\n  filteredPackages$: Observable<FilterableAppOrPlugin[]>;\n  listClass: string;\n  hasAdminPermissions = false;\n  emptyStateSubtitle = gettext('Add your first package by clicking below.');\n  packageTypes = defaultPackageTypes;\n  packageAvailabilities: (keyof PackageFilters['availability'])[] = [\n    APP_STATE.SUBSCRIBED.label,\n    APP_STATE.CUSTOM.label\n  ];\n  packageContents = defaultPackageContents;\n  @ViewChild(ListFiltersComponent) filtersComponent: ListFiltersComponent;\n  private destroy$: Subject<boolean> = new Subject<boolean>();\n\n  constructor(\n    private ecosystemService: EcosystemService,\n    private wizardModalService: WizardModalService,\n    private permissions: Permissions\n  ) {\n    this.packages$ = this.reload$.pipe(\n      takeUntil(this.destroy$),\n      tap(() => (this.reloading = true)),\n      switchMap(() => this.ecosystemService.getPackageApplications()),\n      tap(packages => {\n        packages.forEach(pckg => {\n          pckg.filterProps = this.ecosystemService.getAppFilterProps(pckg);\n        });\n      }),\n      tap(() => (this.reloading = false)),\n      shareReplay(1)\n    );\n  }\n\n  ngOnInit() {\n    this.hasAdminPermissions = this.permissions.hasRole(\n      Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN\n    );\n    this.loadPackages();\n  }\n\n  loadPackages() {\n    this.reload$.next();\n  }\n\n  addPackage() {\n    const initialState: Record<string, unknown> = {\n      id: EcosystemWizards.PACKAGE_UPLOAD\n    };\n    const modalOptions: ModalOptions = { initialState };\n\n    const modalRef = this.wizardModalService.show(modalOptions);\n    modalRef.content.onClose.subscribe(() => {\n      this.loadPackages();\n    });\n  }\n\n  ngOnDestroy() {\n    this.destroy$.next(true);\n    this.destroy$.complete();\n  }\n\n  setFilterPipe(pipe: FilterPipe) {\n    this.filteredPackages$ = this.packages$.pipe(src => pipe(src));\n  }\n\n  resetFilters() {\n    this.filtersComponent?.resetAllFilters();\n  }\n}\n","<c8y-title>{{ 'Extensions' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n  <c8y-breadcrumb-item\n    [icon]=\"'c8y-atom'\"\n    [label]=\"'Ecosystem' | translate\"\n  ></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item\n    [icon]=\"'big-parcel'\"\n    [path]=\"'ecosystem/extension/extensions'\"\n    [label]=\"'Extensions' | translate\"\n  ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item\n  [placement]=\"'right'\"\n  *ngIf=\"hasAdminPermissions\"\n>\n  <button\n    class=\"btn btn-link\"\n    title=\"{{ 'Add extension package' | translate }}\"\n    type=\"button\"\n    data-cy=\"packages-list--add-extension-package\"\n    (click)=\"addPackage()\"\n  >\n    <i c8yIcon=\"plus-circle\"></i>\n    {{ 'Add extension package' | translate }}\n  </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n  <button\n    class=\"btn btn-link\"\n    title=\"{{ 'Reload' | translate }}\"\n    type=\"button\"\n    (click)=\"loadPackages()\"\n  >\n    <i\n      c8yIcon=\"refresh\"\n      [ngClass]=\"{ 'icon-spin': reloading }\"\n    ></i>\n    {{ 'Reload' | translate }}\n  </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n  [placement]=\"'left'\"\n  itemClass=\"p-r-8 p-l-8\"\n>\n  <c8y-list-filters\n    *ngIf=\"packages$ | async\"\n    [packageTypes]=\"packageTypes\"\n    [packageAvailabilities]=\"packageAvailabilities\"\n    [packageContents]=\"packageContents\"\n    (filterPipeChange)=\"setFilterPipe($event)\"\n  >\n    <c8y-archived-filter></c8y-archived-filter>\n  </c8y-list-filters>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n  [placement]=\"'left'\"\n  itemClass=\"navbar-form hidden-xs\"\n>\n  <c8y-list-display-switch\n    (onListClassChange)=\"listClass = $event\"\n    [listLength]=\"(packages$ | async)?.length\"\n  ></c8y-list-display-switch>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/docs/standard-tenant/ecosystem/#extensions\"></c8y-help>\n\n<div\n  class=\"card-group\"\n  [ngClass]=\"listClass\"\n>\n  <div\n    class=\"page-sticky-header hidden-xs d-flex m-b-8\"\n    *ngIf=\"(filteredPackages$ | async)?.length > 0\"\n  >\n    <div class=\"card-block card-column-40\">\n      <div class=\"card-appicon p-l-32 p-r-16 m-r-0 m-l-4\"></div>\n      {{ 'Package' | translate }}\n    </div>\n    <div class=\"card-block p-0 card-column-80 m-r-40\">\n      <div class=\"card-block card-column-80\">{{ 'Description' | translate }}</div>\n      <div class=\"card-block card-column-20\">{{ 'Type' | translate }}</div>\n      <div class=\"card-block card-column-20\"></div>\n    </div>\n  </div>\n  <div\n    class=\"col-xs-12 col-sm-4 col-md-3\"\n    *ngFor=\"let app of filteredPackages$ | async\"\n  >\n    <c8y-application-card\n      class=\"d-contents\"\n      (onAppDeleted)=\"loadPackages()\"\n      (onAppCloned)=\"loadPackages()\"\n      [app]=\"app\"\n    ></c8y-application-card>\n  </div>\n</div>\n\n<c8y-ui-empty-state\n  [icon]=\"'big-parcel'\"\n  [title]=\"'No extensions to display.' | translate\"\n  [subtitle]=\"hasAdminPermissions ? (emptyStateSubtitle | translate) : ''\"\n  *ngIf=\"(packages$ | async)?.length === 0\"\n>\n  <div *ngIf=\"hasAdminPermissions\">\n    <button\n      class=\"btn btn-primary\"\n      title=\"{{ 'Add extension package' | translate }}\"\n      type=\"button\"\n      (click)=\"addPackage()\"\n    >\n      {{ 'Add extension package' | translate }}\n    </button>\n  </div>\n</c8y-ui-empty-state>\n\n<c8y-ui-empty-state\n  [icon]=\"'search'\"\n  [title]=\"'No matching extensions.' | translate\"\n  [subtitle]=\"'Refine your search terms and/or the filters' | translate\"\n  *ngIf=\"(packages$ | async)?.length > 0 && (filteredPackages$ | async)?.length === 0\"\n>\n  <button\n    class=\"btn btn-primary\"\n    title=\"{{ 'Reset filters' | translate }}\"\n    type=\"button\"\n    (click)=\"resetFilters()\"\n  >\n    {{ 'Reset filters' | translate }}\n  </button>\n</c8y-ui-empty-state>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\n\n@Injectable()\nexport class PackageVersionsGuard {\n  canActivate(route: ActivatedRouteSnapshot) {\n    const app = route.data.contextData || route.parent.data.contextData;\n    return !!app?.applicationVersions?.length;\n  }\n}\n","import { IManifest } from '@c8y/client';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n  selector: 'c8y-contents-apps',\n  templateUrl: './contents-apps.component.html'\n})\nexport class PackageVersionsAppsComponent {\n  @Input('selectedVersionManifest') selectedVersionManifest: IManifest;\n}\n","<p class=\"legend form-block\">\n  {{ 'Application' | translate }}\n</p>\n\n<div  *ngIf=\"selectedVersionManifest?.name; else emptyApp\">\n  <c8y-li>\n    <c8y-li-icon icon=\"big-parcel\"></c8y-li-icon>\n    <h5 class=\"text-medium text-16 p-b-8\">\n      {{ selectedVersionManifest?.name | humanizeAppName | async }}\n      <small class=\"m-l-8\" *ngIf=\"selectedVersionManifest?.requiredPlatformVersion\">\n        <em>{{ selectedVersionManifest?.requiredPlatformVersion }}</em>\n      </small>\n    </h5>\n    <p *ngIf=\"selectedVersionManifest?.description; else notAvailable\">\n      {{ selectedVersionManifest?.description }}\n    </p>\n  </c8y-li>\n</div>\n\n<ng-template #notAvailable>\n  <p class=\"text-muted\">\n    <em>{{ 'No description available.' | translate }}</em>\n  </p>\n</ng-template>\n\n<ng-template #emptyApp>\n  <c8y-ui-empty-state\n  [icon]=\"'big-parcel'\"\n  [horizontal]=\"true\"\n  [title]=\"'No application.' | translate\"\n  [subtitle]=\"'This package doesn\\'t contain an application.' | translate\"\n  ></c8y-ui-empty-state>\n</ng-template>","import { Component, Input } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IApplication, IManifest } from '@c8y/client';\nimport { ApplicationPlugin } from '@c8y/ngx-components';\nimport { BehaviorSubject } from 'rxjs';\n\n@Component({\n  selector: 'c8y-contents-plugins',\n  templateUrl: './contents-plugins.component.html'\n})\nexport class PackageVersionsPluginsComponent {\n  @Input('selectedVersionManifest') selectedVersionManifest: IManifest;\n  exportedPlugins$: BehaviorSubject<ApplicationPlugin[]> = new BehaviorSubject([]);\n\n  private appParentData: IApplication;\n\n  constructor(private activatedRoute: ActivatedRoute) {\n    this.appParentData = this.activatedRoute.parent?.snapshot.data.contextData;\n  }\n\n  async ngOnChanges() {\n    this.exportedPlugins$.next(this.getExportedPlugins());\n  }\n\n  private getExportedPlugins(): ApplicationPlugin[] {\n    if (!this.selectedVersionManifest?.exports) {\n      return [];\n    }\n\n    const originApp = {\n      label: this.appParentData?.label || this.appParentData?.manifest.label,\n      owner: this.appParentData?.owner\n    };\n\n    return this.selectedVersionManifest.exports.map(plugin => ({\n      ...plugin,\n      originApp\n    }));\n  }\n}\n","<p class=\"legend form-block\">\n  {{ 'Plugins' | translate }}\n</p>\n<!-- empty state -->\n<c8y-ui-empty-state\n  *ngIf=\"(exportedPlugins$ | async).length === 0\"\n  [icon]=\"'plugin'\"\n  [horizontal]=\"true\"\n  [title]=\"'No plugins to display.' | translate\"\n  [subtitle]=\"'This package doesn\\'t contain plugins.' | translate\"\n></c8y-ui-empty-state>\n\n<c8y-plugin-list [plugins$]=\"exportedPlugins$\" [selectable]=\"false\"></c8y-plugin-list>\n","import { Component, Input, SimpleChanges } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ApplicationService, IApplication, IManifest } from '@c8y/client';\nimport { AlertService, ContextRouteService, PropertiesListItem } from '@c8y/ngx-components';\nimport { packageProperties } from '@c8y/ngx-components/ecosystem/shared';\n\n@Component({\n  selector: 'c8y-package-contents',\n  templateUrl: './packages-contents.component.html'\n})\nexport class PackageContentsComponent {\n  @Input() selectedVersion: string;\n  selectedVersionManifest: IManifest;\n  package: IApplication = {};\n  isLoading = false;\n\n  readonly packageVersionProperties: PropertiesListItem[] = packageProperties;\n\n  constructor(\n    private activatedRoute: ActivatedRoute,\n    private applicationService: ApplicationService,\n    private alertService: AlertService,\n    private contextRouteService: ContextRouteService\n  ) {}\n\n  async ngOnChanges(changes: SimpleChanges) {\n    if (changes.selectedVersion.currentValue) {\n      this.loadManifest(this.selectedVersion);\n    }\n    this.selectedVersionManifest = undefined;\n  }\n\n  async loadManifest(version: string) {\n    this.package = this.contextRouteService.getContextData(this.activatedRoute)?.contextData;\n    this.isLoading = true;\n    this.selectedVersionManifest = await this.getManifest(version);\n    this.isLoading = false;\n  }\n\n  private async getManifest(version: string): Promise<IManifest> {\n    try {\n      return await this.applicationService.getAppManifest(this.package, version);\n    } catch (error) {\n      this.alertService.addServerFailure(error);\n    }\n    return undefined;\n  }\n}\n","<div class=\"inner-scroll\">\n  <ng-container *ngIf=\"!selectedVersionManifest && !isLoading\">\n    <div class=\"p-16\">\n      <c8y-ui-empty-state\n        [icon]=\"'big-parcel'\"\n        [horizontal]=\"true\"\n        [title]=\"'No package selected' | translate\"\n        [subtitle]=\"'Select a package from the list to display the package contents.' | translate\"\n      ></c8y-ui-empty-state>\n    </div>\n  </ng-container>\n\n  <ng-container *ngIf=\"isLoading\">\n    <c8y-loading></c8y-loading>\n  </ng-container>\n\n  <ng-container *ngIf=\"selectedVersionManifest && !isLoading\">\n    <!-- DETAILS -->\n    <div class=\"card-block p-t-0\">\n      <c8y-properties-list\n        [data]=\"selectedVersionManifest\"\n        [emptyLabel]=\"'--'\"\n        [properties]=\"packageVersionProperties\"\n      >\n      </c8y-properties-list>\n      \n        <!-- APPS -->\n      <c8y-contents-apps\n      class=\"p-t-16 d-block\"\n      [selectedVersionManifest]=\"selectedVersionManifest\"\n      ></c8y-contents-apps>\n\n      <!-- PLUGINS -->\n      <c8y-contents-plugins\n      class=\"p-t-16 d-block\"\n      [selectedVersionManifest]=\"selectedVersionManifest\"\n      ></c8y-contents-plugins>\n    </div>\n  </ng-container>\n</div>\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IApplication, IApplicationVersion } from '@c8y/client';\nimport {\n  AlertService,\n  GainsightService,\n  ModalService,\n  OptionsService,\n  Permissions,\n  PluginsService,\n  Status,\n  gettext\n} from '@c8y/ngx-components';\nimport {\n  EcosystemService,\n  PRODUCT_EXPERIENCE_ECOSYSTEM\n} from '@c8y/ngx-components/ecosystem/shared';\nimport { TranslateService } from '@ngx-translate/core';\n\nconst DEFAULT_VERSIONS_LIMIT = 20;\n\n@Component({\n  selector: 'c8y-package-versions-list',\n  templateUrl: './package-versions-list.component.html'\n})\nexport class PackageVersionsListComponent implements OnInit {\n  CURRENT_LOCATION = location.href;\n\n  versionsLimit: number;\n  isLoading = false;\n  package: IApplication;\n  sortedVersions: IApplicationVersion[];\n  selectedVersion: string;\n  preUploadCallback: () => Promise<any>;\n  hasAdminPermissions = false;\n  isPackageOwnedByCurrentTenant = false;\n\n  @Output() onVersionSelect = new EventEmitter<string | null>();\n\n  constructor(\n    private activatedRoute: ActivatedRoute,\n    private pluginsService: PluginsService,\n    private ecosystemService: EcosystemService,\n    private translateService: TranslateService,\n    private modal: ModalService,\n    private alertService: AlertService,\n    private optionsService: OptionsService,\n    private permissions: Permissions,\n    private gainsightService: GainsightService\n  ) {}\n\n  async ngOnInit() {\n    this.isLoading = true;\n    this.hasAdminPermissions = this.permissions.hasRole(\n      Permissions.ROLE_APPLICATION_MANAGEMENT_ADMIN\n    );\n    this.package = this.activatedRoute?.snapshot?.parent?.data?.contextData;\n    this.isPackageOwnedByCurrentTenant = this.ecosystemService.isOwner(this.package);\n    this.versionsLimit = (await this.optionsService.getSystemOption(\n      'application',\n      'versions.limit',\n      DEFAULT_VERSIONS_LIMIT\n    )) as number;\n    this.sortVersions();\n    this.isLoading = false;\n  }\n\n  async downloadArchive(appVersion: IApplicationVersion): Promise<void> {\n    this.gainsightService.triggerEvent(\n      PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_VERSIONS,\n      {\n        component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n        action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DOWNLOAD,\n        url: this.CURRENT_LOCATION\n      }\n    );\n    const archiveMO = await this.ecosystemService.getArchiveManagedObject(appVersion.binaryId);\n    await this.ecosystemService.downloadArchive(this.package, {\n      id: appVersion.binaryId,\n      name: archiveMO.name\n    });\n  }\n\n  packageVersionUploaded() {\n    this.activatedRoute.snapshot.parent.data.contextData = this.package;\n    this.sortVersions();\n    this.setUploadedVersionAsLatest();\n  }\n\n  selectVersion(version: string | null): void {\n    this.selectedVersion = version;\n    this.onVersionSelect.emit(version);\n  }\n\n  async removeVersionPackage(version: string) {\n    try {\n      await this.ecosystemService.deletePackageVersion(this.package, { version });\n      this.alertService.success(\n        this.translateService.instant(gettext('Package version {{version}} has been removed'), {\n          version\n        })\n      );\n      this.gainsightService.triggerEvent(\n        PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_VERSIONS,\n        {\n          component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n          action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DELETE,\n          result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SUCCESS,\n          url: this.CURRENT_LOCATION\n        }\n      );\n    } catch (e) {\n      this.alertService.addServerFailure(e);\n      this.gainsightService.triggerEvent(\n        PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_VERSIONS,\n        {\n          component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n          action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.DELETE,\n          result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE,\n          url: this.CURRENT_LOCATION\n        }\n      );\n    }\n    if (version === this.selectedVersion) {\n      this.selectVersion(null);\n    }\n    await this.refreshPackage();\n  }\n\n  async setVersionAsLatest(appVersion: IApplicationVersion) {\n    try {\n      await this.ecosystemService.setPackageVersionTag(this.package, appVersion.version, [\n        ...appVersion.tags,\n        'latest'\n      ]);\n\n      // TODO added it due to: https://cumulocity.atlassian.net/browse/MTM-48553\n      // Remove it when BE fixes issues with activeVersion.\n      await this.ecosystemService.setAppActiveVersion(this.package, appVersion.binaryId);\n      this.alertService.success(gettext('Tag has been set.'));\n      this.gainsightService.triggerEvent(\n        PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_VERSIONS,\n        {\n          component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n          action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.SET_AS_LATEST,\n          result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SUCCESS,\n          url: this.CURRENT_LOCATION\n        }\n      );\n    } catch (e) {\n      this.alertService.addServerFailure(e);\n      this.gainsightService.triggerEvent(\n        PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_VERSIONS,\n        {\n          component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n          action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.SET_AS_LATEST,\n          result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SERVER_FAILURE,\n          url: this.CURRENT_LOCATION\n        }\n      );\n      return;\n    }\n    await this.refreshPackage();\n  }\n\n  async acknowledgeLimitReached() {\n    await this.modal.acknowledge(\n      gettext('Package limit exceeded'),\n      this.translateService.instant(\n        gettext(\n          'You have reached the maximum number of {{ versionsLimit }} package versions. To add another version, first delete one from the list.'\n        ),\n        { versionsLimit: this.versionsLimit }\n      ),\n      Status.INFO,\n      gettext('Close')\n    );\n    throw undefined;\n  }\n\n  private async refreshPackage() {\n    this.isLoading = true;\n    this.package = await this.ecosystemService.getApplication(this.package.id);\n    this.activatedRoute.snapshot.parent.data.contextData = this.package;\n    this.sortVersions();\n    this.isLoading = false;\n  }\n\n  private sortVersions() {\n    this.sortedVersions = this.pluginsService.sortVersions(\n      {\n        list: this.package.applicationVersions,\n        path: ['version']\n      },\n      'desc'\n    );\n    this.toggleUploadPossibility();\n  }\n\n  private async setUploadedVersionAsLatest() {\n    const uploadedVersion =\n      this.package.applicationVersions[this.package.applicationVersions.length - 1];\n    try {\n      this.gainsightService.triggerEvent(\n        PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.EVENTS.PACKAGE_VERSIONS,\n        {\n          component: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.COMPONENTS.PACKAGE_VERSIONS,\n          action: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.ACTIONS.UPLOAD,\n          result: PRODUCT_EXPERIENCE_ECOSYSTEM.APPLICATIONS.RESULTS.SUCCESS,\n          url: this.CURRENT_LOCATION\n        }\n      );\n      await this.modal.confirm(\n        gettext('Upload successful'),\n        this.translateService.instant(\n          gettext(\n            'Do you want to set version {{version}} as the latest? Deploying a new application will always use this version.'\n          ),\n          { version: uploadedVersion.version }\n        ),\n        Status.SUCCESS,\n        {\n          ok: gettext('Set as latest`version`'),\n          cancel: gettext('Keep unchanged`version`')\n        }\n      );\n    } catch (e) {\n      await this.refreshPackage();\n      return;\n    }\n    await this.setVersionAsLatest(uploadedVersion);\n  }\n\n  private toggleUploadPossibility() {\n    this.preUploadCallback =\n      this.sortedVersions.length < this.versionsLimit\n        ? null\n        : this.acknowledgeLimitReached.bind(this);\n  }\n}\n","<div class=\"inner-scroll split-view__list\">\n  <div class=\"card-header separator sticky-top bg-component\">\n    <div class=\"card-title\" translate>Versions</div>\n  </div>\n\n  <div class=\"bg-level-1 flex-grow\">\n    <div class=\"p-16\" *ngIf=\"isLoading\">\n      <c8y-loading></c8y-loading>\n    </div>\n    <ul class=\"nav c8y-nav-stacked\" *ngIf=\"!isLoading\">\n      <li\n        class=\"c8y-stacked-item p-t-0 p-b-0 p-r-4\"\n        [ngClass]=\"{ active: selectedVersion === applicationVersion.version }\"\n        *ngFor=\"let applicationVersion of sortedVersions\"\n      >\n        <div\n          class=\"flex-grow d-flex a-i-center gap-4 p-t-8 p-b-8\"\n          (click)=\"selectVersion(applicationVersion.version)\"\n        >\n          <i c8yIcon=\"big-parcel\" class=\"icon-20\"></i>\n          <span class=\"text-label-small\">\n            {{ 'Version' | translate }}\n          </span>\n          <span class=\"text-medium\">{{ applicationVersion.version }}</span>\n          <div class=\"text-truncate d-flex j-c-end flex-grow gap-4 flex-wrap m-l-auto\">\n            <span *ngFor=\"let tag of applicationVersion.tags\" class=\"label label-info\">\n              {{ tag }}\n            </span>\n          </div>\n        </div>\n        <div class=\"dropdown\" dropdown *ngIf=\"hasAdminPermissions && isPackageOwnedByCurrentTenant\">\n          <button\n            class=\"dropdown-toggle c8y-dropdown\"\n            type=\"button\"\n            title=\"{{ 'Settings' | translate }}\"\n            dropdownToggle\n          >\n            <i c8yIcon=\"ellipsis-v\"></i>\n          </button>\n          <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right\">\n            <li>\n              <button\n                type=\"button\"\n                title=\"{{ 'Set as latest`version`' | translate }}\"\n                (click)=\"setVersionAsLatest(applicationVersion)\"\n                [disabled]=\"applicationVersion.tags?.includes('latest')\"\n              >\n                <i c8yIcon=\"collect\" class=\"m-r-4\"></i>\n                {{ 'Set as latest`version`' | translate }}\n              </button>\n            </li>\n            <li>\n              <button\n                type=\"button\"\n                title=\"{{ 'Download' | translate }}\"\n                (click)=\"downloadArchive(applicationVersion)\"\n              >\n                <i c8yIcon=\"download\" class=\"m-r-4\"></i>\n                {{ 'Download' | translate }}\n              </button>\n            </li>\n            <li>\n              <button\n                type=\"button\"\n                title=\"{{ 'Delete' | translate }}\"\n                (click)=\"removeVersionPackage(applicationVersion.version)\"\n                [disabled]=\"applicationVersion.tags?.includes('latest')\"\n              >\n                <i c8yIcon=\"trash\" class=\"m-r-4\"></i>\n                {{ 'Delete' | translate }}\n              </button>\n            </li>\n          </ul>\n        </div>\n      </li>\n    </ul>\n  </div>\n\n  <div\n    class=\"card-footer separator sticky-bottom\"\n    *ngIf=\"!isLoading && isPackageOwnedByCurrentTenant\"\n  >\n    <div class=\"form-group m-b-0\">\n      <label translate>Upload a new version</label>\n      <c8y-upload-archive\n        [(application)]=\"package\"\n        [uploadNewVersion]=\"true\"\n        (refresh)=\"packageVersionUploaded()\"\n        [preUploadCallback]=\"preUploadCallback\"\n      ></c8y-upload-archive>\n    </div>\n  </div>\n</div>\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IApplication } from '@c8y/client';\nimport { ContextRouteService } from '@c8y/ngx-components';\n\n@Component({\n  selector: 'c8y-package-versions',\n  templateUrl: './packages-versions.component.html'\n})\nexport class PackageVersionsComponent {\n  package: IApplication = {};\n  selectedVersion: string;\n\n  constructor(\n    private activatedRoute: ActivatedRoute,\n    private contextRouteService: ContextRouteService\n  ) {}\n\n  async ngOnInit() {\n    this.package = this.contextRouteService.getContextData(this.activatedRoute)?.contextData;\n  }\n\n  clearSelectedVersion() {\n    this.selectedVersion = null;\n  }\n\n  selectVersion(version: string) {\n    this.selectedVersion = version;\n  }\n}\n","<c8y-title>{{ package?.name | humanizeAppName | async }}</c8y-title>\n\n<c8y-breadcrumb>\n  <c8y-breadcrumb-item [icon]=\"'c8y-atom'\" [label]=\"'Ecosystem' | translate\"></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item\n    [icon]=\"'big-parcel'\"\n    [label]=\"'Extensions' | translate\"\n    [path]=\"'ecosystem/extension/extensions'\"\n  ></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item [label]=\"package?.name | humanizeAppName | async\"></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item [label]=\"'Versions' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div class=\"card content-fullpage split-view--5-7 grid__row--1\">\n  <c8y-package-versions-list\n    class=\"d-contents\"\n    (onVersionSelect)=\"selectVersion($event)\"\n  ></c8y-package-versions-list>\n\n  <div\n    class=\"inner-scroll split-view__detail\"\n    [ngClass]=\"{ 'split-view__detail--selected': selectedVersion }\"\n  >\n    <div class=\"large-padding card-header separator visible-sm visible-xs fit-w sticky-top\">\n      <div class=\"d-flex a-i-center\">\n        <button\n          title=\"{{ 'Back' | translate }}\"\n          class=\"btn btn-clean text-primary m-r-8\"\n          (click)=\"clearSelectedVersion()\"\n        >\n          <i c8yIcon=\"chevron-left\"></i>\n          <span translate>Back</span>\n        </button>\n        <div class=\"card-title\" translate>Package contents</div>\n      </div>\n    </div>\n    <div class=\"card-header large-padding separator sticky-top visible-md visible-lg\">\n      <div class=\"card-title\" translate>Package contents</div>\n    </div>\n    <div class=\"inner-scroll split-view__list\">\n      <c8y-package-contents [selectedVersion]=\"selectedVersion\"></c8y-package-contents>\n    </div>\n  </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\nimport { EcosystemService } from '@c8y/ngx-components/ecosystem/shared';\n\n@Injectable()\nexport class PackageGuard {\n  constructor(private ecosystemService: EcosystemService) {}\n\n  canActivate(route: ActivatedRouteSnapshot) {\n    const app = route.data.contextData || route.parent.data.contextData;\n    if (!app) {\n      return false;\n    }\n    return this.ecosystemService.isPackage(app);\n  }\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport {\n  CoreModule,\n  FormsModule,\n  gettext,\n  hookNavigator,\n  hookRoute,\n  hookTab,\n  hookWizard,\n  Route,\n  ViewContext\n} from '@c8y/ngx-components';\nimport { ArchivedConfirmModule } from '@c8y/ngx-components/ecosystem/archived-confirm';\nimport { LicenseConfirmModule } from '@c8y/ngx-components/ecosystem/license-confirm';\nimport { EcosystemWizards, SharedEcosystemModule } from '@c8y/ngx-components/ecosystem/shared';\nimport { IconSelectorModule } from '@c8y/ngx-components/icon-selector';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { ActivityLogComponent } from './activity-log/activity-log.component';\nimport { ApplicationPluginsModule } from './application-plugins';\nimport { ApplicationPropertiesComponent } from './application-properties/application-properties.component';\nimport { ApplicationPropertiesGuard } from './application-properties/application-properties.guard';\nimport { SubscriptionModalComponent } from './application-properties/subscription-modal/subscription-modal.component';\nimport { UpdateApplicationModalComponent } from './application-properties/update-application-modal/update-application-modal.component';\nimport { AddExternalApplicationComponent } from './applications/add-external-applicaiton/add-external-application.component';\nimport { AddWebApplicationComponent } from './applications/add-web-application/add-web-application.component';\nimport { ApplicationListComponent } from './applications/application-list/application-list.component';\nimport { InstallFromPackageComponent } from './applications/install-from-package/install-from-package.component';\nimport { EcosystemNavigationFactory } from './ecosystem-navigation.factory';\nimport { EcosystemTabs } from './ecosystem-tabs.factory';\nimport { FeatureListComponent } from './features/feature-list.component';\nimport { AddMicroserviceComponent } from './microservices/add-microservice.component';\nimport { MicroserviceListComponent } from './microservices/microservice-list.component';\nimport { AddPackageComponent } from './packages/add-package.component';\nimport { DeployApplicationComponent } from './packages/deploy-application/deploy-application.component';\nimport { PackageDetailsComponent } from './packages/package-details/package-details.component';\nimport { PackagesListComponent } from './packages/package-list/packages-list.component';\nimport { PackageVersionsGuard } from './packages/package-versions.guard';\nimport { PackageVersionsAppsComponent } from './packages/package-versions/package-contents/contents-apps/contents-apps.component';\nimport { PackageVersionsPluginsComponent } from './packages/package-versions/package-contents/contents-plugins/contents-plugins.component';\nimport { PackageContentsComponent } from './packages/package-versions/package-contents/packages-contents.component';\nimport { PackageVersionsListComponent } from './packages/package-versions/package-versions-list/package-versions-list.component';\nimport { PackageVersionsComponent } from './packages/package-versions/packages-versions.component';\nimport { PackageGuard } from './packages/package.guard';\n\nconst ecosystemMainRoutes: Route[] = [\n  {\n    path: 'ecosystem/application',\n    redirectTo: 'ecosystem/application/applications',\n    pathMatch: 'full'\n  },\n  {\n    // keeps legacy links functional\n    path: 'ecosystem/applications',\n    redirectTo: 'ecosystem/application/applications',\n    pathMatch: 'full'\n  },\n  {\n    path: 'ecosystem/application/applications',\n    component: ApplicationListComponent\n  },\n  {\n    path: 'ecosystem/extension/extensions',\n    component: PackagesListComponent\n  },\n  {\n    path: 'ecosystem/application/features',\n    component: FeatureListComponent\n  },\n  {\n    path: 'ecosystem/microservice/microservices',\n    component: MicroserviceListComponent\n  }\n];\n\nconst applicationDetailsRoutes: Route[] = [\n  {\n    path: 'properties',\n    component: ApplicationPropertiesComponent,\n    icon: 'list',\n    label: gettext('Properties'),\n    context: ViewContext.Application,\n    priority: 5,\n    canActivate: [ApplicationPropertiesGuard]\n  },\n  {\n    path: 'application-versions',\n    component: PackageVersionsComponent,\n    icon: 'c8y-modules',\n    label: gettext('Versions'),\n    context: ViewContext.Application,\n    priority: 1,\n    canActivate: [PackageVersionsGuard]\n  },\n  {\n    path: 'properties',\n    component: ApplicationPropertiesComponent,\n    icon: 'list',\n    label: gettext('Properties'),\n    context: ViewContext.Feature,\n    priority: 5,\n    canActivate: [ApplicationPropertiesGuard]\n  },\n  {\n    path: 'package-details',\n    component: PackageDetailsComponent,\n    icon: 'big-parcel',\n    label: gettext('Extension package'),\n    context: ViewContext.Extension,\n    priority: 10,\n    canActivate: [PackageGuard]\n  },\n  {\n    path: 'package-versions',\n    component: PackageVersionsComponent,\n    icon: 'c8y-modules',\n    label: gettext('Versions'),\n    context: ViewContext.Extension,\n    priority: 1,\n    canActivate: [PackageGuard, PackageVersionsGuard]\n  },\n  {\n    path: 'properties',\n    component: ApplicationPropertiesComponent,\n    icon: 'list',\n    label: gettext('Properties'),\n    context: ViewContext.Microservice,\n    priority: 5,\n    canActivate: [ApplicationPropertiesGuard]\n  }\n];\n\n@NgModule({\n  declarations: [\n    ApplicationListComponent,\n    MicroserviceListComponent,\n    ApplicationPropertiesComponent,\n    AddMicroserviceComponent,\n    ActivityLogComponent,\n    AddWebApplicationComponent,\n    AddExternalApplicationComponent,\n    InstallFromPackageComponent,\n    PackagesListComponent,\n    PackageDetailsComponent,\n    DeployApplicationComponent,\n    AddPackageComponent,\n    FeatureListComponent,\n    PackageVersionsComponent,\n    PackageVersionsPluginsComponent,\n    PackageVersionsAppsComponent,\n    PackageContentsComponent,\n    PackageVersionsListComponent,\n    SubscriptionModalComponent,\n    UpdateApplicationModalComponent\n  ],\n  imports: [\n    CoreModule,\n    BsDropdownModule,\n    TooltipModule,\n    FormsModule,\n    ReactiveFormsModule,\n    RouterModule.forChild(ecosystemMainRoutes),\n    PopoverModule,\n    ApplicationPluginsModule,\n    SharedEcosystemModule,\n    LicenseConfirmModule,\n    IconSelectorModule,\n    A11yModule,\n    ArchivedConfirmModule\n  ],\n  exports: [ApplicationPropertiesComponent, UpdateApplicationModalComponent],\n  providers: [\n    hookTab(EcosystemTabs),\n    hookNavigator(EcosystemNavigationFactory),\n    hookRoute(applicationDetailsRoutes),\n    PackageGuard,\n    PackageVersionsGuard,\n    ApplicationPropertiesGuard,\n    hookWizard({\n      wizardId: EcosystemWizards.APPLICATION_UPLOAD,\n      component: AddWebApplicationComponent,\n      name: gettext('Upload web application'),\n      c8yIcon: 'upload'\n    }),\n    hookWizard({\n      name: undefined,\n      wizardId: EcosystemWizards.PACKAGE_UPLOAD,\n      component: AddPackageComponent\n    }),\n    hookWizard({\n      wizardId: EcosystemWizards.APPLICATION_UPLOAD,\n      component: AddExternalApplicationComponent,\n      name: gettext('External application'),\n      c8yIcon: 'cloud-link'\n    }),\n    hookWizard({\n      wizardId: EcosystemWizards.BLUEPRINT_DEPLOYMENT,\n      component: DeployApplicationComponent,\n      name: gettext('Deploy package'),\n      c8yIcon: 'big-parcel'\n    }),\n    hookWizard({\n      wizardId: EcosystemWizards.APPLICATION_UPLOAD,\n      component: InstallFromPackageComponent,\n      name: gettext('Install from available extension packages'),\n      c8yIcon: 'big-parcel'\n    }),\n    hookWizard({\n      name: undefined,\n      wizardId: EcosystemWizards.MICROSERVICE_UPLOAD,\n      component: AddMicroserviceComponent\n    })\n  ]\n})\nexport class EcosystemModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","i5","i4","i5.AppStatePipe","i6.PluginListItemComponent","i5.PluginListComponent","i6","i7","i8","i11.ActivityLogComponent","map","i6.OnlyLatestFilterComponent","i8.PluginListComponent","i4.PluginListComponent","i5.PackageVersionsPluginsComponent","i6.PackageVersionsAppsComponent","i4.PackageContentsComponent","i5.PackageVersionsListComponent"],"mappings":"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"}