Fix inserting multiple media files via clipboard
[GitHub/WoltLab/WCF.git] / ts / WoltLabSuite / Core / Media / Data.ts
1 /**
2 * @author Matthias Schmidt
3 * @copyright 2001-2021 WoltLab GmbH
4 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
5 * @module WoltLabSuite/Core/Media/Data
6 */
7
8 import MediaUpload from "./Upload";
9 import { FileElements, UploadOptions } from "../Upload/Data";
10 import MediaEditor from "./Editor";
11 import MediaManager from "./Manager/Base";
12 import { RedactorEditor } from "../Ui/Redactor/Editor";
13 import { I18nValues } from "../Language/Input";
14
15 export interface Media {
16 altText: I18nValues | string;
17 caption: I18nValues | string;
18 categoryID: number;
19 elementTag: string;
20 captionEnableHtml: number;
21 filename: string;
22 formattedFilesize: string;
23 languageID: number | null;
24 isImage: number;
25 isMultilingual: number;
26 link: string;
27 mediaID: number;
28 smallThumbnailLink: string;
29 smallThumbnailType: string;
30 tinyThumbnailLink: string;
31 tinyThumbnailType: string;
32 title: I18nValues | string;
33 }
34
35 export interface MediaManagerOptions {
36 dialogTitle: string;
37 imagesOnly: boolean;
38 minSearchLength: number;
39 }
40
41 export const enum MediaInsertType {
42 Separate = "separate",
43 }
44
45 export interface MediaManagerEditorOptions extends MediaManagerOptions {
46 buttonClass?: string;
47 callbackInsert: (media: Map<number, Media>, insertType: MediaInsertType, thumbnailSize?: string) => void;
48 editor?: RedactorEditor;
49 }
50
51 export interface MediaManagerSelectOptions extends MediaManagerOptions {
52 buttonClass?: string;
53 }
54
55 export interface MediaEditorCallbackObject {
56 _editorClose?: () => void;
57 _editorSuccess?: (Media, number?) => void;
58 }
59
60 export interface MediaUploadSuccessEventData {
61 files: FileElements;
62 isMultiFileUpload: boolean;
63 media: Media[];
64 upload: MediaUpload;
65 uploadId: number;
66 }
67
68 export interface MediaUploadOptions extends UploadOptions {
69 elementTagSize: number;
70 mediaEditor?: MediaEditor;
71 mediaManager?: MediaManager;
72 }
73
74 export interface MediaListUploadOptions extends MediaUploadOptions {
75 categoryId?: number;
76 }
77
78 export interface MediaUploadAjaxResponseData {
79 returnValues: {
80 errors: MediaUploadError[];
81 media: Media[];
82 };
83 }
84
85 export interface MediaUploadError {
86 errorType: string;
87 filename: string;
88 }