@pie-lib/math-rendering-accessible 3.22.2-next.11 → 3.22.2-next.171
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -59
- package/esm/index.js +57 -88
- package/esm/index.js.map +1 -1
- package/lib/index.js +0 -4
- package/lib/index.js.map +1 -1
- package/lib/mathjax-script.js.map +1 -1
- package/lib/mml-to-latex.js +1 -5
- package/lib/mml-to-latex.js.map +1 -1
- package/lib/mstack/chtml.js +21 -87
- package/lib/mstack/chtml.js.map +1 -1
- package/lib/mstack/index.js +2 -7
- package/lib/mstack/index.js.map +1 -1
- package/lib/mstack/mml.js +19 -60
- package/lib/mstack/mml.js.map +1 -1
- package/lib/normalization.js +7 -34
- package/lib/normalization.js.map +1 -1
- package/lib/render-math.js +60 -100
- package/lib/render-math.js.map +1 -1
- package/package.json +4 -4
- package/src/__tests__/render-math.test.js +3 -3
- package/src/mstack/__tests__/chtml.test.js +5 -1
- package/src/render-math.js +16 -5
- package/src/mstack/__tests__/__snapshots__/chtml.test.js.snap +0 -9
package/lib/normalization.js
CHANGED
|
@@ -1,95 +1,68 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.wrapMath = exports.unWrapMath = exports.BracketTypes = void 0;
|
|
9
|
-
|
|
10
8
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
-
|
|
12
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
-
|
|
14
|
-
var _PAIRS;
|
|
15
|
-
|
|
16
|
-
var BracketTypes = {};
|
|
17
|
-
exports.BracketTypes = BracketTypes;
|
|
10
|
+
var BracketTypes = exports.BracketTypes = {};
|
|
18
11
|
BracketTypes.ROUND_BRACKETS = 'round_brackets';
|
|
19
12
|
BracketTypes.SQUARE_BRACKETS = 'square_brackets';
|
|
20
13
|
BracketTypes.DOLLAR = 'dollar';
|
|
21
14
|
BracketTypes.DOUBLE_DOLLAR = 'double_dollar';
|
|
22
|
-
var PAIRS = (
|
|
23
|
-
|
|
24
|
-
var wrapMath = function wrapMath(content, wrapType) {
|
|
15
|
+
var PAIRS = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, BracketTypes.ROUND_BRACKETS, ['\\(', '\\)']), BracketTypes.SQUARE_BRACKETS, ['\\[', '\\]']), BracketTypes.DOLLAR, ['$', '$']), BracketTypes.DOUBLE_DOLLAR, ['$$', '$$']);
|
|
16
|
+
var wrapMath = exports.wrapMath = function wrapMath(content, wrapType) {
|
|
25
17
|
if (wrapType === BracketTypes.SQUARE_BRACKETS) {
|
|
26
18
|
console.warn('\\[...\\] is not supported yet'); // eslint-disable-line
|
|
27
|
-
|
|
28
19
|
wrapType = BracketTypes.ROUND_BRACKETS;
|
|
29
20
|
}
|
|
30
|
-
|
|
31
21
|
if (wrapType === BracketTypes.DOUBLE_DOLLAR) {
|
|
32
22
|
console.warn('$$...$$ is not supported yet'); // eslint-disable-line
|
|
33
|
-
|
|
34
23
|
wrapType = BracketTypes.DOLLAR;
|
|
35
24
|
}
|
|
36
|
-
|
|
37
25
|
var _ref = PAIRS[wrapType] || PAIRS[BracketTypes.ROUND_BRACKETS],
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
26
|
+
_ref2 = (0, _slicedToArray2["default"])(_ref, 2),
|
|
27
|
+
start = _ref2[0],
|
|
28
|
+
end = _ref2[1];
|
|
42
29
|
return "".concat(start).concat(content).concat(end);
|
|
43
30
|
};
|
|
44
|
-
|
|
45
|
-
exports.wrapMath = wrapMath;
|
|
46
|
-
|
|
47
|
-
var unWrapMath = function unWrapMath(content) {
|
|
31
|
+
var unWrapMath = exports.unWrapMath = function unWrapMath(content) {
|
|
48
32
|
var displayStyleIndex = content.indexOf('\\displaystyle');
|
|
49
|
-
|
|
50
33
|
if (displayStyleIndex !== -1) {
|
|
51
34
|
console.warn('\\displaystyle is not supported - removing'); // eslint-disable-line
|
|
52
|
-
|
|
53
35
|
content = content.replace('\\displaystyle', '').trim();
|
|
54
36
|
}
|
|
55
|
-
|
|
56
37
|
if (content.startsWith('$$') && content.endsWith('$$')) {
|
|
57
38
|
console.warn('$$ syntax is not yet supported'); // eslint-disable-line
|
|
58
|
-
|
|
59
39
|
return {
|
|
60
40
|
unwrapped: content.substring(2, content.length - 2),
|
|
61
41
|
wrapType: BracketTypes.DOLLAR
|
|
62
42
|
};
|
|
63
43
|
}
|
|
64
|
-
|
|
65
44
|
if (content.startsWith('$') && content.endsWith('$')) {
|
|
66
45
|
return {
|
|
67
46
|
unwrapped: content.substring(1, content.length - 1),
|
|
68
47
|
wrapType: BracketTypes.DOLLAR
|
|
69
48
|
};
|
|
70
49
|
}
|
|
71
|
-
|
|
72
50
|
if (content.startsWith('\\[') && content.endsWith('\\]')) {
|
|
73
51
|
console.warn('\\[..\\] syntax is not yet supported'); // eslint-disable-line
|
|
74
|
-
|
|
75
52
|
return {
|
|
76
53
|
unwrapped: content.substring(2, content.length - 2),
|
|
77
54
|
wrapType: BracketTypes.ROUND_BRACKETS
|
|
78
55
|
};
|
|
79
56
|
}
|
|
80
|
-
|
|
81
57
|
if (content.startsWith('\\(') && content.endsWith('\\)')) {
|
|
82
58
|
return {
|
|
83
59
|
unwrapped: content.substring(2, content.length - 2),
|
|
84
60
|
wrapType: BracketTypes.ROUND_BRACKETS
|
|
85
61
|
};
|
|
86
62
|
}
|
|
87
|
-
|
|
88
63
|
return {
|
|
89
64
|
unwrapped: content,
|
|
90
65
|
wrapType: BracketTypes.ROUND_BRACKETS
|
|
91
66
|
};
|
|
92
67
|
};
|
|
93
|
-
|
|
94
|
-
exports.unWrapMath = unWrapMath;
|
|
95
68
|
//# sourceMappingURL=normalization.js.map
|
package/lib/normalization.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"normalization.js","names":["BracketTypes","exports","ROUND_BRACKETS","SQUARE_BRACKETS","DOLLAR","DOUBLE_DOLLAR","PAIRS","_defineProperty2","wrapMath","content","wrapType","console","warn","_ref","_ref2","_slicedToArray2","start","end","concat","unWrapMath","displayStyleIndex","indexOf","replace","trim","startsWith","endsWith","unwrapped","substring","length"],"sources":["../src/normalization.js"],"sourcesContent":["export const BracketTypes = {};\n\nBracketTypes.ROUND_BRACKETS = 'round_brackets';\nBracketTypes.SQUARE_BRACKETS = 'square_brackets';\nBracketTypes.DOLLAR = 'dollar';\nBracketTypes.DOUBLE_DOLLAR = 'double_dollar';\n\nconst PAIRS = {\n [BracketTypes.ROUND_BRACKETS]: ['\\\\(', '\\\\)'],\n [BracketTypes.SQUARE_BRACKETS]: ['\\\\[', '\\\\]'],\n [BracketTypes.DOLLAR]: ['$', '$'],\n [BracketTypes.DOUBLE_DOLLAR]: ['$$', '$$'],\n};\n\nexport const wrapMath = (content, wrapType) => {\n if (wrapType === BracketTypes.SQUARE_BRACKETS) {\n console.warn('\\\\[...\\\\] is not supported yet'); // eslint-disable-line\n wrapType = BracketTypes.ROUND_BRACKETS;\n }\n if (wrapType === BracketTypes.DOUBLE_DOLLAR) {\n console.warn('$$...$$ is not supported yet'); // eslint-disable-line\n wrapType = BracketTypes.DOLLAR;\n }\n\n const [start, end] = PAIRS[wrapType] || PAIRS[BracketTypes.ROUND_BRACKETS];\n return `${start}${content}${end}`;\n};\n\nexport const unWrapMath = (content) => {\n const displayStyleIndex = content.indexOf('\\\\displaystyle');\n if (displayStyleIndex !== -1) {\n console.warn('\\\\displaystyle is not supported - removing'); // eslint-disable-line\n content = content.replace('\\\\displaystyle', '').trim();\n }\n\n if (content.startsWith('$$') && content.endsWith('$$')) {\n console.warn('$$ syntax is not yet supported'); // eslint-disable-line\n return {\n unwrapped: content.substring(2, content.length - 2),\n wrapType: BracketTypes.DOLLAR,\n };\n }\n if (content.startsWith('$') && content.endsWith('$')) {\n return {\n unwrapped: content.substring(1, content.length - 1),\n wrapType: BracketTypes.DOLLAR,\n };\n }\n\n if (content.startsWith('\\\\[') && content.endsWith('\\\\]')) {\n console.warn('\\\\[..\\\\] syntax is not yet supported'); // eslint-disable-line\n return {\n unwrapped: content.substring(2, content.length - 2),\n wrapType: BracketTypes.ROUND_BRACKETS,\n };\n }\n\n if (content.startsWith('\\\\(') && content.endsWith('\\\\)')) {\n return {\n unwrapped: content.substring(2, content.length - 2),\n wrapType: BracketTypes.ROUND_BRACKETS,\n };\n }\n\n return {\n unwrapped: content,\n wrapType: BracketTypes.ROUND_BRACKETS,\n };\n};\n"],"mappings":"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","ignoreList":[]}
|
package/lib/render-math.js
CHANGED
|
@@ -1,34 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.initializeMathJax = exports.getGlobal = exports.fixMathElements = exports.fixMathElement = exports["default"] = exports.MathJaxVersion = void 0;
|
|
9
|
-
|
|
10
8
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
11
|
-
|
|
12
9
|
var _normalization = require("./normalization");
|
|
13
|
-
|
|
14
10
|
var _SerializedMmlVisitor = require("mathjax-full/js/core/MmlTree/SerializedMmlVisitor");
|
|
15
|
-
|
|
16
11
|
var _TexError = _interopRequireDefault(require("mathjax-full/js/input/tex/TexError"));
|
|
12
|
+
/* global MathJax */
|
|
17
13
|
|
|
18
14
|
var visitor = new _SerializedMmlVisitor.SerializedMmlVisitor();
|
|
19
|
-
|
|
20
15
|
var toMMl = function toMMl(node) {
|
|
21
16
|
return visitor.visitTree(node);
|
|
22
17
|
};
|
|
23
|
-
|
|
24
18
|
var NEWLINE_BLOCK_REGEX = /\\embed\{newLine\}\[\]/g;
|
|
25
19
|
var NEWLINE_LATEX = '\\newline ';
|
|
26
20
|
var mathRenderingKEY = '@pie-lib/math-rendering@2';
|
|
27
21
|
var mathRenderingAccessibleKEY = '@pie-lib/math-rendering-accessible@1';
|
|
28
|
-
var MathJaxVersion = '3.2.2';
|
|
29
|
-
exports.
|
|
30
|
-
|
|
31
|
-
var getGlobal = function getGlobal() {
|
|
22
|
+
var MathJaxVersion = exports.MathJaxVersion = '3.2.2';
|
|
23
|
+
var getGlobal = exports.getGlobal = function getGlobal() {
|
|
32
24
|
// TODO does it make sense to use version?
|
|
33
25
|
// const key = `${pkg.name}@${pkg.version.split('.')[0]}`;
|
|
34
26
|
// It looks like Ed made this change when he switched from mathjax3 to mathjax-full
|
|
@@ -40,47 +32,34 @@ var getGlobal = function getGlobal() {
|
|
|
40
32
|
if (!window[mathRenderingAccessibleKEY]) {
|
|
41
33
|
window[mathRenderingAccessibleKEY] = {};
|
|
42
34
|
}
|
|
43
|
-
|
|
44
35
|
return window[mathRenderingAccessibleKEY];
|
|
45
36
|
} else {
|
|
46
37
|
return {};
|
|
47
38
|
}
|
|
48
39
|
};
|
|
49
|
-
|
|
50
|
-
exports.getGlobal = getGlobal;
|
|
51
|
-
|
|
52
|
-
var fixMathElement = function fixMathElement(element) {
|
|
40
|
+
var fixMathElement = exports.fixMathElement = function fixMathElement(element) {
|
|
53
41
|
if (element.dataset.mathHandled) {
|
|
54
42
|
return;
|
|
55
43
|
}
|
|
56
|
-
|
|
57
44
|
var property = 'innerText';
|
|
58
|
-
|
|
59
45
|
if (element.textContent) {
|
|
60
46
|
property = 'textContent';
|
|
61
47
|
}
|
|
62
|
-
|
|
63
48
|
if (element[property]) {
|
|
64
|
-
element[property] = (0, _normalization.wrapMath)((0, _normalization.unWrapMath)(element[property]).unwrapped);
|
|
49
|
+
element[property] = (0, _normalization.wrapMath)((0, _normalization.unWrapMath)(element[property]).unwrapped);
|
|
50
|
+
// because mathquill doesn't understand line breaks, sometimes we end up with custom elements on prompts/rationale/etc.
|
|
65
51
|
// we need to replace the custom embedded elements with valid latex that Mathjax can understand
|
|
66
|
-
|
|
67
52
|
element[property] = element[property].replace(NEWLINE_BLOCK_REGEX, NEWLINE_LATEX);
|
|
68
53
|
element.dataset.mathHandled = true;
|
|
69
54
|
}
|
|
70
55
|
};
|
|
71
|
-
|
|
72
|
-
exports.fixMathElement = fixMathElement;
|
|
73
|
-
|
|
74
|
-
var fixMathElements = function fixMathElements() {
|
|
56
|
+
var fixMathElements = exports.fixMathElements = function fixMathElements() {
|
|
75
57
|
var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;
|
|
76
58
|
var mathElements = el.querySelectorAll('[data-latex]');
|
|
77
59
|
mathElements.forEach(function (item) {
|
|
78
60
|
return fixMathElement(item);
|
|
79
61
|
});
|
|
80
62
|
};
|
|
81
|
-
|
|
82
|
-
exports.fixMathElements = fixMathElements;
|
|
83
|
-
|
|
84
63
|
var adjustMathMLStyle = function adjustMathMLStyle() {
|
|
85
64
|
var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;
|
|
86
65
|
var nodes = el.querySelectorAll('math');
|
|
@@ -88,43 +67,36 @@ var adjustMathMLStyle = function adjustMathMLStyle() {
|
|
|
88
67
|
return node.setAttribute('displaystyle', 'true');
|
|
89
68
|
});
|
|
90
69
|
};
|
|
91
|
-
|
|
92
70
|
var createPlaceholder = function createPlaceholder(element) {
|
|
93
71
|
var _element$previousSibl;
|
|
94
|
-
|
|
95
72
|
if (!element.previousSibling || !((_element$previousSibl = element.previousSibling.classList) !== null && _element$previousSibl !== void 0 && _element$previousSibl.contains('math-placeholder'))) {
|
|
96
73
|
var _element$parentNode;
|
|
97
|
-
|
|
98
74
|
// Store the original display style before setting it to 'none'
|
|
99
75
|
element.dataset.originalDisplay = element.style.display || '';
|
|
100
76
|
element.style.display = 'none';
|
|
101
77
|
var placeholder = document.createElement('span');
|
|
102
78
|
placeholder.style.cssText = 'height: 10px; width: 50px; display: inline-block; vertical-align: middle; justify-content: center; background: #fafafa; border-radius: 4px;';
|
|
103
79
|
placeholder.classList.add('math-placeholder');
|
|
104
|
-
(_element$parentNode = element.parentNode) === null || _element$parentNode === void 0
|
|
80
|
+
(_element$parentNode = element.parentNode) === null || _element$parentNode === void 0 || _element$parentNode.insertBefore(placeholder, element);
|
|
105
81
|
}
|
|
106
82
|
};
|
|
107
|
-
|
|
108
83
|
var removePlaceholdersAndRestoreDisplay = function removePlaceholdersAndRestoreDisplay() {
|
|
109
84
|
document.querySelectorAll('.math-placeholder').forEach(function (placeholder) {
|
|
110
85
|
var _targetElement$datase;
|
|
111
|
-
|
|
112
86
|
var targetElement = placeholder.nextElementSibling;
|
|
113
|
-
|
|
114
87
|
if (targetElement && ((_targetElement$datase = targetElement.dataset) === null || _targetElement$datase === void 0 ? void 0 : _targetElement$datase.originalDisplay) !== undefined) {
|
|
115
88
|
targetElement.style.display = targetElement.dataset.originalDisplay;
|
|
116
89
|
delete targetElement.dataset.originalDisplay;
|
|
117
90
|
}
|
|
118
|
-
|
|
119
91
|
placeholder.remove();
|
|
120
92
|
});
|
|
121
93
|
};
|
|
122
|
-
|
|
123
94
|
var removeExcessMjxContainers = function removeExcessMjxContainers(content) {
|
|
124
95
|
var elements = content.querySelectorAll('[data-latex][data-math-handled="true"]');
|
|
125
96
|
elements.forEach(function (element) {
|
|
126
|
-
var mjxContainers = element.querySelectorAll('mjx-container');
|
|
97
|
+
var mjxContainers = element.querySelectorAll('mjx-container');
|
|
127
98
|
|
|
99
|
+
// Check if there are more than one mjx-container children.
|
|
128
100
|
if (mjxContainers.length > 1) {
|
|
129
101
|
for (var i = 1; i < mjxContainers.length; i++) {
|
|
130
102
|
mjxContainers[i].parentNode.removeChild(mjxContainers[i]);
|
|
@@ -132,7 +104,6 @@ var removeExcessMjxContainers = function removeExcessMjxContainers(content) {
|
|
|
132
104
|
}
|
|
133
105
|
});
|
|
134
106
|
};
|
|
135
|
-
|
|
136
107
|
var renderContentsWithMathJax = function renderContentsWithMathJax(el) {
|
|
137
108
|
// el sometimes is an array
|
|
138
109
|
// renderMath is used like that in pie-print-support and pie-element-extensions
|
|
@@ -145,52 +116,55 @@ var renderContentsWithMathJax = function renderContentsWithMathJax(el) {
|
|
|
145
116
|
renderContentWithMathJax(el);
|
|
146
117
|
}
|
|
147
118
|
};
|
|
148
|
-
|
|
149
119
|
var renderContentWithMathJax = function renderContentWithMathJax(executeOn) {
|
|
150
|
-
executeOn = executeOn || document.body;
|
|
151
|
-
// we have to fix this in charting
|
|
120
|
+
executeOn = executeOn || document.body;
|
|
152
121
|
|
|
122
|
+
// this happens for charting - mark-label; we receive a ref which is not yet ready ( el = { current: null })
|
|
123
|
+
// we have to fix this in charting
|
|
153
124
|
if (!(executeOn instanceof HTMLElement)) return;
|
|
154
125
|
fixMathElements(executeOn);
|
|
155
126
|
adjustMathMLStyle(executeOn);
|
|
156
127
|
var mathJaxInstance = getGlobal().instance;
|
|
157
|
-
|
|
158
128
|
if (mathJaxInstance) {
|
|
159
129
|
// Reset and clear typesetting before processing the new content
|
|
160
130
|
// Reset the tex labels (and automatic equation number).
|
|
161
|
-
mathJaxInstance.texReset(); // Reset the typesetting system (font caches, etc.)
|
|
162
131
|
|
|
163
|
-
mathJaxInstance.
|
|
132
|
+
mathJaxInstance.texReset();
|
|
133
|
+
|
|
134
|
+
// Reset the typesetting system (font caches, etc.)
|
|
135
|
+
mathJaxInstance.typesetClear();
|
|
136
|
+
|
|
137
|
+
// Use typesetPromise for asynchronous typesetting
|
|
164
138
|
// Using MathJax.typesetPromise() for asynchronous typesetting to handle situations where additional code needs to be loaded (e.g., for certain TeX commands or characters).
|
|
165
139
|
// This ensures typesetting waits for any needed resources to load and complete processing, unlike the synchronous MathJax.typeset() which can't handle such dynamic loading.
|
|
166
|
-
|
|
167
140
|
mathJaxInstance.typesetPromise([executeOn]).then(function () {
|
|
168
141
|
try {
|
|
169
142
|
removePlaceholdersAndRestoreDisplay();
|
|
170
143
|
removeExcessMjxContainers(executeOn);
|
|
171
144
|
var updatedDocument = mathJaxInstance.startup.document;
|
|
172
145
|
var list = updatedDocument.math.list;
|
|
173
|
-
|
|
174
146
|
for (var item = list.next; (0, _typeof2["default"])(item.data) !== 'symbol'; item = item.next) {
|
|
175
147
|
var mathMl = toMMl(item.data.root);
|
|
176
148
|
var parsedMathMl = mathMl.replaceAll('\n', '');
|
|
177
149
|
item.data.typesetRoot.setAttribute('data-mathml', parsedMathMl);
|
|
178
150
|
item.data.typesetRoot.setAttribute('tabindex', '-1');
|
|
179
|
-
}
|
|
151
|
+
}
|
|
180
152
|
|
|
153
|
+
// If the original input was a string, return the parsed MathML
|
|
181
154
|
} catch (e) {
|
|
155
|
+
// eslint-disable-next-line no-console
|
|
182
156
|
console.error('Error post-processing MathJax typesetting:', e.toString());
|
|
183
|
-
}
|
|
184
|
-
|
|
157
|
+
}
|
|
185
158
|
|
|
159
|
+
// Clearing the document if needed
|
|
186
160
|
mathJaxInstance.startup.document.clear();
|
|
187
161
|
})["catch"](function (error) {
|
|
188
162
|
// If there was an internal error, put the message into the output instead
|
|
163
|
+
// eslint-disable-next-line no-console
|
|
189
164
|
console.error('Error in typesetting with MathJax:', error);
|
|
190
165
|
});
|
|
191
166
|
}
|
|
192
167
|
};
|
|
193
|
-
|
|
194
168
|
var convertMathJax2ToMathJax3 = function convertMathJax2ToMathJax3() {
|
|
195
169
|
// Make MathJax v2 compatible with v3
|
|
196
170
|
// https://docs.mathjax.org/en/v3.2-latest/upgrading/v2.html#version-2-compatibility-example
|
|
@@ -202,24 +176,22 @@ var convertMathJax2ToMathJax3 = function convertMathJax2ToMathJax3() {
|
|
|
202
176
|
var RequireMethods = {
|
|
203
177
|
Require: function Require(parser, name) {
|
|
204
178
|
var required = parser.GetArgument(name);
|
|
205
|
-
|
|
206
179
|
if (required.match(/[^_a-zA-Z0-9]/) || required === '') {
|
|
207
180
|
throw new _TexError["default"]('BadPackageName', 'Argument for %1 is not a valid package name', name);
|
|
208
181
|
}
|
|
209
|
-
|
|
210
|
-
if (requireMap.hasOwnProperty(required)) {
|
|
182
|
+
if (Object.prototype.hasOwnProperty.call(requireMap, required)) {
|
|
211
183
|
required = requireMap[required];
|
|
212
184
|
}
|
|
213
|
-
|
|
214
185
|
RequireLoad(parser, required);
|
|
215
186
|
}
|
|
216
187
|
};
|
|
217
188
|
new CommandMap('require', {
|
|
218
189
|
require: 'Require'
|
|
219
|
-
}, RequireMethods);
|
|
190
|
+
}, RequireMethods);
|
|
191
|
+
|
|
192
|
+
//
|
|
220
193
|
// Add a replacement for MathJax.Callback command
|
|
221
194
|
//
|
|
222
|
-
|
|
223
195
|
MathJax.Callback = function (args) {
|
|
224
196
|
if (Array.isArray(args)) {
|
|
225
197
|
if (args.length === 1 && typeof args[0] === 'function') {
|
|
@@ -234,53 +206,51 @@ var convertMathJax2ToMathJax3 = function convertMathJax2ToMathJax3() {
|
|
|
234
206
|
} else if (typeof args === 'function') {
|
|
235
207
|
return args;
|
|
236
208
|
}
|
|
209
|
+
throw Error('Can\'t make callback from given data');
|
|
210
|
+
};
|
|
237
211
|
|
|
238
|
-
|
|
239
|
-
}; //
|
|
212
|
+
//
|
|
240
213
|
// Add a replacement for MathJax.Hub commands
|
|
241
214
|
//
|
|
242
|
-
|
|
243
|
-
|
|
244
215
|
MathJax.Hub = {
|
|
245
216
|
Queue: function Queue() {
|
|
246
217
|
for (var i = 0, m = arguments.length; i < m; i++) {
|
|
247
218
|
var fn = MathJax.Callback(arguments[i]);
|
|
248
219
|
MathJax.startup.promise = MathJax.startup.promise.then(fn);
|
|
249
220
|
}
|
|
250
|
-
|
|
251
221
|
return MathJax.startup.promise;
|
|
252
222
|
},
|
|
253
223
|
Typeset: function Typeset(elements, callback) {
|
|
254
224
|
var promise = MathJax.typesetPromise(elements);
|
|
255
|
-
|
|
256
225
|
if (callback) {
|
|
257
226
|
promise = promise.then(callback);
|
|
258
227
|
}
|
|
259
|
-
|
|
260
228
|
return promise;
|
|
261
229
|
},
|
|
262
230
|
Register: {
|
|
263
231
|
MessageHook: function MessageHook() {
|
|
232
|
+
// eslint-disable-next-line no-console
|
|
264
233
|
console.log('MessageHooks are not supported in version 3');
|
|
265
234
|
},
|
|
266
235
|
StartupHook: function StartupHook() {
|
|
236
|
+
// eslint-disable-next-line no-console
|
|
267
237
|
console.log('StartupHooks are not supported in version 3');
|
|
268
238
|
},
|
|
269
239
|
LoadHook: function LoadHook() {
|
|
240
|
+
// eslint-disable-next-line no-console
|
|
270
241
|
console.log('LoadHooks are not supported in version 3');
|
|
271
242
|
}
|
|
272
243
|
},
|
|
273
244
|
Config: function Config() {
|
|
245
|
+
// eslint-disable-next-line no-console
|
|
274
246
|
console.log('MathJax configurations should be converted for version 3');
|
|
275
247
|
}
|
|
276
248
|
};
|
|
277
249
|
};
|
|
278
|
-
|
|
279
|
-
var initializeMathJax = function initializeMathJax(callback) {
|
|
250
|
+
var initializeMathJax = exports.initializeMathJax = function initializeMathJax(callback) {
|
|
280
251
|
if (window.mathjaxLoadedP) {
|
|
281
252
|
return;
|
|
282
253
|
}
|
|
283
|
-
|
|
284
254
|
var PreviousMathJaxIsUsed = window.MathJax && window.MathJax.version && window.MathJax.version !== MathJaxVersion && window.MathJax.version[0] === '2';
|
|
285
255
|
var texConfig = {
|
|
286
256
|
macros: {
|
|
@@ -291,17 +261,15 @@ var initializeMathJax = function initializeMathJax(callback) {
|
|
|
291
261
|
},
|
|
292
262
|
displayMath: [['$$', '$$'], ['\\[', '\\]']]
|
|
293
263
|
};
|
|
294
|
-
|
|
295
264
|
if (PreviousMathJaxIsUsed) {
|
|
296
265
|
texConfig.autoload = {
|
|
297
266
|
color: [],
|
|
298
267
|
// don't autoload the color extension
|
|
299
268
|
colorv2: ['color'] // do autoload the colorv2 extension
|
|
300
|
-
|
|
301
269
|
};
|
|
302
|
-
}
|
|
303
|
-
|
|
270
|
+
}
|
|
304
271
|
|
|
272
|
+
// Create a new promise that resolves when MathJax is ready
|
|
305
273
|
window.mathjaxLoadedP = new Promise(function (resolve) {
|
|
306
274
|
// Set up the MathJax configuration
|
|
307
275
|
window.MathJax = {
|
|
@@ -322,34 +290,33 @@ var initializeMathJax = function initializeMathJax(callback) {
|
|
|
322
290
|
if (PreviousMathJaxIsUsed) {
|
|
323
291
|
convertMathJax2ToMathJax3();
|
|
324
292
|
}
|
|
325
|
-
|
|
326
293
|
var mathjax = MathJax._.mathjax.mathjax;
|
|
327
294
|
var STATE = MathJax._.core.MathItem.STATE;
|
|
328
295
|
var Menu = MathJax._.ui.menu.Menu.Menu;
|
|
329
296
|
var rerender = Menu.prototype.rerender;
|
|
330
|
-
|
|
331
297
|
Menu.prototype.rerender = function () {
|
|
332
298
|
var _this = this;
|
|
333
|
-
|
|
334
299
|
var start = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : STATE.TYPESET;
|
|
335
300
|
mathjax.handleRetriesFor(function () {
|
|
336
301
|
return rerender.call(_this, start);
|
|
337
302
|
});
|
|
338
303
|
};
|
|
339
|
-
|
|
340
|
-
|
|
304
|
+
MathJax.startup.defaultReady();
|
|
305
|
+
// Set the MathJax instance in the global object
|
|
341
306
|
|
|
342
307
|
var globalObj = getGlobal();
|
|
343
308
|
globalObj.instance = MathJax;
|
|
344
309
|
window.mathjaxLoadedComplete = true;
|
|
345
|
-
|
|
310
|
+
// eslint-disable-next-line no-console
|
|
311
|
+
console.log('MathJax has initialised!', new Date().toString());
|
|
346
312
|
|
|
313
|
+
// in this file, initializeMathJax is called with a callback that has to be executed when MathJax was loaded
|
|
347
314
|
if (callback) {
|
|
348
315
|
callback();
|
|
349
|
-
}
|
|
350
|
-
// resolve here;
|
|
351
|
-
|
|
316
|
+
}
|
|
352
317
|
|
|
318
|
+
// but previous versions of math-rendering-accessible they're expecting window.mathjaxLoadedP to be a Promise, so we also keep the
|
|
319
|
+
// resolve here;
|
|
353
320
|
resolve();
|
|
354
321
|
}
|
|
355
322
|
},
|
|
@@ -389,31 +356,27 @@ var initializeMathJax = function initializeMathJax(callback) {
|
|
|
389
356
|
}
|
|
390
357
|
}
|
|
391
358
|
}
|
|
392
|
-
};
|
|
393
|
-
|
|
359
|
+
};
|
|
360
|
+
// Load the MathJax script
|
|
394
361
|
var script = document.createElement('script');
|
|
395
362
|
script.type = 'text/javascript';
|
|
396
363
|
script.src = "https://cdn.jsdelivr.net/npm/mathjax@".concat(MathJaxVersion, "/es5/tex-chtml-full.js");
|
|
397
364
|
script.async = true;
|
|
398
|
-
document.head.appendChild(script);
|
|
365
|
+
document.head.appendChild(script);
|
|
399
366
|
|
|
367
|
+
// at this time of the execution, there's no document.body; setTimeout does the trick
|
|
400
368
|
setTimeout(function () {
|
|
401
369
|
if (!window.mathjaxLoadedComplete) {
|
|
402
|
-
var _document
|
|
403
|
-
|
|
404
|
-
var mathElements = (_document = document) === null || _document === void 0 ? void 0 : (_document$body = _document.body) === null || _document$body === void 0 ? void 0 : _document$body.querySelectorAll('[data-latex]');
|
|
370
|
+
var _document;
|
|
371
|
+
var mathElements = (_document = document) === null || _document === void 0 || (_document = _document.body) === null || _document === void 0 ? void 0 : _document.querySelectorAll('[data-latex]');
|
|
405
372
|
(mathElements || []).forEach(createPlaceholder);
|
|
406
373
|
}
|
|
407
374
|
});
|
|
408
375
|
});
|
|
409
376
|
};
|
|
410
|
-
|
|
411
|
-
exports.initializeMathJax = initializeMathJax;
|
|
412
|
-
|
|
413
|
-
var renderMath = function renderMath(el, renderOpts) {
|
|
377
|
+
var renderMath = function renderMath(el) {
|
|
414
378
|
var usedForMmlOutput = typeof el === 'string';
|
|
415
379
|
var executeOn = document.body;
|
|
416
|
-
|
|
417
380
|
if (!usedForMmlOutput) {
|
|
418
381
|
// If math-rendering was not available, then:
|
|
419
382
|
// If window.mathjaxLoadedComplete, it means that we initialised MathJax using the function from this file,
|
|
@@ -429,7 +392,8 @@ var renderMath = function renderMath(el, renderOpts) {
|
|
|
429
392
|
window.mathjaxLoadedComplete = true;
|
|
430
393
|
renderContentsWithMathJax(el);
|
|
431
394
|
})["catch"](function (error) {
|
|
432
|
-
|
|
395
|
+
// eslint-disable-next-line no-console
|
|
396
|
+
console.error('Error in initializing MathJax:', error);
|
|
433
397
|
});
|
|
434
398
|
}
|
|
435
399
|
} else {
|
|
@@ -438,7 +402,6 @@ var renderMath = function renderMath(el, renderOpts) {
|
|
|
438
402
|
var div = document.createElement('div');
|
|
439
403
|
div.innerHTML = el;
|
|
440
404
|
executeOn = div;
|
|
441
|
-
|
|
442
405
|
try {
|
|
443
406
|
MathJax.texReset();
|
|
444
407
|
MathJax.typesetClear();
|
|
@@ -450,17 +413,16 @@ var renderMath = function renderMath(el, renderOpts) {
|
|
|
450
413
|
var parsedMathMl = mathMl.replaceAll('\n', '');
|
|
451
414
|
return parsedMathMl;
|
|
452
415
|
} catch (error) {
|
|
416
|
+
// eslint-disable-next-line no-console
|
|
453
417
|
console.error('Error rendering math:', error.message);
|
|
454
418
|
}
|
|
455
|
-
|
|
456
419
|
return el;
|
|
457
420
|
}
|
|
458
|
-
|
|
459
421
|
return el;
|
|
460
422
|
}
|
|
461
|
-
};
|
|
462
|
-
|
|
423
|
+
};
|
|
463
424
|
|
|
425
|
+
// this function calls itself
|
|
464
426
|
(function () {
|
|
465
427
|
initializeMathJax(renderContentWithMathJax);
|
|
466
428
|
window[mathRenderingKEY] = {
|
|
@@ -469,7 +431,5 @@ var renderMath = function renderMath(el, renderOpts) {
|
|
|
469
431
|
}
|
|
470
432
|
};
|
|
471
433
|
})();
|
|
472
|
-
|
|
473
|
-
var _default = renderMath;
|
|
474
|
-
exports["default"] = _default;
|
|
434
|
+
var _default = exports["default"] = renderMath;
|
|
475
435
|
//# sourceMappingURL=render-math.js.map
|