@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.
@@ -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.4 | (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.4/LICENSE */
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.4';
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
- let value = name === 'value' ? attrValue : stringTrim(attrValue);
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
- try {
1121
- if (namespaceURI) {
1122
- currentNode.setAttributeNS(namespaceURI, name, value);
1123
- } else {
1124
- /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. "x-schema". */
1125
- currentNode.setAttribute(name, value);
1126
- }
1127
- if (_isClobbered(currentNode)) {
1128
- _forceRemove(currentNode);
1129
- } else {
1130
- arrayPop(DOMPurify.removed);
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
- } catch (_) {}
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
- if (this.modalDialogInstance.rtl) {
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.contentManager.onOpen(this);
7589
+ this.displayEditor();
7504
7590
  });
7505
7591
  this.contentManager.addListener(listener);
7506
7592
  } else {
7507
- this.contentManager.onOpen(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.1";
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.UpcastWriter(editor.editing.view.document);
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 = [