renderFunctionForMobileJs top-level constant

String const renderFunctionForMobileJs

Implementation

const renderFunctionForMobileJs = r"""
    function render(data) {
        data = data.split("@@");

        katexElm.innerHTML = data[0];
        document.body.style.backgroundColor = data[1];
        captureOptions.backgroundColor = data[2];
        document.body.style.width = `${data[3]}px`;
        let fontSize = Number(data[4]);
        let isCenter = data[5] === "true";

        if(fontSize != null) {
            katexElm.style.fontSize = `${fontSize}px`;
        }
        if(isCenter) {
            katexElm.style.display = "inline-block";
            katexWrapperElm.style.textAlign = "center";
        }

        renderMathInElement(katexElm, KatexOptions);

        /*
        console.log(`(w, h) = (${katexWrapperElm.offsetWidth}, ${katexWrapperElm.offsetHeight})`);
        console.log(`(dw, dh) = (${document.body.offsetWidth}, ${document.body.offsetHeight})`);
        */

        /*
        html2canvas(katexWrapperElm, captureOptions).then(function(canvas) {
            const base64png = canvas.toDataURL();

            dart_captureFinished.postMessage(base64png, canvas.width, canvas.height);
        });
        */

        const katexWrapperElmStyle = window.getComputedStyle(katexWrapperElm);
        const width = parseFloat(katexWrapperElm.offsetWidth) + parseFloat(katexWrapperElmStyle.marginLeft) + parseFloat(katexWrapperElmStyle.marginRight);
        const height = parseFloat(katexWrapperElm.offsetHeight) + parseFloat(katexWrapperElmStyle.marginTop) + parseFloat(katexWrapperElmStyle.marginBottom);

        dart_katexRendered.postMessage(`${width},${height}`);
    }
""";