Home Reference Source

js/ui/exec/exec-tio.js

import TIO from '~/models/TIO';
import Template, {TemplateType} from '~/template/Template';
import TIOExec from '~/controllers/TIOController/TIOExec';
import ErrorManager from '~/helpers/ErrorManager';
import {InvalidLanguage} from '~/models/Language';
import {filter, forEach} from '~/modern/array';

const TIO_EXEC_CLASS = 'exec-target';

// Create 'Run' button
let trigger = Template.fromText('\u25b6 Run', TemplateType.clone);
trigger.underlyingNode.classList.add('exec-float');

// Load TIO
TIO.shared.then(tio => {

    document.getElementsByClassName(TIO_EXEC_CLASS)
        ::filter(elem => elem.dataset.lang)
        ::forEach(elem => {
        try {
            // Create a controller for it
            const controller = new TIOExec(tio, elem, trigger);
        } catch (e) {
            if (e.id === InvalidLanguage) return;
            throw e;
        }
    });

}).catch(error => {
    ErrorManager.silent(error, 'Failed to initalize TIO execution.');
});