{"version":3,"file":"c8y-ngx-components-operations-stepper-bulk-type-software.mjs","sources":["../../operations/stepper-bulk-type-software/select-software-step.component.ts","../../operations/stepper-bulk-type-software/select-software-step.component.html","../../operations/stepper-bulk-type-software/confirm-software-selection-step.component.ts","../../operations/stepper-bulk-type-software/confirm-software-selection-step.component.html","../../operations/stepper-bulk-type-software/stepper-bulk-type-software.component.ts","../../operations/stepper-bulk-type-software/stepper-bulk-type-software.component.html","../../operations/stepper-bulk-type-software/stepper-bulk-type-software.module.ts","../../operations/stepper-bulk-type-software/c8y-ngx-components-operations-stepper-bulk-type-software.ts"],"sourcesContent":["import { Component, EventEmitter, Output, QueryList, ViewChildren } from '@angular/core';\nimport { IManagedObject, IResultList } from '@c8y/client';\nimport { gettext, ListItemRadioComponent, memoize } from '@c8y/ngx-components';\nimport { RepositoryService, RepositoryType } from '@c8y/ngx-components/repository/shared';\nimport { TranslateService } from '@ngx-translate/core';\nimport { get, isEqual, property, uniqWith } from 'lodash-es';\nimport { BehaviorSubject, combineLatest, from, Observable, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, shareReplay, switchMap } from 'rxjs/operators';\nimport { ISelectedSoftware } from './select-software.model';\n\n@Component({\n  selector: 'c8y-select-software-step',\n  templateUrl: 'select-software-step.component.html'\n})\nexport class SelectSoftwareStepComponent {\n  @Output() software: EventEmitter<ISelectedSoftware> = new EventEmitter<ISelectedSoftware>();\n  textFilter$: BehaviorSubject<string> = new BehaviorSubject('');\n  deviceType$: BehaviorSubject<string> = new BehaviorSubject('');\n  softwareTypeFilter$: BehaviorSubject<string> = new BehaviorSubject('');\n  deviceTypes = [];\n  selectedDeviceType = { name: '' };\n  isLegacy = this.repositoryService.isLegacyEntry.bind(this.repositoryService);\n  software$: Observable<IResultList<IManagedObject>> = combineLatest(\n    this.textFilter$,\n    this.deviceType$,\n    this.softwareTypeFilter$\n  ).pipe(\n    switchMap(([name, deviceType, softwareType]) =>\n      this.getSoftware(name, deviceType, softwareType)\n    ),\n    shareReplay(1)\n  );\n  readonly NO_DEVICE_TYPE_AVAILABLE = gettext('No device type available');\n  @ViewChildren(ListItemRadioComponent) radioButtons: QueryList<ListItemRadioComponent>;\n\n  private deviceTypeSubscription: Subscription;\n\n  constructor(private repositoryService: RepositoryService, private translate: TranslateService) {\n    this.loadDeviceTypes();\n  }\n\n  @memoize(property('id'))\n  getBaseVersionsCount$(software: IManagedObject): Observable<number> {\n    return this.repositoryService.getBaseVersionsCount$(software).pipe(shareReplay(1));\n  }\n\n  @memoize(property('id'))\n  getVersions(software: IManagedObject) {\n    return this.repositoryService.listAllVersions(software);\n  }\n\n  getDeviceTypeTitle(software: IManagedObject): string {\n    return get(software, 'c8y_Filter.type', this.translate.instant(this.NO_DEVICE_TYPE_AVAILABLE));\n  }\n\n  loadDeviceTypes() {\n    this.deviceTypeSubscription = this.deviceType$\n      .pipe(\n        debounceTime(300),\n        distinctUntilChanged(),\n        switchMap(searchStr => {\n          const query = { 'c8y_Filter.type': `*${searchStr}*` };\n          return from(\n            this.repositoryService.listRepositoryEntries(RepositoryType.SOFTWARE, { query })\n          );\n        })\n      )\n      .subscribe(result => {\n        const { data } = result;\n        this.deviceTypes = uniqWith(\n          data.map(val => ({ name: val.c8y_Filter.type })),\n          isEqual\n        );\n      });\n  }\n\n  ngOnDestroy() {\n    this.deviceTypeSubscription.unsubscribe();\n  }\n\n  resetSelection() {\n    this.radioButtons.map(radio => radio.reset());\n  }\n\n  selectSoftware({ option, software }) {\n    software.selectedId = option.id;\n    option.action = 'install';\n    this.emitSoftware({ option, software });\n  }\n\n  emitSoftware({ option, software }) {\n    const emitData = Object.assign(\n      {},\n      { software },\n      { version: option },\n      { action: option.action }\n    );\n    this.software.emit(emitData);\n  }\n\n  private getSoftware(name?: string, deviceType?: string, softwareType?: string) {\n    const query: any = name ? { name: `*${name}*` } : {};\n    if (deviceType) {\n      query.__or = [{ 'c8y_Filter.type': deviceType }, { __not: { __has: `c8y_Filter.type` } }];\n    }\n    if (softwareType) {\n      query.__or = { softwareType };\n    }\n    return this.repositoryService.listRepositoryEntries(RepositoryType.SOFTWARE, { query });\n  }\n}\n","<c8y-select-step-frame\n  [header]=\"'Select software' | translate\"\n  [noResults]=\"\n    ((textFilter$ | async)?.length ||\n      (deviceType$ | async)?.length ||\n      (softwareTypeFilter$ | async)?.length) &&\n    (software$ | async)?.data.length === 0\n  \"\n>\n  <div\n    class=\"row\"\n    filters\n  >\n    <div class=\"col-md-4 m-b-xs-8 m-b-sm-8\">\n      <div class=\"input-group input-group-search\">\n        <input\n          class=\"form-control\"\n          title=\"{{ 'Filter…' | translate }}\"\n          placeholder=\"{{ 'Filter…' | translate }}\"\n          type=\"search\"\n          [ngModel]=\"textFilter$ | async\"\n          (ngModelChange)=\"textFilter$.next($event)\"\n        />\n        <span class=\"input-group-addon\">\n          <i\n            c8yIcon=\"search\"\n            *ngIf=\"(textFilter$ | async).length === 0\"\n          ></i>\n          <i\n            class=\"text-muted\"\n            c8yIcon=\"times\"\n            *ngIf=\"(textFilter$ | async).length > 0\"\n            (click)=\"textFilter$.next('')\"\n          ></i>\n        </span>\n      </div>\n    </div>\n    <div class=\"col-md-4 m-b-xs-8 m-b-sm-8\">\n      <c8y-form-group class=\"m-0\">\n        <c8y-typeahead\n          placeholder=\"{{ 'Type to filter device types…' | translate }}\"\n          name=\"deviceType\"\n          [(ngModel)]=\"selectedDeviceType\"\n          (onSearch)=\"deviceType$.next($event)\"\n          [allowFreeEntries]=\"false\"\n        >\n          <c8y-li\n            class=\"p-l-8 p-r-8 c8y-list__item--link\"\n            (click)=\"selectedDeviceType = { name: '' }; deviceType$.next('')\"\n            [active]=\"!selectedDeviceType?.name\"\n          >\n            <span>{{ 'All device types' | translate }}</span>\n          </c8y-li>\n          <c8y-li\n            class=\"p-l-8 p-r-8 c8y-list__item--link\"\n            *ngFor=\"let deviceType of deviceTypes\"\n            (click)=\"selectedDeviceType = deviceType; deviceType$.next(deviceType.name)\"\n            [active]=\"selectedDeviceType === deviceType\"\n          >\n            <c8y-highlight\n              [text]=\"deviceType.name\"\n              [pattern]=\"deviceType$ | async\"\n            ></c8y-highlight>\n          </c8y-li>\n        </c8y-typeahead>\n        <c8y-messages>\n          <c8y-message\n            name=\"notExisting\"\n            [text]=\"'Select one of the existing device types.' | translate\"\n          ></c8y-message>\n        </c8y-messages>\n      </c8y-form-group>\n    </div>\n    <div class=\"col-md-4\">\n      <c8y-form-group class=\"m-0\">\n        <c8y-software-type\n          [required]=\"false\"\n          [emitResultsOnly]=\"true\"\n          [showBtnInNotFoundMessage]=\"false\"\n          [allowFreeEntries]=\"false\"\n          [placeholder]=\"'Type to filter software types…' | translate\"\n          [showClearSelectionOption]=\"true\"\n          (onSelectSoftware)=\"softwareTypeFilter$.next($event?.softwareType)\"\n        ></c8y-software-type>\n        <c8y-messages>\n          <c8y-message\n            name=\"notExisting\"\n            [text]=\"'Select one of the existing device types.' | translate\"\n          ></c8y-message>\n        </c8y-messages>\n      </c8y-form-group>\n    </div>\n  </div>\n  <c8y-li\n    class=\"hidden-sm hidden-xs m-r-8 m-l-8\"\n    header\n  >\n    <c8y-li-icon><i class=\"p-l-24\"></i></c8y-li-icon>\n    <c8y-li-body class=\"content-flex-40 p-r-32\">\n      <div class=\"col-5\">\n        <span\n          class=\"text-truncate\"\n          title=\" {{ 'Name' | translate }} \"\n        >\n          {{ 'Name' | translate }}\n        </span>\n      </div>\n      <div class=\"col-2\">\n        <span\n          class=\"text-truncate\"\n          title=\"{{ 'Device type' | translate }}\"\n        >\n          {{ 'Device type' | translate }}\n        </span>\n      </div>\n      <div class=\"col-3\">\n        <span\n          class=\"text-truncate\"\n          title=\"{{ 'Software type' | translate }}\"\n        >\n          {{ 'Software type' | translate }}\n        </span>\n      </div>\n      <div class=\"col-2\">\n        <span\n          class=\"text-truncate\"\n          title=\"{{ 'Versions' | translate }}\"\n        >\n          {{ 'Versions' | translate }}\n        </span>\n      </div>\n    </c8y-li-body>\n  </c8y-li>\n  <c8y-list-group list>\n    <c8y-li\n      *c8yFor=\"let software of software$ | async; loadMore: 'auto'\"\n      #li\n    >\n      <c8y-li-icon>\n        <i c8yIcon=\"c8y-tools\"></i>\n      </c8y-li-icon>\n      <div class=\"content-flex-40\">\n        <div class=\"col-5 m-b-xs-8\">\n          <button\n            class=\"btn-clean\"\n            title=\"{{ software.name }}\"\n            type=\"button\"\n            (click)=\"li.collapsed = !li.collapsed\"\n          >\n            <c8y-highlight\n              [text]=\"software.name\"\n              [pattern]=\"textFilter$ | async\"\n            ></c8y-highlight>\n          </button>\n        </div>\n        <div class=\"col-2 m-b-xs-8\">\n          <div\n            class=\"text-truncate\"\n            title=\"{{ 'Device type' | translate }}: {{ getDeviceTypeTitle(software) }}\"\n          >\n            <span\n              class=\"text-label-small m-r-8 visible-xs visible-sm\"\n              translate\n            >\n              Device type\n            </span>\n            <span *ngIf=\"software.c8y_Filter?.type; else noType\">\n              {{ software.c8y_Filter?.type }}\n            </span>\n            <ng-template #noType>\n              <small>\n                <em\n                  class=\"text-muted\"\n                  translate\n                >\n                  Undefined`device type`\n                </em>\n              </small>\n            </ng-template>\n          </div>\n        </div>\n        <div class=\"col-3 m-b-xs-8\">\n          <span\n            class=\"text-label-small m-r-8 visible-xs visible-sm\"\n            translate\n          >\n            Software type\n          </span>\n          <span\n            class=\"label label-info\"\n            *ngIf=\"software.softwareType; else emptyText\"\n          >\n            {{ software.softwareType }}\n          </span>\n          <ng-template #emptyText>\n            <small class=\"text-muted\">\n              <em translate>Undefined`software type`</em>\n            </small>\n          </ng-template>\n        </div>\n        <div class=\"col-2\">\n          <span\n            class=\"label label-warning m-l-auto-sm\"\n            *ngIf=\"isLegacy(software)\"\n          >\n            <span translate>Legacy</span>\n          </span>\n          <span *ngIf=\"!isLegacy(software)\">\n            <span *ngIf=\"(getBaseVersionsCount$(software) | async) === null\">\n              <span class=\"label label-info\">\n                <i\n                  class=\"icon-spin\"\n                  c8yIcon=\"circle-o-notch\"\n                ></i>\n              </span>\n            </span>\n            <span *ngIf=\"(getBaseVersionsCount$(software) | async) !== null\">\n              <span [ngPlural]=\"getBaseVersionsCount$(software) | async\">\n                <ng-template ngPluralCase=\"=1\">\n                  <span\n                    class=\"text-label-small m-r-8 visible-xs visible-sm\"\n                    translate\n                  >\n                    version\n                  </span>\n                  <span class=\"badge badge-info m-l-auto-sm\">1</span>\n                </ng-template>\n                <ng-template ngPluralCase=\"other\">\n                  <span\n                    class=\"text-label-small m-r-8 visible-xs visible-sm\"\n                    translate\n                  >\n                    versions\n                  </span>\n                  <span class=\"badge badge-info m-l-auto-sm\">\n                    {{ getBaseVersionsCount$(software) | async }}\n                  </span>\n                </ng-template>\n              </span>\n            </span>\n          </span>\n        </div>\n      </div>\n      <c8y-li-collapse>\n        <c8y-list-group>\n          <c8y-li *c8yFor=\"let option of getVersions(software) | async\">\n            <c8y-li-radio\n              [name]=\"software.id\"\n              (onSelect)=\"selectSoftware({ option: option, software: software })\"\n            ></c8y-li-radio>\n            <c8y-li-body class=\"content-flex-40 p-r-16\">\n              <div class=\"col-4\">\n                {{ option.c8y_Software.version }}\n              </div>\n              <div class=\"col-5\">\n                <div\n                  class=\"text-truncate\"\n                  title=\"{{ option.c8y_Software.url }}\"\n                >\n                  <span\n                    class=\"text-label-small m-r-4\"\n                    translate\n                  >\n                    File\n                  </span>\n                  <span>{{ option.c8y_Software.url }}</span>\n                </div>\n              </div>\n              <div\n                class=\"col-3 d-flex\"\n                *ngIf=\"option.id === software.selectedId\"\n              >\n                <div\n                  class=\"c8y-select-wrapper d-inline-block m-l-auto\"\n                  style=\"margin: -4px 0\"\n                >\n                  <select\n                    class=\"form-control input-sm\"\n                    id=\"action\"\n                    [(ngModel)]=\"option.action\"\n                    (change)=\"emitSoftware({ option: option, software: software })\"\n                  >\n                    <option [ngValue]=\"'install'\">\n                      {{ 'Install/update`software`' | translate }}\n                    </option>\n                    <option [ngValue]=\"'delete'\">{{ 'Remove`software`' | translate }}</option>\n                  </select>\n                  <span></span>\n                </div>\n              </div>\n            </c8y-li-body>\n          </c8y-li>\n        </c8y-list-group>\n      </c8y-li-collapse>\n    </c8y-li>\n  </c8y-list-group>\n</c8y-select-step-frame>\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components';\nimport { has, uniq } from 'lodash-es';\nimport { ISelectedSoftware } from './select-software.model';\n\n@Component({\n  selector: 'c8y-confirm-software-selection-step',\n  templateUrl: 'confirm-software-selection-step.component.html'\n})\nexport class ConfirmSoftwareSelectionStepComponent implements OnChanges {\n  @Input() selectedItems: ISelectedSoftware[];\n  title: string;\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.selectedItems) {\n      const deviceTypes: string[] = this.deviceTypes;\n      this.title =\n        deviceTypes && deviceTypes.length\n          ? deviceTypes.join(', ')\n          : gettext('Undefined`device type`');\n    }\n  }\n\n  get selectedToInstall() {\n    return this.selectedItems.filter(software => software.action === 'install');\n  }\n\n  get selectedToDelete() {\n    return this.selectedItems.filter(software => software.action === 'delete');\n  }\n\n  get deviceTypes() {\n    return uniq(\n      this.selectedItems\n        .filter(val => has(val, ['software', 'c8y_Filter', 'type']))\n        .map(val => val.software.c8y_Filter.type)\n        .filter(val => !!val)\n    );\n  }\n}\n","<c8y-preview-selection-frame [header]=\"'Confirm selection' | translate\">\n  <ng-container *previewBlock=\"'Device type' | translate\">\n    <ng-container *ngIf=\"deviceTypes.length > 0; else noType\">\n      <span *ngFor=\"let deviceType of deviceTypes; let last = last\"\n        >{{ deviceType }}{{ last ? '' : ', ' }}</span\n      >\n    </ng-container>\n    <ng-template #noType>\n      <em class=\"text-muted\" translate>Undefined`device type`</em>\n    </ng-template>\n  </ng-container>\n  <c8y-list-group\n    *previewBlock=\"'Installations/updates`software`' | translate; if: !!selectedToInstall.length\"\n  >\n    <c8y-li *ngFor=\"let selectedItem of selectedToInstall\">\n      <c8y-li-icon>\n        <i c8yIcon=\"c8y-tools\"></i>\n      </c8y-li-icon>\n      <c8y-li-body class=\"content-flex-10\">\n        <div class=\"col-6 text-truncate\" title=\"{{ selectedItem.software.name }}\">\n          {{ selectedItem.software.name }}\n        </div>\n        <div class=\"col-6 text-right\" *ngIf=\"!!selectedItem?.version?.c8y_Software?.version\">\n          <span class=\"text-label-small m-r-4\" translate> Version </span>\n          <span>\n            {{ selectedItem.version.c8y_Software.version }}\n          </span>\n        </div>\n      </c8y-li-body>\n    </c8y-li>\n  </c8y-list-group>\n  <c8y-list-group *previewBlock=\"'Removals`software`' | translate; if: !!selectedToDelete.length\">\n    <c8y-li *ngFor=\"let selectedItem of selectedToDelete\">\n      <c8y-li-icon>\n        <i c8yIcon=\"c8y-tools\"></i>\n      </c8y-li-icon>\n      <c8y-li-body class=\"content-flex-10\">\n        <div class=\"col-6\">\n          {{ selectedItem.software.name }}\n        </div>\n        <div class=\"col-6 text-right\">\n          <span class=\"text-label-small m-r-8\" translate> Version </span>\n          <span>\n            {{ selectedItem.version.c8y_Software.version }}\n          </span>\n        </div>\n      </c8y-li-body>\n    </c8y-li>\n  </c8y-list-group>\n</c8y-preview-selection-frame>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component, ViewChild } from '@angular/core';\nimport { IOperation } from '@c8y/client';\nimport { C8yStepper, gettext, ModalService, Status } from '@c8y/ngx-components';\nimport { BaseStepperComponent } from '@c8y/ngx-components/operations/bulk-operation-stepper';\nimport {\n  BulkOperationType,\n  OperationDetails\n} from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { uniq } from 'lodash-es';\nimport { SelectSoftwareStepComponent } from './select-software-step.component';\nimport { ISelectedSoftware, ISoftwareUpdateOperationPrototype } from './select-software.model';\n\n@Component({\n  selector: 'c8y-stepper-bulk-type-software',\n  templateUrl: 'stepper-bulk-type-software.component.html'\n})\nexport class StepperBulkTypeSoftwareComponent extends BaseStepperComponent {\n  readonly type: BulkOperationType = BulkOperationType.SOFTWARE;\n  readonly descriptionTemplateSingle: string = gettext(\n    'Update software to: {{ name }} (version {{ version }})'\n  );\n  readonly descriptionTemplateOneOther: string = gettext(\n    'Update software to: {{ name }} (version {{ version }}) and one other'\n  );\n  readonly descriptionTemplateMultiple: string = gettext(\n    'Update software to: {{ name }} (version {{ version }}) and {{ count }} others'\n  );\n\n  selectedSoftware: ISelectedSoftware[] = [];\n  @ViewChild(SelectSoftwareStepComponent, { static: false })\n  selectSoftware: SelectSoftwareStepComponent;\n\n  constructor(private modal: ModalService, private translate: TranslateService) {\n    super();\n  }\n\n  onSoftwareSelected(selectedItem) {\n    this.selectedSoftware = this.selectedSoftware.filter(\n      item => item.software.id !== selectedItem.software.id\n    );\n    this.selectedSoftware.push(selectedItem);\n  }\n\n  async confirmSoftwareSelection($event: { stepper: C8yStepper; step: CdkStep }) {\n    const deviceTypes: string[] = this.getUniqueDeviceTypes();\n    this.deviceTypes = deviceTypes;\n    if (deviceTypes.length > 1) {\n      try {\n        await this.modal.confirm(\n          gettext('Selected software for various device types'),\n          gettext('Operation may fail due to unsupported software. Do you want to proceed?'),\n          Status.WARNING,\n          { ok: gettext('Confirm'), cancel: gettext('Cancel') }\n        );\n        $event.stepper.next();\n      } catch (ex) {\n        this.selectedSoftware = [];\n        this.selectSoftware.resetSelection();\n      }\n    } else {\n      $event.stepper.next();\n    }\n  }\n\n  protected retrieveOperationPrototype(): OperationDetails {\n    const softwareList: ISoftwareUpdateOperationPrototype[] = this.selectedSoftware.map(item => ({\n      name: item.software.name,\n      version: item.version.c8y_Software.version,\n      url: item.version.c8y_Software.url,\n      action: item.action\n    }));\n\n    const interpolationParams: object = {\n      name: softwareList[0].name,\n      version: softwareList[0].version,\n      count: softwareList.length - 1\n    };\n    let description: string;\n    switch (softwareList.length) {\n      case 1:\n        description = this.translate.instant(this.descriptionTemplateSingle, interpolationParams);\n        break;\n      case 2:\n        description = this.translate.instant(this.descriptionTemplateOneOther, interpolationParams);\n        break;\n      default:\n        description = this.translate.instant(this.descriptionTemplateMultiple, interpolationParams);\n    }\n\n    return {\n      name: gettext('Software update'),\n      prototype: {\n        description,\n        c8y_SoftwareUpdate: softwareList\n      } as unknown as IOperation\n    };\n  }\n\n  private getUniqueDeviceTypes(): string[] {\n    return uniq(\n      this.selectedSoftware\n        .map(item => item.software.c8y_Filter && item.software.c8y_Filter.type)\n        .filter(type => !!type)\n    );\n  }\n}\n","<c8y-bulk-operation-stepper [type]=\"type\">\n  <ng-container\n    *customStep=\"\n      'Select software' | translate;\n      completed: !!selectedSoftware.length;\n      buttonsDisabled: !selectedSoftware.length;\n      onNext: confirmSoftwareSelection.bind(this)\n    \"\n  >\n    <c8y-select-software-step\n      (software)=\"onSoftwareSelected($event)\"\n      class=\"d-contents\"\n    ></c8y-select-software-step>\n  </ng-container>\n  <ng-container *customStep=\"'Confirm selected software' | translate\">\n    <c8y-confirm-software-selection-step\n      class=\"d-contents\"\n      [selectedItems]=\"selectedSoftware\"\n    ></c8y-confirm-software-selection-step>\n  </ng-container>\n</c8y-bulk-operation-stepper>\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { CoreModule, FormsModule, gettext } from '@c8y/ngx-components';\nimport { SharedRepositoryModule } from '@c8y/ngx-components/repository/shared';\nimport { BulkOperationStepperModule } from '@c8y/ngx-components/operations/bulk-operation-stepper';\nimport {\n  baseUrl,\n  BulkOperationType,\n  hookListBulkType\n} from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { StepperFramesModule } from '@c8y/ngx-components/operations/stepper-frames';\n\nimport { ConfirmSoftwareSelectionStepComponent } from './confirm-software-selection-step.component';\nimport { SelectSoftwareStepComponent } from './select-software-step.component';\nimport { StepperBulkTypeSoftwareComponent } from './stepper-bulk-type-software.component';\n\n/** Module for the 'Software update' operation type stepper */\n@NgModule({\n  declarations: [\n    StepperBulkTypeSoftwareComponent,\n    ConfirmSoftwareSelectionStepComponent,\n    SelectSoftwareStepComponent\n  ],\n  imports: [\n    CoreModule,\n    FormsModule,\n    ReactiveFormsModule,\n    BulkOperationStepperModule,\n    SharedRepositoryModule,\n    StepperFramesModule\n  ],\n  providers: [\n    hookListBulkType({\n      type: BulkOperationType.SOFTWARE,\n      c8yIcon: 'c8y-tools',\n      name: gettext('Software update'),\n      path: `${baseUrl}software`,\n      component: StepperBulkTypeSoftwareComponent,\n      fragments: ['c8y_SoftwareList', 'c8y_SoftwareUpdate'],\n      selected: false\n    })\n  ],\n  exports: [StepperBulkTypeSoftwareComponent]\n})\nexport class StepperBulkTypeSoftwareModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i6","i1","i2","i3","i4.ConfirmSoftwareSelectionStepComponent","i5.SelectSoftwareStepComponent"],"mappings":"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"}