commit db3b0ef73117227dec277992f71cc3228c1620ee
parent d23f38412d9c85c2b81dd4564f84f5982a736143
Author: Davide P. Cervone <dpvc@union.edu>
Date: Sun, 14 Nov 2010 19:36:09 -0500
Allow jax files to be loaded in parallel rather than sequentially (need to synchronize output jax with modifications of element jax)
Diffstat:
5 files changed, 46 insertions(+), 11 deletions(-)
diff --git a/mathjax/unpacked/MathJax.js b/mathjax/unpacked/MathJax.js
@@ -29,7 +29,7 @@ if (document.getElementById && document.childNodes && document.createElement) {
if (!window.MathJax) {window.MathJax= {}}
if (!MathJax.Hub) { // skip if already loaded
-MathJax.version = "1.0.7";
+MathJax.version = "1.0.8";
/**********************************************************/
@@ -1684,12 +1684,33 @@ MathJax.Hub.Startup = {
/***********************************/
BASE.InputJax = JAX.Subclass({
+ elementJax: "mml", // the element jax to load for this input jax
+ Translate: function (element) {
+ // Make Translate produce an error message until the true one is loaded
+ this.constructor.prototype.Translate = this.noTranslate;
+ var queue = CALLBACK.Queue();
+ // Load any needed the element jax
+ var jax = this.elementJax; if (!(jax instanceof Array)) {jax = [jax]}
+ for (var i = 0, m = jax.length; i < m; i++) {
+ var file = BASE.ElementJax.directory+"/"+jax[i]+"/jax.js";
+ if (!this.require) {this.require = []}
+ else if (!(this.require instanceof Array)) {this.require = [this.require]};
+ this.require.push(file); // so Startup will wait for it to be loaded
+ queue.Push(AJAX.Require(file));
+ }
+ // Load the input jax
+ queue.Push(AJAX.Require(this.directory+"/jax.js"));
+ // Load the associated output jax
+ jax = HUB.config.outputJax["jax/"+jax[0]];
+ if (jax) {queue.Push(AJAX.Require(jax[0].directory+"/jax.js"))}
+ return queue.Push({});
+ },
Register: function (mimetype) {
if (!BASE.Hub.config.inputJax) {HUB.config.inputJax = {}}
HUB.config.inputJax[mimetype] = this;
}
},{
- version: "1.0",
+ version: "1.0.1",
directory: JAX.directory+"/input",
extensionDir: JAX.extensionDir
});
@@ -1704,10 +1725,14 @@ MathJax.Hub.Startup = {
if (!HUB.config.menuSettings.renderer) {HUB.config.menuSettings.renderer = this.id}
}
HUB.config.outputJax[mimetype].push(this);
+ // Make sure the element jax is loaded before Startup is called
+ if (!this.require) {this.require = []}
+ else if (!(this.require instanceof Array)) {this.require = [this.require]};
+ this.require.push(BASE.ElementJax.directory+"/"+(mimetype.split(/\//)[1])+"/jax.js");
},
Remove: function (jax) {}
},{
- version: "1.0",
+ version: "1.0.1",
directory: JAX.directory+"/output",
extensionDir: JAX.extensionDir,
fontDir: ROOT+(BASE.isPacked?"":"/..")+"/fonts"
diff --git a/mathjax/unpacked/jax/input/MathML/config.js b/mathjax/unpacked/jax/input/MathML/config.js
@@ -28,7 +28,6 @@ MathJax.InputJax.MathML = MathJax.InputJax({
directory: MathJax.InputJax.directory + "/MathML",
extensionDir: MathJax.InputJax.extensionDir + "/MathML",
entityDir: MathJax.InputJax.directory + "/MathML/entities",
- require: [MathJax.ElementJax.directory + "/mml/jax.js"],
config: {
useMathMLspacing: false // false means use TeX spacing, true means MML spacing
diff --git a/mathjax/unpacked/jax/input/TeX/config.js b/mathjax/unpacked/jax/input/TeX/config.js
@@ -27,7 +27,6 @@ MathJax.InputJax.TeX = MathJax.InputJax({
version: "1.0.3",
directory: MathJax.InputJax.directory + "/TeX",
extensionDir: MathJax.InputJax.extensionDir + "/TeX",
- require: [MathJax.ElementJax.directory + "/mml/jax.js"],
config: {
TagSide: "right",
diff --git a/mathjax/unpacked/jax/output/HTML-CSS/jax.js b/mathjax/unpacked/jax/output/HTML-CSS/jax.js
@@ -23,7 +23,9 @@
* limitations under the License.
*/
-(function (MML,AJAX,HUB,HTMLCSS) {
+
+(function (AJAX,HUB,HTMLCSS) {
+ var MML;
var FONTTEST = MathJax.Object.Subclass({
timeout: 5*1000, // timeout for loading web fonts
@@ -179,7 +181,6 @@
});
HTMLCSS.Augment({
-
config: {
useOldImageData: true, // for now
@@ -1138,6 +1139,10 @@
rfuzz: 0 // adjustment to rule placements in roots
});
+MathJax.Hub.Register.StartupHook("mml Jax Ready",function () {
+
+ MML = MathJax.ElementJax.mml;
+
MML.mbase.Augment({
toHTML: function (span) {
var split = this.HTMLlineBreaks();
@@ -2082,6 +2087,7 @@
return span;
}
});
+});
//
// Handle browser-specific setup
@@ -2210,4 +2216,4 @@
HTMLCSS.loadComplete("jax.js");
-})(MathJax.ElementJax.mml, MathJax.Ajax, MathJax.Hub, MathJax.OutputJax["HTML-CSS"]);
+})(MathJax.Ajax, MathJax.Hub, MathJax.OutputJax["HTML-CSS"]);
diff --git a/mathjax/unpacked/jax/output/NativeMML/jax.js b/mathjax/unpacked/jax/output/NativeMML/jax.js
@@ -22,8 +22,8 @@
* limitations under the License.
*/
-(function (MML,nMML,HUB,AJAX) {
- var isMSIE = HUB.Browser.isMSIE;
+(function (nMML,HUB,AJAX) {
+ var MML, isMSIE = HUB.Browser.isMSIE;
nMML.Augment({
LEFTBUTTON: (isMSIE ? 1 : 0), // the event.button value for left button
@@ -207,6 +207,10 @@
negativeveryverythickmathspace: "-.3889em"
}
});
+
+MathJax.Hub.Register.StartupHook("mml Jax Ready",function () {
+
+ MML = MathJax.ElementJax.mml;
MML.mbase.Augment({
//
@@ -435,9 +439,11 @@
});
});
+});
+
if (HUB.config.menuSettings.zoom !== "None")
{AJAX.Require("[MathJax]/extensions/MathZoom.js")}
nMML.loadComplete("jax.js");
-})(MathJax.ElementJax.mml, MathJax.OutputJax.NativeMML, MathJax.Hub, MathJax.Ajax);
+})(MathJax.OutputJax.NativeMML, MathJax.Hub, MathJax.Ajax);