// Once generated by CoffeeScript 1.9.3, but now lives as pure JS /* eslint-disable */ // TODO: Examine all of the xss-lint exceptions (https://openedx.atlassian.net/browse/PLAT-2084) (function() { var getTime; getTime = function() { return new Date().getTime(); }; this.MathJaxDelayRenderer = (function() { var bufferId, numBuffers; MathJaxDelayRenderer.prototype.maxDelay = 3000; MathJaxDelayRenderer.prototype.mathjaxRunning = false; MathJaxDelayRenderer.prototype.elapsedTime = 0; MathJaxDelayRenderer.prototype.mathjaxDelay = 0; MathJaxDelayRenderer.prototype.mathjaxTimeout = void 0; bufferId = "mathjax_delay_buffer"; numBuffers = 0; function MathJaxDelayRenderer(params) { params = params || {}; this.maxDelay = params["maxDelay"] || this.maxDelay; this.bufferId = params["bufferId"] || (bufferId + numBuffers); numBuffers += 1; this.$buffer = $("
").attr("id", this.bufferId).css("display", "none").appendTo($("body")); // xss-lint: disable=javascript-jquery-insert-into-target } /* render: (params) -> params: elem: jquery element to be rendered text: text to be rendered & put into the element; if blank, then just render the current text in the element preprocessor: pre-process the text before rendering using MathJax if text is blank, it will pre-process the html in the element previewSetter: if provided, will pass text back to it instead of directly setting the element */ MathJaxDelayRenderer.prototype.render = function(params) { var delay, elem, preprocessor, previewSetter, renderer, text; elem = params["element"]; previewSetter = params["previewSetter"]; text = params["text"]; if (text == null) { text = $(elem).html(); } preprocessor = params["preprocessor"]; if (params["delay"] === false) { if (preprocessor != null) { text = preprocessor(text); } $(elem).html(text); // xss-lint: disable=javascript-jquery-html return MathJax.Hub.Queue(["Typeset", MathJax.Hub, $(elem).attr("id")]); } else { if (this.mathjaxTimeout) { window.clearTimeout(this.mathjaxTimeout); this.mathjaxTimeout = void 0; } delay = Math.min(this.elapsedTime + this.mathjaxDelay, this.maxDelay); renderer = (function(_this) { return function() { var curTime, prevTime; if (_this.mathjaxRunning) { return; } prevTime = getTime(); if (preprocessor != null) { text = preprocessor(text); } _this.$buffer.html(text); // xss-lint: disable=javascript-jquery-html curTime = getTime(); _this.elapsedTime = curTime - prevTime; if (typeof MathJax !== "undefined" && MathJax !== null) { prevTime = getTime(); _this.mathjaxRunning = true; return MathJax.Hub.Queue(["Typeset", MathJax.Hub, _this.$buffer.attr("id")], function() { _this.mathjaxRunning = false; curTime = getTime(); _this.mathjaxDelay = curTime - prevTime; if (previewSetter) { return previewSetter($(_this.$buffer).html()); } else { return $(elem).html($(_this.$buffer).html()); // xss-lint: disable=javascript-jquery-html } }); } else { return _this.mathjaxDelay = 0; } }; })(this); return this.mathjaxTimeout = window.setTimeout(renderer, delay); } }; return MathJaxDelayRenderer; })(); }).call(this);