{"version":3,"file":"flowjs-ngx-flow.mjs","sources":["../../../projects/ngx-flow/src/lib/button.directive.ts","../../../projects/ngx-flow/src/lib/drop.directive.ts","../../../projects/ngx-flow/src/lib/src.directive.ts","../../../projects/ngx-flow/src/lib/flow-injection-token.ts","../../../projects/ngx-flow/src/lib/helpers/flow-file-to-transfer.ts","../../../projects/ngx-flow/src/lib/flow.directive.ts","../../../projects/ngx-flow/src/lib/ngx-flow.module.ts","../../../projects/ngx-flow/src/public-api.ts","../../../projects/ngx-flow/src/flowjs-ngx-flow.ts"],"sourcesContent":["import { Directive, ElementRef, inject, Input } from '@angular/core';\n\n@Directive({\n  selector: '[flowButton]'\n})\nexport class FlowButton {\n\n  protected el = inject(ElementRef);\n\n  protected _directoryOnly = false;\n  @Input()\n  set flowDirectoryOnly(directoriesOnly: boolean) {\n    this._directoryOnly = directoriesOnly;\n    this.setup();\n  }\n\n  protected _attributes?: object;\n  @Input()\n  set flowAttributes(attributes: object) {\n    this._attributes = attributes;\n    this.setup();\n  }\n\n  protected _flow?: flowjs.Flow;\n  @Input()\n  set flow(flow: flowjs.Flow) {\n    this._flow = flow;\n    this.setup();\n  }\n\n  setup() {\n    if (!this._flow) {\n      return;\n    }\n    this._flow.assignBrowse(\n      this.el.nativeElement,\n      this._directoryOnly,\n      this._flow.opts.singleFile,\n      this._attributes\n    );\n  }\n\n}\n","import { Directive, ElementRef, Input, OnInit, Renderer2, inject } from '@angular/core';\n\n@Directive({\n    selector: '[flowDrop]',\n    exportAs: 'flowDrop'\n})\nexport class FlowDrop implements OnInit {\n\n  protected el = inject(ElementRef);\n  protected renderer = inject(Renderer2);\n\n  protected flowJs?: flowjs.Flow;\n\n  @Input()\n  set flow(flow: flowjs.Flow) {\n    this.flowJs = flow;\n    if (!flow) {\n      return;\n    }\n    this.enable();\n  }\n\n  enable() {\n    this.flowJs?.assignDrop(this.el.nativeElement);\n  }\n\n  disable() {\n    this.flowJs?.unAssignDrop(this.el.nativeElement);\n  }\n\n  ngOnInit() {\n    this.renderer.listen('body', 'drop', (event) => event.preventDefault());\n    this.renderer.listen('body', 'dragover', (event) => event.preventDefault());\n  }\n}\n","import { Directive, ElementRef, inject, Input } from '@angular/core';\nimport { Transfer } from './transfer';\n\n@Directive({\n  selector: '[flowSrc]'\n})\nexport class FlowSrc {\n\n  private el = inject(ElementRef);\n\n  protected fileReader;\n\n  @Input()\n  set flowSrc(transfer: Transfer) {\n    this.fileReader = new FileReader();\n    this.fileReader.readAsDataURL(transfer.flowFile.file);\n    this.fileReader.onload = (event) => {\n      const url = event.target.result;\n      this.el.nativeElement.setAttribute('src', url);\n    };\n  }\n\n}\n","import { InjectionToken } from '@angular/core';\nimport { FlowConstructor } from './flow-constructor';\n\nexport const FlowInjectionToken = new InjectionToken<FlowConstructor>('Flow');\n","import { Transfer } from '../transfer';\n\nexport function flowFile2Transfer(flowFile: flowjs.FlowFile): Transfer {\n  return {\n    id: flowFile.uniqueIdentifier,\n    name: flowFile.name,\n    progress: flowFile.progress(),\n    averageSpeed: flowFile.averageSpeed,\n    currentSpeed: flowFile.currentSpeed,\n    size: flowFile.size,\n    paused: flowFile.paused,\n    error: flowFile.error,\n    complete: flowFile.isComplete(),\n    success: flowFile.isComplete() && !flowFile.error,\n    timeRemaining: flowFile.timeRemaining(),\n    flowFile\n  };\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, inject, Input, PLATFORM_ID } from '@angular/core';\nimport { fromEvent, merge, Observable, ReplaySubject, Subject } from 'rxjs';\nimport { JQueryStyleEventEmitter } from 'rxjs/internal/observable/fromEvent';\nimport { map, shareReplay, startWith, switchMap } from 'rxjs/operators';\nimport { FlowInjectionToken } from './flow-injection-token';\nimport { flowFile2Transfer } from './helpers/flow-file-to-transfer';\nimport { Transfer } from './transfer';\nimport { UploadState } from './upload-state';\n\nexport interface FlowChangeEvent<T extends flowjs.EventName> {\n  type: T;\n  event: flowjs.FlowEventFromEventName<T>;\n}\n\nexport interface NgxFlowEvent {\n  type: 'pauseOrResume' | 'newFlowJsInstance';\n}\n\n@Directive({\n  selector: '[flowConfig]',\n  exportAs: 'flow'\n})\nexport class FlowConfig {\n\n  protected flowConstructor = inject(FlowInjectionToken);\n  protected platform = inject(PLATFORM_ID);\n\n  @Input()\n  set flowConfig(options: flowjs.FlowOptions) {\n    if (isPlatformBrowser(this.platform)) {\n      this.flowJs = new this.flowConstructor(options);\n      this.flow$.next(this.flowJs);\n    }\n  }\n\n  flowJs!: flowjs.Flow;\n\n  protected flow$ = new ReplaySubject<flowjs.Flow>(1);\n\n  pauseOrResumeEvent$ = new Subject<void>();\n\n  events$ = this.flow$.pipe(\n    switchMap((flow) => merge(this.flowEvents(flow), this.ngxFlowEvents()))\n  );\n\n  transfers$: Observable<UploadState> = this.events$.pipe(\n    map(() => this.flowJs.files),\n    map((files: flowjs.FlowFile[] = []) => ({\n      transfers: files.map((flowFile) => flowFile2Transfer(flowFile)),\n      flow: this.flowJs,\n      totalProgress: this.flowJs.progress(),\n    })),\n    shareReplay(1)\n  );\n\n  somethingToUpload$ = this.transfers$.pipe(\n    map(\n      (state) => state.transfers.some((file) => !file.success),\n      startWith(false)\n    )\n  );\n\n  private flowEvents(\n    flow: flowjs.Flow\n  ): Observable<FlowChangeEvent<flowjs.EventName>> {\n    const events = [\n      this.listenForEvent(flow, 'fileSuccess'),\n      this.listenForEvent(flow, 'fileProgress'),\n      this.listenForEvent(flow, 'fileAdded'),\n      this.listenForEvent(flow, 'filesAdded'),\n      this.listenForEvent(flow, 'filesSubmitted'),\n      this.listenForEvent(flow, 'fileRemoved'),\n      this.listenForEvent(flow, 'fileRetry'),\n      this.listenForEvent(flow, 'fileError'),\n      this.listenForEvent(flow, 'uploadStart'),\n      this.listenForEvent(flow, 'complete'),\n      this.listenForEvent(flow, 'progress'),\n    ];\n    return merge(...events);\n  }\n\n  private ngxFlowEvents(): Observable<NgxFlowEvent> {\n    const pauseOrResumeEvent$ = this.pauseOrResumeEvent$.pipe(\n      map(() => ({\n        type: 'pauseOrResume',\n      } as NgxFlowEvent))\n    );\n    const newFlowInstanceEvent$ = this.flow$.pipe(\n      map(() => ({\n        type: 'newFlowJsInstance',\n      } as NgxFlowEvent)\n      ));\n    const events = [pauseOrResumeEvent$, newFlowInstanceEvent$];\n    return merge(...events);\n  }\n\n  upload(): void {\n    this.flowJs.upload();\n  }\n\n  cancel(): void {\n    this.flowJs.cancel();\n  }\n\n  cancelFile(file: Transfer): void {\n    file.flowFile.cancel();\n  }\n\n  pauseFile(file: Transfer): void {\n    file.flowFile.pause();\n    this.pauseOrResumeEvent$.next();\n  }\n\n  resumeFile(file: Transfer): void {\n    file.flowFile.resume();\n    this.pauseOrResumeEvent$.next();\n  }\n\n  protected listenForEvent<T extends flowjs.EventName, R extends flowjs.FlowEventFromEventName<T>>(\n    flow: flowjs.Flow,\n    eventName: T\n  ): Observable<{ type: T; event: R; }> {\n    return fromEvent<R>(\n      flow as JQueryStyleEventEmitter<any, R>,\n      eventName\n    ).pipe(\n      map((args) => ({\n        type: eventName,\n        event: args,\n      }))\n    );\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { FlowButton } from './button.directive';\nimport { FlowDrop } from './drop.directive';\nimport { FlowConfig } from './flow.directive';\nimport { FlowSrc } from './src.directive';\n\nconst directives = [\n  FlowButton,\n  FlowSrc,\n  FlowDrop,\n  FlowConfig,\n];\n\n@NgModule({\n  imports: [...directives],\n  exports: directives,\n})\nexport class NgxFlowModule { }\n","/*\n * Public API Surface of ngx-flow\n */\nexport * from './lib/button.directive';\nexport * from './lib/drop.directive';\nexport * from './lib/src.directive';\nexport * from './lib/flow.directive';\nexport * from './lib/upload-state';\nexport * from './lib/transfer';\nexport * from './lib/flow-injection-token';\nexport * from './lib/ngx-flow.module';\nexport * from './lib/flow-constructor';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}