site/node_modules/mathjax-full/js/output/chtml.js

234 lines
9.9 KiB
JavaScript
Raw Permalink Normal View History

2024-10-14 06:09:33 +00:00
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CHTML = void 0;
var OutputJax_js_1 = require("./common/OutputJax.js");
var StyleList_js_1 = require("../util/StyleList.js");
var WrapperFactory_js_1 = require("./chtml/WrapperFactory.js");
var Usage_js_1 = require("./chtml/Usage.js");
var tex_js_1 = require("./chtml/fonts/tex.js");
var LENGTHS = __importStar(require("../util/lengths.js"));
var string_js_1 = require("../util/string.js");
var CHTML = (function (_super) {
__extends(CHTML, _super);
function CHTML(options) {
if (options === void 0) { options = null; }
var _this = _super.call(this, options, WrapperFactory_js_1.CHTMLWrapperFactory, tex_js_1.TeXFont) || this;
_this.chtmlStyles = null;
_this.font.adaptiveCSS(_this.options.adaptiveCSS);
_this.wrapperUsage = new Usage_js_1.Usage();
return _this;
}
CHTML.prototype.escaped = function (math, html) {
this.setDocument(html);
return this.html('span', {}, [this.text(math.math)]);
};
CHTML.prototype.styleSheet = function (html) {
if (this.chtmlStyles) {
if (this.options.adaptiveCSS) {
var styles = new StyleList_js_1.CssStyles();
this.addWrapperStyles(styles);
this.updateFontStyles(styles);
this.adaptor.insertRules(this.chtmlStyles, styles.getStyleRules());
}
return this.chtmlStyles;
}
var sheet = this.chtmlStyles = _super.prototype.styleSheet.call(this, html);
this.adaptor.setAttribute(sheet, 'id', CHTML.STYLESHEETID);
this.wrapperUsage.update();
return sheet;
};
CHTML.prototype.updateFontStyles = function (styles) {
styles.addStyles(this.font.updateStyles({}));
};
CHTML.prototype.addWrapperStyles = function (styles) {
var e_1, _a;
if (!this.options.adaptiveCSS) {
_super.prototype.addWrapperStyles.call(this, styles);
return;
}
try {
for (var _b = __values(this.wrapperUsage.update()), _c = _b.next(); !_c.done; _c = _b.next()) {
var kind = _c.value;
var wrapper = this.factory.getNodeClass(kind);
wrapper && this.addClassStyles(wrapper, styles);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
};
CHTML.prototype.addClassStyles = function (wrapper, styles) {
var _a;
var CLASS = wrapper;
if (CLASS.autoStyle && CLASS.kind !== 'unknown') {
styles.addStyles((_a = {},
_a['mjx-' + CLASS.kind] = {
display: 'inline-block',
'text-align': 'left'
},
_a));
}
this.wrapperUsage.add(CLASS.kind);
_super.prototype.addClassStyles.call(this, wrapper, styles);
};
CHTML.prototype.processMath = function (math, parent) {
this.factory.wrap(math).toCHTML(parent);
};
CHTML.prototype.clearCache = function () {
this.cssStyles.clear();
this.font.clearCache();
this.wrapperUsage.clear();
this.chtmlStyles = null;
};
CHTML.prototype.reset = function () {
this.clearCache();
};
CHTML.prototype.unknownText = function (text, variant, width) {
if (width === void 0) { width = null; }
var styles = {};
var scale = 100 / this.math.metrics.scale;
if (scale !== 100) {
styles['font-size'] = this.fixed(scale, 1) + '%';
styles.padding = LENGTHS.em(75 / scale) + ' 0 ' + LENGTHS.em(20 / scale) + ' 0';
}
if (variant !== '-explicitFont') {
var c = (0, string_js_1.unicodeChars)(text);
if (c.length !== 1 || c[0] < 0x1D400 || c[0] > 0x1D7FF) {
this.cssFontStyles(this.font.getCssFont(variant), styles);
}
}
if (width !== null) {
var metrics = this.math.metrics;
styles.width = Math.round(width * metrics.em * metrics.scale) + 'px';
}
return this.html('mjx-utext', { variant: variant, style: styles }, [this.text(text)]);
};
CHTML.prototype.measureTextNode = function (textNode) {
var adaptor = this.adaptor;
var text = adaptor.clone(textNode);
adaptor.setStyle(text, 'font-family', adaptor.getStyle(text, 'font-family').replace(/MJXZERO, /g, ''));
var style = { position: 'absolute', 'white-space': 'nowrap' };
var node = this.html('mjx-measure-text', { style: style }, [text]);
adaptor.append(adaptor.parent(this.math.start.node), this.container);
adaptor.append(this.container, node);
var w = adaptor.nodeSize(text, this.math.metrics.em)[0] / this.math.metrics.scale;
adaptor.remove(this.container);
adaptor.remove(node);
return { w: w, h: .75, d: .2 };
};
CHTML.NAME = 'CHTML';
CHTML.OPTIONS = __assign(__assign({}, OutputJax_js_1.CommonOutputJax.OPTIONS), { adaptiveCSS: true, matchFontHeight: true });
CHTML.commonStyles = {
'mjx-container[jax="CHTML"]': { 'line-height': 0 },
'mjx-container [space="1"]': { 'margin-left': '.111em' },
'mjx-container [space="2"]': { 'margin-left': '.167em' },
'mjx-container [space="3"]': { 'margin-left': '.222em' },
'mjx-container [space="4"]': { 'margin-left': '.278em' },
'mjx-container [space="5"]': { 'margin-left': '.333em' },
'mjx-container [rspace="1"]': { 'margin-right': '.111em' },
'mjx-container [rspace="2"]': { 'margin-right': '.167em' },
'mjx-container [rspace="3"]': { 'margin-right': '.222em' },
'mjx-container [rspace="4"]': { 'margin-right': '.278em' },
'mjx-container [rspace="5"]': { 'margin-right': '.333em' },
'mjx-container [size="s"]': { 'font-size': '70.7%' },
'mjx-container [size="ss"]': { 'font-size': '50%' },
'mjx-container [size="Tn"]': { 'font-size': '60%' },
'mjx-container [size="sm"]': { 'font-size': '85%' },
'mjx-container [size="lg"]': { 'font-size': '120%' },
'mjx-container [size="Lg"]': { 'font-size': '144%' },
'mjx-container [size="LG"]': { 'font-size': '173%' },
'mjx-container [size="hg"]': { 'font-size': '207%' },
'mjx-container [size="HG"]': { 'font-size': '249%' },
'mjx-container [width="full"]': { width: '100%' },
'mjx-box': { display: 'inline-block' },
'mjx-block': { display: 'block' },
'mjx-itable': { display: 'inline-table' },
'mjx-row': { display: 'table-row' },
'mjx-row > *': { display: 'table-cell' },
'mjx-mtext': {
display: 'inline-block'
},
'mjx-mstyle': {
display: 'inline-block'
},
'mjx-merror': {
display: 'inline-block',
color: 'red',
'background-color': 'yellow'
},
'mjx-mphantom': {
visibility: 'hidden'
},
'_::-webkit-full-page-media, _:future, :root mjx-container': {
'will-change': 'opacity'
}
};
CHTML.STYLESHEETID = 'MJX-CHTML-styles';
return CHTML;
}(OutputJax_js_1.CommonOutputJax));
exports.CHTML = CHTML;
//# sourceMappingURL=chtml.js.map