make mathjax working with the editor
This commit is contained in:
11
common/static/js/vendor/Markdown.Editor.js
vendored
11
common/static/js/vendor/Markdown.Editor.js
vendored
@@ -54,7 +54,7 @@
|
||||
idPostfix = idPostfix || "";
|
||||
|
||||
var hooks = this.hooks = new Markdown.HookCollection();
|
||||
hooks.addNoop("onPreviewRefresh"); // called with no arguments after the preview has been refreshed
|
||||
hooks.addNoop("onPreviewPush"); // called with no arguments after the preview has been refreshed
|
||||
hooks.addNoop("postBlockquoteCreation"); // called with the user's selection *after* the blockquote was created; should return the actual to-be-inserted text
|
||||
hooks.addFalse("insertImageDialog"); /* called with one parameter: a callback to be called with the URL of the image. If the application creates
|
||||
* its own image insertion dialog, this hook should return true, and the callback should be called with the chosen
|
||||
@@ -72,7 +72,7 @@
|
||||
|
||||
panels = new PanelCollection(idPostfix);
|
||||
var commandManager = new CommandManager(hooks);
|
||||
var previewManager = new PreviewManager(markdownConverter, panels, function () { hooks.onPreviewRefresh(); });
|
||||
var previewManager = new PreviewManager(markdownConverter, panels, function (text, previewSet) { hooks.onPreviewPush(text, previewSet); });
|
||||
var undoManager, uiManager;
|
||||
|
||||
if (!/\?noundo/.test(doc.location.href)) {
|
||||
@@ -769,7 +769,7 @@
|
||||
this.init();
|
||||
};
|
||||
|
||||
function PreviewManager(converter, panels, previewRefreshCallback) {
|
||||
function PreviewManager(converter, panels, previewPushCallback) {
|
||||
|
||||
var managerObj = this;
|
||||
var timeout;
|
||||
@@ -928,8 +928,7 @@
|
||||
var emptyTop = position.getTop(panels.input) - getDocScrollTop();
|
||||
|
||||
if (panels.preview) {
|
||||
previewSet(text);
|
||||
previewRefreshCallback();
|
||||
previewPushCallback(text, previewSet);
|
||||
}
|
||||
|
||||
setPanelScrollTops();
|
||||
@@ -2157,4 +2156,4 @@
|
||||
}
|
||||
|
||||
|
||||
})();
|
||||
})();
|
||||
|
||||
118
common/static/js/vendor/split.js
vendored
Normal file
118
common/static/js/vendor/split.js
vendored
Normal file
@@ -0,0 +1,118 @@
|
||||
/*!
|
||||
* Cross-Browser Split 1.1.1
|
||||
* Copyright 2007-2012 Steven Levithan <stevenlevithan.com>
|
||||
* Available under the MIT License
|
||||
* ECMAScript compliant, uniform cross-browser split method
|
||||
*/
|
||||
|
||||
/**
|
||||
* Splits a string into an array of strings using a regex or string separator. Matches of the
|
||||
* separator are not included in the result array. However, if `separator` is a regex that contains
|
||||
* capturing groups, backreferences are spliced into the result each time `separator` is matched.
|
||||
* Fixes browser bugs compared to the native `String.prototype.split` and can be used reliably
|
||||
* cross-browser.
|
||||
* @param {String} str String to split.
|
||||
* @param {RegExp|String} separator Regex or string to use for separating the string.
|
||||
* @param {Number} [limit] Maximum number of items to include in the result array.
|
||||
* @returns {Array} Array of substrings.
|
||||
* @example
|
||||
*
|
||||
* // Basic use
|
||||
* split('a b c d', ' ');
|
||||
* // -> ['a', 'b', 'c', 'd']
|
||||
*
|
||||
* // With limit
|
||||
* split('a b c d', ' ', 2);
|
||||
* // -> ['a', 'b']
|
||||
*
|
||||
* // Backreferences in result array
|
||||
* split('..word1 word2..', /([a-z]+)(\d+)/i);
|
||||
* // -> ['..', 'word', '1', ' ', 'word', '2', '..']
|
||||
*/
|
||||
|
||||
var _split; // instead of split for a less common name; avoid conflict
|
||||
|
||||
// Avoid running twice; that would break the `nativeSplit` reference
|
||||
_split = _split || function (undef) {
|
||||
|
||||
var nativeSplit = String.prototype.split,
|
||||
compliantExecNpcg = /()??/.exec("")[1] === undef, // NPCG: nonparticipating capturing group
|
||||
self;
|
||||
|
||||
self = function (str, separator, limit) {
|
||||
// If `separator` is not a regex, use `nativeSplit`
|
||||
if (Object.prototype.toString.call(separator) !== "[object RegExp]") {
|
||||
return nativeSplit.call(str, separator, limit);
|
||||
}
|
||||
var output = [],
|
||||
flags = (separator.ignoreCase ? "i" : "") +
|
||||
(separator.multiline ? "m" : "") +
|
||||
(separator.extended ? "x" : "") + // Proposed for ES6
|
||||
(separator.sticky ? "y" : ""), // Firefox 3+
|
||||
lastLastIndex = 0,
|
||||
// Make `global` and avoid `lastIndex` issues by working with a copy
|
||||
separator = new RegExp(separator.source, flags + "g"),
|
||||
separator2, match, lastIndex, lastLength;
|
||||
str += ""; // Type-convert
|
||||
if (!compliantExecNpcg) {
|
||||
// Doesn't need flags gy, but they don't hurt
|
||||
separator2 = new RegExp("^" + separator.source + "$(?!\\s)", flags);
|
||||
}
|
||||
/* Values for `limit`, per the spec:
|
||||
* If undefined: 4294967295 // Math.pow(2, 32) - 1
|
||||
* If 0, Infinity, or NaN: 0
|
||||
* If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296;
|
||||
* If negative number: 4294967296 - Math.floor(Math.abs(limit))
|
||||
* If other: Type-convert, then use the above rules
|
||||
*/
|
||||
limit = limit === undef ?
|
||||
-1 >>> 0 : // Math.pow(2, 32) - 1
|
||||
limit >>> 0; // ToUint32(limit)
|
||||
while (match = separator.exec(str)) {
|
||||
// `separator.lastIndex` is not reliable cross-browser
|
||||
lastIndex = match.index + match[0].length;
|
||||
if (lastIndex > lastLastIndex) {
|
||||
output.push(str.slice(lastLastIndex, match.index));
|
||||
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
||||
// nonparticipating capturing groups
|
||||
if (!compliantExecNpcg && match.length > 1) {
|
||||
match[0].replace(separator2, function () {
|
||||
for (var i = 1; i < arguments.length - 2; i++) {
|
||||
if (arguments[i] === undef) {
|
||||
match[i] = undef;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
if (match.length > 1 && match.index < str.length) {
|
||||
Array.prototype.push.apply(output, match.slice(1));
|
||||
}
|
||||
lastLength = match[0].length;
|
||||
lastLastIndex = lastIndex;
|
||||
if (output.length >= limit) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (separator.lastIndex === match.index) {
|
||||
separator.lastIndex++; // Avoid an infinite loop
|
||||
}
|
||||
}
|
||||
if (lastLastIndex === str.length) {
|
||||
if (lastLength || !separator.test("")) {
|
||||
output.push("");
|
||||
}
|
||||
} else {
|
||||
output.push(str.slice(lastLastIndex));
|
||||
}
|
||||
return output.length > limit ? output.slice(0, limit) : output;
|
||||
};
|
||||
|
||||
// For convenience
|
||||
String.prototype.split = function (separator, limit) {
|
||||
return self(this, separator, limit);
|
||||
};
|
||||
|
||||
return self;
|
||||
|
||||
}();
|
||||
|
||||
Reference in New Issue
Block a user