Merge branch '5.3'
[GitHub/WoltLab/WCF.git] / ts / WoltLabSuite / Core / Acp / Ui / CodeMirror / Media.ts
1 import { Media, MediaInsertType } from "../../../Media/Data";
2 import MediaManagerEditor from "../../../Media/Manager/Editor";
3 import * as Core from "../../../Core";
4
5 class AcpUiCodeMirrorMedia {
6 protected readonly element: HTMLElement;
7
8 constructor(elementId: string) {
9 this.element = document.getElementById(elementId) as HTMLElement;
10
11 const button = document.getElementById(`codemirror-${elementId}-media`)!;
12 button.classList.add(button.id);
13
14 new MediaManagerEditor({
15 buttonClass: button.id,
16 callbackInsert: (media, insertType, thumbnailSize) => this.insert(media, insertType, thumbnailSize),
17 });
18 }
19
20 protected insert(mediaList: Map<number, Media>, insertType: MediaInsertType, thumbnailSize: string): void {
21 switch (insertType) {
22 case MediaInsertType.Separate: {
23 const content = Array.from(mediaList.values())
24 .map((item) => `{{ media="${item.mediaID}" size="${thumbnailSize}" }}`)
25 .join("");
26
27 (this.element as any).codemirror.replaceSelection(content);
28 }
29 }
30 }
31 }
32
33 Core.enableLegacyInheritance(AcpUiCodeMirrorMedia);
34
35 export = AcpUiCodeMirrorMedia;