Fix inserting multiple media files via clipboard
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / js / WoltLabSuite / Core / Acp / Ui / CodeMirror / Media.js
index 5c62c2d86cdc8566bfc43ee19fee132f4aefdee0..e4427a3b3cbe40cdaa9585339cb2150749d4c667 100644 (file)
@@ -1,33 +1,32 @@
-define(['WoltLabSuite/Core/Media/Manager/Editor'], function (MediaManagerEditor) {
+define(["require", "exports", "tslib", "../../../Media/Manager/Editor", "../../../Core"], function (require, exports, tslib_1, Editor_1, Core) {
     "use strict";
-    function AcpUiCodeMirrorMedia(elementId) { this.init(elementId); }
-    AcpUiCodeMirrorMedia.prototype = {
-        init: function (elementId) {
-            this._element = elById(elementId);
-            var button = elById('codemirror-' + elementId + '-media');
+    Editor_1 = tslib_1.__importDefault(Editor_1);
+    Core = tslib_1.__importStar(Core);
+    class AcpUiCodeMirrorMedia {
+        constructor(elementId) {
+            this.element = document.getElementById(elementId);
+            const button = document.getElementById(`codemirror-${elementId}-media`);
             button.classList.add(button.id);
-            new MediaManagerEditor({
+            new Editor_1.default({
                 buttonClass: button.id,
-                callbackInsert: this._insert.bind(this),
-                editor: null
+                callbackInsert: (media, insertType, thumbnailSize) => this.insert(media, insertType, thumbnailSize),
             });
-        },
-        _insert: function (mediaList, insertType, thumbnailSize) {
-            var content = '';
-            if (insertType === 'gallery') {
-                var mediaIds = [];
-                mediaList.forEach(function (item) {
-                    mediaIds.push(item.mediaID);
-                });
-                content = '{{ mediaGallery="' + mediaIds.join(',') + '" }}';
-            }
-            else {
-                mediaList.forEach(function (item) {
-                    content += '{{ media="' + item.mediaID + '" size="' + thumbnailSize + '" }}';
-                });
+        }
+        insert(mediaList, insertType, thumbnailSize) {
+            switch (insertType) {
+                case "separate" /* Separate */: {
+                    let sizeArgument = "";
+                    if (thumbnailSize) {
+                        sizeArgument = ` size="${thumbnailSize}"`;
+                    }
+                    const content = Array.from(mediaList.values())
+                        .map((item) => `{{ media="${item.mediaID}"${sizeArgument} }}`)
+                        .join("");
+                    this.element.codemirror.replaceSelection(content);
+                }
             }
-            this._element.codemirror.replaceSelection(content);
         }
-    };
+    }
+    Core.enableLegacyInheritance(AcpUiCodeMirrorMedia);
     return AcpUiCodeMirrorMedia;
 });