site/node_modules/mathjax-full/js/a11y/explorer/Region.js

267 lines
11 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 _a, _b, _c;
Object.defineProperty(exports, "__esModule", { value: true });
exports.HoverRegion = exports.LiveRegion = exports.ToolTip = exports.StringRegion = exports.DummyRegion = exports.AbstractRegion = void 0;
var StyleList_js_1 = require("../../util/StyleList.js");
var AbstractRegion = (function () {
function AbstractRegion(document) {
this.document = document;
this.CLASS = this.constructor;
this.AddStyles();
this.AddElement();
}
AbstractRegion.prototype.AddStyles = function () {
if (this.CLASS.styleAdded) {
return;
}
var node = this.document.adaptor.node('style');
node.innerHTML = this.CLASS.style.cssText;
this.document.adaptor.head(this.document.adaptor.document).
appendChild(node);
this.CLASS.styleAdded = true;
};
AbstractRegion.prototype.AddElement = function () {
var element = this.document.adaptor.node('div');
element.classList.add(this.CLASS.className);
element.style.backgroundColor = 'white';
this.div = element;
this.inner = this.document.adaptor.node('div');
this.div.appendChild(this.inner);
this.document.adaptor.
body(this.document.adaptor.document).
appendChild(this.div);
};
AbstractRegion.prototype.Show = function (node, highlighter) {
this.position(node);
this.highlight(highlighter);
this.div.classList.add(this.CLASS.className + '_Show');
};
AbstractRegion.prototype.Hide = function () {
this.div.classList.remove(this.CLASS.className + '_Show');
};
AbstractRegion.prototype.stackRegions = function (node) {
var rect = node.getBoundingClientRect();
var baseBottom = 0;
var baseLeft = Number.POSITIVE_INFINITY;
var regions = this.document.adaptor.document.getElementsByClassName(this.CLASS.className + '_Show');
for (var i = 0, region = void 0; region = regions[i]; i++) {
if (region !== this.div) {
baseBottom = Math.max(region.getBoundingClientRect().bottom, baseBottom);
baseLeft = Math.min(region.getBoundingClientRect().left, baseLeft);
}
}
var bot = (baseBottom ? baseBottom : rect.bottom + 10) + window.pageYOffset;
var left = (baseLeft < Number.POSITIVE_INFINITY ? baseLeft : rect.left) + window.pageXOffset;
this.div.style.top = bot + 'px';
this.div.style.left = left + 'px';
};
AbstractRegion.styleAdded = false;
return AbstractRegion;
}());
exports.AbstractRegion = AbstractRegion;
var DummyRegion = (function (_super) {
__extends(DummyRegion, _super);
function DummyRegion() {
return _super !== null && _super.apply(this, arguments) || this;
}
DummyRegion.prototype.Clear = function () { };
DummyRegion.prototype.Update = function () { };
DummyRegion.prototype.Hide = function () { };
DummyRegion.prototype.Show = function () { };
DummyRegion.prototype.AddElement = function () { };
DummyRegion.prototype.AddStyles = function () { };
DummyRegion.prototype.position = function () { };
DummyRegion.prototype.highlight = function (_highlighter) { };
return DummyRegion;
}(AbstractRegion));
exports.DummyRegion = DummyRegion;
var StringRegion = (function (_super) {
__extends(StringRegion, _super);
function StringRegion() {
return _super !== null && _super.apply(this, arguments) || this;
}
StringRegion.prototype.Clear = function () {
this.Update('');
this.inner.style.top = '';
this.inner.style.backgroundColor = '';
};
StringRegion.prototype.Update = function (speech) {
this.inner.textContent = '';
this.inner.textContent = speech;
};
StringRegion.prototype.position = function (node) {
this.stackRegions(node);
};
StringRegion.prototype.highlight = function (highlighter) {
var color = highlighter.colorString();
this.inner.style.backgroundColor = color.background;
this.inner.style.color = color.foreground;
};
return StringRegion;
}(AbstractRegion));
exports.StringRegion = StringRegion;
var ToolTip = (function (_super) {
__extends(ToolTip, _super);
function ToolTip() {
return _super !== null && _super.apply(this, arguments) || this;
}
ToolTip.className = 'MJX_ToolTip';
ToolTip.style = new StyleList_js_1.CssStyles((_a = {},
_a['.' + ToolTip.className] = {
position: 'absolute', display: 'inline-block',
height: '1px', width: '1px'
},
_a['.' + ToolTip.className + '_Show'] = {
width: 'auto', height: 'auto', opacity: 1, 'text-align': 'center',
'border-radius': '6px', padding: '0px 0px',
'border-bottom': '1px dotted black', position: 'absolute',
'z-index': 202
},
_a));
return ToolTip;
}(StringRegion));
exports.ToolTip = ToolTip;
var LiveRegion = (function (_super) {
__extends(LiveRegion, _super);
function LiveRegion(document) {
var _this = _super.call(this, document) || this;
_this.document = document;
_this.div.setAttribute('aria-live', 'assertive');
return _this;
}
LiveRegion.className = 'MJX_LiveRegion';
LiveRegion.style = new StyleList_js_1.CssStyles((_b = {},
_b['.' + LiveRegion.className] = {
position: 'absolute', top: '0', height: '1px', width: '1px',
padding: '1px', overflow: 'hidden'
},
_b['.' + LiveRegion.className + '_Show'] = {
top: '0', position: 'absolute', width: 'auto', height: 'auto',
padding: '0px 0px', opacity: 1, 'z-index': '202',
left: 0, right: 0, 'margin': '0 auto',
'background-color': 'rgba(0, 0, 255, 0.2)', 'box-shadow': '0px 10px 20px #888',
border: '2px solid #CCCCCC'
},
_b));
return LiveRegion;
}(StringRegion));
exports.LiveRegion = LiveRegion;
var HoverRegion = (function (_super) {
__extends(HoverRegion, _super);
function HoverRegion(document) {
var _this = _super.call(this, document) || this;
_this.document = document;
_this.inner.style.lineHeight = '0';
return _this;
}
HoverRegion.prototype.position = function (node) {
var nodeRect = node.getBoundingClientRect();
var divRect = this.div.getBoundingClientRect();
var xCenter = nodeRect.left + (nodeRect.width / 2);
var left = xCenter - (divRect.width / 2);
left = (left < 0) ? 0 : left;
left = left + window.pageXOffset;
var top;
switch (this.document.options.a11y.align) {
case 'top':
top = nodeRect.top - divRect.height - 10;
break;
case 'bottom':
top = nodeRect.bottom + 10;
break;
case 'center':
default:
var yCenter = nodeRect.top + (nodeRect.height / 2);
top = yCenter - (divRect.height / 2);
}
top = top + window.pageYOffset;
top = (top < 0) ? 0 : top;
this.div.style.top = top + 'px';
this.div.style.left = left + 'px';
};
HoverRegion.prototype.highlight = function (highlighter) {
if (this.inner.firstChild &&
!this.inner.firstChild.hasAttribute('sre-highlight')) {
return;
}
var color = highlighter.colorString();
this.inner.style.backgroundColor = color.background;
this.inner.style.color = color.foreground;
};
HoverRegion.prototype.Show = function (node, highlighter) {
this.div.style.fontSize = this.document.options.a11y.magnify;
this.Update(node);
_super.prototype.Show.call(this, node, highlighter);
};
HoverRegion.prototype.Clear = function () {
this.inner.textContent = '';
this.inner.style.top = '';
this.inner.style.backgroundColor = '';
};
HoverRegion.prototype.Update = function (node) {
this.Clear();
var mjx = this.cloneNode(node);
this.inner.appendChild(mjx);
};
HoverRegion.prototype.cloneNode = function (node) {
var mjx = node.cloneNode(true);
if (mjx.nodeName !== 'MJX-CONTAINER') {
if (mjx.nodeName !== 'g') {
mjx.style.marginLeft = mjx.style.marginRight = '0';
}
var container = node;
while (container && container.nodeName !== 'MJX-CONTAINER') {
container = container.parentNode;
}
if (mjx.nodeName !== 'MJX-MATH' && mjx.nodeName !== 'svg') {
var child = container.firstChild;
mjx = child.cloneNode(false).appendChild(mjx).parentNode;
if (mjx.nodeName === 'svg') {
mjx.firstChild.setAttribute('transform', 'matrix(1 0 0 -1 0 0)');
var W = parseFloat(mjx.getAttribute('viewBox').split(/ /)[2]);
var w = parseFloat(mjx.getAttribute('width'));
var _a = node.getBBox(), x = _a.x, y = _a.y, width = _a.width, height = _a.height;
mjx.setAttribute('viewBox', [x, -(y + height), width, height].join(' '));
mjx.removeAttribute('style');
mjx.setAttribute('width', (w / W * width) + 'ex');
mjx.setAttribute('height', (w / W * height) + 'ex');
container.setAttribute('sre-highlight', 'false');
}
}
mjx = container.cloneNode(false).appendChild(mjx).parentNode;
mjx.style.margin = '0';
}
return mjx;
};
HoverRegion.className = 'MJX_HoverRegion';
HoverRegion.style = new StyleList_js_1.CssStyles((_c = {},
_c['.' + HoverRegion.className] = {
position: 'absolute', height: '1px', width: '1px',
padding: '1px', overflow: 'hidden'
},
_c['.' + HoverRegion.className + '_Show'] = {
position: 'absolute', width: 'max-content', height: 'auto',
padding: '0px 0px', opacity: 1, 'z-index': '202', 'margin': '0 auto',
'background-color': 'rgba(0, 0, 255, 0.2)',
'box-shadow': '0px 10px 20px #888', border: '2px solid #CCCCCC'
},
_c));
return HoverRegion;
}(AbstractRegion));
exports.HoverRegion = HoverRegion;
//# sourceMappingURL=Region.js.map