react-native-mathjax-html-to-svg
Version:
React Native component to display mathematics in html using MathJax. Uses [MathJax](https://github.com/mathjax/)
104 lines (95 loc) • 2.77 kB
JavaScript
(function () {
var MML = MathJax.ElementJax.mml;
MML.mbase.Augment({
toJSON: function () {
var m = this.data.length;
var json = {type: this.type};
if (this.inferred) json.inferred = true;
if (this.isToken) {
json.text = this.data.join("");
} else {
json.children = new Array(m);
for (var i = 0; i < m; i++) {
var child = this.data[i];
if (child) json.children[i] = child.toJSON();
}
}
this.jsonAddAttributes(json);
return json;
},
jsonAddAttributes: function (json) {
var defaults = (this.type === "mstyle" ? MML.math.prototype.defaults : this.defaults);
var names = (this.attrNames||MML.copyAttributeNames),
skip = MML.skipAttributes,
copy = MML.copyAttributes;
var attr = {};
if (!this.attrNames) {
for (var id in defaults) {
if (!skip[id] && !copy[id] && defaults.hasOwnProperty(id)) {
if (this[id] != null && this[id] !== defaults[id]) {
if (this.Get(id,null,1) !== this[id]) attr[id] = this[id];
}
}
}
}
for (var i = 0, m = names.length; i < m; i++) {
if (copy[names[i]] === 1 && !defaults.hasOwnProperty(names[i])) continue;
value = (this.attr||{})[names[i]];
if (value == null) value = this[names[i]];
if (value != null) attr[names[i]] = value;
}
json.attributes = attr;
}
});
MML.chars.Augment({
toJSON: function () {
return this.data.join("");
}
});
MML.entity.Augment({
toJSON: function () {
return this.data.join("");
}
});
MML.msubsup.Augment({
toJSON: function () {
var json = this.SUPER(arguments).toJSON.call(this);
if (this.data[this.sub] == null) {
json.type = "msup";
json.children.splice(1,1);
}
if (this.data[this.sup] == null) {
json.type = "msub";
json.children.splice(2,1);
}
return json;
}
});
MML.munderover.Augment({
toJSON: function () {
var json = this.SUPER(arguments).toJSON.call(this);
if (this.data[this.munder] == null) {
json.type = "mover";
json.children.splice(1,1);
}
if (this.data[this.mover] == null) {
json.type = "munder";
json.children.splice(2,1);
}
return json;
}
});
MML.TeXAtom.Augment({
toJSON: function () {
var json = this.SUPER(arguments).toJSON.call(this);
json.type = "mrow";
json.TeXAtom = MML.TEXCLASSNAMES[this.Get("texClass")];
return json;
}
});
MML.xml.Augment({
toJSON: function () {
return {type:"xml", data: this.toString()};
}
});
})();