mirror of
https://github.com/Smaug123/KaTeX
synced 2025-10-05 03:08:40 +00:00
* Re-enable \includegraphics now that we have trust setting
This reverts commit 5806b240b3
.
* Include Khan Academy test logo in repo and use in test (fix #1892)
* Update screenshots
* Update documentation
* Add tests, cleanup existing tests
* Update snapshots
* Enable trust testing (trust=true by default)
118 lines
3.6 KiB
JavaScript
118 lines
3.6 KiB
JavaScript
/* eslint no-console:0 */
|
|
/**
|
|
* This is the webpack entry point for the test page.
|
|
*/
|
|
import katex from '../katex.webpack.js';
|
|
import './main.css';
|
|
import queryString from 'query-string';
|
|
|
|
function init() {
|
|
const input = document.getElementById("input");
|
|
let math = document.getElementById("math");
|
|
const permalink = document.getElementById("permalink");
|
|
|
|
input.addEventListener("input", reprocess, false);
|
|
permalink.addEventListener("click", setSearch);
|
|
|
|
const options = {displayMode: true, throwOnError: true, trust: true};
|
|
const macros = {};
|
|
const query = queryString.parse(window.location.search);
|
|
|
|
if (query.text) {
|
|
input.value = query.text;
|
|
}
|
|
|
|
// Use `display=0` or `displayMode=0` (or `=f`/`=false`/`=n`/`=no`)
|
|
// to turn off displayMode (which is on by default).
|
|
const displayQuery = (query.displayMode || query.display);
|
|
if (displayQuery && displayQuery.match(/^(0|f|n)/)) {
|
|
options.displayMode = false;
|
|
}
|
|
|
|
// Use `leqno=1` (or `=t`/`=true`/`=y`/`=yes`) to put tags on left side.
|
|
if (query.leqno && query.leqno.match(/^(1|t|y)/)) {
|
|
options.leqno = true;
|
|
}
|
|
|
|
// Use `fleqn=1` (or `=t`/`=true`/`=y`/`=yes`) to put tags on left side.
|
|
if (query.fleqn && query.fleqn.match(/^(1|t|y)/)) {
|
|
options.fleqn = true;
|
|
}
|
|
|
|
// Use `strict=warn` for warning strict mode or `strict=error`
|
|
// (or `=1`/`=t`/`=true`/`=y`/`=yes`)
|
|
// to turn off displayMode (which is on by default).
|
|
if (query.strict) {
|
|
if (query.strict.match(/^(1|t|y|e)/)) {
|
|
options.strict = "error";
|
|
} if (query.strict && query.strict.match(/^(w)/)) {
|
|
options.strict = "warn";
|
|
}
|
|
}
|
|
|
|
// Use `trust=0` (or `=f`/`=false`/`=n`/`=no`) to not trust input.
|
|
if (query.trust && query.trust.match(/^(0|f|n)/)) {
|
|
options.trust = false;
|
|
}
|
|
|
|
// The `before` or `pre` search parameter puts normal text before the math.
|
|
// The `after` or `post` search parameter puts normal text after the math.
|
|
// Example use: testing baseline alignment.
|
|
if (query.before || query.after || query.pre || query.post) {
|
|
const mathContainer = math;
|
|
mathContainer.id = "math-container";
|
|
|
|
if (query.before || query.pre) {
|
|
const before = document.createTextNode(query.before || query.pre);
|
|
mathContainer.appendChild(before);
|
|
}
|
|
|
|
math = document.createElement("span");
|
|
math.id = "math";
|
|
mathContainer.appendChild(math);
|
|
|
|
if (query.after || query.post) {
|
|
const after = document.createTextNode(query.after || query.post);
|
|
mathContainer.appendChild(after);
|
|
}
|
|
}
|
|
|
|
// Macros can be specified via `\command=expansion` or single-character
|
|
// `c=expansion`.
|
|
Object.getOwnPropertyNames(query).forEach((key) => {
|
|
if (key.match(/^\\|^[^]$/)) {
|
|
macros[key] = query[key];
|
|
}
|
|
});
|
|
|
|
reprocess();
|
|
|
|
function setSearch() {
|
|
const query = queryString.parse(window.location.search);
|
|
query.text = input.value;
|
|
window.location.search = queryString.stringify(query);
|
|
}
|
|
|
|
function reprocess() {
|
|
// Ignore changes to global macros caused by the expression
|
|
options.macros = Object.assign({}, macros);
|
|
try {
|
|
katex.render(input.value, math, options);
|
|
} catch (e) {
|
|
if (e.__proto__ === katex.ParseError.prototype) {
|
|
console.error(e);
|
|
} else {
|
|
throw e;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (module.hot) {
|
|
module.hot.accept('../katex.webpack.js', reprocess);
|
|
}
|
|
}
|
|
|
|
init();
|
|
|
|
export default katex;
|