@wiris/mathtype-ckeditor5 8.13.1 → 8.13.3
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/dist/browser/index.js +133 -27
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/index.umd.js +132 -26
- package/dist/browser/index.umd.js.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/plugin.js +4 -4
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
})(this, (function (exports, ckeditor5) { 'use strict';
|
|
6
6
|
|
|
7
7
|
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
8
|
-
/*! @license DOMPurify 3.2.
|
|
8
|
+
/*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE */
|
|
9
9
|
|
|
10
10
|
const {
|
|
11
11
|
entries,
|
|
@@ -65,6 +65,9 @@
|
|
|
65
65
|
*/
|
|
66
66
|
function unapply(func) {
|
|
67
67
|
return function (thisArg) {
|
|
68
|
+
if (thisArg instanceof RegExp) {
|
|
69
|
+
thisArg.lastIndex = 0;
|
|
70
|
+
}
|
|
68
71
|
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
69
72
|
args[_key - 1] = arguments[_key];
|
|
70
73
|
}
|
|
@@ -206,7 +209,7 @@
|
|
|
206
209
|
const TMPLIT_EXPR = seal(/\$\{[\w\W]*/gm); // eslint-disable-line unicorn/better-regex
|
|
207
210
|
const DATA_ATTR = seal(/^data-[\-\w.\u00B7-\uFFFF]+$/); // eslint-disable-line no-useless-escape
|
|
208
211
|
const ARIA_ATTR = seal(/^aria-[\-\w]+$/); // eslint-disable-line no-useless-escape
|
|
209
|
-
const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i // eslint-disable-line no-useless-escape
|
|
212
|
+
const IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i // eslint-disable-line no-useless-escape
|
|
210
213
|
);
|
|
211
214
|
const IS_SCRIPT_OR_DATA = seal(/^(?:\w+script|data):/i);
|
|
212
215
|
const ATTR_WHITESPACE = seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g // eslint-disable-line no-control-regex
|
|
@@ -294,7 +297,7 @@
|
|
|
294
297
|
function createDOMPurify() {
|
|
295
298
|
let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();
|
|
296
299
|
const DOMPurify = root => createDOMPurify(root);
|
|
297
|
-
DOMPurify.version = '3.2.
|
|
300
|
+
DOMPurify.version = '3.2.6';
|
|
298
301
|
DOMPurify.removed = [];
|
|
299
302
|
if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {
|
|
300
303
|
// Not running in a browser, provide a factory function
|
|
@@ -533,8 +536,8 @@
|
|
|
533
536
|
URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), cfg.ADD_URI_SAFE_ATTR, transformCaseFunc) : DEFAULT_URI_SAFE_ATTRIBUTES;
|
|
534
537
|
DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS') ? addToSet(clone(DEFAULT_DATA_URI_TAGS), cfg.ADD_DATA_URI_TAGS, transformCaseFunc) : DEFAULT_DATA_URI_TAGS;
|
|
535
538
|
FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;
|
|
536
|
-
FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};
|
|
537
|
-
FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};
|
|
539
|
+
FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});
|
|
540
|
+
FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});
|
|
538
541
|
USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;
|
|
539
542
|
ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true
|
|
540
543
|
ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true
|
|
@@ -899,7 +902,7 @@
|
|
|
899
902
|
allowedTags: ALLOWED_TAGS
|
|
900
903
|
});
|
|
901
904
|
/* Detect mXSS attempts abusing namespace confusion */
|
|
902
|
-
if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w]/g, currentNode.innerHTML) && regExpTest(/<[/\w]/g, currentNode.textContent)) {
|
|
905
|
+
if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\w!]/g, currentNode.textContent)) {
|
|
903
906
|
_forceRemove(currentNode);
|
|
904
907
|
return true;
|
|
905
908
|
}
|
|
@@ -1051,7 +1054,8 @@
|
|
|
1051
1054
|
value: attrValue
|
|
1052
1055
|
} = attr;
|
|
1053
1056
|
const lcName = transformCaseFunc(name);
|
|
1054
|
-
|
|
1057
|
+
const initValue = attrValue;
|
|
1058
|
+
let value = name === 'value' ? initValue : stringTrim(initValue);
|
|
1055
1059
|
/* Execute a hook if present */
|
|
1056
1060
|
hookEvent.attrName = lcName;
|
|
1057
1061
|
hookEvent.attrValue = value;
|
|
@@ -1077,10 +1081,9 @@
|
|
|
1077
1081
|
if (hookEvent.forceKeepAttr) {
|
|
1078
1082
|
continue;
|
|
1079
1083
|
}
|
|
1080
|
-
/* Remove attribute */
|
|
1081
|
-
_removeAttribute(name, currentNode);
|
|
1082
1084
|
/* Did the hooks approve of the attribute? */
|
|
1083
1085
|
if (!hookEvent.keepAttr) {
|
|
1086
|
+
_removeAttribute(name, currentNode);
|
|
1084
1087
|
continue;
|
|
1085
1088
|
}
|
|
1086
1089
|
/* Work around a security issue in jQuery 3.0 */
|
|
@@ -1097,6 +1100,7 @@
|
|
|
1097
1100
|
/* Is `value` valid for this attribute? */
|
|
1098
1101
|
const lcTag = transformCaseFunc(currentNode.nodeName);
|
|
1099
1102
|
if (!_isValidAttribute(lcTag, lcName, value)) {
|
|
1103
|
+
_removeAttribute(name, currentNode);
|
|
1100
1104
|
continue;
|
|
1101
1105
|
}
|
|
1102
1106
|
/* Handle attributes that require Trusted Types */
|
|
@@ -1117,19 +1121,23 @@
|
|
|
1117
1121
|
}
|
|
1118
1122
|
}
|
|
1119
1123
|
/* Handle invalid data-* attribute set by try-catching it */
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1124
|
+
if (value !== initValue) {
|
|
1125
|
+
try {
|
|
1126
|
+
if (namespaceURI) {
|
|
1127
|
+
currentNode.setAttributeNS(namespaceURI, name, value);
|
|
1128
|
+
} else {
|
|
1129
|
+
/* Fallback to setAttribute() for browser-unrecognized namespaces e.g. "x-schema". */
|
|
1130
|
+
currentNode.setAttribute(name, value);
|
|
1131
|
+
}
|
|
1132
|
+
if (_isClobbered(currentNode)) {
|
|
1133
|
+
_forceRemove(currentNode);
|
|
1134
|
+
} else {
|
|
1135
|
+
arrayPop(DOMPurify.removed);
|
|
1136
|
+
}
|
|
1137
|
+
} catch (_) {
|
|
1138
|
+
_removeAttribute(name, currentNode);
|
|
1131
1139
|
}
|
|
1132
|
-
}
|
|
1140
|
+
}
|
|
1133
1141
|
}
|
|
1134
1142
|
/* Execute a hook if present */
|
|
1135
1143
|
_executeHooks(hooks.afterSanitizeAttributes, currentNode, null);
|
|
@@ -6277,7 +6285,8 @@
|
|
|
6277
6285
|
this.editor = window.com.wiris.jsEditor.JsEditor.newInstance(this.editorAttributes);
|
|
6278
6286
|
this.editor.insertInto(this.modalDialogInstance.contentContainer);
|
|
6279
6287
|
this.editor.focus();
|
|
6280
|
-
|
|
6288
|
+
// `editor.action("rtl");` toggles the RTL mode based on the current state, it doesn't just switch to RTL.
|
|
6289
|
+
if (this.modalDialogInstance.rtl && !this.editor.getEditorModel().isRTL()) {
|
|
6281
6290
|
this.editor.action("rtl");
|
|
6282
6291
|
}
|
|
6283
6292
|
// Setting div in rtl in case of it's activated.
|
|
@@ -7036,6 +7045,82 @@
|
|
|
7036
7045
|
}
|
|
7037
7046
|
}
|
|
7038
7047
|
|
|
7048
|
+
/**
|
|
7049
|
+
* This module provides protection against external focus management scripts
|
|
7050
|
+
* that might interfere with the MathType editor modal.
|
|
7051
|
+
*/ /**
|
|
7052
|
+
* focusProtection function creates and returns methods to prevent external scripts from
|
|
7053
|
+
* interfering with the focus of the MathType modal dialog.
|
|
7054
|
+
*
|
|
7055
|
+
* @returns {Object} An object with protect and unprotect methods.
|
|
7056
|
+
*/ const focusProtection = ()=>{
|
|
7057
|
+
/**
|
|
7058
|
+
* Initialize focus protection on the given modal element.
|
|
7059
|
+
*
|
|
7060
|
+
* @param {HTMLElement} modalElement - The modal element to protect
|
|
7061
|
+
* @param {HTMLElement} overlayElement - The overlay element of the modal (not used in current implementation)
|
|
7062
|
+
* @param {HTMLElement} editorElement - The editor element inside the modal
|
|
7063
|
+
*/ const protect = (modalElement, overlayElement, editorElement)=>{
|
|
7064
|
+
if (!modalElement || !overlayElement || !editorElement) {
|
|
7065
|
+
console.warn("FocusProtection: Missing required elements");
|
|
7066
|
+
return;
|
|
7067
|
+
}
|
|
7068
|
+
// Apply the focus protection
|
|
7069
|
+
overrideFocusBehavior(modalElement, editorElement);
|
|
7070
|
+
};
|
|
7071
|
+
/**
|
|
7072
|
+
* Apply focus protection by overriding focus-related methods
|
|
7073
|
+
*
|
|
7074
|
+
* @param {HTMLElement} modalElement - The modal element
|
|
7075
|
+
* @param {HTMLElement} editorElement - The editor element to keep focused
|
|
7076
|
+
* @private
|
|
7077
|
+
*/ const overrideFocusBehavior = (modalElement, editorElement)=>{
|
|
7078
|
+
// Store original focus methods to be able to restore them
|
|
7079
|
+
const originalElementFocus = HTMLElement.prototype.focus;
|
|
7080
|
+
const originalElementBlur = HTMLElement.prototype.blur;
|
|
7081
|
+
// Override the focus method for all elements
|
|
7082
|
+
HTMLElement.prototype.focus = function(...args) {
|
|
7083
|
+
// If the modal is open and this is not part of the modal, prevent focus
|
|
7084
|
+
if (modalElement.style.display !== "none" && !modalElement.contains(this) && this !== document.body) {
|
|
7085
|
+
// If some external script is trying to focus another element, prevent it
|
|
7086
|
+
// and restore focus to the editor
|
|
7087
|
+
if (editorElement) {
|
|
7088
|
+
// Use the original focus method to avoid infinite recursion
|
|
7089
|
+
originalElementFocus.apply(editorElement, args);
|
|
7090
|
+
}
|
|
7091
|
+
return;
|
|
7092
|
+
}
|
|
7093
|
+
// Otherwise, allow the focus to happen
|
|
7094
|
+
originalElementFocus.apply(this, args);
|
|
7095
|
+
};
|
|
7096
|
+
// Store the methods to remove them when the modal is closed
|
|
7097
|
+
modalElement.originalElementFocus = originalElementFocus;
|
|
7098
|
+
modalElement.originalElementBlur = originalElementBlur;
|
|
7099
|
+
};
|
|
7100
|
+
/**
|
|
7101
|
+
* Remove focus protection from the modal
|
|
7102
|
+
*
|
|
7103
|
+
* @param {HTMLElement} modalElement - The modal element to unprotect
|
|
7104
|
+
*/ const unprotect = (modalElement)=>{
|
|
7105
|
+
if (!modalElement) {
|
|
7106
|
+
return;
|
|
7107
|
+
}
|
|
7108
|
+
// Restore original focus methods
|
|
7109
|
+
if (modalElement.originalElementFocus) {
|
|
7110
|
+
HTMLElement.prototype.focus = modalElement.originalElementFocus;
|
|
7111
|
+
delete modalElement.originalElementFocus;
|
|
7112
|
+
}
|
|
7113
|
+
if (modalElement.originalElementBlur) {
|
|
7114
|
+
HTMLElement.prototype.blur = modalElement.originalElementBlur;
|
|
7115
|
+
delete modalElement.originalElementBlur;
|
|
7116
|
+
}
|
|
7117
|
+
};
|
|
7118
|
+
return {
|
|
7119
|
+
protect,
|
|
7120
|
+
unprotect
|
|
7121
|
+
};
|
|
7122
|
+
};
|
|
7123
|
+
|
|
7039
7124
|
var closeIcon = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n xmlns:cc=\"http://creativecommons.org/ns#\"\n xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n xmlns:svg=\"http://www.w3.org/2000/svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 13.76 13.76\"\n height=\"13.76\"\n width=\"13.76\"\n id=\"svg3783\"\n version=\"1.1\">\n <metadata\n id=\"metadata3789\">\n <rdf:RDF>\n <cc:Work\n rdf:about=\"\">\n <dc:format>image/svg+xml</dc:format>\n <dc:type\n rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" />\n <dc:title></dc:title>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <defs\n id=\"defs3787\" />\n <image\n y=\"0\"\n x=\"0\"\n id=\"image3791\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAArCAYAAADhXXHAAAAACXBIWXMAAC4jAAAuIwF4pT92AAAB\nvklEQVRYw83Z23GDMBAF0AsNhBIowSVQgjuISnAJKSEdZNOBS6CDOBUkqSC4gs2PyGhAQg92se4M\n4w8bccYW2hVumBmRdAB6ADfopQcw2SOYNoIkAL8APgB8AzgLI0/2S/iy1xkt3B9m9h0dM9/YHxM4\nJ/c4MfPkGX+y763OyYVKgUPQTXAJdC84Bg2CS6Gl4FSoF7wHmgvOhbrgzsW+8L4YJegccrEj749R\ngs7ZXGdz8wbAeNbREcDTzrHvblEgBbAUFACuy6JALJeL0E/P9sbvmBnNojcgAM+oJ58AhrlnWM5Z\nA+C9RmiokakBvIJuNTLSc7hojqY0Mo8EB6Ep2CPBm9BU7BHgKDQHqwlOguZiNcDJ0JLe4FV4iaLY\nJjF16dLqnoob+EdDs8A1QJPBtUCTwDVBo+DaoJvgNvBIR6rDl9wirbA1QIPgVgl6VwHb+dAr7Jkk\nS/Pg3mCkVOslxxV9yBFqSqTA/3N2Utkzye3pftw5OxzQ5tHeddcdzGj3o4VgClUwowgtAVOs3BpF\naA6YUnsDowhNAVNu12UUoVtgCn2+ifxp1wO42Ner4KPR5dJ2tsse2ZLvTQxbVf4AmC2z7WnSvpIA\nAAAASUVORK5CYII=\n\"\n style=\"image-rendering:optimizeQuality\"\n preserveAspectRatio=\"none\"\n height=\"13.76\"\n width=\"13.76\" />\n</svg>\n";
|
|
7040
7125
|
|
|
7041
7126
|
var closeHoverIcon = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n xmlns:cc=\"http://creativecommons.org/ns#\"\n xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n xmlns:svg=\"http://www.w3.org/2000/svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 13.76 13.76\"\n height=\"13.76\"\n width=\"13.76\"\n id=\"svg2\"\n version=\"1.1\">\n <metadata\n id=\"metadata8\">\n <rdf:RDF>\n <cc:Work\n rdf:about=\"\">\n <dc:format>image/svg+xml</dc:format>\n <dc:type\n rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" />\n <dc:title></dc:title>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <defs\n id=\"defs6\" />\n <image\n y=\"0\"\n x=\"0\"\n id=\"image10\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAArCAYAAADhXXHAAAAACXBIWXMAAC4jAAAuIwF4pT92AAAB\n2ElEQVRYw9XZoXPCMBTH8S+5KfDzQ29606CH3/SmQTO96aGHHn/F0Himh8eDZSblQknSJH2F0DtE\nQw8+12vyfulr7XY7LuW4qvj+DugD18AC+AE2woa+/mz07y9cF7Y8d7YPDEtjK2AsCB4BvdLYHPi0\nXawioAA3wAfQaQiKHhuFYl1QSbAL6gWrSKgEuArqBKsEaB1wKNQKVsasHybcpRhwLNQED0zsoMbz\nFwJOhWL6Cmzd2e0D14Wi1/k9di2wFNnAEtBifd9jv4GtIPgaeBOCAkzLFayr/6idWSSY6DJ8sHT9\n6VK6zRFqKwo5gQ+grnKbA/gI6gsy5wRboT7sucBOaBX21GAvNAR7KnAlNBTbNDgIGoMtwO/C0Gko\nNBZbN525tk+dJrAj4F4YGxXgVQS019DkCgarM0OjwCoDaDBYZQINAquMoJVglRnUC1YZQp1g1RB0\nJryn65jYJ0HoRGPHguDX8hsZ6VAiGX4eUrJBbHqSArdN7LLBmCcBnpvYWfHWo6E8Wge8Ar7Kj8E4\nARwcnBPBB20BE7uJBMdAU8BH/YvyBAsFp0BjwNZGi201qALXgYaAnR0hX2upAzwDj/p8raFL5I4u\n8ALc6vNfvc+ztq5al9Rh/AfwZZ/LmlMllAAAAABJRU5ErkJggg==\n\"\n style=\"image-rendering:optimizeQuality\"\n preserveAspectRatio=\"none\"\n height=\"13.76\"\n width=\"13.76\" />\n</svg>\n";
|
|
@@ -7057,6 +7142,7 @@
|
|
|
7057
7142
|
var maxHoverIcon = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<svg\n xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n xmlns:cc=\"http://creativecommons.org/ns#\"\n xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n xmlns:svg=\"http://www.w3.org/2000/svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 13.44 13.76\"\n height=\"13.76\"\n width=\"13.44\"\n id=\"svg22\"\n version=\"1.1\">\n <metadata\n id=\"metadata28\">\n <rdf:RDF>\n <cc:Work\n rdf:about=\"\">\n <dc:format>image/svg+xml</dc:format>\n <dc:type\n rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" />\n <dc:title></dc:title>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <defs\n id=\"defs26\" />\n <image\n y=\"0\"\n x=\"0\"\n id=\"image30\"\n xlink:href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAArCAYAAAAOnxr+AAAACXBIWXMAAC4jAAAuIwF4pT92AAAA\nvUlEQVRYw+3ZsQ3CMBCF4d8WFekZgBqWIDUDZACmYBQWYIn0pGYAegZIexROERHRIBTdhXeVy08+\nyT4/JzMjQmWCVBjoarSugK0z3/0degKODjeyBy5Am8ysARrnnT8nM7sCa+fQLgdAAlQ6ngQVVFBB\nfzeUTK6t8VAwU328ztV6QQUVVFBBBRVUUEG9Ds41sJvZs/8GelDrlw7tAjhvmZLo9o6RD4bEGUp+\nX1My/I0T4HN4rrcASf9M/wp9ASNzIKYYz2hAAAAAAElFTkSuQmCC\n\"\n style=\"image-rendering:optimizeQuality\"\n preserveAspectRatio=\"none\"\n height=\"13.76\"\n width=\"13.44\" />\n</svg>\n";
|
|
7058
7143
|
|
|
7059
7144
|
// eslint-disable-next-line max-classes-per-file
|
|
7145
|
+
const { unprotect, protect } = focusProtection();
|
|
7060
7146
|
/**
|
|
7061
7147
|
* @typedef {Object} DeviceProperties
|
|
7062
7148
|
* @property {String} DeviceProperties.orientation - Indicates of the orientation of the device.
|
|
@@ -7500,12 +7586,28 @@
|
|
|
7500
7586
|
}
|
|
7501
7587
|
if (!ContentManager.isEditorLoaded()) {
|
|
7502
7588
|
const listener = Listeners.newListener("onLoad", ()=>{
|
|
7503
|
-
this.
|
|
7589
|
+
this.displayEditor();
|
|
7504
7590
|
});
|
|
7505
7591
|
this.contentManager.addListener(listener);
|
|
7506
7592
|
} else {
|
|
7507
|
-
this.
|
|
7593
|
+
this.displayEditor();
|
|
7594
|
+
}
|
|
7595
|
+
}
|
|
7596
|
+
/**
|
|
7597
|
+
* Prepares and displays the editor in the modal.
|
|
7598
|
+
*
|
|
7599
|
+
* This method is responsible for displaying the MathType editor inside the modal container.
|
|
7600
|
+
*
|
|
7601
|
+
* For Moodle environments, it applies focus protection to prevent external scripts
|
|
7602
|
+
* from hijacking focus away from the editor while it's open. This is particularly
|
|
7603
|
+
* important in Moodle which may have its own focus management scripts.
|
|
7604
|
+
* @returns {void}
|
|
7605
|
+
*/ displayEditor() {
|
|
7606
|
+
if (this.contentManager.integrationModel.isMoodle) {
|
|
7607
|
+
protect(this.container, this.overlay, this.contentContainer);
|
|
7508
7608
|
}
|
|
7609
|
+
// Initialize and open the editor using the contentManager.
|
|
7610
|
+
this.contentManager.onOpen(this);
|
|
7509
7611
|
}
|
|
7510
7612
|
/**
|
|
7511
7613
|
* Closes the modal.
|
|
@@ -7514,6 +7616,8 @@
|
|
|
7514
7616
|
* If a close trigger is defined, it tracks the telemetry event 'CLOSED_MTCT_EDITOR' with the trigger.
|
|
7515
7617
|
* @returns {Promise<void>} A promise that resolves when the modal is closed.
|
|
7516
7618
|
*/ async close(trigger) {
|
|
7619
|
+
// Remove focus protection before closing
|
|
7620
|
+
unprotect(this.container);
|
|
7517
7621
|
this.removeClass("wrs_maximized");
|
|
7518
7622
|
this.removeClass("wrs_minimized");
|
|
7519
7623
|
this.removeClass("wrs_stack");
|
|
@@ -7536,6 +7640,8 @@
|
|
|
7536
7640
|
/**
|
|
7537
7641
|
* Closes modal window and destroys the object.
|
|
7538
7642
|
*/ destroy() {
|
|
7643
|
+
// Remove focus protection before destroying
|
|
7644
|
+
unprotect(this.container);
|
|
7539
7645
|
// Close modal window.
|
|
7540
7646
|
this.close();
|
|
7541
7647
|
// Remove listeners and destroy the object.
|
|
@@ -11314,7 +11420,7 @@
|
|
|
11314
11420
|
|
|
11315
11421
|
var chemIcon = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Generator: Adobe Illustrator 22.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\n<svg version=\"1.1\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 40.3 49.5\" style=\"enable-background:new 0 0 40.3 49.5;\" xml:space=\"preserve\">\n<style type=\"text/css\">\n\t.st0{fill:#A4CF61;}\n</style>\n<path class=\"st0\" d=\"M39.2,12.1c0-1.9-1.1-3.6-2.7-4.4L24.5,0.9l0,0c-0.7-0.4-1.5-0.6-2.4-0.6c-0.9,0-1.7,0.2-2.4,0.6l0,0L2.3,10.8\n\tl0,0C0.9,11.7,0,13.2,0,14.9h0v19.6h0c0,1.7,0.9,3.3,2.3,4.1l0,0l17.4,9.9l0,0c0.7,0.4,1.5,0.6,2.4,0.6c0.9,0,1.7-0.2,2.4-0.6l0,0\n\tl12.2-6.9h0c1.5-0.8,2.6-2.5,2.6-4.3c0-2.7-2.2-4.9-4.9-4.9c-0.9,0-1.8,0.3-2.5,0.7l0,0l-9.7,5.6l-12.3-7V17.8l12.3-7l9.9,5.7l0,0\n\tc0.7,0.4,1.5,0.6,2.4,0.6C37,17,39.2,14.8,39.2,12.1\"/>\n</svg>\n";
|
|
11316
11422
|
|
|
11317
|
-
var version = "8.13.
|
|
11423
|
+
var version = "8.13.3";
|
|
11318
11424
|
var packageInfo = {
|
|
11319
11425
|
version: version};
|
|
11320
11426
|
|
|
@@ -11497,7 +11603,7 @@
|
|
|
11497
11603
|
const processor = new ckeditor5.XmlDataProcessor(editor.editing.view.document);
|
|
11498
11604
|
// Only god knows why the following line makes viewItem lose all of its children,
|
|
11499
11605
|
// so we obtain isLatex before doing this because we need viewItem's children for that.
|
|
11500
|
-
const upcastWriter = new ckeditor5.
|
|
11606
|
+
const upcastWriter = new ckeditor5.ViewUpcastWriter(editor.editing.view.document);
|
|
11501
11607
|
const viewDocumentFragment = upcastWriter.createDocumentFragment(viewItem.getChildren());
|
|
11502
11608
|
// and obtain the attributes of <math> too!
|
|
11503
11609
|
const mathAttributes = [
|