Add media-related TypeScript interfaces
authorMatthias Schmidt <gravatronics@live.com>
Tue, 5 Jan 2021 17:43:55 +0000 (18:43 +0100)
committerMatthias Schmidt <gravatronics@live.com>
Tue, 5 Jan 2021 17:43:55 +0000 (18:43 +0100)
wcfsetup/install/files/js/WoltLabSuite/Core/Media/Data.js [new file with mode: 0644]
wcfsetup/install/files/ts/WoltLabSuite/Core/Media/Data.ts [new file with mode: 0644]

diff --git a/wcfsetup/install/files/js/WoltLabSuite/Core/Media/Data.js b/wcfsetup/install/files/js/WoltLabSuite/Core/Media/Data.js
new file mode 100644 (file)
index 0000000..b868c61
--- /dev/null
@@ -0,0 +1,10 @@
+/**
+ * @author  Matthias Schmidt
+ * @copyright 2001-2021 WoltLab GmbH
+ * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @module  WoltLabSuite/Core/Media/Data
+ */
+define(["require", "exports"], function (require, exports) {
+    "use strict";
+    Object.defineProperty(exports, "__esModule", { value: true });
+});
diff --git a/wcfsetup/install/files/ts/WoltLabSuite/Core/Media/Data.ts b/wcfsetup/install/files/ts/WoltLabSuite/Core/Media/Data.ts
new file mode 100644 (file)
index 0000000..4f0bf9d
--- /dev/null
@@ -0,0 +1,84 @@
+/**
+ * @author  Matthias Schmidt
+ * @copyright 2001-2021 WoltLab GmbH
+ * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @module  WoltLabSuite/Core/Media/Data
+ */
+
+import MediaUpload from "./Upload";
+import { FileElements, UploadOptions } from "../Upload/Data";
+import MediaEditor from "./Editor";
+import MediaManager from "./Manager/Base";
+import { RedactorEditor } from "../Ui/Redactor/Editor";
+import { I18nValues } from "../Language/Input";
+
+export interface Media {
+  altText: I18nValues | string;
+  caption: I18nValues | string;
+  categoryID: number;
+  elementTag: string;
+  captionEnableHtml: number;
+  filename: string;
+  formattedFilesize: string;
+  languageID: number | null;
+  isImage: number;
+  isMultilingual: number;
+  link: string;
+  mediaID: number;
+  smallThumbnailLink: string;
+  smallThumbnailType: string;
+  tinyThumbnailLink: string;
+  tinyThumbnailType: string;
+  title: I18nValues | string;
+}
+
+export interface MediaManagerOptions {
+  dialogTitle: string;
+  imagesOnly: boolean;
+  minSearchLength: number;
+}
+
+export interface MediaManagerEditorOptions extends MediaManagerOptions {
+  buttonClass?: string;
+  callbackInsert: (media: Map<number, Media>, insertType: string, thumbnailSize: string) => void;
+  editor?: RedactorEditor;
+}
+
+export interface MediaManagerSelectOptions extends MediaManagerOptions {
+  buttonClass?: string;
+}
+
+export interface MediaEditorCallbackObject {
+  _editorClose?: () => void;
+  _editorSuccess?: (Media, number?) => void;
+}
+
+export interface MediaUploadSuccessEventData {
+  files: FileElements;
+  isMultiFileUpload: boolean;
+  media: Media[];
+  upload: MediaUpload;
+  uploadId: number;
+}
+
+export interface MediaUploadOptions extends UploadOptions {
+  elementTagSize: number;
+  mediaEditor?: MediaEditor;
+  mediaManager?: MediaManager;
+}
+
+export interface MediaListUploadOptions extends MediaUploadOptions {
+  categoryId?: number;
+}
+
+export interface MediaUploadAjaxResponseData {
+  returnValues: {
+    errors: MediaUploadError[];
+    media: Media[];
+  };
+}
+
+export interface MediaUploadError {
+  errorType: string;
+  filename: string;
+}