RSS Git Download  Clone
Raw Blame History
$(() => {
    const $fragmentFilePanel = $('.p3x-gitlist-file-fragment-panel')
    if ($fragmentFilePanel.length > 0) {

        let $buttonToggleCodeMirrorCurrent;
        let $textareaCurrent;
        let $textCurrent

        for(let fragmentFile of $fragmentFilePanel) {
            const index = fragmentFile.dataset.index
            const $buttonToggleCodeMirror = $(`#p3x-gitlilst-file-fragment-heading-button-codemirror-${ index }`)
            const $text = $(`#p3x-gitlist-file-fragment-text-${ index }`)
            const $textarea = $(`#p3x-gitlist-file-fragment-codemirror-${ index }`)

            const $buttonEditor = $(`#p3x-gitlilst-file-fragment-heading-button-edit-${ index}`)
            if ($buttonEditor.length > 0) {
                $buttonEditor.on('click', function(event) {
                   const url = $buttonEditor.get(0).dataset.url
                   location = url;
                })

            }

            $buttonToggleCodeMirror.on('click', function(event) {
                if ($buttonToggleCodeMirrorCurrent !== undefined) {
                    $('.CodeMirror-wrap').remove()
                    const wasActive = $buttonToggleCodeMirror.hasClass('active')
                    window.gitlist.fragmentFileCodeMirror = undefined
                    $buttonToggleCodeMirrorCurrent.removeClass('active')
                    $textCurrent.removeClass('hidden')
                    $textareaCurrent.addClass('hidden')
                    if (wasActive) {
                        return;
                    }
                }

                $buttonToggleCodeMirrorCurrent = $buttonToggleCodeMirror
                $textCurrent = $text;
                $textareaCurrent = $textarea;
                $text.addClass('hidden');
                $textarea.removeClass('hidden')
                $buttonToggleCodeMirror.addClass('active')

                const cm  = CodeMirror.fromTextArea($textarea.get(0), {
                    styleActiveLine: true,
                    styleSelectedText: true,
                    value: fragmentFile.value,
                    lineNumbers: true,
                    matchBrackets: true,
                    lineWrapping: true,
                    readOnly: true,
                    height: 'auto',
                    mode: fragmentFile.dataset.mode,
                    theme: window.gitlist.getActualThemeCodemirror(),
                });
                window.gitlist.fragmentFileCodeMirror = cm
            })
        }

    }
})