{"version":3,"file":"c8y-ngx-components-files-repository.mjs","sources":["../../files-repository/files-repository.guard.ts","../../files-repository/files-repository-navigation.factory.ts","../../files-repository/files-repository-product-experience.constants.ts","../../files-repository/files-repository-upload.component.ts","../../files-repository/files-repository-upload.component.html","../../files-repository/files-repository.service.ts","../../files-repository/files-repository.component.ts","../../files-repository/files-repository.component.html","../../files-repository/files-repository.module.ts","../../files-repository/c8y-ngx-components-files-repository.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { Permissions } from '@c8y/ngx-components';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FilesRepositoryGuard {\n  constructor(private permissions: Permissions) {}\n\n  /**\n   * Checks if files repository should be active,\n   * i.e. whether the current tenant can read or admin files in repository.\n   *\n   * @returns True, if the feature should be active.\n   */\n  canActivate(): boolean {\n    return (\n      this.permissions.hasRole(Permissions.ROLE_INVENTORY_READ) ||\n      this.permissions.hasAllRoles([\n        Permissions.ROLE_MANAGED_OBJECT_READ,\n        Permissions.ROLE_BINARY_READ\n      ])\n    );\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { NavigatorNode, NavigatorNodeFactory } from '@c8y/ngx-components';\nimport { FilesRepositoryGuard } from './files-repository.guard';\n\n@Injectable({ providedIn: 'root' })\nexport class FilesRepositoryNavigationFactory implements NavigatorNodeFactory {\n  private navs: NavigatorNode[] = [];\n\n  constructor(private filesRepositoryGuard: FilesRepositoryGuard) {}\n\n  async get(): Promise<NavigatorNode[]> {\n    if (this.filesRepositoryGuard.canActivate()) {\n      if (!this.navs.length) {\n        this.navs.push(\n          new NavigatorNode({\n            parent: gettext('Management'),\n            label: gettext('Files repository'),\n            icon: 'c8y-archive',\n            path: 'files',\n            routerLinkExact: false,\n            priority: 1000\n          })\n        );\n      }\n    }\n    return this.navs;\n  }\n}\n","export const PRODUCT_EXPERIENCE_FILE_REPOSITORY = {\n  EVENTS: {\n    FILE_REPOSITORY_UPLOAD: 'filesRepositoryUpload'\n  },\n  COMPONENTS: {\n    FILE_REPOSITORY_UPLOAD_COMPONENT: 'files-repository-upload'\n  },\n  RESULTS: {\n    UPLOAD_ITEM_SUCCESS: 'fileUploadSuccess',\n    UPLOAD_ITEM_FAILED: 'fileUploadFailed'\n  }\n} as const;\n","import { Component, Output, EventEmitter } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n  AlertService,\n  GainsightService,\n  FilesService,\n  IFetchWithProgress,\n  IconDirective,\n  C8yTranslateDirective,\n  FilePickerFormControlComponent,\n  C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { PRODUCT_EXPERIENCE_FILE_REPOSITORY } from './files-repository-product-experience.constants';\nimport { Observable, Subscription, combineLatest } from 'rxjs';\n\n@Component({\n  selector: 'c8y-files-repository-upload',\n  templateUrl: './files-repository-upload.component.html',\n  imports: [IconDirective, C8yTranslateDirective, FilePickerFormControlComponent, C8yTranslatePipe]\n})\nexport class FilesRepositoryUploadComponent {\n  /** Emits an event when modal is closed. `uploaded` indicates if any files were uploaded. */\n  @Output() onClose: EventEmitter<{ uploaded: boolean }> = new EventEmitter();\n  isLoading = false;\n  dropFilesHereMessage: string = gettext('Drop files here');\n  filesToUpload: File[];\n  uploadProgress: IFetchWithProgress[];\n  uploadProgress$: Observable<IFetchWithProgress[]>;\n  uploadSubscription: Subscription;\n\n  constructor(\n    private alertService: AlertService,\n    private gainsightService: GainsightService,\n    private filesService: FilesService\n  ) {}\n\n  async upload(): Promise<void> {\n    this.isLoading = true;\n    this.uploadProgress$ = combineLatest(\n      this.filesToUpload.map(file => this.filesService.uploadFileWithProgress$(file))\n    );\n\n    this.uploadSubscription = this.uploadProgress$.subscribe(\n      uploadProgress => {\n        this.uploadProgress = uploadProgress;\n      },\n      e => {\n        if (e) {\n          this.alertService.addServerFailure(e);\n          this.gainsightService.triggerEvent(\n            PRODUCT_EXPERIENCE_FILE_REPOSITORY.EVENTS.FILE_REPOSITORY_UPLOAD,\n            {\n              component:\n                PRODUCT_EXPERIENCE_FILE_REPOSITORY.COMPONENTS.FILE_REPOSITORY_UPLOAD_COMPONENT,\n              action: PRODUCT_EXPERIENCE_FILE_REPOSITORY.RESULTS.UPLOAD_ITEM_FAILED\n            }\n          );\n        }\n        this.isLoading = false;\n      },\n      () => {\n        this.alertService.success(gettext('File(s) uploaded.'));\n        this.onClose.emit({ uploaded: true });\n        this.gainsightService.triggerEvent(\n          PRODUCT_EXPERIENCE_FILE_REPOSITORY.EVENTS.FILE_REPOSITORY_UPLOAD,\n          {\n            component:\n              PRODUCT_EXPERIENCE_FILE_REPOSITORY.COMPONENTS.FILE_REPOSITORY_UPLOAD_COMPONENT,\n            action: PRODUCT_EXPERIENCE_FILE_REPOSITORY.RESULTS.UPLOAD_ITEM_SUCCESS\n          }\n        );\n      }\n    );\n  }\n\n  onFileDroppedEvent(event: File[]): void {\n    if (event && event.length > 0) {\n      this.filesToUpload = event;\n    }\n  }\n}\n","<div class=\"c8y-viewport-modal\">\n  <div class=\"modal-header dialog-header\">\n    <i c8yIcon=\"upload\"></i>\n    <h4\n      id=\"modal-title\"\n      translate\n    >\n      Upload files\n    </h4>\n  </div>\n  <div class=\"modal-inner-scroll\">\n    <div\n      class=\"modal-body\"\n      id=\"modal-body\"\n    >\n      <c8y-file-picker-form-control\n        #filePicker\n        [uploadInProgress]=\"isLoading\"\n        (dropped)=\"onFileDroppedEvent($event)\"\n        [uploadProgress]=\"uploadProgress\"\n      ></c8y-file-picker-form-control>\n    </div>\n  </div>\n  <div class=\"card-footer separator d-flex j-c-center\">\n    <button\n      class=\"btn btn-default\"\n      title=\"{{ 'Cancel' | translate }}\"\n      type=\"button\"\n      (click)=\"onClose.emit({ uploaded: false })\"\n      [disabled]=\"isLoading\"\n      translate\n    >\n      Cancel\n    </button>\n    <button\n      class=\"btn btn-primary btn-form\"\n      title=\"{{ 'Upload' | translate }}\"\n      type=\"button\"\n      (click)=\"upload()\"\n      [disabled]=\"!filePicker.valid || isLoading\"\n      translate\n      data-cy=\"c8y-files-repository-upload--upload\"\n    >\n      Upload\n    </button>\n  </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { QueriesUtil, InventoryService } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { Pagination, SortOrder, Column, Row } from '@c8y/ngx-components';\nimport { transform, has } from 'lodash-es';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FilesRepositoryService {\n  queriesUtil: QueriesUtil;\n  baseQuery = { __has: 'c8y_IsBinary' };\n  constructor(private inventoryService: InventoryService) {\n    this.queriesUtil = new QueriesUtil();\n  }\n\n  getPagination(): Pagination {\n    return {\n      pageSize: 10,\n      currentPage: 1\n    };\n  }\n\n  hasApplicationStorageFragment(file: Row): boolean {\n    return has(file, 'c8y_applications_storage');\n  }\n\n  getColumns(): Column[] {\n    return [\n      {\n        name: 'name',\n        header: gettext('Name'),\n        path: 'name',\n        filterable: true,\n        sortable: true,\n        sortOrder: 'asc' as SortOrder\n      },\n      {\n        name: 'type',\n        header: gettext('Type'),\n        path: 'type',\n        filterable: true,\n        sortable: true\n      },\n      {\n        name: 'length',\n        header: gettext('Size'),\n        path: 'length',\n        filterable: false,\n        sortable: true\n      },\n      {\n        name: 'owner',\n        header: gettext('Owner'),\n        path: 'owner',\n        filterable: true,\n        sortable: true\n      },\n      {\n        name: 'lastUpdated',\n        header: gettext('Last update'),\n        path: 'lastUpdated',\n        filterable: false,\n        sortable: true\n      }\n    ];\n  }\n\n  /** Returns array with items id where item has not c8y_applications_storage fragment. */\n  getDeletableItemsIds(selectedItemsIds: string[], dataFromDataGrid: Array<any>): string[] {\n    const selectedItemsWithoutApplications = [];\n    dataFromDataGrid.forEach(item => {\n      selectedItemsIds.forEach(selectedItemId => {\n        if (selectedItemId === item.id && !this.hasApplicationStorageFragment(item)) {\n          selectedItemsWithoutApplications.push(selectedItemId);\n        }\n      });\n    });\n\n    return selectedItemsWithoutApplications;\n  }\n\n  /** Returns the total number of items (with no filters based on columns setup). */\n  async getTotal(): Promise<number> {\n    const filters = {\n      query: this.queriesUtil.buildQuery(this.baseQuery),\n      withTotalElements: true\n    };\n    return (await this.inventoryService.list(filters)).paging.totalElements;\n  }\n\n  /** Returns data for current columns and pagination setup. */\n  async getData(columns: Column[], pagination: Pagination, searchText = '') {\n    // build filters based on columns and pagination\n    const filters = {\n      text: searchText,\n      ...this.getFilters(columns, pagination),\n      withTotalElements: true\n    };\n    // execute inventory query for the list of managed objects\n\n    return this.inventoryService.list(filters);\n  }\n\n  /** Returns filters for given columns and pagination setup. */\n  private getFilters(columns: Column[], pagination: Pagination) {\n    return {\n      query: this.getQueryString(columns),\n      pageSize: pagination.pageSize,\n      currentPage: pagination.currentPage,\n      withChildren: false,\n      withTotalPages: true\n    };\n  }\n\n  /** Returns a query string based on columns setup. */\n  private getQueryString(columns: Column[]): string {\n    let fullQuery = this.getQueryObj(columns);\n    fullQuery = this.queriesUtil.addAndFilter(fullQuery, this.baseQuery);\n    return this.queriesUtil.buildQuery(fullQuery);\n  }\n\n  /** Returns a query object based on columns setup. */\n  private getQueryObj(columns: Column[]) {\n    return transform(columns, (query, column) => this.addColumnQuery(query, column), {\n      __filter: {},\n      __orderby: []\n    });\n  }\n\n  /** Extends given query with a part based on the setup of given column. */\n  private addColumnQuery(query, column: Column): void {\n    // when a column is marked as filterable\n    if (column.filterable) {\n      // in the case of default filtering form, `filterPredicate` will contain the string entered by a user\n      if (column.filterPredicate) {\n        // so we use it as the expected value, * allow to search for it anywhere in the property\n        query.__filter[column.path] = `*${column.filterPredicate}*`;\n      }\n\n      // in the case of custom filtering form, we're storing the query in `externalFilterQuery.query`\n      if (column.externalFilterQuery) {\n        query = this.queriesUtil.addAndFilter(query, column.externalFilterQuery.query);\n      }\n    }\n\n    // when a column is sortable and has a specified sorting order\n    if (column.sortable && column.sortOrder) {\n      // add sorting condition for the configured column `path`\n      query.__orderby.push({\n        [column.path]: column.sortOrder === 'asc' ? 1 : -1\n      });\n    }\n\n    return query;\n  }\n}\n","import { Component, EventEmitter, ViewChild } from '@angular/core';\nimport { IManagedObjectBinary, InventoryBinaryService } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n  ActionControl,\n  AlertService,\n  BuiltInActionType,\n  BulkActionControl,\n  Column,\n  DataGridComponent,\n  DataSourceModifier,\n  DisplayOptions,\n  FilesService,\n  LoadMoreMode,\n  ModalService,\n  Pagination,\n  Row,\n  ServerSideDataCallback,\n  ServerSideDataResult,\n  Status,\n  TitleComponent,\n  BreadcrumbComponent,\n  BreadcrumbItemComponent,\n  ActionBarItemComponent,\n  IfAllowedDirective,\n  IconDirective,\n  HelpComponent,\n  EmptyStateContextDirective,\n  EmptyStateComponent,\n  ColumnDirective,\n  CellRendererDefDirective,\n  C8yTranslatePipe,\n  DatePipe,\n  BytesPipe\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BsModalService, ModalOptions } from 'ngx-bootstrap/modal';\nimport { Subject } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { FilesRepositoryUploadComponent } from './files-repository-upload.component';\nimport { FilesRepositoryService } from './files-repository.service';\n\nimport { NgIf } from '@angular/common';\nimport { FilePreviewComponent } from '@c8y/ngx-components/file-preview';\n\n@Component({\n  selector: 'c8y-files-repository',\n  templateUrl: './files-repository.component.html',\n  imports: [\n    TitleComponent,\n    BreadcrumbComponent,\n    BreadcrumbItemComponent,\n    ActionBarItemComponent,\n    IfAllowedDirective,\n    IconDirective,\n    HelpComponent,\n    DataGridComponent,\n    EmptyStateContextDirective,\n    EmptyStateComponent,\n    NgIf,\n    ColumnDirective,\n    CellRendererDefDirective,\n    FilePreviewComponent,\n    C8yTranslatePipe,\n    DatePipe,\n    BytesPipe\n  ]\n})\nexport class FilesRepositoryComponent {\n  @ViewChild(DataGridComponent, { static: true }) dataGrid: DataGridComponent;\n  destroy$: Subject<boolean> = new Subject<boolean>();\n  title: string = gettext('Files repository');\n  managementTitle: string = gettext('Management');\n  loadMoreItemsLabel: string = gettext('Load more files');\n  loadingItemsLabel: string = gettext('Loading files…');\n\n  isLoading = true;\n\n  displayOptions: DisplayOptions = {\n    bordered: false,\n    striped: true,\n    filter: true,\n    gridHeader: true,\n    hover: true\n  };\n\n  columns: Column[] = this.filesRepositoryService.getColumns();\n  pagination: Pagination = this.filesRepositoryService.getPagination();\n  infiniteScroll: LoadMoreMode = 'auto';\n  serverSideDataCallback: ServerSideDataCallback;\n  returnedDataSize: number;\n  selectable = true;\n  actionControls: ActionControl[] = [\n    {\n      text: gettext('Delete'),\n      icon: 'trash',\n      type: BuiltInActionType.Delete,\n      showIf: selectedItem =>\n        !this.filesRepositoryService.hasApplicationStorageFragment(selectedItem),\n      callback: selectedItem => this.onDeleteItem(selectedItem)\n    },\n    {\n      text: gettext('Download'),\n      icon: 'download',\n      type: BuiltInActionType.Export,\n      callback: selectedItem => this.onDownloadItem(selectedItem as IManagedObjectBinary)\n    }\n  ];\n  bulkActionControls: BulkActionControl[] = [\n    {\n      type: BuiltInActionType.Delete,\n      callback: selectedItemIds => this.onDeleteItems(selectedItemIds)\n    }\n  ];\n\n  refresh: EventEmitter<void> = new EventEmitter<void>();\n\n  noResultsMessage = gettext('No results to display.');\n  noDataMessage = gettext('No files to display.');\n  noResultsSubtitle = gettext('Refine your search terms or check your spelling.');\n  noDataSubtitle = gettext('Add a new file by clicking below.');\n\n  constructor(\n    private filesRepositoryService: FilesRepositoryService,\n    private inventoryBinaryService: InventoryBinaryService,\n    private modalService: ModalService,\n    private alertService: AlertService,\n    private bsModalService: BsModalService,\n    private fileService: FilesService,\n    private translateService: TranslateService\n  ) {\n    // we're setting up `serverSideDataCallback` to execute a method from this component with bound `this`\n    this.serverSideDataCallback = this.onDataSourceModifier.bind(this);\n  }\n\n  async onDataSourceModifier(\n    dataSourceModifier: DataSourceModifier\n  ): Promise<ServerSideDataResult> {\n    const { res, data, paging } = await this.filesRepositoryService.getData(\n      dataSourceModifier.columns,\n      dataSourceModifier.pagination,\n      dataSourceModifier.searchText\n    );\n    const filteredSize: number = paging.totalElements;\n    const size: number = await this.filesRepositoryService.getTotal();\n\n    const serverSideDataResult: ServerSideDataResult = { res, data, paging, filteredSize, size };\n    this.isLoading = false;\n    this.returnedDataSize = serverSideDataResult.size;\n\n    return serverSideDataResult;\n  }\n\n  async onDeleteItem(selectedItem: Row) {\n    return this.deleteItemsWithConfirmation([selectedItem.id], {\n      title: gettext('Delete file'),\n      body: this.translateService.instant(\n        gettext('You are about to delete file \"{{ name }}\". Do you want to proceed?'),\n        selectedItem\n      ),\n      successText: gettext('File deleted.')\n    });\n  }\n\n  async onDeleteItems(selectedItemsIds: string[]) {\n    const dataGridDataSourceData = await this.dataGrid.dataSource.data$.pipe(take(1)).toPromise();\n    const deletableItemsIds = this.filesRepositoryService.getDeletableItemsIds(\n      selectedItemsIds,\n      dataGridDataSourceData\n    );\n    let body: string;\n    if (deletableItemsIds.length < selectedItemsIds.length) {\n      body = gettext(`\n        You are about to delete the selected files.\n        Note: the selected files of type \"c8y_applications_storage_*\" won't be deleted though\n        - such files can be deleted only from the \"Activity log\" of the associated application.\n        Do you want to proceed?\n      `);\n    } else {\n      body = gettext('You are about to delete the selected files. Do you want to proceed?');\n    }\n\n    return this.deleteItemsWithConfirmation(deletableItemsIds, {\n      title: gettext('Delete files'),\n      body,\n      successText: gettext('Files deleted.')\n    });\n  }\n\n  async onDownloadItem(selectedItem: IManagedObjectBinary) {\n    return this.fileService.download(selectedItem);\n  }\n\n  openFileUploadComponent() {\n    const modalOptions: ModalOptions<FilesRepositoryUploadComponent> = {\n      class: 'modal-sm',\n      ariaDescribedby: 'modal-body',\n      ariaLabelledBy: 'modal-title',\n      ignoreBackdropClick: true\n    };\n    const modalRef = this.bsModalService.show(FilesRepositoryUploadComponent, modalOptions);\n    modalRef.content.onClose.pipe(takeUntil(this.destroy$)).subscribe(({ uploaded }) => {\n      if (uploaded) {\n        this.refresh.emit();\n      }\n      modalRef.hide();\n    });\n  }\n\n  private async deleteItemsWithConfirmation(\n    selectedItemsIds: string[],\n    options: { title: string; body: string; successText: string }\n  ) {\n    try {\n      await this.confirmItemsDeletion(options);\n      this.isLoading = true;\n      const promises = selectedItemsIds.map(selectedItemId =>\n        this.inventoryBinaryService.delete(selectedItemId)\n      );\n      await Promise.all(promises);\n      this.alertService.success(options.successText);\n      this.refresh.next();\n    } catch (ex) {\n      if (ex) {\n        this.alertService.addServerFailure(ex);\n      }\n    } finally {\n      this.isLoading = false;\n    }\n  }\n\n  private async confirmItemsDeletion({ title, body }: { title: string; body: string }) {\n    const status = Status.DANGER;\n    const labels = { ok: gettext('Delete'), cancel: gettext('Cancel') };\n    await this.modalService.confirm(title, body, status, labels);\n  }\n}\n","<c8y-title>\n  {{ title | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n  <c8y-breadcrumb-item\n    icon=\"c8y-management\"\n    [label]=\"managementTitle | translate\"\n  ></c8y-breadcrumb-item>\n  <c8y-breadcrumb-item [label]=\"title | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n  <button\n    class=\"btn btn-link\"\n    title=\"{{ 'Upload files' | translate }}\"\n    *c8yIfAllowed=\"['ROLE_INVENTORY_ADMIN', 'ROLE_INVENTORY_CREATE']; allowAny: true\"\n    (click)=\"openFileUploadComponent()\"\n    data-cy=\"c8y-files-repository--open-file-upload-component\"\n  >\n    <i c8yIcon=\"upload\"></i>\n    {{ 'Upload files' | translate }}\n  </button>\n</c8y-action-bar-item>\n\n<c8y-help src=\"/docs/standard-tenant/managing-data/#file-repository\"></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n  <c8y-data-grid\n    [title]=\"title\"\n    [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n    [loadingItemsLabel]=\"loadingItemsLabel\"\n    [displayOptions]=\"displayOptions\"\n    [columns]=\"columns\"\n    [pagination]=\"pagination\"\n    [infiniteScroll]=\"infiniteScroll\"\n    [serverSideDataCallback]=\"serverSideDataCallback\"\n    [actionControls]=\"actionControls\"\n    [selectable]=\"selectable\"\n    [showSearch]=\"true\"\n    [refresh]=\"refresh\"\n    [bulkActionControls]=\"bulkActionControls\"\n  >\n    <c8y-ui-empty-state\n      [icon]=\"stats?.size > 0 ? 'search' : 'c8y-archive'\"\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\"\n          title=\"{{ 'Upload file' | translate }}\"\n          type=\"button\"\n          (click)=\"openFileUploadComponent()\"\n        >\n          <i c8yIcon=\"plus-circle\"></i>\n          {{ 'Upload file' | translate }}\n        </button>\n      </p>\n    </c8y-ui-empty-state>\n\n    <c8y-column name=\"name\">\n      <ng-container *c8yCellRendererDef=\"let context\">\n        <span title=\"{{ context.value }}\">\n          <div class=\"d-flex j-c-between a-i-center\">\n            {{ context.value }}\n            <c8y-file-preview\n              class=\"m-l-auto\"\n              [mo]=\"context.item\"\n            >\n              <button\n                class=\"btn btn-emphasis btn-icon\"\n                [title]=\"'Preview file' | translate\"\n                type=\"button\"\n                customButton\n              >\n                <i c8yIcon=\"search\"></i>\n              </button>\n            </c8y-file-preview>\n          </div>\n        </span>\n      </ng-container>\n    </c8y-column>\n\n    <c8y-column name=\"length\">\n      <ng-container *c8yCellRendererDef=\"let context\">\n        <span title=\"{{ context.value }} B\">\n          {{ context.value | bytes }}\n        </span>\n      </ng-container>\n    </c8y-column>\n\n    <c8y-column name=\"lastUpdated\">\n      <ng-container *c8yCellRendererDef=\"let context\">\n        <span title=\"{{ context.value | c8yDate }}\">\n          {{ context.value | c8yDate }}\n        </span>\n      </ng-container>\n    </c8y-column>\n  </c8y-data-grid>\n</div>\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CoreModule, hookNavigator, hookRoute, DropAreaModule } from '@c8y/ngx-components';\nimport { FilesRepositoryNavigationFactory } from './files-repository-navigation.factory';\nimport { FilesRepositoryComponent } from './files-repository.component';\nimport { FilesRepositoryUploadComponent } from './files-repository-upload.component';\nimport { FilesRepositoryService } from './files-repository.service';\nimport { FilesRepositoryGuard } from './files-repository.guard';\nimport { FilePreviewModule } from '@c8y/ngx-components/file-preview';\n\n@NgModule({\n  imports: [\n    RouterModule,\n    CoreModule,\n    DropAreaModule,\n    FilePreviewModule,\n    FilesRepositoryComponent,\n    FilesRepositoryUploadComponent\n  ],\n  exports: [],\n  providers: [\n    FilesRepositoryGuard,\n    hookNavigator(FilesRepositoryNavigationFactory),\n    hookRoute(\n      {\n        path: 'files',\n        component: FilesRepositoryComponent,\n        canActivate: [FilesRepositoryGuard]\n      },\n      { multi: true }\n    ),\n    FilesRepositoryService\n  ]\n})\nexport class FilesRepositoryModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.FilesRepositoryGuard","i1","i1.FilesRepositoryService","i2","i3"],"mappings":"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"}