elninotech/uppload

View on GitHub
src/helpers/interfaces.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { Uppload, UpploadEffect, UpploadService } from "../";

export type IElements = string | string[] | Element | Element[];

export type ITranslator = (key: string, params?: string | string[]) => string;
export interface IUppload {
  services: UpploadService[];
  effects: UpploadEffect[];
  isOpen: boolean;
  error?: string;
  activeService: string;
  activeEffect: string;
  settings: IUpploadSettings;
  container: HTMLDivElement;
}

export interface IUpploadSettings {
  value?: string;
  bind?: IElements;
  call?: IElements;
  defaultService?: string;
  lang?: ILanguage;
  uploader?: IUploader;
  inline?: boolean;
  customClass?: string;
  multiple?: boolean;
  compression?: number;
  compressionToMime?: string;
  compressionFromMimes?: string[];
  maxWidth?: number;
  maxHeight?: number;
  maxSize?: [number, number];
  compressor?: (file: Blob) => Promise<Blob>;
  transitionDuration?: number;
  disableModalClickClose?: boolean;
}

export interface IHandlersParams {
  upload: (file: Blob) => Promise<string>;
  uploadMultiple: (file: Blob[]) => Promise<string>;
  next: (file: IUpploadFile) => void;
  showHelp: (url: string) => void;
  handle: (error: any) => void;
  uppload: Uppload;
  translate: ITranslator;
}

export interface ITemplateParams {
  file: IUpploadFile;
  translate: ITranslator;
}
export interface IServiceTemplateParams {
  uppload: Uppload;
  translate: ITranslator;
}

export type IUploader = (
  file: Blob,
  updateProgress?: (progress: number) => void
) => Promise<string>;

export type IMultipleUploader = (
  file: Blob[],
  updateProgress?: (progress: number) => void
) => Promise<string>;

export type ILanguageHelper = (text: string) => string;

export interface ILanguage {
  [index: string]: string | ILanguage | ILanguageHelper | any;
}

export interface IUpploadFile {
  blob: Blob;
  name?: string;
  type?: string;
  size?: number;
  lastModified?: Date;
}

export type IUpploadPlugins =
  | UpploadService[]
  | UpploadEffect[]
  | (UpploadService | UpploadEffect)[];

export type IPluginUpdateFunction = (
  plugins: IUpploadPlugins
) => IUpploadPlugins;