code-editor-container.ts

34 lines | 1.238 kB Blame History Raw Download
import { BaseElement } from "../../../shared/_base";
import { CodeEditor } from "../code-editor/code-editor";
import { ResizeHandle } from "../resize-handle/resize-handle";
import './code-editor-container.less';

export class CodeEditorContainer extends BaseElement {
    onInit(): void {
        var language = this.getAttribute("language");
        this.classList.add("flex-vert");
        if (language) {
            this.setHeader(language);
            this.createCodeEditor(language, this.getAttribute("dir")?.toLowerCase().indexOf("v") === 0 ? 'vertical' : 'horizontal');
        }
    }

    setHeader(title: string) {
        var div = document.createElement("div");
        div.classList.add("code-editor-header");
        div.classList.add("flex-shrink");
        div.innerText = title;

        this.appendChild(div);
    }

    createCodeEditor(language: string, expandDir: 'vertical' | 'horizontal') {
        var codeEditor = <CodeEditor>document.createElement("code-editor");
        codeEditor.setAttribute("language", language);
        var resizeHandle = <ResizeHandle>document.createElement("resize-handle");
        resizeHandle.setAttribute("dir", expandDir);

        this.appendChild(codeEditor);
        this.appendChild(resizeHandle);
    }
}