import { Observable, Subject } from "rxjs"; import { ConfirmConfiguration, MultiLangData } from "../../interfaces"; import { MediaManagerComponent, MediaManagerError } from "./mediamanager.component"; export declare enum MediaManagerMediaType { IMAGE = "IMAGE", VIDEO = "VIDEO", AUDIO = "AUDIO", PDF = "PDF", OTHER = "OTHER" } export type ModuleOptionsLoaderFunction = (configuration: MediaManagerFullConfiguration) => Observable; export declare enum MediaManagerThumbnail { NONE = "NONE", SINGLE = "SINGLE", MULTIPLE = "MULTIPLE" } export declare enum MediaManagerThumbnailStatus { WAITING = "WAITING", DONE = "DONE", ERROR = "ERROR" } export interface MediaManagerMedia { guid: string; extension: string; originalFileName: string; userId: number | null; userFullname: string | null; uploadDate: string | Date; mediaType: MediaManagerMediaType; mimeType: string; width: number | null; height: number | null; duration: number | null; fileSize: number; public: boolean; title: MultiLangData; tags: MultiLangData; source: string; thumbnail: MediaManagerThumbnailStatus; updatedAt: string | Date; originalFileUrl: string; thumbnailUrls: string[]; touched: boolean; delete: boolean; file?: File | null; } export type MediaFiles = MediaManagerMedia[]; export interface MediaManagerOptions { extension: string; maxFileSize: number | null; minWidth: number | null; maxWidth: number | null; minHeight: number | null; maxHeight: number | null; minDuration: number | null; maxDuration: number | null; ratio: MediaManagerRatio | null; compressImage: boolean; thumbnail: MediaManagerThumbnail; thumbnailSize: number; } export interface MediaManagerRatio { width: number; height: number; } export interface MediaManager { module: string; allowedMimeTypes: string[]; allowedExtensions: string[]; maxFileCount: number | null; totalFileSize: number | null; tokenRequestedToDownload: boolean; permissionToDownload: string; options: { [key: string]: MediaManagerOptions; }; } export type MediaManagerConfiguration = Partial & ({ module: string; } | { mediaManager: MediaManager; }); export interface MediaManagerFullConfiguration { module: string | null; mediaManager: MediaManager | null; moduleOptionsLoader: ModuleOptionsLoaderFunction | null; width: string; height: string; videoMetadataLoadMaxWaitTime: number; audioMetadataLoadMaxWaitTime: number; displayStyle: 'list' | 'grid' | 'single'; changeStyleButtonVisible: boolean; errorDisplayMode: 'message' | 'dialog' | 'inner'; errorHandleMethod: 'stopatfirst' | 'skip' | 'stop'; disabled: boolean; languages: string[]; language: string; gridTemplateMinSize: string; gridTemplateMaxSize: string; autoPlayInPreview: boolean; deletable: boolean | ((params: MediaManagerDeleteCallbackParams) => boolean); deleteCallback: ((params: MediaManagerDeleteCallbackParams) => boolean | Subject | Observable) | null; deleteConfirm: boolean; deleteConfirmConfiguration: ConfirmConfiguration | null; showBorder: boolean; dropFilesAllowed: boolean; httpParams: { [key: string]: string | number | boolean; } | null; conditionalClasses: ((params: MediaManagerConfigurationConditionalClassesParams) => string[]) | string[] | null; } export type MediaManagerConfigurationConditionalClassesParams = { mediaManager: MediaManagerComponent; media: MediaManagerMedia; mode: 'list' | 'grid'; index: number; }; export type MediaManagerDeleteCallbackParams = { mediaManagerComponent: MediaManagerComponent; mediaManagerMedia: MediaManagerMedia; }; export type MediaUploadErros = { [key: string]: string; }; export declare enum MediaManagerErrorType { INVALID_CONFIGURATION = "INVALID_CONFIGURATION", EMPTY_FILE_LIST = "EMPTY_FILE_LIST", TYPE_NOT_SUPPORTED = "TYPE_NOT_SUPPORTED", NO_OPTIONS_FOUND = "NO_OPTIONS_FOUND", MAX_FILE_SIZE_EXCEEDED = "MAX_FILE_SIZE_EXCEEDED", MAX_FILE_SIZE_GLOBAL_EXCEEDED = "MAX_FILE_SIZE_GLOBAL_EXCEEDED", MAX_FILE_COUNT_EXCEEDED = "MAX_FILE_COUNT_EXCEEDED", VIDEO_INFO_CANNOT_BE_LOADED = "VIDEO_INFO_CANNOT_BE_LOADED", IMAGE_INFO_CANNOT_BE_LOADED = "IMAGE_INFO_CANNOT_BE_LOADED", AUDIO_INFO_CANNOT_BE_LOADED = "AUDIO_INFO_CANNOT_BE_LOADED", VIDEO_DURATION_TOO_LONG = "VIDEO_DURATION_TOO_LONG", VIDEO_DURATION_TOO_SHORT = "VIDEO_DURATION_TOO_SHORT", AUDIO_DURATION_TOO_LONG = "AUDIO_DURATION_TOO_LONG", AUDIO_DURATION_TOO_SHORT = "AUDIO_DURATION_TOO_SHORT", MEDIA_RATIO_NOT_EXPECTED = "MEDIA_RATIO_NOT_EXPECTED", MEDIA_WIDTH_TOO_WIDE = "MEDIA_WIDTH_TOO_WIDE", MEDIA_WIDTH_TOO_THIN = "MEDIA_WIDTH_TOO_THIN", MEDIA_HEIGHT_TOO_TALL = "MEDIA_HEIGHT_TOO_TALL", MEDIA_HEIGHT_TOO_LOW = "MEDIA_HEIGHT_TOO_LOW", INVALID_MEDIA_DIMENSIONS_WIDTH = "INVALID_MEDIA_DIMENSIONS_WIDTH", INVALID_MEDIA_DIMENSIONS_HEIGHT = "INVALID_MEDIA_DIMENSIONS_HEIGHT", INVALID_MEDIA_DIMENSIONS_DURATION = "INVALID_MEDIA_DIMENSIONS_DURATION", NOTHING_TO_UPLOAD = "NOTHING_TO_UPLOAD", ERROR_NOT_SET = "ERROR_NOT_SET" } export interface MediaManagerValidateFileResult { file: File; error: MediaManagerError | null; mediaType: MediaManagerMediaType | null; mediaInfo: MediaManagerMediaInfo | null; } export interface MediaManagerMediaInfo { width: number | null; height: number | null; duration: number | null; } export interface MediaManagerMediaAddProgress { total: number; error: number; }