{"version":3,"file":"acorex-components-uploader.mjs","sources":["../../../../packages/components/uploader/src/lib/uploader-list/uploader-list.component.ts","../../../../packages/components/uploader/src/lib/uploader-list/uploader-list.component.html","../../../../packages/components/uploader/src/lib/uploader-dialog-container/uploader-dialog-container.component.ts","../../../../packages/components/uploader/src/lib/uploader-dialog-container/uploader-dialog-container.component.html","../../../../packages/components/uploader/src/lib/uploader-drop-zone/uploader-drop-zone.component.ts","../../../../packages/components/uploader/src/lib/uploader-drop-zone/uploader-drop-zone.component.html","../../../../packages/components/uploader/src/lib/uploader.module.ts","../../../../packages/components/uploader/src/acorex-components-uploader.ts"],"sourcesContent":["import { AXComponent } from '@acorex/cdk/common';\nimport { AXUploaderService } from '@acorex/cdk/uploader';\nimport { AXProgressBarComponent } from '@acorex/components/progress-bar';\nimport { AXFormatPipe } from '@acorex/core/format';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { Component, ViewEncapsulation, inject } from '@angular/core';\n\n/**\n * A component that displays a list of uploaded files.\n * @category Components\n */\n@Component({\n  selector: 'ax-uploader-list',\n  templateUrl: './uploader-list.component.html',\n  styleUrls: ['./uploader-list.component.css'],\n  encapsulation: ViewEncapsulation.None,\n  imports: [AXProgressBarComponent, AsyncPipe, AXTranslatorPipe, AXFormatPipe],\n\n  providers: [{ provide: AXComponent, useExisting: AXUploaderListComponent }],\n})\nexport class AXUploaderListComponent {\n  /**\n   * The uploader service instance for managing file uploads.\n   * @ignore\n   */\n  protected uploadService: AXUploaderService = inject(AXUploaderService);\n}\n","<!-- @if ((uploadService.totalEstimateTime | async) > 0) { -->\n<div class=\"ax-uploader-progress-status\" [class.ax-hide]=\"(uploadService.totalEstimateTime | async) <= 0\">\n  @if (uploadService.isAnyDetermined()) {\n    <span>{{ '@acorex:common.status.processing' | translate | async }}</span>\n  } @else {\n    <div>{{ uploadService.totalEstimateTime | async | format: 'timeleft' | async }}</div>\n  }\n  <button (click)=\"uploadService.cancelAll()\">{{ '@acorex:common.actions.cancel' | translate | async }}</button>\n</div>\n<!-- } -->\n\n<ul class=\"ax-uploader-list-items\">\n  @for (item of uploadService.files | async; track item.name) {\n    <li>\n      <div class=\"ax-file\">\n        <span>{{ item.ext }}</span>\n      </div>\n      <div class=\"ax-item-container\">\n        <div class=\"ax-item-name\" [title]=\"item.name\">{{ item.name }}</div>\n        <div class=\"ax-status\">\n          @switch (item.status()) {\n            @case ('inprogress') {\n              <span>{{ item.size | format: 'filesize' | async }}</span> /\n              {{\n                item.isDetermined()\n                  ? (item.estimateTime() | format: 'timeleft' | async)\n                  : ('@acorex:common.status.processing' | translate | async)\n              }}\n            }\n            @case ('failed') {\n              <div class=\"ax-state-failed\">\n                <span>{{ item.message() }}</span>\n              </div>\n            }\n            @case ('completed') {\n              <div class=\"ax-state-completed\">\n                <span>{{ '@acorex:common.status.completed' | translate | async }}</span>\n              </div>\n            }\n          }\n        </div>\n      </div>\n      <div class=\"ax-status\">\n        @switch (item.status()) {\n          @case ('completed') {\n            <i class=\"ax-icon ax-icon-solid ax-icon-check-circle ax-state-completed\"></i>\n          }\n          @case ('canceled') {\n            <div>\n              <span class=\"ax-state-canceled\">{{ '@acorex:common.actions.canceled' | translate | async }}</span>\n              <!-- <i class=\"ax-icon ax-icon-solid ax-icon-redo\" (click)=\"item.redo()\" title=\"{{ 'retry' | translate | async }}\"></i> -->\n            </div>\n          }\n          @case ('failed') {\n            <div class=\"ax-state-failed\">\n              <span>{{ '@acorex:common.status.failed' | translate | async }}</span>\n              <i\n                class=\"ax-icon ax-icon-solid ax-icon-redo\"\n                (click)=\"item.redo()\"\n                title=\"{{ '@acorex:common.actions.retry' | translate | async }}\"\n              ></i>\n            </div>\n          }\n          @default {\n            <!-- <ax-circular-progress\n              [mode]=\"item.isDetermined() ? 'determinate' : 'indeterminate'\"\n              [size]=\"22\"\n              [stroke]=\"6\"\n              [progress]=\"item.isDetermined() ? item.progress() : 60\"\n              class=\"ax-show\"\n            >\n            </ax-circular-progress> -->\n            <i\n              class=\"ax-icon ax-icon-solid ax-icon-close\"\n              (click)=\"item.cancel()\"\n              title=\"{{ '@acorex:common.actions.cancel' | translate | async }}\"\n            ></i>\n          }\n        }\n      </div>\n    </li>\n    @let completed = item.status() === 'completed';\n    @if (item.status() === 'inprogress' || completed) {\n      <div class=\"ax-status-loading\" [class.ax-status-loading-hide]=\"completed\">\n        <ax-progress-bar\n          [height]=\"4\"\n          [mode]=\"completed ? 'determinate' : 'indeterminate'\"\n          [progress]=\"completed ? 100 : 60\"\n          [color]=\"completed ? 'success' : 'primary'\"\n        ></ax-progress-bar>\n      </div>\n    }\n  }\n</ul>\n","import { AXClosableComponent, AXComponent } from '@acorex/cdk/common';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe, NgClass } from '@angular/common';\nimport { Component, ViewEncapsulation, inject } from '@angular/core';\nimport { AXUploaderListComponent } from '../uploader-list/uploader-list.component';\n\n/**\n * A container for managing the uploader dialog with collapse and expand animations.\n * @category Components\n */\n@Component({\n  selector: 'ax-uploader-dialog-container',\n  templateUrl: './uploader-dialog-container.component.html',\n  styleUrls: ['./uploader-dialog-container.component.css'],\n  encapsulation: ViewEncapsulation.None,\n  imports: [NgClass, AXUploaderListComponent, AsyncPipe, AXTranslatorPipe],\n\n  providers: [{ provide: AXComponent, useExisting: AXUploaderDialogContainerComponent }],\n})\nexport class AXUploaderDialogContainerComponent {\n  /**\n   * The parent closable component instance.\n   * @ignore\n   */\n  private parent = inject(AXClosableComponent);\n\n  /**\n   * Indicates whether the component is in a collapsed state.\n   * @defaultValue false\n   */\n  isCollapsed = false;\n\n  /**\n   * Closes the parent dialog or container.\n   */\n  close() {\n    this.parent.close();\n  }\n\n  /**\n   * Toggles the collapsed state of the component.\n   */\n  toggle() {\n    this.isCollapsed = !this.isCollapsed;\n  }\n}\n","<div class=\"ax-uploader-list-header\">\n  <div>{{ '@acorex:common.actions.uploading' | translate | async }}</div>\n  <div>\n    <i\n      class=\"ax-icon\"\n      [ngClass]=\"{ 'ax-icon-chevron-down': !isCollapsed, 'ax-icon-chevron-up': isCollapsed }\"\n      (click)=\"toggle()\"\n    ></i>\n    <i class=\"ax-icon ax-icon-close\" (click)=\"close()\"></i>\n  </div>\n</div>\n@if (isCollapsed) {\n  <div animate.enter=\"ax-fade-slide-in\" animate.leave=\"ax-fade-slide-out\">\n    <ax-uploader-list></ax-uploader-list>\n  </div>\n}\n","import { AXComponent, MXBaseComponent } from '@acorex/cdk/common';\nimport { AXDecoratorIconComponent } from '@acorex/components/decorators';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { Component, input, ViewEncapsulation } from '@angular/core';\n\n/**\n * A component that provides a drop zone area for uploading files.\n * @category Components\n */\n@Component({\n  selector: 'ax-uploader-drop-zone',\n  templateUrl: './uploader-drop-zone.component.html',\n  styleUrls: ['./uploader-drop-zone.component.css'],\n  encapsulation: ViewEncapsulation.None,\n  imports: [AXDecoratorIconComponent, AsyncPipe, AXTranslatorPipe],\n\n  providers: [{ provide: AXComponent, useExisting: AXUploaderDropZoneComponent }],\n})\nexport class AXUploaderDropZoneComponent extends MXBaseComponent {\n  /**\n   * Description text for the drop zone.\n   * @defaultValue ''\n   */\n  public description = input('');\n\n  /**\n   * Prevents page refresh on drag and drop operations.\n   * @returns false to prevent default refresh behavior\n   */\n  preventRefresh() {\n    return false;\n  }\n}\n","<div class=\"ax-uploader-drop-zone-container\">\n  <ax-icon class=\"ax-icon ax-icon-upload\"></ax-icon>\n  <div class=\"ax-uploader-drop-zone-description\">\n    <span>\n      {{ '@acorex:uploader.zone.drag' | translate | async }}\n      <a href=\"\" (click)=\"preventRefresh()\">\n        {{ '@acorex:uploader.zone.choose' | translate | async }}\n      </a>\n      {{ '@acorex:uploader.zone.to-upload' | translate | async }}\n    </span>\n    <!-- <p>SVG, PNG, JPG or GIF (MAX. 800x400px)</p> -->\n    @if (description()) {\n      <p>{{ description() }}</p>\n    }\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { AXUploaderListComponent } from '..';\nimport { AXUploaderDialogContainerComponent } from './uploader-dialog-container/uploader-dialog-container.component';\n\nconst COMPONENTS = [AXUploaderListComponent, AXUploaderDialogContainerComponent];\n\n@NgModule({\n  imports: [...COMPONENTS],\n  exports: [...COMPONENTS],\n  providers: [],\n})\nexport class AXUploaderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}