@wiris/mathtype-ckeditor5 8.15.1 → 8.15.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../../../../node_modules/dompurify/dist/purify.es.mjs","../../../devkit/src/constants.js","../../../devkit/src/mathml.js","../../../devkit/src/configuration.js","../../../devkit/src/textcache.js","../../../devkit/src/listeners.js","../../../devkit/src/serviceprovider.js","../../../devkit/src/latex.js","../../../devkit/src/stringmanager.js","../../../devkit/src/util.js","../../../devkit/src/image.js","../../../devkit/src/accessibility.js","../../../devkit/src/parser.js","../../../devkit/src/editorlistener.js","../../../devkit/telemeter-wasm/telemeter_wasm.js","../../../devkit/src/telemeter.js","../../../devkit/src/contentmanager.js","../../../devkit/src/customeditors.js","../../../devkit/src/jsvariables.js","../../../devkit/src/event.js","../../../devkit/src/popupmessage.js","../../../devkit/src/focusprotection.js","../../../devkit/src/modal.js","../../../devkit/src/polyfills.js","../../../devkit/src/core.src.js","../../../devkit/src/integrationmodel.js","../../../devkit/src/md5.js","../../src/integration.js","../../src/commands.js","../../src/plugin.js"],"sourcesContent":["/*! @license DOMPurify 3.3.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.1/LICENSE */\n\nconst {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor\n} = Object;\nlet {\n freeze,\n seal,\n create\n} = Object; // eslint-disable-line import/no-mutable-exports\nlet {\n apply,\n construct\n} = typeof Reflect !== 'undefined' && Reflect;\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\nif (!apply) {\n apply = function apply(func, thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n return func.apply(thisArg, args);\n };\n}\nif (!construct) {\n construct = function construct(Func) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n return new Func(...args);\n };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return function (thisArg) {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return apply(func, thisArg, args);\n };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(Func) {\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return construct(Func, args);\n };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n for (const [property, value] of entries(object)) {\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns', 'slot']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n// eslint-disable-next-line unicorn/better-regex\nconst MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nconst ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nconst TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst 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\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\nvar EXPRESSIONS = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ARIA_ATTR: ARIA_ATTR,\n ATTR_WHITESPACE: ATTR_WHITESPACE,\n CUSTOM_ELEMENT: CUSTOM_ELEMENT,\n DATA_ATTR: DATA_ATTR,\n DOCTYPE_NAME: DOCTYPE_NAME,\n ERB_EXPR: ERB_EXPR,\n IS_ALLOWED_URI: IS_ALLOWED_URI,\n IS_SCRIPT_OR_DATA: IS_SCRIPT_OR_DATA,\n MUSTACHE_EXPR: MUSTACHE_EXPR,\n TMPLIT_EXPR: TMPLIT_EXPR\n});\n\n/* eslint-disable @typescript-eslint/indent */\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n progressingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n};\nconst getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\nconst _createHooksMap = function _createHooksMap() {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n};\nfunction createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n DOMPurify.version = '3.3.1';\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let {\n document\n } = window;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes\n } = window;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName\n } = document;\n const {\n importNode\n } = originalDocument;\n let hooks = _createHooksMap();\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n CUSTOM_ELEMENT\n } = EXPRESSIONS;\n let {\n IS_ALLOWED_URI: IS_ALLOWED_URI$1\n } = EXPRESSIONS;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n tagCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n }\n }));\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n /* Decide if document with <html>... should be returned */\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS') ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR') ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES') ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString) : DEFAULT_ALLOWED_NAMESPACES;\n 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;\n 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;\n FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS') ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS') ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : clone({});\n FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR') ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : clone({});\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n MATHML_TEXT_INTEGRATION_POINTS = cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n HTML_INTEGRATION_POINTS = cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (typeof cfg.ADD_TAGS === 'function') {\n EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n } else {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n }\n if (cfg.ADD_ATTR) {\n if (typeof cfg.ADD_ATTR === 'function') {\n EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n } else {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n }\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n if (cfg.ADD_FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n }\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n }\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n remove(node);\n }\n };\n /**\n * _removeAttribute\n *\n * @param name an Attribute name\n * @param element a DOM node\n */\n const _removeAttribute = function _removeAttribute(name, element) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: element.getAttributeNode(name),\n from: element\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: element\n });\n }\n element.removeAttribute(name);\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n const dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n /**\n * _isClobbered\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(element) {\n return element instanceof HTMLFormElement && (typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' || !(element.attributes instanceof NamedNodeMap) || typeof element.removeAttribute !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function');\n };\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param value object to check whether it's a DOM node\n * @return true is object is a DOM node\n */\n const _isNode = function _isNode(value) {\n return typeof Node === 'function' && value instanceof Node;\n };\n function _executeHooks(hooks, currentNode, data) {\n arrayForEach(hooks, hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode) {\n let content = null;\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(/<[/\\w!]/g, currentNode.innerHTML) && regExpTest(/<[/\\w!]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(/<[/\\w]/g, currentNode.data)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove element if anything forbids its presence */\n if (!(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName])) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) {\n return false;\n }\n }\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n for (let i = childCount - 1; i >= 0; --i) {\n const childClone = cloneNode(childNodes[i], true);\n childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n parentNode.insertBefore(childClone, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n }\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n content = currentNode.textContent;\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n content = stringReplace(content, expr, ' ');\n });\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) ; else if (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _isBasicCustomElement(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))) ; else if (value) {\n return false;\n } else ;\n return true;\n };\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n const {\n attributes\n } = currentNode;\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined\n };\n let l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const {\n name,\n namespaceURI,\n value: attrValue\n } = attr;\n const lcName = transformCaseFunc(name);\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title|textarea)/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n if (lcName === 'attributename' && stringMatch(value, 'href')) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n value = stringReplace(value, expr, ' ');\n });\n }\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n /* Handle attributes that require Trusted Types */\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n case 'TrustedScriptURL':\n {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n } else {\n arrayPop(DOMPurify.removed);\n }\n } catch (_) {\n _removeAttribute(name, currentNode);\n }\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode);\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode);\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n }\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], expr => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function (entryPoint, hookFunction) {\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n return arrayPop(hooks[entryPoint]);\n };\n DOMPurify.removeHooks = function (entryPoint) {\n hooks[entryPoint] = [];\n };\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n","/**\n * This class represents all the constants needed in a MathType integration among different classes.\n * If a constant should be used across different classes should be defined using attribute\n * accessors.\n */\nexport default class Constants {\n /**\n * Safe XML entities.\n * @type {Object}\n */\n static get safeXmlCharactersEntities() {\n return {\n tagOpener: \"&laquo;\",\n tagCloser: \"&raquo;\",\n doubleQuote: \"&uml;\",\n realDoubleQuote: \"&quot;\",\n };\n }\n\n /**\n * Blackboard invalid safe characters.\n * @type {Object}\n */\n static get safeBadBlackboardCharacters() {\n return {\n ltElement: \"«mo»<«/mo»\",\n gtElement: \"«mo»>«/mo»\",\n ampElement: \"«mo»&«/mo»\",\n };\n }\n\n /**\n * Blackboard valid safe characters.\n * @type{Object}\n */\n static get safeGoodBlackboardCharacters() {\n return {\n ltElement: \"«mo»§lt;«/mo»\",\n gtElement: \"«mo»§gt;«/mo»\",\n ampElement: \"«mo»§amp;«/mo»\",\n };\n }\n\n /**\n * Standard XML special characters.\n * @type {Object}\n */\n static get xmlCharacters() {\n return {\n id: \"xmlCharacters\",\n tagOpener: \"<\", // Hex: \\x3C.\n tagCloser: \">\", // Hex: \\x3E.\n doubleQuote: '\"', // Hex: \\x22.\n ampersand: \"&\", // Hex: \\x26.\n quote: \"'\", // Hex: \\x27.\n };\n }\n\n /**\n * Safe XML special characters. This characters are used instead the standard\n * the standard to parse the MathML if safeXML save mode is enable. Each XML\n * special character have a UTF-8 representation.\n * @type {Object}\n */\n static get safeXmlCharacters() {\n return {\n id: \"safeXmlCharacters\",\n tagOpener: \"«\", // Hex: \\xAB.\n tagCloser: \"»\", // Hex: \\xBB.\n doubleQuote: \"¨\", // Hex: \\xA8.\n ampersand: \"§\", // Hex: \\xA7.\n quote: \"`\", // Hex: \\x60.\n realDoubleQuote: \"¨\",\n };\n }\n}\n","import Constants from \"./constants\";\nimport Util from \"./util\";\n\n/**\n * @classdesc\n * This class represents a class to manage MathML objects.\n */\nexport default class MathML {\n /**\n * Checks if the mathml at position i is inside an HTML attribute or not.\n * @param {string} content - a string containing MathML code.\n * @param {number} i - search index.\n * @return {boolean} true if is inside an HTML attribute. false otherwise.\n */\n static isMathmlInAttribute(content, i) {\n // Regex =\n // '^[\\'\"][\\\\s]*=[\\\\s]*[\\\\w-]+([\\\\s]*(\"[^\"]*\"|\\'[^\\']*\\')[\\\\s]*\n // =[\\\\s]*[\\\\w-]+[\\\\s]*)*[\\\\s]+gmi<';\n const mathAtt = \"['\\\"][\\\\s]*=[\\\\s]*[\\\\w-]+\"; // \"=att OR '=att\n const attContent = \"\\\"[^\\\"]*\\\"|'[^']*'\"; // \"blabla\" OR 'blabla'\n const att = `[\\\\s]*(${attContent})[\\\\s]*=[\\\\s]*[\\\\w-]+[\\\\s]*`; // \"blabla\"=att OR 'blabla'=att\n const atts = `('${att}')*`; // \"blabla\"=att1 \"blabla\"=att2\n const regex = `^${mathAtt}${atts}[\\\\s]+gmi<`; // \"=att \"blabla\"=att1 \"blabla\"=att2 gmi< .\n const expression = new RegExp(regex);\n\n const actualContent = content.substring(0, i);\n const reversed = actualContent.split(\"\").reverse().join(\"\");\n const exists = expression.test(reversed);\n\n return exists;\n }\n\n /**\n * Decodes an encoded MathML with standard XML tags.\n * We use these entities because IE doesn't support html entities\n * on its attributes sometimes. Yes, sometimes.\n * @param {string} input - string to be decoded.\n * @return {string} decoded string.\n */\n static safeXmlDecode(input) {\n let { tagOpener } = Constants.safeXmlCharactersEntities;\n let { tagCloser } = Constants.safeXmlCharactersEntities;\n let { doubleQuote } = Constants.safeXmlCharactersEntities;\n let { realDoubleQuote } = Constants.safeXmlCharactersEntities;\n // Decoding entities.\n input = input.split(tagOpener).join(Constants.safeXmlCharacters.tagOpener);\n input = input.split(tagCloser).join(Constants.safeXmlCharacters.tagCloser);\n input = input.split(doubleQuote).join(Constants.safeXmlCharacters.doubleQuote);\n // Added to fix problem due to import from 1.9.x.\n input = input.split(realDoubleQuote).join(Constants.safeXmlCharacters.realDoubleQuote);\n\n // Blackboard.\n const { ltElement } = Constants.safeBadBlackboardCharacters;\n const { gtElement } = Constants.safeBadBlackboardCharacters;\n const { ampElement } = Constants.safeBadBlackboardCharacters;\n if (\"_wrs_blackboard\" in window && window._wrs_blackboard) {\n input = input.split(ltElement).join(Constants.safeGoodBlackboardCharacters.ltElement);\n input = input.split(gtElement).join(Constants.safeGoodBlackboardCharacters.gtElement);\n input = input.split(ampElement).join(Constants.safeGoodBlackboardCharacters.ampElement);\n }\n\n ({ tagOpener } = Constants.safeXmlCharacters);\n ({ tagCloser } = Constants.safeXmlCharacters);\n ({ doubleQuote } = Constants.safeXmlCharacters);\n ({ realDoubleQuote } = Constants.safeXmlCharacters);\n const { ampersand } = Constants.safeXmlCharacters;\n const { quote } = Constants.safeXmlCharacters;\n\n // Decoding characters.\n input = input.split(tagOpener).join(Constants.xmlCharacters.tagOpener);\n input = input.split(tagCloser).join(Constants.xmlCharacters.tagCloser);\n input = input.split(doubleQuote).join(Constants.xmlCharacters.doubleQuote);\n input = input.split(ampersand).join(Constants.xmlCharacters.ampersand);\n input = input.split(quote).join(Constants.xmlCharacters.quote);\n\n // We are replacing $ by & when its part of an entity for retro-compatibility.\n // Now, the standard is replace § by &.\n let returnValue = \"\";\n let currentEntity = null;\n\n for (let i = 0; i < input.length; i += 1) {\n const character = input.charAt(i);\n if (currentEntity == null) {\n if (character === \"$\") {\n currentEntity = \"\";\n } else {\n returnValue += character;\n }\n } else if (character === \";\") {\n returnValue += `&${currentEntity}`;\n currentEntity = null;\n } else if (character.match(/([a-zA-Z0-9#._-] | '-')/)) {\n // Character is part of an entity.\n currentEntity += character;\n } else {\n returnValue += `$${currentEntity}`; // Is not an entity.\n currentEntity = null;\n i -= 1; // Parse again the current character.\n }\n }\n\n return returnValue;\n }\n\n /**\n * Encodes a MathML with standard XML tags to a MMathML encoded with safe XML tags.\n * We use these entities because IE doesn't support html entities on its attributes sometimes.\n * @param {string} input - input string to be encoded\n * @returns {string} encoded string.\n */\n static safeXmlEncode(input) {\n const { tagOpener } = Constants.xmlCharacters;\n const { tagCloser } = Constants.xmlCharacters;\n const { doubleQuote } = Constants.xmlCharacters;\n const { ampersand } = Constants.xmlCharacters;\n const { quote } = Constants.xmlCharacters;\n\n input = input.split(tagOpener).join(Constants.safeXmlCharacters.tagOpener);\n input = input.split(tagCloser).join(Constants.safeXmlCharacters.tagCloser);\n input = input.split(doubleQuote).join(Constants.safeXmlCharacters.doubleQuote);\n input = input.split(ampersand).join(Constants.safeXmlCharacters.ampersand);\n input = input.split(quote).join(Constants.safeXmlCharacters.quote);\n\n return input;\n }\n\n /**\n * Converts special symbols (> 128) to entities and replaces all textual\n * entities by its number entities.\n * @param {string} mathml - MathML string containing - or not - special symbols\n * @returns {string} MathML with all textual entities replaced.\n */\n static mathMLEntities(mathml) {\n let toReturn = \"\";\n\n for (let i = 0; i < mathml.length; i += 1) {\n const character = mathml.charAt(i);\n\n // Parsing > 128 characters.\n if (mathml.codePointAt(i) > 128) {\n toReturn += `&#${mathml.codePointAt(i)};`;\n // For UTF-32 characters we need to move the index one position.\n if (mathml.codePointAt(i) > 0xffff) {\n i += 1;\n }\n } else if (character === \"&\") {\n const end = mathml.indexOf(\";\", i + 1);\n if (end >= 0) {\n const container = document.createElement(\"span\");\n container.innerHTML = mathml.substring(i, end + 1);\n toReturn += `&#${Util.fixedCharCodeAt(container.textContent || container.innerText, 0)};`;\n i = end;\n } else {\n toReturn += character;\n }\n } else {\n toReturn += character;\n }\n }\n\n return toReturn;\n }\n\n /**\n * Add a custom editor name with the prefix wrs_ to a MathML class attribute.\n * @param {string} mathml - a MathML string created with a custom editor, like chemistry.\n * @param {string} customEditor - custom editor name.\n * @returns {string} MathML string with his class containing the editor toolbar string.\n */\n static addCustomEditorClassAttribute(mathml, customEditor) {\n let toReturn = \"\";\n\n const start = mathml.indexOf(\"<math\");\n if (start === 0) {\n const end = mathml.indexOf(\">\");\n if (mathml.indexOf(\"class\") === -1) {\n // Adding custom editor type.\n toReturn = `${mathml.substr(start, end)} class=\"wrs_${customEditor}\">`;\n toReturn += mathml.substr(end + 1, mathml.length);\n return toReturn;\n }\n }\n return mathml;\n }\n\n /**\n * Remove a custom editor name from the MathML class attribute.\n * @param {string} mathml - a MathML string.\n * @param {string} customEditor - custom editor name.\n * @returns {string} The input MathML without customEditor name in his class.\n */\n static removeCustomEditorClassAttribute(mathml, customEditor) {\n // Discard MathML without the specified class.\n if (mathml.indexOf(\"class\") === -1 || mathml.indexOf(`wrs_${customEditor}`) === -1) {\n return mathml;\n }\n\n // Trivial case: class attribute value equal to editor name. Then\n // class attribute is removed.\n // First try to remove it with a space before if there is one\n // Otherwise without the space\n if (mathml.indexOf(` class=\"wrs_${customEditor}\"`) !== -1) {\n return mathml.replace(` class=\"wrs_${customEditor}\"`, \"\");\n }\n if (mathml.indexOf(`class=\"wrs_${customEditor}\"`) !== -1) {\n return mathml.replace(`class=\"wrs_${customEditor}\"`, \"\");\n }\n\n // Non Trivial case: class attribute contains editor name.\n return mathml.replace(`wrs_${customEditor}`, \"\");\n }\n\n /**\n * Adds annotation tag in MathML element.\n * @param {String} mathml - valid MathML.\n * @param {String} content - value to put inside annotation tag.\n * @param {String} annotationEncoding - annotation encoding.\n * @returns {String} - 'mathml' with an annotation that contains\n * 'content' and encoding 'encoding'.\n */\n static addAnnotation(mathml, content, annotationEncoding) {\n // If contains annotation, also contains semantics tag.\n const containsAnnotation = mathml.indexOf(\"<annotation\");\n\n let mathmlWithAnnotation = \"\";\n if (containsAnnotation !== -1) {\n const closeSemanticsIndex = mathml.indexOf(\"</semantics>\");\n mathmlWithAnnotation = `${mathml.substring(0, closeSemanticsIndex)}<annotation encoding=\"${annotationEncoding}\">${content}</annotation>${mathml.substring(closeSemanticsIndex)}`;\n } else if (MathML.isEmpty(mathml)) {\n const endIndexInline = mathml.indexOf(\"/>\");\n const endIndexNonInline = mathml.indexOf(\">\");\n const endIndex = endIndexNonInline === endIndexInline ? endIndexInline : endIndexNonInline;\n mathmlWithAnnotation = `${mathml.substring(0, endIndex)}><semantics><annotation encoding=\"${annotationEncoding}\">${content}</annotation></semantics></math>`;\n } else {\n const beginMathMLContent = mathml.indexOf(\">\") + 1;\n const endMathmlContent = mathml.lastIndexOf(\"</math>\");\n const mathmlContent = mathml.substring(beginMathMLContent, endMathmlContent);\n mathmlWithAnnotation = `${mathml.substring(0, beginMathMLContent)}<semantics><mrow>${mathmlContent}</mrow><annotation encoding=\"${annotationEncoding}\">${content}</annotation></semantics></math>`; // eslint-disable-line max-len\n }\n\n return mathmlWithAnnotation;\n }\n\n /**\n * Removes specific annotation tag in MathML element.\n * In case of remove the unique annotation, also is removed semantics tag.\n * @param {String} mathml - valid MathML.\n * @param {String} annotationEncoding - annotation encoding to remove.\n * @returns {String} - 'mathml' without the annotation encoding specified.\n */\n static removeAnnotation(mathml, annotationEncoding) {\n let mathmlWithoutAnnotation = mathml;\n const openAnnotationTag = `<annotation encoding=\"${annotationEncoding}\">`;\n const closeAnnotationTag = \"</annotation>\";\n const startAnnotationIndex = mathml.indexOf(openAnnotationTag);\n if (startAnnotationIndex !== -1) {\n let differentAnnotationFound = false;\n let differentAnnotationIndex = mathml.indexOf(\"<annotation\");\n while (differentAnnotationIndex !== -1) {\n if (differentAnnotationIndex !== startAnnotationIndex) {\n differentAnnotationFound = true;\n }\n differentAnnotationIndex = mathml.indexOf(\"<annotation\", differentAnnotationIndex + 1);\n }\n\n if (differentAnnotationFound) {\n const closeIndex = mathml.indexOf(closeAnnotationTag, startAnnotationIndex);\n const endAnnotationIndex = closeIndex + closeAnnotationTag.length;\n const startIndex = mathml.substring(0, startAnnotationIndex);\n mathmlWithoutAnnotation = startIndex + mathml.substring(endAnnotationIndex);\n } else {\n mathmlWithoutAnnotation = MathML.removeSemantics(mathml);\n }\n }\n\n return mathmlWithoutAnnotation;\n }\n\n /**\n * Removes semantics tag to mathml.\n * When using Hand to create formulas, it adds the mrow tag due to the semantics one, this one is also removed.\n * @param {string} mathml - MathML string.\n * @returns {string} - 'mathml' without semantics tag.\n */\n static removeSemantics(mathml) {\n // If `mrow` is found right before the `semantics` starting tag, it's removed as well\n const semanticsStartingTagRegex = /<semantics>\\s*?(<mrow>)?/gm;\n\n // If `mrow` is found right after the `annotation` ending tag, it's removed as well\n // alongside `semantics` closing tag and the whole `annotation` tag and its contents.\n const semanticsEndingTagRegex = /(<\\/mrow>)?\\s*<annotation[\\W\\w]*?<\\/semantics>/gm;\n\n return mathml.replace(semanticsStartingTagRegex, \"\").replace(semanticsEndingTagRegex, \"\");\n }\n\n /**\n * Removes semantics tag to element that contains mathml.\n * When using Hand to create formulas, it adds the mrow tag due to the semantics one, this one is also removed.\n * @param {string} element - Inner HTML text string.\n * @returns {string} - 'mathml' without semantics tag.\n */\n static removeSafeXMLSemantics(element) {\n // If `mrow` is found right before the `semantics` starting tag, it's removed as well\n const semanticsSafeStartingTagRegex = /«semantics»\\s*?(«mrow»)?/gm;\n\n // If `mrow` is found right after the `annotation` ending tag, it's removed as well\n // alongside `semantics` closing tag and the whole `annotation` tag and its contents.\n const semanticsSafeEndingTagRegex = /(«\\/mrow»)?\\s*«annotation[\\W\\w]*?«\\/semantics»/gm;\n\n return element.replace(semanticsSafeStartingTagRegex, \"\").replace(semanticsSafeEndingTagRegex, \"\");\n }\n\n /**\n * Transforms all xml mathml occurrences that contain semantics to the same\n * xml mathml occurrences without semantics.\n * @param {string} text - string that can contain xml mathml occurrences.\n * @param {Constants} [characters] - Constant object containing xmlCharacters\n * or safeXmlCharacters relation.\n * xmlCharacters by default.\n * @returns {string} - 'text' with all xml mathml occurrences without annotation tag.\n */\n static removeSemanticsOcurrences(text, characters = Constants.xmlCharacters) {\n const mathTagStart = `${characters.tagOpener}math`;\n const mathTagEnd = `${characters.tagOpener}/math${characters.tagCloser}`;\n const mathTagEndline = `/${characters.tagCloser}`;\n const { tagCloser } = characters;\n const semanticsTagStart = `${characters.tagOpener}semantics${characters.tagCloser}`;\n const annotationTagStart = `${characters.tagOpener}annotation encoding=`;\n\n let output = \"\";\n let start = text.indexOf(mathTagStart);\n let end = 0;\n while (start !== -1) {\n output += text.substring(end, start);\n\n // MathML can be written as '<math></math>' or '<math />'.\n const mathTagEndIndex = text.indexOf(mathTagEnd, start);\n const mathTagEndlineIndex = text.indexOf(mathTagEndline, start);\n const firstTagCloser = text.indexOf(tagCloser, start);\n if (mathTagEndIndex !== -1) {\n end = mathTagEndIndex;\n } else if (mathTagEndlineIndex === firstTagCloser - 1) {\n end = mathTagEndlineIndex;\n }\n\n const semanticsIndex = text.indexOf(semanticsTagStart, start);\n if (semanticsIndex !== -1) {\n const mmlTagStart = text.substring(start, semanticsIndex);\n const annotationIndex = text.indexOf(annotationTagStart, start);\n if (annotationIndex !== -1) {\n const startIndex = semanticsIndex + semanticsTagStart.length;\n const mmlContent = text.substring(startIndex, annotationIndex);\n output += mmlTagStart + mmlContent + mathTagEnd;\n start = text.indexOf(mathTagStart, start + mathTagStart.length);\n end += mathTagEnd.length;\n } else {\n end = start;\n start = text.indexOf(mathTagStart, start + mathTagStart.length);\n }\n } else {\n end = start;\n start = text.indexOf(mathTagStart, start + mathTagStart.length);\n }\n }\n\n output += text.substring(end, text.length);\n return output;\n }\n\n /**\n * Returns true if a MathML contains a certain class.\n * @param {string} mathML - input MathML.\n * @param {string} className - className.\n * @returns {boolean} true if the input MathML contains the input class.\n * false otherwise.\n * @static\n */\n static containClass(mathML, className) {\n const classIndex = mathML.indexOf(\"class\");\n if (classIndex === -1) {\n return false;\n }\n const classTagEndIndex = mathML.indexOf(\">\", classIndex);\n const classTag = mathML.substring(classIndex, classTagEndIndex);\n if (classTag.indexOf(className) !== -1) {\n return true;\n }\n return false;\n }\n\n /**\n * Returns true if mathml is empty. Otherwise, false.\n * @param {string} mathml - valid MathML with standard XML tags.\n * @returns {boolean} - true if mathml is empty. Otherwise, false.\n */\n static isEmpty(mathml) {\n // MathML can have the shape <math></math> or '<math />'.\n const closeTag = \">\";\n const closeTagInline = \"/>\";\n const firstCloseTagIndex = mathml.indexOf(closeTag);\n const firstCloseTagInlineIndex = mathml.indexOf(closeTagInline);\n let empty = false;\n // MathML is always empty in the second shape.\n if (firstCloseTagInlineIndex !== -1) {\n if (firstCloseTagInlineIndex === firstCloseTagIndex - 1) {\n empty = true;\n }\n }\n\n // MathML is always empty in the first shape when there aren't elements\n // between math tags.\n if (!empty) {\n const mathTagEndRegex = new RegExp(\"</(.+:)?math>\");\n const mathTagEndArray = mathTagEndRegex.exec(mathml);\n if (mathTagEndArray) {\n empty = firstCloseTagIndex + 1 === mathTagEndArray.index;\n }\n }\n\n return empty;\n }\n\n /**\n * Encodes html entities inside properties.\n * @param {String} mathml - valid MathML with standard XML tags.\n * @returns {String} - 'mathml' with property entities encoded.\n */\n static encodeProperties(mathml) {\n // Search all the properties.\n const regex = /\\w+=\".*?\"/g;\n // Encode html entities.\n const replacer = (match) => {\n // It has the shape:\n // <math propertyOne=\"somethingOne\"><children propertyTwo=\"somethingTwo\"></children></math>.\n const quoteIndex = match.indexOf('\"');\n const propertyValue = match.substring(quoteIndex + 1, match.length - 1);\n const propertyValueEncoded = Util.htmlEntities(propertyValue);\n const matchEncoded = `${match.substring(0, quoteIndex + 1)}${propertyValueEncoded}\"`;\n return matchEncoded;\n };\n\n const mathmlEncoded = mathml.replace(regex, replacer);\n return mathmlEncoded;\n }\n}\n","/**\n * This class represents the configuration class.\n * Usually used to retrieve configuration properties generated in the backend into the frontend.\n */\nexport default class Configuration {\n /**\n * Adds a properties object to {@link Configuration.properties}.\n * @param {Object} properties - properties to append to current properties.\n */\n static addConfiguration(properties) {\n Object.assign(Configuration.properties, properties);\n }\n\n /**\n * Static property.\n * The configuration properties object.\n * @private\n * @type {Object}\n */\n static get properties() {\n return Configuration._properties;\n }\n\n /**\n * Static property setter.\n * Set configuration properties.\n * @param {Object} value - The property value.\n * @ignore\n */\n static set properties(value) {\n Configuration._properties = value;\n }\n\n /**\n * Returns the value of a property key.\n * @param {String} key - Property key\n * @returns {String} Property value\n */\n static get(key) {\n if (!Object.prototype.hasOwnProperty.call(Configuration.properties, key)) {\n // Backwards compatibility.\n if (Object.prototype.hasOwnProperty.call(Configuration.properties, \"_wrs_conf_\")) {\n return Configuration.properties[`_wrs_conf_${key}`];\n }\n return false;\n }\n return Configuration.properties[key];\n }\n\n /**\n * Adds a new property to Configuration class.\n * @param {String} key - Property key.\n * @param {Object} value - Property value.\n */\n static set(key, value) {\n Configuration.properties[key] = value;\n }\n\n /**\n * Updates a property object value with new values.\n * @param {String} key - The property key to be updated.\n * @param {Object} propertyValue - Object containing the new values.\n */\n static update(key, propertyValue) {\n if (!Configuration.get(key)) {\n Configuration.set(key, propertyValue);\n } else {\n const updateProperty = Object.assign(Configuration.get(key), propertyValue);\n Configuration.set(key, updateProperty);\n }\n }\n}\n\n/**\n * Static properties object. Stores all configuration properties.\n * Needed to attribute accessors.\n * @private\n * @type {Object}\n */\nConfiguration._properties = {};\n","export default class TextCache {\n /**\n * @classdesc\n * This class represent a client-side text cache class. Contains pairs of\n * strings (key/value) which can be retrieved in any moment. Usually used\n * to store AJAX responses for text services like mathml2latex\n * (c.f {@link Latex} class) or mathml2accessible (c.f {@link Accessibility} class).\n * @constructs\n */\n constructor() {\n /**\n * Cache array property storing the cache entries.\n * @type {Array.<String>}\n */\n this.cache = [];\n }\n\n /**\n * This method populates a key/value pair into the {@link this.cache} property.\n * @param {String} key - Cache key, usually the service string parameter.\n * @param {String} value - Cache value, usually the service response.\n */\n populate(key, value) {\n this.cache[key] = value;\n }\n\n /**\n * Returns the cache value associated to certain cache key.\n * @param {String} key - Cache key, usually the service string parameter.\n * @return {String} value - Cache value, if exists. False otherwise.\n */\n get(key) {\n if (Object.prototype.hasOwnProperty.call(this.cache, key)) {\n return this.cache[key];\n }\n return false;\n }\n}\n","/**\n * This object represents a custom listener.\n * @typedef {Object} Listener\n * @property {String} Listener.eventName - The listener name.\n * @property {Function} Listener.callback - The listener callback function.\n */\n\nexport default class Listeners {\n /**\n * @classdesc\n * This class represents a custom listeners manager.\n * @constructs\n */\n constructor() {\n /**\n * Array containing all custom listeners.\n * @type {Object[]}\n */\n this.listeners = [];\n }\n\n /**\n * Add a listener to Listener class.\n * @param {Object} listener - A listener object.\n */\n add(listener) {\n this.listeners.push(listener);\n }\n\n /**\n * Fires MathType event listeners\n * @param {String} eventName - event name\n * @param {Event} event - event object.\n * @return {boolean} false if event has been prevented. true otherwise.\n */\n fire(eventName, event) {\n for (let i = 0; i < this.listeners.length && !event.cancelled; i += 1) {\n if (this.listeners[i].eventName === eventName) {\n // Calling listener.\n this.listeners[i].callback(event);\n }\n }\n return event.defaultPrevented;\n }\n\n /**\n * Creates a new listener object.\n * @param {string} eventName - Event name.\n * @param {Object} callback - Callback function.\n * @returns {object} the listener object.\n */\n static newListener(eventName, callback) {\n const listener = {};\n listener.eventName = eventName;\n listener.callback = callback;\n return listener;\n }\n}\n","import Util from \"./util\";\nimport Listeners from \"./listeners\";\nimport Configuration from \"./configuration\";\n\n/**\n * @typedef {Object} ServiceProviderProperties\n * @property {String} URI - Service URI.\n * @property {String} server - Service server language.\n */\n\n/**\n * @classdesc\n * Class representing a serviceProvider. A serviceProvider is a class containing\n * an arbitrary number of services with the correspondent path.\n */\nexport default class ServiceProvider {\n /**\n * Returns Service Provider listeners.\n * @type {Listeners}\n */\n static get listeners() {\n return ServiceProvider._listeners;\n }\n\n /**\n * Adds a {@link Listener} instance to {@link ServiceProvider} class.\n * @param {Listener} listener - Instance of {@link Listener}.\n */\n static addListener(listener) {\n ServiceProvider.listeners.add(listener);\n }\n\n /**\n * Fires events in Service Provider.\n * @param {String} eventName - Event name.\n * @param {Event} event - Event object.\n */\n static fireEvent(eventName, event) {\n ServiceProvider.listeners.fire(eventName, event);\n }\n\n /**\n * Service parameters.\n * @type {ServiceProviderProperties}\n *\n */\n static get parameters() {\n return ServiceProvider._parameters;\n }\n\n /**\n * Service parameters.\n * @private\n * @type {ServiceProviderProperties}\n */\n static set parameters(parameters) {\n ServiceProvider._parameters = parameters;\n }\n\n /**\n * Static property.\n * Return service provider paths.\n * @private\n * @type {String}\n */\n static get servicePaths() {\n return ServiceProvider._servicePaths;\n }\n\n /**\n * Static property setter.\n * Set service paths.\n * @param {String} value - The property value.\n * @ignore\n */\n static set servicePaths(value) {\n ServiceProvider._servicePaths = value;\n }\n\n /**\n * Adds a new service to the ServiceProvider.\n * @param {String} service - Service name.\n * @param {String} path - Service path.\n * @static\n */\n static setServicePath(service, path) {\n ServiceProvider.servicePaths[service] = path;\n }\n\n /**\n * Returns the service path for a certain service.\n * @param {String} serviceName - Service name.\n * @returns {String} The service path.\n * @static\n */\n static getServicePath(serviceName) {\n return ServiceProvider.servicePaths[serviceName];\n }\n\n /**\n * Static property.\n * Service provider integration path.\n * @type {String}\n */\n static get integrationPath() {\n return ServiceProvider._integrationPath;\n }\n\n /**\n * Static property setter.\n * Set service provider integration path.\n * @param {String} value - The property value.\n * @ignore\n */\n static set integrationPath(value) {\n ServiceProvider._integrationPath = value;\n }\n\n /**\n * Returns the server URL in the form protocol://serverName:serverPort.\n * @return {String} The client side server path.\n */\n static getServerURL() {\n const url = window.location.href;\n const arr = url.split(\"/\");\n const result = `${arr[0]}//${arr[2]}`;\n return result;\n }\n\n /**\n * Inits {@link this} class. Uses {@link this.integrationPath} as\n * base path to generate all backend services paths.\n * @param {Object} parameters - Function parameters.\n * @param {String} parameters.integrationPath - Service path.\n */\n static init(parameters) {\n ServiceProvider.parameters = parameters;\n // Services path (tech dependant).\n let configurationURI = ServiceProvider.createServiceURI(\"configurationjs\");\n let createImageURI = ServiceProvider.createServiceURI(\"createimage\");\n let showImageURI = ServiceProvider.createServiceURI(\"showimage\");\n let getMathMLURI = ServiceProvider.createServiceURI(\"getmathml\");\n let serviceURI = ServiceProvider.createServiceURI(\"service\");\n\n // Some backend integrations (like Java o Ruby) have an absolute backend path,\n // for example: /app/service. For them we calculate the absolute URL path, i.e\n // protocol://domain:port/app/service\n if (ServiceProvider.parameters.URI.indexOf(\"/\") === 0) {\n const serverPath = ServiceProvider.getServerURL();\n configurationURI = serverPath + configurationURI;\n showImageURI = serverPath + showImageURI;\n createImageURI = serverPath + createImageURI;\n getMathMLURI = serverPath + getMathMLURI;\n serviceURI = serverPath + serviceURI;\n }\n\n ServiceProvider.setServicePath(\"configurationjs\", configurationURI);\n ServiceProvider.setServicePath(\"showimage\", showImageURI);\n ServiceProvider.setServicePath(\"createimage\", createImageURI);\n ServiceProvider.setServicePath(\"service\", serviceURI);\n ServiceProvider.setServicePath(\"getmathml\", getMathMLURI);\n ServiceProvider.setServicePath(\"configurationjs\", configurationURI);\n\n ServiceProvider.listeners.fire(\"onInit\", {});\n }\n\n /**\n * Gets the content from an URL.\n * @param {String} url - Target URL.\n * @param {Object} [postVariables] - Object containing post variables.\n * null if a GET query should be done.\n * @returns {String} Content of the target URL.\n * @private\n * @static\n */\n static getUrl(url, postVariables) {\n const currentPath = window.location.toString().substr(0, window.location.toString().lastIndexOf(\"/\") + 1);\n const httpRequest = Util.createHttpRequest();\n\n if (httpRequest) {\n if (typeof postVariables === \"undefined\" || typeof postVariables === \"undefined\") {\n httpRequest.open(\"GET\", url, false);\n } else if (url.substr(0, 1) === \"/\" || url.substr(0, 7) === \"http://\" || url.substr(0, 8) === \"https://\") {\n httpRequest.open(\"POST\", url, false);\n } else {\n httpRequest.open(\"POST\", currentPath + url, false);\n }\n\n let header = Configuration.get(\"customHeaders\");\n if (header) {\n if (typeof header === \"string\") {\n header = Util.convertStringToObject(header);\n }\n Object.entries(header).forEach(([key, val]) => httpRequest.setRequestHeader(key, val));\n }\n\n if (typeof postVariables !== \"undefined\" && postVariables) {\n httpRequest.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n httpRequest.send(Util.httpBuildQuery(postVariables));\n } else {\n httpRequest.send(null);\n }\n\n return httpRequest.responseText;\n }\n return \"\";\n }\n\n /**\n * Returns the response text of a certain service.\n * @param {String} service - Service name.\n * @param {String} postVariables - Post variables.\n * @param {Boolean} get - True if the request is GET instead of POST. false otherwise.\n * @returns {String} Service response text.\n */\n static getService(service, postVariables, get) {\n let response;\n if (get === true) {\n const getVariables = postVariables ? `?${postVariables}` : \"\";\n const serviceUrl = `${ServiceProvider.getServicePath(service)}${getVariables}`;\n response = ServiceProvider.getUrl(serviceUrl);\n } else {\n const serviceUrl = ServiceProvider.getServicePath(service);\n response = ServiceProvider.getUrl(serviceUrl, postVariables);\n }\n return response;\n }\n\n /**\n * Returns the server language of a certain service. The possible values\n * are: php, aspx, java and ruby.\n * This method has backward compatibility purposes.\n * @param {String} service - The configuration service.\n * @returns {String} - The server technology associated with the configuration service.\n */\n static getServerLanguageFromService(service) {\n if (service.indexOf(\".php\") !== -1) {\n return \"php\";\n }\n if (service.indexOf(\".aspx\") !== -1) {\n return \"aspx\";\n }\n if (service.indexOf(\"wirispluginengine\") !== -1) {\n return \"ruby\";\n }\n return \"java\";\n }\n\n /**\n * Returns the URI associated with a certain service.\n * @param {String} service - The service name.\n * @return {String} The service path.\n */\n static createServiceURI(service) {\n const extension = ServiceProvider.serverExtension();\n return Util.concatenateUrl(ServiceProvider.parameters.URI, service) + extension;\n }\n\n static serverExtension() {\n if (ServiceProvider.parameters.server.indexOf(\"php\") !== -1) {\n return \".php\";\n }\n if (ServiceProvider.parameters.server.indexOf(\"aspx\") !== -1) {\n return \".aspx\";\n }\n return \"\";\n }\n}\n\n/**\n * @property {String} service - The service name.\n * @property {String} path - The service path.\n * @static\n */\nServiceProvider._servicePaths = {};\n\n/**\n * The integration path. Contains the path of the configuration service.\n * Used to define the path for all services.\n * @type {String}\n * @private\n */\nServiceProvider._integrationPath = \"\";\n\n/**\n * ServiceProvider static listeners.\n * @type {Listeners}\n * @private\n */\nServiceProvider._listeners = new Listeners();\n\n/**\n * Service provider parameters.\n * @type {ServiceProviderParameters}\n */\nServiceProvider._parameters = {};\n","import TextCache from \"./textcache\";\nimport MathML from \"./mathml\";\nimport ServiceProvider from \"./serviceprovider\";\nimport Constants from \"./constants\";\nimport Util from \"./util\";\n\n/**\n * @classdesc\n * This class represents a LaTeX parser. Manages the services which allows to convert\n * LaTeX into MathML and MathML into LaTeX.\n */\nexport default class Latex {\n /**\n * Static property.\n * Return latex cache.\n * @private\n * @type {Cache}\n */\n static get cache() {\n return Latex._cache;\n }\n\n /**\n * Static property setter.\n * Set latex cache.\n * @param {Cache} value - The property value.\n * @ignore\n */\n static set cache(value) {\n Latex._cache = value;\n }\n\n /**\n * Converts MathML to LaTeX by calling mathml2latex service. For text services\n * we call a text service with the param mathml2latex.\n * @param {String} mathml - MathML String.\n * @return {String} LaTeX string generated by the MathML argument.\n */\n static getLatexFromMathML(mathml) {\n const mathmlWithoutSemantics = MathML.removeSemantics(mathml);\n /**\n * @type {TextCache}\n */\n const { cache } = Latex;\n\n const data = {\n service: \"mathml2latex\",\n mml: mathmlWithoutSemantics,\n };\n\n const jsonResponse = JSON.parse(ServiceProvider.getService(\"service\", data));\n\n // TODO: Error handling.\n let latex = \"\";\n\n if (jsonResponse.status === \"ok\") {\n latex = jsonResponse.result.text;\n const latexHtmlEntitiesEncoded = Util.htmlEntities(latex);\n // Inserting LaTeX semantics.\n const mathmlWithSemantics = MathML.addAnnotation(mathml, latexHtmlEntitiesEncoded, \"LaTeX\");\n cache.populate(latex, mathmlWithSemantics);\n }\n\n return latex;\n }\n\n /**\n * Converts LaTeX to MathML by calling latex2mathml service. For text services\n * we call a text service with the param latex2mathml.\n * @param {String} latex - String containing a LaTeX formula.\n * @param {Boolean} includeLatexOnSemantics\n * - If true LaTeX would me included into MathML semantics.\n * @return {String} MathML string generated by the LaTeX argument.\n */\n static getMathMLFromLatex(latex, includeLatexOnSemantics) {\n /**\n * @type {TextCache}\n */\n const latexCache = Latex.cache;\n\n if (Latex.cache.get(latex)) {\n return Latex.cache.get(latex);\n }\n const data = {\n service: \"latex2mathml\",\n latex,\n };\n\n if (includeLatexOnSemantics) {\n data.saveLatex = \"\";\n }\n\n const jsonResponse = JSON.parse(ServiceProvider.getService(\"service\", data));\n\n let output;\n if (jsonResponse.status === \"ok\") {\n let mathml = jsonResponse.result.text;\n mathml = mathml.split(\"\\r\").join(\"\").split(\"\\n\").join(\" \");\n\n // Populate LatexCache.\n if (mathml.indexOf(\"semantics\") === -1 && mathml.indexOf(\"annotation\") === -1) {\n const content = Util.htmlEntities(latex);\n mathml = MathML.addAnnotation(mathml, content, \"LaTeX\");\n output = mathml;\n } else {\n output = mathml;\n }\n if (!latexCache.get(latex)) {\n latexCache.populate(latex, mathml);\n }\n } else {\n output = `$$${latex}$$`;\n }\n return output;\n }\n\n /**\n * Converts all occurrences of MathML code to LaTeX.\n * The MathML code should containing <annotation encoding=\"LaTeX\"/> to be converted.\n * @param {String} content - A string containing MathML valid code.\n * @param {Object} characters - An object containing special characters.\n * @return {String} A string containing all MathML annotated occurrences\n * replaced by the corresponding LaTeX code.\n */\n static parseMathmlToLatex(content, characters) {\n let output = \"\";\n const mathTagBegin = `${characters.tagOpener}math`;\n const mathTagEnd = `${characters.tagOpener}/math${characters.tagCloser}`;\n const openTarget = `${characters.tagOpener}annotation encoding=${characters.doubleQuote}LaTeX${characters.doubleQuote}${characters.tagCloser}`;\n const closeTarget = `${characters.tagOpener}/annotation${characters.tagCloser}`;\n let start = content.indexOf(mathTagBegin);\n let end = 0;\n let mathml;\n let startAnnotation;\n let closeAnnotation;\n\n while (start !== -1) {\n output += content.substring(end, start);\n end = content.indexOf(mathTagEnd, start);\n\n if (end === -1) {\n end = content.length - 1;\n } else {\n end += mathTagEnd.length;\n }\n\n mathml = content.substring(start, end);\n\n startAnnotation = mathml.indexOf(openTarget);\n if (startAnnotation !== -1) {\n startAnnotation += openTarget.length;\n closeAnnotation = mathml.indexOf(closeTarget);\n let latex = mathml.substring(startAnnotation, closeAnnotation);\n if (characters === Constants.safeXmlCharacters) {\n latex = MathML.safeXmlDecode(latex);\n }\n output += `$$${latex}$$`;\n // Populate latex into cache.\n\n Latex.cache.populate(latex, mathml);\n } else {\n output += mathml;\n }\n start = content.indexOf(mathTagBegin, end);\n }\n\n output += content.substring(end, content.length);\n return output;\n }\n\n /**\n * Extracts the latex of a determined position in a text.\n * @param {Node} textNode - textNode to extract the LaTeX\n * @param {Number} caretPosition - Starting position to find LaTeX.\n * @param {Object} latexTags - Optional parameter representing tags between latex is inserted.\n * It has the 'open' attribute for the open tag and the 'close' attribute for the close tag.\n * \"$$\" by default.\n * @return {Object} An object with 3 keys: 'latex', 'start' and 'end'. Null if latex is not found.\n * @static\n */\n static getLatexFromTextNode(textNode, caretPosition, latexTags) {\n // TODO: Set LaTeX Tags as Core variable. Fix the call to this function (third argument).\n // Tags used for LaTeX formulas.\n const defaultLatexTags = {\n open: \"$$\",\n close: \"$$\",\n };\n // latexTags is an optional parameter. If is not set, use default latexTags.\n if (typeof latexTags === \"undefined\" || latexTags == null) {\n latexTags = defaultLatexTags;\n }\n // Looking for the first textNode.\n let startNode = textNode;\n\n while (startNode.previousSibling && startNode.previousSibling.nodeType === 3) {\n // TEXT_NODE.\n startNode = startNode.previousSibling;\n }\n\n /**\n * Returns the next latex position and node from a specific node and position.\n * @param {Node} currentNode - Node where searching latex.\n * @param {Number} currentPosition - Current position inside the currentNode.\n * @param {Object} latexTagsToUse - Tags used at latex beginning and latex final.\n * \"$$\" by default.\n * @param {Boolean} tag - Tag containing the current search.\n * @returns {Object} Object containing the current node and the position.\n */\n function getNextLatexPosition(currentNode, currentPosition, tag) {\n let position = currentNode.nodeValue.indexOf(tag, currentPosition);\n\n while (position === -1) {\n currentNode = currentNode.nextSibling;\n\n if (!currentNode) {\n // TEXT_NODE.\n return null; // Not found.\n }\n\n position = currentNode.nodeValue ? currentNode.nodeValue.indexOf(latexTags.close) : -1;\n }\n\n return {\n node: currentNode,\n position,\n };\n }\n\n /**\n * Determines if a node is previous, or not, to a second one.\n * @param {Node} node - Start node.\n * @param {Number} position - Start node position.\n * @param {Node} endNode - End node.\n * @param {Number} endPosition - End node position.\n * @returns {Boolean} True if the starting node is previous thant the en node. false otherwise.\n */\n function isPrevious(node, position, endNode, endPosition) {\n if (node === endNode) {\n return position <= endPosition;\n }\n while (node && node !== endNode) {\n node = node.nextSibling;\n }\n\n return node === endNode;\n }\n\n let start;\n let end = {\n node: startNode,\n position: 0,\n };\n // Is supposed that open and close tags has the same length.\n const tagLength = latexTags.open.length;\n do {\n start = getNextLatexPosition(end.node, end.position, latexTags.open);\n\n if (start == null || isPrevious(textNode, caretPosition, start.node, start.position)) {\n return null;\n }\n\n end = getNextLatexPosition(start.node, start.position + tagLength, latexTags.close);\n\n if (end == null) {\n return null;\n }\n\n end.position += tagLength;\n } while (isPrevious(end.node, end.position, textNode, caretPosition));\n\n // Isolating latex.\n let latex;\n\n if (start.node === end.node) {\n latex = start.node.nodeValue.substring(start.position + tagLength, end.position - tagLength);\n } else {\n const index = start.position + tagLength;\n latex = start.node.nodeValue.substring(index, start.node.nodeValue.length);\n let currentNode = start.node;\n\n do {\n currentNode = currentNode.nextSibling;\n if (currentNode === end.node) {\n latex += end.node.nodeValue.substring(0, end.position - tagLength);\n } else {\n latex += currentNode.nodeValue ? currentNode.nodeValue : \"\";\n }\n } while (currentNode !== end.node);\n }\n\n return {\n latex,\n startNode: start.node,\n startPosition: start.position,\n endNode: end.node,\n endPosition: end.position,\n };\n }\n}\n\n/**\n * Text cache. Stores all processed LaTeX strings and it's correspondent MathML string.\n * @type {Cache}\n * @static\n */\nLatex._cache = new TextCache();\n","import translations from \"../lang/strings.json\";\n/**\n * This class represents a string manager. It's used to load localized strings.\n */\nexport default class StringManager {\n constructor() {\n throw new Error(\"Static class StringManager can not be instantiated.\");\n }\n\n /**\n * Returns the associated value of certain string key. If the associated value\n * doesn't exits returns the original key.\n * @param {string} key - string key\n * @param {string} lang - DEFAULT = null. Specify the language to translate the string\n * @returns {string} correspondent value. If doesn't exists original key.\n */\n static get(key, lang) {\n // Default language definition\n let { language } = this;\n\n // If parameter language, use it\n if (lang) {\n language = lang;\n }\n\n // Cut down on strings. e.g. en_US -> en\n if (language && language.length > 2) {\n language = language.slice(0, 2);\n }\n\n // Check if we support the language\n if (!this.strings.hasOwnProperty(language)) {\n // eslint-disable-line no-prototype-builtins\n console.warn(`Unknown language ${language} set in StringManager.`);\n language = \"en\";\n }\n\n // Check if the key is supported in the given language\n if (!this.strings[language].hasOwnProperty(key)) {\n // eslint-disable-line no-prototype-builtins\n console.warn(`Unknown key ${key} for language ${language} in StringManager.`);\n return key;\n }\n\n return this.strings[language][key];\n }\n}\n\n/**\n * Dictionary of dictionaries:\n * Key: language code\n * Value: Key: id of the string\n * Value: translation of the string\n */\nStringManager.strings = translations;\n\n/**\n * Language of the translations; English by default\n */\nStringManager.language = \"en\";\n","/* eslint-disable no-bitwise */\nimport DOMPurify from \"dompurify\";\nimport MathML from \"./mathml\";\nimport Configuration from \"./configuration\";\nimport Latex from \"./latex\";\nimport StringManager from \"./stringmanager\";\n\n/**\n * This class represents an utility class.\n */\nexport default class Util {\n /**\n * Fires an event in a target.\n * @param {EventTarget} eventTarget - target where event should be fired.\n * @param {string} eventName event to fire.\n * @static\n */\n static fireEvent(eventTarget, eventName) {\n if (document.createEvent) {\n const eventObject = document.createEvent(\"HTMLEvents\");\n eventObject.initEvent(eventName, true, true);\n return !eventTarget.dispatchEvent(eventObject);\n }\n\n const eventObject = document.createEventObject();\n return eventTarget.fireEvent(`on${eventName}`, eventObject);\n }\n\n /**\n * Cross-browser addEventListener/attachEvent function.\n * @param {EventTarget} eventTarget - target to add the event.\n * @param {string} eventName - specifies the type of event.\n * @param {Function} callBackFunction - callback function.\n * @static\n */\n static addEvent(eventTarget, eventName, callBackFunction) {\n if (eventTarget.addEventListener) {\n eventTarget.addEventListener(eventName, callBackFunction, true);\n } else if (eventTarget.attachEvent) {\n // Backwards compatibility.\n eventTarget.attachEvent(`on${eventName}`, callBackFunction);\n }\n }\n\n /**\n * Cross-browser removeEventListener/detachEvent function.\n * @param {EventTarget} eventTarget - target to add the event.\n * @param {string} eventName - specifies the type of event.\n * @param {Function} callBackFunction - function to remove from the event target.\n * @static\n */\n static removeEvent(eventTarget, eventName, callBackFunction) {\n if (eventTarget.removeEventListener) {\n eventTarget.removeEventListener(eventName, callBackFunction, true);\n } else if (eventTarget.detachEvent) {\n eventTarget.detachEvent(`on${eventName}`, callBackFunction);\n }\n }\n\n /**\n * A map from event target to event handlers so we can remove the event\n * listeners in removeElementEvents\n *\n * @type {Map<EventTarget, Object>}\n * @static\n */\n static elementEventsMap = new Map();\n\n /**\n * Adds the a callback function, for a certain event target, to the following event types:\n * - dblclick\n * - mousedown\n * - mouseup\n * @param {EventTarget} eventTarget - event target.\n * @param {Function} doubleClickHandler - function to run when on dblclick event.\n * @param {Function} mousedownHandler - function to run when on mousedown event.\n * @param {Function} mouseupHandler - function to run when on mouseup event.\n * @static\n */\n static addElementEvents(eventTarget, doubleClickHandler, mousedownHandler, mouseupHandler) {\n // Make sure not to leak event listeners if we've already added events to\n // this element\n Util.removeElementEvents(eventTarget);\n\n let entry = {};\n Util.elementEventsMap.set(eventTarget, entry);\n\n if (doubleClickHandler) {\n entry.callbackDblclick = (event) => {\n const realEvent = event || window.event;\n const element = realEvent.srcElement ? realEvent.srcElement : realEvent.target;\n doubleClickHandler(element, realEvent);\n };\n\n Util.addEvent(eventTarget, \"dblclick\", entry.callbackDblclick);\n }\n\n if (mousedownHandler) {\n entry.callbackMousedown = (event) => {\n const realEvent = event || window.event;\n const element = realEvent.srcElement ? realEvent.srcElement : realEvent.target;\n mousedownHandler(element, realEvent);\n };\n\n Util.addEvent(eventTarget, \"mousedown\", entry.callbackMousedown);\n }\n\n if (mouseupHandler) {\n entry.callbackMouseup = (event) => {\n const realEvent = event || window.event;\n const element = realEvent.srcElement ? realEvent.srcElement : realEvent.target;\n mouseupHandler(element, realEvent);\n };\n // Chrome doesn't trigger this event for eventTarget if we release the mouse button\n // while the mouse is outside the editor text field.\n // This is a workaround: we trigger the event independently of where the mouse\n // is when we release its button.\n Util.addEvent(document, \"mouseup\", entry.callbackMouseup);\n Util.addEvent(eventTarget, \"mouseup\", entry.callbackMouseup);\n }\n }\n\n /**\n * Remove all callback function, for a certain event target, to the following event types:\n * - dblclick\n * - mousedown\n * - mouseup\n * @param {EventTarget} eventTarget - event target.\n * @static\n */\n static removeElementEvents(eventTarget) {\n let entry = Util.elementEventsMap.get(eventTarget);\n if (!entry) {\n return;\n }\n\n Util.elementEventsMap.delete(eventTarget);\n\n Util.removeEvent(eventTarget, \"dblclick\", entry.callbackDblclick);\n Util.removeEvent(eventTarget, \"mousedown\", entry.callbackMousedown);\n Util.removeEvent(document, \"mouseup\", entry.callbackMouseup);\n Util.removeEvent(eventTarget, \"mouseup\", entry.callbackMouseup);\n }\n\n /**\n * Adds a class name to a HTMLElement.\n * @param {HTMLElement} element - the HTML element.\n * @param {string} className - the class name.\n * @static\n */\n static addClass(element, className) {\n if (!Util.containsClass(element, className)) {\n element.className += ` ${className}`;\n }\n }\n\n /**\n * Checks if a HTMLElement contains a certain class.\n * @param {HTMLElement} element - the HTML element.\n * @param {string} className - the className.\n * @returns {boolean} true if the HTMLElement contains the class name. false otherwise.\n * @static\n */\n static containsClass(element, className) {\n if (element == null || !(\"className\" in element)) {\n return false;\n }\n\n const currentClasses = element.className.split(\" \");\n\n for (let i = currentClasses.length - 1; i >= 0; i -= 1) {\n if (currentClasses[i] === className) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Remove a certain class for a HTMLElement.\n * @param {HTMLElement} element - the HTML element.\n * @param {string} className - the class name.\n * @static\n */\n static removeClass(element, className) {\n let newClassName = \"\";\n const classes = element.className.split(\" \");\n\n for (let i = 0; i < classes.length; i += 1) {\n if (classes[i] !== className) {\n newClassName += `${classes[i]} `;\n }\n }\n element.className = newClassName.trim();\n }\n\n /**\n * Converts old xml initial text attribute (with «») to the correct one(with §lt;§gt;). It's\n * used to parse old applets.\n * @param {string} text - string containing safeXml characters\n * @returns {string} a string with safeXml characters parsed.\n * @static\n */\n static convertOldXmlinitialtextAttribute(text) {\n // Used to fix a bug with Cas imported from Moodle 1.9 to Moodle 2.x.\n // This could be removed in future.\n const val = \"value=\";\n\n const xitpos = text.indexOf(\"xmlinitialtext\");\n const valpos = text.indexOf(val, xitpos);\n const quote = text.charAt(valpos + val.length);\n const startquote = valpos + val.length + 1;\n const endquote = text.indexOf(quote, startquote);\n\n const value = text.substring(startquote, endquote);\n\n let newvalue = value.split(\"«\").join(\"§lt;\");\n newvalue = newvalue.split(\"»\").join(\"§gt;\");\n newvalue = newvalue.split(\"&\").join(\"§\");\n newvalue = newvalue.split(\"¨\").join(\"§quot;\");\n\n text = text.split(value).join(newvalue);\n return text;\n }\n\n /**\n * Convert a string representation of key-value pairs to an object.\n * @param {string} keyValueString - String with key-value pairs in the format key1='value1', key2='value2'\n * @returns {Object} - Object containing the key-value pairs\n */\n static convertStringToObject(keyValueString) {\n if (!keyValueString || typeof keyValueString !== \"string\") {\n return {};\n }\n\n return keyValueString\n .split(\",\")\n .map((pair) => pair.trim().split(\"=\"))\n .reduce((resultObject, [key, value]) => {\n if (key && value) {\n resultObject[key] = value;\n }\n return resultObject;\n }, {});\n }\n\n /**\n * Cross-browser solution for creating new elements.\n * @param {string} tagName - tag name of the wished element.\n * @param {Object} attributes - an object where each key is a wished\n * attribute name and each value is its value.\n * @param {Object} [creator] - if supplied, this function will use\n * the \"createElement\" method from this param. Otherwise\n * document will be used as creator.\n * @returns {Element} The DOM element with the specified attributes assigned.\n * @static\n */\n static createElement(tagName, attributes, creator) {\n if (attributes === undefined) {\n attributes = {};\n }\n\n if (creator === undefined) {\n creator = document;\n }\n\n let element;\n\n /*\n * Internet Explorer fix:\n * If you create a new object dynamically, you can't set a non-standard attribute.\n * For example, you can't set the \"src\" attribute on an \"applet\" object.\n * Other browsers will throw an exception and will run the standard code.\n */\n try {\n let html = `<${tagName}`;\n\n Object.keys(attributes).forEach((attributeName) => {\n html += ` ${attributeName}=\"${Util.htmlEntities(attributes[attributeName])}\"`;\n });\n html += \">\";\n element = creator.createElement(html);\n } catch (e) {\n element = creator.createElement(tagName);\n Object.keys(attributes).forEach((attributeName) => {\n element.setAttribute(attributeName, attributes[attributeName]);\n });\n }\n return element;\n }\n\n /**\n * Creates new HTML from it's HTML code as string.\n * @param {string} objectCode - html code\n * @returns {Element} the HTML element.\n * @static\n */\n static createObject(objectCode, creator) {\n if (creator === undefined) {\n creator = document;\n }\n\n // Internet Explorer can't include \"param\" tag when is setting an innerHTML property.\n objectCode = objectCode\n .split(\"<applet \")\n .join('<span wirisObject=\"WirisApplet\" ')\n .split(\"<APPLET \")\n .join('<span wirisObject=\"WirisApplet\" '); // It is a 'span' because 'span' objects can contain 'br' nodes.\n objectCode = objectCode.split(\"</applet>\").join(\"</span>\").split(\"</APPLET>\").join(\"</span>\");\n\n objectCode = objectCode\n .split(\"<param \")\n .join('<br wirisObject=\"WirisParam\" ')\n .split(\"<PARAM \")\n .join('<br wirisObject=\"WirisParam\" '); // It is a 'br' because 'br' can't contain nodes.\n objectCode = objectCode.split(\"</param>\").join(\"</br>\").split(\"</PARAM>\").join(\"</br>\");\n\n const container = Util.createElement(\"div\", {}, creator);\n container.innerHTML = objectCode;\n\n function recursiveParamsFix(object) {\n if (object.getAttribute && object.getAttribute(\"wirisObject\") === \"WirisParam\") {\n const attributesParsed = {};\n\n for (let i = 0; i < object.attributes.length; i += 1) {\n if (object.attributes[i].nodeValue !== null) {\n attributesParsed[object.attributes[i].nodeName] = object.attributes[i].nodeValue;\n }\n }\n\n const param = Util.createElement(\"param\", attributesParsed, creator);\n\n // IE fix.\n if (param.NAME) {\n param.name = param.NAME;\n param.value = param.VALUE;\n }\n\n param.removeAttribute(\"wirisObject\");\n object.parentNode.replaceChild(param, object);\n } else if (object.getAttribute && object.getAttribute(\"wirisObject\") === \"WirisApplet\") {\n const attributesParsed = {};\n\n for (let i = 0; i < object.attributes.length; i += 1) {\n if (object.attributes[i].nodeValue !== null) {\n attributesParsed[object.attributes[i].nodeName] = object.attributes[i].nodeValue;\n }\n }\n\n const applet = Util.createElement(\"applet\", attributesParsed, creator);\n applet.removeAttribute(\"wirisObject\");\n\n for (let i = 0; i < object.childNodes.length; i += 1) {\n recursiveParamsFix(object.childNodes[i]);\n\n if (object.childNodes[i].nodeName.toLowerCase() === \"param\") {\n applet.appendChild(object.childNodes[i]);\n i -= 1; // When we insert the object child into the applet, object loses one child.\n }\n }\n\n object.parentNode.replaceChild(applet, object);\n } else {\n for (let i = 0; i < object.childNodes.length; i += 1) {\n recursiveParamsFix(object.childNodes[i]);\n }\n }\n }\n\n recursiveParamsFix(container);\n return container.firstChild;\n }\n\n /**\n * Converts an Element to its HTML code.\n * @param {Element} element - entry element.\n * @return {string} the HTML code of the input element.\n * @static\n */\n static createObjectCode(element) {\n // In case that the image was not created, the object can be null or undefined.\n if (typeof element === \"undefined\" || element === null) {\n return null;\n }\n\n if (element.nodeType === 1) {\n // ELEMENT_NODE.\n let output = `<${element.tagName}`;\n\n for (let i = 0; i < element.attributes.length; i += 1) {\n if (element.attributes[i].specified) {\n output += ` ${element.attributes[i].name}=\"${Util.htmlEntities(element.attributes[i].value)}\"`;\n }\n }\n\n if (element.childNodes.length > 0) {\n output += \">\";\n\n for (let i = 0; i < element.childNodes.length; i += 1) {\n output += Util.createObject(element.childNodes[i]);\n }\n\n output += `</${element.tagName}>`;\n } else if (element.nodeName === \"DIV\" || element.nodeName === \"SCRIPT\") {\n output += `></${element.tagName}>`;\n } else {\n output += \"/>\";\n }\n\n return output;\n }\n\n if (element.nodeType === 3) {\n // TEXT_NODE.\n return Util.htmlEntities(element.nodeValue);\n }\n\n return \"\";\n }\n\n /**\n * Concatenates two URL paths.\n * @param {string} path1 - first URL path\n * @param {string} path2 - second URL path\n * @returns {string} new URL.\n */\n static concatenateUrl(path1, path2) {\n let separator = \"\";\n if (path1.indexOf(\"/\") !== path1.length && path2.indexOf(\"/\") !== 0) {\n separator = \"/\";\n }\n return (path1 + separator + path2).replace(/([^:]\\/)\\/+/g, \"$1\");\n }\n\n /**\n * Parses a text and replaces all HTML special characters by their correspondent entities.\n * @param {string} input - text to be parsed.\n * @returns {string} the input text with all their special characters replaced by their entities.\n * @static\n */\n static htmlEntities(input) {\n return input.split(\"&\").join(\"&amp;\").split(\"<\").join(\"&lt;\").split(\">\").join(\"&gt;\").split('\"').join(\"&quot;\");\n }\n\n /**\n * Sanitize HTML to prevent XSS injections.\n * @param {string} html - html to be sanitize.\n * @returns {string} html sanitized.\n * @static\n */\n static htmlSanitize(html) {\n const annotationRegex = /\\<annotation.+\\<\\/annotation\\>/;\n // Get all the annotation content including the tags.\n const annotation = html.match(annotationRegex);\n // Sanitize html code without removing our supported MathML tags and attributes.\n html = DOMPurify.sanitize(html, {\n ADD_TAGS: [\"semantics\", \"annotation\", \"mstack\", \"msline\", \"msrow\", \"none\"],\n ADD_ATTR: [\"linebreak\", \"charalign\", \"stackalign\"],\n });\n // Readd old annotation content.\n return html.replace(annotationRegex, annotation);\n }\n\n /**\n * Parses a text and replaces all the HTML entities by their characters.\n * @param {string} input - text to be parsed\n * @returns {string} the input text with all their entities replaced by characters.\n * @static\n */\n static htmlEntitiesDecode(input) {\n // Textarea element decodes when inner html is set.\n const textarea = document.createElement(\"textarea\");\n textarea.innerHTML = input;\n return textarea.value;\n }\n\n /**\n * Returns a cross-browser http request.\n * @return {object} httpRequest request object.\n * @returns {XMLHttpRequest|ActiveXObject} the proper request object.\n */\n static createHttpRequest() {\n const currentPath = window.location.toString().substr(0, window.location.toString().lastIndexOf(\"/\") + 1);\n if (currentPath.substr(0, 7) === \"file://\") {\n throw StringManager.get(\"exception_cross_site\");\n }\n\n if (typeof XMLHttpRequest !== \"undefined\") {\n return new XMLHttpRequest();\n }\n\n try {\n return new ActiveXObject(\"Msxml2.XMLHTTP\");\n } catch (e) {\n try {\n return new ActiveXObject(\"Microsoft.XMLHTTP\");\n } catch (oc) {\n return null;\n }\n }\n }\n\n /**\n * Converts a hash to a HTTP query.\n * @param {Object[]} properties - a key/value object.\n * @returns {string} a HTTP query containing all the key value pairs with\n * all the special characters replaced by their entities.\n * @static\n */\n static httpBuildQuery(properties) {\n let result = \"\";\n\n Object.keys(properties).forEach((i) => {\n if (properties[i] != null) {\n result += `${Util.urlEncode(i)}=${Util.urlEncode(properties[i])}&`;\n }\n });\n\n // Deleting last '&' empty character.\n if (result.substring(result.length - 1) === \"&\") {\n result = result.substring(0, result.length - 1);\n }\n\n return result;\n }\n\n /**\n * Convert a hash to string sorting keys to get a deterministic output\n * @param {Object[]} hash - a key/value object.\n * @returns {string} a string with the form key1=value1...keyn=valuen\n * @static\n */\n static propertiesToString(hash) {\n // 1. Sort keys. We sort the keys because we want a deterministic output.\n const keys = [];\n Object.keys(hash).forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(hash, key)) {\n keys.push(key);\n }\n });\n\n const n = keys.length;\n for (let i = 0; i < n; i += 1) {\n for (let j = i + 1; j < n; j += 1) {\n const s1 = keys[i];\n const s2 = keys[j];\n if (Util.compareStrings(s1, s2) > 0) {\n // Swap.\n keys[i] = s2;\n keys[j] = s1;\n }\n }\n }\n\n // 2. Generate output.\n let output = \"\";\n for (let i = 0; i < n; i += 1) {\n const key = keys[i];\n output += key;\n output += \"=\";\n let value = hash[key];\n value = value.replace(\"\\\\\", \"\\\\\\\\\");\n value = value.replace(\"\\n\", \"\\\\n\");\n value = value.replace(\"\\r\", \"\\\\r\");\n value = value.replace(\"\\t\", \"\\\\t\");\n\n output += value;\n output += \"\\n\";\n }\n return output;\n }\n\n /**\n * Compare two strings using charCodeAt method\n * @param {string} a - first string to compare.\n * @param {string} b - second string to compare.\n * @returns {number} the difference between a and b\n * @static\n */\n static compareStrings(a, b) {\n let i;\n const an = a.length;\n const bn = b.length;\n const n = an > bn ? bn : an;\n for (i = 0; i < n; i += 1) {\n const c = Util.fixedCharCodeAt(a, i) - Util.fixedCharCodeAt(b, i);\n if (c !== 0) {\n return c;\n }\n }\n return a.length - b.length;\n }\n\n /**\n * Fix charCodeAt() JavaScript function to handle non-Basic-Multilingual-Plane characters.\n * @param {string} string - input string\n * @param {number} idx - an integer greater than or equal to 0\n * and less than the length of the string\n * @returns {number} an integer representing the UTF-16 code of the string at the given index.\n * @static\n */\n static fixedCharCodeAt(string, idx) {\n idx = idx || 0;\n const code = string.charCodeAt(idx);\n let hi;\n let low;\n\n /* High surrogate (could change last hex to 0xDB7F to treat high\n private surrogates as single characters) */\n\n if (code >= 0xd800 && code <= 0xdbff) {\n hi = code;\n low = string.charCodeAt(idx + 1);\n if (Number.isNaN(low)) {\n throw StringManager.get(\"exception_high_surrogate\");\n }\n return (hi - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000;\n }\n\n if (code >= 0xdc00 && code <= 0xdfff) {\n // Low surrogate.\n /* We return false to allow loops to skip this iteration since should have\n already handled high surrogate above in the previous iteration. */\n return false;\n }\n return code;\n }\n\n /**\n * Returns an URL with it's query params converted into array.\n * @param {string} url - input URL.\n * @returns {Object[]} an array containing all URL query params.\n * @static\n */\n static urlToAssArray(url) {\n let i;\n i = url.indexOf(\"?\");\n if (i > 0) {\n const query = url.substring(i + 1);\n const ss = query.split(\"&\");\n const h = {};\n for (i = 0; i < ss.length; i += 1) {\n const s = ss[i];\n const kv = s.split(\"=\");\n if (kv.length > 1) {\n h[kv[0]] = decodeURIComponent(kv[1].replace(/\\+/g, \" \"));\n }\n }\n return h;\n }\n return {};\n }\n\n /**\n * Returns an encoded URL by replacing each instance of certain characters by\n * one, two, three or four escape sequences using encodeURIComponent method.\n * !'()* . will not be encoded.\n *\n * @param {string} clearString - URL string to be encoded\n * @returns {string} URL with it's special characters replaced.\n * @static\n */\n static urlEncode(clearString) {\n let output = \"\";\n // Method encodeURIComponent doesn't encode !'()*~ .\n output = encodeURIComponent(clearString);\n return output;\n }\n\n // TODO: To parser?\n /**\n * Converts the HTML of a image into the output code that WIRIS must return.\n * By default returns the MathML stored on data-mahml attribute (if imgCode is a formula)\n * or the Wiriscas attribute of a WIRIS applet.\n * @param {string} imgCode - the html code from a formula or a CAS image.\n * @param {boolean} convertToXml - true if the image should be converted to XML.\n * @param {boolean} convertToSafeXml - true if the image should be converted to safeXML.\n * @returns {string} the XML or safeXML of a WIRIS image.\n * @static\n */\n static getWIRISImageOutput(imgCode, convertToXml, convertToSafeXml) {\n const imgObject = Util.createObject(imgCode);\n if (imgObject) {\n if (\n imgObject.className === Configuration.get(\"imageClassName\") ||\n imgObject.getAttribute(Configuration.get(\"imageMathmlAttribute\"))\n ) {\n if (!convertToXml) {\n return imgCode;\n }\n\n const dataMathML = imgObject.getAttribute(Configuration.get(\"imageMathmlAttribute\"));\n // To handle annotations, first we need the MathML in XML.\n let mathML = MathML.safeXmlDecode(dataMathML);\n\n if (!Configuration.get(\"saveHandTraces\")) {\n mathML = MathML.removeAnnotation(mathML, \"application/json\");\n }\n\n if (mathML == null) {\n mathML = imgObject.getAttribute(\"alt\");\n }\n\n // WARNING: This code is needed for CKEditor 5 Track Changes compatibility.\n // Preserve Track Changes attributes when converting image back to MathML.\n // This ensures change tracking information is maintained during the roundtrip conversion\n // (MathML → Image → MathML) in collaborative editing scenarios.\n const TRACK_CHANGES_ATTRIBUTE_PREFIXES = [\"data-suggestion-\", \"data-comment-\"];\n const preservedAttributes = {};\n\n // Extract Track Changes attributes from the image element\n for (const { name: attributeName, value: attributeValue } of imgObject.attributes) {\n const isTrackChangesAttribute = TRACK_CHANGES_ATTRIBUTE_PREFIXES.some((prefix) =>\n attributeName.startsWith(prefix),\n );\n\n if (isTrackChangesAttribute) {\n preservedAttributes[attributeName] = attributeValue;\n }\n }\n\n // If Track Changes attributes were found, inject them into the MathML opening tag\n if (Object.keys(preservedAttributes).length > 0) {\n const attributesString = Object.keys(preservedAttributes)\n .map((name) => ` ${name}=\"${Util.htmlEntities(preservedAttributes[name])}\"`)\n .join(\"\");\n\n mathML = mathML.replace(/(<math)/i, `$1${attributesString}`);\n }\n\n if (convertToSafeXml) {\n const safeMathML = MathML.safeXmlEncode(mathML);\n return safeMathML;\n }\n\n return mathML;\n }\n }\n return imgCode;\n }\n\n /**\n * Gets the node length in characters.\n * @param {Node} node - HTML node.\n * @returns {number} node length.\n * @static\n */\n static getNodeLength(node) {\n const staticNodeLengths = {\n IMG: 1,\n BR: 1,\n };\n\n if (node.nodeType === 3) {\n // TEXT_NODE.\n return node.nodeValue.length;\n }\n\n if (node.nodeType === 1) {\n // ELEMENT_NODE.\n let length = staticNodeLengths[node.nodeName.toUpperCase()];\n\n if (length === undefined) {\n length = 0;\n }\n\n for (let i = 0; i < node.childNodes.length; i += 1) {\n length += Util.getNodeLength(node.childNodes[i]);\n }\n return length;\n }\n return 0;\n }\n\n /**\n * Gets a selected node or text from an editable HTMLElement.\n * If the caret is on a text node, concatenates it with all the previous and next text nodes.\n * @param {HTMLElement} target - the editable HTMLElement.\n * @param {boolean} isIframe - specifies if the target is an iframe or not\n * @param {boolean} forceGetSelection - if true, ignores IE system to get\n * the current selection and uses window.getSelection()\n * @returns {object} an object with the 'node' key set if the item is an\n * element or the keys 'node' and 'caretPosition' if the element is text.\n * @static\n */\n static getSelectedItem(target, isIframe, forceGetSelection) {\n let windowTarget;\n\n if (isIframe) {\n windowTarget = target.contentWindow;\n windowTarget.focus();\n } else {\n windowTarget = window;\n target.focus();\n }\n\n if (document.selection && !forceGetSelection) {\n const range = windowTarget.document.selection.createRange();\n\n if (range.parentElement) {\n if (range.htmlText.length > 0) {\n if (range.text.length === 0) {\n return Util.getSelectedItem(target, isIframe, true);\n }\n\n return null;\n }\n\n windowTarget.document.execCommand(\"InsertImage\", false, \"#\");\n let temporalObject = range.parentElement();\n\n if (temporalObject.nodeName.toUpperCase() !== \"IMG\") {\n // IE9 fix: parentElement() does not return the IMG node,\n // returns the parent DIV node. In IE < 9, pasteHTML does not work well.\n range.pasteHTML('<span id=\"wrs_openEditorWindow_temporalObject\"></span>');\n temporalObject = windowTarget.document.getElementById(\"wrs_openEditorWindow_temporalObject\");\n }\n\n let node;\n let caretPosition;\n\n if (temporalObject.nextSibling && temporalObject.nextSibling.nodeType === 3) {\n // TEXT_NODE.\n node = temporalObject.nextSibling;\n caretPosition = 0;\n } else if (temporalObject.previousSibling && temporalObject.previousSibling.nodeType === 3) {\n node = temporalObject.previousSibling;\n caretPosition = node.nodeValue.length;\n } else {\n node = windowTarget.document.createTextNode(\"\");\n temporalObject.parentNode.insertBefore(node, temporalObject);\n caretPosition = 0;\n }\n\n temporalObject.parentNode.removeChild(temporalObject);\n\n return {\n node,\n caretPosition,\n };\n }\n\n if (range.length > 1) {\n return null;\n }\n\n return {\n node: range.item(0),\n };\n }\n\n if (windowTarget.getSelection) {\n let range;\n const selection = windowTarget.getSelection();\n\n try {\n range = selection.getRangeAt(0);\n } catch (e) {\n range = windowTarget.document.createRange();\n }\n\n const node = range.startContainer;\n\n if (node.nodeType === 3) {\n // TEXT_NODE.\n return {\n node,\n caretPosition: range.startOffset,\n };\n }\n\n if (node !== range.endContainer) {\n return null;\n }\n\n if (node.nodeType === 1) {\n // ELEMENT_NODE.\n const position = range.startOffset;\n\n if (node.childNodes[position]) {\n // In case that a formula is detected but not selected,\n // we create an empty span where we could insert the new formula.\n if (range.startOffset === range.endOffset) {\n if (\n position !== 0 &&\n node.childNodes[position - 1].localName === \"span\" &&\n node.childNodes[position].classList?.contains(\"Wirisformula\")\n ) {\n node.childNodes[position - 1].remove();\n return Util.getSelectedItem(target, isIframe, forceGetSelection);\n }\n if (node.childNodes[position].classList?.contains(\"Wirisformula\")) {\n if (\n (position > 0 && node.childNodes[position - 1].classList?.contains(\"Wirisformula\")) ||\n position === 0\n ) {\n const emptySpan = document.createElement(\"span\");\n node.insertBefore(emptySpan, node.childNodes[position]);\n return {\n node: node.childNodes[position],\n };\n }\n }\n }\n return {\n node: node.childNodes[position],\n };\n }\n }\n }\n\n return null;\n }\n\n /**\n * Returns null if there isn't any item or if it is malformed.\n * Otherwise returns an object containing the node with the MathML image\n * and the cursor position inside the textarea.\n * @param {HTMLTextAreaElement} textarea - textarea element.\n * @returns {Object} An object containing the node, the index of the\n * beginning of the selected text, caret position and the start and end position of the\n * text node.\n * @static\n */\n static getSelectedItemOnTextarea(textarea) {\n const textNode = document.createTextNode(textarea.value);\n const textNodeValues = Latex.getLatexFromTextNode(textNode, textarea.selectionStart);\n if (textNodeValues === null) {\n return null;\n }\n\n return {\n node: textNode,\n caretPosition: textarea.selectionStart,\n startPosition: textNodeValues.startPosition,\n endPosition: textNodeValues.endPosition,\n };\n }\n\n /**\n * Looks for elements that match the given name in a HTML code string.\n * Important: this function is very concrete for WIRIS code.\n * It takes as preconditions lots of behaviors that are not the general case.\n * @param {string} code - HTML code.\n * @param {string} name - element name.\n * @param {boolean} autoClosed - true if the elements are autoClosed.\n * @return {Object[]} an object containing all HTML elements of code matching the name argument.\n * @static\n */\n static getElementsByNameFromString(code, name, autoClosed) {\n const elements = [];\n code = code.toLowerCase();\n name = name.toLowerCase();\n let start = code.indexOf(`<${name} `);\n\n while (start !== -1) {\n // Look for nodes.\n let endString;\n\n if (autoClosed) {\n endString = \">\";\n } else {\n endString = `</${name}>`;\n }\n\n let end = code.indexOf(endString, start);\n\n if (end !== -1) {\n end += endString.length;\n elements.push({\n start,\n end,\n });\n } else {\n end = start + 1;\n }\n\n start = code.indexOf(`<${name} `, end);\n }\n\n return elements;\n }\n\n /**\n * Returns the numeric value of a base64 character.\n * @param {string} character - base64 character.\n * @returns {number} base64 character numeric value.\n * @static\n */\n static decode64(character) {\n const PLUS = \"+\".charCodeAt(0);\n const SLASH = \"/\".charCodeAt(0);\n const NUMBER = \"0\".charCodeAt(0);\n const LOWER = \"a\".charCodeAt(0);\n const UPPER = \"A\".charCodeAt(0);\n const PLUS_URL_SAFE = \"-\".charCodeAt(0);\n const SLASH_URL_SAFE = \"_\".charCodeAt(0);\n const code = character.charCodeAt(0);\n\n if (code === PLUS || code === PLUS_URL_SAFE) {\n return 62; // Char '+'.\n }\n if (code === SLASH || code === SLASH_URL_SAFE) {\n return 63; // Char '/'.\n }\n if (code < NUMBER) {\n return -1; // No match.\n }\n if (code < NUMBER + 10) {\n return code - NUMBER + 26 + 26;\n }\n if (code < UPPER + 26) {\n return code - UPPER;\n }\n if (code < LOWER + 26) {\n return code - LOWER + 26;\n }\n\n return null;\n }\n\n /**\n * Converts a base64 string to a array of bytes.\n * @param {string} b64String - base64 string.\n * @param {number} length - dimension of byte array (by default whole string).\n * @return {Object[]} the resultant byte array.\n * @static\n */\n static b64ToByteArray(b64String, length) {\n let tmp;\n\n if (b64String.length % 4 > 0) {\n throw new Error(\"Invalid string. Length must be a multiple of 4\"); // Tipped base64. Length is fixed.\n }\n\n const arr = [];\n\n let l;\n let placeHolders;\n if (!length) {\n // All b64String string.\n if (b64String.charAt(b64String.length - 2) === \"=\") {\n placeHolders = 2;\n } else if (b64String.charAt(b64String.length - 1) === \"=\") {\n placeHolders = 1;\n } else {\n placeHolders = 0;\n }\n l = placeHolders > 0 ? b64String.length - 4 : b64String.length;\n } else {\n l = length;\n }\n\n let i;\n for (i = 0; i < l; i += 4) {\n // Ignoring code checker standards (bitewise operators).\n // See https://tracker.moodle.org/browse/CONTRIB-5862 for further information.\n // @codingStandardsIgnoreStart\n // eslint-disable-next-line max-len\n tmp =\n (Util.decode64(b64String.charAt(i)) << 18) |\n (Util.decode64(b64String.charAt(i + 1)) << 12) |\n (Util.decode64(b64String.charAt(i + 2)) << 6) |\n Util.decode64(b64String.charAt(i + 3));\n\n arr.push((tmp >> 16) & 0xff);\n arr.push((tmp >> 8) & 0xff);\n arr.push(tmp & 0xff);\n // @codingStandardsIgnoreEnd\n }\n\n if (placeHolders) {\n if (placeHolders === 2) {\n // Ignoring code checker standards (bitewise operators).\n // @codingStandardsIgnoreStart\n // eslint-disable-next-line max-len\n tmp = (Util.decode64(b64String.charAt(i)) << 2) | (Util.decode64(b64String.charAt(i + 1)) >> 4);\n arr.push(tmp & 0xff);\n } else if (placeHolders === 1) {\n // eslint-disable-next-line max-len\n tmp =\n (Util.decode64(b64String.charAt(i)) << 10) |\n (Util.decode64(b64String.charAt(i + 1)) << 4) |\n (Util.decode64(b64String.charAt(i + 2)) >> 2);\n arr.push((tmp >> 8) & 0xff);\n arr.push(tmp & 0xff);\n // @codingStandardsIgnoreEnd\n }\n }\n return arr;\n }\n\n /**\n * Returns the first 32-bit signed integer from a byte array.\n * @param {Object[]} bytes - array of bytes.\n * @returns {number} the 32-bit signed integer.\n * @static\n */\n static readInt32(bytes) {\n if (bytes.length < 4) {\n return false;\n }\n const int32 = bytes.splice(0, 4);\n // @codingStandardsIgnoreStart¡\n return (int32[0] << 24) | (int32[1] << 16) | (int32[2] << 8) | (int32[3] << 0);\n // @codingStandardsIgnoreEnd\n }\n\n /**\n * Read the first byte from a byte array.\n * @param {Object} bytes - input byte array.\n * @returns {number} first byte of the byte array.\n * @static\n */\n static readByte(bytes) {\n // @codingStandardsIgnoreStart\n return bytes.shift() << 0;\n // @codingStandardsIgnoreEnd\n }\n\n /**\n * Read an arbitrary number of bytes, from a fixed position on a byte array.\n * @param {Object[]} bytes - byte array.\n * @param {number} pos - start position.\n * @param {number} len - number of bytes to read.\n * @returns {Object[]} the byte array.\n * @static\n */\n static readBytes(bytes, pos, len) {\n return bytes.splice(pos, len);\n }\n\n /**\n * Inserts or modifies formulas or CAS on a textarea.\n * @param {HTMLTextAreaElement} textarea - textarea target.\n * @param {string} text - text to add in the textarea. For example, to add the link to the image,\n * call this function as (textarea, Parser.createImageSrc(mathml));\n * @static\n */\n static updateTextArea(textarea, text) {\n if (textarea && text) {\n textarea.focus();\n\n if (textarea.selectionStart != null) {\n const { selectionEnd } = textarea;\n const selectionStart = textarea.value.substring(0, textarea.selectionStart);\n const selectionEndSub = textarea.value.substring(selectionEnd, textarea.value.length);\n textarea.value = selectionStart + text + selectionEndSub;\n textarea.selectionEnd = selectionEnd + text.length;\n } else {\n const selection = document.selection.createRange();\n selection.text = text;\n }\n }\n }\n\n /**\n * Modifies existing formula on a textarea.\n * @param {HTMLTextAreaElement} textarea - text area target.\n * @param {string} text - text to add in the textarea. For example, if you want to add the link\n * to the image,you can call this function as\n * Util.updateTextarea(textarea, Parser.createImageSrc(mathml));\n * @param {number} start - beginning index from textarea where it needs to be replaced by text.\n * @param {number} end - ending index from textarea where it needs to be replaced by text\n * @static\n */\n static updateExistingTextOnTextarea(textarea, text, start, end) {\n textarea.focus();\n const textareaStart = textarea.value.substring(0, start);\n textarea.value = textareaStart + text + textarea.value.substring(end, textarea.value.length);\n textarea.selectionEnd = start + text.length;\n }\n\n /**\n * Add a parameter with it's correspondent value to an URL (GET).\n * @param {string} path - URL path\n * @param {string} parameter - parameter\n * @param {string} value - value\n * @static\n */\n static addArgument(path, parameter, value) {\n let sep;\n if (path.indexOf(\"?\") > 0) {\n sep = \"&\";\n } else {\n sep = \"?\";\n }\n return `${path + sep + parameter}=${value}`;\n }\n}\n","import Configuration from \"./configuration\";\nimport Util from \"./util\";\n\n/**\n * @classdesc\n * This class represents MathType Image class. Contains all the logic related\n * to MathType images manipulation.\n * All MathType images are generated using the appropriate MathType\n * integration service: showimage or createimage.\n *\n * There are two available image formats:\n * - svg (default)\n * - png\n *\n * There are two formats for the image src attribute:\n * - A data-uri scheme containing the URL-encoded SVG or a PNG's base64.\n * - A link to the showimage service.\n */\nexport default class Image {\n /**\n * Removes data attributes from an image.\n * @param {HTMLImageElement} img - Image where remove data attributes.\n */\n static removeImgDataAttributes(img) {\n const attributesToRemove = [];\n const { attributes } = img;\n\n Object.keys(attributes).forEach((key) => {\n const attribute = attributes[key];\n if (attribute !== undefined && attribute.name !== undefined && attribute.name.indexOf(\"data-\") === 0) {\n // Is preferred keep an array and remove after the search\n // because when attribute is removed the array of attributes\n // is modified.\n attributesToRemove.push(attribute.name);\n }\n });\n\n attributesToRemove.forEach((attribute) => {\n img.removeAttribute(attribute);\n });\n }\n\n /**\n * @static\n * Clones all MathType image attributes from a HTMLImageElement to another.\n * @param {HTMLImageElement} originImg - The original image.\n * @param {HTMLImageElement} destImg - The destination image.\n */\n static clone(originImg, destImg) {\n const customEditorAttributeName = Configuration.get(\"imageCustomEditorName\");\n if (!originImg.hasAttribute(customEditorAttributeName)) {\n destImg.removeAttribute(customEditorAttributeName);\n }\n\n const mathmlAttributeName = Configuration.get(\"imageMathmlAttribute\");\n const imgAttributes = [\n mathmlAttributeName,\n customEditorAttributeName,\n \"alt\",\n \"height\",\n \"width\",\n \"style\",\n \"src\",\n \"role\",\n ];\n\n imgAttributes.forEach((iterator) => {\n const originAttribute = originImg.getAttribute(iterator);\n if (originAttribute) {\n destImg.setAttribute(iterator, originAttribute);\n }\n });\n }\n\n /**\n * Determines whether an img src contains an SVG.\n * @param {HTMLImageElement} img the img element to inspect\n * @returns true if the img src contains an SVG, false otherwise\n */\n static isSvg(img) {\n return img.src.startsWith(\"data:image/svg+xml;\");\n }\n\n /**\n * Determines whether an img src is encoded in base64 or not.\n * @param {HTMLImageElement} img the img element to inspect\n * @returns true if the img src is encoded in base64, false otherwise\n */\n static isBase64(img) {\n return img.src.startsWith(\"data:image/svg+xml;base64,\") || img.src.startsWith(\"data:image/png;base64,\");\n }\n\n /**\n * Calculates the metrics of a MathType image given the the service response and the image format.\n * @param {HTMLImageElement} img - The HTMLImageElement.\n * @param {String} uri - The URI generated by the image service: can be a data URI scheme or a URL.\n * @param {Boolean} jsonResponse - True the response of the image service is a\n * JSON object. False otherwise.\n */\n static setImgSize(img, uri, jsonResponse) {\n let ar;\n let base64String;\n let bytes;\n let svgString;\n if (jsonResponse) {\n // Cleaning data:image/png;base64.\n if (Image.isSvg(img)) {\n // SVG format.\n // If SVG is encoded in base64 we need to convert the base64 bytes into a SVG string.\n if (!Image.isBase64(img)) {\n ar = Image.getMetricsFromSvgString(uri);\n } else {\n base64String = img.src.substr(img.src.indexOf(\"base64,\") + 7, img.src.length);\n svgString = \"\";\n bytes = Util.b64ToByteArray(base64String, base64String.length);\n for (let i = 0; i < bytes.length; i += 1) {\n svgString += String.fromCharCode(bytes[i]);\n }\n ar = Image.getMetricsFromSvgString(svgString);\n }\n // PNG format: we store all metrics information in the first 88 bytes.\n } else {\n base64String = img.src.substr(img.src.indexOf(\"base64,\") + 7, img.src.length);\n bytes = Util.b64ToByteArray(base64String, 88);\n ar = Image.getMetricsFromBytes(bytes);\n }\n // Backwards compatibility: we store the metrics into createimage response.\n } else {\n ar = Util.urlToAssArray(uri);\n }\n let width = ar.cw;\n if (!width) {\n return;\n }\n let height = ar.ch;\n let baseline = ar.cb;\n const { dpi } = ar;\n if (dpi) {\n width = (width * 96) / dpi;\n height = (height * 96) / dpi;\n baseline = (baseline * 96) / dpi;\n }\n img.width = width;\n img.height = height;\n img.style.verticalAlign = `-${height - baseline}px`;\n }\n\n /**\n * Calculates the metrics of an image which has been resized. Is used to restore the original\n * metrics of a resized image.\n * @param {HTMLImageElement } img - The resized HTMLImageElement.\n */\n static fixAfterResize(img) {\n img.removeAttribute(\"style\");\n img.removeAttribute(\"width\");\n img.removeAttribute(\"height\");\n // In order to avoid resize with max-width css property.\n img.style.maxWidth = \"none\";\n\n const processImg = (img) => {\n if (img.src.indexOf(\"data:image\") !== -1) {\n if (img.src.indexOf(\"data:image/svg+xml\") !== -1) {\n // Image is in base64: decode it in order to calculate the size, and then bring it back to base64\n // This is a bit of an ugly hack used to recycle the logic of Image.setImgSize instead of rewriting it\n // (which would actually make more sense for readibility and efficiency).\n if (img.src.indexOf(\"data:image/svg+xml;base64,\") !== -1) {\n // 'data:image/svg+xml;base64,'.length === 26\n const base64String = img.getAttribute(\"src\").substring(26);\n const svgString = window.atob(base64String);\n const encodedSvgString = encodeURIComponent(svgString);\n img.setAttribute(\"src\", `data:image/svg+xml;charset=utf8,${encodedSvgString}`);\n // 'data:image/svg+xml;charset=utf8,'.length === 32.\n const svg = decodeURIComponent(img.src.substring(32, img.src.length));\n Image.setImgSize(img, svg, true);\n // Return src to base64!\n img.setAttribute(\"src\", `data:image/svg+xml;base64,${base64String}`);\n } else {\n // 'data:image/svg+xml;charset=utf8,'.length === 32.\n const svg = decodeURIComponent(img.src.substring(32, img.src.length));\n Image.setImgSize(img, svg, true);\n }\n } else {\n // 'data:image/png;base64,' === 22.\n const base64 = img.src.substring(22, img.src.length);\n Image.setImgSize(img, base64, true);\n }\n } else {\n Image.setImgSize(img, img.src);\n }\n };\n\n // If the image doesn't contain a blob, just process it normally\n if (img.src.indexOf(\"blob:\") === -1) {\n processImg(img);\n // if it does contain a blob, then read that, replace the src with the decoded content, and process it\n } else {\n const reader = new FileReader();\n reader.onload = function () {\n img.setAttribute(\"src\", reader.result);\n processImg(img);\n };\n fetch(img.src)\n .then((r) => r.blob())\n .then((blob) => {\n reader.readAsDataURL(blob);\n });\n }\n }\n\n /**\n * Returns the metrics (height, width and baseline) contained in a SVG image generated\n * by the MathType image service. This image contains as an extra custom attribute:\n * the baseline (wrs:baseline).\n * @param {String} svgString - The SVG image.\n * @return {Array} - The image metrics.\n */\n static getMetricsFromSvgString(svgString) {\n let first = svgString.indexOf('height=\"');\n let last = svgString.indexOf('\"', first + 8, svgString.length);\n const height = svgString.substring(first + 8, last);\n\n first = svgString.indexOf('width=\"');\n last = svgString.indexOf('\"', first + 7, svgString.length);\n const width = svgString.substring(first + 7, last);\n\n first = svgString.indexOf('wrs:baseline=\"');\n last = svgString.indexOf('\"', first + 14, svgString.length);\n const baseline = svgString.substring(first + 14, last);\n\n if (typeof width !== \"undefined\") {\n const arr = [];\n arr.cw = width;\n arr.ch = height;\n if (typeof baseline !== \"undefined\") {\n arr.cb = baseline;\n }\n return arr;\n }\n return [];\n }\n\n /**\n * Returns the metrics (width, height, baseline and dpi) contained in a PNG byte array.\n * @param {Array.<Bytes>} bytes - png byte array.\n * @return {Array} The png metrics.\n */\n static getMetricsFromBytes(bytes) {\n Util.readBytes(bytes, 0, 8);\n let width;\n let height;\n let typ;\n let baseline;\n let dpi;\n while (bytes.length >= 4) {\n typ = Util.readInt32(bytes);\n if (typ === 0x49484452) {\n width = Util.readInt32(bytes);\n height = Util.readInt32(bytes);\n // Read 5 bytes.\n Util.readInt32(bytes);\n Util.readByte(bytes);\n } else if (typ === 0x62615345) {\n // Baseline: 'baSE'.\n baseline = Util.readInt32(bytes);\n } else if (typ === 0x70485973) {\n // Dpis: 'pHYs'.\n dpi = Util.readInt32(bytes);\n dpi = Math.round(dpi / 39.37);\n Util.readInt32(bytes);\n Util.readByte(bytes);\n }\n Util.readInt32(bytes);\n }\n\n if (typeof width !== \"undefined\") {\n const arr = [];\n arr.cw = width;\n arr.ch = height;\n arr.dpi = dpi;\n if (baseline) {\n arr.cb = baseline;\n }\n\n return arr;\n }\n return [];\n }\n}\n","import TextCache from \"./textcache\";\nimport ServiceProvider from \"./serviceprovider\";\nimport MathML from \"./mathml\";\nimport StringManager from \"./stringmanager\";\n\n/**\n * @classdesc\n * This class represents MathType accessible class. Converts MathML to accessible text and manages\n * the associated client-side cache.\n */\nexport default class Accessibility {\n /**\n * Static property.\n * Accessibility cache, each entry contains a MathML and its correspondent accessibility text.\n * @type {TextCache}\n */\n static get cache() {\n return Accessibility._cache;\n }\n\n /**\n * Static property setter.\n * Set accessibility cache.\n * @param {TextCahe} value - The property value.\n * @ignore\n */\n static set cache(value) {\n Accessibility._cache = value;\n }\n\n /**\n * Converts MathML strings to its accessible text representation.\n * @param {String} mathML - MathML to be converted to accessible text.\n * @param {String} [language] - Language of the accessible text. 'en' by default.\n * @param {Array.<String>} [data] - Parameters to send to mathml2accessible service.\n * @return {String} Accessibility text.\n */\n static mathMLToAccessible(mathML, language, data) {\n if (typeof language === \"undefined\") {\n language = \"en\";\n }\n // Check MathML class. If the class is chemistry,\n // we add chemistry to data to force accessibility service\n // to load chemistry grammar.\n if (MathML.containClass(mathML, \"wrs_chemistry\")) {\n data.mode = \"chemistry\";\n }\n // Ignore accesibility styles\n data.ignoreStyles = true;\n let accessibleText = \"\";\n\n if (Accessibility.cache.get(mathML)) {\n accessibleText = Accessibility.cache.get(mathML);\n } else {\n data.service = \"mathml2accessible\";\n data.lang = language;\n const accessibleJsonResponse = JSON.parse(ServiceProvider.getService(\"service\", data));\n if (accessibleJsonResponse.status !== \"error\") {\n accessibleText = accessibleJsonResponse.result.text;\n Accessibility.cache.populate(mathML, accessibleText);\n } else {\n accessibleText = StringManager.get(\"error_convert_accessibility\");\n }\n }\n\n return accessibleText;\n }\n}\n\n/**\n * Contains an instance of TextCache class to manage the JavaScript accessible cache.\n * Each entry of the cache object contains the MathML and it's correspondent accessibility text.\n * @private\n * @type {TextCache}\n */\nAccessibility._cache = new TextCache();\n","import Util from \"./util\";\nimport Latex from \"./latex\";\nimport MathML from \"./mathml\";\nimport Image from \"./image\";\nimport Accessibility from \"./accessibility\";\nimport ServiceProvider from \"./serviceprovider\";\nimport Configuration from \"./configuration\";\nimport Constants from \"./constants\";\n// eslint-disable-next-line no-unused-vars\nimport md5 from \"./md5\";\n\n/**\n * @classdesc\n * This class represent a MahML parser. Converts MathML into formulas depending on the\n * image format (SVG, PNG, base64) and the save mode (XML, safeXML, Image) configured\n * in the backend.\n */\nexport default class Parser {\n /**\n * Converts a MathML string to an img element.\n * @param {Document} creator - Document object to call createElement method.\n * @param {string} mathml - MathML code\n * @param {Object[]} wirisProperties - object containing WIRIS custom properties\n * @param {language} language - custom language for accessibility.\n * @returns {HTMLImageElement} the formula image corresponding to initial MathML string.\n * @static\n */\n static mathmlToImgObject(creator, mathml, wirisProperties, language) {\n const imgObject = creator.createElement(\"img\");\n imgObject.align = \"middle\";\n imgObject.style.maxWidth = \"none\";\n let data = wirisProperties || {};\n\n // Take into account the backend config\n const wirisEditorProperties = Configuration.get(\"editorParameters\");\n data = { ...wirisEditorProperties, ...data };\n\n data.mml = mathml;\n data.lang = language;\n // Request metrics of the generated image.\n data.metrics = \"true\";\n data.centerbaseline = \"false\";\n\n // Full base64 method (edit & save).\n if (Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"default\") {\n data.base64 = true;\n }\n\n // Render js params: _wrs_int_wirisProperties contains some js render params.\n // Since MathML can support render params, js params should be send only to editor.\n\n imgObject.className = Configuration.get(\"imageClassName\");\n\n if (mathml.indexOf('class=\"') !== -1) {\n // We check here if the MathML has been created from a customEditor (such chemistry)\n // to add custom editor name attribute to img object (if necessary).\n let mathmlSubstring = mathml.substring(mathml.indexOf('class=\"') + 'class=\"'.length, mathml.length);\n mathmlSubstring = mathmlSubstring.substring(0, mathmlSubstring.indexOf('\"'));\n mathmlSubstring = mathmlSubstring.substring(4, mathmlSubstring.length);\n imgObject.setAttribute(Configuration.get(\"imageCustomEditorName\"), mathmlSubstring);\n }\n\n // WARNING: This code is needed for CKEditor 5 Track Changes compatibility.\n // Preserve Track Changes attributes (suggestions and comments) when converting MathML to image.\n // These attributes are needed to maintain change tracking information in collaborative editing scenarios.\n // They are extracted from the input MathML and transferred to the output image element.\n const TRACK_CHANGES_ATTRIBUTE_PREFIXES = [\"data-suggestion-\", \"data-comment-\"];\n const attributePattern = /([\\w-]+)=\"([^\"]*)\"/g;\n let attributeMatch;\n\n // Parse only the opening <math> tag to extract attributes\n const mathOpeningTagEnd = mathml.indexOf(\">\");\n\n if (mathOpeningTagEnd !== -1) {\n const mathOpeningTag = mathml.substring(0, mathOpeningTagEnd);\n\n while ((attributeMatch = attributePattern.exec(mathOpeningTag)) !== null) {\n const [, attributeName, attributeValue] = attributeMatch;\n\n // Transfer Track Changes attributes from MathML to image\n const isTrackChangesAttribute = TRACK_CHANGES_ATTRIBUTE_PREFIXES.some((prefix) =>\n attributeName.startsWith(prefix),\n );\n\n if (isTrackChangesAttribute) {\n imgObject.setAttribute(attributeName, Util.htmlEntitiesDecode(attributeValue));\n }\n }\n }\n\n // Performance enabled.\n if (\n Configuration.get(\"wirisPluginPerformance\") &&\n (Configuration.get(\"saveMode\") === \"xml\" || Configuration.get(\"saveMode\") === \"safeXml\")\n ) {\n let result = JSON.parse(Parser.createShowImageSrc(data, language));\n if (result.status === \"warning\") {\n // POST call.\n // if the mathml is malformed, this function will throw an exception.\n try {\n result = JSON.parse(ServiceProvider.getService(\"showimage\", data));\n } catch (e) {\n return null;\n }\n }\n ({ result } = result);\n if (result.format === \"png\") {\n imgObject.src = `data:image/png;base64,${result.content}`;\n } else {\n imgObject.src = `data:image/svg+xml;charset=utf8,${Util.urlEncode(result.content)}`;\n }\n imgObject.setAttribute(Configuration.get(\"imageMathmlAttribute\"), MathML.safeXmlEncode(mathml));\n Image.setImgSize(imgObject, result.content, true);\n\n if (Configuration.get(\"enableAccessibility\")) {\n if (typeof result.alt === \"undefined\") {\n imgObject.alt = Accessibility.mathMLToAccessible(mathml, language, data);\n } else {\n imgObject.alt = result.alt;\n }\n }\n } else {\n const result = Parser.createImageSrc(mathml, data);\n imgObject.setAttribute(Configuration.get(\"imageMathmlAttribute\"), MathML.safeXmlEncode(mathml));\n imgObject.src = result;\n Image.setImgSize(\n imgObject,\n result,\n Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"default\",\n );\n if (Configuration.get(\"enableAccessibility\")) {\n imgObject.alt = Accessibility.mathMLToAccessible(mathml, language, data);\n }\n }\n\n if (typeof Parser.observer !== \"undefined\") {\n Parser.observer.observe(imgObject);\n }\n\n // Role math https://www.w3.org/TR/wai-aria/roles#math.\n imgObject.setAttribute(\"role\", \"math\");\n return imgObject;\n }\n\n /**\n * Returns the source to showimage service by calling createimage service. The\n * output of the createimage service is a URL path pointing to showimage service.\n * This method is called when performance is disabled.\n * @param {string} mathml - MathML code.\n * @param {Object[]} data - data object containing service parameters.\n * @returns {string} the showimage path.\n */\n static createImageSrc(mathml, data) {\n // Full base64 method (edit & save).\n if (Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"default\") {\n data.base64 = true;\n }\n\n let result = ServiceProvider.getService(\"createimage\", data);\n\n if (result.indexOf(\"@BASE@\") !== -1) {\n // Replacing '@BASE@' with the base URL of createimage.\n const baseParts = ServiceProvider.getServicePath(\"createimage\").split(\"/\");\n baseParts.pop();\n result = result.split(\"@BASE@\").join(baseParts.join(\"/\"));\n }\n\n return result;\n }\n\n /**\n * Parses initial HTML code. If the HTML contains data generated by WIRIS,\n * this data would be converted as following:\n * <pre>\n * MathML code: Image containing the corresponding MathML formulas.\n * MathML code with LaTeX annotation : LaTeX string.\n * </pre>\n * @param {string} code - HTML code containing MathML data.\n * @param {string} language - language to create image alt text.\n * @returns {string} HTML code with the original MathML converted into LaTeX and images.\n */\n static initParse(code, language) {\n /* Note: The code inside this function has been inverted.\n If you invert again the code then you cannot use correctly LaTeX\n in Moodle.\n */\n code = Parser.initParseSaveMode(code, language);\n return Parser.initParseEditMode(code);\n }\n\n /**\n * Parses initial HTML code depending on the save mode. Transforms all MathML\n * occurrences for it's correspondent image or LaTeX.\n * @param {string} code - HTML code to be parsed\n * @param {string} language - language to create image alt text.\n * @returns {string} HTML code parsed.\n */\n static initParseSaveMode(code, language) {\n if (Configuration.get(\"saveMode\")) {\n // Converting XML to tags.\n code = Latex.parseMathmlToLatex(code, Constants.safeXmlCharacters);\n code = Latex.parseMathmlToLatex(code, Constants.xmlCharacters);\n code = Parser.parseMathmlToImg(code, Constants.safeXmlCharacters, language);\n code = Parser.parseMathmlToImg(code, Constants.xmlCharacters, language);\n if (Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"image\") {\n code = Parser.codeImgTransform(code, \"base642showimage\");\n }\n }\n return code;\n }\n\n /**\n * Parses initial HTML code depending on the edit mode.\n * If 'latex' parseMode is enabled all MathML containing an annotation with encoding='LaTeX' will\n * be converted into a LaTeX string instead of an image.\n * @param {string} code - HTML code containing MathML.\n * @returns {string} parsed HTML code.\n */\n static initParseEditMode(code) {\n if (Configuration.get(\"parseModes\").indexOf(\"latex\") !== -1) {\n const imgList = Util.getElementsByNameFromString(code, \"img\", true);\n const token = 'encoding=\"LaTeX\">';\n // While replacing images with latex, the indexes of the found images changes\n // respecting the original code, so this carry is needed.\n let carry = 0;\n\n for (let i = 0; i < imgList.length; i += 1) {\n const imgCode = code.substring(imgList[i].start + carry, imgList[i].end + carry);\n\n if (imgCode.indexOf(` class=\"${Configuration.get(\"imageClassName\")}\"`) !== -1) {\n let mathmlStartToken = ` ${Configuration.get(\"imageMathmlAttribute\")}=\"`;\n let mathmlStart = imgCode.indexOf(mathmlStartToken);\n\n if (mathmlStart === -1) {\n mathmlStartToken = ' alt=\"';\n mathmlStart = imgCode.indexOf(mathmlStartToken);\n }\n\n if (mathmlStart !== -1) {\n mathmlStart += mathmlStartToken.length;\n const mathmlEnd = imgCode.indexOf('\"', mathmlStart);\n const mathml = Util.htmlSanitize(MathML.safeXmlDecode(imgCode.substring(mathmlStart, mathmlEnd)));\n let latexStartPosition = mathml.indexOf(token);\n\n if (latexStartPosition !== -1) {\n latexStartPosition += token.length;\n const latexEndPosition = mathml.indexOf(\"</annotation>\", latexStartPosition);\n const latex = mathml.substring(latexStartPosition, latexEndPosition);\n\n const replaceText = `$$${Util.htmlEntitiesDecode(latex)}$$`;\n const start = code.substring(0, imgList[i].start + carry);\n const end = code.substring(imgList[i].end + carry);\n code = start + replaceText + end;\n carry += replaceText.length - (imgList[i].end - imgList[i].start);\n }\n }\n }\n }\n }\n\n return code;\n }\n\n /**\n * Parses end HTML code. The end HTML code is HTML code with embedded images\n * or LaTeX formulas created with MathType. <br>\n * By default this method converts the formula images and LaTeX strings in MathML. <br>\n * If image mode is enabled the images will not be converted into MathML. For further information see {@link https://docs.wiris.com/mathtype/en/mathtype-integrations/mathtype-web-interface-features/full-mathml-mode---wirisplugins-js.html}.\n * @param {string} code - HTML to be parsed\n * @returns {string} the HTML code parsed.\n */\n static endParse(code) {\n // Transform LaTeX ocurrences to MathML elements.\n const codeEndParsedEditMode = Parser.endParseEditMode(code);\n // Transform img elements to MathML elements.\n const codeEndParseSaveMode = Parser.endParseSaveMode(codeEndParsedEditMode);\n return codeEndParseSaveMode;\n }\n\n /**\n * Parses end HTML code depending on the edit mode.\n * - LaTeX is an enabled parse mode, all LaTeX occurrences will be converted into MathML.\n * @param {string} code - HTML code to be parsed.\n * @returns {string} HTML code parsed.\n */\n static endParseEditMode(code) {\n // Converting LaTeX to images.\n if (Configuration.get(\"parseModes\").indexOf(\"latex\") !== -1) {\n let output = \"\";\n let endPosition = 0;\n let startPosition = code.indexOf(\"$$\");\n while (startPosition !== -1) {\n output += code.substring(endPosition, startPosition);\n endPosition = code.indexOf(\"$$\", startPosition + 2);\n\n if (endPosition !== -1) {\n // Before, it was a condition here to execute the next codelines\n // 'latex.indexOf('<') == -1'.\n // We don't know why it was used, but seems to have a conflict with\n // latex formulas that contains '<'.\n const latex = code.substring(startPosition + 2, endPosition);\n const decodedLatex = Util.htmlEntitiesDecode(latex);\n let mathml = Util.htmlSanitize(Latex.getMathMLFromLatex(decodedLatex, true));\n if (!Configuration.get(\"saveHandTraces\")) {\n // Remove hand traces.\n mathml = MathML.removeAnnotation(mathml, \"application/json\");\n }\n output += mathml;\n endPosition += 2;\n } else {\n output += \"$$\";\n endPosition = startPosition + 2;\n }\n\n startPosition = code.indexOf(\"$$\", endPosition);\n }\n\n output += code.substring(endPosition, code.length);\n code = output;\n }\n\n return code;\n }\n\n /**\n * Parses end HTML code depending on the save mode. Converts all\n * images into the element determined by the save mode:\n * - xml: Parses images formulas into MathML.\n * - safeXml: Parses images formulas into safeMAthML\n * - base64: Parses images into base64 images.\n * - image: Parse images into images (no parsing)\n * @param {string} code - HTML code to be parsed\n * @returns {string} HTML code parsed.\n */\n static endParseSaveMode(code) {\n const savemode = Configuration.get(\"saveMode\");\n const base64savemode = Configuration.get(\"base64savemode\");\n\n if (savemode) {\n if (savemode === \"safeXml\") {\n code = Parser.codeImgTransform(code, \"img2mathml\");\n } else if (savemode === \"xml\") {\n code = Parser.codeImgTransform(code, \"img2mathml\");\n } else if (savemode === \"base64\" && base64savemode === \"image\") {\n code = Parser.codeImgTransform(code, \"img264\");\n }\n }\n\n return code;\n }\n\n /**\n * Auxiliar function that builds the data object to send to the showimage endpoint\n * @param {Object[]} data - object containing showimage service parameters.\n * @param {string} language - string containing the language of the formula.\n * @returns {Object} JSON object with the data to send to showimage.\n */\n static createShowImageSrcData(data, language) {\n const dataMd5 = {};\n const renderParams = [\n \"mml\",\n \"color\",\n \"centerbaseline\",\n \"zoom\",\n \"dpi\",\n \"fontSize\",\n \"fontFamily\",\n \"defaultStretchy\",\n \"backgroundColor\",\n \"format\",\n ];\n renderParams.forEach((param) => {\n if (typeof data[param] !== \"undefined\") {\n dataMd5[param] = data[param];\n }\n });\n // Data variables to get.\n const dataObject = {};\n Object.keys(data).forEach((key) => {\n // We don't need mathml in this request we try to get cached.\n // Only need the formula md5 calculated before.\n if (key !== \"mml\") {\n dataObject[key] = data[key];\n }\n });\n\n dataObject.formula = com.wiris.js.JsPluginTools.md5encode(Util.propertiesToString(dataMd5));\n dataObject.lang = typeof language === \"undefined\" ? \"en\" : language;\n dataObject.version = Configuration.get(\"version\");\n\n return dataObject;\n }\n\n /**\n * Returns the result to call showimage service with the formula md5 as parameter.\n * The result could be:\n * - {'status' : warning'} : The image associated to the MathML md5 is not in cache.\n * - {'status' : 'ok' ...} : The image associated to the MathML md5 is in cache.\n * @param {Object[]} data - object containing showimage service parameters.\n * @param {string} language - string containing the language of the formula.\n * @returns {Object} JSON object containing showimage response.\n */\n static createShowImageSrc(data, language) {\n const dataObject = this.createShowImageSrcData(data, language);\n const result = ServiceProvider.getService(\"showimage\", Util.httpBuildQuery(dataObject), true);\n return result;\n }\n\n /**\n * Transform html img tags inside a html code to mathml, base64 img tags (i.e with base64 on src)\n * or showimage img tags (i.e with showimage.php on src)\n * @param {string} code - HTML code\n * @param {string} mode - base642showimage or img2mathml or img264 transform.\n * @returns {string} html - code transformed.\n */\n static codeImgTransform(code, mode) {\n let output = \"\";\n let endPosition = 0;\n const pattern = /<img/gi;\n const patternLength = pattern.source.length;\n\n while (pattern.test(code)) {\n const startPosition = pattern.lastIndex - patternLength;\n output += code.substring(endPosition, startPosition);\n\n let i = startPosition + 1;\n\n while (i < code.length && endPosition <= startPosition) {\n const character = code.charAt(i);\n\n if (character === '\"' || character === \"'\") {\n const characterNextPosition = code.indexOf(character, i + 1);\n\n if (characterNextPosition === -1) {\n i = code.length; // End while.\n } else {\n i = characterNextPosition;\n }\n } else if (character === \">\") {\n endPosition = i + 1;\n }\n\n i += 1;\n }\n\n if (endPosition < startPosition) {\n // The img tag is stripped.\n output += code.substring(startPosition, code.length);\n return output;\n }\n let imgCode = code.substring(startPosition, endPosition);\n const imgObject = Util.createObject(imgCode);\n let xmlCode = imgObject.getAttribute(Configuration.get(\"imageMathmlAttribute\"));\n let convertToXml;\n let convertToSafeXml;\n\n if (mode === \"base642showimage\") {\n if (xmlCode == null) {\n xmlCode = imgObject.getAttribute(\"alt\");\n }\n xmlCode = MathML.safeXmlDecode(xmlCode);\n imgCode = Parser.mathmlToImgObject(document, xmlCode, null, null);\n output += Util.createObjectCode(imgCode);\n } else if (mode === \"img2mathml\") {\n if (Configuration.get(\"saveMode\")) {\n if (Configuration.get(\"saveMode\") === \"safeXml\") {\n convertToXml = true;\n convertToSafeXml = true;\n } else if (Configuration.get(\"saveMode\") === \"xml\") {\n convertToXml = true;\n convertToSafeXml = false;\n }\n }\n output += Util.getWIRISImageOutput(imgCode, convertToXml, convertToSafeXml);\n } else if (mode === \"img264\") {\n if (xmlCode === null) {\n xmlCode = imgObject.getAttribute(\"alt\");\n }\n xmlCode = MathML.safeXmlDecode(xmlCode);\n\n const properties = {};\n properties.base64 = \"true\";\n imgCode = Parser.mathmlToImgObject(document, xmlCode, properties, null);\n // Metrics.\n Image.setImgSize(imgCode, imgCode.src, true);\n output += Util.createObjectCode(imgCode);\n }\n }\n output += code.substring(endPosition, code.length);\n return output;\n }\n\n /**\n * Converts all occurrences of MathML to the corresponding image.\n * @param {string} content - string with valid MathML code.\n * The MathML code doesn't contain semantics.\n * @param {Constants} characters - Constant object containing xmlCharacters\n * or safeXmlCharacters relation.\n * @param {string} language - a valid language code\n * in order to generate formula accessibility.\n * @returns {string} The input string with all the MathML\n * occurrences replaced by the corresponding image.\n */\n static parseMathmlToImg(content, characters, language) {\n let output = \"\";\n const mathTagBegin = `${characters.tagOpener}math`;\n const mathTagEnd = `${characters.tagOpener}/math${characters.tagCloser}`;\n let start = content.indexOf(mathTagBegin);\n let end = 0;\n\n while (start !== -1) {\n output += content.substring(end, start);\n // Avoid WIRIS images to be parsed.\n const imageMathmlAtrribute = content.indexOf(Configuration.get(\"imageMathmlAttribute\"));\n end = content.indexOf(mathTagEnd, start);\n\n if (end === -1) {\n end = content.length - 1;\n } else if (imageMathmlAtrribute !== -1) {\n // First close tag of img attribute\n // If a mathmlAttribute exists should be inside a img tag.\n end += content.indexOf(\"/>\", start);\n } else {\n end += mathTagEnd.length;\n }\n\n if (!MathML.isMathmlInAttribute(content, start) && imageMathmlAtrribute === -1) {\n let mathml = content.substring(start, end);\n mathml =\n characters.id === Constants.safeXmlCharacters.id\n ? MathML.safeXmlDecode(mathml)\n : MathML.mathMLEntities(mathml);\n output += Util.createObjectCode(Parser.mathmlToImgObject(document, mathml, null, language));\n } else {\n output += content.substring(start, end);\n }\n\n start = content.indexOf(mathTagBegin, end);\n }\n\n output += content.substring(end, content.length);\n return output;\n }\n}\n\n// Mutation observers to avoid wiris image formulas class be removed.\nif (typeof MutationObserver !== \"undefined\") {\n const mutationObserver = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (\n mutation.oldValue === Configuration.get(\"imageClassName\") &&\n mutation.attributeName === \"class\" &&\n mutation.target.className.indexOf(Configuration.get(\"imageClassName\")) === -1\n ) {\n mutation.target.className = Configuration.get(\"imageClassName\");\n }\n });\n });\n\n Parser.observer = Object.create(mutationObserver);\n Parser.observer.Config = { attributes: true, attributeOldValue: true };\n // We use own default config.\n Parser.observer.observe = function (target) {\n Object.getPrototypeOf(this).observe(target, this.Config);\n };\n}\n","/* eslint-disable class-methods-use-this */\n/* eslint-disable no-unused-vars */\n/* eslint-disable no-extra-semi */\n\n// The rules above are disabled because we are implementing\n// an external interface.\n\nexport default class EditorListener {\n /**\n * @classdesc\n * Determines if the content of the\n * MathType Editor has changes.\n * @implements {EditorListeners}\n * @constructs\n */\n constructor() {\n /**\n * Indicates if the content of the editor has changed.\n * @type {Boolean}\n */\n this.isContentChanged = false;\n\n /**\n * Indicates if the listener should be waiting for changes in the editor.\n * @type {Boolean}\n */\n this.waitingForChanges = false;\n }\n\n /**\n * Sets {@link EditorListener.isContentChanged} property.\n * @param {Boolean} value - The new vlue.\n */\n setIsContentChanged(value) {\n this.isContentChanged = value;\n }\n\n /**\n * Returns true if the content of the editor has been changed, false otherwise.\n * @return {Boolean}\n */\n getIsContentChanged() {\n return this.isContentChanged;\n }\n\n /**\n * Determines if the EditorListener should wait for any changes.\n * @param {Boolean} value - True if the editor should wait for changes, false otherwise.\n */\n setWaitingForChanges(value) {\n this.waitingForChanges = value;\n }\n\n /**\n * EditorListener method to overwrite.\n * @type {JsEditor}\n * @ignore\n */\n caretPositionChanged(_editor) {}\n\n /**\n * EditorListener method to overwrite\n * @type {JsEditor}\n * @ignore\n */\n clipboardChanged(_editor) {}\n\n /**\n * Determines if the content of an editor has been changed.\n * @param {JsEditor} editor - editor object.\n */\n contentChanged(_editor) {\n if (this.waitingForChanges === true && this.isContentChanged === false) {\n this.isContentChanged = true;\n }\n }\n\n /**\n * EditorListener method to overwrite\n * @param {JsEditor} editor - The editor instance.\n */\n styleChanged(_editor) {}\n\n /**\n * EditorListener method to overwrite\n * @param {JsEditor} - The editor instance.\n */\n transformationReceived(_editor) {}\n}\n","let wasm;\n\nconst cachedTextDecoder =\n typeof TextDecoder !== \"undefined\"\n ? new TextDecoder(\"utf-8\", { ignoreBOM: true, fatal: true })\n : {\n decode: () => {\n throw Error(\"TextDecoder not available\");\n },\n };\n\nif (typeof TextDecoder !== \"undefined\") {\n cachedTextDecoder.decode();\n}\n\nlet cachedUint8Memory0 = null;\n\nfunction getUint8Memory0() {\n if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) {\n cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nconst heap = new Array(128).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nlet heap_next = heap.length;\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nfunction getObject(idx) {\n return heap[idx];\n}\n\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder =\n typeof TextEncoder !== \"undefined\"\n ? new TextEncoder(\"utf-8\")\n : {\n encode: () => {\n throw Error(\"TextEncoder not available\");\n },\n };\n\nconst encodeString =\n typeof cachedTextEncoder.encodeInto === \"function\"\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n }\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length,\n };\n };\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8Memory0()\n .subarray(ptr, ptr + buf.length)\n .set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7f) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, (len = offset + arg.length * 3), 1) >>> 0;\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nlet cachedInt32Memory0 = null;\n\nfunction getInt32Memory0() {\n if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {\n cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachedInt32Memory0;\n}\n\nlet cachedFloat64Memory0 = null;\n\nfunction getFloat64Memory0() {\n if (cachedFloat64Memory0 === null || cachedFloat64Memory0.byteLength === 0) {\n cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer);\n }\n return cachedFloat64Memory0;\n}\n\nlet cachedBigInt64Memory0 = null;\n\nfunction getBigInt64Memory0() {\n if (cachedBigInt64Memory0 === null || cachedBigInt64Memory0.byteLength === 0) {\n cachedBigInt64Memory0 = new BigInt64Array(wasm.memory.buffer);\n }\n return cachedBigInt64Memory0;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == \"number\" || type == \"boolean\" || val == null) {\n return `${val}`;\n }\n if (type == \"string\") {\n return `\"${val}\"`;\n }\n if (type == \"symbol\") {\n const description = val.description;\n if (description == null) {\n return \"Symbol\";\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == \"function\") {\n const name = val.name;\n if (typeof name == \"string\" && name.length > 0) {\n return `Function(${name})`;\n } else {\n return \"Function\";\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = \"[\";\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for (let i = 1; i < length; i++) {\n debug += \", \" + debugString(val[i]);\n }\n debug += \"]\";\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == \"Object\") {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return \"Object(\" + JSON.stringify(val) + \")\";\n } catch (_) {\n return \"Object\";\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction makeClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n try {\n return f(state.a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b);\n state.a = 0;\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_46(arg0, arg1, arg2) {\n wasm.__wbindgen_export_3(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(a, state.b);\n } else {\n state.a = a;\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_49(arg0, arg1) {\n wasm.__wbindgen_export_4(arg0, arg1);\n}\n\nfunction __wbg_adapter_52(arg0, arg1, arg2) {\n wasm.__wbindgen_export_5(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_export_6(addHeapObject(e));\n }\n}\nfunction __wbg_adapter_103(arg0, arg1, arg2, arg3) {\n wasm.__wbindgen_export_7(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));\n}\n\n/**\n */\nexport function main_js() {\n wasm.main_js();\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n */\nexport const Level = Object.freeze({\n Err: 0,\n 0: \"Err\",\n Warn: 1,\n 1: \"Warn\",\n Info: 2,\n 2: \"Info\",\n Debug: 3,\n 3: \"Debug\",\n});\n/**\n */\nexport class Telemeter {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_telemeter_free(ptr);\n }\n /**\n * @param {any} solution\n * @param {any} hosts\n * @param {any} config\n */\n constructor(solution, hosts, config) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.telemeter_new(retptr, addHeapObject(solution), addHeapObject(hosts), addHeapObject(config));\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n this.__wbg_ptr = r0 >>> 0;\n return this;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string} sender_id\n * @returns {Promise<any>}\n */\n identify(sender_id) {\n const ptr0 = passStringToWasm0(sender_id, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.telemeter_identify(this.__wbg_ptr, ptr0, len0);\n return takeObject(ret);\n }\n /**\n * @param {string} event_type\n * @param {any} event_payload\n * @returns {Promise<any>}\n */\n track(event_type, event_payload) {\n const ptr0 = passStringToWasm0(event_type, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.telemeter_track(this.__wbg_ptr, ptr0, len0, addHeapObject(event_payload));\n return takeObject(ret);\n }\n /**\n * @param {any} level\n * @param {string} message\n * @param {any} payload\n * @returns {Promise<any>}\n */\n log(level, message, payload) {\n const ptr0 = passStringToWasm0(message, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.telemeter_log(this.__wbg_ptr, addHeapObject(level), ptr0, len0, addHeapObject(payload));\n return takeObject(ret);\n }\n /**\n * @returns {Promise<any>}\n */\n finish() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.telemeter_finish(ptr);\n return takeObject(ret);\n }\n /**\n * @param {boolean | undefined} [new_debug_status]\n */\n debug(new_debug_status) {\n wasm.telemeter_debug(this.__wbg_ptr, isLikeNone(new_debug_status) ? 0xffffff : new_debug_status ? 1 : 0);\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === \"function\" && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === \"function\") {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n if (module.headers.get(\"Content-Type\") != \"application/wasm\") {\n console.warn(\n \"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\",\n e,\n );\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_string_new = function (arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_c728d68b8b34487e = function () {\n const ret = new Object();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_status_7841bb47be2a8f16 = function (arg0) {\n const ret = getObject(arg0).status;\n return ret;\n };\n imports.wbg.__wbg_headers_ea7ef583d1564b08 = function (arg0) {\n const ret = getObject(arg0).headers;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new0_ad75dd38f92424e2 = function () {\n const ret = new Date();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getTime_ed6ee333b702f8fc = function (arg0) {\n const ret = getObject(arg0).getTime();\n return ret;\n };\n imports.wbg.__wbindgen_object_drop_ref = function (arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_is_object = function (arg0) {\n const val = getObject(arg0);\n const ret = typeof val === \"object\" && val !== null;\n return ret;\n };\n imports.wbg.__wbg_crypto_58f13aa23ffcb166 = function (arg0) {\n const ret = getObject(arg0).crypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_process_5b786e71d465a513 = function (arg0) {\n const ret = getObject(arg0).process;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_versions_c2ab80650590b6a2 = function (arg0) {\n const ret = getObject(arg0).versions;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_node_523d7bd03ef69fba = function (arg0) {\n const ret = getObject(arg0).node;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_string = function (arg0) {\n const ret = typeof getObject(arg0) === \"string\";\n return ret;\n };\n imports.wbg.__wbg_msCrypto_abcb1295e768d1f2 = function (arg0) {\n const ret = getObject(arg0).msCrypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_require_2784e593a4674877 = function () {\n return handleError(function () {\n const ret = module.require;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_newwithlength_13b5319ab422dcf6 = function (arg0) {\n const ret = new Uint8Array(arg0 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_4a9aa5157afeb382 = function (arg0, arg1) {\n const ret = getObject(arg0)[arg1 >>> 0];\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_next_1989a20442400aaa = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).next();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_done_bc26bf4ada718266 = function (arg0) {\n const ret = getObject(arg0).done;\n return ret;\n };\n imports.wbg.__wbg_value_0570714ff7d75f35 = function (arg0) {\n const ret = getObject(arg0).value;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_iterator_7ee1a391d310f8e4 = function () {\n const ret = Symbol.iterator;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_2aff440840bb6202 = function () {\n return handleError(function (arg0, arg1) {\n const ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_next_15da6a3df9290720 = function (arg0) {\n const ret = getObject(arg0).next;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_function = function (arg0) {\n const ret = typeof getObject(arg0) === \"function\";\n return ret;\n };\n imports.wbg.__wbg_call_669127b9d730c650 = function () {\n return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_object_clone_ref = function (arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_self_3fad056edded10bd = function () {\n return handleError(function () {\n const ret = self.self;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_window_a4f46c98a61d4089 = function () {\n return handleError(function () {\n const ret = window.window;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_globalThis_17eff828815f7d84 = function () {\n return handleError(function () {\n const ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_global_46f939f6541643c5 = function () {\n return handleError(function () {\n const ret = global.global;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_is_undefined = function (arg0) {\n const ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbg_newnoargs_ccdcae30fd002262 = function (arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_isArray_38525be7442aa21e = function (arg0) {\n const ret = Array.isArray(getObject(arg0));\n return ret;\n };\n imports.wbg.__wbg_call_53fc3abd42e24ec8 = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_isSafeInteger_c38b0a16d0c7cef7 = function (arg0) {\n const ret = Number.isSafeInteger(getObject(arg0));\n return ret;\n };\n imports.wbg.__wbg_new_feb65b865d980ae2 = function (arg0, arg1) {\n try {\n var state0 = { a: arg0, b: arg1 };\n var cb0 = (arg0, arg1) => {\n const a = state0.a;\n state0.a = 0;\n try {\n return __wbg_adapter_103(a, state0.b, arg0, arg1);\n } finally {\n state0.a = a;\n }\n };\n const ret = new Promise(cb0);\n return addHeapObject(ret);\n } finally {\n state0.a = state0.b = 0;\n }\n };\n imports.wbg.__wbindgen_memory = function () {\n const ret = wasm.memory;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_buffer_344d9b41efe96da7 = function (arg0) {\n const ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_d8a000788389a31e = function (arg0) {\n const ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_set_dcfd613a3420f908 = function (arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n };\n imports.wbg.__wbg_length_a5587d6cd79ab197 = function (arg0) {\n const ret = getObject(arg0).length;\n return ret;\n };\n imports.wbg.__wbindgen_string_get = function (arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof obj === \"string\" ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n var len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_stringify_4039297315a25b00 = function () {\n return handleError(function (arg0) {\n const ret = JSON.stringify(getObject(arg0));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_set_40f7786a25a9cc7e = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));\n return ret;\n }, arguments);\n };\n imports.wbg.__wbg_has_cdf8b85f6e903c80 = function () {\n return handleError(function (arg0, arg1) {\n const ret = Reflect.has(getObject(arg0), getObject(arg1));\n return ret;\n }, arguments);\n };\n imports.wbg.__wbg_fetch_701fcd2bde06379a = function (arg0, arg1) {\n const ret = getObject(arg0).fetch(getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fetch_b5d6bebed1e6c2d2 = function (arg0) {\n const ret = fetch(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_2dc04d99088b15e3 = function (arg0, arg1, arg2) {\n const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_e4960143e41697a4 = function () {\n return handleError(function () {\n const ret = new AbortController();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_signal_1ed842bebd6ae322 = function (arg0) {\n const ret = getObject(arg0).signal;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_abort_8355f201f30300bb = function (arg0) {\n getObject(arg0).abort();\n };\n imports.wbg.__wbindgen_error_new = function (arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_jsval_loose_eq = function (arg0, arg1) {\n const ret = getObject(arg0) == getObject(arg1);\n return ret;\n };\n imports.wbg.__wbindgen_boolean_get = function (arg0) {\n const v = getObject(arg0);\n const ret = typeof v === \"boolean\" ? (v ? 1 : 0) : 2;\n return ret;\n };\n imports.wbg.__wbindgen_number_get = function (arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof obj === \"number\" ? obj : undefined;\n getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbg_instanceof_Uint8Array_19e6f142a5e7e1e1 = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_instanceof_ArrayBuffer_c7cc317e5c29cc0d = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_entries_6d727b73ee02b7ce = function (arg0) {\n const ret = Object.entries(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_String_917f38a1211cf44b = function (arg0, arg1) {\n const ret = String(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_warn_ade8d3b7ecee11ff = function (arg0, arg1) {\n console.warn(getObject(arg0), getObject(arg1));\n };\n imports.wbg.__wbg_readyState_13e55da5ad6d64e2 = function (arg0) {\n const ret = getObject(arg0).readyState;\n return ret;\n };\n imports.wbg.__wbg_warn_4affe1093892a4ef = function (arg0) {\n console.warn(getObject(arg0));\n };\n imports.wbg.__wbg_close_f4135085ec3fc8f0 = function () {\n return handleError(function (arg0) {\n getObject(arg0).close();\n }, arguments);\n };\n imports.wbg.__wbg_new_b9b318679315404f = function () {\n return handleError(function (arg0, arg1) {\n const ret = new WebSocket(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_setbinaryType_dcb62e0f2b346301 = function (arg0, arg1) {\n getObject(arg0).binaryType = takeObject(arg1);\n };\n imports.wbg.__wbg_log_7811587c4c6d2844 = function (arg0) {\n console.log(getObject(arg0));\n };\n imports.wbg.__wbg_error_f0a6627f4b23c19d = function (arg0) {\n console.error(getObject(arg0));\n };\n imports.wbg.__wbg_info_3ca7870690403fee = function (arg0) {\n console.info(getObject(arg0));\n };\n imports.wbg.__wbg_document_183cf1eecfdbffee = function (arg0) {\n const ret = getObject(arg0).document;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_visibilityState_9721703a5ef75faf = function (arg0) {\n const ret = getObject(arg0).visibilityState;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getwithrefkey_3b3c46ba20582127 = function (arg0, arg1) {\n const ret = getObject(arg0)[getObject(arg1)];\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_length_cace2e0b3ddc0502 = function (arg0) {\n const ret = getObject(arg0).length;\n return ret;\n };\n imports.wbg.__wbg_addEventListener_0f2891b0794e07fa = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));\n }, arguments);\n };\n imports.wbg.__wbg_removeEventListener_104d11302bb212d1 = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).removeEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));\n }, arguments);\n };\n imports.wbg.__wbindgen_is_bigint = function (arg0) {\n const ret = typeof getObject(arg0) === \"bigint\";\n return ret;\n };\n imports.wbg.__wbindgen_bigint_from_i64 = function (arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_in = function (arg0, arg1) {\n const ret = getObject(arg0) in getObject(arg1);\n return ret;\n };\n imports.wbg.__wbindgen_bigint_from_u64 = function (arg0) {\n const ret = BigInt.asUintN(64, arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_jsval_eq = function (arg0, arg1) {\n const ret = getObject(arg0) === getObject(arg1);\n return ret;\n };\n imports.wbg.__wbg_localStorage_e11f72e996a4f5d9 = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).localStorage;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_getItem_c81cd3ae30cd579a = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = getObject(arg1).getItem(getStringFromWasm0(arg2, arg3));\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n var len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n }, arguments);\n };\n imports.wbg.__wbg_navigator_7078da62d92ff5ad = function (arg0) {\n const ret = getObject(arg0).navigator;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_mediaDevices_e00b1f64d2b9939f = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).mediaDevices;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_enumerateDevices_619d52f5eef34c2f = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).enumerateDevices();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_setItem_fe04f524052a3839 = function () {\n return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).setItem(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n }, arguments);\n };\n imports.wbg.__wbindgen_cb_drop = function (arg0) {\n const obj = takeObject(arg0).original;\n if (obj.cnt-- == 1) {\n obj.a = 0;\n return true;\n }\n const ret = false;\n return ret;\n };\n imports.wbg.__wbg_deviceId_58f7da2228a26c02 = function (arg0, arg1) {\n const ret = getObject(arg1).deviceId;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_instanceof_Response_944e2745b5db71f5 = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Response;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_randomFillSync_a0d98aa11c81fe89 = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).randomFillSync(takeObject(arg1));\n }, arguments);\n };\n imports.wbg.__wbg_subarray_6ca5cfa7fbb9abbe = function (arg0, arg1, arg2) {\n const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getRandomValues_504510b5564925af = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).getRandomValues(getObject(arg1));\n }, arguments);\n };\n imports.wbg.__wbindgen_bigint_get_as_i64 = function (arg0, arg1) {\n const v = getObject(arg1);\n const ret = typeof v === \"bigint\" ? v : undefined;\n getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbindgen_debug_string = function (arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbindgen_throw = function (arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbg_then_89e1c559530b85cf = function (arg0, arg1) {\n const ret = getObject(arg0).then(getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_queueMicrotask_e5949c35d772a669 = function (arg0) {\n queueMicrotask(getObject(arg0));\n };\n imports.wbg.__wbg_then_1bbc9edafd859b06 = function (arg0, arg1, arg2) {\n const ret = getObject(arg0).then(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_queueMicrotask_2be8b97a81fe4d00 = function (arg0) {\n const ret = getObject(arg0).queueMicrotask;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_resolve_a3252b2860f0a09e = function (arg0) {\n const ret = Promise.resolve(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_url_1f609e63ff1a7983 = function (arg0, arg1) {\n const ret = getObject(arg1).url;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_send_2860805104507701 = function () {\n return handleError(function (arg0, arg1, arg2) {\n getObject(arg0).send(getArrayU8FromWasm0(arg1, arg2));\n }, arguments);\n };\n imports.wbg.__wbg_instanceof_Window_cde2416cf5126a72 = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Window;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_new_19676474aa414d62 = function () {\n return handleError(function () {\n const ret = new Headers();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_append_feec4143bbf21904 = function () {\n return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).append(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n }, arguments);\n };\n imports.wbg.__wbg_newwithstrandinit_29038da14d09e330 = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_closure_wrapper1532 = function (arg0, arg1, arg2) {\n const ret = makeClosure(arg0, arg1, 76, __wbg_adapter_46);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper1602 = function (arg0, arg1, arg2) {\n const ret = makeMutClosure(arg0, arg1, 76, __wbg_adapter_49);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper1834 = function (arg0, arg1, arg2) {\n const ret = makeMutClosure(arg0, arg1, 76, __wbg_adapter_52);\n return addHeapObject(ret);\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, maybe_memory) {}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedBigInt64Memory0 = null;\n cachedFloat64Memory0 = null;\n cachedInt32Memory0 = null;\n cachedUint8Memory0 = null;\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(input) {\n if (wasm !== undefined) return wasm;\n\n if (typeof input === \"undefined\") {\n input = new URL(\"telemeter_wasm_bg.wasm\", import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (\n typeof input === \"string\" ||\n (typeof Request === \"function\" && input instanceof Request) ||\n (typeof URL === \"function\" && input instanceof URL)\n ) {\n input = fetch(input);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await input, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","/* eslint-disable-next-line */\nimport init, { Telemeter as TelemeterWASM } from \"../telemeter-wasm\";\n\n/**\n * @classdesc\n * This class implements the @wiris/telemeter-wasm. A utility that helps our Solutions to send the data\n * to Telemetry in a more comfortable and homogeneous way.\n */\nexport default class Telemeter {\n /**\n * Inits Telemeter class.\n * The parameters structures are defiended on {@link [Telemeter API](https://github.com/wiris/telemeter/blob/main/docs/USAGE.md#telemeter-api)}\n * @param {Object} telemeterAttributes.solution - The product that send data to Telemetry.\n * @param {Object} telemeterAttributes.hosts - Data about the environment where solution is integrated.\n * @param {Object} telemeterAttributes.config - Configuration parameters.\n */\n static init(telemeterAttributes) {\n if (!this.telemeter && !this.waitingForInit) {\n this.waitingForInit = true;\n init(telemeterAttributes.url)\n .then(() => {\n this.telemeter = new TelemeterWASM(\n telemeterAttributes.solution,\n telemeterAttributes.hosts,\n telemeterAttributes.config,\n );\n })\n .catch((error) => {\n console.log(error);\n })\n .finally(() => (this.waitingForInit = false));\n }\n }\n\n /**\n * Closes the Telemetry Session. After calling this method no data will be added to the Telemetry Session.\n */\n static async finish() {\n if (!this.telemeter) return;\n\n try {\n const local_telemeter = this.telemeter;\n this.telemeter = undefined;\n await local_telemeter.finish();\n } catch (e) {\n console.error(e);\n }\n }\n}\n","import Configuration from \"./configuration\";\nimport Core from \"./core.src\";\nimport EditorListener from \"./editorlistener\";\nimport Listeners from \"./listeners\";\nimport MathML from \"./mathml\";\nimport Util from \"./util\";\nimport Telemeter from \"./telemeter\";\n\nexport default class ContentManager {\n /**\n * @classdesc\n * This class represents a modal dialog, managing the following:\n * - The insertion of content into the current instance of the {@link ModalDialog} class.\n * - The actions to be done once the modal object has been submitted\n * (submitAction} method).\n * - The update of the content when the {@link ModalDialog} class is also updated,\n * for example when ModalDialog is re-opened.\n * - The communication between the {@link ModalDialog} class and itself, if the content\n * has been changed (hasChanges} method).\n * @constructs\n * @param {Object} contentManagerAttributes - Object containing all attributes needed to\n * create a new instance.\n */\n constructor(contentManagerAttributes) {\n /**\n * An object containing MathType editor parameters. See\n * http://docs.wiris.com/en/mathtype/mathtype_web/sdk-api/parameters for further information.\n * @type {Object}\n */\n this.editorAttributes = {};\n if (\"editorAttributes\" in contentManagerAttributes) {\n this.editorAttributes = contentManagerAttributes.editorAttributes;\n } else {\n throw new Error(\"ContentManager constructor error: editorAttributes property missed.\");\n }\n\n /**\n * CustomEditors instance. Contains the custom editors.\n * @type {CustomEditors}\n */\n this.customEditors = null;\n if (\"customEditors\" in contentManagerAttributes) {\n this.customEditors = contentManagerAttributes.customEditors;\n }\n\n /**\n * Environment properties. This object contains data about the integration platform.\n * @type {Object}\n * @property {String} editor - Editor name. Usually the HTML editor.\n * @property {String} mode - Save mode. Xml by default.\n * @property {String} version - Plugin version.\n */\n this.environment = {};\n if (\"environment\" in contentManagerAttributes) {\n this.environment = contentManagerAttributes.environment;\n } else {\n throw new Error(\"ContentManager constructor error: environment property missed\");\n }\n\n /**\n * ContentManager language.\n * @type {String}\n */\n this.language = \"\";\n if (\"language\" in contentManagerAttributes) {\n this.language = contentManagerAttributes.language;\n } else {\n throw new Error(\"ContentManager constructor error: language property missed\");\n }\n\n /**\n * {@link EditorListener} instance. Manages the changes inside the editor.\n * @type {EditorListener}\n */\n this.editorListener = new EditorListener();\n\n /**\n * MathType editor instance.\n * @type {JsEditor}\n */\n this.editor = null;\n\n /**\n * Navigator user agent.\n * @type {String}\n */\n this.ua = navigator.userAgent.toLowerCase();\n\n /**\n * Mobile device properties object\n * @type {DeviceProperties}\n */\n this.deviceProperties = {};\n this.deviceProperties.isAndroid = this.ua.indexOf(\"android\") > -1;\n this.deviceProperties.isIOS = ContentManager.isIOS();\n\n /**\n * Custom editor toolbar.\n * @type {String}\n */\n this.toolbar = null;\n\n /**\n * Custom editor toolbar.\n * @type {String}\n */\n this.dbclick = null;\n\n /**\n * Instance of the {@link ModalDialog} class associated with the current\n * {@link ContentManager} instance.\n * @type {ModalDialog}\n */\n this.modalDialogInstance = null;\n\n /**\n * ContentManager listeners.\n * @type {Listeners}\n */\n this.listeners = new Listeners();\n\n /**\n * MathML associated to the ContentManager instance.\n * @type {String}\n */\n this.mathML = null;\n\n /**\n * Indicates if the edited element is a new one or not.\n * @type {Boolean}\n */\n this.isNewElement = true;\n\n /**\n * {@link IntegrationModel} instance. Needed to call wrapper methods.\n * @type {IntegrationModel}\n */\n this.integrationModel = null;\n }\n\n /**\n * Adds a new listener to the current {@link ContentManager} instance.\n * @param {Object} listener - The listener to be added.\n */\n addListener(listener) {\n this.listeners.add(listener);\n }\n\n /**\n * Sets an instance of {@link IntegrationModel} class to the current {@link ContentManager}\n * instance.\n * @param {IntegrationModel} integrationModel - The {@link IntegrationModel} instance.\n */\n setIntegrationModel(integrationModel) {\n this.integrationModel = integrationModel;\n }\n\n /**\n * Sets the {@link ModalDialog} instance into the current {@link ContentManager} instance.\n * @param {ModalDialog} modalDialogInstance - The {@link ModalDialog} instance\n */\n setModalDialogInstance(modalDialogInstance) {\n this.modalDialogInstance = modalDialogInstance;\n }\n\n /**\n * Inserts the content into the current {@link ModalDialog} instance updating\n * the title and inserting the JavaScript editor.\n */\n insert() {\n // Before insert the editor we update the modal object title to avoid weird render display.\n this.updateTitle(this.modalDialogInstance);\n this.insertEditor(this.modalDialogInstance);\n }\n\n /**\n * Inserts MathType editor into the {@link ModalDialog.contentContainer}. It waits until\n * editor's JavaScript is loaded.\n */\n insertEditor() {\n if (ContentManager.isEditorLoaded()) {\n this.editor = window.com.wiris.jsEditor.JsEditor.newInstance(this.editorAttributes);\n this.editor.insertInto(this.modalDialogInstance.contentContainer);\n this.editor.focus();\n\n // `editor.action(\"rtl\");` toggles the RTL mode based on the current state, it doesn't just switch to RTL.\n if (this.modalDialogInstance.rtl && !this.editor.getEditorModel().isRTL()) {\n this.editor.action(\"rtl\");\n }\n // Setting div in rtl in case of it's activated.\n if (this.editor.getEditorModel().isRTL()) {\n this.editor.element.style.direction = \"rtl\";\n }\n\n // Editor listener: this object manages the changes logic of editor.\n this.editor.getEditorModel().addEditorListener(this.editorListener);\n\n // iOS events.\n if (this.modalDialogInstance.deviceProperties.isIOS) {\n setTimeout(function () {\n // Make sure the modalDialogInstance is available when the timeout is over\n // to avoid throw errors and stop execution.\n if (this.hasOwnProperty(\"modalDialogInstance\")) this.modalDialogInstance.hideKeyboard(); // eslint-disable-line no-prototype-builtins\n }, 400);\n\n const formulaDisplayDiv = document.getElementsByClassName(\"wrs_formulaDisplay\")[0];\n Util.addEvent(formulaDisplayDiv, \"focus\", this.modalDialogInstance.handleOpenedIosSoftkeyboard);\n Util.addEvent(formulaDisplayDiv, \"blur\", this.modalDialogInstance.handleClosedIosSoftkeyboard);\n }\n // Fire onLoad event. Necessary to set the MathML into the editor\n // after is loaded.\n this.listeners.fire(\"onLoad\", {});\n } else {\n setTimeout(ContentManager.prototype.insertEditor.bind(this), 100);\n }\n }\n\n /**\n * Initializes the current class by loading MathType script.\n */\n init() {\n if (!ContentManager.isEditorLoaded()) {\n this.addEditorAsExternalDependency();\n }\n }\n\n /**\n * Adds script element to the DOM to include editor externally.\n */\n addEditorAsExternalDependency() {\n const script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n let editorUrl = Configuration.get(\"editorUrl\");\n\n // We create an object url for parse url string and work more efficiently.\n const anchorElement = document.createElement(\"a\");\n\n ContentManager.setHrefToAnchorElement(anchorElement, editorUrl);\n ContentManager.setProtocolToAnchorElement(anchorElement);\n\n editorUrl = ContentManager.getURLFromAnchorElement(anchorElement);\n\n // Load editor URL. We add stats as GET params.\n const stats = this.getEditorStats();\n script.src = `${editorUrl}?lang=${this.language}&stats-editor=${stats.editor}&stats-mode=${stats.mode}&stats-version=${stats.version}`;\n\n document.getElementsByTagName(\"head\")[0].appendChild(script);\n }\n\n /**\n * Sets the specified url to the anchor element.\n * @param {HTMLAnchorElement} anchorElement - Element where set 'url'.\n * @param {String} url - URL to set.\n */\n static setHrefToAnchorElement(anchorElement, url) {\n anchorElement.href = url;\n }\n\n /**\n * Sets the current protocol to the anchor element.\n * @param {HTMLAnchorElement} anchorElement - Element where set its protocol.\n */\n static setProtocolToAnchorElement(anchorElement) {\n // Change to https if necessary.\n if (window.location.href.indexOf(\"https://\") === 0) {\n // It check if browser is https and configuration is http.\n // If this is so, we will replace protocol.\n if (anchorElement.protocol === \"http:\") {\n anchorElement.protocol = \"https:\";\n }\n }\n }\n\n /**\n * Returns the url of the anchor element adding the current port\n * if it is needed.\n * @param {HTMLAnchorElement} anchorElement - Element where extract the url.\n * @returns {String}\n */\n static getURLFromAnchorElement(anchorElement) {\n // Check protocol and remove port if it's standard.\n const removePort = anchorElement.port === \"80\" || anchorElement.port === \"443\" || anchorElement.port === \"\";\n return `${anchorElement.protocol}//${anchorElement.hostname}${removePort ? \"\" : `:${anchorElement.port}`}${anchorElement.pathname.startsWith(\"/\") ? anchorElement.pathname : `/${anchorElement.pathname}`}`; // eslint-disable-line max-len\n }\n\n /**\n * Returns object with editor stats.\n *\n * @typedef {Object} EditorStatsObject\n * @property {string} editor - Editor name.\n * @property {string} mode - Current configuration for formula save mode.\n * @property {string} version - Current plugins version.\n * @returns {EditorStatsObject}\n */\n getEditorStats() {\n // Editor stats. Use environment property to set it.\n const stats = {};\n if (\"editor\" in this.environment) {\n stats.editor = this.environment.editor;\n } else {\n stats.editor = \"unknown\";\n }\n\n if (\"mode\" in this.environment) {\n stats.mode = this.environment.mode;\n } else {\n stats.mode = Configuration.get(\"saveMode\");\n }\n\n if (\"version\" in this.environment) {\n stats.version = this.environment.version;\n } else {\n stats.version = Configuration.get(\"version\");\n }\n\n return stats;\n }\n\n /**\n * Returns true if device is iOS. Otherwise, false.\n * @returns {Boolean}\n */\n static isIOS() {\n return (\n [\"iPad Simulator\", \"iPhone Simulator\", \"iPod Simulator\", \"iPad\", \"iPhone\", \"iPod\"].includes(navigator.platform) ||\n // iPad on iOS 13 detection\n (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document)\n );\n }\n\n /**\n * Returns true if device is Mobile. Otherwise, false.\n * @returns {Boolean}\n */\n static isMobile() {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n }\n\n /**\n * Returns true if editor is loaded. Otherwise, false.\n * @returns {Boolean}\n */\n static isEditorLoaded() {\n // To know if editor JavaScript is loaded we need to wait until\n // window.com.wiris.jsEditor.JsEditor.newInstance is ready.\n return (\n window.com &&\n window.com.wiris &&\n window.com.wiris.jsEditor &&\n window.com.wiris.jsEditor.JsEditor &&\n window.com.wiris.jsEditor.JsEditor.newInstance\n );\n }\n\n /**\n * Sets the {@link ContentManager.editor} initial content.\n */\n setInitialContent() {\n if (!this.isNewElement) {\n this.setMathML(this.mathML);\n }\n }\n\n /**\n * Sets a MathML into {@link ContentManager.editor} instance.\n * @param {String} mathml - MathML string.\n * @param {Boolean} focusDisabled - If true editor don't get focus after the MathML is set.\n * False by default.\n */\n setMathML(mathml, focusDisabled) {\n // By default focus is enabled.\n if (typeof focusDisabled === \"undefined\") {\n focusDisabled = false;\n }\n // Using setMathML method is not a change produced by the user but for the API\n // so we set to false the contentChange property of editorListener.\n this.editor.setMathMLWithCallback(mathml, () => {\n this.editorListener.setWaitingForChanges(true);\n });\n\n // We need to wait a little until the callback finish.\n setTimeout(() => {\n this.editorListener.setIsContentChanged(false);\n }, 500);\n\n // In some scenarios - like closing modal object - editor mustn't be focused.\n if (!focusDisabled) {\n this.onFocus();\n }\n }\n\n /**\n * Sets the focus to the current instance of {@link ContentManager.editor}. Triggered by\n * {@link ModalDialog.focus}.\n */\n onFocus() {\n if (typeof this.editor !== \"undefined\" && this.editor != null) {\n this.editor.focus();\n\n // On WordPress integration, the focus gets lost right after setting it.\n // To fix this, we enforce another focus some milliseconds after this behaviour.\n setTimeout(() => {\n this.editor.focus();\n }, 100);\n }\n }\n\n /**\n * Updates the edition area by calling {@link IntegrationModel.updateFormula}.\n * Triggered by {@link ModalDialog.submitAction}.\n */\n submitAction() {\n if (!this.editor.isFormulaEmpty()) {\n let mathML = this.editor.getMathMLWithSemantics();\n // Add class for custom editors.\n if (this.customEditors.getActiveEditor() !== null) {\n const { toolbar } = this.customEditors.getActiveEditor();\n mathML = MathML.addCustomEditorClassAttribute(mathML, toolbar);\n } else {\n // We need - if exists - the editor name from MathML\n // class attribute.\n Object.keys(this.customEditors.editors).forEach((key) => {\n mathML = MathML.removeCustomEditorClassAttribute(mathML, key);\n });\n }\n const mathmlEntitiesEncoded = MathML.mathMLEntities(mathML);\n this.integrationModel.updateFormula(mathmlEntitiesEncoded);\n } else {\n this.integrationModel.updateFormula(null);\n }\n\n this.customEditors.disable();\n this.integrationModel.notifyWindowClosed();\n\n // Set disabled focus to prevent lost focus.\n this.setEmptyMathML();\n this.customEditors.disable();\n }\n\n /**\n * Sets an empty MathML as {@link ContentManager.editor} content.\n * This will open the MT/CT editor with the hand mode.\n * It adds dir rtl in case of it's activated.\n */\n setEmptyMathML() {\n const isMobile = this.deviceProperties.isAndroid || this.deviceProperties.isIOS;\n const isRTL = this.editor.getEditorModel().isRTL();\n\n if (isMobile || this.integrationModel.forcedHandMode) {\n // For mobile devices or forced hand mode, set an empty annotation MATHML to maintain the editor in Hand mode.\n const mathML = `<math${isRTL ? ' dir=\"rtl\"' : \"\"}><semantics><annotation encoding=\"application/json\">[]</annotation></semantics></math>`;\n this.setMathML(mathML, true);\n } else {\n // For non-mobile devices or not forced hand mode, set the empty MathML without an annotation.\n const mathML = `<math${isRTL ? ' dir=\"rtl\"' : \"\"}/>`;\n this.setMathML(mathML, true);\n }\n }\n\n /**\n * Open event. Triggered by {@link ModalDialog.open}. Does the following:\n * - Updates the {@link ContentManager.editor} content\n * (with an empty MathML or an existing formula),\n * - Updates the {@link ContentManager.editor} toolbar.\n * - Recovers the the focus.\n */\n onOpen() {\n if (this.isNewElement) {\n this.setEmptyMathML();\n } else {\n this.setMathML(this.mathML);\n }\n const toolbar = this.updateToolbar();\n this.onFocus();\n\n if (this.deviceProperties.isIOS) {\n const zoom = document.documentElement.clientWidth / window.innerWidth;\n\n if (zoom !== 1) {\n // Open editor in Keyboard mode if user use iOS, Safari and page is zoomed.\n this.setKeyboardMode();\n }\n }\n\n const trigger = this.dbclick ? \"formula\" : \"button\";\n\n // Call Telemetry service to track the event.\n try {\n Telemeter.telemeter.track(\"OPENED_MTCT_EDITOR\", {\n toolbar,\n trigger,\n });\n } catch (error) {\n console.error(\"Error tracking OPENED_MTCT_EDITOR\", error);\n }\n\n Core.globalListeners.fire(\"onModalOpen\", {});\n\n if (this.integrationModel.forcedHandMode) {\n this.hideHandModeButton();\n\n // In case we have a keyboard written formula, we still want it to be opened with handMode.\n if (this.mathML && !this.mathML.includes('<annotation encoding=\"application/json\">') && !this.isNewElement) {\n this.openHandOnKeyboardMathML(this.mathML, this.editor);\n }\n }\n }\n\n /**\n * Change Editor in keyboard mode when is loaded\n */\n setKeyboardMode() {\n const wrsEditor = document.getElementsByClassName(\"wrs_handOpen wrs_disablePalette\")[0];\n if (wrsEditor) {\n wrsEditor.classList.remove(\"wrs_handOpen\");\n wrsEditor.classList.remove(\"wrs_disablePalette\");\n } else {\n setTimeout(ContentManager.prototype.setKeyboardMode.bind(this), 100);\n }\n }\n\n /**\n * Hides the hand <-> keyboard mode switch.\n *\n * This method relies completely on the classes used on different HTML elements within the editor itself, meaning\n * any change on those classes will make this code stop working properly.\n *\n * On top of that, some of those classes are changed on runtime (for example, the one that makes some buttons change).\n * This forces us to use some delayed code (this is, a timeout) to make sure everything exists when we need it.\n * @param {*} forced (boolean) Forces the user to stay in Hand mode by hiding the keyboard mode button.\n */\n hideHandModeButton(forced = true) {\n if (this.handSwitchHidden) {\n return; // hand <-> keyboard button already hidden.\n }\n\n // \"Open hand mode\" button takes a little bit to be available.\n // This selector gets the hand <-> keyboard mode switch\n const handModeButtonSelector =\n \"div.wrs_editor.wrs_flexEditor.wrs_withHand.wrs_animated .wrs_handWrapper input[type=button]\";\n\n // If in \"forced mode\", we hide the \"keyboard button\" so the user can't can't change between hand and keyboard modes.\n // We use an observer to ensure that the button it hidden as soon as it appears.\n if (forced) {\n const mutationInstance = new MutationObserver((mutations) => {\n const handModeButton = document.querySelector(handModeButtonSelector);\n if (handModeButton) {\n handModeButton.hidden = true;\n this.handSwitchHidden = true;\n mutationInstance.disconnect();\n }\n });\n mutationInstance.observe(document.body, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n });\n }\n }\n\n /**\n * It will open any formula written in Keyboard mode with the hand mode with the default hand trace.\n *\n * @param {String} mathml The original KeyBoard MathML\n * @param {Object} editor The editor object.\n */\n async openHandOnKeyboardMathML(mathml, editor) {\n // First, as an editor requirement, we need to update the editor object with the current MathML formula.\n // Once the MathML formula is updated to the one we want to open with handMode, we will be able to proceed.\n await new Promise((resolve) => {\n editor.setMathMLWithCallback(mathml, resolve);\n });\n\n // We wait until the hand editor object exists.\n await this.waitForHand(editor);\n\n // Logic to get the hand traces and open the formula in hand mode.\n // This logic comes from the editor.\n const handEditor = editor.hand;\n editor.handTemporalMathML = editor.getMathML();\n const handCoordinates = editor.editorModel.getHandStrokes();\n handEditor.setStrokes(handCoordinates);\n handEditor.fitStrokes(true);\n editor.openHand();\n }\n\n /**\n * Waits until the hand editor object exists.\n * @param {Obect} editor The editor object.\n */\n async waitForHand(editor) {\n while (!editor.hand) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n }\n\n /**\n * Sets the correct toolbar depending if exist other custom toolbars\n * at the same time (e.g: Chemistry).\n */\n updateToolbar() {\n this.updateTitle(this.modalDialogInstance);\n const customEditor = this.customEditors.getActiveEditor();\n\n let toolbar;\n if (customEditor) {\n toolbar = customEditor.toolbar ? customEditor.toolbar : _wrs_int_wirisProperties.toolbar;\n\n if (this.toolbar == null || this.toolbar !== toolbar) {\n this.setToolbar(toolbar);\n }\n } else {\n toolbar = this.getToolbar();\n if (this.toolbar == null || this.toolbar !== toolbar) {\n this.setToolbar(toolbar);\n this.customEditors.disable();\n }\n }\n\n return toolbar;\n }\n\n /**\n * Updates the current {@link ModalDialog.title}. If a {@link CustomEditors} is enabled\n * sets the custom editor title. Otherwise sets the default title.\n */\n updateTitle() {\n const customEditor = this.customEditors.getActiveEditor();\n if (customEditor) {\n this.modalDialogInstance.setTitle(customEditor.title);\n } else {\n this.modalDialogInstance.setTitle(\"MathType\");\n }\n }\n\n /**\n * Returns the editor toolbar, depending on the configuration local or server side.\n * @returns {String} - Toolbar identifier.\n */\n getToolbar() {\n let toolbar = \"general\";\n if (\"toolbar\" in this.editorAttributes) {\n ({ toolbar } = this.editorAttributes);\n }\n // TODO: Change global integration variable for integration custom toolbar.\n if (toolbar === \"general\") {\n // eslint-disable-next-line camelcase\n toolbar =\n typeof _wrs_int_wirisProperties === \"undefined\" || typeof _wrs_int_wirisProperties.toolbar === \"undefined\"\n ? \"general\"\n : _wrs_int_wirisProperties.toolbar;\n }\n\n return toolbar;\n }\n\n /**\n * Sets the current {@link ContentManager.editor} instance toolbar.\n * @param {String} toolbar - The toolbar name.\n */\n setToolbar(toolbar) {\n this.toolbar = toolbar;\n this.editor.setParams({ toolbar: this.toolbar });\n }\n\n /**\n * Sets the custom headers added on editor requests.\n * @returns {Object} headers - key value headers.\n */\n setCustomHeaders(headers) {\n let headersObj = {};\n\n // We control that we only get String or Object as the input.\n if (typeof headers === \"object\") {\n headersObj = headers;\n } else if (typeof headers === \"string\") {\n headersObj = Util.convertStringToObject(headers);\n }\n\n this.editor.setParams({ customHeaders: headersObj });\n return headersObj;\n }\n\n /**\n * Returns true if the content of the editor has been changed. The logic of the changes\n * is delegated to {@link EditorListener} class.\n * @returns {Boolean} True if the editor content has been changed. False otherwise.\n */\n hasChanges() {\n return !this.editor.isFormulaEmpty() && this.editorListener.getIsContentChanged();\n }\n\n /**\n * Handle keyboard events detected in modal when elements of this class intervene.\n * @param {KeyboardEvent} keyboardEvent - The keyboard event.\n */\n onKeyDown(keyboardEvent) {\n if (keyboardEvent.key !== undefined && keyboardEvent.repeat === false) {\n if (keyboardEvent.key === \"Escape\" || keyboardEvent.key === \"Esc\") {\n // Code to detect Esc event.\n // There should be only one element with class name 'wrs_pressed' at the same time.\n let list = document.getElementsByClassName(\"wrs_expandButton wrs_expandButtonFor3RowsLayout wrs_pressed\");\n if (list.length === 0) {\n list = document.getElementsByClassName(\"wrs_expandButton wrs_expandButtonFor2RowsLayout wrs_pressed\");\n if (list.length === 0) {\n list = document.getElementsByClassName(\"wrs_select wrs_pressed\");\n if (list.length === 0) {\n this.modalDialogInstance.cancelAction();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n }\n } else if (keyboardEvent.shiftKey && keyboardEvent.key === \"Tab\") {\n // Code to detect shift Tab event.\n if (document.activeElement === this.modalDialogInstance.submitButton) {\n // Focus is on OK button.\n this.editor.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (document.querySelector('[title=\"Manual\"]') === document.activeElement) {\n // Focus is on minimize button (_).\n this.modalDialogInstance.closeDiv.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (document.activeElement === this.modalDialogInstance.minimizeDiv) {\n // Focus on cancel button.\n if (!(this.modalDialogInstance.properties.state === \"minimized\")) {\n this.modalDialogInstance.cancelButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n } else if (keyboardEvent.key === \"Tab\") {\n // Code to detect Tab event.\n if (document.activeElement === this.modalDialogInstance.cancelButton) {\n // Focus is on X button.\n this.modalDialogInstance.minimizeDiv.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (document.activeElement === this.modalDialogInstance.closeDiv) {\n // Focus on help button.\n if (!(this.modalDialogInstance.properties.state === \"minimized\")) {\n const element = document.querySelector('[title=\"Manual\"]');\n element.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n } else {\n // There should be only one element with class name 'wrs_formulaDisplay'.\n const element = document.getElementsByClassName(\"wrs_formulaDisplay\")[0];\n if (element.getAttribute(\"class\") === \"wrs_formulaDisplay wrs_focused\") {\n // Focus is on formuladisplay.\n this.modalDialogInstance.submitButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n }\n }\n }\n}\n","/**\n * A custom editor is MathType editor with a different\n * @typedef {Object} CustomEditor\n * @property {String} CustomEditor.name - Custom editor name.\n * @property {String} CustomEditor.toolbar - Custom editor toolbar.\n * @property {String} CustomEditor.icon - Custom editor icon.\n * @property {String} CustomEditor.confVariable - Configuration property to manage\n * the availability of the custom editor.\n * @property {String} CustomEditor.title - Custom editor modal dialog title.\n * @property {String} CustomEditor.tooltip - Custom editor icon tooltip.\n */\n\nexport default class CustomEditors {\n /**\n * @classdesc\n * This class represents the MathType custom editors manager.\n * A custom editor is MathType editor with a custom toolbar.\n * This class associates a {@link CustomEditor} to:\n * - It's own formulas\n * - A custom toolbar\n * - An icon to open it from a HTML editor.\n * - A tooltip for the icon.\n * - A global variable to enable or disable it globally.\n * @constructs\n */\n constructor() {\n /**\n * The custom editors.\n * @type {Array.<CustomEditor>}\n */\n\n this.editors = [];\n /**\n * The active editor name.\n * @type {String}\n */\n this.activeEditor = \"default\";\n }\n\n /**\n * Adds a {@link CustomEditor} to editors array.\n * @param {String} editorName - The editor name.\n * @param {CustomEditor} editorParams - The custom editor parameters.\n */\n addEditor(editorName, editorParams) {\n const customEditor = {};\n customEditor.name = editorParams.name;\n customEditor.toolbar = editorParams.toolbar;\n customEditor.icon = editorParams.icon;\n customEditor.confVariable = editorParams.confVariable;\n customEditor.title = editorParams.title;\n customEditor.tooltip = editorParams.tooltip;\n this.editors[editorName] = customEditor;\n }\n\n /**\n * Enables a {@link CustomEditor}.\n * @param {String} customEditorName - The custom editor name.\n */\n enable(customEditorName) {\n this.activeEditor = customEditorName;\n }\n\n /**\n * Disables a {@link CustomEditor}.\n */\n disable() {\n this.activeEditor = \"default\";\n }\n\n /**\n * Returns the active editor.\n * @return {CustomEditor} - A {@link CustomEditor} if a custom editor is enabled. Null otherwise.\n */\n getActiveEditor() {\n if (this.activeEditor !== \"default\") {\n return this.editors[this.activeEditor];\n }\n return null;\n }\n}\n","/**\n * Represents the configuration properties generated from the frontend (JavaScript variables).\n * @type {Object}\n * @property {string} imageClassName - Default MathType formula image class.\n * @property {string} imageClassName - Default MathType CAS image class.\n * @ignore\n */\nconst jsProperties = {\n imageCustomEditorName: \"data-custom-editor\",\n imageClassName: \"Wirisformula\",\n CASClassName: \"Wiriscas\",\n};\nexport default jsProperties;\n","export default class Event {\n /**\n * @classdesc\n * This class represents a custom event. Events should be fired by the {@link Listener} class.\n *\n * ```js\n * let customEvent = new Event();\n * customEvent.properties = {};\n *\n * let listeners = new Listeners();\n * listeners.newListener(eventName, callback);\n *\n * listeners.fire(eventName, customEvent) *\n * ```\n * @constructs\n */\n constructor() {\n /**\n * Indicates if the event should be cancelled.\n * @type {Boolean}\n */\n\n this.cancelled = false;\n /**\n * Indicates if the event should be prevented.\n * @type {Boolean}\n */\n this.defaultPrevented = false;\n }\n\n /**\n * Cancels the event.\n */\n cancel() {\n this.cancelled = true;\n }\n\n /**\n * Prevents the default action.\n */\n preventDefault() {\n this.defaultPrevented = true;\n }\n}\n","import IntegrationModel from \"./integrationmodel\";\n\n/**\n\n */\nexport default class PopUpMessage {\n /**\n * @classdesc\n * This class represents a dialog message overlaying a DOM element in order to\n * accept / cancel discard changes. The dialog can be closed i.e the overlay disappears\n * o canceled. In this last case a callback function should be called.\n * @constructs\n * @param {Object} popupMessageAttributes - Object containing popup properties.\n * @param {HTMLElement} popupMessageAttributes.overlayElement - Element to overlay.\n * @param {Object} popupMessageAttributes.callbacks - Contains callback\n * methods for close and cancel actions.\n * @param {Object} popupMessageAttributes.strings - Contains all the strings needed.\n */\n constructor(popupMessageAttributes) {\n /**\n * Element to be overlaid when the popup appears.\n */\n this.overlayElement = popupMessageAttributes.overlayElement;\n\n this.callbacks = popupMessageAttributes.callbacks;\n\n /**\n * HTMLElement element to wrap all HTML elements inside the popupMessage.\n */\n this.overlayWrapper = this.overlayElement.appendChild(document.createElement(\"div\"));\n this.overlayWrapper.setAttribute(\"class\", \"wrs_popupmessage_overlay_envolture\");\n\n /**\n * HTMLElement to display the popup message, close button and cancel button.\n */\n this.message = this.overlayWrapper.appendChild(document.createElement(\"div\"));\n this.message.id = \"wrs_popupmessage\";\n this.message.setAttribute(\"class\", \"wrs_popupmessage_panel\");\n this.message.setAttribute(\"role\", \"dialog\");\n this.message.setAttribute(\"aria-describedby\", \"description_txt\");\n const paragraph = document.createElement(\"p\");\n const text = document.createTextNode(popupMessageAttributes.strings.message);\n paragraph.appendChild(text);\n paragraph.id = \"description_txt\";\n this.message.appendChild(paragraph);\n\n /**\n * HTML element overlaying the overlayElement.\n */\n const overlay = this.overlayWrapper.appendChild(document.createElement(\"div\"));\n overlay.setAttribute(\"class\", \"wrs_popupmessage_overlay\");\n // We create a overlay that close popup message on click in there\n overlay.addEventListener(\"click\", this.cancelAction.bind(this));\n\n /**\n * HTML element containing cancel and close buttons.\n */\n this.buttonArea = this.message.appendChild(document.createElement(\"div\"));\n this.buttonArea.setAttribute(\"class\", \"wrs_popupmessage_button_area\");\n this.buttonArea.id = \"wrs_popup_button_area\";\n\n // Close button arguments.\n const buttonSubmitArguments = {\n class: \"wrs_button_accept\",\n innerHTML: popupMessageAttributes.strings.submitString,\n id: \"wrs_popup_accept_button\",\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-cd-close-button\",\n };\n\n /**\n * Close button arguments.\n */\n this.closeButton = this.createButton(buttonSubmitArguments, this.closeAction.bind(this));\n this.buttonArea.appendChild(this.closeButton);\n\n // Cancel button arguments.\n const buttonCancelArguments = {\n class: \"wrs_button_cancel\",\n innerHTML: popupMessageAttributes.strings.cancelString,\n id: \"wrs_popup_cancel_button\",\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-cd-cancel-button\",\n };\n\n /**\n * Cancel button.\n */\n this.cancelButton = this.createButton(buttonCancelArguments, this.cancelAction.bind(this));\n this.buttonArea.appendChild(this.cancelButton);\n }\n\n /**\n * This method create a button with arguments and return button dom object\n * @param {Object} parameters - An object containing id, class and innerHTML button text.\n * @param {String} parameters.id - Button id.\n * @param {String} parameters.class - Button class name.\n * @param {String} parameters.innerHTML - Button innerHTML text.\n * @param {Object} callback- Callback method to call on click event.\n * @returns {HTMLElement} HTML button.\n */\n // eslint-disable-next-line class-methods-use-this\n createButton(parameters, callback) {\n let element = {};\n element = document.createElement(\"button\");\n element.setAttribute(\"id\", parameters.id);\n element.setAttribute(\"class\", parameters.class);\n element.innerHTML = parameters.innerHTML;\n element.addEventListener(\"click\", callback);\n if (parameters[\"data-testid\"]) {\n element.setAttribute(\"data-testid\", parameters[\"data-testid\"]);\n }\n\n return element;\n }\n\n /**\n * Shows the popupmessage containing a message, and two buttons\n * to cancel the action or close the modal dialog.\n */\n show() {\n if (this.overlayWrapper.style.display !== \"block\") {\n // Clear focus with blur for prevent press any key.\n document.activeElement.blur();\n this.overlayWrapper.style.display = \"block\";\n this.closeButton.focus();\n } else {\n this.overlayWrapper.style.display = \"none\";\n // _wrs_modalWindow.focus(); This throws an error of not existing _wrs_modalWindow\n }\n }\n\n /**\n * This method cancels the popupMessage: the dialog disappears revealing the overlaid element.\n * A callback method is called (if defined). For example a method to focus the overlaid element.\n */\n cancelAction() {\n this.overlayWrapper.style.display = \"none\";\n if (typeof this.callbacks.cancelCallback !== \"undefined\") {\n this.callbacks.cancelCallback();\n // Set temporal image to null to prevent loading\n // an existent formula when starting one from scratch. Make focus come back too.\n // IntegrationModel.setActionsOnCancelButtons();\n }\n }\n\n /**\n * This method closes the popupMessage: the dialog disappears and the close callback is called.\n * For example to close the overlaid element.\n */\n closeAction() {\n this.cancelAction();\n if (typeof this.callbacks.closeCallback !== \"undefined\") {\n this.callbacks.closeCallback();\n }\n IntegrationModel.setActionsOnCancelButtons();\n }\n\n /**\n * Handle keyboard events detected in modal when elements of this class intervene.\n * @param {KeyboardEvent} keyboardEvent - The keyboard event.\n */\n onKeyDown(keyboardEvent) {\n if (keyboardEvent.key !== undefined) {\n // Code to detect Esc event.\n if (keyboardEvent.key === \"Escape\" || keyboardEvent.key === \"Esc\") {\n this.cancelAction();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (keyboardEvent.key === \"Tab\") {\n // Code to detect Tab event.\n if (document.activeElement === this.closeButton) {\n this.cancelButton.focus();\n } else {\n this.closeButton.focus();\n }\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n }\n}\n","/**\n * This module provides protection against external focus management scripts\n * that might interfere with the MathType editor modal.\n */\n\n/**\n * focusProtection function creates and returns methods to prevent external scripts from\n * interfering with the focus of the MathType modal dialog.\n *\n * @returns {Object} An object with protect and unprotect methods.\n */\nconst focusProtection = () => {\n /**\n * Initialize focus protection on the given modal element.\n *\n * @param {HTMLElement} modalElement - The modal element to protect\n * @param {HTMLElement} overlayElement - The overlay element of the modal (not used in current implementation)\n * @param {HTMLElement} editorElement - The editor element inside the modal\n */\n const protect = (modalElement, overlayElement, editorElement) => {\n if (!modalElement || !overlayElement || !editorElement) {\n console.warn(\"FocusProtection: Missing required elements\");\n return;\n }\n\n // Apply the focus protection\n overrideFocusBehavior(modalElement, editorElement);\n };\n\n /**\n * Apply focus protection by overriding focus-related methods\n *\n * @param {HTMLElement} modalElement - The modal element\n * @param {HTMLElement} editorElement - The editor element to keep focused\n * @private\n */\n const overrideFocusBehavior = (modalElement, editorElement) => {\n // Store original focus methods to be able to restore them\n const originalElementFocus = HTMLElement.prototype.focus;\n const originalElementBlur = HTMLElement.prototype.blur;\n\n // Override the focus method for all elements\n HTMLElement.prototype.focus = function (...args) {\n // If the modal is open and this is not part of the modal, prevent focus\n if (modalElement.style.display !== \"none\" && !modalElement.contains(this) && this !== document.body) {\n // If some external script is trying to focus another element, prevent it\n // and restore focus to the editor\n if (editorElement) {\n // Use the original focus method to avoid infinite recursion\n originalElementFocus.apply(editorElement, args);\n }\n return;\n }\n\n // Otherwise, allow the focus to happen\n originalElementFocus.apply(this, args);\n };\n\n // Store the methods to remove them when the modal is closed\n modalElement.originalElementFocus = originalElementFocus;\n modalElement.originalElementBlur = originalElementBlur;\n };\n\n /**\n * Remove focus protection from the modal\n *\n * @param {HTMLElement} modalElement - The modal element to unprotect\n */\n const unprotect = (modalElement) => {\n if (!modalElement) {\n return;\n }\n\n // Restore original focus methods\n if (modalElement.originalElementFocus) {\n HTMLElement.prototype.focus = modalElement.originalElementFocus;\n delete modalElement.originalElementFocus;\n }\n\n if (modalElement.originalElementBlur) {\n HTMLElement.prototype.blur = modalElement.originalElementBlur;\n delete modalElement.originalElementBlur;\n }\n };\n\n return {\n protect,\n unprotect,\n };\n};\n\nexport default focusProtection;\n","// eslint-disable-next-line max-classes-per-file\nimport PopUpMessage from \"./popupmessage\";\nimport Util from \"./util\";\nimport Configuration from \"./configuration\";\nimport Listeners from \"./listeners\";\nimport StringManager from \"./stringmanager\";\nimport ContentManager from \"./contentmanager\";\nimport Telemeter from \"./telemeter\";\nimport IntegrationModel from \"./integrationmodel\";\nimport Core from \"./core.src\";\nimport focusProtection from \"./focusprotection\";\nimport closeIcon from \"../styles/icons/general/close_icon.svg\"; //eslint-disable-line\nimport closeHoverIcon from \"../styles/icons/hover/close_icon_h.svg\"; //eslint-disable-line\nimport fullsIcon from \"../styles/icons/general/fulls_icon.svg\"; //eslint-disable-line\nimport fullsHoverIcon from \"../styles/icons/hover/fulls_icon_h.svg\"; //eslint-disable-line\nimport minIcon from \"../styles/icons/general/min_icon.svg\"; //eslint-disable-line\nimport minHoverIcon from \"../styles/icons/hover/min_icon_h.svg\"; //eslint-disable-line\nimport minsIcon from \"../styles/icons/general/mins_icon.svg\"; //eslint-disable-line\nimport minsHoverIcon from \"../styles/icons/hover/mins_icon_h.svg\"; //eslint-disable-line\nimport maxIcon from \"../styles/icons/general/max_icon.svg\"; //eslint-disable-line\nimport maxHoverIcon from \"../styles/icons/hover/max_icon_h.svg\"; //eslint-disable-line\nconst { unprotect, protect } = focusProtection();\n\n/**\n * @typedef {Object} DeviceProperties\n * @property {String} DeviceProperties.orientation - Indicates of the orientation of the device.\n * @property {Boolean} DeviceProperties.isAndroid - True if the device is Android. False otherwise.\n * @property {Boolean} DeviceProperties.isIOS - True if the device is iOS. False otherwise.\n * @property {Boolean} DeviceProperties.isMobile - True if the device is a mobile one.\n * False otherwise.\n * @property {Boolean} DeviceProperties.isDesktop - True if the device is a desktop one.\n * False otherwise.\n */\n\nexport default class ModalDialog {\n /**\n * @classdesc\n * This class represents a modal dialog. The modal dialog admits\n * a {@link ContentManager} instance to manage the content of the dialog.\n * @constructs\n * @param {Object} modalDialogAttributes - An object containing all modal dialog attributes.\n */\n constructor(modalDialogAttributes) {\n this.attributes = modalDialogAttributes;\n\n // Metrics.\n const ua = navigator.userAgent.toLowerCase();\n const isAndroid = ua.indexOf(\"android\") > -1;\n const isIOS = ContentManager.isIOS();\n this.iosSoftkeyboardOpened = false;\n this.iosMeasureUnit = ua.indexOf(\"crios\") === -1 ? \"%\" : \"vh\";\n this.iosDivHeight = `auto`;\n\n const deviceWidth = window.outerWidth;\n const deviceHeight = window.outerHeight;\n\n const landscape = deviceWidth > deviceHeight;\n const portrait = deviceWidth < deviceHeight;\n\n // TODO: Detect isMobile without using editor metrics.\n const isLandscape = landscape && this.attributes.height > deviceHeight;\n const isPortrait = portrait && this.attributes.width > deviceWidth;\n const isMobile = ContentManager.isMobile();\n\n // Obtain number of current instance.\n this.instanceId = document.getElementsByClassName(\"wrs_modal_dialogContainer\").length;\n\n // Device object properties.\n\n /**\n * @type {DeviceProperties}\n */\n this.deviceProperties = {\n orientation: landscape ? \"landscape\" : \"portrait\",\n isAndroid,\n isIOS,\n isMobile,\n isDesktop: !isMobile && !isIOS && !isAndroid,\n };\n\n this.properties = {\n created: false,\n state: \"\",\n previousState: \"\",\n position: { bottom: 0, right: 10 },\n size: { height: 338, width: 580 },\n };\n\n /**\n * Object to keep website's style before change it on lock scroll for mobile devices.\n * @type {Object}\n * @property {String} bodyStylePosition - Previous body style position.\n * @property {String} bodyStyleOverflow - Previous body style overflow.\n * @property {String} htmlStyleOverflow - Previous body style overflow.\n * @property {String} windowScrollX - Previous window's scroll Y.\n * @property {String} windowScrollY - Previous window's scroll X.\n */\n this.websiteBeforeLockParameters = null;\n\n let attributes = {};\n attributes.class = \"wrs_modal_overlay\";\n attributes.id = this.getElementId(attributes.class);\n this.overlay = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_title_bar\";\n attributes.id = this.getElementId(attributes.class);\n this.titleBar = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_title\";\n attributes.id = this.getElementId(attributes.class);\n this.title = Util.createElement(\"div\", attributes);\n this.title.innerHTML = \"offline\";\n\n attributes = {};\n attributes.class = \"wrs_modal_close_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"close\");\n attributes.style = {};\n this.closeDiv = Util.createElement(\"a\", attributes);\n this.closeDiv.setAttribute(\"role\", \"button\");\n this.closeDiv.setAttribute(\"tabindex\", 3);\n // Apply styles and events after the creation as createElement doesn't process them correctly\n const generalStyleClose = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(closeIcon)})`;\n const hoverStyleClose = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(closeHoverIcon)})`;\n this.closeDiv.setAttribute(\"style\", generalStyleClose);\n this.closeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleClose));\n this.closeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleClose));\n // To identifiy the element in automated testing\n this.closeDiv.setAttribute(\"data-testid\", \"mtcteditor-close-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_stack_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"exit_fullscreen\");\n this.stackDiv = Util.createElement(\"a\", attributes);\n this.stackDiv.setAttribute(\"role\", \"button\");\n this.stackDiv.setAttribute(\"tabindex\", 2);\n const generalStyleStack = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(minsIcon)})`;\n const hoverStyleStack = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(minsHoverIcon)})`;\n this.stackDiv.setAttribute(\"style\", generalStyleStack);\n this.stackDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleStack));\n this.stackDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleStack));\n // To identifiy the element in automated testing\n this.stackDiv.setAttribute(\"data-testid\", \"mtcteditor-fullscreen-disable-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_maximize_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"fullscreen\");\n this.maximizeDiv = Util.createElement(\"a\", attributes);\n this.maximizeDiv.setAttribute(\"role\", \"button\");\n this.maximizeDiv.setAttribute(\"tabindex\", 2);\n const generalStyleMaximize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(fullsIcon)})`;\n const hoverStyleMaximize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(fullsHoverIcon)})`;\n this.maximizeDiv.setAttribute(\"style\", generalStyleMaximize);\n this.maximizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleMaximize));\n this.maximizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleMaximize));\n // To identifiy the element in automated testing\n this.maximizeDiv.setAttribute(\"data-testid\", \"mtcteditor-fullscreen-enable-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_minimize_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"minimize\");\n this.minimizeDiv = Util.createElement(\"a\", attributes);\n this.minimizeDiv.setAttribute(\"role\", \"button\");\n this.minimizeDiv.setAttribute(\"tabindex\", 1);\n const generalStyleMinimize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minIcon)})`;\n const hoverStyleMinimize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyleMinimize);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleMinimize));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleMinimize));\n // To identify the element in automated testing\n this.minimizeDiv.setAttribute(\"data-testid\", \"mtcteditor-minimize-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_dialogContainer\";\n attributes.id = this.getElementId(attributes.class);\n attributes.role = \"dialog\";\n this.container = Util.createElement(\"div\", attributes);\n this.container.setAttribute(\"aria-labeledby\", \"wrs_modal_title[0]\");\n\n attributes = {};\n attributes.class = \"wrs_modal_wrapper\";\n attributes.id = this.getElementId(attributes.class);\n this.wrapper = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_content_container\";\n attributes.id = this.getElementId(attributes.class);\n this.contentContainer = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_controls\";\n attributes.id = this.getElementId(attributes.class);\n this.controls = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_buttons_container\";\n attributes.id = this.getElementId(attributes.class);\n this.buttonContainer = Util.createElement(\"div\", attributes);\n\n // Buttons: all button must be created using createSubmitButton method.\n this.submitButton = this.createSubmitButton(\n {\n id: this.getElementId(\"wrs_modal_button_accept\"),\n class: \"wrs_modal_button_accept\",\n innerHTML: StringManager.get(\"accept\"),\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-insert-button\",\n },\n this.submitAction.bind(this),\n );\n\n this.cancelButton = this.createSubmitButton(\n {\n id: this.getElementId(\"wrs_modal_button_cancel\"),\n class: \"wrs_modal_button_cancel\",\n innerHTML: StringManager.get(\"cancel\"),\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-cancel-button\",\n },\n this.cancelAction.bind(this),\n );\n\n this.contentManager = null;\n\n // Overlay popup.\n const popupStrings = {\n cancelString: StringManager.get(\"cancel\"),\n submitString: StringManager.get(\"close\"),\n message: StringManager.get(\"close_modal_warning\"),\n };\n\n const callbacks = {\n closeCallback: () => {\n this.close(\"mtc_close\");\n },\n cancelCallback: () => {\n this.focus();\n },\n };\n\n const popupupProperties = {\n overlayElement: this.container,\n callbacks,\n strings: popupStrings,\n };\n\n this.popup = new PopUpMessage(popupupProperties);\n\n /**\n * Indicates if directionality of the modal dialog is RTL. false by default.\n * @type {Boolean}\n */\n this.rtl = false;\n if (\"rtl\" in this.attributes) {\n this.rtl = this.attributes.rtl;\n }\n\n // Event handlers need modal instance context.\n this.handleOpenedIosSoftkeyboard = this.handleOpenedIosSoftkeyboard.bind(this);\n this.handleClosedIosSoftkeyboard = this.handleClosedIosSoftkeyboard.bind(this);\n }\n\n /**\n * This method sets an ContentManager instance to ModalDialog. ContentManager\n * manages the logic of ModalDialog content: submit, update, close and changes.\n * @param {ContentManager} contentManager - ContentManager instance.\n */\n setContentManager(contentManager) {\n this.contentManager = contentManager;\n }\n\n /**\n * Returns the modal contentElement object.\n * @returns {ContentManager} the instance of the ContentManager class.\n */\n getContentManager() {\n return this.contentManager;\n }\n\n /**\n * This method is called when the modal object has been submitted. Calls\n * contentElement submitAction method - if exists - and closes the modal\n * object. No logic about the content should be placed here,\n * contentElement.submitAction is the responsible of the content logic.\n */\n async submitAction() {\n if (typeof this.contentManager.submitAction !== \"undefined\") {\n this.contentManager.submitAction();\n }\n\n await this.close(\"mtc_insert\");\n }\n\n /**\n * Performs the cancel action.\n * If there are no changes in the content, it closes the modal.\n * Otherwise, it shows a pop-up message to confirm the cancel action.\n * @returns {Promise<void>} - A promise that resolves when the modal is closed.\n */\n async cancelAction() {\n if (typeof this.contentManager.hasChanges === \"undefined\" || !this.contentManager.hasChanges()) {\n IntegrationModel.setActionsOnCancelButtons();\n await this.close(\"mtc_close\");\n } else {\n this.showPopUpMessage();\n }\n }\n\n /**\n * Returns a button element.\n * @param {Object} properties - Input button properties.\n * @param {String} properties.class - Input button class.\n * @param {String} properties.innerHTML - Input button innerHTML.\n * @param {Object} callback - Callback function associated to click event.\n * @returns {HTMLButtonElement} The button element.\n *\n */\n // eslint-disable-next-line class-methods-use-this\n createSubmitButton(properties, callback) {\n class SubmitButton {\n constructor() {\n this.element = document.createElement(\"button\");\n this.element.id = properties.id;\n this.element.className = properties.class;\n this.element.innerHTML = properties.innerHTML;\n this.element.dataset.testid = properties[\"data-testid\"];\n Util.addEvent(this.element, \"click\", callback);\n }\n\n getElement() {\n return this.element;\n }\n }\n return new SubmitButton(properties, callback).getElement();\n }\n\n /**\n * Creates the modal window object inserting a contentElement object.\n */\n create() {\n /* Modal Window Structure\n _____________________________________________________________________________________\n |wrs_modal_dialog_Container |\n | _________________________________________________________________________________ |\n | |title_bar minimize_button stack_button close_button | |\n | |_______________________________________________________________________________| |\n | |wrapper | |\n | | _____________________________________________________________________________ | |\n | | |content | | |\n | | | | | |\n | | | | | |\n | | |___________________________________________________________________________| | |\n | | _____________________________________________________________________________ | |\n | | |controls | | |\n | | | ___________________________________ | | |\n | | | |buttonContainer | | | |\n | | | | _______________________________ | | | |\n | | | | |button_accept | button_cancel| | | | |\n | | | |_|_____________ |______________|_| | | |\n | | |___________________________________________________________________________| | |\n | |_______________________________________________________________________________| |\n |___________________________________________________________________________________| */\n\n this.titleBar.appendChild(this.closeDiv);\n this.titleBar.appendChild(this.stackDiv);\n this.titleBar.appendChild(this.maximizeDiv);\n this.titleBar.appendChild(this.minimizeDiv);\n this.titleBar.appendChild(this.title);\n\n if (this.deviceProperties.isDesktop) {\n this.container.appendChild(this.titleBar);\n }\n\n this.wrapper.appendChild(this.contentContainer);\n this.wrapper.appendChild(this.controls);\n\n this.controls.appendChild(this.buttonContainer);\n\n this.buttonContainer.appendChild(this.submitButton);\n this.buttonContainer.appendChild(this.cancelButton);\n\n this.container.appendChild(this.wrapper);\n\n // Check if browser has scrollBar before modal has modified.\n this.recalculateScrollBar();\n\n document.body.appendChild(this.container);\n document.body.appendChild(this.overlay);\n\n if (this.deviceProperties.isDesktop) {\n // Desktop.\n this.createModalWindowDesktop();\n this.createResizeButtons();\n\n this.addListeners();\n // Maximize window only when the configuration is set and the device is not iOS or Android.\n if (Configuration.get(\"modalWindowFullScreen\")) {\n this.maximize();\n }\n } else if (this.deviceProperties.isAndroid) {\n this.createModalWindowAndroid();\n } else if (this.deviceProperties.isIOS) {\n this.createModalWindowIos();\n }\n\n if (this.contentManager != null) {\n this.contentManager.insert(this);\n }\n\n this.properties.open = true;\n this.properties.created = true;\n\n // Checks language directionality.\n if (this.isRTL()) {\n this.container.style.right = `${window.innerWidth - this.scrollbarWidth - this.container.offsetWidth}px`;\n this.container.className += \" wrs_modal_rtl\";\n }\n }\n\n /**\n * Creates a button in the modal object to resize it.\n */\n createResizeButtons() {\n // This is a definition of Resize Button Bottom-Right.\n this.resizerBR = document.createElement(\"div\");\n this.resizerBR.className = \"wrs_bottom_right_resizer\";\n this.resizerBR.innerHTML = \"◢\";\n // To identifiy the element in automated testing\n this.resizerBR.dataset.testid = \"mtcteditor-resize-button-right\";\n // This is a definition of Resize Button Top-Left.\n this.resizerTL = document.createElement(\"div\");\n this.resizerTL.className = \"wrs_bottom_left_resizer\";\n // To identifiy the element in automated testing\n this.resizerTL.dataset.testid = \"mtcteditor-resize-button-left\";\n // Append resize buttons to modal.\n this.container.appendChild(this.resizerBR);\n this.titleBar.appendChild(this.resizerTL);\n // Add events to resize on click and drag.\n Util.addEvent(this.resizerBR, \"mousedown\", this.activateResizeStateBR.bind(this));\n Util.addEvent(this.resizerTL, \"mousedown\", this.activateResizeStateTL.bind(this));\n }\n\n /**\n * Initialize variables for Bottom-Right resize button\n * @param {MouseEvent} mouseEvent - Mouse event.\n */\n activateResizeStateBR(mouseEvent) {\n this.initializeResizeProperties(mouseEvent, false);\n }\n\n /**\n * Initialize variables for Top-Left resize button\n * @param {MouseEvent} mouseEvent - Mouse event.\n */\n activateResizeStateTL(mouseEvent) {\n this.initializeResizeProperties(mouseEvent, true);\n }\n\n /**\n * Common method to initialize variables at resize.\n * @param {MouseEvent} mouseEvent - Mouse event.\n */\n initializeResizeProperties(mouseEvent, leftOption) {\n // Apply class for disable involuntary select text when drag.\n Util.addClass(document.body, \"wrs_noselect\");\n Util.addClass(this.overlay, \"wrs_overlay_active\");\n this.resizeDataObject = {\n x: this.eventClient(mouseEvent).X,\n y: this.eventClient(mouseEvent).Y,\n };\n // Save Initial state of modal to compare on drag and obtain the difference.\n this.initialWidth = parseInt(this.container.style.width, 10);\n this.initialHeight = parseInt(this.container.style.height, 10);\n if (!leftOption) {\n this.initialRight = parseInt(this.container.style.right, 10);\n this.initialBottom = parseInt(this.container.style.bottom, 10);\n } else {\n this.leftScale = true;\n }\n if (!this.initialRight) {\n this.initialRight = 0;\n }\n if (!this.initialBottom) {\n this.initialBottom = 0;\n }\n // Disable mouse events on editor when we start to drag modal.\n document.body.style[\"user-select\"] = \"none\";\n }\n\n /**\n * This method opens the modal window, restoring the previous state, position and metrics,\n * if exists. By default the modal object opens in stack mode.\n */\n open() {\n // Removing close class.\n this.removeClass(\"wrs_closed\");\n // Hiding keyboard for mobile devices.\n const { isIOS } = this.deviceProperties;\n const { isAndroid } = this.deviceProperties;\n const { isMobile } = this.deviceProperties;\n if (isIOS || isAndroid || isMobile) {\n // Restore scale to 1.\n this.restoreWebsiteScale();\n this.lockWebsiteScroll();\n // Due to editor wait we need to wait until editor focus.\n setTimeout(() => {\n this.hideKeyboard();\n }, 400);\n }\n\n // New modal window. He need to create the whole object.\n if (!this.properties.created) {\n this.create();\n } else {\n // Previous state closed. Open method can be called even the previous state is open,\n // for example updating the content of the modal object.\n if (!this.properties.open) {\n this.properties.open = true;\n\n // Restoring the previous open state: if the modal object has been closed\n // re-open it should preserve the state and the metrics.\n if (!this.deviceProperties.isAndroid && !this.deviceProperties.isIOS) {\n this.restoreState();\n }\n }\n\n // Maximize window only when the configuration is set and the device is not iOs or Android.\n if (this.deviceProperties.isDesktop && Configuration.get(\"modalWindowFullScreen\")) {\n this.maximize();\n }\n\n // In iOS we need to recalculate the size of the modal object because\n // iOS keyboard is a float div which can overlay the modal object.\n if (this.deviceProperties.isIOS) {\n this.iosSoftkeyboardOpened = false;\n }\n }\n\n if (!ContentManager.isEditorLoaded()) {\n const listener = Listeners.newListener(\"onLoad\", () => {\n this.displayEditor();\n });\n this.contentManager.addListener(listener);\n } else {\n this.displayEditor();\n }\n }\n\n /**\n * Prepares and displays the editor in the modal.\n *\n * This method is responsible for displaying the MathType editor inside the modal container.\n *\n * For Moodle environments, it applies focus protection to prevent external scripts\n * from hijacking focus away from the editor while it's open. This is particularly\n * important in Moodle which may have its own focus management scripts.\n * @returns {void}\n */\n displayEditor() {\n if (this.contentManager.integrationModel.isMoodle) {\n protect(this.container, this.overlay, this.contentContainer);\n }\n\n // Initialize and open the editor using the contentManager.\n this.contentManager.onOpen(this);\n }\n\n /**\n * Closes the modal.\n * Removes specific CSS classes, saves modal properties, unlocks website scroll,\n * sets the 'open' property to false, and triggers the 'onModalClose' event.\n * If a close trigger is defined, it tracks the telemetry event 'CLOSED_MTCT_EDITOR' with the trigger.\n * @returns {Promise<void>} A promise that resolves when the modal is closed.\n */\n async close(trigger) {\n // Remove focus protection before closing\n unprotect(this.container);\n\n this.removeClass(\"wrs_maximized\");\n this.removeClass(\"wrs_minimized\");\n this.removeClass(\"wrs_stack\");\n this.addClass(\"wrs_closed\");\n this.saveModalProperties();\n this.unlockWebsiteScroll();\n this.properties.open = false;\n\n if (trigger) {\n try {\n await Telemeter.telemeter.track(\"CLOSED_MTCT_EDITOR\", {\n toolbar: this.contentManager.toolbar,\n trigger,\n });\n } catch (error) {\n console.error(\"Error tracking CLOSED_MTCT_EDITOR\", error);\n }\n }\n\n Core.globalListeners.fire(\"onModalClose\", {});\n }\n\n /**\n * Closes modal window and destroys the object.\n */\n destroy() {\n // Remove focus protection before destroying\n unprotect(this.container);\n\n // Close modal window.\n this.close();\n // Remove listeners and destroy the object.\n this.removeListeners();\n this.overlay.remove();\n this.container.remove();\n // Reset properties to allow open again.\n this.properties.created = false;\n }\n\n /**\n * Sets the website scale to one.\n */\n // eslint-disable-next-line class-methods-use-this\n restoreWebsiteScale() {\n let viewportmeta = document.querySelector(\"meta[name=viewport]\");\n // Let the equal symbols in order to search and make meta's final content.\n const contentAttrsToUpdate = [\"initial-scale=\", \"minimum-scale=\", \"maximum-scale=\"];\n const contentAttrsValuesToUpdate = [\"1.0\", \"1.0\", \"1.0\"];\n const setMetaAttrFunc = (viewportelement, contentAttrs) => {\n const contentAttr = viewportelement.getAttribute(\"content\");\n // If it exists, we need to maintain old values and put our values.\n if (contentAttr) {\n const attrArray = contentAttr.split(\",\");\n let finalContentMeta = \"\";\n const oldAttrs = [];\n for (let i = 0; i < attrArray.length; i += 1) {\n let isAttrToUpdate = false;\n let j = 0;\n while (!isAttrToUpdate && j < contentAttrs.length) {\n if (attrArray[i].indexOf(contentAttrs[j])) {\n isAttrToUpdate = true;\n }\n j += 1;\n }\n\n if (!isAttrToUpdate) {\n oldAttrs.push(attrArray[i]);\n }\n }\n\n for (let i = 0; i < contentAttrs.length; i += 1) {\n const attr = contentAttrs[i] + contentAttrsValuesToUpdate[i];\n finalContentMeta += i === 0 ? attr : `,${attr}`;\n }\n\n for (let i = 0; i < oldAttrs.length; i += 1) {\n finalContentMeta += `,${oldAttrs[i]}`;\n }\n viewportelement.setAttribute(\"content\", finalContentMeta);\n // It needs to set to empty because setAttribute refresh only when attribute is different.\n viewportelement.setAttribute(\"content\", \"\");\n viewportelement.setAttribute(\"content\", contentAttr);\n } else {\n viewportelement.setAttribute(\"content\", \"initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0\");\n viewportelement.removeAttribute(\"content\");\n }\n };\n\n if (!viewportmeta) {\n viewportmeta = document.createElement(\"meta\");\n document.getElementsByTagName(\"head\")[0].appendChild(viewportmeta);\n setMetaAttrFunc(viewportmeta, contentAttrsToUpdate, contentAttrsValuesToUpdate);\n viewportmeta.remove();\n } else {\n setMetaAttrFunc(viewportmeta, contentAttrsToUpdate, contentAttrsValuesToUpdate);\n }\n }\n\n /**\n * Locks website scroll for mobile devices.\n */\n lockWebsiteScroll() {\n this.websiteBeforeLockParameters = {\n bodyStylePosition: document.body.style.position ? document.body.style.position : \"\",\n bodyStyleOverflow: document.body.style.overflow ? document.body.style.overflow : \"\",\n htmlStyleOverflow: document.documentElement.style.overflow ? document.documentElement.style.overflow : \"\",\n windowScrollX: window.scrollX,\n windowScrollY: window.scrollY,\n };\n }\n\n /**\n * Unlocks website scroll for mobile devices.\n */\n unlockWebsiteScroll() {\n if (this.websiteBeforeLockParameters) {\n document.body.style.position = this.websiteBeforeLockParameters.bodyStylePosition;\n document.body.style.overflow = this.websiteBeforeLockParameters.bodyStyleOverflow;\n document.documentElement.style.overflow = this.websiteBeforeLockParameters.htmlStyleOverflow;\n const { windowScrollX } = this.websiteBeforeLockParameters;\n const { windowScrollY } = this.websiteBeforeLockParameters;\n window.scrollTo(windowScrollX, windowScrollY);\n this.websiteBeforeLockParameters = null;\n }\n }\n\n /**\n * Util function to known if browser is IE11.\n * @returns {Boolean} true if the browser is IE11. false otherwise.\n */\n // eslint-disable-next-line class-methods-use-this\n isIE11() {\n if (\n navigator.userAgent.search(\"Msie/\") >= 0 ||\n navigator.userAgent.search(\"Trident/\") >= 0 ||\n navigator.userAgent.search(\"Edge/\") >= 0\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Returns if the current language type is RTL.\n * @return {Boolean} true if current language is RTL. false otherwise.\n */\n isRTL() {\n if (this.attributes.language === \"ar\" || this.attributes.language === \"he\") {\n return true;\n }\n return this.rtl;\n }\n\n /**\n * Adds a class to all modal ModalDialog DOM elements.\n * @param {String} className - Class name.\n */\n addClass(className) {\n Util.addClass(this.overlay, className);\n Util.addClass(this.titleBar, className);\n Util.addClass(this.overlay, className);\n Util.addClass(this.container, className);\n Util.addClass(this.contentContainer, className);\n Util.addClass(this.stackDiv, className);\n Util.addClass(this.minimizeDiv, className);\n Util.addClass(this.maximizeDiv, className);\n Util.addClass(this.wrapper, className);\n }\n\n /**\n * Remove a class from all modal DOM elements.\n * @param {String} className - Class name.\n */\n removeClass(className) {\n Util.removeClass(this.overlay, className);\n Util.removeClass(this.titleBar, className);\n Util.removeClass(this.overlay, className);\n Util.removeClass(this.container, className);\n Util.removeClass(this.contentContainer, className);\n Util.removeClass(this.stackDiv, className);\n Util.removeClass(this.minimizeDiv, className);\n Util.removeClass(this.maximizeDiv, className);\n Util.removeClass(this.wrapper, className);\n }\n\n /**\n * Create modal dialog for desktop.\n */\n createModalWindowDesktop() {\n this.addClass(\"wrs_modal_desktop\");\n this.stack();\n }\n\n /**\n * Create modal dialog for non android devices.\n */\n createModalWindowAndroid() {\n this.addClass(\"wrs_modal_android\");\n window.addEventListener(\"resize\", this.orientationChangeAndroidSoftkeyboard.bind(this));\n }\n\n /**\n * Create modal dialog for iOS devices.\n */\n createModalWindowIos() {\n this.addClass(\"wrs_modal_ios\");\n // Refresh the size when the orientation is changed.\n window.addEventListener(\"resize\", this.orientationChangeIosSoftkeyboard.bind(this));\n }\n\n /**\n * Restore previous state, position and size of previous stacked modal dialog.\n */\n restoreState() {\n if (this.properties.state === \"maximized\") {\n // Reset states for prevent return to stack state.\n this.maximize();\n } else if (this.properties.state === \"minimized\") {\n // Reset states for prevent return to stack state.\n this.properties.state = this.properties.previousState;\n this.properties.previousState = \"\";\n this.minimize();\n } else {\n this.stack();\n }\n }\n\n /**\n * Stacks the modal object.\n */\n stack() {\n this.properties.previousState = this.properties.state;\n this.properties.state = \"stack\";\n this.removeClass(\"wrs_maximized\");\n this.minimizeDiv.title = StringManager.get(\"minimize\");\n this.removeClass(\"wrs_minimized\");\n this.addClass(\"wrs_stack\");\n\n // Change maximize/minimize icon to minimize icon\n const generalStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minIcon)})`;\n const hoverStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyle);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyle));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyle));\n\n this.restoreModalProperties();\n\n if (typeof this.resizerBR !== \"undefined\" && typeof this.resizerTL !== \"undefined\") {\n this.setResizeButtonsVisibility();\n }\n\n // Need recalculate position of actual modal because window can was changed in fullscreenmode.\n this.recalculateScrollBar();\n this.recalculatePosition();\n this.recalculateScale();\n this.focus();\n }\n\n /**\n * Minimizes the modal object.\n */\n minimize() {\n // Saving width, height, top and bottom parameters to restore when opening.\n this.saveModalProperties();\n this.title.style.cursor = \"pointer\";\n if (this.properties.state === \"minimized\" && this.properties.previousState === \"stack\") {\n this.stack();\n } else if (this.properties.state === \"minimized\" && this.properties.previousState === \"maximized\") {\n this.maximize();\n } else {\n // Setting css to prevent important tag into css style.\n this.container.style.height = \"30px\";\n this.container.style.width = \"250px\";\n this.container.style.bottom = \"0px\";\n this.container.style.right = \"10px\";\n\n this.removeListeners();\n this.properties.previousState = this.properties.state;\n this.properties.state = \"minimized\";\n this.setResizeButtonsVisibility();\n this.minimizeDiv.title = StringManager.get(\"maximize\");\n\n if (Util.containsClass(this.overlay, \"wrs_stack\")) {\n this.removeClass(\"wrs_stack\");\n } else {\n this.removeClass(\"wrs_maximized\");\n }\n this.addClass(\"wrs_minimized\");\n\n // Change minimize icon to maximize icon\n const generalStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(maxIcon)})`;\n const hoverStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(maxHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyle);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyle));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyle));\n }\n }\n\n /**\n * Maximizes the modal object.\n */\n maximize() {\n // Saving width, height, top and bottom parameters to restore when opening.\n this.saveModalProperties();\n if (this.properties.state !== \"maximized\") {\n this.properties.previousState = this.properties.state;\n this.properties.state = \"maximized\";\n }\n // Don't permit resize on maximize mode.\n this.setResizeButtonsVisibility();\n\n if (Util.containsClass(this.overlay, \"wrs_minimized\")) {\n this.minimizeDiv.title = StringManager.get(\"minimize\");\n this.removeClass(\"wrs_minimized\");\n } else if (Util.containsClass(this.overlay, \"wrs_stack\")) {\n this.container.style.left = null;\n this.container.style.top = null;\n this.removeClass(\"wrs_stack\");\n }\n\n this.addClass(\"wrs_maximized\");\n\n // Change maximize icon to minimize icon\n const generalStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minIcon)})`;\n const hoverStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyle);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyle));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyle));\n\n // Set size to 80% screen with a max size.\n this.setSize(parseInt(window.innerHeight * 0.8, 10), parseInt(window.innerWidth * 0.8, 10));\n if (this.container.clientHeight > 700) {\n this.container.style.height = \"700px\";\n }\n if (this.container.clientWidth > 1200) {\n this.container.style.width = \"1200px\";\n }\n\n // Setting modal position in center on screen.\n const { innerHeight } = window;\n const { innerWidth } = window;\n const { offsetHeight } = this.container;\n const { offsetWidth } = this.container;\n const bottom = innerHeight / 2 - offsetHeight / 2;\n const right = innerWidth / 2 - offsetWidth / 2;\n\n this.setPosition(bottom, right);\n this.recalculateScale();\n this.recalculatePosition();\n this.recalculateSize();\n this.focus();\n }\n\n /**\n * Expand again the modal object from a minimized state.\n */\n reExpand() {\n if (this.properties.state === \"minimized\") {\n if (this.properties.previousState === \"maximized\") {\n this.maximize();\n } else {\n this.stack();\n }\n this.title.style.cursor = \"\";\n }\n }\n\n /**\n * Sets modal size.\n * @param {Number} height - Height of the ModalDialog\n * @param {Number} width - Width of the ModalDialog.\n */\n setSize(height, width) {\n this.container.style.height = `${height}px`;\n this.container.style.width = `${width}px`;\n this.recalculateSize();\n }\n\n /**\n * Sets modal position using bottom and right style attributes.\n * @param {number} bottom - bottom attribute.\n * @param {number} right - right attribute.\n */\n setPosition(bottom, right) {\n this.container.style.bottom = `${bottom}px`;\n this.container.style.right = `${right}px`;\n }\n\n /**\n * Saves position and size parameters of and open ModalDialog. This attributes\n * are needed to restore it on re-open.\n */\n saveModalProperties() {\n // Saving values of modal only when modal is in stack state.\n if (this.properties.state === \"stack\") {\n this.properties.position.bottom = parseInt(this.container.style.bottom, 10);\n this.properties.position.right = parseInt(this.container.style.right, 10);\n this.properties.size.width = parseInt(this.container.style.width, 10);\n this.properties.size.height = parseInt(this.container.style.height, 10);\n }\n }\n\n /**\n * Restore ModalDialog position and size parameters.\n */\n restoreModalProperties() {\n if (this.properties.state === \"stack\") {\n // Restoring Bottom and Right values from last modal.\n this.setPosition(this.properties.position.bottom, this.properties.position.right);\n // Restoring Height and Left values from last modal.\n this.setSize(this.properties.size.height, this.properties.size.width);\n }\n }\n\n /**\n * Sets the modal dialog initial size.\n */\n recalculateSize() {\n this.contentContainer.style.height = `${parseInt(this.wrapper.offsetHeight - 50, 10)}px`;\n }\n\n /**\n * Enable or disable visibility of resize buttons in modal window depend on state.\n */\n setResizeButtonsVisibility() {\n if (this.properties.state === \"stack\") {\n this.resizerTL.style.visibility = \"visible\";\n this.resizerBR.style.visibility = \"visible\";\n } else {\n this.resizerTL.style.visibility = \"hidden\";\n this.resizerBR.style.visibility = \"hidden\";\n }\n }\n\n /**\n * Makes an object draggable adding mouse and touch events.\n */\n addListeners() {\n // Button events (maximize, minimize, stack and close).\n this.maximizeDiv.addEventListener(\"click\", this.maximize.bind(this), true);\n this.stackDiv.addEventListener(\"click\", this.stack.bind(this), true);\n this.minimizeDiv.addEventListener(\"click\", this.minimize.bind(this), true);\n this.closeDiv.addEventListener(\"click\", this.cancelAction.bind(this));\n this.maximizeDiv.addEventListener(\n \"keypress\",\n (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n }\n },\n true,\n );\n this.stackDiv.addEventListener(\n \"keypress\",\n (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n e.preventDefault();\n }\n },\n true,\n );\n this.minimizeDiv.addEventListener(\n \"keypress\",\n (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n e.preventDefault();\n }\n },\n true,\n );\n this.closeDiv.addEventListener(\"keypress\", (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n e.preventDefault();\n }\n });\n this.title.addEventListener(\"click\", this.reExpand.bind(this));\n\n // Overlay events (close).\n this.overlay.addEventListener(\"click\", this.cancelAction.bind(this));\n\n // Mouse events.\n Util.addEvent(window, \"mousedown\", this.startDrag.bind(this));\n Util.addEvent(window, \"mouseup\", this.stopDrag.bind(this));\n Util.addEvent(window, \"mousemove\", this.drag.bind(this));\n Util.addEvent(window, \"resize\", this.onWindowResize.bind(this));\n // Key events.\n Util.addEvent(window, \"keydown\", this.onKeyDown.bind(this));\n }\n\n /**\n * Removes draggable events from an object.\n */\n removeListeners() {\n // Mouse events.\n Util.removeEvent(window, \"mousedown\", this.startDrag);\n Util.removeEvent(window, \"mouseup\", this.stopDrag);\n Util.removeEvent(window, \"mousemove\", this.drag);\n Util.removeEvent(window, \"resize\", this.onWindowResize);\n // Key events.\n Util.removeEvent(window, \"keydown\", this.onKeyDown);\n }\n\n /**\n * Returns mouse or touch coordinates (on touch events ev.ClientX doesn't exists)\n * @param {MouseEvent} mouseEvent - Mouse event.\n * @return {Object} With the X and Y coordinates.\n */\n // eslint-disable-next-line class-methods-use-this\n eventClient(mouseEvent) {\n if (typeof mouseEvent.clientX === \"undefined\" && mouseEvent.changedTouches) {\n const client = {\n X: mouseEvent.changedTouches[0].clientX,\n Y: mouseEvent.changedTouches[0].clientY,\n };\n return client;\n }\n const client = {\n X: mouseEvent.clientX,\n Y: mouseEvent.clientY,\n };\n return client;\n }\n\n /**\n * Start drag function: set the object dragDataObject with the draggable\n * object offsets coordinates.\n * when drag starts (on touchstart or mousedown events).\n * @param {MouseEvent} mouseEvent - Touchstart or mousedown event.\n */\n startDrag(mouseEvent) {\n if (this.properties.state === \"minimized\") {\n return;\n }\n if (mouseEvent.target === this.title) {\n if (typeof this.dragDataObject === \"undefined\" || this.dragDataObject === null) {\n // Save first click mouse point on screen.\n this.dragDataObject = {\n x: this.eventClient(mouseEvent).X,\n y: this.eventClient(mouseEvent).Y,\n };\n // Reset last drag position when start drag.\n this.lastDrag = {\n x: \"0px\",\n y: \"0px\",\n };\n // Init right and bottom values for window modal if it isn't exist.\n if (this.container.style.right === \"\") {\n this.container.style.right = \"0px\";\n }\n if (this.container.style.bottom === \"\") {\n this.container.style.bottom = \"0px\";\n }\n\n // Needed for IE11 for apply disabled mouse events on editor because\n // internet explorer needs a dynamic object to apply this property.\n if (this.isIE11()) {\n // this.iframe.style['position'] = 'relative';\n }\n // Apply class for disable involuntary select text when drag.\n Util.addClass(document.body, \"wrs_noselect\");\n Util.addClass(this.overlay, \"wrs_overlay_active\");\n // Obtain screen limits for prevent overflow.\n this.limitWindow = this.getLimitWindow();\n }\n }\n }\n\n /**\n * Updates dragDataObject with the draggable object coordinates when\n * the draggable object is being moved.\n * @param {MouseEvent} mouseEvent - The mouse event.\n */\n drag(mouseEvent) {\n if (this.dragDataObject) {\n mouseEvent.preventDefault();\n // Calculate max and min between actual mouse position and limit of screeen.\n // It restric the movement of modal into window.\n let limitY = Math.min(this.eventClient(mouseEvent).Y, this.limitWindow.minPointer.y);\n limitY = Math.max(this.limitWindow.maxPointer.y, limitY);\n let limitX = Math.min(this.eventClient(mouseEvent).X, this.limitWindow.minPointer.x);\n limitX = Math.max(this.limitWindow.maxPointer.x, limitX);\n // Subtract limit with first position to obtain relative pixels increment\n // to the anchor point.\n const dragX = `${limitX - this.dragDataObject.x}px`;\n const dragY = `${limitY - this.dragDataObject.y}px`;\n // Save last valid position of modal before window overflow.\n this.lastDrag = {\n x: dragX,\n y: dragY,\n };\n // This move modal with hardware acceleration.\n this.container.style.transform = `translate3d(${dragX},${dragY},0)`;\n }\n if (this.resizeDataObject) {\n const { innerWidth } = window;\n const { innerHeight } = window;\n let limitX = Math.min(this.eventClient(mouseEvent).X, innerWidth - this.scrollbarWidth - 7);\n let limitY = Math.min(this.eventClient(mouseEvent).Y, innerHeight - 7);\n if (limitX < 0) {\n limitX = 0;\n }\n\n if (limitY < 0) {\n limitY = 0;\n }\n\n let scaleMultiplier;\n if (this.leftScale) {\n scaleMultiplier = -1;\n } else {\n scaleMultiplier = 1;\n }\n\n this.container.style.width = `${this.initialWidth + scaleMultiplier * (limitX - this.resizeDataObject.x)}px`;\n this.container.style.height = `${this.initialHeight + scaleMultiplier * (limitY - this.resizeDataObject.y)}px`;\n if (!this.leftScale) {\n if (this.resizeDataObject.x - limitX - this.initialWidth < -580) {\n this.container.style.right = `${this.initialRight - (limitX - this.resizeDataObject.x)}px`;\n } else {\n this.container.style.right = `${this.initialRight + this.initialWidth - 580}px`;\n this.container.style.width = \"580px\";\n }\n if (this.resizeDataObject.y - limitY < this.initialHeight - 338) {\n this.container.style.bottom = `${this.initialBottom - (limitY - this.resizeDataObject.y)}px`;\n } else {\n this.container.style.bottom = `${this.initialBottom + this.initialHeight - 338}px`;\n this.container.style.height = \"338px\";\n }\n }\n this.recalculateScale();\n this.recalculatePosition();\n }\n }\n\n /**\n * Returns the boundaries of actual window to limit modal movement.\n * @return {Object} Object containing mouseX and mouseY coordinates of actual mouse on screen.\n */\n getLimitWindow() {\n // Obtain dimensions of window page.\n const maxWidth = window.innerWidth;\n const maxHeight = window.innerHeight;\n\n // Calculate relative position of mouse point into window.\n const { offsetHeight } = this.container;\n const contStyleBottom = parseInt(this.container.style.bottom, 10);\n const contStyleRight = parseInt(this.container.style.right, 10);\n\n const { pageXOffset } = window;\n const dragY = this.dragDataObject.y;\n const dragX = this.dragDataObject.x;\n\n const offSetToolbarY = offsetHeight + contStyleBottom - (maxHeight - (dragY - pageXOffset));\n const offSetToolbarX = maxWidth - this.scrollbarWidth - (dragX - pageXOffset) - contStyleRight;\n\n // Calculate limits with sizes of window, modal and mouse position.\n const minPointerY = maxHeight - this.container.offsetHeight + offSetToolbarY;\n const maxPointerY = this.title.offsetHeight - (this.title.offsetHeight - offSetToolbarY);\n const minPointerX = maxWidth - offSetToolbarX - this.scrollbarWidth;\n const maxPointerX = this.container.offsetWidth - offSetToolbarX;\n const minPointer = { x: minPointerX, y: minPointerY };\n const maxPointer = { x: maxPointerX, y: maxPointerY };\n return { minPointer, maxPointer };\n }\n\n /**\n * Returns the scrollbar width size of browser\n * @returns {Number} The scrollbar width.\n */\n // eslint-disable-next-line class-methods-use-this\n getScrollBarWidth() {\n // Create a paragraph with full width of page.\n const inner = document.createElement(\"p\");\n inner.style.width = \"100%\";\n inner.style.height = \"200px\";\n\n // Create a hidden div to compare sizes.\n const outer = document.createElement(\"div\");\n outer.style.position = \"absolute\";\n outer.style.top = \"0px\";\n outer.style.left = \"0px\";\n outer.style.visibility = \"hidden\";\n outer.style.width = \"200px\";\n outer.style.height = \"150px\";\n outer.style.overflow = \"hidden\";\n outer.appendChild(inner);\n\n document.body.appendChild(outer);\n const widthOuter = inner.offsetWidth;\n\n // Change type overflow of paragraph for measure scrollbar.\n outer.style.overflow = \"scroll\";\n let widthInner = inner.offsetWidth;\n\n // If measure is the same, we compare with internal div.\n if (widthOuter === widthInner) {\n widthInner = outer.clientWidth;\n }\n document.body.removeChild(outer);\n\n return widthOuter - widthInner;\n }\n\n /**\n * Set the dragDataObject to null.\n */\n stopDrag() {\n // Due to we have multiple events that call this function, we need only to execute\n // the next modifiers one time,\n // when the user stops to drag and dragDataObject is not null (the object to drag is attached).\n if (this.dragDataObject || this.resizeDataObject) {\n // If modal doesn't change, it's not necessary to set position with interpolation.\n this.container.style.transform = \"\";\n if (this.dragDataObject) {\n this.container.style.right = `${parseInt(this.container.style.right, 10) - parseInt(this.lastDrag.x, 10)}px`;\n this.container.style.bottom = `${parseInt(this.container.style.bottom, 10) - parseInt(this.lastDrag.y, 10)}px`;\n }\n // We make focus on editor after drag modal windows to prevent lose focus.\n this.focus();\n // Restore mouse events on iframe.\n // this.iframe.style['pointer-events'] = 'auto';\n document.body.style[\"user-select\"] = \"\";\n // Restore static state of iframe if we use Internet Explorer.\n if (this.isIE11()) {\n // this.iframe.style['position'] = null;\n }\n // Active text select event.\n Util.removeClass(document.body, \"wrs_noselect\");\n Util.removeClass(this.overlay, \"wrs_overlay_active\");\n }\n this.dragDataObject = null;\n this.resizeDataObject = null;\n this.initialWidth = null;\n this.leftScale = null;\n }\n\n /**\n * Recalculates scale for modal when resize browser window.\n */\n onWindowResize() {\n this.recalculateScrollBar();\n this.recalculatePosition();\n this.recalculateScale();\n }\n\n /**\n * Triggers keyboard events:\n * - Tab key tab to go to submit button.\n * - Esc key to close the modal dialog.\n * @param {KeyboardEvent} keyboardEvent - The keyboard event.\n */\n onKeyDown(keyboardEvent) {\n if (keyboardEvent.key !== undefined) {\n // Popupmessage is not oppened.\n if (this.popup.overlayWrapper.style.display !== \"block\") {\n // Code to detect Esc event\n if (keyboardEvent.key === \"Escape\" || keyboardEvent.key === \"Esc\") {\n if (this.properties.open) {\n this.contentManager.onKeyDown(keyboardEvent);\n }\n } else if (keyboardEvent.shiftKey && keyboardEvent.key === \"Tab\") {\n // Code to detect shift Tab event.\n if (document.activeElement === this.cancelButton) {\n this.submitButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else {\n this.contentManager.onKeyDown(keyboardEvent);\n }\n } else if (keyboardEvent.key === \"Tab\") {\n // Code to detect Tab event.\n if (document.activeElement === this.submitButton) {\n this.cancelButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else {\n this.contentManager.onKeyDown(keyboardEvent);\n }\n }\n } else {\n // Popupmessage oppened.\n this.popup.onKeyDown(keyboardEvent);\n }\n }\n }\n\n /**\n * Recalculating position for modal dialog when the browser is resized.\n */\n recalculatePosition() {\n this.container.style.right = `${Math.min(parseInt(this.container.style.right, 10), window.innerWidth - this.scrollbarWidth - this.container.offsetWidth)}px`;\n if (parseInt(this.container.style.right, 10) < 0) {\n this.container.style.right = \"0px\";\n }\n this.container.style.bottom = `${Math.min(parseInt(this.container.style.bottom, 10), window.innerHeight - this.container.offsetHeight)}px`;\n if (parseInt(this.container.style.bottom, 10) < 0) {\n this.container.style.bottom = \"0px\";\n }\n }\n\n /**\n * Recalculating scale for modal when the browser is resized.\n */\n recalculateScale() {\n let sizeModified = false;\n\n if (parseInt(this.container.style.width, 10) > 580) {\n this.container.style.width = `${Math.min(parseInt(this.container.style.width, 10), window.innerWidth - this.scrollbarWidth)}px`;\n sizeModified = true;\n } else {\n this.container.style.width = \"580px\";\n sizeModified = true;\n }\n\n if (parseInt(this.container.style.height, 10) > 338) {\n this.container.style.height = `${Math.min(parseInt(this.container.style.height, 10), window.innerHeight)}px`;\n sizeModified = true;\n } else {\n this.container.style.height = \"338px\";\n sizeModified = true;\n }\n\n if (sizeModified) {\n this.recalculateSize();\n }\n }\n\n /**\n * Recalculating width of browser scroll bar.\n */\n recalculateScrollBar() {\n this.hasScrollBar = window.innerWidth > document.documentElement.clientWidth;\n if (this.hasScrollBar) {\n this.scrollbarWidth = this.getScrollBarWidth();\n } else {\n this.scrollbarWidth = 0;\n }\n }\n\n /**\n * Hide soft keyboards on iOS devices.\n */\n // eslint-disable-next-line class-methods-use-this\n hideKeyboard() {\n // iOS keyboard can't be detected or hide directly from JavaScript.\n // So, this method simulates that user focus a text input and blur\n // the selection.\n const inputField = document.createElement(\"input\");\n this.container.appendChild(inputField);\n inputField.focus();\n inputField.blur();\n // Is removed to not see it.\n inputField.remove();\n }\n\n /**\n * Focus to contentManager object.\n */\n focus() {\n if (this.contentManager != null && typeof this.contentManager.onFocus !== \"undefined\") {\n this.contentManager.onFocus();\n }\n }\n\n /**\n * Returns true when the device is on portrait mode.\n */\n // eslint-disable-next-line class-methods-use-this\n portraitMode() {\n return window.innerHeight > window.innerWidth;\n }\n\n /**\n * Event handler that change container size when IOS soft keyboard is opened.\n */\n handleOpenedIosSoftkeyboard() {\n if (!this.iosSoftkeyboardOpened && this.iosDivHeight != null && this.iosDivHeight === `auto`) {\n if (this.portraitMode()) {\n this.setContainerHeight(`60${this.iosMeasureUnit}`);\n } else {\n this.setContainerHeight(`35${this.iosMeasureUnit}`);\n }\n }\n this.iosSoftkeyboardOpened = true;\n this.wrapper.style.flexGrow = \"1\";\n }\n\n /**\n * Event handler that change container size when IOS soft keyboard is closed.\n */\n handleClosedIosSoftkeyboard() {\n this.iosSoftkeyboardOpened = false;\n this.wrapper.style.flexGrow = \"1\";\n }\n\n /**\n * Change container sizes when orientation is changed on iOS.\n */\n orientationChangeIosSoftkeyboard() {\n if (this.iosSoftkeyboardOpened) {\n if (this.portraitMode()) {\n this.setContainerHeight(`65${this.iosMeasureUnit}`);\n } else {\n this.setContainerHeight(`45${this.iosMeasureUnit}`);\n }\n } else {\n this.wrapper.style.flexGrow = \"1\";\n }\n }\n\n /**\n * Change container sizes when orientation is changed on Android.\n */\n orientationChangeAndroidSoftkeyboard() {\n this.wrapper.style.flexGrow = \"1\";\n }\n\n /**\n * Set iframe container height.\n * @param {Number} height - New height.\n */\n setContainerHeight(height) {\n this.iosDivHeight = height;\n this.wrapper.style.height = height;\n }\n\n /**\n * Check content of editor before close action.\n */\n showPopUpMessage() {\n if (this.properties.state === \"minimized\") {\n this.stack();\n }\n this.popup.show();\n }\n\n /**\n * Sets the title of the modal dialog.\n * @param {String} title - Modal dialog title.\n */\n setTitle(title) {\n this.title.innerHTML = title;\n }\n\n /**\n * Returns the id of an element, adding the instance number to\n * the element class name:\n * className --> className[idNumber]\n * @param {String} className - The element class name.\n * @returns {String} A string appending the instance id to the className.\n */\n getElementId(className) {\n return `${className}[${this.instanceId}]`;\n }\n}\n","/* eslint-disable */\nvar polyfills;\nexport default polyfills;\n\n// Polyfills.\n/*! http://mths.be/codepointat v0.1.0 by @mathias */\nif (!String.prototype.codePointAt) {\n (function () {\n \"use strict\"; // needed to support `apply`/`call` with `undefined`/`null`\n var codePointAt = function (position) {\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n var size = string.length;\n // `ToInteger`\n var index = position ? Number(position) : 0;\n if (index != index) {\n // better `isNaN`\n index = 0;\n }\n // Account for out-of-bounds indices:\n if (index < 0 || index >= size) {\n return undefined;\n }\n // Get the first code unit\n var first = string.charCodeAt(index);\n var second;\n if (\n // check if it’s the start of a surrogate pair\n first >= 0xd800 &&\n first <= 0xdbff && // high surrogate\n size > index + 1 // there is a next code unit\n ) {\n second = string.charCodeAt(index + 1);\n if (second >= 0xdc00 && second <= 0xdfff) {\n // low surrogate\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - 0xd800) * 0x400 + second - 0xdc00 + 0x10000;\n }\n }\n return first;\n };\n if (Object.defineProperty) {\n Object.defineProperty(String.prototype, \"codePointAt\", {\n value: codePointAt,\n configurable: true,\n writable: true,\n });\n } else {\n String.prototype.codePointAt = codePointAt;\n }\n })();\n}\n\n// Object.assign polyfill.\nif (typeof Object.assign != \"function\") {\n // Must be writable: true, enumerable: false, configurable: true\n Object.defineProperty(Object, \"assign\", {\n value: function assign(target, varArgs) {\n // .length of function is 2\n \"use strict\";\n if (target == null) {\n // TypeError if undefined or null\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n\n var to = Object(target);\n\n for (var index = 1; index < arguments.length; index++) {\n var nextSource = arguments[index];\n\n if (nextSource != null) {\n // Skip over if undefined or null\n for (var nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n },\n writable: true,\n configurable: true,\n });\n}\n\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\nif (!Array.prototype.includes) {\n Object.defineProperty(Array.prototype, \"includes\", {\n value: function (searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" s null or is not defined');\n }\n\n // 1. Let O be ? ToObject(this value).\n var o = Object(this);\n\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\n var len = o.length >>> 0;\n\n // 3. if len is 0, return false.\n if (len === 0) {\n return false;\n }\n\n // 4. Let n be ? ToInteger(fromIndex).\n // (if fromIndex is undefinedo, this step generates the value 0.)\n var n = fromIndex | 0;\n\n // 5. if n ≥ 0, then\n // a. Let k be n.\n // 6. Else n < 0,\n // a. Let k be len + n.\n // b. if k < 0, let k be 0.\n var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n function sameValueZero(x, y) {\n return x === y || (typeof x === \"number\" && typeof y === \"number\" && isNaN(x) && isNaN(y));\n }\n\n // 7. Repeat while k < len\n while (k < len) {\n // a. let element k be the result of ? Get(O, ! ToString(k)).\n // b. if SameValueZero(searchElement, elementK) is true, return true.\n if (sameValueZero(o[k], searchElement)) {\n return true;\n }\n // c. Increase k by 1.\n k++;\n }\n\n // 8. Return false\n return false;\n },\n });\n}\n\nif (!String.prototype.includes) {\n String.prototype.includes = function (search, start) {\n \"use strict\";\n\n if (search instanceof RegExp) {\n throw TypeError(\"first argument must not be a RegExp\");\n }\n if (start === undefined) {\n start = 0;\n }\n return this.indexOf(search, start) !== -1;\n };\n}\n\nif (!String.prototype.startsWith) {\n Object.defineProperty(String.prototype, \"startsWith\", {\n value: function (search, rawPos) {\n var pos = rawPos > 0 ? rawPos | 0 : 0;\n return this.substring(pos, pos + search.length) === search;\n },\n });\n}\n","import Parser from \"./parser\";\nimport Util from \"./util\";\nimport StringManager from \"./stringmanager\";\nimport ContentManager from \"./contentmanager\";\nimport Latex from \"./latex\";\nimport MathML from \"./mathml\";\nimport CustomEditors from \"./customeditors\";\nimport Configuration from \"./configuration\";\nimport jsProperties from \"./jsvariables\";\nimport Event from \"./event\";\nimport Listeners from \"./listeners\";\nimport Image from \"./image\";\nimport ServiceProvider from \"./serviceprovider\";\nimport ModalDialog from \"./modal\";\nimport Telemeter from \"./telemeter\";\nimport \"./polyfills\";\nimport \"../styles/styles.css\";\n\n/**\n * @typedef {Object} CoreProperties\n * @property {ServiceProviderProperties} serviceProviderProperties\n * - The ServiceProvider class properties. *\n */\nexport default class Core {\n /**\n * @classdesc\n * This class represents MathType integration Core, managing the following:\n * - Integration initialization.\n * - Event managing.\n * - Insertion of formulas into the edit area.\n * ```js\n * let core = new Core();\n * core.addListener(listener);\n * core.language = 'en';\n *\n * // Initializing Core class.\n * core.init(configurationService);\n * ```\n * @constructs\n * Core constructor.\n * @param {CoreProperties}\n */\n constructor(coreProperties) {\n /**\n * Language. Needed for accessibility and locales. 'en' by default.\n * @type {String}\n */\n this.language = \"en\";\n\n /**\n * Edit mode, 'images' by default. Admits the following values:\n * - images\n * - latex\n * @type {String}\n */\n this.editMode = \"images\";\n\n /**\n * Modal dialog instance.\n * @type {ModalDialog}\n */\n this.modalDialog = null;\n\n /**\n * The instance of {@link CustomEditors}. By default\n * the only custom editor is the Chemistry editor.\n * @type {CustomEditors}\n */\n this.customEditors = new CustomEditors();\n\n /**\n * Chemistry editor.\n * @type {CustomEditor}\n */\n const chemEditorParams = {\n name: \"Chemistry\",\n toolbar: \"chemistry\",\n icon: \"chem.png\",\n confVariable: \"chemEnabled\",\n title: \"ChemType\",\n tooltip: \"Insert a chemistry formula - ChemType\", // TODO: Localize tooltip.\n };\n\n this.customEditors.addEditor(\"chemistry\", chemEditorParams);\n\n /**\n * Environment properties. This object contains data about the integration platform.\n * @typedef IntegrationEnvironment\n * @property {String} IntegrationEnvironment.editor - Editor name. For example the HTML editor.\n * @property {String} IntegrationEnvironment.mode - Integration save mode.\n * @property {String} IntegrationEnvironment.version - Integration version.\n *\n */\n\n /**\n * The environment properties object.\n * @type {IntegrationEnvironment}\n */\n this.environment = {};\n\n /**\n * @typedef EditionProperties\n * @property {Boolean} editionProperties.isNewElement - True if the formula is a new one.\n * False otherwise.\n * @property {HTMLImageElement} editionProperties.temporalImage- The image element.\n * Null if the formula is new.\n * @property {Range} editionProperties.latexRange - Tha range that contains the LaTeX formula.\n * @property {Range} editionProperties.range - The range that contains the image element.\n * @property {String} editionProperties.editMode - The edition mode. 'images' by default.\n */\n\n /**\n * The properties of the current edition process.\n * @type {EditionProperties}\n */\n this.editionProperties = {};\n\n this.editionProperties.isNewElement = true;\n this.editionProperties.temporalImage = null;\n this.editionProperties.latexRange = null;\n this.editionProperties.range = null;\n this.editionProperties.editionStartTime = null;\n\n /**\n * The {@link IntegrationModel} instance.\n * @type {IntegrationModel}\n */\n this.integrationModel = null;\n\n /**\n * The {@link ContentManager} instance.\n * @type {ContentManager}\n */\n this.contentManager = null;\n\n /**\n * The current browser.\n * @type {String}\n */\n this.browser = (() => {\n const ua = navigator.userAgent;\n let browser = \"none\";\n if (ua.search(\"Edge/\") >= 0) {\n browser = \"EDGE\";\n } else if (ua.search(\"Chrome/\") >= 0) {\n browser = \"CHROME\";\n } else if (ua.search(\"Trident/\") >= 0) {\n browser = \"IE\";\n } else if (ua.search(\"Firefox/\") >= 0) {\n browser = \"FIREFOX\";\n } else if (ua.search(\"Safari/\") >= 0) {\n browser = \"SAFARI\";\n }\n return browser;\n })();\n\n /**\n * Plugin listeners.\n * @type {Array.<Object>}\n */\n this.listeners = new Listeners();\n\n /**\n * Service provider properties.\n * @type {ServiceProviderProperties}\n */\n this.serviceProviderProperties = {};\n if (\"serviceProviderProperties\" in coreProperties) {\n this.serviceProviderProperties = coreProperties.serviceProviderProperties;\n } else {\n throw new Error(\"serviceProviderProperties property missing.\");\n }\n }\n\n /**\n * Static property.\n * Core listeners.\n * @private\n * @type {Listeners}\n */\n static get globalListeners() {\n return Core._globalListeners;\n }\n\n /**\n * Static property setter.\n * Set core listeners.\n * @param {Listeners} value - The property value.\n * @ignore\n */\n static set globalListeners(value) {\n Core._globalListeners = value;\n }\n\n /**\n * Core state. Says if it was loaded previously.\n * True when Core.init was called. Otherwise, false.\n * @private\n * @type {Boolean}\n */\n static get initialized() {\n return Core._initialized;\n }\n\n /**\n * Core state. Says if it was loaded previously.\n * @param {Boolean} value - True to say that Core.init was called. Otherwise, false.\n * @ignore\n */\n static set initialized(value) {\n Core._initialized = value;\n }\n\n /**\n * Sets the {@link Core.integrationModel} property.\n * @param {IntegrationModel} integrationModel - The {@link IntegrationModel} property.\n */\n setIntegrationModel(integrationModel) {\n this.integrationModel = integrationModel;\n }\n\n /**\n * Sets the {@link Core.environment} property.\n * @param {IntegrationEnvironment} integrationEnvironment -\n * The {@link IntegrationEnvironment} object.\n */\n setEnvironment(integrationEnvironment) {\n if (\"editor\" in integrationEnvironment) {\n this.environment.editor = integrationEnvironment.editor;\n }\n if (\"mode\" in integrationEnvironment) {\n this.environment.mode = integrationEnvironment.mode;\n }\n if (\"version\" in integrationEnvironment) {\n this.environment.version = integrationEnvironment.version;\n }\n }\n\n /**\n * Sets the custom headers added on editor requests if contentManager isn't undefined.\n * @returns {Object} headers - key value headers.\n */\n setHeaders(headers) {\n const headerObject = this?.contentManager?.setCustomHeaders(headers) || headers;\n Configuration.set(\"customHeaders\", headerObject);\n }\n\n /**\n * Returns the current {@link ModalDialog} instance.\n * @returns {ModalDialog} The current {@link ModalDialog} instance.\n */\n getModalDialog() {\n return this.modalDialog;\n }\n\n /**\n * Inits the {@link Core} class, doing the following:\n * - Calls asynchronously configuration service, retrieving the backend configuration in a JSON.\n * - Updates {@link Configuration} class with the previous configuration properties.\n * - Updates the {@link ServiceProvider} class using the configuration service path as reference.\n * - Loads language strings.\n * - Fires onLoad event.\n * @param {Object} serviceParameters - Service parameters.\n */\n init() {\n if (!Core.initialized) {\n const serviceProviderListener = Listeners.newListener(\"onInit\", () => {\n const jsConfiguration = ServiceProvider.getService(\"configurationjs\", \"\", \"get\");\n const jsonConfiguration = JSON.parse(jsConfiguration);\n Configuration.addConfiguration(jsonConfiguration);\n // Adding JavaScript (not backend) configuration variables.\n Configuration.addConfiguration(jsProperties);\n // Fire 'onLoad' event:\n // All integration must listen this event in order to know if the plugin\n // has been properly loaded.\n StringManager.language = this.language;\n this.listeners.fire(\"onLoad\", {});\n });\n\n ServiceProvider.addListener(serviceProviderListener);\n ServiceProvider.init(this.serviceProviderProperties);\n\n Core.initialized = true;\n } else {\n // Case when there are more than two editor instances.\n // After the first editor all the other editors don't need to load any file or service.\n this.listeners.fire(\"onLoad\", {});\n }\n }\n\n /**\n * Adds a {@link Listener} to the current instance of the {@link Core} class.\n * @param {Listener} listener - The listener object.\n */\n addListener(listener) {\n this.listeners.add(listener);\n }\n\n /**\n * Adds the global {@link Listener} instance to {@link Core} class.\n * @param {Listener} listener - The event listener to be added.\n * @static\n */\n static addGlobalListener(listener) {\n Core.globalListeners.add(listener);\n }\n\n beforeUpdateFormula(mathml, wirisProperties) {\n /**\n * This event is fired before updating the formula.\n * @type {Object}\n * @property {String} mathml - MathML to be transformed.\n * @property {String} editMode - Edit mode.\n * @property {Object} wirisProperties - Extra attributes for the formula.\n * @property {String} language - Formula language.\n */\n const beforeUpdateEvent = new Event();\n\n beforeUpdateEvent.mathml = mathml;\n\n // Cloning wirisProperties object\n // We don't want wirisProperties object modified.\n beforeUpdateEvent.wirisProperties = {};\n\n if (wirisProperties != null) {\n Object.keys(wirisProperties).forEach((attr) => {\n beforeUpdateEvent.wirisProperties[attr] = wirisProperties[attr];\n });\n }\n\n // Read only.\n beforeUpdateEvent.language = this.language;\n beforeUpdateEvent.editMode = this.editMode;\n\n if (this.listeners.fire(\"onBeforeFormulaInsertion\", beforeUpdateEvent)) {\n return {};\n }\n\n if (Core.globalListeners.fire(\"onBeforeFormulaInsertion\", beforeUpdateEvent)) {\n return {};\n }\n\n return {\n mathml: beforeUpdateEvent.mathml,\n wirisProperties: beforeUpdateEvent.wirisProperties,\n };\n }\n\n /**\n * Converts a MathML into it's correspondent image and inserts the image is\n * inserted in a HTMLElement target by creating\n * a new image or updating an existing one.\n * @param {HTMLElement} focusElement - The HTMLElement to be focused after the insertion.\n * @param {Window} windowTarget - The window element where the editable content is.\n * @param {String} mathml - The MathML.\n * @param {Array.<Object>} wirisProperties - The extra attributes for the formula.\n * @returns {ReturnObject} - Object with the information of the node or latex to insert.\n */\n insertFormula(focusElement, windowTarget, mathml, wirisProperties) {\n /**\n * It is the object with the information of the node or latex to insert.\n * @typedef ReturnObject\n * @property {Node} [node] - The DOM node to insert.\n * @property {String} [latex] - The latex to insert.\n */\n const returnObject = {};\n\n if (!mathml) {\n this.insertElementOnSelection(null, focusElement, windowTarget);\n } else if (this.editMode === \"latex\") {\n returnObject.latex = Latex.getLatexFromMathML(mathml);\n // this.integrationModel.getNonLatexNode is an integration wrapper\n // to have special behaviours for nonLatex.\n // Not all the integrations have special behaviours for nonLatex.\n if (!!this.integrationModel.fillNonLatexNode && !returnObject.latex) {\n const afterUpdateEvent = new Event();\n afterUpdateEvent.editMode = this.editMode;\n afterUpdateEvent.windowTarget = windowTarget;\n afterUpdateEvent.focusElement = focusElement;\n afterUpdateEvent.latex = returnObject.latex;\n this.integrationModel.fillNonLatexNode(afterUpdateEvent, windowTarget, mathml);\n } else {\n returnObject.node = windowTarget.document.createTextNode(`$$${returnObject.latex}$$`);\n }\n this.insertElementOnSelection(returnObject.node, focusElement, windowTarget);\n } else {\n returnObject.node = Parser.mathmlToImgObject(windowTarget.document, mathml, wirisProperties, this.language);\n\n this.insertElementOnSelection(returnObject.node, focusElement, windowTarget);\n }\n\n return returnObject;\n }\n\n afterUpdateFormula(focusElement, windowTarget, node, latex) {\n /**\n * This event is fired after update the formula.\n * @type {Event}\n * @param {String} editMode - edit mode.\n * @param {Object} windowTarget - target window.\n * @param {Object} focusElement - target element to be focused after update.\n * @param {String} latex - LaTeX generated by the formula (editMode=latex).\n * @param {Object} node - node generated after update the formula (text if LaTeX img otherwise).\n */\n const afterUpdateEvent = new Event();\n afterUpdateEvent.editMode = this.editMode;\n afterUpdateEvent.windowTarget = windowTarget;\n afterUpdateEvent.focusElement = focusElement;\n afterUpdateEvent.node = node;\n afterUpdateEvent.latex = latex;\n\n if (this.listeners.fire(\"onAfterFormulaInsertion\", afterUpdateEvent)) {\n return {};\n }\n\n if (Core.globalListeners.fire(\"onAfterFormulaInsertion\", afterUpdateEvent)) {\n return {};\n }\n\n return {};\n }\n\n /**\n * Sets the caret after a given Node and set the focus to the owner document.\n * @param {Node} node - The Node element.\n */\n placeCaretAfterNode(node) {\n if (node === null) return;\n\n this.integrationModel.getSelection();\n const nodeDocument = node.ownerDocument;\n if (typeof nodeDocument.getSelection !== \"undefined\" && !!node.parentElement) {\n const range = nodeDocument.createRange();\n range.setStartAfter(node);\n range.collapse(true);\n const selection = nodeDocument.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n nodeDocument.body.focus();\n }\n }\n\n /**\n * Replaces a Selection object with an HTMLElement.\n * @param {HTMLElement} element - The HTMLElement to replace the selection.\n * @param {HTMLElement} focusElement - The HTMLElement to be focused after the replace.\n * @param {Window} windowTarget - The window target.\n */\n insertElementOnSelection(element, focusElement, windowTarget) {\n let mathmlOrigin = null;\n if (this.editionProperties.isNewElement) {\n if (element) {\n if (focusElement.type === \"textarea\") {\n Util.updateTextArea(focusElement, element.textContent);\n } else if (document.selection && document.getSelection === 0) {\n let range = windowTarget.document.selection.createRange();\n windowTarget.document.execCommand(\"InsertImage\", false, element.src);\n\n if (!(\"parentElement\" in range)) {\n windowTarget.document.execCommand(\"delete\", false);\n range = windowTarget.document.selection.createRange();\n windowTarget.document.execCommand(\"InsertImage\", false, element.src);\n }\n\n if (\"parentElement\" in range) {\n const temporalObject = range.parentElement();\n\n if (temporalObject.nodeName.toUpperCase() === \"IMG\") {\n temporalObject.parentNode.replaceChild(element, temporalObject);\n } else {\n // IE9 fix: parentNode() does not return the IMG node,\n // returns the parent DIV node. In IE < 9, pasteHTML does not work well.\n range.pasteHTML(Util.createObjectCode(element));\n }\n }\n } else {\n let range = null;\n // In IE is needed keep the range due to after focus the modal window\n // it can't be retrieved the last selection.\n if (this.editionProperties.range) {\n ({ range } = this.editionProperties);\n this.editionProperties.range = null;\n } else {\n const editorSelection = this.integrationModel.getSelection();\n range = editorSelection.getRangeAt(0);\n }\n\n // Delete if something was surrounded.\n range.deleteContents();\n\n let node = range.startContainer;\n const position = range.startOffset;\n\n if (node.nodeType === 3) {\n // TEXT_NODE.\n node = node.splitText(position);\n node.parentNode.insertBefore(element, node);\n } else if (node.nodeType === 1) {\n // ELEMENT_NODE.\n node.insertBefore(element, node.childNodes[position]);\n }\n\n this.placeCaretAfterNode(element);\n }\n } else if (focusElement.type === \"textarea\") {\n focusElement.focus();\n } else {\n const editorSelection = this.integrationModel.getSelection();\n editorSelection.removeAllRanges();\n\n if (this.editionProperties.range) {\n const { range } = this.editionProperties;\n this.editionProperties.range = null;\n editorSelection.addRange(range);\n }\n }\n } else if (this.editionProperties.latexRange) {\n if (document.selection && document.getSelection === 0) {\n this.editionProperties.isNewElement = true;\n this.editionProperties.latexRange.select();\n this.insertElementOnSelection(element, focusElement, windowTarget);\n } else {\n this.editionProperties.latexRange.deleteContents();\n this.editionProperties.latexRange.insertNode(element);\n this.placeCaretAfterNode(element);\n }\n } else if (focusElement.type === \"textarea\") {\n let item;\n // Wrapper for some integrations that can have special behaviours to show latex.\n if (typeof this.integrationModel.getSelectedItem !== \"undefined\") {\n item = this.integrationModel.getSelectedItem(focusElement, false);\n } else {\n item = Util.getSelectedItemOnTextarea(focusElement);\n }\n Util.updateExistingTextOnTextarea(focusElement, element.textContent, item.startPosition, item.endPosition);\n } else {\n mathmlOrigin = this.editionProperties.temporalImage?.dataset.mathml;\n if (element && element.nodeName.toLowerCase() === \"img\") {\n // Editor empty, formula has been erased on edit.\n // There are editors (e.g: CKEditor) that put attributes in images.\n // We don't allow that behaviour in our images.\n Image.removeImgDataAttributes(this.editionProperties.temporalImage);\n // Clone is needed to maintain event references to temporalImage.\n Image.clone(element, this.editionProperties.temporalImage);\n } else {\n this.editionProperties.temporalImage.remove();\n }\n this.placeCaretAfterNode(this.editionProperties.temporalImage);\n }\n\n // Build the telemeter payload separated to delete null/undefined entries.\n const mathml = element?.dataset?.mathml;\n const payload = {\n mathml_origin: mathmlOrigin ? MathML.safeXmlDecode(mathmlOrigin) : mathmlOrigin,\n mathml: mathml ? MathML.safeXmlDecode(mathml) : mathml,\n elapsed_time: Date.now() - this.editionProperties.editionStartTime,\n editor_origin: null, // TODO read formula to find out whether it comes from Oxygen Desktop\n toolbar: this.modalDialog.contentManager.toolbar,\n size: mathml?.length,\n };\n\n // Remove the desired null keys.\n Object.keys(payload).forEach((key) => {\n if (key === \"mathml_origin\" || key === \"editor_origin\") !payload[key] ? delete payload[key] : {};\n });\n\n // Call Telemetry service to track the event.\n try {\n Telemeter.telemeter.track(\"INSERTED_FORMULA\", {\n ...payload,\n });\n } catch (error) {\n console.error(\"Error tracking INSERTED_FORMULA\", error);\n }\n }\n\n /**\n * Opens a modal dialog containing MathType editor..\n * @param {HTMLElement} target - The target HTMLElement where formulas should be inserted.\n * @param {Boolean} isIframe - True if the target HTMLElement is an iframe. False otherwise.\n */\n openModalDialog(target, isIframe) {\n // Count the time since the editor is open\n this.editionProperties.editionStartTime = Date.now();\n\n // Textarea elements don't have normal document ranges. It only accepts latex edit.\n this.editMode = \"images\";\n\n // In IE is needed keep the range due to after focus the modal window\n // it can't be retrieved the last selection.\n try {\n if (isIframe) {\n // Is needed focus the target first.\n target.contentWindow.focus();\n const selection = target.contentWindow.getSelection();\n this.editionProperties.range = selection.getRangeAt(0);\n } else {\n // Is needed focus the target first.\n target.focus();\n const selection = getSelection();\n this.editionProperties.range = selection.getRangeAt(0);\n }\n } catch (e) {\n this.editionProperties.range = null;\n }\n\n if (isIframe === undefined) {\n isIframe = true;\n }\n\n this.editionProperties.latexRange = null;\n\n if (target) {\n let selectedItem;\n if (typeof this.integrationModel.getSelectedItem !== \"undefined\") {\n selectedItem = this.integrationModel.getSelectedItem(target, isIframe);\n } else {\n selectedItem = Util.getSelectedItem(target, isIframe);\n }\n\n // Check LaTeX if and only if the node is a text node (nodeType==3).\n if (selectedItem) {\n // Case when image was selected and button pressed.\n if (!selectedItem.caretPosition && Util.containsClass(selectedItem.node, Configuration.get(\"imageClassName\"))) {\n this.editionProperties.temporalImage = selectedItem.node;\n this.editionProperties.isNewElement = false;\n } else if (selectedItem.node.nodeType === 3) {\n // If it's a text node means that editor is working with LaTeX.\n if (this.integrationModel.getMathmlFromTextNode) {\n // If integration has this function it isn't set range due to we don't\n // know if it will be put into a textarea as a text or image.\n const mathml = this.integrationModel.getMathmlFromTextNode(selectedItem.node, selectedItem.caretPosition);\n if (mathml) {\n this.editMode = \"latex\";\n this.editionProperties.isNewElement = false;\n this.editionProperties.temporalImage = document.createElement(\"img\");\n this.editionProperties.temporalImage.setAttribute(\n Configuration.get(\"imageMathmlAttribute\"),\n MathML.safeXmlEncode(mathml),\n );\n }\n } else {\n const latexResult = Latex.getLatexFromTextNode(selectedItem.node, selectedItem.caretPosition);\n if (latexResult) {\n const mathml = Latex.getMathMLFromLatex(latexResult.latex);\n this.editMode = \"latex\";\n this.editionProperties.isNewElement = false;\n this.editionProperties.temporalImage = document.createElement(\"img\");\n this.editionProperties.temporalImage.setAttribute(\n Configuration.get(\"imageMathmlAttribute\"),\n MathML.safeXmlEncode(mathml),\n );\n const windowTarget = isIframe ? target.contentWindow : window;\n\n if (target.tagName.toLowerCase() !== \"textarea\") {\n if (document.selection) {\n let leftOffset = 0;\n let previousNode = latexResult.startNode.previousSibling;\n\n while (previousNode) {\n leftOffset += Util.getNodeLength(previousNode);\n previousNode = previousNode.previousSibling;\n }\n\n this.editionProperties.latexRange = windowTarget.document.selection.createRange();\n this.editionProperties.latexRange.moveToElementText(latexResult.startNode.parentNode);\n this.editionProperties.latexRange.move(\"character\", leftOffset + latexResult.startPosition);\n this.editionProperties.latexRange.moveEnd(\"character\", latexResult.latex.length + 4); // Plus 4 for the '$$' characters.\n } else {\n this.editionProperties.latexRange = windowTarget.document.createRange();\n this.editionProperties.latexRange.setStart(latexResult.startNode, latexResult.startPosition);\n this.editionProperties.latexRange.setEnd(latexResult.endNode, latexResult.endPosition);\n }\n }\n }\n }\n }\n } else if (target.tagName.toLowerCase() === \"textarea\") {\n // By default editMode is 'images', but when target is a textarea it needs to be 'latex'.\n this.editMode = \"latex\";\n }\n }\n\n // Setting an object with the editor parameters.\n // Editor parameters can be customized in several ways:\n // 1 - editorAttributes: Contains the default editor attributes,\n // usually the metrics in a comma separated string. Always exists.\n // 2 - editorParameters: Object containing custom editor parameters.\n // These parameters are defined in the backend. So they affects all integration instances.\n\n // The backend send the default editor attributes in a coma separated\n // with the following structure: key1=value1,key2=value2...\n const defaultEditorAttributesArray = Configuration.get(\"editorAttributes\").split(\", \");\n const defaultEditorAttributes = {};\n for (let i = 0, len = defaultEditorAttributesArray.length; i < len; i += 1) {\n const tempAttribute = defaultEditorAttributesArray[i].split(\"=\");\n const key = tempAttribute[0];\n const value = tempAttribute[1];\n defaultEditorAttributes[key] = value;\n }\n // Custom editor parameters.\n const editorAttributes = {\n language: this.language, // Default language value\n };\n // Editor parameters in backend, usually configuration.ini.\n const serverEditorParameters = Configuration.get(\"editorParameters\");\n // Editor parameters through JavaScript configuration.\n const clientEditorParameters = this.integrationModel.editorParameters;\n Object.assign(editorAttributes, defaultEditorAttributes, serverEditorParameters);\n Object.assign(editorAttributes, defaultEditorAttributes, clientEditorParameters);\n\n // Now, update backwards: if user has set a custom language, pass that back to core properties\n this.language = editorAttributes.language;\n StringManager.language = this.language;\n\n editorAttributes.rtl = this.integrationModel.rtl;\n\n const customHeaders = Configuration.get(\"customHeaders\");\n // This is not being used in the code, we are keeping it just in case it's needed.\n // We check if it is a string since we have a setter that will make the customHeaders an object. And we do the conversion for the case when we get the headers from the backend.\n editorAttributes.customHeaders =\n typeof customHeaders === \"string\" ? Util.convertStringToObject(customHeaders) : customHeaders;\n\n const contentManagerAttributes = {};\n contentManagerAttributes.editorAttributes = editorAttributes;\n contentManagerAttributes.language = this.language;\n contentManagerAttributes.customEditors = this.customEditors;\n contentManagerAttributes.environment = this.environment;\n\n if (this.modalDialog == null) {\n this.modalDialog = new ModalDialog(editorAttributes);\n this.contentManager = new ContentManager(contentManagerAttributes);\n // When an instance of ContentManager is created we need to wait until\n // the ContentManager is ready by listening 'onLoad' event.\n const listener = Listeners.newListener(\"onLoad\", () => {\n this.contentManager.dbclick = this.editionProperties.dbclick;\n this.contentManager.isNewElement = this.editionProperties.isNewElement;\n if (this.editionProperties.temporalImage != null) {\n const mathML = MathML.safeXmlDecode(\n this.editionProperties.temporalImage.getAttribute(Configuration.get(\"imageMathmlAttribute\")),\n );\n this.contentManager.mathML = mathML;\n }\n });\n this.contentManager.addListener(listener);\n this.contentManager.init();\n this.modalDialog.setContentManager(this.contentManager);\n this.contentManager.setModalDialogInstance(this.modalDialog);\n } else {\n this.contentManager.dbclick = this.editionProperties.dbclick;\n this.contentManager.isNewElement = this.editionProperties.isNewElement;\n if (this.editionProperties.temporalImage != null) {\n const mathML = MathML.safeXmlDecode(\n this.editionProperties.temporalImage.getAttribute(Configuration.get(\"imageMathmlAttribute\")),\n );\n this.contentManager.mathML = mathML;\n }\n }\n this.contentManager.setIntegrationModel(this.integrationModel);\n this.modalDialog.open();\n }\n\n /**\n * Returns the {@link CustomEditors} instance.\n * @return {CustomEditors} The current {@link CustomEditors} instance.\n */\n getCustomEditors() {\n return this.customEditors;\n }\n}\n\n/**\n * Core static listeners.\n * @type {Listeners}\n * @private\n */\nCore._globalListeners = new Listeners();\n\n/**\n * Resources state. Says if they were loaded or not.\n * @type {Boolean}\n * @private\n */\nCore._initialized = false;\n","// eslint-disable-next-line no-unused-vars, import/named\nimport Core from \"./core.src\";\nimport Image from \"./image\";\nimport Listeners from \"./listeners\";\nimport Util from \"./util\";\nimport Configuration from \"./configuration\";\nimport ServiceProvider from \"./serviceprovider\";\nimport Telemeter from \"./telemeter\";\nimport warnIcon from \"../styles/icons/general/warn_icon.svg\"; //eslint-disable-line\n\n/**\n * @typedef {Object} IntegrationModelProperties\n * @property {string} configurationService - Configuration service path.\n * This parameter is needed to determine all services paths.\n * @property {HTMLElement} integrationModelProperties.target - HTML target.\n * @property {string} integrationModelProperties.scriptName - Integration script name.\n * Usually the name of the integration script.\n * @property {Object} integrationModelProperties.environment - integration environment properties.\n * @property {Object} [integrationModelProperties.callbackMethodArguments] - object containing\n * callback method arguments.\n * @property {string} [integrationModelProperties.version] - integration version number.\n * @property {Object} [integrationModelProperties.editorObject] - object containing\n * the integration editor instance.\n * @property {boolean} [integrationModelProperties.rtl] - true if the editor is in RTL mode.\n * false otherwise.\n * @property {ServiceProviderProperties} [integrationModelProperties.serviceProviderProperties]\n * - The service parameters.\n * @property {Object} [integrationModelProperties.integrationParameters]\n * - Overwritten integration parameters.\n */\n\nexport default class IntegrationModel {\n /**\n * @classdesc\n * This class represents an integration model, allowing the integration script to\n * communicate with Core class. Each integration must extend this class.\n * @constructs\n * @param {IntegrationModelProperties} integrationModelProperties\n */\n constructor(integrationModelProperties) {\n /**\n * Language. Needed for accessibility and locales. English by default.\n */\n this.language = \"en\";\n\n /**\n * Service parameters\n * @type {ServiceProviderProperties}\n */\n this.serviceProviderProperties = integrationModelProperties.serviceProviderProperties ?? {};\n\n /**\n * Configuration service path. The integration service is needed by Core class to\n * load all the backend configuration into the frontend and also to create the paths\n * of all services (all services lives in the same route). Mandatory property.\n */\n this.configurationService = \"\";\n if (\"configurationService\" in integrationModelProperties) {\n this.serviceProviderProperties.URI = integrationModelProperties.configurationService;\n console.warn(\"Deprecated property configurationService. Use serviceParameters on instead.\", [\n integrationModelProperties.configurationService,\n ]);\n }\n\n /**\n * Plugin version. Needed to stats and caching.\n * @type {string}\n */\n this.version = \"version\" in integrationModelProperties ? integrationModelProperties.version : \"\";\n\n /**\n * DOM target in which the plugin works. Needed to associate events, insert formulas, etc.\n * Mandatory property.\n */\n this.target = null;\n if (\"target\" in integrationModelProperties) {\n this.target = integrationModelProperties.target;\n } else {\n throw new Error(\"IntegrationModel constructor error: target property missed.\");\n }\n\n /**\n * Integration script name. Needed to know the plugin path.\n */\n if (\"scriptName\" in integrationModelProperties) {\n this.scriptName = integrationModelProperties.scriptName;\n }\n\n /**\n * Object containing the arguments needed by the callback function.\n */\n this.callbackMethodArguments = integrationModelProperties.callbackMethodArguments ?? {};\n\n /**\n * Contains information about the integration environment:\n * like the name of the editor, the version, etc.\n */\n this.environment = integrationModelProperties.environment ?? {};\n\n /**\n * Indicates if the DOM target is - or not - and iframe.\n */\n this.isIframe = false;\n if (this.target != null) {\n this.isIframe = this.target.tagName.toUpperCase() === \"IFRAME\";\n }\n\n /**\n * Instance of the integration editor object. Usually the entry point to access the API\n * of a HTML editor.\n */\n this.editorObject = integrationModelProperties.editorObject ?? null;\n\n /**\n * Specifies if the direction of the text is RTL. false by default.\n */\n this.rtl = integrationModelProperties.rtl ?? false;\n\n /**\n * Specifies if the integration model exposes the locale strings. false by default.\n */\n this.managesLanguage = integrationModelProperties.managesLanguage ?? false;\n\n /**\n * Specify if editor will open in hand mode only\n */\n this.forcedHandMode = integrationModelProperties?.integrationParameters?.forcedHandMode ?? false;\n\n /**\n * Indicates if an image is selected. Needed to resize the image to the original size in case\n * the image is resized.\n * @type {boolean}\n */\n this.temporalImageResizing = false;\n\n /**\n * The Core class instance associated to the integration model.\n * @type {Core}\n */\n this.core = null;\n\n /**\n * Integration model listeners.\n * @type {Listeners}\n */\n this.listeners = new Listeners();\n\n // Parameters overwrite.\n if (\"integrationParameters\" in integrationModelProperties) {\n IntegrationModel.integrationParameters.forEach((parameter) => {\n if (parameter in integrationModelProperties.integrationParameters) {\n // Don't add empty parameters.\n const value = integrationModelProperties.integrationParameters[parameter];\n if (Object.keys(value).length !== 0) {\n this[parameter] = value;\n }\n }\n });\n }\n }\n\n /**\n * Init function. Usually called from the integration side once the core.js file is loaded.\n */\n init() {\n // Check if language is an object and select the property necessary\n this.language = this.getLanguage();\n\n // We need to wait until Core class is loaded ('onLoad' event) before\n // call the callback method.\n const listener = Listeners.newListener(\"onLoad\", () => {\n this.callbackFunction(this.callbackMethodArguments);\n });\n\n // Backwards compatibility.\n if (this.serviceProviderProperties.URI.indexOf(\"configuration\") !== -1) {\n const uri = this.serviceProviderProperties.URI;\n const server = ServiceProvider.getServerLanguageFromService(uri);\n this.serviceProviderProperties.server = server;\n const configurationIndex = this.serviceProviderProperties.URI.indexOf(\"configuration\");\n const subsTring = this.serviceProviderProperties.URI.substring(0, configurationIndex);\n this.serviceProviderProperties.URI = subsTring;\n }\n\n let serviceParametersURI = this.serviceProviderProperties.URI;\n serviceParametersURI =\n serviceParametersURI.indexOf(\"/\") === 0 || serviceParametersURI.indexOf(\"http\") === 0\n ? serviceParametersURI\n : Util.concatenateUrl(this.getPath(), serviceParametersURI);\n\n this.serviceProviderProperties.URI = serviceParametersURI;\n\n const coreProperties = {};\n coreProperties.serviceProviderProperties = this.serviceProviderProperties;\n\n this.setCore(new Core(coreProperties));\n this.core.addListener(listener);\n this.core.language = this.language;\n\n // Initializing Core class.\n this.core.init();\n // TODO: Move to Core constructor.\n this.core.setEnvironment(this.environment);\n\n // No internet connection modal.\n let attributes = {};\n attributes.class = attributes.id = \"wrs_modal_offline\";\n this.offlineModal = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_content_offline\";\n this.offlineModalContent = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_close\";\n this.offlineModalClose = Util.createElement(\"span\", attributes);\n this.offlineModalClose.innerHTML = \"&times;\";\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_warn\";\n this.offlineModalWarn = Util.createElement(\"span\", attributes);\n const generalStyle = `background-image: url(data:image/svg+xml;base64,${window.btoa(warnIcon)})`;\n this.offlineModalWarn.setAttribute(\"style\", generalStyle);\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_text_container\";\n this.offlineModalMessage = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_text_warn\";\n this.offlineModalMessage1 = Util.createElement(\"p\", attributes);\n this.offlineModalMessage1.innerHTML = \"You are not online!\";\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_text\";\n this.offlineModalMessage2 = Util.createElement(\"p\", attributes);\n this.offlineModalMessage2.innerHTML = `Thank you for using MathType. We have detected you are disconnected from the network. We remind you that you'll need to be connected to use MathType. <br /><br />Please refresh the page if this message continues appearing.`;\n\n // Append offline modal elements\n this.offlineModalContent.appendChild(this.offlineModalClose);\n this.offlineModalMessage.appendChild(this.offlineModalMessage1);\n this.offlineModalMessage.appendChild(this.offlineModalMessage2);\n this.offlineModalContent.appendChild(this.offlineModalMessage);\n this.offlineModalContent.appendChild(this.offlineModalWarn);\n this.offlineModal.appendChild(this.offlineModalContent);\n document.body.appendChild(this.offlineModal);\n\n const modal = document.getElementById(\"wrs_modal_offline\");\n this.offlineModalClose.addEventListener(\"click\", () => {\n modal.style.display = \"none\";\n });\n\n // Store editor name for telemetry purposes.\n let editorName = this.environment.editor;\n editorName = editorName.slice(0, -1); // Remove version number from editors\n if (editorName.includes(\"TinyMCE\")) editorName = \"TinyMCE\"; // Remove version from Tinymce editor.\n if (editorName.includes(\"Generic\")) editorName = \"Generic\"; // Remove version from Generic editor.\n let solutionTelemeter = editorName;\n\n // If moodle, add information to hosts and solution.\n const isMoodle = !!(typeof M === \"object\" && M !== null);\n let lms;\n\n if (isMoodle) {\n solutionTelemeter = \"Moodle\";\n lms = {\n nam: \"moodle\",\n fam: \"lms\",\n ver: this.environment.moodleVersion,\n category: this.environment.moodleCourseCategory,\n course: this.environment.moodleCourseName,\n };\n if (!editorName.includes(\"TinyMCE\")) {\n editorName = \"Atto\";\n }\n }\n\n // Get the OS and its version.\n const OSData = this.getOS();\n\n // Get the broswer and its version.\n const broswerData = this.getBrowser();\n\n // Create list of hosts to send to telemetry.\n let hosts = [\n {\n nam: broswerData.detectedBrowser,\n fam: \"browser\",\n ver: broswerData.versionBrowser,\n },\n {\n nam: editorName.toLowerCase(),\n fam: \"html-editor\",\n ver: this.environment.editorVersion,\n },\n {\n nam: OSData.detectedOS,\n fam: \"os\",\n ver: OSData.versionOS,\n },\n {\n nam: window.location.hostname,\n fam: \"domain\",\n },\n lms,\n ];\n\n // Filter hosts to remove empty objects and empty keys.\n hosts = hosts.filter((element) => {\n if (element) Object.keys(element).forEach((key) => (element[key] === \"unknown\" ? delete element[key] : {}));\n return element !== undefined;\n });\n\n // Initialize telemeter\n Telemeter.init({\n solution: {\n name: `MathType for ${solutionTelemeter}`,\n version: this.version,\n },\n hosts,\n config: {\n test: false, // True to use the staging Telemetry endpoint instead of the production one.\n debug: false, // True to show more information about Telemeter's execution and use dev-tools.\n dry_run: false, // True to skip sending data to the Telemetry endpoint (for example for unit tests).\n api_key: \"eda2ce9b-0e8a-46f2-acdd-c228a615314e\", // to auth against Telemetry. Data team is the responsible of providing it.\n },\n url: undefined,\n });\n }\n\n /**\n * Returns the Browser name and its version.\n * @return {array} - detectedBrowser = Operating System name.\n * versionBrowser = Operating System version.\n */\n getBrowser() {\n // default value for OS just in case nothing is detected\n let detectedBrowser = \"unknown\";\n let versionBrowser = \"unknown\";\n\n const userAgent = window.navigator.userAgent;\n\n if (/Brave/.test(userAgent)) {\n detectedBrowser = \"brave\";\n if (userAgent.indexOf(\"Brave/\")) {\n const start = userAgent.indexOf(\"Brave\") + 6;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n }\n } else if (userAgent.indexOf(\"Edg/\") !== -1) {\n detectedBrowser = \"edge_chromium\";\n const start = userAgent.indexOf(\"Edg/\") + 4;\n versionBrowser = userAgent\n .substring(start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Edg/.test(userAgent)) {\n detectedBrowser = \"edge\";\n let start = userAgent.indexOf(\"Edg\") + 3;\n start += userAgent.substring(start).indexOf(\"/\");\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Firefox/.test(userAgent) || /FxiOS/.test(userAgent)) {\n detectedBrowser = \"firefox\";\n let start = userAgent.indexOf(\"Firefox\");\n start = start === -1 ? userAgent.indexOf(\"FxiOS\") : start;\n start = start + userAgent.substring(start).indexOf(\"/\") + 1;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent.substring(start, end + start).replace(\"_\", \".\");\n } else if (/OPR/.test(userAgent)) {\n detectedBrowser = \"opera\";\n const start = userAgent.indexOf(\"OPR/\") + 4;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Chrome/.test(userAgent) || /CriOS/.test(userAgent)) {\n detectedBrowser = \"chrome\";\n let start = userAgent.indexOf(\"Chrome\");\n start = start === -1 ? userAgent.indexOf(\"CriOS\") : start;\n start = start + userAgent.substring(start).indexOf(\"/\") + 1;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent.substring(start, end + start).replace(\"_\", \".\");\n } else if (/Safari/.test(userAgent)) {\n detectedBrowser = \"safari\";\n let start = userAgent.indexOf(\"Version/\");\n start = start + userAgent.substring(start).indexOf(\"/\") + 1;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent.substring(start, end + start).replace(\"_\", \".\");\n }\n\n return { detectedBrowser, versionBrowser };\n }\n\n /**\n * Returns the operating system and its version.\n * @return {array} - detectedOS = Operating System name.\n * versionOS = Operating System version.\n */\n getOS() {\n // default value for OS just in case nothing is detected\n let detectedOS = \"unknown\";\n let versionOS = \"unknown\";\n\n // Retrieve properties to easily detect the OS\n const userAgent = window.navigator.userAgent;\n const platform = window.navigator.platform;\n const macosPlatforms = [\"Macintosh\", \"MacIntel\", \"MacPPC\", \"Mac68K\"];\n const windowsPlatforms = [\"Win32\", \"Win64\", \"Windows\", \"WinCE\"];\n const iosPlatforms = [\"iPhone\", \"iPad\", \"iPod\"];\n\n // Find OS and their respective versions\n if (macosPlatforms.indexOf(platform) !== -1) {\n detectedOS = \"macos\";\n if (userAgent.indexOf(\"OS X\") !== -1) {\n const start = userAgent.indexOf(\"OS X\") + 5;\n const end = userAgent.substring(start).indexOf(\" \");\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n }\n } else if (iosPlatforms.indexOf(platform) !== -1) {\n detectedOS = \"ios\";\n if (userAgent.indexOf(\"OS \") !== -1) {\n const start = userAgent.indexOf(\"OS \") + 3;\n const end = userAgent.substring(start).indexOf(\")\");\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n }\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\n detectedOS = \"windows\";\n const start = userAgent.indexOf(\"Windows\");\n let end = userAgent.substring(start).indexOf(\";\");\n if (end === -1) {\n end = userAgent.substring(start).indexOf(\")\");\n }\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Android/.test(userAgent)) {\n detectedOS = \"android\";\n const start = userAgent.indexOf(\"Android\");\n let end = userAgent.substring(start).indexOf(\";\");\n if (end === -1) {\n end = userAgent.substring(start).indexOf(\")\");\n }\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/CrOS/.test(userAgent)) {\n detectedOS = \"chromeos\";\n let start = userAgent.indexOf(\"CrOS \") + 5;\n start += userAgent.substring(start).indexOf(\" \");\n const end = userAgent.substring(start).indexOf(\")\");\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (detectedOS === \"unknown\" && /Linux/.test(platform)) {\n detectedOS = \"linux\";\n }\n\n return { detectedOS, versionOS };\n }\n\n /**\n * Returns the absolute path of the integration script.\n * @return {string} - Absolute path for the integration script.\n */\n getPath() {\n if (typeof this.scriptName === \"undefined\") {\n throw new Error(\"scriptName property needed for getPath.\");\n }\n const col = document.getElementsByTagName(\"script\");\n let path = \"\";\n for (let i = 0; i < col.length; i += 1) {\n const j = col[i].src.lastIndexOf(this.scriptName);\n if (j >= 0) {\n path = col[i].src.substr(0, j - 1);\n }\n }\n return path;\n }\n\n /**\n * Returns integration model plugin version\n * @param {string} - Plugin version\n */\n getVersion() {\n return this.version;\n }\n\n /**\n * Sets the language property.\n * @param {string} language - language code.\n */\n setLanguage(language) {\n this.language = language;\n }\n\n /**\n * Sets a Core instance.\n * @param {Core} core - instance of Core class.\n */\n setCore(core) {\n this.core = core;\n core.setIntegrationModel(this);\n }\n\n /**\n * Returns the Core instance.\n * @returns {Core} instance of Core class.\n */\n getCore() {\n return this.core;\n }\n\n /**\n * Sets the object target and updates the iframe property.\n * @param {HTMLElement} target - target object.\n */\n setTarget(target) {\n this.target = target;\n this.isIframe = this.target.tagName.toUpperCase() === \"IFRAME\";\n }\n\n /**\n * Sets the editor object.\n * @param {Object} editorObject - The editor object.\n */\n setEditorObject(editorObject) {\n this.editorObject = editorObject;\n }\n\n /**\n * Opens formula editor to editing a new formula. Can be overwritten in order to make some\n * actions from integration part before the formula is edited.\n */\n openNewFormulaEditor() {\n if (window.navigator.onLine) {\n this.core.editionProperties.dbclick = false;\n this.core.editionProperties.isNewElement = true;\n this.core.openModalDialog(this.target, this.isIframe);\n } else {\n const modal = document.getElementById(\"wrs_modal_offline\");\n modal.style.display = \"block\";\n }\n }\n\n /**\n * Opens formula editor to editing an existing formula. Can be overwritten in order to make some\n * actions from integration part before the formula is edited.\n */\n openExistingFormulaEditor() {\n // Recover owner integration instance.\n WirisPlugin.currentInstance = this;\n\n if (window.navigator.onLine) {\n this.core.editionProperties.isNewElement = false;\n this.core.openModalDialog(this.target, this.isIframe);\n } else {\n const modal = document.getElementById(\"wrs_modal_offline\");\n modal.style.display = \"block\";\n }\n }\n\n /**\n * Wrapper to Core.updateFormula method.\n * Transform a MathML into a image formula.\n * Then the image formula is inserted in the specified target, creating a new image (new formula)\n * or updating an existing one.\n * @param {string} mathml - MathML to generate the formula.\n * @param {string} editMode - Edit Mode (LaTeX or images).\n */\n updateFormula(mathml) {\n if (this.editorParameters) {\n mathml = com.wiris.editor.util.EditorUtils.addAnnotation(\n mathml,\n \"application/vnd.wiris.mtweb-params+json\",\n JSON.stringify(this.editorParameters),\n );\n }\n let focusElement;\n let windowTarget;\n const wirisProperties = null;\n\n if (this.isIframe) {\n focusElement = this.target.contentWindow;\n windowTarget = this.target.contentWindow;\n } else {\n focusElement = this.target;\n windowTarget = window;\n }\n\n let obj = this.core.beforeUpdateFormula(mathml, wirisProperties);\n\n if (!obj) {\n return \"\";\n }\n\n obj = this.insertFormula(focusElement, windowTarget, obj.mathml, obj.wirisProperties);\n\n if (!obj) {\n return \"\";\n }\n\n return this.core.afterUpdateFormula(obj.focusElement, obj.windowTarget, obj.node, obj.latex);\n }\n\n /**\n * Wrapper to Core.insertFormula method.\n * Inserts the formula in the specified target, creating\n * a new image (new formula) or updating an existing one.\n * @param {string} mathml - MathML to generate the formula.\n * @param {string} editMode - Edit Mode (LaTeX or images).\n * @returns {ReturnObject} - Object with the information of the node or latex to insert.\n */\n insertFormula(focusElement, windowTarget, mathml, wirisProperties) {\n const obj = this.core.insertFormula(focusElement, windowTarget, mathml, wirisProperties);\n\n // Delete temporal image when inserted\n this.core.editionProperties.temporalImage = null;\n\n return obj;\n }\n\n /**\n * Returns the target selection.\n * @returns {Selection} target selection.\n */\n getSelection() {\n if (this.isIframe) {\n this.target.contentWindow.focus();\n return this.target.contentWindow.getSelection();\n }\n this.target.focus();\n return window.getSelection();\n }\n\n /**\n * Add events to formulas in the DOM target. The events added are the following:\n * - doubleClickHandler: handles Double-click event on formulas by opening an editor\n * to edit them.\n * - mouseDownHandler: handles mouse down event on formulas by saving the size of the formula\n * in case the the formula is resized.\n * - mouseUpHandler: handles mouse up event on formulas by restoring the saved formula size\n * in case the formula is resized.\n */\n addEvents() {\n const eventTarget = this.isIframe ? this.target.contentWindow.document : this.target;\n Util.addElementEvents(\n eventTarget,\n (element, event) => {\n this.doubleClickHandler(element, event);\n // Avoid creating the double click listener more than once for each element.\n // This also allows CKEditor4 to add their own double click listener.\n event.preventDefault();\n },\n (element, event) => {\n this.mousedownHandler(element, event);\n },\n (element, event) => {\n this.mouseupHandler(element, event);\n },\n );\n }\n\n /**\n * Remove events to formulas in the DOM target.\n */\n removeEvents() {\n const eventTarget =\n this.isIframe && this.target.contentWindow?.document ? this.target.contentWindow.document : this.target;\n\n if (!eventTarget) {\n return;\n }\n\n Util.removeElementEvents(eventTarget);\n }\n\n /**\n * Remove events, modals and set this.editorObject to null in order to prevent memory leaks.\n */\n destroy() {\n this.removeEvents();\n // Destroy modal dialog if exists.\n if (this.core.modalDialog) {\n this.core.modalDialog.destroy();\n }\n\n // Remove offline modal dialog if exists.\n if (this.offlineModal) {\n this.offlineModal.remove();\n }\n\n this.editorObject = null;\n }\n\n /**\n * Handles a Double-click on the target element. Opens an editor\n * to re-edit the double-clicked formula.\n * @param {HTMLElement} element - DOM object target.\n */\n doubleClickHandler(element) {\n this.core.editionProperties.dbclick = true;\n if (element.nodeName.toLowerCase() === \"img\") {\n this.core.getCustomEditors().disable();\n const customEditorAttributeName = Configuration.get(\"imageCustomEditorName\");\n if (element.hasAttribute(customEditorAttributeName)) {\n const customEditor = element.getAttribute(customEditorAttributeName);\n this.core.getCustomEditors().enable(customEditor);\n }\n if (Util.containsClass(element, Configuration.get(\"imageClassName\"))) {\n this.core.editionProperties.temporalImage = element;\n this.core.editionProperties.isNewElement = true;\n this.openExistingFormulaEditor();\n }\n }\n }\n\n /**\n * Handles a mouse up event on the target element. Restores the image size to avoid\n * resizing formulas.\n */\n mouseupHandler() {\n if (this.temporalImageResizing) {\n setTimeout(() => {\n Image.fixAfterResize(this.temporalImageResizing);\n }, 10);\n }\n }\n\n /**\n * Handles a mouse down event on the target element. Saves the formula size to avoid\n * resizing formulas.\n * @param {HTMLElement} element - target element.\n */\n mousedownHandler(element) {\n if (element.nodeName.toLowerCase() === \"img\") {\n if (Util.containsClass(element, Configuration.get(\"imageClassName\"))) {\n this.temporalImageResizing = element;\n }\n }\n }\n\n /**\n * Returns the integration language. By default the browser agent. This method\n * should be overwritten to obtain the integration language, for example using the\n * plugin API of an HTML editor.\n * @returns {string} integration language.\n */\n getLanguage() {\n return this.getBrowserLanguage();\n }\n\n /**\n * Returns the browser language.\n * @returns {string} the browser language.\n */\n // eslint-disable-next-line class-methods-use-this\n getBrowserLanguage() {\n let language = \"en\";\n if (navigator.userLanguage) {\n language = navigator.userLanguage.substring(0, 2);\n } else if (navigator.language) {\n language = navigator.language.substring(0, 2);\n } else {\n language = \"en\";\n }\n return language;\n }\n\n /**\n * This function is called once the {@link Core} is loaded. IntegrationModel class\n * will fire this method when {@link Core} 'onLoad' event is fired.\n * This method should content all the logic to init\n * the integration.\n */\n callbackFunction() {\n // It's needed to wait until the integration target is ready. The event is fired\n // from the integration side.\n const listener = Listeners.newListener(\"onTargetReady\", () => {\n this.addEvents(this.target);\n });\n this.listeners.add(listener);\n }\n\n /**\n * Function called when the content submits an action.\n */\n // eslint-disable-next-line class-methods-use-this\n notifyWindowClosed() {\n // Nothing.\n }\n\n /**\n * Wrapper.\n * Extracts mathml of a determined text node. This function is used as a wrapper inside core.js\n * in order to get mathml from a text node that can contain normal LaTeX or other chosen text.\n * @param {string} textNode - text node to extract the MathML.\n * @param {int} caretPosition - caret position inside the text node.\n * @returns {string} MathML inside the text node.\n */\n\n // eslint-disable-next-line class-methods-use-this, no-unused-vars\n getMathmlFromTextNode(textNode, caretPosition) {}\n\n /**\n * Wrapper\n * It fills wrs event object of nonLatex with the desired data.\n * @param {Object} event - event object.\n * @param {Object} window dom window object.\n * @param {string} mathml valid mathml.\n */\n // eslint-disable-next-line class-methods-use-this, no-unused-vars\n fillNonLatexNode(event, window, mathml) {}\n\n /**\n Wrapper.\n * Returns selected item from the target.\n * @param {HTMLElement} target - target element\n * @param {boolean} iframe\n */\n // eslint-disable-next-line class-methods-use-this, no-unused-vars\n getSelectedItem(target, isIframe) {}\n\n // Set temporal image to null and make focus come back.\n static setActionsOnCancelButtons() {\n // Make focus come back on the previous place it was when click cancel button\n const currentInstance = WirisPlugin.currentInstance;\n const editorSelection = currentInstance.getSelection();\n editorSelection.removeAllRanges();\n\n if (currentInstance.core.editionProperties.range) {\n const { range } = currentInstance.core.editionProperties;\n currentInstance.core.editionProperties.range = null;\n editorSelection.addRange(range);\n if (range.startOffset !== range.endOffset) {\n currentInstance.core.placeCaretAfterNode(currentInstance.core.editionProperties.temporalImage);\n }\n }\n\n // eslint-disable-next-line no-undef\n if (WirisPlugin.currentInstance) {\n WirisPlugin.currentInstance.core.editionProperties.temporalImage = null; // eslint-disable-line\n }\n }\n}\n\n// To know if the integration that extends this class implements\n// wrapper methods, they are set as undefined.\nIntegrationModel.prototype.getMathmlFromTextNode = undefined;\nIntegrationModel.prototype.fillNonLatexNode = undefined;\nIntegrationModel.prototype.getSelectedItem = undefined;\n\n/**\n * An object containing a list with the overwritable class constructor properties.\n * @type {Object}\n */\nIntegrationModel.integrationParameters = [\"serviceProviderProperties\", \"editorParameters\"];\n","/* eslint-disable */\nvar md5;\nexport default md5;\n\n(function () {\n var HxOverrides = function () {};\n HxOverrides.__name__ = true;\n HxOverrides.dateStr = function (date) {\n var m = date.getMonth() + 1;\n var d = date.getDate();\n var h = date.getHours();\n var mi = date.getMinutes();\n var s = date.getSeconds();\n return (\n date.getFullYear() +\n \"-\" +\n (m < 10 ? \"0\" + m : \"\" + m) +\n \"-\" +\n (d < 10 ? \"0\" + d : \"\" + d) +\n \" \" +\n (h < 10 ? \"0\" + h : \"\" + h) +\n \":\" +\n (mi < 10 ? \"0\" + mi : \"\" + mi) +\n \":\" +\n (s < 10 ? \"0\" + s : \"\" + s)\n );\n };\n HxOverrides.strDate = function (s) {\n switch (s.length) {\n case 8:\n var k = s.split(\":\");\n var d = new Date();\n d.setTime(0);\n d.setUTCHours(k[0]);\n d.setUTCMinutes(k[1]);\n d.setUTCSeconds(k[2]);\n return d;\n case 10:\n var k = s.split(\"-\");\n return new Date(k[0], k[1] - 1, k[2], 0, 0, 0);\n case 19:\n var k = s.split(\" \");\n var y = k[0].split(\"-\");\n var t = k[1].split(\":\");\n return new Date(y[0], y[1] - 1, y[2], t[0], t[1], t[2]);\n default:\n throw \"Invalid date format : \" + s;\n }\n };\n HxOverrides.cca = function (s, index) {\n var x = s.charCodeAt(index);\n if (x != x) return undefined;\n return x;\n };\n HxOverrides.substr = function (s, pos, len) {\n if (pos != null && pos != 0 && len != null && len < 0) return \"\";\n if (len == null) len = s.length;\n if (pos < 0) {\n pos = s.length + pos;\n if (pos < 0) pos = 0;\n } else if (len < 0) len = s.length + len - pos;\n return s.substr(pos, len);\n };\n HxOverrides.remove = function (a, obj) {\n var i = 0;\n var l = a.length;\n while (i < l) {\n if (a[i] == obj) {\n a.splice(i, 1);\n return true;\n }\n i++;\n }\n return false;\n };\n HxOverrides.iter = function (a) {\n return {\n cur: 0,\n arr: a,\n hasNext: function () {\n return this.cur < this.arr.length;\n },\n next: function () {\n return this.arr[this.cur++];\n },\n };\n };\n var IntIter = function (min, max) {\n this.min = min;\n this.max = max;\n };\n IntIter.__name__ = true;\n IntIter.prototype = {\n next: function () {\n return this.min++;\n },\n hasNext: function () {\n return this.min < this.max;\n },\n __class__: IntIter,\n };\n var Std = function () {};\n Std.__name__ = true;\n Std[\"is\"] = function (v, t) {\n return js.Boot.__instanceof(v, t);\n };\n Std.string = function (s) {\n return js.Boot.__string_rec(s, \"\");\n };\n Std[\"int\"] = function (x) {\n return x | 0;\n };\n Std.parseInt = function (x) {\n var v = parseInt(x, 10);\n if (v == 0 && (HxOverrides.cca(x, 1) == 120 || HxOverrides.cca(x, 1) == 88)) v = parseInt(x);\n if (isNaN(v)) return null;\n return v;\n };\n Std.parseFloat = function (x) {\n return parseFloat(x);\n };\n Std.random = function (x) {\n return Math.floor(Math.random() * x);\n };\n var com = com || {};\n if (!com.wiris) com.wiris = {};\n if (!com.wiris.js) com.wiris.js = {};\n com.wiris.js.JsPluginTools = function () {\n this.tryReady();\n };\n com.wiris.js.JsPluginTools.__name__ = true;\n com.wiris.js.JsPluginTools.main = function () {\n var ev;\n ev = com.wiris.js.JsPluginTools.getInstance();\n haxe.Timer.delay($bind(ev, ev.tryReady), 100);\n };\n com.wiris.js.JsPluginTools.getInstance = function () {\n if (com.wiris.js.JsPluginTools.instance == null)\n com.wiris.js.JsPluginTools.instance = new com.wiris.js.JsPluginTools();\n return com.wiris.js.JsPluginTools.instance;\n };\n com.wiris.js.JsPluginTools.bypassEncapsulation = function () {\n if (window.com == null) window.com = {};\n if (window.com.wiris == null) window.com.wiris = {};\n if (window.com.wiris.js == null) window.com.wiris.js = {};\n if (window.com.wiris.js.JsPluginTools == null)\n window.com.wiris.js.JsPluginTools = com.wiris.js.JsPluginTools.getInstance();\n };\n com.wiris.js.JsPluginTools.prototype = {\n md5encode: function (content) {\n return haxe.Md5.encode(content);\n },\n doLoad: function () {\n this.ready = true;\n com.wiris.js.JsPluginTools.instance = this;\n com.wiris.js.JsPluginTools.bypassEncapsulation();\n },\n tryReady: function () {\n this.ready = false;\n if (js.Lib.document.readyState) {\n this.doLoad();\n this.ready = true;\n }\n if (!this.ready) haxe.Timer.delay($bind(this, this.tryReady), 100);\n },\n __class__: com.wiris.js.JsPluginTools,\n };\n var haxe = haxe || {};\n haxe.Log = function () {};\n haxe.Log.__name__ = true;\n haxe.Log.trace = function (v, infos) {\n js.Boot.__trace(v, infos);\n };\n haxe.Log.clear = function () {\n js.Boot.__clear_trace();\n };\n haxe.Md5 = function () {};\n haxe.Md5.__name__ = true;\n haxe.Md5.encode = function (s) {\n return new haxe.Md5().doEncode(s);\n };\n haxe.Md5.prototype = {\n doEncode: function (str) {\n var x = this.str2blks(str);\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n var step;\n var i = 0;\n while (i < x.length) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n step = 0;\n a = this.ff(a, b, c, d, x[i], 7, -680876936);\n d = this.ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = this.ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = this.ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = this.ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = this.ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = this.ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = this.ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = this.ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = this.ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = this.ff(c, d, a, b, x[i + 10], 17, -42063);\n b = this.ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = this.ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = this.ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = this.ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = this.ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = this.gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = this.gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = this.gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = this.gg(b, c, d, a, x[i], 20, -373897302);\n a = this.gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = this.gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = this.gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = this.gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = this.gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = this.gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = this.gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = this.gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = this.gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = this.gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = this.gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = this.gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = this.hh(a, b, c, d, x[i + 5], 4, -378558);\n d = this.hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = this.hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = this.hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = this.hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = this.hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = this.hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = this.hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = this.hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = this.hh(d, a, b, c, x[i], 11, -358537222);\n c = this.hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = this.hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = this.hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = this.hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = this.hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = this.hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = this.ii(a, b, c, d, x[i], 6, -198630844);\n d = this.ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = this.ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = this.ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = this.ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = this.ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = this.ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = this.ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = this.ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = this.ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = this.ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = this.ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = this.ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = this.ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = this.ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = this.ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = this.addme(a, olda);\n b = this.addme(b, oldb);\n c = this.addme(c, oldc);\n d = this.addme(d, oldd);\n i += 16;\n }\n return this.rhex(a) + this.rhex(b) + this.rhex(c) + this.rhex(d);\n },\n ii: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(c, this.bitOR(b, ~d)), a, b, x, s, t);\n },\n hh: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(this.bitXOR(b, c), d), a, b, x, s, t);\n },\n gg: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, d), this.bitAND(c, ~d)), a, b, x, s, t);\n },\n ff: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, c), this.bitAND(~b, d)), a, b, x, s, t);\n },\n cmn: function (q, a, b, x, s, t) {\n return this.addme(this.rol(this.addme(this.addme(a, q), this.addme(x, t)), s), b);\n },\n rol: function (num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n },\n str2blks: function (str) {\n var nblk = ((str.length + 8) >> 6) + 1;\n var blks = new Array();\n var _g1 = 0,\n _g = nblk * 16;\n while (_g1 < _g) {\n var i = _g1++;\n blks[i] = 0;\n }\n var i = 0;\n while (i < str.length) {\n blks[i >> 2] |= HxOverrides.cca(str, i) << (((str.length * 8 + i) % 4) * 8);\n i++;\n }\n blks[i >> 2] |= 128 << (((str.length * 8 + i) % 4) * 8);\n var l = str.length * 8;\n var k = nblk * 16 - 2;\n blks[k] = l & 255;\n blks[k] |= ((l >>> 8) & 255) << 8;\n blks[k] |= ((l >>> 16) & 255) << 16;\n blks[k] |= ((l >>> 24) & 255) << 24;\n return blks;\n },\n rhex: function (num) {\n var str = \"\";\n var hex_chr = \"0123456789abcdef\";\n var _g = 0;\n while (_g < 4) {\n var j = _g++;\n str += hex_chr.charAt((num >> (j * 8 + 4)) & 15) + hex_chr.charAt((num >> (j * 8)) & 15);\n }\n return str;\n },\n addme: function (x, y) {\n var lsw = (x & 65535) + (y & 65535);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 65535);\n },\n bitAND: function (a, b) {\n var lsb = a & 1 & (b & 1);\n var msb31 = (a >>> 1) & (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitXOR: function (a, b) {\n var lsb = (a & 1) ^ (b & 1);\n var msb31 = (a >>> 1) ^ (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitOR: function (a, b) {\n var lsb = (a & 1) | (b & 1);\n var msb31 = (a >>> 1) | (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n __class__: haxe.Md5,\n };\n haxe.Timer = function (time_ms) {\n var me = this;\n this.id = window.setInterval(function () {\n me.run();\n }, time_ms);\n };\n haxe.Timer.__name__ = true;\n haxe.Timer.delay = function (f, time_ms) {\n var t = new haxe.Timer(time_ms);\n t.run = function () {\n t.stop();\n f();\n };\n return t;\n };\n haxe.Timer.measure = function (f, pos) {\n var t0 = haxe.Timer.stamp();\n var r = f();\n haxe.Log.trace(haxe.Timer.stamp() - t0 + \"s\", pos);\n return r;\n };\n haxe.Timer.stamp = function () {\n return new Date().getTime() / 1000;\n };\n haxe.Timer.prototype = {\n run: function () {},\n stop: function () {\n if (this.id == null) return;\n window.clearInterval(this.id);\n this.id = null;\n },\n __class__: haxe.Timer,\n };\n var js = js || {};\n js.Boot = function () {};\n js.Boot.__name__ = true;\n js.Boot.__unhtml = function (s) {\n return s.split(\"&\").join(\"&amp;\").split(\"<\").join(\"&lt;\").split(\">\").join(\"&gt;\");\n };\n js.Boot.__trace = function (v, i) {\n var msg = i != null ? i.fileName + \":\" + i.lineNumber + \": \" : \"\";\n msg += js.Boot.__string_rec(v, \"\");\n var d;\n if (typeof document != \"undefined\" && (d = document.getElementById(\"haxe:trace\")) != null)\n d.innerHTML += js.Boot.__unhtml(msg) + \"<br/>\";\n else if (typeof console != \"undefined\" && console.log != null) console.log(msg);\n };\n js.Boot.__clear_trace = function () {\n var d = document.getElementById(\"haxe:trace\");\n if (d != null) d.innerHTML = \"\";\n };\n js.Boot.isClass = function (o) {\n return o.__name__;\n };\n js.Boot.isEnum = function (e) {\n return e.__ename__;\n };\n js.Boot.getClass = function (o) {\n return o.__class__;\n };\n js.Boot.__string_rec = function (o, s) {\n if (o == null) return \"null\";\n if (s.length >= 5) return \"<...>\";\n var t = typeof o;\n if (t == \"function\" && (o.__name__ || o.__ename__)) t = \"object\";\n switch (t) {\n case \"object\":\n if (o instanceof Array) {\n if (o.__enum__) {\n if (o.length == 2) return o[0];\n var str = o[0] + \"(\";\n s += \"\\t\";\n var _g1 = 2,\n _g = o.length;\n while (_g1 < _g) {\n var i = _g1++;\n if (i != 2) str += \",\" + js.Boot.__string_rec(o[i], s);\n else str += js.Boot.__string_rec(o[i], s);\n }\n return str + \")\";\n }\n var l = o.length;\n var i;\n var str = \"[\";\n s += \"\\t\";\n var _g = 0;\n while (_g < l) {\n var i1 = _g++;\n str += (i1 > 0 ? \",\" : \"\") + js.Boot.__string_rec(o[i1], s);\n }\n str += \"]\";\n return str;\n }\n var tostr;\n try {\n tostr = o.toString;\n } catch (e) {\n return \"???\";\n }\n if (tostr != null && tostr != Object.toString) {\n var s2 = o.toString();\n if (s2 != \"[object Object]\") return s2;\n }\n var k = null;\n var str = \"{\\n\";\n s += \"\\t\";\n var hasp = o.hasOwnProperty != null;\n for (var k in o) {\n if (hasp && !o.hasOwnProperty(k)) {\n continue;\n }\n if (\n k == \"prototype\" ||\n k == \"__class__\" ||\n k == \"__super__\" ||\n k == \"__interfaces__\" ||\n k == \"__properties__\"\n ) {\n continue;\n }\n if (str.length != 2) str += \", \\n\";\n str += s + k + \" : \" + js.Boot.__string_rec(o[k], s);\n }\n s = s.substring(1);\n str += \"\\n\" + s + \"}\";\n return str;\n case \"function\":\n return \"<function>\";\n case \"string\":\n return o;\n default:\n return String(o);\n }\n };\n js.Boot.__interfLoop = function (cc, cl) {\n if (cc == null) return false;\n if (cc == cl) return true;\n var intf = cc.__interfaces__;\n if (intf != null) {\n var _g1 = 0,\n _g = intf.length;\n while (_g1 < _g) {\n var i = _g1++;\n var i1 = intf[i];\n if (i1 == cl || js.Boot.__interfLoop(i1, cl)) return true;\n }\n }\n return js.Boot.__interfLoop(cc.__super__, cl);\n };\n js.Boot.__instanceof = function (o, cl) {\n try {\n if (o instanceof cl) {\n if (cl == Array) return o.__enum__ == null;\n return true;\n }\n if (js.Boot.__interfLoop(o.__class__, cl)) return true;\n } catch (e) {\n if (cl == null) return false;\n }\n switch (cl) {\n case Int:\n return Math.ceil(o % 2147483648.0) === o;\n case Float:\n return typeof o == \"number\";\n case Bool:\n return o === true || o === false;\n case String:\n return typeof o == \"string\";\n case Dynamic:\n return true;\n default:\n if (o == null) return false;\n if (cl == Class && o.__name__ != null) return true;\n else null;\n if (cl == Enum && o.__ename__ != null) return true;\n else null;\n return o.__enum__ == cl;\n }\n };\n js.Boot.__cast = function (o, t) {\n if (js.Boot.__instanceof(o, t)) return o;\n else throw \"Cannot cast \" + Std.string(o) + \" to \" + Std.string(t);\n };\n js.Lib = function () {};\n js.Lib.__name__ = true;\n js.Lib.debug = function () {\n debugger;\n };\n js.Lib.alert = function (v) {\n alert(js.Boot.__string_rec(v, \"\"));\n };\n js.Lib.eval = function (code) {\n return eval(code);\n };\n js.Lib.setErrorHandler = function (f) {\n js.Lib.onerror = f;\n };\n var $_;\n function $bind(o, m) {\n var f = function () {\n return f.method.apply(f.scope, arguments);\n };\n f.scope = o;\n f.method = m;\n return f;\n }\n if (Array.prototype.indexOf)\n HxOverrides.remove = function (a, o) {\n var i = a.indexOf(o);\n if (i == -1) return false;\n a.splice(i, 1);\n return true;\n };\n else null;\n Math.__name__ = [\"Math\"];\n Math.NaN = Number.NaN;\n Math.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY;\n Math.POSITIVE_INFINITY = Number.POSITIVE_INFINITY;\n Math.isFinite = function (i) {\n return isFinite(i);\n };\n Math.isNaN = function (i) {\n return isNaN(i);\n };\n String.prototype.__class__ = String;\n String.__name__ = true;\n Array.prototype.__class__ = Array;\n Array.__name__ = true;\n Date.prototype.__class__ = Date;\n Date.__name__ = [\"Date\"];\n var Int = { __name__: [\"Int\"] };\n var Dynamic = { __name__: [\"Dynamic\"] };\n var Float = Number;\n Float.__name__ = [\"Float\"];\n var Bool = Boolean;\n Bool.__ename__ = [\"Bool\"];\n var Class = { __name__: [\"Class\"] };\n var Enum = {};\n var Void = { __ename__: [\"Void\"] };\n if (typeof document != \"undefined\") js.Lib.document = document;\n if (typeof window != \"undefined\") {\n js.Lib.window = window;\n js.Lib.window.onerror = function (msg, url, line) {\n var f = js.Lib.onerror;\n if (f == null) return false;\n return f(msg, [url + \":\" + line]);\n };\n }\n com.wiris.js.JsPluginTools.main();\n delete Array.prototype.__class__;\n})();\n\n(function () {\n var HxOverrides = function () {};\n HxOverrides.__name__ = true;\n HxOverrides.dateStr = function (date) {\n var m = date.getMonth() + 1;\n var d = date.getDate();\n var h = date.getHours();\n var mi = date.getMinutes();\n var s = date.getSeconds();\n return (\n date.getFullYear() +\n \"-\" +\n (m < 10 ? \"0\" + m : \"\" + m) +\n \"-\" +\n (d < 10 ? \"0\" + d : \"\" + d) +\n \" \" +\n (h < 10 ? \"0\" + h : \"\" + h) +\n \":\" +\n (mi < 10 ? \"0\" + mi : \"\" + mi) +\n \":\" +\n (s < 10 ? \"0\" + s : \"\" + s)\n );\n };\n HxOverrides.strDate = function (s) {\n switch (s.length) {\n case 8:\n var k = s.split(\":\");\n var d = new Date();\n d.setTime(0);\n d.setUTCHours(k[0]);\n d.setUTCMinutes(k[1]);\n d.setUTCSeconds(k[2]);\n return d;\n case 10:\n var k = s.split(\"-\");\n return new Date(k[0], k[1] - 1, k[2], 0, 0, 0);\n case 19:\n var k = s.split(\" \");\n var y = k[0].split(\"-\");\n var t = k[1].split(\":\");\n return new Date(y[0], y[1] - 1, y[2], t[0], t[1], t[2]);\n default:\n throw \"Invalid date format : \" + s;\n }\n };\n HxOverrides.cca = function (s, index) {\n var x = s.charCodeAt(index);\n if (x != x) return undefined;\n return x;\n };\n HxOverrides.substr = function (s, pos, len) {\n if (pos != null && pos != 0 && len != null && len < 0) return \"\";\n if (len == null) len = s.length;\n if (pos < 0) {\n pos = s.length + pos;\n if (pos < 0) pos = 0;\n } else if (len < 0) len = s.length + len - pos;\n return s.substr(pos, len);\n };\n HxOverrides.remove = function (a, obj) {\n var i = 0;\n var l = a.length;\n while (i < l) {\n if (a[i] == obj) {\n a.splice(i, 1);\n return true;\n }\n i++;\n }\n return false;\n };\n HxOverrides.iter = function (a) {\n return {\n cur: 0,\n arr: a,\n hasNext: function () {\n return this.cur < this.arr.length;\n },\n next: function () {\n return this.arr[this.cur++];\n },\n };\n };\n var IntIter = function (min, max) {\n this.min = min;\n this.max = max;\n };\n IntIter.__name__ = true;\n IntIter.prototype = {\n next: function () {\n return this.min++;\n },\n hasNext: function () {\n return this.min < this.max;\n },\n __class__: IntIter,\n };\n var Std = function () {};\n Std.__name__ = true;\n Std[\"is\"] = function (v, t) {\n return js.Boot.__instanceof(v, t);\n };\n Std.string = function (s) {\n return js.Boot.__string_rec(s, \"\");\n };\n Std[\"int\"] = function (x) {\n return x | 0;\n };\n Std.parseInt = function (x) {\n var v = parseInt(x, 10);\n if (v == 0 && (HxOverrides.cca(x, 1) == 120 || HxOverrides.cca(x, 1) == 88)) v = parseInt(x);\n if (isNaN(v)) return null;\n return v;\n };\n Std.parseFloat = function (x) {\n return parseFloat(x);\n };\n Std.random = function (x) {\n return Math.floor(Math.random() * x);\n };\n var com = com || {};\n if (!com.wiris) com.wiris = {};\n if (!com.wiris.js) com.wiris.js = {};\n com.wiris.js.JsPluginTools = function () {\n this.tryReady();\n };\n com.wiris.js.JsPluginTools.__name__ = true;\n com.wiris.js.JsPluginTools.main = function () {\n var ev;\n ev = com.wiris.js.JsPluginTools.getInstance();\n haxe.Timer.delay($bind(ev, ev.tryReady), 100);\n };\n com.wiris.js.JsPluginTools.getInstance = function () {\n if (com.wiris.js.JsPluginTools.instance == null)\n com.wiris.js.JsPluginTools.instance = new com.wiris.js.JsPluginTools();\n return com.wiris.js.JsPluginTools.instance;\n };\n com.wiris.js.JsPluginTools.bypassEncapsulation = function () {\n if (window.com == null) window.com = {};\n if (window.com.wiris == null) window.com.wiris = {};\n if (window.com.wiris.js == null) window.com.wiris.js = {};\n if (window.com.wiris.js.JsPluginTools == null)\n window.com.wiris.js.JsPluginTools = com.wiris.js.JsPluginTools.getInstance();\n };\n com.wiris.js.JsPluginTools.prototype = {\n md5encode: function (content) {\n return haxe.Md5.encode(content);\n },\n doLoad: function () {\n this.ready = true;\n com.wiris.js.JsPluginTools.instance = this;\n com.wiris.js.JsPluginTools.bypassEncapsulation();\n },\n tryReady: function () {\n this.ready = false;\n if (js.Lib.document.readyState) {\n this.doLoad();\n this.ready = true;\n }\n if (!this.ready) haxe.Timer.delay($bind(this, this.tryReady), 100);\n },\n __class__: com.wiris.js.JsPluginTools,\n };\n var haxe = haxe || {};\n haxe.Log = function () {};\n haxe.Log.__name__ = true;\n haxe.Log.trace = function (v, infos) {\n js.Boot.__trace(v, infos);\n };\n haxe.Log.clear = function () {\n js.Boot.__clear_trace();\n };\n haxe.Md5 = function () {};\n haxe.Md5.__name__ = true;\n haxe.Md5.encode = function (s) {\n return new haxe.Md5().doEncode(s);\n };\n haxe.Md5.prototype = {\n doEncode: function (str) {\n var x = this.str2blks(str);\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n var step;\n var i = 0;\n while (i < x.length) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n step = 0;\n a = this.ff(a, b, c, d, x[i], 7, -680876936);\n d = this.ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = this.ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = this.ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = this.ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = this.ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = this.ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = this.ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = this.ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = this.ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = this.ff(c, d, a, b, x[i + 10], 17, -42063);\n b = this.ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = this.ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = this.ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = this.ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = this.ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = this.gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = this.gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = this.gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = this.gg(b, c, d, a, x[i], 20, -373897302);\n a = this.gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = this.gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = this.gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = this.gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = this.gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = this.gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = this.gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = this.gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = this.gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = this.gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = this.gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = this.gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = this.hh(a, b, c, d, x[i + 5], 4, -378558);\n d = this.hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = this.hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = this.hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = this.hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = this.hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = this.hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = this.hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = this.hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = this.hh(d, a, b, c, x[i], 11, -358537222);\n c = this.hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = this.hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = this.hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = this.hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = this.hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = this.hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = this.ii(a, b, c, d, x[i], 6, -198630844);\n d = this.ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = this.ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = this.ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = this.ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = this.ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = this.ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = this.ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = this.ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = this.ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = this.ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = this.ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = this.ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = this.ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = this.ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = this.ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = this.addme(a, olda);\n b = this.addme(b, oldb);\n c = this.addme(c, oldc);\n d = this.addme(d, oldd);\n i += 16;\n }\n return this.rhex(a) + this.rhex(b) + this.rhex(c) + this.rhex(d);\n },\n ii: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(c, this.bitOR(b, ~d)), a, b, x, s, t);\n },\n hh: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(this.bitXOR(b, c), d), a, b, x, s, t);\n },\n gg: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, d), this.bitAND(c, ~d)), a, b, x, s, t);\n },\n ff: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, c), this.bitAND(~b, d)), a, b, x, s, t);\n },\n cmn: function (q, a, b, x, s, t) {\n return this.addme(this.rol(this.addme(this.addme(a, q), this.addme(x, t)), s), b);\n },\n rol: function (num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n },\n str2blks: function (str) {\n var nblk = ((str.length + 8) >> 6) + 1;\n var blks = new Array();\n var _g1 = 0,\n _g = nblk * 16;\n while (_g1 < _g) {\n var i = _g1++;\n blks[i] = 0;\n }\n var i = 0;\n while (i < str.length) {\n blks[i >> 2] |= HxOverrides.cca(str, i) << (((str.length * 8 + i) % 4) * 8);\n i++;\n }\n blks[i >> 2] |= 128 << (((str.length * 8 + i) % 4) * 8);\n var l = str.length * 8;\n var k = nblk * 16 - 2;\n blks[k] = l & 255;\n blks[k] |= ((l >>> 8) & 255) << 8;\n blks[k] |= ((l >>> 16) & 255) << 16;\n blks[k] |= ((l >>> 24) & 255) << 24;\n return blks;\n },\n rhex: function (num) {\n var str = \"\";\n var hex_chr = \"0123456789abcdef\";\n var _g = 0;\n while (_g < 4) {\n var j = _g++;\n str += hex_chr.charAt((num >> (j * 8 + 4)) & 15) + hex_chr.charAt((num >> (j * 8)) & 15);\n }\n return str;\n },\n addme: function (x, y) {\n var lsw = (x & 65535) + (y & 65535);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 65535);\n },\n bitAND: function (a, b) {\n var lsb = a & 1 & (b & 1);\n var msb31 = (a >>> 1) & (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitXOR: function (a, b) {\n var lsb = (a & 1) ^ (b & 1);\n var msb31 = (a >>> 1) ^ (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitOR: function (a, b) {\n var lsb = (a & 1) | (b & 1);\n var msb31 = (a >>> 1) | (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n __class__: haxe.Md5,\n };\n haxe.Timer = function (time_ms) {\n var me = this;\n this.id = window.setInterval(function () {\n me.run();\n }, time_ms);\n };\n haxe.Timer.__name__ = true;\n haxe.Timer.delay = function (f, time_ms) {\n var t = new haxe.Timer(time_ms);\n t.run = function () {\n t.stop();\n f();\n };\n return t;\n };\n haxe.Timer.measure = function (f, pos) {\n var t0 = haxe.Timer.stamp();\n var r = f();\n haxe.Log.trace(haxe.Timer.stamp() - t0 + \"s\", pos);\n return r;\n };\n haxe.Timer.stamp = function () {\n return new Date().getTime() / 1000;\n };\n haxe.Timer.prototype = {\n run: function () {},\n stop: function () {\n if (this.id == null) return;\n window.clearInterval(this.id);\n this.id = null;\n },\n __class__: haxe.Timer,\n };\n var js = js || {};\n js.Boot = function () {};\n js.Boot.__name__ = true;\n js.Boot.__unhtml = function (s) {\n return s.split(\"&\").join(\"&amp;\").split(\"<\").join(\"&lt;\").split(\">\").join(\"&gt;\");\n };\n js.Boot.__trace = function (v, i) {\n var msg = i != null ? i.fileName + \":\" + i.lineNumber + \": \" : \"\";\n msg += js.Boot.__string_rec(v, \"\");\n var d;\n if (typeof document != \"undefined\" && (d = document.getElementById(\"haxe:trace\")) != null)\n d.innerHTML += js.Boot.__unhtml(msg) + \"<br/>\";\n else if (typeof console != \"undefined\" && console.log != null) console.log(msg);\n };\n js.Boot.__clear_trace = function () {\n var d = document.getElementById(\"haxe:trace\");\n if (d != null) d.innerHTML = \"\";\n };\n js.Boot.isClass = function (o) {\n return o.__name__;\n };\n js.Boot.isEnum = function (e) {\n return e.__ename__;\n };\n js.Boot.getClass = function (o) {\n return o.__class__;\n };\n js.Boot.__string_rec = function (o, s) {\n if (o == null) return \"null\";\n if (s.length >= 5) return \"<...>\";\n var t = typeof o;\n if (t == \"function\" && (o.__name__ || o.__ename__)) t = \"object\";\n switch (t) {\n case \"object\":\n if (o instanceof Array) {\n if (o.__enum__) {\n if (o.length == 2) return o[0];\n var str = o[0] + \"(\";\n s += \"\\t\";\n var _g1 = 2,\n _g = o.length;\n while (_g1 < _g) {\n var i = _g1++;\n if (i != 2) str += \",\" + js.Boot.__string_rec(o[i], s);\n else str += js.Boot.__string_rec(o[i], s);\n }\n return str + \")\";\n }\n var l = o.length;\n var i;\n var str = \"[\";\n s += \"\\t\";\n var _g = 0;\n while (_g < l) {\n var i1 = _g++;\n str += (i1 > 0 ? \",\" : \"\") + js.Boot.__string_rec(o[i1], s);\n }\n str += \"]\";\n return str;\n }\n var tostr;\n try {\n tostr = o.toString;\n } catch (e) {\n return \"???\";\n }\n if (tostr != null && tostr != Object.toString) {\n var s2 = o.toString();\n if (s2 != \"[object Object]\") return s2;\n }\n var k = null;\n var str = \"{\\n\";\n s += \"\\t\";\n var hasp = o.hasOwnProperty != null;\n for (var k in o) {\n if (hasp && !o.hasOwnProperty(k)) {\n continue;\n }\n if (\n k == \"prototype\" ||\n k == \"__class__\" ||\n k == \"__super__\" ||\n k == \"__interfaces__\" ||\n k == \"__properties__\"\n ) {\n continue;\n }\n if (str.length != 2) str += \", \\n\";\n str += s + k + \" : \" + js.Boot.__string_rec(o[k], s);\n }\n s = s.substring(1);\n str += \"\\n\" + s + \"}\";\n return str;\n case \"function\":\n return \"<function>\";\n case \"string\":\n return o;\n default:\n return String(o);\n }\n };\n js.Boot.__interfLoop = function (cc, cl) {\n if (cc == null) return false;\n if (cc == cl) return true;\n var intf = cc.__interfaces__;\n if (intf != null) {\n var _g1 = 0,\n _g = intf.length;\n while (_g1 < _g) {\n var i = _g1++;\n var i1 = intf[i];\n if (i1 == cl || js.Boot.__interfLoop(i1, cl)) return true;\n }\n }\n return js.Boot.__interfLoop(cc.__super__, cl);\n };\n js.Boot.__instanceof = function (o, cl) {\n try {\n if (o instanceof cl) {\n if (cl == Array) return o.__enum__ == null;\n return true;\n }\n if (js.Boot.__interfLoop(o.__class__, cl)) return true;\n } catch (e) {\n if (cl == null) return false;\n }\n switch (cl) {\n case Int:\n return Math.ceil(o % 2147483648.0) === o;\n case Float:\n return typeof o == \"number\";\n case Bool:\n return o === true || o === false;\n case String:\n return typeof o == \"string\";\n case Dynamic:\n return true;\n default:\n if (o == null) return false;\n if (cl == Class && o.__name__ != null) return true;\n else null;\n if (cl == Enum && o.__ename__ != null) return true;\n else null;\n return o.__enum__ == cl;\n }\n };\n js.Boot.__cast = function (o, t) {\n if (js.Boot.__instanceof(o, t)) return o;\n else throw \"Cannot cast \" + Std.string(o) + \" to \" + Std.string(t);\n };\n js.Lib = function () {};\n js.Lib.__name__ = true;\n js.Lib.debug = function () {\n debugger;\n };\n js.Lib.alert = function (v) {\n alert(js.Boot.__string_rec(v, \"\"));\n };\n js.Lib.eval = function (code) {\n return eval(code);\n };\n js.Lib.setErrorHandler = function (f) {\n js.Lib.onerror = f;\n };\n var $_;\n function $bind(o, m) {\n var f = function () {\n return f.method.apply(f.scope, arguments);\n };\n f.scope = o;\n f.method = m;\n return f;\n }\n if (Array.prototype.indexOf)\n HxOverrides.remove = function (a, o) {\n var i = a.indexOf(o);\n if (i == -1) return false;\n a.splice(i, 1);\n return true;\n };\n else null;\n Math.__name__ = [\"Math\"];\n Math.NaN = Number.NaN;\n Math.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY;\n Math.POSITIVE_INFINITY = Number.POSITIVE_INFINITY;\n Math.isFinite = function (i) {\n return isFinite(i);\n };\n Math.isNaN = function (i) {\n return isNaN(i);\n };\n String.prototype.__class__ = String;\n String.__name__ = true;\n Array.prototype.__class__ = Array;\n Array.__name__ = true;\n Date.prototype.__class__ = Date;\n Date.__name__ = [\"Date\"];\n var Int = { __name__: [\"Int\"] };\n var Dynamic = { __name__: [\"Dynamic\"] };\n var Float = Number;\n Float.__name__ = [\"Float\"];\n var Bool = Boolean;\n Bool.__ename__ = [\"Bool\"];\n var Class = { __name__: [\"Class\"] };\n var Enum = {};\n var Void = { __ename__: [\"Void\"] };\n if (typeof document != \"undefined\") js.Lib.document = document;\n if (typeof window != \"undefined\") {\n js.Lib.window = window;\n js.Lib.window.onerror = function (msg, url, line) {\n var f = js.Lib.onerror;\n if (f == null) return false;\n return f(msg, [url + \":\" + line]);\n };\n }\n com.wiris.js.JsPluginTools.main();\n})();\ndelete Array.prototype.__class__;\n// @codingStandardsIgnoreEnd\n","import IntegrationModel from \"@wiris/mathtype-html-integration-devkit/src/integrationmodel.js\";\nimport Util from \"@wiris/mathtype-html-integration-devkit/src/util.js\";\nimport Configuration from \"@wiris/mathtype-html-integration-devkit/src/configuration.js\";\nimport Latex from \"@wiris/mathtype-html-integration-devkit/src/latex.js\";\nimport MathML from \"@wiris/mathtype-html-integration-devkit/src/mathml.js\";\nimport Telemeter from \"@wiris/mathtype-html-integration-devkit/src/telemeter.js\";\n\n/**\n * This class represents the MathType integration for CKEditor5.\n * @extends {IntegrationModel}\n */\nexport default class CKEditor5Integration extends IntegrationModel {\n constructor(ckeditorIntegrationModelProperties) {\n const editor = ckeditorIntegrationModelProperties.editorObject;\n\n if (typeof editor.config !== \"undefined\" && typeof editor.config.get(\"mathTypeParameters\") !== \"undefined\") {\n ckeditorIntegrationModelProperties.integrationParameters = editor.config.get(\"mathTypeParameters\");\n }\n /**\n * CKEditor5 Integration.\n *\n * @param {integrationModelProperties} integrationModelAttributes\n */\n super(ckeditorIntegrationModelProperties);\n\n /**\n * Folder name used for the integration inside CKEditor plugins folder.\n */\n this.integrationFolderName = \"ckeditor_wiris\";\n }\n\n /**\n * @inheritdoc\n * @returns {string} - The CKEditor instance language.\n * @override\n */\n getLanguage() {\n // Returns the CKEDitor instance language taking into account that the language can be an object.\n // Try to get editorParameters.language, fail silently otherwise\n try {\n return this.editorParameters.language;\n } catch (e) {}\n const languageObject = this.editorObject.config.get(\"language\");\n if (languageObject != null) {\n if (typeof languageObject === \"object\") {\n if (Object.prototype.hasOwnProperty.call(languageObject, \"ui\")) {\n return languageObject.ui;\n }\n return this.editorObject.locale.uiLanguage;\n }\n return languageObject;\n }\n return super.getLanguage();\n }\n\n /**\n * Adds callbacks to the following CKEditor listeners:\n * - 'focus' - updates the current instance.\n * - 'contentDom' - adds 'doubleclick' callback.\n * - 'doubleclick' - sets to null data.dialog property to avoid modifications for MathType formulas.\n * - 'setData' - parses the data converting MathML into images.\n * - 'afterSetData' - adds an observer to MathType formulas to avoid modifications.\n * - 'getData' - parses the data converting images into selected save mode (MathML by default).\n * - 'mode' - recalculates the active element.\n */\n addEditorListeners() {\n const editor = this.editorObject;\n\n if (typeof editor.config.wirislistenersdisabled === \"undefined\" || !editor.config.wirislistenersdisabled) {\n this.checkElement();\n }\n }\n\n /**\n * Checks the current container and assign events in case that it doesn't have them.\n * CKEditor replaces several times the element element during its execution,\n * so we must assign the events again to editor element.\n */\n checkElement() {\n const editor = this.editorObject;\n const newElement = editor.sourceElement;\n\n // If the element wasn't treated, add the events.\n if (!newElement.wirisActive) {\n this.setTarget(newElement);\n this.addEvents();\n // Set the element as treated\n newElement.wirisActive = true;\n }\n }\n\n /**\n * @inheritdoc\n * @param {HTMLElement} element - HTMLElement target.\n * @param {MouseEvent} event - event which trigger the handler.\n */\n doubleClickHandler(element, event) {\n this.core.editionProperties.dbclick = true;\n if (this.editorObject.isReadOnly === false) {\n if (element.nodeName.toLowerCase() === \"img\") {\n if (Util.containsClass(element, Configuration.get(\"imageClassName\"))) {\n // Some plugins (image2, image) open a dialog on Double-click. On formulas\n // doubleclick event ends here.\n if (typeof event.stopPropagation !== \"undefined\") {\n // old I.E compatibility.\n event.stopPropagation();\n } else {\n event.returnValue = false;\n }\n this.core.getCustomEditors().disable();\n const customEditorAttr = element.getAttribute(Configuration.get(\"imageCustomEditorName\"));\n if (customEditorAttr) {\n this.core.getCustomEditors().enable(customEditorAttr);\n }\n this.core.editionProperties.temporalImage = element;\n this.openExistingFormulaEditor();\n }\n }\n }\n }\n\n /** @inheritdoc */\n static getCorePath() {\n return null; // TODO\n }\n\n /** @inheritdoc */\n callbackFunction() {\n super.callbackFunction();\n this.addEditorListeners();\n }\n\n openNewFormulaEditor() {\n // Store the editor selection as it will be lost upon opening the modal\n this.core.editionProperties.selection = this.editorObject.editing.view.document.selection;\n\n // Focus on the selected editor when multiple editor instances are present\n WirisPlugin.currentInstance = this;\n\n return super.openNewFormulaEditor();\n }\n\n /**\n * Replaces old formula with new MathML or inserts it in caret position if new\n * @param {String} mathml MathML to update old one or insert\n * @returns {module:engine/model/element~Element} The model element corresponding to the inserted image\n */\n insertMathml(mathml) {\n // This returns the value returned by the callback function (writer => {...})\n return this.editorObject.model.change((writer) => {\n const core = this.getCore();\n const selection = this.editorObject.model.document.selection;\n\n const modelElementNew = writer.createElement(\"mathml\", {\n formula: mathml,\n ...Object.fromEntries(selection.getAttributes()), // To keep the format, such as style and font\n });\n\n // Obtain the DOM <span><img ... /></span> object corresponding to the formula\n if (core.editionProperties.isNewElement) {\n // Don't bother inserting anything at all if the MathML is empty.\n if (!mathml) return;\n\n const viewSelection =\n this.core.editionProperties.selection || this.editorObject.editing.view.document.selection;\n const modelPosition = this.editorObject.editing.mapper.toModelPosition(viewSelection.getLastPosition());\n\n this.editorObject.model.insertObject(modelElementNew, modelPosition);\n\n // Remove selection\n if (!viewSelection.isCollapsed) {\n for (const range of viewSelection.getRanges()) {\n const modelRange = this.editorObject.editing.mapper.toModelRange(range);\n const modelSelection = this.editorObject.model.createSelection(modelRange);\n\n this.editorObject.model.deleteContent(modelSelection);\n }\n }\n\n // Set carret after the formula\n const position = this.editorObject.model.createPositionAfter(modelElementNew);\n writer.setSelection(position);\n } else {\n const img = core.editionProperties.temporalImage;\n const viewElement = this.editorObject.editing.view.domConverter.domToView(img).parent;\n const modelElementOld = this.editorObject.editing.mapper.toModelElement(viewElement);\n\n // Insert the new <mathml> and remove the old one\n const position = this.editorObject.model.createPositionBefore(modelElementOld);\n\n // If the given MathML is empty, don't insert a new formula.\n if (mathml) {\n this.editorObject.model.insertObject(modelElementNew, position);\n }\n this.editorObject.model.deleteContent(this.editorObject.model.createSelection(modelElementOld,'on'));\n }\n\n // eslint-disable-next-line consistent-return\n return modelElementNew;\n });\n }\n\n /**\n * Finds the text node corresponding to given DOM text element.\n * @param {element} viewElement Element to find corresponding text node of.\n * @returns {module:engine/model/text~Text|undefined} Text node corresponding to the given element or undefined if it doesn't exist.\n */\n findText(viewElement) {\n // eslint-disable-line consistent-return\n // mapper always converts text nodes to *new* model elements so we need to convert the text's parents and then come back down\n let pivot = viewElement;\n let element;\n while (!element) {\n element = this.editorObject.editing.mapper.toModelElement(\n this.editorObject.editing.view.domConverter.domToView(pivot),\n );\n pivot = pivot.parentElement;\n }\n\n // Navigate through all the subtree under `pivot` in order to find the correct text node\n const range = this.editorObject.model.createRangeIn(element);\n const descendants = Array.from(range.getItems());\n for (const node of descendants) {\n let viewElementData = viewElement.data;\n if (viewElement.nodeType === 3) {\n // Remove invisible white spaces\n viewElementData = viewElementData.replaceAll(String.fromCharCode(8288), \"\");\n }\n if (node.is(\"textProxy\") && node.data === viewElementData.replace(String.fromCharCode(160), \" \")) {\n return node.textNode;\n }\n }\n }\n\n /** @inheritdoc */\n insertFormula(focusElement, windowTarget, mathml, wirisProperties) {\n // eslint-disable-line no-unused-vars\n const returnObject = {};\n\n let mathmlOrigin;\n if (!mathml) {\n this.insertMathml(\"\");\n } else if (this.core.editMode === \"latex\") {\n returnObject.latex = Latex.getLatexFromMathML(mathml);\n returnObject.node = windowTarget.document.createTextNode(`$$${returnObject.latex}$$`);\n\n this.editorObject.model.change((writer) => {\n const { latexRange } = this.core.editionProperties;\n\n // Add null check for latexRange.\n // When the editor is initialized in a textarea element, latexRange may not be set on initial load.\n // This check ensures formulas can still be inserted by falling back to MathML insertion if latexRange is not available.\n if (!latexRange) {\n // Fallback to regular MathML insertion if latexRange is not available\n this.insertMathml(mathml);\n return;\n }\n\n const startNode = this.findText(latexRange.startContainer);\n const endNode = this.findText(latexRange.endContainer);\n\n let startPosition = writer.createPositionAt(startNode.parent, startNode.startOffset + latexRange.startOffset);\n let endPosition = writer.createPositionAt(endNode.parent, endNode.startOffset + latexRange.endOffset);\n\n let range = writer.createRange(startPosition, endPosition);\n\n // When Latex is next to image/formula.\n if (latexRange.startContainer.nodeType === 3 && latexRange.startContainer.previousSibling?.nodeType === 1) {\n // Get the position of the latex to be replaced.\n const latexEdited = `$$${Latex.getLatexFromMathML(\n MathML.safeXmlDecode(this.core.editionProperties.temporalImage.dataset.mathml),\n )}$$`;\n let data = latexRange.startContainer.data;\n\n // Remove invisible characters.\n data = data.replaceAll(String.fromCharCode(8288), \"\");\n\n // Get to the start of the latex we are editing.\n const offset = data.indexOf(latexEdited);\n const dataOffset = data.substring(offset);\n const second$ = dataOffset.substring(2).indexOf(\"$$\") + 4;\n const substring = dataOffset.substr(0, second$);\n data = data.replace(substring, \"\");\n\n if (!data) {\n startPosition = writer.createPositionBefore(startNode);\n range = startNode;\n } else {\n startPosition = startPosition = writer.createPositionAt(startNode.parent, startNode.startOffset + offset);\n endPosition = writer.createPositionAt(endNode.parent, endNode.startOffset + second$ + offset);\n range = writer.createRange(startPosition, endPosition);\n }\n }\n\n const modelSelection = this.editorObject.model.createSelection(range);\n\n this.editorObject.model.deleteContent(modelSelection);\n writer.insertText(`$$${returnObject.latex}$$`, startNode.getAttributes(), startPosition);\n });\n } else {\n mathmlOrigin = this.core.editionProperties.temporalImage?.dataset.mathml;\n try {\n returnObject.node = this.editorObject.editing.view.domConverter.viewToDom(\n this.editorObject.editing.mapper.toViewElement(this.insertMathml(mathml)),\n windowTarget.document,\n );\n } catch (e) {\n const x = e.toString();\n if (x.includes(\"CKEditorError: Cannot read property 'parent' of undefined\")) {\n this.core.modalDialog.cancelAction();\n }\n }\n }\n\n // Build the telemeter payload separated to delete null/undefined entries.\n const payload = {\n mathml_origin: mathmlOrigin ? MathML.safeXmlDecode(mathmlOrigin) : mathmlOrigin,\n mathml: mathml ? MathML.safeXmlDecode(mathml) : mathml,\n elapsed_time: Date.now() - this.core.editionProperties.editionStartTime,\n editor_origin: null, // TODO read formula to find out whether it comes from Oxygen Desktop\n toolbar: this.core.modalDialog.contentManager.toolbar,\n size: mathml?.length,\n };\n\n // Remove desired null keys.\n Object.keys(payload).forEach((key) => {\n if (key === \"mathml_origin\" || key === \"editor_origin\") !payload[key] ? delete payload[key] : {};\n });\n\n // Call Telemetry service to track the event.\n try {\n Telemeter.telemeter.track(\"INSERTED_FORMULA\", {\n ...payload,\n });\n } catch (error) {\n console.error(\"Error tracking INSERTED_FORMULA\", error);\n }\n\n /* Due to PLUGINS-1329, we add the onChange event to the CK4 insertFormula.\n We probably should add it here as well, but we should look further into how */\n // this.editorObject.fire('change');\n\n // Remove temporal image of inserted formula\n this.core.editionProperties.temporalImage = null;\n\n return returnObject;\n }\n\n /**\n * Function called when the content submits an action.\n */\n notifyWindowClosed() {\n this.editorObject.editing.view.focus();\n }\n}\n","/* eslint-disable max-classes-per-file */\nimport { Command } from \"ckeditor5/src/core.js\";\nimport CKEditor5Integration from \"./integration.js\";\n\n/**\n * Command for opening the MathType editor\n */\nexport class MathTypeCommand extends Command {\n execute(options = {}) {\n // Check we get a valid integration\n // eslint-disable-next-line no-prototype-builtins\n if (!options.hasOwnProperty(\"integration\") || !(options.integration instanceof CKEditor5Integration)) {\n throw 'Must pass a valid CKEditor5Integration instance as attribute \"integration\" of options';\n }\n\n // Save the integration instance as a property of the command.\n this.integration = options.integration;\n\n // Set custom editor or disable it\n this.setEditor();\n\n // Open the editor\n this.openEditor();\n }\n\n /**\n * Sets the appropriate custom editor, if any, or disables them.\n */\n setEditor() {\n // It's possible that a custom editor was last used.\n // We need to disable it to avoid wrong behaviors.\n this.integration.core.getCustomEditors().disable();\n }\n\n /**\n * Checks whether we are editing an existing formula or a new one and opens the editor.\n */\n openEditor() {\n this.integration.core.editionProperties.dbclick = false;\n const image = this._getSelectedImage();\n if (\n typeof image !== \"undefined\" &&\n image !== null &&\n image.classList.contains(WirisPlugin.Configuration.get(\"imageClassName\"))\n ) {\n this.integration.core.editionProperties.temporalImage = image;\n this.integration.openExistingFormulaEditor();\n } else {\n this.integration.openNewFormulaEditor();\n }\n }\n\n /**\n * Gets the currently selected formula image\n * @returns {Element} selected image, if any, undefined otherwise\n */\n _getSelectedImage() {\n const { selection } = this.editor.editing.view.document;\n\n // If we can not extract the formula, fall back to default behavior.\n if (selection.isCollapsed || selection.rangeCount !== 1) {\n return;\n }\n\n // Look for the <span> wrapping the formula and then for the <img/> inside\n\n const range = selection.getFirstRange();\n\n let image;\n\n for (const span of range) {\n if (span.item.name !== \"span\") {\n return;\n }\n image = span.item.getChild(0);\n break;\n }\n\n if (!image) {\n return;\n }\n\n // eslint-disable-next-line consistent-return\n return this.editor.editing.view.domConverter.mapViewToDom(image);\n }\n}\n\n/**\n * Command for opening the ChemType editor\n */\nexport class ChemTypeCommand extends MathTypeCommand {\n setEditor() {\n this.integration.core.getCustomEditors().enable(\"chemistry\");\n }\n}\n","// CKEditor imports\nimport { Plugin } from \"ckeditor5/src/core.js\";\nimport { ButtonView } from \"ckeditor5/src/ui.js\";\nimport { ClickObserver, HtmlDataProcessor, XmlDataProcessor, ViewUpcastWriter } from \"ckeditor5/src/engine.js\";\nimport { Widget, toWidget, viewToModelPositionOutsideModelElement } from \"ckeditor5/src/widget.js\";\n\n// MathType API imports\nimport IntegrationModel from \"@wiris/mathtype-html-integration-devkit/src/integrationmodel.js\";\nimport Core from \"@wiris/mathtype-html-integration-devkit/src/core.src.js\";\nimport Parser from \"@wiris/mathtype-html-integration-devkit/src/parser.js\";\nimport Util from \"@wiris/mathtype-html-integration-devkit/src/util.js\";\nimport Image from \"@wiris/mathtype-html-integration-devkit/src/image.js\";\nimport Configuration from \"@wiris/mathtype-html-integration-devkit/src/configuration.js\";\nimport Listeners from \"@wiris/mathtype-html-integration-devkit/src/listeners.js\";\nimport MathML from \"@wiris/mathtype-html-integration-devkit/src/mathml.js\";\nimport Latex from \"@wiris/mathtype-html-integration-devkit/src/latex.js\";\nimport StringManager from \"@wiris/mathtype-html-integration-devkit/src/stringmanager.js\";\nimport \"@wiris/mathtype-html-integration-devkit/src/md5.js\";\n\n// Local imports\nimport { MathTypeCommand, ChemTypeCommand } from \"./commands.js\";\nimport CKEditor5Integration from \"./integration.js\";\n\nimport mathIcon from \"../theme/icons/ckeditor5-formula.svg\";\nimport chemIcon from \"../theme/icons/ckeditor5-chem.svg\";\nimport \"../theme/styles.css\";\n\nimport packageInfo from \"../package.json\";\n\nexport let currentInstance = null; // eslint-disable-line import/no-mutable-exports\n\nexport default class MathType extends Plugin {\n static get requires() {\n return [Widget];\n }\n\n static get pluginName() {\n return \"MathType\";\n }\n\n init() {\n // Create the MathType API Integration object\n const integration = this._addIntegration();\n currentInstance = integration;\n\n // Add the MathType and ChemType commands to the editor\n this._addCommands(integration);\n\n // Add the track changes feature integration\n this._addTrackChangesIntegration(integration);\n\n // Add the buttons for MathType and ChemType\n this._addViews(integration);\n\n // Registers the <mathml> element in the schema\n this._addSchema();\n\n // Add the downcast and upcast converters\n this._addConverters(integration);\n\n // Expose the WirisPlugin variable to the window\n this._exposeWiris();\n }\n\n /**\n * Inherited from Plugin class: Executed when CKEditor5 is destroyed\n */\n destroy() {\n // eslint-disable-line class-methods-use-this\n currentInstance?.destroy();\n }\n\n /**\n * Create the MathType API Integration object\n * @returns {CKEditor5Integration} the integration object\n */\n _addIntegration() {\n const { editor } = this;\n\n /**\n * Integration model constructor attributes.\n * @type {integrationModelProperties}\n */\n const integrationProperties = {};\n integrationProperties.environment = {};\n integrationProperties.environment.editor = \"CKEditor5\";\n integrationProperties.environment.editorVersion = \"5.x\";\n integrationProperties.version = packageInfo.version;\n integrationProperties.editorObject = editor;\n integrationProperties.serviceProviderProperties = {};\n integrationProperties.serviceProviderProperties.URI = \"https://www.wiris.net/demo/plugins/app\";\n integrationProperties.serviceProviderProperties.server = \"java\";\n integrationProperties.target = editor.sourceElement;\n integrationProperties.scriptName = \"bundle.js\";\n integrationProperties.managesLanguage = true;\n // etc\n\n // There are platforms like Drupal that initialize CKEditor but they hide or remove the container element.\n // To avoid a wrong behavior, this integration only starts if the workspace container exists.\n let integration;\n if (integrationProperties.target) {\n // Instance of the integration associated to this editor instance\n integration = new CKEditor5Integration(integrationProperties);\n integration.init();\n integration.listeners.fire(\"onTargetReady\", {});\n\n integration.checkElement();\n\n this.listenTo(\n editor.editing.view.document,\n \"click\",\n (evt, data) => {\n // Is Double-click\n if (data.domEvent.detail === 2) {\n integration.doubleClickHandler(data.domTarget, data.domEvent);\n evt.stop();\n }\n },\n { priority: \"highest\" },\n );\n }\n\n return integration;\n }\n\n /**\n * Add the MathType and ChemType commands to the editor\n */\n _addCommands() {\n const { editor } = this;\n\n // Add command to open the formula editor\n editor.commands.add(\"MathType\", new MathTypeCommand(editor));\n\n // Add command to open the chemistry formula editor\n editor.commands.add(\"ChemType\", new ChemTypeCommand(editor));\n }\n\n /**\n * Add the buttons for MathType and ChemType\n * @param {CKEditor5Integration} integration the integration object\n */\n _addViews(integration) {\n const { editor } = this;\n\n // Check if MathType editor is enabled\n if (Configuration.get(\"editorEnabled\")) {\n // Add button for the formula editor\n editor.ui.componentFactory.add(\"MathType\", (locale) => {\n const view = new ButtonView(locale);\n\n // View is enabled iff command is enabled\n view.bind(\"isEnabled\").to(editor.commands.get(\"MathType\"), \"isEnabled\");\n view.set({\n label: StringManager.get(\"insert_math\", integration.getLanguage()),\n icon: mathIcon,\n tooltip: true,\n });\n\n // Callback executed once the image is clicked.\n view.on(\"execute\", () => {\n editor.execute(\"MathType\", {\n integration, // Pass integration as parameter\n });\n });\n\n return view;\n });\n }\n\n // Check if ChemType editor is enabled\n if (Configuration.get(\"chemEnabled\")) {\n // Add button for the chemistry formula editor\n editor.ui.componentFactory.add(\"ChemType\", (locale) => {\n const view = new ButtonView(locale);\n\n // View is enabled iff command is enabled\n view.bind(\"isEnabled\").to(editor.commands.get(\"ChemType\"), \"isEnabled\");\n\n view.set({\n label: StringManager.get(\"insert_chem\", integration.getLanguage()),\n icon: chemIcon,\n tooltip: true,\n });\n\n // Callback executed once the image is clicked.\n view.on(\"execute\", () => {\n editor.execute(\"ChemType\", {\n integration, // Pass integration as parameter\n });\n });\n\n return view;\n });\n }\n\n // Observer for the Double-click event\n editor.editing.view.addObserver(ClickObserver);\n }\n\n /**\n * Registers the <mathml> element in the schema\n */\n _addSchema() {\n const { schema } = this.editor.model;\n\n schema.register(\"mathml\", {\n inheritAllFrom: \"$inlineObject\",\n allowAttributes: [\"formula\", \"htmlContent\"],\n });\n }\n\n /**\n * Add the downcast and upcast converters\n */\n _addConverters(integration) {\n const { editor } = this;\n\n // Editing view -> Model\n editor.conversion.for(\"upcast\").elementToElement({\n view: {\n name: \"span\",\n classes: \"ck-math-widget\",\n },\n model: (viewElement, { writer: modelWriter }) => {\n const formula = MathML.safeXmlDecode(viewElement.getChild(0).getAttribute(\"data-mathml\"));\n return modelWriter.createElement(\"mathml\", {\n formula,\n });\n },\n });\n\n // Data view -> Model\n editor.data.upcastDispatcher.on(\"element:math\", (evt, data, conversionApi) => {\n const { consumable, writer } = conversionApi;\n const { viewItem } = data;\n\n // When element was already consumed then skip it.\n if (!consumable.test(viewItem, { name: true })) {\n return;\n }\n\n // If we encounter any <math> with a LaTeX annotation inside,\n // convert it into a \"$$...$$\" string.\n const isLatex = mathIsLatex(viewItem); // eslint-disable-line no-use-before-define\n\n // Get the formula of the <math> (which is all its children).\n const processor = new XmlDataProcessor(editor.editing.view.document);\n\n // Only god knows why the following line makes viewItem lose all of its children,\n // so we obtain isLatex before doing this because we need viewItem's children for that.\n const upcastWriter = new ViewUpcastWriter(editor.editing.view.document);\n const viewDocumentFragment = upcastWriter.createDocumentFragment(viewItem.getChildren());\n\n // and obtain the attributes of <math> too!\n const mathAttributes = [...viewItem.getAttributes()].map(([key, value]) => ` ${key}=\"${value}\"`).join(\"\");\n\n // We process the document fragment\n let formula = processor.toData(viewDocumentFragment) || \"\";\n\n // And obtain the complete formula\n formula = Util.htmlSanitize(`<math${mathAttributes}>${formula}</math>`);\n\n // Replaces the < & > characters to its HTMLEntity to avoid render issues.\n formula = formula.replaceAll('\"<\"', '\"&lt;\"').replaceAll('\">\"', '\"&gt;\"').replaceAll(\"><<\", \">&lt;<\");\n\n /* Model node that contains what's going to actually be inserted. This can be either:\n - A <mathml> element with a formula attribute set to the given formula, or\n - If the original <math> had a LaTeX annotation, then the annotation surrounded by \"$$...$$\" */\n const modelNode = isLatex\n ? writer.createText(Parser.initParse(formula, integration.getLanguage()))\n : writer.createElement(\"mathml\", { formula });\n\n // Find allowed parent for element that we are going to insert.\n // If current parent does not allow to insert element but one of the ancestors does\n // then split nodes to allowed parent.\n const splitResult = conversionApi.splitToAllowedParent(modelNode, data.modelCursor);\n\n // When there is no split result it means that we can't insert element to model tree, so let's skip it.\n if (!splitResult) {\n return;\n }\n\n // Insert element on allowed position.\n conversionApi.writer.insert(modelNode, splitResult.position);\n\n // Consume appropriate value from consumable values list.\n consumable.consume(viewItem, { name: true });\n\n const parts = conversionApi.getSplitParts(modelNode);\n\n // Set conversion result range.\n data.modelRange = writer.createRange(\n conversionApi.writer.createPositionBefore(modelNode),\n conversionApi.writer.createPositionAfter(parts[parts.length - 1]),\n );\n\n // Now we need to check where the `modelCursor` should be.\n if (splitResult.cursorParent) {\n // If we split parent to insert our element then we want to continue conversion in the new part of the split parent.\n //\n // before: <allowed><notAllowed>foo[]</notAllowed></allowed>\n // after: <allowed><notAllowed>foo</notAllowed><converted></converted><notAllowed>[]</notAllowed></allowed>\n\n data.modelCursor = conversionApi.writer.createPositionAt(splitResult.cursorParent, 0);\n } else {\n // Otherwise just continue after inserted element.\n data.modelCursor = data.modelRange.end;\n }\n });\n\n // Data view -> Model\n editor.data.upcastDispatcher.on(\n \"element:img\",\n (evt, data, conversionApi) => {\n const { consumable, writer } = conversionApi;\n const { viewItem } = data;\n\n // Only upcast when is wiris formula\n if (viewItem.getClassNames().next().value !== \"Wirisformula\") {\n return;\n }\n\n // The following code ensures that the element's name, attributes, and classes are consumed.\n // This means that they are marked as handled so that other parts of the system or plugins don't process them again.\n\n // Check if we can consume the element name.\n if (!consumable.test(viewItem, { name: true })) {\n return;\n }\n\n // Consume the name, attributes, and classes so nothing else processes it.\n consumable.consume(viewItem, { name: true });\n for (const attrName of viewItem.getAttributes()) {\n consumable.consume(viewItem, { attributes: [attrName] });\n }\n\n for (const className of viewItem.getClassNames()) {\n consumable.consume(viewItem, { classes: [className] });\n }\n\n const mathAttributes = [...viewItem.getAttributes()].map(([key, value]) => ` ${key}=\"${value}\"`).join(\"\");\n const htmlContent = Util.htmlSanitize(`<img${mathAttributes}>`);\n\n const modelNode = writer.createElement(\"mathml\", { htmlContent });\n\n // Find allowed parent for element that we are going to insert.\n // If current parent does not allow to insert element but one of the ancestors does\n // then split nodes to allowed parent.\n const splitResult = conversionApi.splitToAllowedParent(modelNode, data.modelCursor);\n\n // When there is no split result it means that we can't insert element to model tree, so let's skip it.\n if (!splitResult) {\n return;\n }\n\n // Insert element on allowed position.\n conversionApi.writer.insert(modelNode, splitResult.position);\n\n // Consume appropriate value from consumable values list.\n consumable.consume(viewItem, { name: true });\n\n const parts = conversionApi.getSplitParts(modelNode);\n\n // Set conversion result range.\n data.modelRange = writer.createRange(\n conversionApi.writer.createPositionBefore(modelNode),\n conversionApi.writer.createPositionAfter(parts[parts.length - 1]),\n );\n\n // Now we need to check where the `modelCursor` should be.\n if (splitResult.cursorParent) {\n // If we split parent to insert our element then we want to continue conversion in the new part of the split parent.\n //\n // before: <allowed><notAllowed>foo[]</notAllowed></allowed>\n // after: <allowed><notAllowed>foo</notAllowed><converted></converted><notAllowed>[]</notAllowed></allowed>\n\n data.modelCursor = conversionApi.writer.createPositionAt(splitResult.cursorParent, 0);\n } else {\n // Otherwise just continue after inserted element.\n data.modelCursor = data.modelRange.end;\n }\n },\n // Ensures MathType processes the Wiris formulas before other plugins, preventing conflicts.\n { priority: \"high\" },\n );\n\n /**\n * Whether the given view <math> element has a LaTeX annotation element.\n * @param {*} math\n * @returns {bool}\n */\n function mathIsLatex(math) {\n const semantics = math.getChild(0);\n if (!semantics || semantics.name !== \"semantics\") return false;\n for (const child of semantics.getChildren()) {\n if (child.name === \"annotation\" && child.getAttribute(\"encoding\") === \"LaTeX\") {\n return true;\n }\n }\n return false;\n }\n\n function createViewWidget(modelItem, { writer: viewWriter }) {\n const widgetElement = viewWriter.createContainerElement(\"span\", {\n class: \"ck-math-widget\",\n });\n\n const mathUIElement = createViewImage(modelItem, { writer: viewWriter }); // eslint-disable-line no-use-before-define\n\n if (mathUIElement) {\n viewWriter.insert(viewWriter.createPositionAt(widgetElement, 0), mathUIElement);\n }\n\n return toWidget(widgetElement, viewWriter);\n }\n\n function createViewImage(modelItem, { writer: viewWriter }) {\n const htmlDataProcessor = new HtmlDataProcessor(viewWriter.document);\n\n const formula = modelItem.getAttribute(\"formula\");\n const htmlContent = modelItem.getAttribute(\"htmlContent\");\n\n if (!formula && !htmlContent) {\n return null;\n }\n\n let imgElement = null;\n\n if (htmlContent) {\n imgElement = htmlDataProcessor.toView(htmlContent).getChild(0);\n } else if (formula) {\n const mathString = formula.replaceAll('ref=\"<\"', 'ref=\"&lt;\"');\n\n const lang = integration?.getLanguage() || \"en\"; // Safe fallback to 'en' in case integration is undefined.\n const imgHtml = Parser.initParse(mathString, lang);\n\n imgElement = htmlDataProcessor.toView(imgHtml).getChild(0);\n\n // Add HTML element (<img>) to model\n viewWriter.setAttribute(\"htmlContent\", imgHtml, modelItem);\n }\n\n /* Although we use the HtmlDataProcessor to obtain the attributes,\n * we must create a new EmptyElement which is independent of the\n * DataProcessor being used by this editor instance\n */\n if (imgElement) {\n return viewWriter.createEmptyElement(\"img\", imgElement.getAttributes(), {\n renderUnsafeAttributes: [\"src\"],\n });\n }\n\n return null;\n }\n\n // Model -> Editing view\n editor.conversion.for(\"editingDowncast\").elementToElement({\n model: \"mathml\",\n view: createViewWidget,\n });\n\n // Model -> Data view\n editor.conversion.for(\"dataDowncast\").elementToElement({\n model: \"mathml\",\n view: createDataString, // eslint-disable-line no-use-before-define\n });\n\n /**\n * Makes a copy of the given view node.\n * @param {module:engine/view/node~Node} sourceNode Node to copy.\n * @returns {module:engine/view/node~Node} Copy of the node.\n */\n function clone(viewWriter, sourceNode) {\n if (sourceNode.is(\"text\")) {\n return viewWriter.createText(sourceNode.data);\n }\n if (sourceNode.is(\"element\")) {\n if (sourceNode.is(\"emptyElement\")) {\n return viewWriter.createEmptyElement(sourceNode.name, sourceNode.getAttributes());\n }\n const element = viewWriter.createContainerElement(sourceNode.name, sourceNode.getAttributes());\n for (const child of sourceNode.getChildren()) {\n viewWriter.insert(viewWriter.createPositionAt(element, \"end\"), clone(viewWriter, child));\n }\n return element;\n }\n\n throw new Exception(\"Given node has unsupported type.\"); // eslint-disable-line no-undef\n }\n\n function createDataString(modelItem, { writer: viewWriter }) {\n const htmlDataProcessor = new HtmlDataProcessor(viewWriter.document);\n\n // Load img element\n const mathString =\n modelItem.getAttribute(\"htmlContent\") || Parser.endParseSaveMode(modelItem.getAttribute(\"formula\"));\n\n const sourceMathElement = htmlDataProcessor.toView(mathString).getChild(0);\n\n return clone(viewWriter, sourceMathElement);\n }\n\n // This stops the view selection getting into the <span>s and messing up caret movement\n editor.editing.mapper.on(\n \"viewToModelPosition\",\n viewToModelPositionOutsideModelElement(editor.model, (viewElement) => viewElement.hasClass(\"ck-math-widget\")),\n );\n\n // Keep a reference to the original get and set function.\n const { get, set } = editor.data;\n\n // Listen to the preview command execution to set a flag in localStorage.\n // This flag will be used in the getData() to prevent converting formulas while generating the preview.\n // This is necessary because the preview command uses editor.getData() multiple times internally.\n const previewCommand = editor.commands.get(\"previewFinalContent\");\n\n if (previewCommand) {\n this.listenTo(\n previewCommand,\n \"execute\",\n () => {\n localStorage.setItem(\"isGeneratingPreview\", true);\n\n setTimeout(() => {\n localStorage.setItem(\"isGeneratingPreview\", false);\n }, 1000);\n },\n { priority: \"high\" },\n );\n }\n\n /**\n * Listener for getData() that handles Track Changes and semantics cleanup.\n *\n * This listener intercepts the getData() call and processes the output differently\n * depending on whether we're generating a preview or performing a save operation:\n *\n * - Preview Mode: Removes deleted formulas (marked with Track Changes deletion attributes)\n * while preserving formula images for visual representation.\n * - Save Mode: Converts formulas to clean MathML by removing semantic annotations\n * and handwritten data, ensuring clean storage format.\n */\n editor.data.on(\n \"get\",\n (e) => {\n const output = e.return;\n\n // Check if we're in preview mode (flag set by previewFinalContent command)\n const isGeneratingPreview = localStorage.getItem(\"isGeneratingPreview\");\n\n if (isGeneratingPreview === \"true\") {\n // Wrap a <span> around all img elements to preserve Track Changes visibility for formulas.\n // Span must contain all the img attributes to avoid render issues.\n const attributesToPreserve = [\"data-suggestion-\", \"data-comment-\"];\n\n const previewOutput = output.replace(/<img([^>]*class=\"Wirisformula\"[^>]*)>/g, (match, attributes) => {\n // Extract Track Changes attributes\n const trackChangesAttrs = [];\n \n attributesToPreserve.forEach((prefix) => {\n const regex = new RegExp(`(${prefix}[^=]*=\"[^\"]*\")`, \"g\");\n let attrMatch;\n\n while ((attrMatch = regex.exec(attributes)) !== null) {\n trackChangesAttrs.push(attrMatch[1]);\n }\n });\n\n const spanAttrs = trackChangesAttrs.length > 0 ? ` ${trackChangesAttrs.join(\" \")}` : \"\";\n return `<span${spanAttrs}>${match}</span>`;\n });\n\n // Cleans all the semantics tag for safexml\n // including the handwritten data points\n e.return = MathML.removeSafeXMLSemantics(previewOutput);\n\n return;\n }\n\n // In save mode, convert formula images back to clean MathML\n const parsedResult = Parser.endParse(output);\n\n // Remove all semantic annotations (including handwritten data points)\n // to ensure clean, standard MathML format for storage\n e.return = MathML.removeSafeXMLSemantics(parsedResult);\n },\n { priority: \"low\" },\n );\n\n /**\n * Hack to transform <math> with LaTeX into $$LaTeX$$ and formula images in editor.setData().\n */\n editor.data.on(\n \"set\",\n (e, args) => {\n // Retrieve the data to be set on the CKEditor.\n let modifiedData = args[0];\n // Regex to find all mathml formulas.\n const regexp = /(<img\\b[^>]*>)|(<math(.*?)<\\/math>)/gm;\n const formulas = [];\n let formula;\n\n // Both data.set from the source plugin and console command are taken into account as the data received is MathML or an image containing the MathML.\n while ((formula = regexp.exec(modifiedData)) !== null) {\n formulas.push(formula[0]);\n }\n\n // Loop to find LaTeX and formula images and replace the MathML for the both.\n formulas.forEach((formula) => {\n if (formula.includes('encoding=\"LaTeX\"')) {\n // LaTeX found.\n const latex = `$$$${Latex.getLatexFromMathML(formula)}$$$`; // We add $$$ instead of $$ because the replace function ignores one $.\n modifiedData = modifiedData.replace(formula, latex);\n } else if (formula.includes(\"<img\")) {\n // If we found a formula image, we should find MathML data, and then substitute the entire image.\n const regexp = /«math\\b[^»]*»(.*?)«\\/math»/g;\n const safexml = formula.match(regexp);\n if (safexml !== null) {\n const decodeXML = MathML.safeXmlDecode(safexml[0]);\n modifiedData = modifiedData.replace(formula, decodeXML);\n }\n }\n });\n\n args[0] = modifiedData;\n },\n { priority: \"high\" },\n );\n }\n\n /**\n * Expose the WirisPlugin variable to the window\n */\n // eslint-disable-next-line class-methods-use-this\n _exposeWiris() {\n window.WirisPlugin = {\n Core,\n Parser,\n Image,\n MathML,\n Util,\n Configuration,\n Listeners,\n IntegrationModel,\n currentInstance,\n Latex,\n };\n }\n\n _addTrackChangesIntegration(integration) {\n const { editor } = this;\n\n if (editor.plugins.has(\"TrackChangesEditing\")) {\n const trackChangesEditing = editor.plugins.get(\"TrackChangesEditing\");\n\n // Makes MathType and ChemType buttons available when editor is in the track changes mode\n trackChangesEditing.enableCommand(\"MathType\");\n trackChangesEditing.enableCommand(\"ChemType\");\n\n // Adds custom label replacing the default 'mathml'.\n // Handles both singular and plural forms.\n trackChangesEditing.descriptionFactory.registerElementLabel(\n \"mathml\",\n (quantity) =>\n (quantity > 1 ? `${quantity} ` : \"\") +\n StringManager.get(quantity > 1 ? \"formulas\" : \"formula\", integration?.getLanguage() || \"en\"),\n );\n }\n }\n}\n"],"names":["Constants","safeXmlCharactersEntities","tagOpener","tagCloser","doubleQuote","realDoubleQuote","safeBadBlackboardCharacters","ltElement","gtElement","ampElement","safeGoodBlackboardCharacters","xmlCharacters","id","ampersand","quote","safeXmlCharacters","MathML","isMathmlInAttribute","content","i","mathAtt","attContent","att","atts","regex","expression","RegExp","actualContent","substring","reversed","split","reverse","join","exists","test","safeXmlDecode","input","window","_wrs_blackboard","returnValue","currentEntity","length","character","charAt","match","safeXmlEncode","mathMLEntities","mathml","toReturn","codePointAt","end","indexOf","container","document","createElement","innerHTML","Util","fixedCharCodeAt","textContent","innerText","addCustomEditorClassAttribute","customEditor","start","substr","removeCustomEditorClassAttribute","replace","addAnnotation","annotationEncoding","containsAnnotation","mathmlWithAnnotation","closeSemanticsIndex","isEmpty","endIndexInline","endIndexNonInline","endIndex","beginMathMLContent","endMathmlContent","lastIndexOf","mathmlContent","removeAnnotation","mathmlWithoutAnnotation","openAnnotationTag","closeAnnotationTag","startAnnotationIndex","differentAnnotationFound","differentAnnotationIndex","closeIndex","endAnnotationIndex","startIndex","removeSemantics","semanticsStartingTagRegex","semanticsEndingTagRegex","removeSafeXMLSemantics","element","semanticsSafeStartingTagRegex","semanticsSafeEndingTagRegex","removeSemanticsOcurrences","text","characters","mathTagStart","mathTagEnd","mathTagEndline","semanticsTagStart","annotationTagStart","output","mathTagEndIndex","mathTagEndlineIndex","firstTagCloser","semanticsIndex","mmlTagStart","annotationIndex","mmlContent","containClass","mathML","className","classIndex","classTagEndIndex","classTag","closeTag","closeTagInline","firstCloseTagIndex","firstCloseTagInlineIndex","empty","mathTagEndRegex","mathTagEndArray","exec","index","encodeProperties","replacer","quoteIndex","propertyValue","propertyValueEncoded","htmlEntities","matchEncoded","mathmlEncoded","Configuration","addConfiguration","properties","Object","assign","_properties","value","get","key","prototype","hasOwnProperty","call","set","update","updateProperty","TextCache","cache","populate","Listeners","listeners","add","listener","push","fire","eventName","event","cancelled","callback","defaultPrevented","newListener","ServiceProvider","_listeners","addListener","fireEvent","parameters","_parameters","servicePaths","_servicePaths","setServicePath","service","path","getServicePath","serviceName","integrationPath","_integrationPath","getServerURL","url","location","href","arr","result","init","configurationURI","createServiceURI","createImageURI","showImageURI","getMathMLURI","serviceURI","URI","serverPath","getUrl","postVariables","currentPath","toString","httpRequest","createHttpRequest","open","header","convertStringToObject","entries","forEach","val","setRequestHeader","send","httpBuildQuery","responseText","getService","response","getVariables","serviceUrl","getServerLanguageFromService","extension","serverExtension","concatenateUrl","server","Latex","_cache","getLatexFromMathML","mathmlWithoutSemantics","data","mml","jsonResponse","JSON","parse","latex","status","latexHtmlEntitiesEncoded","mathmlWithSemantics","getMathMLFromLatex","includeLatexOnSemantics","latexCache","saveLatex","parseMathmlToLatex","mathTagBegin","openTarget","closeTarget","startAnnotation","closeAnnotation","getLatexFromTextNode","textNode","caretPosition","latexTags","defaultLatexTags","close","startNode","previousSibling","nodeType","getNextLatexPosition","currentNode","currentPosition","tag","position","nodeValue","nextSibling","node","isPrevious","endNode","endPosition","tagLength","startPosition","StringManager","Error","lang","language","slice","strings","console","warn","translations","eventTarget","createEvent","eventObject","initEvent","dispatchEvent","createEventObject","addEvent","callBackFunction","addEventListener","attachEvent","removeEvent","removeEventListener","detachEvent","elementEventsMap","Map","addElementEvents","doubleClickHandler","mousedownHandler","mouseupHandler","removeElementEvents","entry","callbackDblclick","realEvent","srcElement","target","callbackMousedown","callbackMouseup","delete","addClass","containsClass","currentClasses","removeClass","newClassName","classes","trim","convertOldXmlinitialtextAttribute","xitpos","valpos","startquote","endquote","newvalue","keyValueString","map","pair","reduce","resultObject","tagName","attributes","creator","undefined","html","keys","attributeName","e","setAttribute","createObject","objectCode","recursiveParamsFix","object","getAttribute","attributesParsed","nodeName","param","NAME","name","VALUE","removeAttribute","parentNode","replaceChild","applet","childNodes","toLowerCase","appendChild","firstChild","createObjectCode","specified","path1","path2","separator","htmlSanitize","annotationRegex","annotation","DOMPurify","sanitize","ADD_TAGS","ADD_ATTR","htmlEntitiesDecode","textarea","XMLHttpRequest","ActiveXObject","oc","urlEncode","propertiesToString","hash","n","j","s1","s2","compareStrings","a","b","an","bn","c","string","idx","code","charCodeAt","hi","low","Number","isNaN","urlToAssArray","query","ss","h","s","kv","decodeURIComponent","clearString","encodeURIComponent","getWIRISImageOutput","imgCode","convertToXml","convertToSafeXml","imgObject","dataMathML","TRACK_CHANGES_ATTRIBUTE_PREFIXES","preservedAttributes","attributeValue","isTrackChangesAttribute","some","prefix","startsWith","attributesString","safeMathML","getNodeLength","staticNodeLengths","IMG","BR","toUpperCase","getSelectedItem","isIframe","forceGetSelection","windowTarget","contentWindow","focus","selection","range","createRange","parentElement","htmlText","execCommand","temporalObject","pasteHTML","getElementById","createTextNode","insertBefore","removeChild","item","getSelection","getRangeAt","startContainer","startOffset","endContainer","endOffset","localName","classList","contains","remove","emptySpan","getSelectedItemOnTextarea","textNodeValues","selectionStart","getElementsByNameFromString","autoClosed","elements","endString","decode64","PLUS","SLASH","NUMBER","LOWER","UPPER","PLUS_URL_SAFE","SLASH_URL_SAFE","b64ToByteArray","b64String","tmp","l","placeHolders","readInt32","bytes","int32","splice","readByte","shift","readBytes","pos","len","updateTextArea","selectionEnd","selectionEndSub","updateExistingTextOnTextarea","textareaStart","addArgument","parameter","sep","Image","removeImgDataAttributes","img","attributesToRemove","attribute","clone","originImg","destImg","customEditorAttributeName","hasAttribute","mathmlAttributeName","imgAttributes","iterator","originAttribute","isSvg","src","isBase64","setImgSize","uri","ar","base64String","svgString","getMetricsFromSvgString","String","fromCharCode","getMetricsFromBytes","width","cw","height","ch","baseline","cb","dpi","style","verticalAlign","fixAfterResize","maxWidth","processImg","atob","encodedSvgString","svg","base64","reader","FileReader","onload","fetch","then","r","blob","readAsDataURL","first","last","typ","Math","round","Accessibility","mathMLToAccessible","mode","ignoreStyles","accessibleText","accessibleJsonResponse","Parser","mathmlToImgObject","wirisProperties","align","wirisEditorProperties","metrics","centerbaseline","mathmlSubstring","attributePattern","attributeMatch","mathOpeningTagEnd","mathOpeningTag","createShowImageSrc","format","alt","createImageSrc","observer","observe","baseParts","pop","initParse","initParseSaveMode","initParseEditMode","parseMathmlToImg","codeImgTransform","imgList","token","carry","mathmlStartToken","mathmlStart","mathmlEnd","latexStartPosition","latexEndPosition","replaceText","endParse","codeEndParsedEditMode","endParseEditMode","codeEndParseSaveMode","endParseSaveMode","decodedLatex","savemode","base64savemode","createShowImageSrcData","dataMd5","renderParams","dataObject","formula","com","wiris","js","JsPluginTools","md5encode","version","pattern","patternLength","source","lastIndex","characterNextPosition","xmlCode","imageMathmlAtrribute","MutationObserver","mutationObserver","mutations","mutation","oldValue","create","Config","attributeOldValue","getPrototypeOf","EditorListener","isContentChanged","waitingForChanges","setIsContentChanged","getIsContentChanged","setWaitingForChanges","caretPositionChanged","_editor","clipboardChanged","contentChanged","styleChanged","transformationReceived","wasm","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","cachedUint8Memory0","getUint8Memory0","byteLength","Uint8Array","memory","buffer","getStringFromWasm0","ptr","subarray","heap","Array","fill","heap_next","addHeapObject","obj","getObject","dropObject","takeObject","ret","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encode","encodeString","encodeInto","arg","view","buf","read","written","passStringToWasm0","malloc","realloc","mem","offset","isLikeNone","x","cachedInt32Memory0","getInt32Memory0","Int32Array","cachedFloat64Memory0","getFloat64Memory0","Float64Array","cachedBigInt64Memory0","getBigInt64Memory0","BigInt64Array","debugString","type","description","isArray","debug","builtInMatches","stringify","_","message","stack","makeClosure","arg0","arg1","dtor","f","state","cnt","real","args","__wbindgen_export_2","original","__wbg_adapter_46","arg2","__wbindgen_export_3","makeMutClosure","__wbg_adapter_49","__wbindgen_export_4","__wbg_adapter_52","__wbindgen_export_5","handleError","apply","__wbindgen_export_6","__wbg_adapter_103","arg3","__wbindgen_export_7","getArrayU8FromWasm0","Telemeter","__destroy_into_raw","__wbg_ptr","free","__wbg_telemeter_free","solution","hosts","config","retptr","__wbindgen_add_to_stack_pointer","telemeter_new","r0","r1","r2","identify","sender_id","ptr0","__wbindgen_export_0","__wbindgen_export_1","len0","telemeter_identify","track","event_type","event_payload","telemeter_track","log","level","payload","telemeter_log","finish","telemeter_finish","new_debug_status","telemeter_debug","__wbg_load","module","imports","Response","WebAssembly","instantiateStreaming","headers","arrayBuffer","instantiate","instance","Instance","__wbg_get_imports","wbg","__wbindgen_string_new","__wbg_new_c728d68b8b34487e","__wbg_status_7841bb47be2a8f16","__wbg_headers_ea7ef583d1564b08","__wbg_new0_ad75dd38f92424e2","Date","__wbg_getTime_ed6ee333b702f8fc","getTime","__wbindgen_object_drop_ref","__wbindgen_is_object","__wbg_crypto_58f13aa23ffcb166","crypto","__wbg_process_5b786e71d465a513","process","__wbg_versions_c2ab80650590b6a2","versions","__wbg_node_523d7bd03ef69fba","__wbindgen_is_string","__wbg_msCrypto_abcb1295e768d1f2","msCrypto","__wbg_require_2784e593a4674877","require","arguments","__wbg_newwithlength_13b5319ab422dcf6","__wbg_get_4a9aa5157afeb382","__wbg_next_1989a20442400aaa","next","__wbg_done_bc26bf4ada718266","done","__wbg_value_0570714ff7d75f35","__wbg_iterator_7ee1a391d310f8e4","Symbol","__wbg_get_2aff440840bb6202","Reflect","__wbg_next_15da6a3df9290720","__wbindgen_is_function","__wbg_call_669127b9d730c650","__wbindgen_object_clone_ref","__wbg_self_3fad056edded10bd","self","__wbg_window_a4f46c98a61d4089","__wbg_globalThis_17eff828815f7d84","globalThis","__wbg_global_46f939f6541643c5","global","__wbindgen_is_undefined","__wbg_newnoargs_ccdcae30fd002262","Function","__wbg_isArray_38525be7442aa21e","__wbg_call_53fc3abd42e24ec8","__wbg_isSafeInteger_c38b0a16d0c7cef7","isSafeInteger","__wbg_new_feb65b865d980ae2","state0","cb0","Promise","__wbindgen_memory","__wbg_buffer_344d9b41efe96da7","__wbg_new_d8a000788389a31e","__wbg_set_dcfd613a3420f908","__wbg_length_a5587d6cd79ab197","__wbindgen_string_get","ptr1","len1","__wbg_stringify_4039297315a25b00","__wbg_set_40f7786a25a9cc7e","__wbg_has_cdf8b85f6e903c80","has","__wbg_fetch_701fcd2bde06379a","__wbg_fetch_b5d6bebed1e6c2d2","__wbg_newwithbyteoffsetandlength_2dc04d99088b15e3","__wbg_new_e4960143e41697a4","AbortController","__wbg_signal_1ed842bebd6ae322","signal","__wbg_abort_8355f201f30300bb","abort","__wbindgen_error_new","__wbindgen_jsval_loose_eq","__wbindgen_boolean_get","v","__wbindgen_number_get","__wbg_instanceof_Uint8Array_19e6f142a5e7e1e1","__wbg_instanceof_ArrayBuffer_c7cc317e5c29cc0d","ArrayBuffer","__wbg_entries_6d727b73ee02b7ce","__wbg_String_917f38a1211cf44b","__wbg_warn_ade8d3b7ecee11ff","__wbg_readyState_13e55da5ad6d64e2","readyState","__wbg_warn_4affe1093892a4ef","__wbg_close_f4135085ec3fc8f0","__wbg_new_b9b318679315404f","WebSocket","__wbg_setbinaryType_dcb62e0f2b346301","binaryType","__wbg_log_7811587c4c6d2844","__wbg_error_f0a6627f4b23c19d","error","__wbg_info_3ca7870690403fee","info","__wbg_document_183cf1eecfdbffee","__wbg_visibilityState_9721703a5ef75faf","visibilityState","__wbg_getwithrefkey_3b3c46ba20582127","__wbg_length_cace2e0b3ddc0502","__wbg_addEventListener_0f2891b0794e07fa","__wbg_removeEventListener_104d11302bb212d1","__wbindgen_is_bigint","__wbindgen_bigint_from_i64","__wbindgen_in","__wbindgen_bigint_from_u64","BigInt","asUintN","__wbindgen_jsval_eq","__wbg_localStorage_e11f72e996a4f5d9","localStorage","__wbg_getItem_c81cd3ae30cd579a","getItem","__wbg_navigator_7078da62d92ff5ad","navigator","__wbg_mediaDevices_e00b1f64d2b9939f","mediaDevices","__wbg_enumerateDevices_619d52f5eef34c2f","enumerateDevices","__wbg_setItem_fe04f524052a3839","arg4","setItem","__wbindgen_cb_drop","__wbg_deviceId_58f7da2228a26c02","deviceId","__wbg_instanceof_Response_944e2745b5db71f5","__wbg_randomFillSync_a0d98aa11c81fe89","randomFillSync","__wbg_subarray_6ca5cfa7fbb9abbe","__wbg_getRandomValues_504510b5564925af","getRandomValues","__wbindgen_bigint_get_as_i64","__wbindgen_debug_string","__wbindgen_throw","__wbg_then_89e1c559530b85cf","__wbg_queueMicrotask_e5949c35d772a669","queueMicrotask","__wbg_then_1bbc9edafd859b06","__wbg_queueMicrotask_2be8b97a81fe4d00","__wbg_resolve_a3252b2860f0a09e","resolve","__wbg_url_1f609e63ff1a7983","__wbg_send_2860805104507701","__wbg_instanceof_Window_cde2416cf5126a72","Window","__wbg_new_19676474aa414d62","Headers","__wbg_append_feec4143bbf21904","append","__wbg_newwithstrandinit_29038da14d09e330","Request","__wbindgen_closure_wrapper1532","__wbindgen_closure_wrapper1602","__wbindgen_closure_wrapper1834","__wbg_finalize_init","exports","__wbg_init","__wbindgen_wasm_module","__wbindgen_start","URL","telemeterAttributes","telemeter","waitingForInit","TelemeterWASM","catch","finally","local_telemeter","ContentManager","contentManagerAttributes","editorAttributes","customEditors","environment","editorListener","editor","ua","userAgent","deviceProperties","isAndroid","isIOS","toolbar","dbclick","modalDialogInstance","isNewElement","integrationModel","setIntegrationModel","setModalDialogInstance","insert","updateTitle","insertEditor","isEditorLoaded","jsEditor","JsEditor","newInstance","insertInto","contentContainer","rtl","getEditorModel","isRTL","action","direction","addEditorListener","setTimeout","hideKeyboard","formulaDisplayDiv","getElementsByClassName","handleOpenedIosSoftkeyboard","handleClosedIosSoftkeyboard","bind","addEditorAsExternalDependency","script","editorUrl","anchorElement","setHrefToAnchorElement","setProtocolToAnchorElement","getURLFromAnchorElement","stats","getEditorStats","getElementsByTagName","protocol","removePort","port","hostname","pathname","includes","platform","isMobile","setInitialContent","setMathML","focusDisabled","setMathMLWithCallback","onFocus","submitAction","isFormulaEmpty","getMathMLWithSemantics","getActiveEditor","editors","mathmlEntitiesEncoded","updateFormula","disable","notifyWindowClosed","setEmptyMathML","forcedHandMode","onOpen","updateToolbar","zoom","documentElement","clientWidth","innerWidth","setKeyboardMode","trigger","Core","globalListeners","hideHandModeButton","openHandOnKeyboardMathML","wrsEditor","forced","handSwitchHidden","handModeButtonSelector","mutationInstance","handModeButton","querySelector","hidden","disconnect","body","childList","characterData","subtree","waitForHand","handEditor","hand","handTemporalMathML","getMathML","handCoordinates","editorModel","getHandStrokes","setStrokes","fitStrokes","openHand","_wrs_int_wirisProperties","setToolbar","getToolbar","setTitle","title","setParams","setCustomHeaders","headersObj","customHeaders","hasChanges","onKeyDown","keyboardEvent","repeat","list","cancelAction","stopPropagation","preventDefault","shiftKey","activeElement","submitButton","closeDiv","minimizeDiv","cancelButton","CustomEditors","activeEditor","addEditor","editorName","editorParams","icon","confVariable","tooltip","enable","customEditorName","jsProperties","imageCustomEditorName","imageClassName","CASClassName","Event","cancel","PopUpMessage","popupMessageAttributes","overlayElement","callbacks","overlayWrapper","paragraph","overlay","buttonArea","buttonSubmitArguments","class","submitString","closeButton","createButton","closeAction","buttonCancelArguments","cancelString","show","display","blur","cancelCallback","closeCallback","IntegrationModel","setActionsOnCancelButtons","focusProtection","protect","modalElement","editorElement","overrideFocusBehavior","originalElementFocus","HTMLElement","originalElementBlur","unprotect","ModalDialog","modalDialogAttributes","iosSoftkeyboardOpened","iosMeasureUnit","iosDivHeight","deviceWidth","outerWidth","deviceHeight","outerHeight","landscape","portrait","instanceId","orientation","isDesktop","created","previousState","bottom","right","size","websiteBeforeLockParameters","getElementId","titleBar","generalStyleClose","btoa","closeIcon","hoverStyleClose","closeHoverIcon","stackDiv","generalStyleStack","minsIcon","hoverStyleStack","minsHoverIcon","maximizeDiv","generalStyleMaximize","fullsIcon","hoverStyleMaximize","fullsHoverIcon","generalStyleMinimize","minIcon","hoverStyleMinimize","minHoverIcon","role","wrapper","controls","buttonContainer","createSubmitButton","contentManager","popupStrings","popupupProperties","popup","setContentManager","getContentManager","showPopUpMessage","SubmitButton","dataset","testid","getElement","recalculateScrollBar","createModalWindowDesktop","createResizeButtons","addListeners","maximize","createModalWindowAndroid","createModalWindowIos","scrollbarWidth","offsetWidth","resizerBR","resizerTL","activateResizeStateBR","activateResizeStateTL","mouseEvent","initializeResizeProperties","leftOption","resizeDataObject","eventClient","X","y","Y","initialWidth","parseInt","initialHeight","initialRight","initialBottom","leftScale","restoreWebsiteScale","lockWebsiteScroll","restoreState","displayEditor","isMoodle","saveModalProperties","unlockWebsiteScroll","destroy","removeListeners","viewportmeta","contentAttrsToUpdate","contentAttrsValuesToUpdate","setMetaAttrFunc","viewportelement","contentAttrs","contentAttr","attrArray","finalContentMeta","oldAttrs","isAttrToUpdate","attr","bodyStylePosition","bodyStyleOverflow","overflow","htmlStyleOverflow","windowScrollX","scrollX","windowScrollY","scrollY","scrollTo","isIE11","search","orientationChangeAndroidSoftkeyboard","orientationChangeIosSoftkeyboard","minimize","generalStyle","hoverStyle","restoreModalProperties","setResizeButtonsVisibility","recalculatePosition","recalculateScale","cursor","maxIcon","maxHoverIcon","left","top","setSize","innerHeight","clientHeight","offsetHeight","setPosition","recalculateSize","reExpand","visibility","keyCode","click","startDrag","stopDrag","drag","onWindowResize","clientX","changedTouches","client","clientY","dragDataObject","lastDrag","limitWindow","getLimitWindow","limitY","min","minPointer","max","maxPointer","limitX","dragX","dragY","transform","scaleMultiplier","maxHeight","contStyleBottom","contStyleRight","pageXOffset","offSetToolbarY","offSetToolbarX","minPointerY","maxPointerY","minPointerX","maxPointerX","getScrollBarWidth","inner","outer","widthOuter","widthInner","sizeModified","hasScrollBar","inputField","portraitMode","setContainerHeight","flexGrow","TypeError","second","defineProperty","configurable","writable","varArgs","to","nextSource","nextKey","searchElement","fromIndex","o","k","abs","sameValueZero","rawPos","coreProperties","editMode","modalDialog","chemEditorParams","editionProperties","temporalImage","latexRange","editionStartTime","browser","serviceProviderProperties","_globalListeners","initialized","_initialized","setEnvironment","integrationEnvironment","setHeaders","headerObject","getModalDialog","serviceProviderListener","jsConfiguration","jsonConfiguration","addGlobalListener","beforeUpdateFormula","beforeUpdateEvent","insertFormula","focusElement","returnObject","insertElementOnSelection","fillNonLatexNode","afterUpdateEvent","afterUpdateFormula","placeCaretAfterNode","nodeDocument","ownerDocument","setStartAfter","collapse","removeAllRanges","addRange","mathmlOrigin","editorSelection","deleteContents","splitText","select","insertNode","mathml_origin","elapsed_time","now","editor_origin","openModalDialog","selectedItem","getMathmlFromTextNode","latexResult","leftOffset","previousNode","moveToElementText","move","moveEnd","setStart","setEnd","defaultEditorAttributesArray","defaultEditorAttributes","tempAttribute","serverEditorParameters","clientEditorParameters","editorParameters","getCustomEditors","integrationModelProperties","configurationService","scriptName","callbackMethodArguments","editorObject","managesLanguage","integrationParameters","temporalImageResizing","core","getLanguage","callbackFunction","configurationIndex","subsTring","serviceParametersURI","getPath","setCore","offlineModal","offlineModalContent","offlineModalClose","offlineModalWarn","warnIcon","offlineModalMessage","offlineModalMessage1","offlineModalMessage2","modal","solutionTelemeter","M","lms","nam","fam","ver","moodleVersion","category","moodleCourseCategory","course","moodleCourseName","OSData","getOS","broswerData","getBrowser","detectedBrowser","versionBrowser","editorVersion","detectedOS","versionOS","filter","dry_run","api_key","macosPlatforms","windowsPlatforms","iosPlatforms","col","getVersion","setLanguage","getCore","setTarget","setEditorObject","openNewFormulaEditor","onLine","openExistingFormulaEditor","WirisPlugin","currentInstance","util","EditorUtils","addEvents","removeEvents","getBrowserLanguage","userLanguage","HxOverrides","__name__","dateStr","date","m","getMonth","d","getDate","getHours","mi","getMinutes","getSeconds","getFullYear","strDate","setTime","setUTCHours","setUTCMinutes","setUTCSeconds","t","cca","iter","cur","hasNext","IntIter","__class__","Std","Boot","__instanceof","__string_rec","parseFloat","random","floor","tryReady","main","ev","getInstance","haxe","Timer","delay","$bind","bypassEncapsulation","Md5","doLoad","ready","Lib","Log","trace","infos","__trace","clear","__clear_trace","doEncode","str","str2blks","olda","oldb","oldc","oldd","ff","gg","hh","ii","addme","rhex","cmn","bitXOR","bitOR","bitAND","q","rol","num","nblk","blks","_g1","_g","hex_chr","lsw","msw","lsb","msb31","time_ms","me","setInterval","run","stop","measure","t0","stamp","clearInterval","__unhtml","msg","fileName","lineNumber","isClass","isEnum","__ename__","getClass","__enum__","i1","tostr","hasp","__interfLoop","cc","cl","intf","__interfaces__","__super__","Int","ceil","Float","Bool","Dynamic","Class","Enum","__cast","alert","eval","setErrorHandler","onerror","method","scope","NaN","NEGATIVE_INFINITY","POSITIVE_INFINITY","isFinite","Boolean","line","CKEditor5Integration","ckeditorIntegrationModelProperties","integrationFolderName","languageObject","ui","locale","uiLanguage","addEditorListeners","wirislistenersdisabled","checkElement","newElement","sourceElement","wirisActive","isReadOnly","customEditorAttr","getCorePath","editing","insertMathml","model","change","writer","modelElementNew","fromEntries","getAttributes","viewSelection","modelPosition","mapper","toModelPosition","getLastPosition","insertObject","isCollapsed","getRanges","modelRange","toModelRange","modelSelection","createSelection","deleteContent","createPositionAfter","setSelection","viewElement","domConverter","domToView","parent","modelElementOld","toModelElement","createPositionBefore","findText","pivot","createRangeIn","descendants","from","getItems","viewElementData","replaceAll","is","createPositionAt","latexEdited","dataOffset","second$","insertText","viewToDom","toViewElement","MathTypeCommand","Command","execute","options","integration","setEditor","openEditor","image","_getSelectedImage","rangeCount","getFirstRange","span","getChild","mapViewToDom","ChemTypeCommand","MathType","Plugin","requires","Widget","pluginName","_addIntegration","_addCommands","_addTrackChangesIntegration","_addViews","_addSchema","_addConverters","_exposeWiris","integrationProperties","packageInfo","listenTo","evt","domEvent","detail","domTarget","priority","commands","componentFactory","ButtonView","label","mathIcon","on","chemIcon","addObserver","ClickObserver","schema","register","inheritAllFrom","allowAttributes","conversion","for","elementToElement","modelWriter","upcastDispatcher","conversionApi","consumable","viewItem","isLatex","mathIsLatex","processor","XmlDataProcessor","upcastWriter","ViewUpcastWriter","viewDocumentFragment","createDocumentFragment","getChildren","mathAttributes","toData","modelNode","createText","splitResult","splitToAllowedParent","modelCursor","consume","parts","getSplitParts","cursorParent","getClassNames","attrName","htmlContent","math","semantics","child","createViewWidget","modelItem","viewWriter","widgetElement","createContainerElement","mathUIElement","createViewImage","toWidget","htmlDataProcessor","HtmlDataProcessor","imgElement","toView","mathString","imgHtml","createEmptyElement","renderUnsafeAttributes","createDataString","sourceNode","Exception","sourceMathElement","viewToModelPositionOutsideModelElement","hasClass","previewCommand","return","isGeneratingPreview","attributesToPreserve","previewOutput","trackChangesAttrs","attrMatch","spanAttrs","parsedResult","modifiedData","regexp","formulas","safexml","decodeXML","plugins","trackChangesEditing","enableCommand","descriptionFactory","registerElementLabel","quantity"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.umd.js","sources":["../../../../node_modules/dompurify/dist/purify.es.mjs","../../../devkit/src/constants.js","../../../devkit/src/mathml.js","../../../devkit/src/configuration.js","../../../devkit/src/textcache.js","../../../devkit/src/listeners.js","../../../devkit/src/serviceprovider.js","../../../devkit/src/latex.js","../../../devkit/src/stringmanager.js","../../../devkit/src/util.js","../../../devkit/src/image.js","../../../devkit/src/accessibility.js","../../../devkit/src/parser.js","../../../devkit/src/editorlistener.js","../../../devkit/telemeter-wasm/telemeter_wasm.js","../../../devkit/src/telemeter.js","../../../devkit/src/contentmanager.js","../../../devkit/src/customeditors.js","../../../devkit/src/jsvariables.js","../../../devkit/src/event.js","../../../devkit/src/popupmessage.js","../../../devkit/src/focusprotection.js","../../../devkit/src/modal.js","../../../devkit/src/polyfills.js","../../../devkit/src/core.src.js","../../../devkit/src/integrationmodel.js","../../../devkit/src/md5.js","../../src/integration.js","../../src/commands.js","../../src/plugin.js"],"sourcesContent":["/*! @license DOMPurify 3.4.15 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.15/LICENSE */\n\nfunction _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nfunction _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nfunction _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = true,\n o = false;\n try {\n if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = true, n = r;\n } finally {\n try {\n if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _slicedToArray(r, e) {\n return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;\n }\n}\n\nconst entries = Object.entries,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n getPrototypeOf = Object.getPrototypeOf,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nlet freeze = Object.freeze,\n seal = Object.seal,\n create = Object.create; // eslint-disable-line import/no-mutable-exports\nlet _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\nif (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n}\nif (!seal) {\n seal = function seal(x) {\n return x;\n };\n}\nif (!apply) {\n apply = function apply(func, thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n return func.apply(thisArg, args);\n };\n}\nif (!construct) {\n construct = function construct(Func) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n return new Func(...args);\n };\n}\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySplice = unapply(Array.prototype.splice);\nconst arrayIsArray = Array.isArray;\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\nconst numberToString = unapply(Number.prototype.toString);\nconst booleanToString = unapply(Boolean.prototype.toString);\nconst bigintToString = typeof BigInt === 'undefined' ? null : unapply(BigInt.prototype.toString);\nconst symbolToString = typeof Symbol === 'undefined' ? null : unapply(Symbol.prototype.toString);\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst objectToString = unapply(Object.prototype.toString);\nconst regExpTest = unapply(RegExp.prototype.test);\nconst typeErrorCreate = unconstruct(TypeError);\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return function (thisArg) {\n if (thisArg instanceof RegExp) {\n thisArg.lastIndex = 0;\n }\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return apply(func, thisArg, args);\n };\n}\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(Func) {\n return function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return construct(Func, args);\n };\n}\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(set, array) {\n let transformCaseFunc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : stringToLowerCase;\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n if (!arrayIsArray(array)) {\n return set;\n }\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n element = lcElement;\n }\n }\n set[element] = true;\n }\n return set;\n}\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n const isPropertyExist = objectHasOwnProperty(array, index);\n if (!isPropertyExist) {\n array[index] = null;\n }\n }\n return array;\n}\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n for (const _ref2 of entries(object)) {\n var _ref3 = _slicedToArray(_ref2, 2);\n const property = _ref3[0];\n const value = _ref3[1];\n const isPropertyExist = objectHasOwnProperty(object, property);\n if (isPropertyExist) {\n if (arrayIsArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (value && typeof value === 'object' && value.constructor === Object) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n return newObject;\n}\n/**\n * Convert non-node values into strings without depending on direct property access.\n *\n * @param value - The value to stringify.\n * @returns A string representation of the provided value.\n */\nfunction stringifyValue(value) {\n switch (typeof value) {\n case 'string':\n {\n return value;\n }\n case 'number':\n {\n return numberToString(value);\n }\n case 'boolean':\n {\n return booleanToString(value);\n }\n case 'bigint':\n {\n return bigintToString ? bigintToString(value) : '0';\n }\n case 'symbol':\n {\n return symbolToString ? symbolToString(value) : 'Symbol()';\n }\n case 'undefined':\n {\n return objectToString(value);\n }\n case 'function':\n case 'object':\n {\n if (value === null) {\n return objectToString(value);\n }\n const valueAsRecord = value;\n const valueToString = lookupGetter(valueAsRecord, 'toString');\n if (typeof valueToString === 'function') {\n const stringified = valueToString(valueAsRecord);\n return typeof stringified === 'string' ? stringified : objectToString(stringified);\n }\n return objectToString(value);\n }\n default:\n {\n return objectToString(value);\n }\n }\n}\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n object = getPrototypeOf(object);\n }\n function fallbackValue() {\n return null;\n }\n return fallbackValue;\n}\nfunction isRegex(value) {\n try {\n regExpTest(value, '');\n return true;\n } catch (_unused) {\n return false;\n }\n}\n\nconst html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'search', 'section', 'select', 'shadow', 'slot', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']);\nconst svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'enterkeyhint', 'exportparts', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'inputmode', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'part', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\nconst svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']);\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nconst svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\nconst mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover', 'mprescripts']);\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nconst mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\nconst text = freeze(['#text']);\n\nconst html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'command', 'commandfor', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'exportparts', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inert', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'part', 'pattern', 'placeholder', 'playsinline', 'popover', 'popovertarget', 'popovertargetaction', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'slot', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'wrap', 'xmlns']);\nconst svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'amplitude', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dominant-baseline', 'dur', 'edgemode', 'elevation', 'end', 'exponent', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'intercept', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'mask-type', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'pointer-events', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'slope', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'tablevalues', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-orientation', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'vector-effect', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\nconst mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnalign', 'columnlines', 'columnspacing', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lquote', 'lspace', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\nconst xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\nconst MUSTACHE_EXPR = seal(/{{[\\w\\W]*|^[\\w\\W]*}}/g);\nconst ERB_EXPR = seal(/<%[\\w\\W]*|^[\\w\\W]*%>/g);\nconst TMPLIT_EXPR = seal(/\\${[\\w\\W]*/g);\nconst DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nconst ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nconst 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\n);\nconst IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nconst ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nconst DOCTYPE_NAME = seal(/^html$/i);\nconst CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n// Markup-significant character probes used by _sanitizeElements.\n// Shared module-level instances are safe despite the sticky /g flags:\n// unapply() resets lastIndex for RegExp receivers before every call.\nconst ELEMENT_MARKUP_PROBE = seal(/<[/\\w!]/g);\nconst COMMENT_MARKUP_PROBE = seal(/<[/\\w]/g);\nconst FALLBACK_TAG_CLOSE = seal(/<\\/no(script|embed|frames)/i);\nconst SELF_CLOSING_TAG = seal(/\\/>/i);\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n element: 1,\n attribute: 2,\n text: 3,\n cdataSection: 4,\n entityReference: 5,\n // Deprecated\n entityNode: 6,\n // Deprecated\n processingInstruction: 7,\n comment: 8,\n document: 9,\n documentType: 10,\n documentFragment: 11,\n notation: 12 // Deprecated\n};\n/* HTML-namespace elements whose child text nodes are serialized *literally*\n (unescaped) by the HTML fragment-serialization algorithm. Two reparse-mXSS\n shapes ride on that literal serialization:\n (a) an element child - a tree the HTML parser can never build, but the DOM\n API and an XML/XHTML parse can - after which a `</tag>`-bearing text\n sibling breaks the element open on reparse; and\n (b) text-only content that already carries the element's OWN end tag, e.g.\n `<style>...</style><img onerror=x>` built as a node, which the literal\n serializer emits verbatim for the HTML parser to re-open.\n Shape (a) is handled by the firstElementChild branch in _isUnsafeNode; shape\n (b) by the LITERAL_TEXT_CLOSE probe. Both read textContent (the raw-serialized\n form for these elements) rather than innerHTML, because an XML/XHTML working\n document serializes innerHTML with `<` escaped, which silently blinds the\n innerHTML-based probes (rule 1's second probe and FALLBACK_TAG_CLOSE) there.\n `script` is never allow-listed, but is kept here so the guard matches the\n serializer's own literal-text list exactly. */\nconst LITERAL_TEXT_ELEMENT_NAMES = ['style', 'script', 'xmp', 'iframe', 'noembed', 'noframes', 'plaintext', 'noscript'];\nconst LITERAL_TEXT_ELEMENTS = freeze(addToSet({}, LITERAL_TEXT_ELEMENT_NAMES));\n/* Per-element end-tag matcher. On an HTML reparse the ONLY token that\n terminates a literal-text element's raw content is its own end tag; a foreign\n literal-text close (e.g. `</xmp>` sitting inside `<style>`) does not break\n out, so matching is per-element, not a shared alternation. The lookahead\n requires an HTML tag-name terminator (whitespace, `/` or `>`) so a longer\n name such as `</styles` is not mistaken for `</style`. */\nconst LITERAL_TEXT_CLOSE = function () {\n const map = {};\n arrayForEach(LITERAL_TEXT_ELEMENT_NAMES, name => {\n map[name] = seal(new RegExp('</' + name + '(?=[\\\\t\\\\n\\\\f\\\\r />])', 'i'));\n });\n return freeze(map);\n}();\nconst getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n};\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, purifyHostElement) {\n if (typeof trustedTypes !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n }\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n};\nconst _createHooksMap = function _createHooksMap() {\n return {\n afterSanitizeAttributes: [],\n afterSanitizeElements: [],\n afterSanitizeShadowDOM: [],\n beforeSanitizeAttributes: [],\n beforeSanitizeElements: [],\n beforeSanitizeShadowDOM: [],\n uponSanitizeAttribute: [],\n uponSanitizeElement: [],\n uponSanitizeShadowNode: []\n };\n};\n/**\n * Resolve a set-valued configuration option: a fresh set built from\n * cfg[key] when it is an own array property (seeded with a clone of\n * options.base when given, case-normalized via options.transform),\n * the fallback set otherwise.\n *\n * @param cfg the cloned, prototype-free configuration object\n * @param key the configuration property to read\n * @param fallback the set to use when the option is absent or not an array\n * @param options transform and optional base set to merge into\n * @returns the resolved set\n */\nconst _resolveSetOption = function _resolveSetOption(cfg, key, fallback, options) {\n return objectHasOwnProperty(cfg, key) && arrayIsArray(cfg[key]) ? addToSet(options.base ? clone(options.base) : {}, cfg[key], options.transform) : fallback;\n};\n/**\n * Resolve an object-valued configuration option: a prototype-free clone\n * of cfg[key] when it is an own, truthy object property, else a fresh\n * fallback built by makeFallback (fresh on every parse, so a previous\n * parse can never leak state into the next one).\n *\n * @param cfg the cloned, prototype-free configuration object\n * @param key the configuration property to read\n * @param makeFallback builds the fallback value when the option is absent\n * @returns the resolved object\n */\nconst _resolveObjectOption = function _resolveObjectOption(cfg, key, makeFallback) {\n const value = objectHasOwnProperty(cfg, key) ? cfg[key] : undefined;\n return value && typeof value === 'object' ? clone(value) : makeFallback();\n};\nfunction createDOMPurify() {\n let window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n const DOMPurify = root => createDOMPurify(root);\n DOMPurify.version = '3.4.15';\n DOMPurify.removed = [];\n if (!window || !window.document || window.document.nodeType !== NODE_TYPE.document || !window.Element) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n let document = window.document;\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n window.DocumentFragment;\n const HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n Element = window.Element,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap;\n _window$NamedNodeMap === void 0 ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap;\n window.HTMLFormElement;\n const DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n const ElementPrototype = Element.prototype;\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const remove = lookupGetter(ElementPrototype, 'remove');\n // Clobber-safe Attr-node removal. On an HTMLFormElement a descendant named\n // \"removeAttributeNode\" shadows the prototype method via\n // [LegacyOverrideBuiltIns], so element.removeAttributeNode(attr) throws.\n // Calling the cached Element.prototype method with the element as the\n // receiver removes the exact live Attr node regardless of the shadowing.\n const removeAttributeNode = lookupGetter(ElementPrototype, 'removeAttributeNode');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n const getShadowRoot = lookupGetter(ElementPrototype, 'shadowRoot');\n const getAttributes = lookupGetter(ElementPrototype, 'attributes');\n const getNodeType = Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeType') : null;\n const getNodeName = Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeName') : null;\n const getOwnerDocument = Node && Node.prototype ? lookupGetter(Node.prototype, 'ownerDocument') : null;\n /* Clobber-safe nodeType / nodeName reads through the cached Node.prototype\n getters, with a direct-property fallback for environments that lack\n Node.prototype. Sites that need a different fallback (e.g. _isClobbered\n returns early on a null name) intentionally keep their own reads. */\n const _readNodeType = function _readNodeType(node) {\n return getNodeType ? getNodeType(node) : node.nodeType;\n };\n const _readNodeName = function _readNodeName(node) {\n return getNodeName ? getNodeName(node) : node.nodeName;\n };\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n let trustedTypesPolicy;\n let emptyHTML = '';\n // The instance's own internal Trusted Types policy. Unlike a caller-supplied\n // `TRUSTED_TYPES_POLICY`, this is created at most once — Trusted Types throws\n // on duplicate policy names — and is the only policy allowed to persist\n // across configurations and survive `clearConfig()`.\n let defaultTrustedTypesPolicy;\n let defaultTrustedTypesPolicyResolved = false;\n // Tracks whether we are already inside a call to the configured Trusted Types\n // policy (`createHTML` or `createScriptURL`). If a supplied policy callback\n // itself calls `DOMPurify.sanitize` (the cause of #1422), `sanitize` would\n // re-enter the policy and recurse until the stack overflows. We detect that\n // re-entry and throw a clear, actionable error instead. The guard is shared\n // across both callbacks, because either one re-entering `sanitize` triggers\n // the same unbounded recursion.\n let IN_TRUSTED_TYPES_POLICY = 0;\n const _assertNotInTrustedTypesPolicy = function _assertNotInTrustedTypesPolicy() {\n if (IN_TRUSTED_TYPES_POLICY > 0) {\n throw typeErrorCreate('A configured TRUSTED_TYPES_POLICY callback (createHTML or ' + 'createScriptURL) must not call DOMPurify.sanitize, as that causes ' + 'infinite recursion. Do not pass a policy whose callbacks wrap ' + 'DOMPurify as TRUSTED_TYPES_POLICY; see the \"DOMPurify and Trusted ' + 'Types\" section of the README.');\n }\n };\n const _createTrustedHTML = function _createTrustedHTML(html) {\n _assertNotInTrustedTypesPolicy();\n IN_TRUSTED_TYPES_POLICY++;\n try {\n return trustedTypesPolicy.createHTML(html);\n } finally {\n IN_TRUSTED_TYPES_POLICY--;\n }\n };\n const _createTrustedScriptURL = function _createTrustedScriptURL(scriptUrl) {\n _assertNotInTrustedTypesPolicy();\n IN_TRUSTED_TYPES_POLICY++;\n try {\n return trustedTypesPolicy.createScriptURL(scriptUrl);\n } finally {\n IN_TRUSTED_TYPES_POLICY--;\n }\n };\n // Lazily resolve (and cache) the instance's internal default policy.\n // Resolution is attempted at most once: a successful `createPolicy` cannot be\n // repeated (Trusted Types throws on duplicate names), and a failed or\n // unsupported attempt must not be retried on every parse.\n const _getDefaultTrustedTypesPolicy = function _getDefaultTrustedTypesPolicy() {\n if (!defaultTrustedTypesPolicyResolved) {\n defaultTrustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, currentScript);\n defaultTrustedTypesPolicyResolved = true;\n }\n return defaultTrustedTypesPolicy;\n };\n const _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n createDocumentFragment = _document.createDocumentFragment,\n getElementsByTagName = _document.getElementsByTagName;\n const importNode = originalDocument.importNode;\n let hooks = _createHooksMap();\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported = typeof entries === 'function' && typeof getParentNode === 'function' && implementation && implementation.createHTMLDocument !== undefined;\n const MUSTACHE_EXPR$1 = MUSTACHE_EXPR,\n ERB_EXPR$1 = ERB_EXPR,\n TMPLIT_EXPR$1 = TMPLIT_EXPR,\n DATA_ATTR$1 = DATA_ATTR,\n ARIA_ATTR$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$1 = ATTR_WHITESPACE,\n CUSTOM_ELEMENT$1 = CUSTOM_ELEMENT;\n let IS_ALLOWED_URI$1 = IS_ALLOWED_URI;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [...html$1, ...svg$1, ...svgFilters, ...mathMl$1, ...text]);\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [...html, ...svg, ...mathMl, ...xml]);\n /*\n * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n const EXTRA_ELEMENT_HANDLING = Object.seal(create(null, {\n tagCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n }\n }));\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n /* Output should be safe even for XML used within HTML and alike.\n * This means, DOMPurify removes comments when containing risky content.\n */\n let SAFE_FOR_XML = true;\n /* Decide if document with <html>... should be returned */\n let WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n /* Pristine allowlist bindings captured at setConfig() time. On the\n * persistent-config path sanitize() restores the sets from these before\n * the per-walk hook clone-guard, so a hook's in-call widening cannot\n * carry across calls. Null until setConfig() is called; reset by\n * clearConfig(). */\n let SET_CONFIG_ALLOWED_TAGS = null;\n let SET_CONFIG_ALLOWED_ATTR = null;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script',\n // <selectedcontent> mirrors the selected <option>'s subtree, cloned by\n // the UA (customizable <select>) — including any on* handlers — and the\n // engine re-mirrors synchronously whenever a removal changes which\n // option/selectedcontent is current, even inside DOMPurify's inert\n // DOMParser document. Hoisting its children on removal re-inserts a fresh\n // mirror target ahead of the walk, which the engine refills, looping\n // forever (DoS) and amplifying output. Dropping its content on removal\n // (rather than hoisting) breaks that cascade; the content is a duplicate\n // of the option, which is sanitized on its own. See campaign-3 F1/F6.\n 'selectedcontent', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet({}, [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE], stringToString);\n const DEFAULT_MATHML_TEXT_INTEGRATION_POINTS = freeze(['mi', 'mo', 'mn', 'ms', 'mtext']);\n let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, DEFAULT_MATHML_TEXT_INTEGRATION_POINTS);\n const DEFAULT_HTML_INTEGRATION_POINTS = freeze(['annotation-xml']);\n let HTML_INTEGRATION_POINTS = addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS);\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n const formElement = document.createElement('form');\n const isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function _parseConfig() {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? DEFAULT_PARSER_MEDIA_TYPE : cfg.PARSER_MEDIA_TYPE;\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? stringToString : stringToLowerCase;\n /* Set configuration parameters */\n ALLOWED_TAGS = _resolveSetOption(cfg, 'ALLOWED_TAGS', DEFAULT_ALLOWED_TAGS, {\n transform: transformCaseFunc\n });\n ALLOWED_ATTR = _resolveSetOption(cfg, 'ALLOWED_ATTR', DEFAULT_ALLOWED_ATTR, {\n transform: transformCaseFunc\n });\n ALLOWED_NAMESPACES = _resolveSetOption(cfg, 'ALLOWED_NAMESPACES', DEFAULT_ALLOWED_NAMESPACES, {\n transform: stringToString\n });\n URI_SAFE_ATTRIBUTES = _resolveSetOption(cfg, 'ADD_URI_SAFE_ATTR', DEFAULT_URI_SAFE_ATTRIBUTES, {\n transform: transformCaseFunc,\n base: DEFAULT_URI_SAFE_ATTRIBUTES\n });\n DATA_URI_TAGS = _resolveSetOption(cfg, 'ADD_DATA_URI_TAGS', DEFAULT_DATA_URI_TAGS, {\n transform: transformCaseFunc,\n base: DEFAULT_DATA_URI_TAGS\n });\n FORBID_CONTENTS = _resolveSetOption(cfg, 'FORBID_CONTENTS', DEFAULT_FORBID_CONTENTS, {\n transform: transformCaseFunc\n });\n FORBID_TAGS = _resolveSetOption(cfg, 'FORBID_TAGS', clone({}), {\n transform: transformCaseFunc\n });\n FORBID_ATTR = _resolveSetOption(cfg, 'FORBID_ATTR', clone({}), {\n transform: transformCaseFunc\n });\n USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES') ? cfg.USE_PROFILES && typeof cfg.USE_PROFILES === 'object' ? clone(cfg.USE_PROFILES) : cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI$1 = isRegex(cfg.ALLOWED_URI_REGEXP) ? cfg.ALLOWED_URI_REGEXP : IS_ALLOWED_URI; // Default regexp\n NAMESPACE = typeof cfg.NAMESPACE === 'string' ? cfg.NAMESPACE : HTML_NAMESPACE; // Default HTML namespace\n MATHML_TEXT_INTEGRATION_POINTS = _resolveObjectOption(cfg, 'MATHML_TEXT_INTEGRATION_POINTS', () => addToSet({}, DEFAULT_MATHML_TEXT_INTEGRATION_POINTS) // Default built-in map\n );\n HTML_INTEGRATION_POINTS = _resolveObjectOption(cfg, 'HTML_INTEGRATION_POINTS', () => addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS) // Default built-in map\n );\n const customElementHandling = _resolveObjectOption(cfg, 'CUSTOM_ELEMENT_HANDLING', () => create(null));\n CUSTOM_ELEMENT_HANDLING = create(null);\n if (objectHasOwnProperty(customElementHandling, 'tagNameCheck') && isRegexOrFunction(customElementHandling.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = customElementHandling.tagNameCheck; // Default undefined\n }\n if (objectHasOwnProperty(customElementHandling, 'attributeNameCheck') && isRegexOrFunction(customElementHandling.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = customElementHandling.attributeNameCheck; // Default undefined\n }\n if (objectHasOwnProperty(customElementHandling, 'allowCustomizedBuiltInElements') && typeof customElementHandling.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = customElementHandling.allowCustomizedBuiltInElements; // Default undefined\n }\n seal(CUSTOM_ELEMENT_HANDLING);\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, text);\n ALLOWED_ATTR = create(null);\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Always reset function-based ADD_TAGS / ADD_ATTR checks to prevent\n * leaking across calls when switching from function to array config */\n EXTRA_ELEMENT_HANDLING.tagCheck = null;\n EXTRA_ELEMENT_HANDLING.attributeCheck = null;\n /* Merge configuration parameters */\n if (objectHasOwnProperty(cfg, 'ADD_TAGS')) {\n if (typeof cfg.ADD_TAGS === 'function') {\n EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n } else if (arrayIsArray(cfg.ADD_TAGS)) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n }\n if (objectHasOwnProperty(cfg, 'ADD_ATTR')) {\n if (typeof cfg.ADD_ATTR === 'function') {\n EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n } else if (arrayIsArray(cfg.ADD_ATTR)) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n }\n if (objectHasOwnProperty(cfg, 'ADD_FORBID_CONTENTS') && arrayIsArray(cfg.ADD_FORBID_CONTENTS)) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n // Re-derive the active Trusted Types policy from this configuration on\n // every parse. The active policy must never be sticky closure state that\n // outlives the config that set it: a caller-supplied policy left in place\n // after `clearConfig()` — or after a later call that supplied none, or\n // `TRUSTED_TYPES_POLICY: null` — could sign a subsequent \"default\"\n // `RETURN_TRUSTED_TYPE` result with a foreign, possibly unsafe policy.\n // See GHSA-vxr8-fq34-vvx9.\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.');\n }\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.');\n }\n // A caller-supplied policy applies to this configuration only.\n const previousTrustedTypesPolicy = trustedTypesPolicy;\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n // Sign local variables required by `sanitize`. If the supplied policy's\n // `createHTML` is circular (i.e. it calls `DOMPurify.sanitize`), this\n // throws via the re-entrancy guard. Restore the previous policy first so\n // the instance is not left in a poisoned state. See #1422.\n try {\n emptyHTML = _createTrustedHTML('');\n } catch (error) {\n trustedTypesPolicy = previousTrustedTypesPolicy;\n throw error;\n }\n } else if (cfg.TRUSTED_TYPES_POLICY === null) {\n // Explicit opt-out for this call: perform no Trusted Types signing and\n // create nothing (so a strict `trusted-types` CSP that disallows a\n // `dompurify` policy can still call `sanitize` from inside its own\n // policy — see #1422). Resetting to `undefined` rather than a sticky\n // `null` also drops any previously retained caller policy, so it cannot\n // resurface on a later call, while still allowing the next config-less\n // call to restore the internal default policy. See GHSA-vxr8-fq34-vvx9.\n trustedTypesPolicy = undefined;\n emptyHTML = '';\n } else {\n // No policy supplied: keep the currently active policy if one is set — a\n // previously supplied policy is intentionally sticky across config-less\n // calls — otherwise fall back to the instance's own internal policy,\n // created at most once. (A policy supplied for a *single* call still\n // lingers by design; what must not linger is a policy whose configuration\n // has been torn down via `clearConfig()`, which restores the default.)\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _getDefaultTrustedTypesPolicy();\n }\n // Sign internal variables only when a policy is active. A falsy policy\n // (Trusted Types unsupported, creation failed, or an explicit opt-out)\n // leaves `emptyHTML` as a plain string, so we never call `.createHTML` on\n // a non-policy and throw. See #1422.\n if (trustedTypesPolicy && typeof emptyHTML === 'string') {\n emptyHTML = _createTrustedHTML('');\n }\n }\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n CONFIG = cfg;\n };\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [...svg$1, ...svgFilters, ...svgDisallowed]);\n const ALL_MATHML_TAGS = addToSet({}, [...mathMl$1, ...mathMlDisallowed]);\n /**\n * Namespace rules for an element in the SVG namespace.\n *\n * @param tagName the element's lowercase tag name\n * @param parent the (possibly simulated) parent node\n * @param parentTagName the parent's lowercase tag name\n * @returns true if a spec-compliant parser could produce this element\n */\n const _checkSvgNamespace = function _checkSvgNamespace(tagName, parent, parentTagName) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n // The only way to switch from MathML to SVG is via <svg>\n // if the parent is either <annotation-xml> or a MathML\n // text integration point.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n }\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n };\n /**\n * Namespace rules for an element in the MathML namespace.\n *\n * @param tagName the element's lowercase tag name\n * @param parent the (possibly simulated) parent node\n * @param parentTagName the parent's lowercase tag name\n * @returns true if a spec-compliant parser could produce this element\n */\n const _checkMathMlNamespace = function _checkMathMlNamespace(tagName, parent, parentTagName) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n };\n /**\n * Namespace rules for an element in the HTML namespace.\n *\n * @param tagName the element's lowercase tag name\n * @param parent the (possibly simulated) parent node\n * @param parentTagName the parent's lowercase tag name\n * @returns true if a spec-compliant parser could produce this element\n */\n const _checkHtmlNamespace = function _checkHtmlNamespace(tagName, parent, parentTagName) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n };\n /**\n * @param element a DOM element whose namespace is being checked\n * @returns Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function _checkValidNamespace(element) {\n let parent = getParentNode(element);\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template'\n };\n }\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n if (element.namespaceURI === SVG_NAMESPACE) {\n return _checkSvgNamespace(tagName, parent, parentTagName);\n }\n if (element.namespaceURI === MATHML_NAMESPACE) {\n return _checkMathMlNamespace(tagName, parent, parentTagName);\n }\n if (element.namespaceURI === HTML_NAMESPACE) {\n return _checkHtmlNamespace(tagName, parent, parentTagName);\n }\n // For XHTML and XML documents that support custom namespaces\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && ALLOWED_NAMESPACES[element.namespaceURI]) {\n return true;\n }\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n /**\n * _forceRemove\n *\n * @param node a DOM node\n */\n const _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n getParentNode(node).removeChild(node);\n } catch (_) {\n /* The normal detach failed — this is reached for a parentless node\n (getParentNode() is null, so .removeChild throws). Element.prototype\n .remove() is itself a spec no-op on a parentless node, so a recorded\n \"removal\" would otherwise hand the caller back an intact,\n payload-bearing node (e.g. a detached IN_PLACE root the mXSS canary or\n the style-with-element-child rule decided to kill). Fail closed by\n throwing — exactly as a clobbered root does at the IN_PLACE entry —\n rather than trying to \"neutralize\" the node via its own methods.\n Neutralizing would mean calling getAttributeNames()/removeAttribute()\n on the node, both of which a <form> root can clobber via a named child\n (and _isClobbered does not even probe getAttributeNames), so the\n neutralize step could itself be silently defeated, leaving the payload\n intact. A throw touches only the cached, clobber-safe remove() and\n getParentNode(). Generalizes GHSA-r47g-fvhr-h676 (clobbered-form root)\n to every root-kill reason. REPORT-3.\n This lives inside the catch, so it never fires for a normally-removed\n in-tree node: those have a parent, removeChild() succeeds, and the\n catch is not entered. Only a kept (parentless) root reaches here. */\n remove(node);\n if (!getParentNode(node)) {\n throw typeErrorCreate('a node selected for removal could not be detached from its tree ' + 'and cannot be safely returned; refusing to sanitize in place');\n }\n }\n };\n /**\n * _stripAttributeNode\n *\n * Remove a single Attr node case/namespace-exactly on an attribute-teardown\n * path. Name-based removeAttribute() ASCII-lowercases its lookup key for an\n * HTML element in an HTML document and so silently misses a case-preserved\n * handler (e.g. `ONERROR` off an XML/XHTML import) - the same defect\n * _removeAttribute() was fixed for, which a name-based call would reintroduce\n * on these IN_PLACE teardown paths. Unlike _removeAttribute this does not\n * record into DOMPurify.removed: the neutralize passes intentionally do not\n * book-keep. A clobbered/detached node falls back to best-effort name-based\n * removal.\n *\n * @param element the element to strip the attribute from\n * @param attribute the Attr node to remove\n * @param name the attribute's name, for the fallback path\n */\n const _stripAttributeNode = function _stripAttributeNode(element, attribute, name) {\n try {\n removeAttributeNode(element, attribute);\n } catch (_) {\n try {\n element.removeAttribute(name);\n } catch (_) {}\n }\n };\n /**\n * _neutralizeRoot\n *\n * Fail-closed teardown of an in-place root after the sanitize walk aborts\n * (campaign-3 F2). An internal throw mid-walk — e.g. a page-registered\n * custom element's reaction detaches a node so `_forceRemove`'s deliberate\n * parentless guard throws, or any other re-entrant engine mutation — would\n * otherwise leave the caller's *live* tree half-sanitized, with everything\n * after the abort point still carrying its handlers. There is no safe way\n * to resume the walk (the tree mutated under us), so we strip the root bare:\n * remove every child and every attribute, then let the caller's catch see\n * the original error. Clobber-safe (cached `remove`/`childNodes`/`attributes`\n * getters; the root was already clobber-pre-flighted at the IN_PLACE entry).\n *\n * @param root the in-place root to empty\n */\n const _neutralizeRoot = function _neutralizeRoot(root) {\n /* Strip every disallowed attribute (on* handlers included) off the whole\n subtree BEFORE detaching anything. Detaching first would hand back\n handler-bearing originals (e.g. an already-loading `<img onerror>`)\n whose queued resource event still fires in page scope after we throw.\n Clobber-safe reads; a doomed clobbered node's own attributes are\n irrelevant while its non-clobbered descendants are reached and scrubbed. */\n _neutralizeSubtree(root);\n const childNodes = getChildNodes(root);\n if (childNodes) {\n const snapshot = [];\n arrayForEach(childNodes, child => {\n arrayPush(snapshot, child);\n });\n arrayForEach(snapshot, child => {\n try {\n remove(child);\n } catch (_) {\n /* Best-effort teardown; a still-attached child is handled below */\n }\n });\n }\n const attributes = getAttributes(root);\n if (attributes) {\n for (let i = attributes.length - 1; i >= 0; --i) {\n const attribute = attributes[i];\n const name = attribute && attribute.name;\n if (typeof name === 'string') {\n _stripAttributeNode(root, attribute, name);\n }\n }\n }\n };\n /**\n * _removeAttribute\n *\n * Name-based getAttributeNode()/removeAttribute() ASCII-lowercase their\n * lookup key for HTML elements in an HTML document, so they silently miss an\n * attribute whose stored qualified name still contains uppercase ASCII\n * letters. That happens when the node came from a case-preserving source\n * (an XML/XHTML document imported via importNode(), or createAttributeNS()),\n * where e.g. `ONERROR` survives the walk: the policy check lowercases to\n * `onerror` and rejects it, but `removeAttribute('ONERROR')` looks up\n * `onerror` and finds nothing. Remove the exact Attr node instead, which is\n * case- and namespace-exact, and fall back to name-based removal only when\n * the caller could not supply the node.\n *\n * @param name an Attribute name\n * @param element a DOM node\n * @param attr the exact Attr node to remove, when the caller has it\n */\n const _removeAttribute = function _removeAttribute(name, element, attr) {\n if (!attr) {\n try {\n attr = element.getAttributeNode(name);\n } catch (_) {\n attr = null;\n }\n }\n arrayPush(DOMPurify.removed, {\n attribute: attr || null,\n from: element\n });\n try {\n if (attr) {\n removeAttributeNode(element, attr);\n } else {\n element.removeAttribute(name);\n }\n } catch (_) {\n /* Clobbered or already-detached node - best-effort fall back to a\n name-based removal so the \"is\" handling below still runs. Note this\n fallback ASCII-lowercases its lookup key in an HTML document and so\n cannot reach a case-preserved attribute name; the cached\n removeAttributeNode() above is what removes those, and a clobbered\n form is already removed wholesale by _isClobbered() before reaching\n here. */\n try {\n element.removeAttribute(name);\n } catch (_) {}\n }\n // We void attribute values for unremovable \"is\" attributes\n if (name === 'is') {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(element);\n } catch (_) {}\n } else {\n try {\n element.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _stripDisallowedAttributes\n *\n * Removes every attribute the active configuration does not allow from a\n * single element, using the same allowlist as the main attribute pass (so\n * `on*` handlers go, but no `/^on/` blocklist is introduced). Used only to\n * neutralise nodes that are being discarded from an in-place tree.\n *\n * @param element the element to strip\n */\n const _stripDisallowedAttributes = function _stripDisallowedAttributes(element) {\n const attributes = getAttributes(element);\n if (!attributes) {\n return;\n }\n for (let i = attributes.length - 1; i >= 0; --i) {\n const attribute = attributes[i];\n const name = attribute && attribute.name;\n if (typeof name !== 'string' || ALLOWED_ATTR[transformCaseFunc(name)]) {\n continue;\n }\n _stripAttributeNode(element, attribute, name);\n }\n };\n /**\n * _neutralizeSubtree\n *\n * Completes the audit-5 F1 fix across every removal path. The KEEP_CONTENT\n * move-hoist neutralises only disallowed-tag removals; clobber, mXSS-canary,\n * namespace, comment, processing-instruction and KEEP_CONTENT:false removals\n * all drop their subtree wholesale via `_forceRemove`. On the IN_PLACE path\n * those dropped nodes are detached from the caller's LIVE tree but a\n * handler-bearing original among them (an `<img onerror>`/`<video>` that was\n * loading) keeps its queued resource event, which fires in page scope after\n * sanitize returns. This walks a removed subtree and strips every attribute\n * the active configuration does not allow — so `on*` handlers are cancelled\n * through the SAME allowlist that governs kept nodes, not a separate `/^on/`\n * blocklist. Run synchronously before sanitize returns, i.e. before any\n * queued event can fire. Hook-free by design: these nodes leave the output,\n * so firing attribute hooks for them would be surprising. Clobber-safe reads;\n * a doomed clobbered node may shadow `removeAttribute` (its own attributes are\n * irrelevant — it is discarded — while its non-clobbered descendants, e.g.\n * the `<img>`, are reached and scrubbed).\n *\n * @param root the root of a removed subtree to neutralise\n */\n const _neutralizeSubtree = function _neutralizeSubtree(root) {\n const stack = [root];\n while (stack.length > 0) {\n const node = stack.pop();\n const nodeType = _readNodeType(node);\n if (nodeType === NODE_TYPE.element) {\n _stripDisallowedAttributes(node);\n }\n const childNodes = getChildNodes(node);\n if (childNodes) {\n for (let i = childNodes.length - 1; i >= 0; --i) {\n stack.push(childNodes[i]);\n }\n }\n }\n };\n /**\n * _neutralizePatchLinkage\n *\n * IN_PLACE entry pre-pass (declarative-partial-updates / streaming\n * hardening, https://github.com/WICG/declarative-partial-updates).\n *\n * The main walk strips patch linkage (`for`/`patchsrc`) and removes range\n * markers (PIs / markup comments) node-by-node, in document order, AS it\n * reaches each node. On a live in-place root that leaves a window: from the\n * moment the root is connected until the walk arrives at a given node, that\n * node's linkage is live. A patch applied on connection/stream can fire as\n * a microtask during the walk and inject or teleport an unsanitized DOM\n * range into a region the iterator has already passed and will not revisit,\n * so the post-return \"tree is sanitized\" contract is violated. Sweep the\n * whole tree once up front and sever every linkage before the walk begins,\n * closing that window.\n *\n * This CANNOT undo a patch that already fired before sanitize ran — that is\n * the irreducible \"do not IN_PLACE a live-connected attacker tree\" caveat —\n * but it closes everything from sanitize-start onward. Gated on SAFE_FOR_XML\n * to group with the rest of the declarative-partial-updates handling and\n * stay overridable, consistent with the codebase.\n *\n * Clobber-safe traversal (cached childNodes getter); per-node try/catch so a\n * clobbered root cannot defeat the sweep of its non-clobbered descendants.\n *\n * NOTE (pending real-Chrome confirmation, see test/declarative-patch-probe\n * .html Q1): this mirrors the existing policy of keeping `for` on\n * <label>/<output>. If the shipping feature can drive a patch through a\n * surviving `for`-on-label/output + `id` pair, this pre-pass and the\n * attribute check at _isBasicCustomElement's caller must additionally drop\n * that pair on the IN_PLACE path. Left as-is until the taxonomy is verified.\n *\n * @param root the in-place root to sweep\n */\n /**\n * Central policy for declarative-partial-updates patch-linkage attributes,\n * shared by the _neutralizePatchLinkage pre-pass and _isValidAttribute so\n * the two sites cannot drift: `patchsrc` always links, `for` links\n * everywhere except on <label>/<output>, and the whole policy is gated on\n * SAFE_FOR_XML (see the rationale block in _isValidAttribute).\n *\n * @param lcName the transformCaseFunc'd attribute name\n * @param lcTag the transformCaseFunc'd tag name of the carrying element\n * @return true if the attribute is patch linkage and must be dropped\n */\n const _isPatchLinkageAttribute = function _isPatchLinkageAttribute(lcName, lcTag) {\n if (!SAFE_FOR_XML) {\n return false;\n }\n if (lcName === 'patchsrc') {\n return true;\n }\n return lcName === 'for' && lcTag !== 'label' && lcTag !== 'output';\n };\n const _neutralizePatchLinkage = function _neutralizePatchLinkage(root) {\n if (!SAFE_FOR_XML) {\n return;\n }\n const stack = [root];\n while (stack.length > 0) {\n const node = stack.pop();\n const nodeType = _readNodeType(node);\n /* Remove range markers (the target side of a patch linkage): every\n processing instruction, and any markup-bearing comment. */\n if (nodeType === NODE_TYPE.processingInstruction || nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, node.data)) {\n try {\n remove(node);\n } catch (_) {\n /* Best-effort */\n }\n continue;\n }\n /* Strip patch-source attributes (the source side) off elements. */\n if (nodeType === NODE_TYPE.element) {\n const element = node;\n const lcTag = transformCaseFunc(_readNodeName(node));\n try {\n if (element.hasAttribute && element.hasAttribute('patchsrc')) {\n element.removeAttribute('patchsrc');\n }\n if (element.hasAttribute && element.hasAttribute('for') && _isPatchLinkageAttribute('for', lcTag)) {\n element.removeAttribute('for');\n }\n } catch (_) {\n /* Clobbered removeAttribute/hasAttribute on a doomed node — ignore */\n }\n }\n const childNodes = getChildNodes(node);\n if (childNodes) {\n for (let i = childNodes.length - 1; i >= 0; --i) {\n stack.push(childNodes[i]);\n }\n }\n }\n };\n /**\n * _initDocument\n *\n * @param dirty - a string of dirty markup\n * @return a DOM, filled with the dirty markup\n */\n const _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml' && NAMESPACE === HTML_NAMESPACE) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n const dirtyPayload = trustedTypesPolicy ? _createTrustedHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? emptyHTML : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n const body = doc.body || doc.documentElement;\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param root The root element or node to start traversing on.\n * @return The created NodeIterator\n */\n const _createNodeIterator = function _createNodeIterator(root) {\n /* Read ownerDocument through the cached Node.prototype getter, never the\n direct property. HTMLFormElement has [LegacyOverrideBuiltIns], so a\n clobbering child (<input name=\"ownerDocument\"> or a form-associated\n external input) shadows the prototype getter and makes a direct read\n return that <input>. createNodeIterator.call(<input>, ...) then throws\n \"Illegal invocation\", and on the IN_PLACE path that throw lands before\n the walk's fail-closed barrier - leaving the caller's live tree, with\n any already-armed handler in it, un-neutralized. The cached getter\n returns the real Document regardless of the clobber. */\n const doc = getOwnerDocument ? getOwnerDocument(root) : root.ownerDocument;\n return createNodeIterator.call(doc || root, root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT | NodeFilter.SHOW_PROCESSING_INSTRUCTION | NodeFilter.SHOW_CDATA_SECTION, null);\n };\n /**\n * Replace template expression syntax (mustache, ERB, template\n * literal) with a space; shared by all SAFE_FOR_TEMPLATES scrub\n * sites. Order matters: mustache, then ERB, then template literal.\n *\n * @param value the string to scrub\n * @returns the scrubbed string\n */\n const _stripTemplateExpressions = function _stripTemplateExpressions(value) {\n value = stringReplace(value, MUSTACHE_EXPR$1, ' ');\n value = stringReplace(value, ERB_EXPR$1, ' ');\n value = stringReplace(value, TMPLIT_EXPR$1, ' ');\n return value;\n };\n /**\n * Strip template-engine expressions ({{...}}, ${...}, <%...%>) from the\n * character data of an element subtree. Used as the final safety net for\n * SAFE_FOR_TEMPLATES on every DOM-returning code path so that expressions\n * which only form after text-node normalization (e.g. fragments split across\n * stripped elements) cannot survive into a template-evaluating framework.\n *\n * Walks text/comment/CDATA/processing-instruction nodes and mutates `.data`\n * in place rather than round-tripping through innerHTML. This preserves\n * descendant node references (important for IN_PLACE callers), avoids a\n * serialize/reparse cycle, and reads literal character data — which means\n * `<%...%>` in text content matches the ERB regex against its real bytes\n * instead of the HTML-entity-escaped form innerHTML would produce.\n *\n * Attribute values are not visited here; SAFE_FOR_TEMPLATES handling for\n * attributes is performed during the per-node `_sanitizeAttributes` pass.\n *\n * @param node The root element whose character data should be scrubbed.\n */\n const _scrubTemplateExpressions2 = function _scrubTemplateExpressions(node) {\n var _node$querySelectorAl;\n node.normalize();\n /* Clobber-safe ownerDocument read, same reasoning as _createNodeIterator:\n under SAFE_FOR_TEMPLATES this runs on the live IN_PLACE root, which may\n carry a form-named-getter override of ownerDocument. */\n const doc = getOwnerDocument ? getOwnerDocument(node) : node.ownerDocument;\n const walker = createNodeIterator.call(doc || node, node,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_TEXT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_CDATA_SECTION | NodeFilter.SHOW_PROCESSING_INSTRUCTION, null);\n let currentNode = walker.nextNode();\n while (currentNode) {\n currentNode.data = _stripTemplateExpressions(currentNode.data);\n currentNode = walker.nextNode();\n }\n // NodeIterator does not descend into <template>.content per the DOM spec,\n // so we must explicitly recurse into each template's content fragment,\n // mirroring the approach used by _sanitizeShadowDOM.\n const templates = (_node$querySelectorAl = node.querySelectorAll) === null || _node$querySelectorAl === void 0 ? void 0 : _node$querySelectorAl.call(node, 'template');\n if (templates) {\n arrayForEach(templates, tmpl => {\n if (_isDocumentFragment(tmpl.content)) {\n _scrubTemplateExpressions2(tmpl.content);\n }\n });\n }\n };\n /**\n * _isClobbered\n *\n * Detect DOM-clobbering on HTMLFormElement nodes. Form is the only HTML\n * interface with [LegacyOverrideBuiltIns]; a descendant element with a\n * `name` attribute matching a prototype property shadows that property\n * on direct reads. We use this check at the IN_PLACE entry-point and\n * during attribute sanitization to refuse clobbered forms.\n *\n * @param element element to check for clobbering attacks\n * @return true if clobbered, false if safe\n */\n const _isClobbered = function _isClobbered(element) {\n // Realm-independent tag-name probe. If we can't determine the tag\n // name at all, we can't reason about clobbering — return false\n // (the caller's other defences still apply).\n const realTagName = getNodeName ? getNodeName(element) : null;\n if (typeof realTagName !== 'string') {\n return false;\n }\n if (transformCaseFunc(realTagName) !== 'form') {\n return false;\n }\n return typeof element.nodeName !== 'string' || typeof element.textContent !== 'string' || typeof element.removeChild !== 'function' ||\n // Realm-safe NamedNodeMap detection: equality against the cached\n // prototype getter. Clobbered .attributes (e.g. <input name=\"attributes\">)\n // makes the direct read diverge from the cached read; a clean form\n // (same-realm OR foreign-realm) has both reads pointing at the same\n // canonical NamedNodeMap.\n element.attributes !== getAttributes(element) || typeof element.removeAttribute !== 'function' ||\n // A form descendant named \"removeAttributeNode\" or \"getAttributeNode\"\n // shadows these Attr-node methods via [LegacyOverrideBuiltIns].\n // _removeAttribute() / _stripAttributeNode() reach for\n // element.removeAttributeNode(attr) first; when it is shadowed the call\n // throws and the name-based fallback element.removeAttribute(name)\n // ASCII-lowercases its lookup key in an HTML document, silently missing\n // a case-preserved event-handler attribute (e.g. an ONANIMATIONSTART\n // that reached the sanitizer through an XML/XHTML parse). Flag the form\n // so it is removed wholesale, exactly as for the other shadowed methods.\n typeof element.removeAttributeNode !== 'function' || typeof element.getAttributeNode !== 'function' || typeof element.setAttribute !== 'function' || typeof element.namespaceURI !== 'string' || typeof element.insertBefore !== 'function' || typeof element.hasChildNodes !== 'function' ||\n // NodeType clobbering probe. Cached Node.prototype.nodeType getter\n // returns the integer 1 for any Element regardless of realm; direct\n // read on a clobbered form (e.g. <input name=\"nodeType\">) returns\n // the named child element. Cheap addition — nodeType is read from\n // an internal slot, no serialization cost — and removes a residual\n // clobbering surface used by several mXSS / PI / comment branches\n // in _sanitizeElements that compare currentNode.nodeType directly.\n element.nodeType !== getNodeType(element) ||\n // HTMLFormElement has [LegacyOverrideBuiltIns]: a descendant named\n // \"childNodes\" shadows the prototype getter. Direct reads of\n // form.childNodes from a clobbered form return the named child\n // instead of the real NodeList, so any walk that reads it directly\n // skips the form's real children. Compare the direct read to the\n // cached Node.prototype getter — when the form's named-property\n // getter intercepts the read, the two values differ and we flag\n // the form. This catches every clobbering child type (input,\n // select, etc.) regardless of whether the named child happens to\n // carry a numeric .length, which a typeof-based probe would miss\n // (e.g. HTMLSelectElement.length is a defined unsigned-long).\n element.childNodes !== getChildNodes(element);\n };\n /**\n * Checks whether the given value is a DocumentFragment from any realm.\n *\n * The realm-independent replacement reads `nodeType` through the cached\n * Node.prototype getter and compares to the DOCUMENT_FRAGMENT_NODE\n * constant (11). nodeType is a numeric value resolved from the node's\n * internal slot, identical across realms for the same kind of node.\n *\n * @param value object to check\n * @return true if value is a DocumentFragment-shaped node from any realm\n */\n const _isDocumentFragment = function _isDocumentFragment(value) {\n if (!getNodeType || typeof value !== 'object' || value === null) {\n return false;\n }\n try {\n return getNodeType(value) === NODE_TYPE.documentFragment;\n } catch (_) {\n return false;\n }\n };\n /**\n * Checks whether the given object is a DOM node, including nodes that\n * originate from a different window/realm (e.g. an iframe's\n * contentDocument). The previous `value instanceof Node` check was\n * realm-bound: nodes from a different window failed it, causing\n * sanitize() to silently stringify them and reset IN_PLACE to false,\n * returning the original node unsanitized. See GHSA-4w3q-35jp-p934.\n *\n * @param value object to check whether it's a DOM node\n * @return true if value is a DOM node from any realm\n */\n const _isNode = function _isNode(value) {\n if (!getNodeType || typeof value !== 'object' || value === null) {\n return false;\n }\n try {\n return typeof getNodeType(value) === 'number';\n } catch (_) {\n return false;\n }\n };\n function _executeHooks(hooks, currentNode, data) {\n if (hooks.length === 0) {\n return;\n }\n arrayForEach(hooks, hook => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n }\n /**\n * Structural-threat checks that condemn a node regardless of the\n * allowlists: mXSS via namespace confusion, risky CSS construction,\n * processing instructions, markup-bearing comments. Pure predicate;\n * the caller removes. Check order is load-bearing.\n *\n * @param currentNode the node to inspect\n * @param tagName the node's transformCaseFunc'd tag name\n * @return true if the node must be removed\n */\n const _isUnsafeNode = function _isUnsafeNode(currentNode, tagName) {\n /* Detect mXSS attempts abusing namespace confusion */\n if (SAFE_FOR_XML && currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.textContent) && regExpTest(ELEMENT_MARKUP_PROBE, currentNode.innerHTML)) {\n return true;\n }\n /* Remove rawtext/literal-text elements whose literal serialization\n re-opens markup on an HTML reparse - shapes (a) and (b) documented at\n LITERAL_TEXT_ELEMENTS. Both are invisible to rule 1 above (which\n self-disables once there is an element child, and whose second probe\n reads the innerHTML an XML/XHTML document serializes escaped), which\n is why both probes here read textContent instead. Previously only\n `style`-with-element-child was covered; every element in\n LITERAL_TEXT_ELEMENTS shares this literal serialization and is\n equally affected. */\n if (SAFE_FOR_XML && currentNode.namespaceURI === HTML_NAMESPACE && LITERAL_TEXT_ELEMENTS[tagName] && (_isNode(currentNode.firstElementChild) || typeof currentNode.textContent === 'string' && regExpTest(LITERAL_TEXT_CLOSE[tagName], currentNode.textContent))) {\n return true;\n }\n /* Remove any occurrence of processing instructions */\n if (currentNode.nodeType === NODE_TYPE.processingInstruction) {\n return true;\n }\n /* Remove any kind of possibly harmful comments */\n if (SAFE_FOR_XML && currentNode.nodeType === NODE_TYPE.comment && regExpTest(COMMENT_MARKUP_PROBE, currentNode.data)) {\n return true;\n }\n return false;\n };\n /**\n * Evaluate a CUSTOM_ELEMENT_HANDLING check (a RegExp or a predicate\n * function, per the validation in _parseConfig) against a name.\n * Additional arguments are forwarded to predicate functions - the\n * attributeNameCheck predicate receives the tag name as its second\n * argument. A null/absent check never matches.\n *\n * @param check the configured tagNameCheck / attributeNameCheck value\n * @param name the name to test\n * @param args extra arguments forwarded to a predicate function\n * @return true if the check matches the name\n */\n const _matchesNameCheck = function _matchesNameCheck(check, name) {\n if (check instanceof RegExp) {\n return regExpTest(check, name);\n }\n if (check instanceof Function) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n return Boolean(check(name, ...args));\n }\n return false;\n };\n /**\n * Handle a node whose tag is forbidden or not allowlisted: keep\n * allowed custom elements (false return exits _sanitizeElements\n * early - the namespace and fallback-tag removal checks are\n * intentionally skipped for kept custom elements), else hoist\n * content per KEEP_CONTENT and remove.\n *\n * A kept custom element is the ONLY case in which this function\n * returns false, so the caller uses that return value to run the\n * afterSanitizeElements hook on the kept element and keep the\n * element-hook lifecycle consistent with normal allowlisted\n * elements (GHSA-c2j3-45gr-mqc4).\n *\n * @param currentNode the disallowed node\n * @param tagName the node's transformCaseFunc'd tag name\n * @return true if the node was removed, false if kept\n */\n const _sanitizeDisallowedNode = function _sanitizeDisallowedNode(currentNode, tagName, root) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) {\n return false;\n }\n /* Keep content except for bad-listed elements.\n Use the cached prototype getters exclusively — the previous code\n had `|| currentNode.parentNode` / `|| currentNode.childNodes`\n fallbacks, but the cached getters always return the canonical\n value (or null for a real parent-less node), so the fallback\n path was dead in safe cases and a clobbering surface in unsafe\n ones. Falsy cached results stay falsy; the `if (childNodes &&\n parentNode)` check already gates correctly. */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode);\n const childNodes = getChildNodes(currentNode);\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n /* Hoist by moving each child up one level rather than deep-cloning\n it. Moving transfers every descendant exactly once, so a chain of\n nested disallowed elements costs O(n) instead of the O(n^2) that\n re-cloning the shrinking subtree at each level produced; it also\n empties the removed original, so `DOMPurify.removed` no longer\n pins whole subtrees. Moving preserves the in-place guarantee too:\n an original carrying already-queued resource events (`<img\n onerror>`, `<video>`/`<audio>` error, lazy/`onload`, …) is\n relocated and sanitised rather than left detached but still armed.\n The sole case that must clone is removing the walk root itself.\n The result is serialised from the root's subtree, so a restrictive\n ALLOWED_TAGS that strips the root (`body` on the string path) must\n leave the content inside it, which only cloning does. In IN_PLACE\n the root is pre-validated as an allowed tag and so is never removed\n here, so that path always takes the move branch.\n `childNodes` is live; a tail-to-head walk keeps `childNodes[i]`\n valid whether we move (drops the trailing entry) or clone (leaves\n the list intact). */\n for (let i = childCount - 1; i >= 0; --i) {\n const hoisted = currentNode === root ? cloneNode(childNodes[i], true) : childNodes[i];\n parentNode.insertBefore(hoisted, getNextSibling(currentNode));\n }\n }\n }\n _forceRemove(currentNode);\n return true;\n };\n /**\n * Fork a hook-mutable allowlist off its shared binding the first time a\n * (possibly lazily-installed) uponSanitize* hook is about to see it, so the\n * hook cannot widen the per-instance default or the setConfig binding by\n * reference and leak past the call. Returns the set unchanged once it is\n * already call-local, so repeated calls across elements are idempotent.\n *\n * @param hookList the uponSanitize* hook array for this event\n * @param set the current ALLOWED_TAGS / ALLOWED_ATTR binding\n * @param defaultSet the per-instance DEFAULT_ALLOWED_* constant\n * @param setConfigSet the captured setConfig() binding, or null\n * @return a call-local clone if a hook is present and set is still shared,\n * else set unchanged\n */\n const _forkSharedAllowlist = function _forkSharedAllowlist(hookList, set, defaultSet, setConfigSet) {\n if (hookList.length === 0) {\n return set;\n }\n return set === defaultSet || set === setConfigSet ? clone(set) : set;\n };\n /**\n * Shared guard for a node that a hook has detached from the walk tree,\n * used after each element-hook site in _sanitizeElements. Detaching is a\n * long-standing user pattern (issue #469; draw.io-style foreignObject\n * filtering). Per the cached, unclobberable parentNode getter the node is\n * genuinely out of the tree, so it can reach neither the serialized\n * output nor an IN_PLACE live tree; treat it as removed and stop\n * processing it. Without this guard, the unsafe-node / namespace checks\n * would call _forceRemove on a parentless node and hit the REPORT-3\n * fail-closed throw — which exists for nodes DOMPurify wants gone but\n * *cannot* detach (clobbered / parentless roots), the opposite of a node\n * that is already safely gone. The walk root is exempt: a detached\n * IN_PLACE root is legitimate input and must still be fully sanitized,\n * and a kill-decision on it must keep hitting the REPORT-3 throw.\n *\n * Nodes detached by hooks stay the hook's responsibility for placement:\n * they are not recorded in DOMPurify.removed, so the post-walk IN_PLACE\n * pass (which iterates DOMPurify.removed) does not reach them. But a\n * hook-detached subtree can still hold a queued resource-event handler -\n * e.g. an <img onload> that began loading when the caller built the live\n * tree - which fires in page scope after sanitize returns even though the\n * handler never reached the returned tree. That is the audit-5 F1 hazard,\n * and the documented node.remove() hook pattern walks straight into it.\n * So on the IN_PLACE path we neutralize the detached subtree inline,\n * stripping its non-allow-listed attributes before returning, exactly as\n * the post-walk pass does for _forceRemove'd subtrees.\n *\n * @param currentNode the node a hook may have detached\n * @param root the current walk root\n * @return true if the node is detached and now handled, false otherwise\n */\n const _handleHookDetachedNode = function _handleHookDetachedNode(currentNode, root) {\n if (currentNode === root || getParentNode(currentNode) !== null) {\n return false;\n }\n if (IN_PLACE) {\n _neutralizeSubtree(currentNode);\n }\n return true;\n };\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n * @param currentNode to check for permission to exist\n * @return true if node was killed, false if left alive\n */\n const _sanitizeElements = function _sanitizeElements(currentNode, root) {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n /* A hook may have detached the node - treat it as removed (see\n _handleHookDetachedNode for the full rationale). */\n if (_handleHookDetachedNode(currentNode, root)) {\n return true;\n }\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(_readNodeName(currentNode));\n /* Close the pre-walk clone-guard's timing gap: an uponSanitizeElement\n hook may have been installed after that guard sampled the hook arrays\n (e.g. lazily from beforeSanitizeElements), leaving ALLOWED_TAGS still\n aliasing a shared binding that a widening hook would mutate by\n reference. Fork it before exposing it to the hook. */\n ALLOWED_TAGS = _forkSharedAllowlist(hooks.uponSanitizeElement, ALLOWED_TAGS, DEFAULT_ALLOWED_TAGS, SET_CONFIG_ALLOWED_TAGS);\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* The uponSanitizeElement hook may have detached the node, exactly as\n above (see _handleHookDetachedNode for the full rationale). */\n if (_handleHookDetachedNode(currentNode, root)) {\n return true;\n }\n /* Remove mXSS vectors, processing instructions and risky comments */\n if (_isUnsafeNode(currentNode, tagName)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Remove element if anything forbids its presence */\n if (FORBID_TAGS[tagName] || !(EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName)) && !ALLOWED_TAGS[tagName]) {\n const removed = _sanitizeDisallowedNode(currentNode, tagName, root);\n /* A false return means the node is a custom element kept via\n CUSTOM_ELEMENT_HANDLING - the only keep path through\n _sanitizeDisallowedNode. Run afterSanitizeElements on it so the\n element-hook lifecycle matches normal allowlisted elements: a\n security policy applied in this hook (e.g. stripping an attribute\n from every surviving element) must not silently skip kept custom\n elements (GHSA-c2j3-45gr-mqc4). This mirrors the normal-element\n tail below - the hook runs, then the walker's subsequent\n _sanitizeAttributes pass sanitizes the element's attributes. The\n deliberately skipped namespace and fallback-tag removal checks stay\n skipped; they are removal decisions, not the hook contract. */\n if (removed === false) {\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n }\n return removed;\n }\n /* Check whether element has a valid namespace.\n Realm-safe check (GHSA-hpcv-96wg-7vj8): use the cached Node.prototype\n nodeType getter rather than `instanceof Element`, which is realm-\n bound and short-circuits to false for any node minted in a different\n realm — letting a foreign-realm element with a forbidden namespace\n slip past the namespace check entirely. */\n const nt = _readNodeType(currentNode);\n if (nt === NODE_TYPE.element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if ((tagName === 'noscript' || tagName === 'noembed' || tagName === 'noframes') && regExpTest(FALLBACK_TAG_CLOSE, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n return true;\n }\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n /* Get the element's text content */\n const content = _stripTemplateExpressions(currentNode.textContent);\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param lcTag Lowercase tag name of containing element.\n * @param lcName Lowercase attribute name.\n * @param value Attribute value.\n * @return Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* FORBID_ATTR must always win, even if ADD_ATTR predicate would allow it */\n if (FORBID_ATTR[lcName]) {\n return false;\n }\n /* Reject declarative-partial-updates patch-linkage attributes\n (https://github.com/WICG/declarative-partial-updates).\n Empirical note (Chrome 150, verified — see\n test/declarative-patch-probe-v3.html): expansion is NOT applied after\n sanitization. For the string path it fires during sanitize()'s own\n parse, so the walk sees and sanitizes the fully materialized expanded\n tree — teleports into MathML/SVG integration points included; a\n weaponized `<template for>`->`<img onerror>` comes back with the handler\n stripped. For the IN_PLACE path it fires on connection, before the walk.\n Either way DOMPurify is NOT blind to the patch.\n This removal is therefore defense-in-depth rather than the sole barrier:\n it prevents live linkage from surviving into the OUTPUT and re-expanding\n in the caller's context, and keeps behaviour deterministic if a future\n engine defers expansion. `for` is legitimate only on <label>/<output>;\n anywhere else (notably <template for>) it links the element to a patch\n target and teleports or removes an arbitrary DOM range by id/marker name.\n `patchsrc` fetches remote markup and is treated as a script-loading\n mechanism (CSP). Gated on SAFE_FOR_XML so the removal groups with the\n other structural-threat checks and stays overridable, consistent with\n the rest of the codebase. PI range markers are already removed by\n _isUnsafeNode. */\n if (_isPatchLinkageAttribute(lcName, lcTag)) {\n return false;\n }\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n const nameIsPermitted = ALLOWED_ATTR[lcName] || EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function && EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag);\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (ALLOW_DATA_ATTR && regExpTest(DATA_ATTR$1, lcName)) {\n return true;\n }\n /* Allow valid aria-* attributes, the value is always URI safe */\n if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName)) {\n return true;\n }\n /* A name outside the allowlist is acceptable on custom-element terms\n only. The value checks below are intentionally skipped in that case:\n if the user supplied a tagNameCheck we also allow derived custom\n elements using the same test, and attributes passing the configured\n attributeNameCheck are allowed as custom elements define these at\n their own discretion. */\n if (!nameIsPermitted) {\n return (\n // Condition a) covers a basically valid custom element tag name whose\n // tag passes the configured tagNameCheck and whose attribute name\n // passes the configured attributeNameCheck ...\n _isBasicCustomElement(lcTag) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName, lcTag) ||\n // Condition b) covers an `is` attribute whose value passes the\n // configured tagNameCheck while customized built-in elements are\n // allowed.\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && _matchesNameCheck(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value)\n );\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n if (URI_SAFE_ATTRIBUTES[lcName]) {\n return true;\n }\n /* Check no script, data or unknown possibly unsafe URI\n unless we know URI values are safe for that attribute */\n if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) {\n return true;\n }\n /* Keep image data URIs alive if src/xlink:href is allowed */\n /* Further prevent gadget XSS for dynamically built script tags */\n if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) {\n return true;\n }\n /* Allow unknown protocols: This provides support for links that\n are handled by protocol handlers which may be unknown ahead of\n time, e.g. fb:, spotify: */\n if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) {\n return true;\n }\n /* Only an empty (binary) value remains safe at this point;\n anything else is presumed unsafe, do not add it back */\n return !value;\n };\n /* Names the HTML spec reserves from valid-custom-element-name; these must\n * never be treated as basic custom elements even when a permissive\n * CUSTOM_ELEMENT_HANDLING.tagNameCheck is configured. */\n const RESERVED_CUSTOM_ELEMENT_NAMES = addToSet({}, ['annotation-xml', 'color-profile', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'missing-glyph']);\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param tagName name of the tag of the node to sanitize\n * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function _isBasicCustomElement(tagName) {\n return !RESERVED_CUSTOM_ELEMENT_NAMES[stringToLowerCase(tagName)] && regExpTest(CUSTOM_ELEMENT$1, tagName);\n };\n /**\n * Wrap an attribute value in the matching Trusted Types object when\n * the active policy requires it. Namespaced attributes pass through\n * unchanged (no TT support yet, see\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1305293).\n *\n * @param lcTag lowercase tag name of the containing element\n * @param lcName lowercase attribute name\n * @param namespaceURI the attribute's namespace, if any\n * @param value the attribute value to wrap\n * @return the value, wrapped when Trusted Types demand it\n */\n const _applyTrustedTypesToAttribute = function _applyTrustedTypesToAttribute(lcTag, lcName, namespaceURI, value) {\n if (trustedTypesPolicy && typeof trustedTypes === 'object' && typeof trustedTypes.getAttributeType === 'function' && !namespaceURI) {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n {\n return _createTrustedHTML(value);\n }\n case 'TrustedScriptURL':\n {\n return _createTrustedScriptURL(value);\n }\n }\n }\n return value;\n };\n /**\n * Write a modified attribute value back onto the element. On\n * success, re-probe for clobbering introduced by the new value and\n * remove the element when found; otherwise, when this writeback is the\n * recreate half of the SANITIZE_NAMED_PROPS remove-and-recreate, pop the\n * removal entry that path recorded so it does not show as removed. On\n * failure, remove the attribute instead.\n *\n * Returns true only on a clean write (the value was set and the new value\n * introduced no clobbering). The caller uses that, together with its own\n * knowledge of whether this attribute pushed a DOMPurify.removed record, to\n * decide whether to pop that record. The pop must happen ONLY for the\n * named-prop remove-and-recreate; popping on any other value change (trim,\n * template scrubbing, Trusted Types) would consume an unrelated _forceRemove\n * subtree-cleanup record and let that detached subtree keep a live event\n * handler through the IN_PLACE neutralization pass (SO-001).\n *\n * @param currentNode the element carrying the attribute\n * @param name the attribute name as present on the element\n * @param namespaceURI the attribute's namespace, if any\n * @param value the new attribute value\n * @return true if the value was written without introducing clobbering\n */\n const _setAttributeValue = function _setAttributeValue(currentNode, name, namespaceURI, value) {\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return false;\n }\n return true;\n } catch (_) {\n _removeAttribute(name, currentNode);\n return false;\n }\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param currentNode to sanitize\n */\n // eslint-disable-next-line complexity\n const _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n const attributes = currentNode.attributes;\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes || _isClobbered(currentNode)) {\n return;\n }\n /* Same lazy-install guard as uponSanitizeElement (see there): fork the\n attribute allowlist off its shared binding before a hook can see it. */\n ALLOWED_ATTR = _forkSharedAllowlist(hooks.uponSanitizeAttribute, ALLOWED_ATTR, DEFAULT_ALLOWED_ATTR, SET_CONFIG_ALLOWED_ATTR);\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n forceKeepAttr: undefined\n };\n let l = attributes.length;\n const lcTag = transformCaseFunc(currentNode.nodeName);\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const name = attr.name,\n namespaceURI = attr.namespaceURI,\n attrValue = attr.value;\n const lcName = transformCaseFunc(name);\n const initValue = attrValue;\n let value = name === 'value' ? initValue : stringTrim(initValue);\n /* Tracks whether this specific attribute pushed a DOMPurify.removed\n record that a later _setAttributeValue() writeback is expected to pop\n back off (the SANITIZE_NAMED_PROPS remove-and-recreate below is the\n only path that does). A value that merely changed via trim, template\n scrubbing, or Trusted Types pushes no such record, so its writeback\n must NOT pop — otherwise it consumes an unrelated _forceRemove subtree\n record and that detached subtree escapes the IN_PLACE handler-\n neutralization pass (SO-001). */\n let recreatedNamedProp = false;\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name') && stringIndexOf(value, SANITIZE_NAMED_PROPS_PREFIX) !== 0) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode, attr);\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n // This attribute owns the record just pushed; its recreate writeback\n // is the one allowed to pop it back off.\n recreatedNamedProp = true;\n }\n // Else: already prefixed, leave the attribute alone — the prefix is\n // itself the clobbering protection, and re-applying it is incorrect.\n /* Work around a security issue with comments inside attributes */\n if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, value)) {\n _removeAttribute(name, currentNode, attr);\n continue;\n }\n /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n if (lcName === 'attributename' && stringMatch(value, 'href')) {\n _removeAttribute(name, currentNode, attr);\n continue;\n }\n /* Did the hooks force-keep the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n _removeAttribute(name, currentNode, attr);\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(SELF_CLOSING_TAG, value)) {\n _removeAttribute(name, currentNode, attr);\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n value = _stripTemplateExpressions(value);\n }\n /* Is `value` valid for this attribute? */\n if (!_isValidAttribute(lcTag, lcName, value)) {\n _removeAttribute(name, currentNode, attr);\n continue;\n }\n /* Handle attributes that require Trusted Types */\n value = _applyTrustedTypesToAttribute(lcTag, lcName, namespaceURI, value);\n /* Handle invalid data-* attribute set by try-catching it */\n if (value !== initValue) {\n const cleanWrite = _setAttributeValue(currentNode, name, namespaceURI, value);\n /* Only the named-prop remove-and-recreate owns a DOMPurify.removed\n record to pop; a plain trim/template/Trusted-Types writeback owns\n none, so popping here would drop an unrelated subtree's cleanup\n record (SO-001). */\n if (cleanWrite && recreatedNamedProp) {\n arrayPop(DOMPurify.removed);\n }\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param fragment to iterate over recursively\n */\n const _sanitizeShadowDOM2 = function _sanitizeShadowDOM(fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n /* Execute a hook if present */\n _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n /* Sanitize tags and elements */\n _sanitizeElements(shadowNode, fragment);\n /* Check attributes next */\n _sanitizeAttributes(shadowNode);\n /* Deep shadow DOM detected.\n Realm-safe check (GHSA-hpcv-96wg-7vj8): use nodeType against the\n DOCUMENT_FRAGMENT_NODE constant rather than instanceof, so we\n recurse into <template>.content from foreign realms too. */\n if (_isDocumentFragment(shadowNode.content)) {\n _sanitizeShadowDOM2(shadowNode.content);\n }\n /* An element iterated here may itself host an attached\n shadow root. The default NodeIterator does not enter shadow\n trees, so a shadow root nested inside template.content was\n previously reached by no walk at all (the pre-pass at\n _sanitizeAttachedShadowRoots descends via childNodes, which\n doesn't enter template.content; the template-content recursion\n above iterates the content but never inspected shadowRoot).\n Walk it explicitly. The nodeType guard avoids reading\n shadowRoot off text / comment / CDATA / PI nodes that the\n iterator also surfaces. */\n if (_readNodeType(shadowNode) === NODE_TYPE.element) {\n const innerSr = getShadowRoot(shadowNode);\n if (_isDocumentFragment(innerSr)) {\n _sanitizeAttachedShadowRoots(innerSr);\n _sanitizeShadowDOM2(innerSr);\n }\n }\n }\n /* Execute a hook if present */\n _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n };\n /**\n * _sanitizeAttachedShadowRoots\n *\n * Walks `root` and feeds every attached shadow root we encounter into\n * the existing _sanitizeShadowDOM pipeline. The default node iterator\n * does not descend into shadow trees, so nodes inside an attached\n * shadow root would otherwise be skipped entirely.\n *\n * Two real input paths put attached shadow roots in front of us:\n * 1. IN_PLACE on a DOM node that already has shadow roots attached.\n * 2. DOM-node input where importNode(dirty, true) deep-clones the\n * shadow root because it was created with `clonable: true`.\n *\n * This pass runs once, up front, so the main iteration loop (and the\n * existing _sanitizeShadowDOM template-content recursion) stay\n * untouched — string-input paths are not affected.\n *\n * @param root the subtree root to walk for attached shadow roots\n */\n const _sanitizeAttachedShadowRoots = function _sanitizeAttachedShadowRoots(root) {\n /* Iterative (explicit stack) rather than per-child recursion. DOM APIs\n impose no depth cap, so an attacker-shaped tree (JSON/CRDT/editor data\n built straight into the DOM — the IN_PLACE surface) deeper than the JS\n call-stack budget would otherwise overflow native recursion here and\n throw at the IN_PLACE entry pre-pass, before a single node is\n sanitized, leaving the caller's live tree untouched (fail-open). See\n campaign-3 F4. A heap stack keeps depth off the call stack.\n Each work item is either a node to descend into, or a deferred\n `_sanitizeShadowDOM` for an already-walked shadow root. The deferred\n form preserves the original post-order discipline: a shadow root's\n nested shadow roots are discovered before the outer shadow is\n sanitized (which may remove hosts). Pushes are in reverse of the\n desired processing order (LIFO): template content, then children, then\n the shadow-sanitize, then the shadow walk — so the order matches the\n previous recursion exactly. */\n const stack = [{\n node: root,\n shadow: null\n }];\n while (stack.length > 0) {\n const item = stack.pop();\n /* Deferred shadow-DOM sanitisation: runs after its subtree was walked. */\n if (item.shadow) {\n _sanitizeShadowDOM2(item.shadow);\n continue;\n }\n const node = item.node;\n const nodeType = _readNodeType(node);\n const isElement = nodeType === NODE_TYPE.element;\n /* (pushed last → processed first) Children, snapshotted in reverse so\n the first child is processed first. Snapshotting matters because a\n hook may detach siblings mid-walk. */\n const childNodes = getChildNodes(node);\n if (childNodes) {\n for (let i = childNodes.length - 1; i >= 0; --i) {\n stack.push({\n node: childNodes[i],\n shadow: null\n });\n }\n }\n /* (pushed before children → processed after them, matching the old\n \"template content last\" order) When the node is a <template>,\n descend into its content. */\n if (isElement) {\n const rootName = getNodeName ? getNodeName(node) : null;\n if (typeof rootName === 'string' && transformCaseFunc(rootName) === 'template') {\n const content = node.content;\n if (_isDocumentFragment(content)) {\n stack.push({\n node: content,\n shadow: null\n });\n }\n }\n }\n /* Shadow root (processed first): walk its subtree, then sanitise it.\n Realm-safe check (GHSA-hpcv-96wg-7vj8): nodeType-based detection\n rather than `instanceof DocumentFragment`, which is realm-bound and\n silently skipped foreign-realm shadow roots (e.g.\n iframe.contentDocument attachShadow). */\n if (isElement) {\n const sr = getShadowRoot(node);\n if (_isDocumentFragment(sr)) {\n /* Push the deferred sanitise first so it pops after the shadow\n walk we push next, i.e. nested shadow roots are discovered\n before this one is sanitised. */\n stack.push({\n node: null,\n shadow: sr\n }, {\n node: sr,\n shadow: null\n });\n }\n }\n }\n };\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty) {\n let cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n dirty = stringifyValue(dirty);\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n }\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n /* Assign config vars */\n if (SET_CONFIG) {\n /* Persistent setConfig() path: _parseConfig is skipped, so the sets are\n * not re-derived per call. Restore them from the pristine bindings\n * captured at setConfig() time so a previous call's hook clone (mutated\n * below) does not carry over. */\n ALLOWED_TAGS = SET_CONFIG_ALLOWED_TAGS;\n ALLOWED_ATTR = SET_CONFIG_ALLOWED_ATTR;\n } else {\n _parseConfig(cfg);\n }\n /* Clone the hook-mutable allowlists before the walk whenever an\n * uponSanitize* hook is registered. The hook event exposes ALLOWED_TAGS\n * and ALLOWED_ATTR by reference (as allowedTags / allowedAttributes), so\n * a hook that widens them would otherwise mutate the shared set\n * permanently: across later calls and across every element. Cloning per\n * walk keeps documented in-call widening working while scoping it to the\n * call. A single guard for both config paths - the per-call path rebinds\n * the sets in _parseConfig each call, the persistent path restores them\n * from the captured bindings just above - so the two cannot diverge. */\n if (hooks.uponSanitizeElement.length > 0 || hooks.uponSanitizeAttribute.length > 0) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n if (hooks.uponSanitizeAttribute.length > 0) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n /* Clean up removed elements */\n DOMPurify.removed = [];\n /* Resolve IN_PLACE for this call without mutating persistent config.\n Writing the IN_PLACE closure variable here leaks under setConfig(),\n where _parseConfig is skipped on later calls: a single string call would\n disable in-place mode for every subsequent node call, returning a\n sanitized copy while leaving the caller's node — which in-place callers\n keep using and whose return value they ignore — unsanitized. REPORT-2. */\n const inPlace = IN_PLACE && typeof dirty !== 'string' && _isNode(dirty);\n if (inPlace) {\n /* Declarative-partial-updates / streaming pre-pass: sever every patch\n linkage across the live tree BEFORE the walk, so no patch can fire\n mid-walk and inject into an already-processed region. Runs first, so\n it also covers the forbidden/clobbered roots that throw below. */\n _neutralizePatchLinkage(dirty);\n /* Do some early pre-sanitization to avoid unsafe root nodes.\n Read nodeName through the cached prototype getter — a clobbering\n child named \"nodeName\" on the form root would otherwise shadow\n the property and let this check skip the root-allowlist\n validation entirely. */\n const nn = _readNodeName(dirty);\n if (typeof nn === 'string') {\n const tagName = transformCaseFunc(nn);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Fail closed on a live root: neutralize handlers/children before\n throwing, exactly as the mid-walk abort path does. */\n _neutralizeRoot(dirty);\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n /* Pre-flight the root through _isClobbered. The iterator-driven\n removal path can not detach a parent-less root: _forceRemove\n falls through to Element.prototype.remove(), which per spec\n is a no-op on a node with no parent. A clobbered root would\n then survive the main loop with its attributes uninspected,\n because _sanitizeAttributes early-returns on _isClobbered. The\n result would be an attacker-controlled form, complete with any\n event-handler attributes the caller passed in, handed back to\n the application unsanitized. Refuse to sanitize such a root\n the same way we refuse a forbidden tag. GHSA-r47g-fvhr-h676. */\n if (_isClobbered(dirty)) {\n /* Fail closed on a live clobbered root before throwing.\n _neutralizeRoot's reads are clobber-safe (cached getters); the\n form's non-clobbered descendants, e.g. an armed <img>, are scrubbed. */\n _neutralizeRoot(dirty);\n throw typeErrorCreate('root node is clobbered and cannot be sanitized in-place');\n }\n /* Sanitize attached shadow roots before the main iterator runs.\n The iterator does not descend into shadow trees. Same fail-closed\n barrier as the main walk (campaign-3 F2): a custom-element reaction\n inside a shadow root could abort this pre-pass before the walk runs,\n which would otherwise leave the entire live tree unsanitized. */\n try {\n _sanitizeAttachedShadowRoots(dirty);\n } catch (error) {\n _neutralizeRoot(dirty);\n throw error;\n }\n } else if (_isNode(dirty)) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === NODE_TYPE.element && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n /* Clonable shadow roots are deep-cloned by importNode(); sanitize\n them before the main iterator runs, since the iterator does not\n descend into shadow trees. The walk routes every read through a\n cached prototype getter so clobbering descendants on a form root\n cannot hide a shadow host from this pass.\n Traverse from `body`, not `importedNode`: when importedNode is a\n DocumentFragment, the appendChild() above moves its children into\n `body` and leaves the fragment empty, so walking importedNode would\n scan nothing and miss every attached shadow host now under `body`\n (SO-003). In the BODY/HTML branches `body === importedNode`, so this\n is equivalent there; in the element branch `body` contains the\n appended element and its descendants. `body` covers all three. */\n _sanitizeAttachedShadowRoots(body);\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? _createTrustedHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n const walkRoot = inPlace ? dirty : body;\n /* Now start iterating over the created document.\n The walk runs inside an exception barrier (campaign-3 F2): a re-entrant\n engine/custom-element mutation can detach a node mid-walk so\n `_forceRemove`'s parentless guard throws, aborting the loop. Without the\n barrier the caller's in-place tree would be left half-sanitized with the\n unvisited tail still armed. _createNodeIterator itself is inside the\n barrier too: constructing the iterator dereferences the root's document,\n and any failure there (e.g. an exotic/clobbered root) must still fail\n closed rather than skip the neutralize. On any throw we fail closed -\n strip the in-place root bare - then rethrow so the existing throw\n contract is preserved. (String/DOM-copy paths never return the partial\n body, so the propagating throw is already fail-closed there.) */\n try {\n const nodeIterator = _createNodeIterator(walkRoot);\n while (currentNode = nodeIterator.nextNode()) {\n /* Sanitize tags and elements */\n _sanitizeElements(currentNode, walkRoot);\n /* Check attributes next */\n _sanitizeAttributes(currentNode);\n /* Shadow DOM detected, sanitize it.\n Realm-safe check (GHSA-hpcv-96wg-7vj8): nodeType-based detection\n instead of instanceof, so foreign-realm <template>.content is\n walked correctly. */\n if (_isDocumentFragment(currentNode.content)) {\n _sanitizeShadowDOM2(currentNode.content);\n }\n }\n } catch (error) {\n if (inPlace) {\n _neutralizeRoot(dirty);\n /* Nodes _forceRemove'd earlier in the aborted walk are already\n detached from the root, so _neutralizeRoot's subtree pass does not\n reach them. Defuse them too, mirroring the success-path loop below. */\n arrayForEach(DOMPurify.removed, entry => {\n if (entry.element) {\n _neutralizeSubtree(entry.element);\n }\n });\n }\n throw error;\n }\n /* If we sanitized `dirty` in-place, return it. */\n if (inPlace) {\n /* Fail-closed completion of the audit-5 F1 fix: every node removed from\n the caller's live tree is detached but may still hold a queued\n resource-event handler that fires in page scope after we return. The\n move-hoist covers only disallowed-tag KEEP_CONTENT removals; strip the\n non-allow-listed attributes off every other removed subtree (clobber,\n mXSS, namespace, comments, KEEP_CONTENT:false, …) so those handlers are\n cancelled before any event can fire. Runs synchronously, pre-return. */\n arrayForEach(DOMPurify.removed, entry => {\n if (entry.element) {\n _neutralizeSubtree(entry.element);\n }\n });\n if (SAFE_FOR_TEMPLATES) {\n _scrubTemplateExpressions2(dirty);\n }\n return dirty;\n }\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (SAFE_FOR_TEMPLATES) {\n _scrubTemplateExpressions2(body);\n }\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n return returnNode;\n }\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n serializedHTML = _stripTemplateExpressions(serializedHTML);\n }\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? _createTrustedHTML(serializedHTML) : serializedHTML;\n };\n DOMPurify.setConfig = function () {\n let cfg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _parseConfig(cfg);\n SET_CONFIG = true;\n SET_CONFIG_ALLOWED_TAGS = ALLOWED_TAGS;\n SET_CONFIG_ALLOWED_ATTR = ALLOWED_ATTR;\n };\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n SET_CONFIG_ALLOWED_TAGS = null;\n SET_CONFIG_ALLOWED_ATTR = null;\n // Drop any caller-supplied Trusted Types policy so it cannot poison later\n // `RETURN_TRUSTED_TYPE` output. The internal default policy (cached, and\n // never recreated — Trusted Types throws on duplicate names) is restored by\n // the next `_parseConfig`. See GHSA-vxr8-fq34-vvx9.\n trustedTypesPolicy = defaultTrustedTypesPolicy;\n emptyHTML = '';\n };\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n /* Reject unknown entry points. Without this, a non-hook key (e.g.\n * '__proto__') indexes off the prototype chain rather than a real\n * hook array, and arrayPush then writes to Object.prototype. Guard\n * with an own-property check against the known hook names. */\n if (!objectHasOwnProperty(hooks, entryPoint)) {\n return;\n }\n arrayPush(hooks[entryPoint], hookFunction);\n };\n DOMPurify.removeHook = function (entryPoint, hookFunction) {\n if (!objectHasOwnProperty(hooks, entryPoint)) {\n return undefined;\n }\n if (hookFunction !== undefined) {\n const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n return index === -1 ? undefined : arraySplice(hooks[entryPoint], index, 1)[0];\n }\n return arrayPop(hooks[entryPoint]);\n };\n DOMPurify.removeHooks = function (entryPoint) {\n if (!objectHasOwnProperty(hooks, entryPoint)) {\n return;\n }\n hooks[entryPoint] = [];\n };\n DOMPurify.removeAllHooks = function () {\n hooks = _createHooksMap();\n };\n return DOMPurify;\n}\nvar purify = createDOMPurify();\n\nexport { purify as default };\n//# sourceMappingURL=purify.es.mjs.map\n","/**\n * This class represents all the constants needed in a MathType integration among different classes.\n * If a constant should be used across different classes should be defined using attribute\n * accessors.\n */\nexport default class Constants {\n /**\n * Safe XML entities.\n * @type {Object}\n */\n static get safeXmlCharactersEntities() {\n return {\n tagOpener: \"&laquo;\",\n tagCloser: \"&raquo;\",\n doubleQuote: \"&uml;\",\n realDoubleQuote: \"&quot;\",\n };\n }\n\n /**\n * Blackboard invalid safe characters.\n * @type {Object}\n */\n static get safeBadBlackboardCharacters() {\n return {\n ltElement: \"«mo»<«/mo»\",\n gtElement: \"«mo»>«/mo»\",\n ampElement: \"«mo»&«/mo»\",\n };\n }\n\n /**\n * Blackboard valid safe characters.\n * @type{Object}\n */\n static get safeGoodBlackboardCharacters() {\n return {\n ltElement: \"«mo»§lt;«/mo»\",\n gtElement: \"«mo»§gt;«/mo»\",\n ampElement: \"«mo»§amp;«/mo»\",\n };\n }\n\n /**\n * Standard XML special characters.\n * @type {Object}\n */\n static get xmlCharacters() {\n return {\n id: \"xmlCharacters\",\n tagOpener: \"<\", // Hex: \\x3C.\n tagCloser: \">\", // Hex: \\x3E.\n doubleQuote: '\"', // Hex: \\x22.\n ampersand: \"&\", // Hex: \\x26.\n quote: \"'\", // Hex: \\x27.\n };\n }\n\n /**\n * Safe XML special characters. This characters are used instead the standard\n * the standard to parse the MathML if safeXML save mode is enable. Each XML\n * special character have a UTF-8 representation.\n * @type {Object}\n */\n static get safeXmlCharacters() {\n return {\n id: \"safeXmlCharacters\",\n tagOpener: \"«\", // Hex: \\xAB.\n tagCloser: \"»\", // Hex: \\xBB.\n doubleQuote: \"¨\", // Hex: \\xA8.\n ampersand: \"§\", // Hex: \\xA7.\n quote: \"`\", // Hex: \\x60.\n realDoubleQuote: \"¨\",\n };\n }\n}\n","import Constants from \"./constants\";\nimport Util from \"./util\";\n\n/**\n * @classdesc\n * This class represents a class to manage MathML objects.\n */\nexport default class MathML {\n /**\n * Checks if the mathml at position i is inside an HTML attribute or not.\n * @param {string} content - a string containing MathML code.\n * @param {number} i - search index.\n * @return {boolean} true if is inside an HTML attribute. false otherwise.\n */\n static isMathmlInAttribute(content, i) {\n // Regex =\n // '^[\\'\"][\\\\s]*=[\\\\s]*[\\\\w-]+([\\\\s]*(\"[^\"]*\"|\\'[^\\']*\\')[\\\\s]*\n // =[\\\\s]*[\\\\w-]+[\\\\s]*)*[\\\\s]+gmi<';\n const mathAtt = \"['\\\"][\\\\s]*=[\\\\s]*[\\\\w-]+\"; // \"=att OR '=att\n const attContent = \"\\\"[^\\\"]*\\\"|'[^']*'\"; // \"blabla\" OR 'blabla'\n const att = `[\\\\s]*(${attContent})[\\\\s]*=[\\\\s]*[\\\\w-]+[\\\\s]*`; // \"blabla\"=att OR 'blabla'=att\n const atts = `('${att}')*`; // \"blabla\"=att1 \"blabla\"=att2\n const regex = `^${mathAtt}${atts}[\\\\s]+gmi<`; // \"=att \"blabla\"=att1 \"blabla\"=att2 gmi< .\n const expression = new RegExp(regex);\n\n const actualContent = content.substring(0, i);\n const reversed = actualContent.split(\"\").reverse().join(\"\");\n const exists = expression.test(reversed);\n\n return exists;\n }\n\n /**\n * Decodes an encoded MathML with standard XML tags.\n * We use these entities because IE doesn't support html entities\n * on its attributes sometimes. Yes, sometimes.\n * @param {string} input - string to be decoded.\n * @return {string} decoded string.\n */\n static safeXmlDecode(input) {\n let { tagOpener } = Constants.safeXmlCharactersEntities;\n let { tagCloser } = Constants.safeXmlCharactersEntities;\n let { doubleQuote } = Constants.safeXmlCharactersEntities;\n let { realDoubleQuote } = Constants.safeXmlCharactersEntities;\n // Decoding entities.\n input = input.split(tagOpener).join(Constants.safeXmlCharacters.tagOpener);\n input = input.split(tagCloser).join(Constants.safeXmlCharacters.tagCloser);\n input = input.split(doubleQuote).join(Constants.safeXmlCharacters.doubleQuote);\n // Added to fix problem due to import from 1.9.x.\n input = input.split(realDoubleQuote).join(Constants.safeXmlCharacters.realDoubleQuote);\n\n // Blackboard.\n const { ltElement } = Constants.safeBadBlackboardCharacters;\n const { gtElement } = Constants.safeBadBlackboardCharacters;\n const { ampElement } = Constants.safeBadBlackboardCharacters;\n if (\"_wrs_blackboard\" in window && window._wrs_blackboard) {\n input = input.split(ltElement).join(Constants.safeGoodBlackboardCharacters.ltElement);\n input = input.split(gtElement).join(Constants.safeGoodBlackboardCharacters.gtElement);\n input = input.split(ampElement).join(Constants.safeGoodBlackboardCharacters.ampElement);\n }\n\n ({ tagOpener } = Constants.safeXmlCharacters);\n ({ tagCloser } = Constants.safeXmlCharacters);\n ({ doubleQuote } = Constants.safeXmlCharacters);\n ({ realDoubleQuote } = Constants.safeXmlCharacters);\n const { ampersand } = Constants.safeXmlCharacters;\n const { quote } = Constants.safeXmlCharacters;\n\n // Decoding characters.\n input = input.split(tagOpener).join(Constants.xmlCharacters.tagOpener);\n input = input.split(tagCloser).join(Constants.xmlCharacters.tagCloser);\n input = input.split(doubleQuote).join(Constants.xmlCharacters.doubleQuote);\n input = input.split(ampersand).join(Constants.xmlCharacters.ampersand);\n input = input.split(quote).join(Constants.xmlCharacters.quote);\n\n // We are replacing $ by & when its part of an entity for retro-compatibility.\n // Now, the standard is replace § by &.\n let returnValue = \"\";\n let currentEntity = null;\n\n for (let i = 0; i < input.length; i += 1) {\n const character = input.charAt(i);\n if (currentEntity == null) {\n if (character === \"$\") {\n currentEntity = \"\";\n } else {\n returnValue += character;\n }\n } else if (character === \";\") {\n returnValue += `&${currentEntity}`;\n currentEntity = null;\n } else if (character.match(/([a-zA-Z0-9#._-] | '-')/)) {\n // Character is part of an entity.\n currentEntity += character;\n } else {\n returnValue += `$${currentEntity}`; // Is not an entity.\n currentEntity = null;\n i -= 1; // Parse again the current character.\n }\n }\n\n return returnValue;\n }\n\n /**\n * Encodes a MathML with standard XML tags to a MMathML encoded with safe XML tags.\n * We use these entities because IE doesn't support html entities on its attributes sometimes.\n * @param {string} input - input string to be encoded\n * @returns {string} encoded string.\n */\n static safeXmlEncode(input) {\n const { tagOpener } = Constants.xmlCharacters;\n const { tagCloser } = Constants.xmlCharacters;\n const { doubleQuote } = Constants.xmlCharacters;\n const { ampersand } = Constants.xmlCharacters;\n const { quote } = Constants.xmlCharacters;\n\n input = input.split(tagOpener).join(Constants.safeXmlCharacters.tagOpener);\n input = input.split(tagCloser).join(Constants.safeXmlCharacters.tagCloser);\n input = input.split(doubleQuote).join(Constants.safeXmlCharacters.doubleQuote);\n input = input.split(ampersand).join(Constants.safeXmlCharacters.ampersand);\n input = input.split(quote).join(Constants.safeXmlCharacters.quote);\n\n return input;\n }\n\n /**\n * Converts special symbols (> 128) to entities and replaces all textual\n * entities by its number entities.\n * @param {string} mathml - MathML string containing - or not - special symbols\n * @returns {string} MathML with all textual entities replaced.\n */\n static mathMLEntities(mathml) {\n let toReturn = \"\";\n\n for (let i = 0; i < mathml.length; i += 1) {\n const character = mathml.charAt(i);\n\n // Parsing > 128 characters.\n if (mathml.codePointAt(i) > 128) {\n toReturn += `&#${mathml.codePointAt(i)};`;\n // For UTF-32 characters we need to move the index one position.\n if (mathml.codePointAt(i) > 0xffff) {\n i += 1;\n }\n } else if (character === \"&\") {\n const end = mathml.indexOf(\";\", i + 1);\n if (end >= 0) {\n const container = document.createElement(\"span\");\n container.innerHTML = mathml.substring(i, end + 1);\n toReturn += `&#${Util.fixedCharCodeAt(container.textContent || container.innerText, 0)};`;\n i = end;\n } else {\n toReturn += character;\n }\n } else {\n toReturn += character;\n }\n }\n\n return toReturn;\n }\n\n /**\n * Add a custom editor name with the prefix wrs_ to a MathML class attribute.\n * @param {string} mathml - a MathML string created with a custom editor, like chemistry.\n * @param {string} customEditor - custom editor name.\n * @returns {string} MathML string with his class containing the editor toolbar string.\n */\n static addCustomEditorClassAttribute(mathml, customEditor) {\n let toReturn = \"\";\n\n const start = mathml.indexOf(\"<math\");\n if (start === 0) {\n const end = mathml.indexOf(\">\");\n if (mathml.indexOf(\"class\") === -1) {\n // Adding custom editor type.\n toReturn = `${mathml.substr(start, end)} class=\"wrs_${customEditor}\">`;\n toReturn += mathml.substr(end + 1, mathml.length);\n return toReturn;\n }\n }\n return mathml;\n }\n\n /**\n * Remove a custom editor name from the MathML class attribute.\n * @param {string} mathml - a MathML string.\n * @param {string} customEditor - custom editor name.\n * @returns {string} The input MathML without customEditor name in his class.\n */\n static removeCustomEditorClassAttribute(mathml, customEditor) {\n // Discard MathML without the specified class.\n if (mathml.indexOf(\"class\") === -1 || mathml.indexOf(`wrs_${customEditor}`) === -1) {\n return mathml;\n }\n\n // Trivial case: class attribute value equal to editor name. Then\n // class attribute is removed.\n // First try to remove it with a space before if there is one\n // Otherwise without the space\n if (mathml.indexOf(` class=\"wrs_${customEditor}\"`) !== -1) {\n return mathml.replace(` class=\"wrs_${customEditor}\"`, \"\");\n }\n if (mathml.indexOf(`class=\"wrs_${customEditor}\"`) !== -1) {\n return mathml.replace(`class=\"wrs_${customEditor}\"`, \"\");\n }\n\n // Non Trivial case: class attribute contains editor name.\n return mathml.replace(`wrs_${customEditor}`, \"\");\n }\n\n /**\n * Adds annotation tag in MathML element.\n * @param {String} mathml - valid MathML.\n * @param {String} content - value to put inside annotation tag.\n * @param {String} annotationEncoding - annotation encoding.\n * @returns {String} - 'mathml' with an annotation that contains\n * 'content' and encoding 'encoding'.\n */\n static addAnnotation(mathml, content, annotationEncoding) {\n // If contains annotation, also contains semantics tag.\n const containsAnnotation = mathml.indexOf(\"<annotation\");\n\n let mathmlWithAnnotation = \"\";\n if (containsAnnotation !== -1) {\n const closeSemanticsIndex = mathml.indexOf(\"</semantics>\");\n mathmlWithAnnotation = `${mathml.substring(0, closeSemanticsIndex)}<annotation encoding=\"${annotationEncoding}\">${content}</annotation>${mathml.substring(closeSemanticsIndex)}`;\n } else if (MathML.isEmpty(mathml)) {\n const endIndexInline = mathml.indexOf(\"/>\");\n const endIndexNonInline = mathml.indexOf(\">\");\n const endIndex = endIndexNonInline === endIndexInline ? endIndexInline : endIndexNonInline;\n mathmlWithAnnotation = `${mathml.substring(0, endIndex)}><semantics><annotation encoding=\"${annotationEncoding}\">${content}</annotation></semantics></math>`;\n } else {\n const beginMathMLContent = mathml.indexOf(\">\") + 1;\n const endMathmlContent = mathml.lastIndexOf(\"</math>\");\n const mathmlContent = mathml.substring(beginMathMLContent, endMathmlContent);\n mathmlWithAnnotation = `${mathml.substring(0, beginMathMLContent)}<semantics><mrow>${mathmlContent}</mrow><annotation encoding=\"${annotationEncoding}\">${content}</annotation></semantics></math>`; // eslint-disable-line max-len\n }\n\n return mathmlWithAnnotation;\n }\n\n /**\n * Removes specific annotation tag in MathML element.\n * In case of remove the unique annotation, also is removed semantics tag.\n * @param {String} mathml - valid MathML.\n * @param {String} annotationEncoding - annotation encoding to remove.\n * @returns {String} - 'mathml' without the annotation encoding specified.\n */\n static removeAnnotation(mathml, annotationEncoding) {\n let mathmlWithoutAnnotation = mathml;\n const openAnnotationTag = `<annotation encoding=\"${annotationEncoding}\">`;\n const closeAnnotationTag = \"</annotation>\";\n const startAnnotationIndex = mathml.indexOf(openAnnotationTag);\n if (startAnnotationIndex !== -1) {\n let differentAnnotationFound = false;\n let differentAnnotationIndex = mathml.indexOf(\"<annotation\");\n while (differentAnnotationIndex !== -1) {\n if (differentAnnotationIndex !== startAnnotationIndex) {\n differentAnnotationFound = true;\n }\n differentAnnotationIndex = mathml.indexOf(\"<annotation\", differentAnnotationIndex + 1);\n }\n\n if (differentAnnotationFound) {\n const closeIndex = mathml.indexOf(closeAnnotationTag, startAnnotationIndex);\n const endAnnotationIndex = closeIndex + closeAnnotationTag.length;\n const startIndex = mathml.substring(0, startAnnotationIndex);\n mathmlWithoutAnnotation = startIndex + mathml.substring(endAnnotationIndex);\n } else {\n mathmlWithoutAnnotation = MathML.removeSemantics(mathml);\n }\n }\n\n return mathmlWithoutAnnotation;\n }\n\n /**\n * Removes semantics tag to mathml.\n * When using Hand to create formulas, it adds the mrow tag due to the semantics one, this one is also removed.\n * @param {string} mathml - MathML string.\n * @returns {string} - 'mathml' without semantics tag.\n */\n static removeSemantics(mathml) {\n // If `mrow` is found right before the `semantics` starting tag, it's removed as well\n const semanticsStartingTagRegex = /<semantics>\\s*?(<mrow>)?/gm;\n\n // If `mrow` is found right after the `annotation` ending tag, it's removed as well\n // alongside `semantics` closing tag and the whole `annotation` tag and its contents.\n const semanticsEndingTagRegex = /(<\\/mrow>)?\\s*<annotation[\\W\\w]*?<\\/semantics>/gm;\n\n return mathml.replace(semanticsStartingTagRegex, \"\").replace(semanticsEndingTagRegex, \"\");\n }\n\n /**\n * Removes semantics tag to element that contains mathml.\n * When using Hand to create formulas, it adds the mrow tag due to the semantics one, this one is also removed.\n * @param {string} element - Inner HTML text string.\n * @returns {string} - 'mathml' without semantics tag.\n */\n static removeSafeXMLSemantics(element) {\n // If `mrow` is found right before the `semantics` starting tag, it's removed as well\n const semanticsSafeStartingTagRegex = /«semantics»\\s*?(«mrow»)?/gm;\n\n // If `mrow` is found right after the `annotation` ending tag, it's removed as well\n // alongside `semantics` closing tag and the whole `annotation` tag and its contents.\n const semanticsSafeEndingTagRegex = /(«\\/mrow»)?\\s*«annotation[\\W\\w]*?«\\/semantics»/gm;\n\n return element.replace(semanticsSafeStartingTagRegex, \"\").replace(semanticsSafeEndingTagRegex, \"\");\n }\n\n /**\n * Transforms all xml mathml occurrences that contain semantics to the same\n * xml mathml occurrences without semantics.\n * @param {string} text - string that can contain xml mathml occurrences.\n * @param {Constants} [characters] - Constant object containing xmlCharacters\n * or safeXmlCharacters relation.\n * xmlCharacters by default.\n * @returns {string} - 'text' with all xml mathml occurrences without annotation tag.\n */\n static removeSemanticsOcurrences(text, characters = Constants.xmlCharacters) {\n const mathTagStart = `${characters.tagOpener}math`;\n const mathTagEnd = `${characters.tagOpener}/math${characters.tagCloser}`;\n const mathTagEndline = `/${characters.tagCloser}`;\n const { tagCloser } = characters;\n const semanticsTagStart = `${characters.tagOpener}semantics${characters.tagCloser}`;\n const annotationTagStart = `${characters.tagOpener}annotation encoding=`;\n\n let output = \"\";\n let start = text.indexOf(mathTagStart);\n let end = 0;\n while (start !== -1) {\n output += text.substring(end, start);\n\n // MathML can be written as '<math></math>' or '<math />'.\n const mathTagEndIndex = text.indexOf(mathTagEnd, start);\n const mathTagEndlineIndex = text.indexOf(mathTagEndline, start);\n const firstTagCloser = text.indexOf(tagCloser, start);\n if (mathTagEndIndex !== -1) {\n end = mathTagEndIndex;\n } else if (mathTagEndlineIndex === firstTagCloser - 1) {\n end = mathTagEndlineIndex;\n }\n\n const semanticsIndex = text.indexOf(semanticsTagStart, start);\n if (semanticsIndex !== -1) {\n const mmlTagStart = text.substring(start, semanticsIndex);\n const annotationIndex = text.indexOf(annotationTagStart, start);\n if (annotationIndex !== -1) {\n const startIndex = semanticsIndex + semanticsTagStart.length;\n const mmlContent = text.substring(startIndex, annotationIndex);\n output += mmlTagStart + mmlContent + mathTagEnd;\n start = text.indexOf(mathTagStart, start + mathTagStart.length);\n end += mathTagEnd.length;\n } else {\n end = start;\n start = text.indexOf(mathTagStart, start + mathTagStart.length);\n }\n } else {\n end = start;\n start = text.indexOf(mathTagStart, start + mathTagStart.length);\n }\n }\n\n output += text.substring(end, text.length);\n return output;\n }\n\n /**\n * Returns true if a MathML contains a certain class.\n * @param {string} mathML - input MathML.\n * @param {string} className - className.\n * @returns {boolean} true if the input MathML contains the input class.\n * false otherwise.\n * @static\n */\n static containClass(mathML, className) {\n const classIndex = mathML.indexOf(\"class\");\n if (classIndex === -1) {\n return false;\n }\n const classTagEndIndex = mathML.indexOf(\">\", classIndex);\n const classTag = mathML.substring(classIndex, classTagEndIndex);\n if (classTag.indexOf(className) !== -1) {\n return true;\n }\n return false;\n }\n\n /**\n * Returns true if mathml is empty. Otherwise, false.\n * @param {string} mathml - valid MathML with standard XML tags.\n * @returns {boolean} - true if mathml is empty. Otherwise, false.\n */\n static isEmpty(mathml) {\n // MathML can have the shape <math></math> or '<math />'.\n const closeTag = \">\";\n const closeTagInline = \"/>\";\n const firstCloseTagIndex = mathml.indexOf(closeTag);\n const firstCloseTagInlineIndex = mathml.indexOf(closeTagInline);\n let empty = false;\n // MathML is always empty in the second shape.\n if (firstCloseTagInlineIndex !== -1) {\n if (firstCloseTagInlineIndex === firstCloseTagIndex - 1) {\n empty = true;\n }\n }\n\n // MathML is always empty in the first shape when there aren't elements\n // between math tags.\n if (!empty) {\n const mathTagEndRegex = new RegExp(\"</(.+:)?math>\");\n const mathTagEndArray = mathTagEndRegex.exec(mathml);\n if (mathTagEndArray) {\n empty = firstCloseTagIndex + 1 === mathTagEndArray.index;\n }\n }\n\n return empty;\n }\n\n /**\n * Encodes html entities inside properties.\n * @param {String} mathml - valid MathML with standard XML tags.\n * @returns {String} - 'mathml' with property entities encoded.\n */\n static encodeProperties(mathml) {\n // Search all the properties.\n const regex = /\\w+=\".*?\"/g;\n // Encode html entities.\n const replacer = (match) => {\n // It has the shape:\n // <math propertyOne=\"somethingOne\"><children propertyTwo=\"somethingTwo\"></children></math>.\n const quoteIndex = match.indexOf('\"');\n const propertyValue = match.substring(quoteIndex + 1, match.length - 1);\n const propertyValueEncoded = Util.htmlEntities(propertyValue);\n const matchEncoded = `${match.substring(0, quoteIndex + 1)}${propertyValueEncoded}\"`;\n return matchEncoded;\n };\n\n const mathmlEncoded = mathml.replace(regex, replacer);\n return mathmlEncoded;\n }\n}\n","/**\n * This class represents the configuration class.\n * Usually used to retrieve configuration properties generated in the backend into the frontend.\n */\nexport default class Configuration {\n /**\n * Adds a properties object to {@link Configuration.properties}.\n * @param {Object} properties - properties to append to current properties.\n */\n static addConfiguration(properties) {\n Object.assign(Configuration.properties, properties);\n }\n\n /**\n * Static property.\n * The configuration properties object.\n * @private\n * @type {Object}\n */\n static get properties() {\n return Configuration._properties;\n }\n\n /**\n * Static property setter.\n * Set configuration properties.\n * @param {Object} value - The property value.\n * @ignore\n */\n static set properties(value) {\n Configuration._properties = value;\n }\n\n /**\n * Returns the value of a property key.\n * @param {String} key - Property key\n * @returns {String} Property value\n */\n static get(key) {\n if (!Object.prototype.hasOwnProperty.call(Configuration.properties, key)) {\n // Backwards compatibility.\n if (Object.prototype.hasOwnProperty.call(Configuration.properties, \"_wrs_conf_\")) {\n return Configuration.properties[`_wrs_conf_${key}`];\n }\n return false;\n }\n return Configuration.properties[key];\n }\n\n /**\n * Adds a new property to Configuration class.\n * @param {String} key - Property key.\n * @param {Object} value - Property value.\n */\n static set(key, value) {\n Configuration.properties[key] = value;\n }\n\n /**\n * Updates a property object value with new values.\n * @param {String} key - The property key to be updated.\n * @param {Object} propertyValue - Object containing the new values.\n */\n static update(key, propertyValue) {\n if (!Configuration.get(key)) {\n Configuration.set(key, propertyValue);\n } else {\n const updateProperty = Object.assign(Configuration.get(key), propertyValue);\n Configuration.set(key, updateProperty);\n }\n }\n}\n\n/**\n * Static properties object. Stores all configuration properties.\n * Needed to attribute accessors.\n * @private\n * @type {Object}\n */\nConfiguration._properties = {};\n","export default class TextCache {\n /**\n * @classdesc\n * This class represent a client-side text cache class. Contains pairs of\n * strings (key/value) which can be retrieved in any moment. Usually used\n * to store AJAX responses for text services like mathml2latex\n * (c.f {@link Latex} class) or mathml2accessible (c.f {@link Accessibility} class).\n * @constructs\n */\n constructor() {\n /**\n * Cache array property storing the cache entries.\n * @type {Array.<String>}\n */\n this.cache = [];\n }\n\n /**\n * This method populates a key/value pair into the {@link this.cache} property.\n * @param {String} key - Cache key, usually the service string parameter.\n * @param {String} value - Cache value, usually the service response.\n */\n populate(key, value) {\n this.cache[key] = value;\n }\n\n /**\n * Returns the cache value associated to certain cache key.\n * @param {String} key - Cache key, usually the service string parameter.\n * @return {String} value - Cache value, if exists. False otherwise.\n */\n get(key) {\n if (Object.prototype.hasOwnProperty.call(this.cache, key)) {\n return this.cache[key];\n }\n return false;\n }\n}\n","/**\n * This object represents a custom listener.\n * @typedef {Object} Listener\n * @property {String} Listener.eventName - The listener name.\n * @property {Function} Listener.callback - The listener callback function.\n */\n\nexport default class Listeners {\n /**\n * @classdesc\n * This class represents a custom listeners manager.\n * @constructs\n */\n constructor() {\n /**\n * Array containing all custom listeners.\n * @type {Object[]}\n */\n this.listeners = [];\n }\n\n /**\n * Add a listener to Listener class.\n * @param {Object} listener - A listener object.\n */\n add(listener) {\n this.listeners.push(listener);\n }\n\n /**\n * Fires MathType event listeners\n * @param {String} eventName - event name\n * @param {Event} event - event object.\n * @return {boolean} false if event has been prevented. true otherwise.\n */\n fire(eventName, event) {\n for (let i = 0; i < this.listeners.length && !event.cancelled; i += 1) {\n if (this.listeners[i].eventName === eventName) {\n // Calling listener.\n this.listeners[i].callback(event);\n }\n }\n return event.defaultPrevented;\n }\n\n /**\n * Creates a new listener object.\n * @param {string} eventName - Event name.\n * @param {Object} callback - Callback function.\n * @returns {object} the listener object.\n */\n static newListener(eventName, callback) {\n const listener = {};\n listener.eventName = eventName;\n listener.callback = callback;\n return listener;\n }\n}\n","import Util from \"./util\";\nimport Listeners from \"./listeners\";\nimport Configuration from \"./configuration\";\n\n/**\n * @typedef {Object} ServiceProviderProperties\n * @property {String} URI - Service URI.\n * @property {String} server - Service server language.\n */\n\n/**\n * @classdesc\n * Class representing a serviceProvider. A serviceProvider is a class containing\n * an arbitrary number of services with the correspondent path.\n */\nexport default class ServiceProvider {\n /**\n * Returns Service Provider listeners.\n * @type {Listeners}\n */\n static get listeners() {\n return ServiceProvider._listeners;\n }\n\n /**\n * Adds a {@link Listener} instance to {@link ServiceProvider} class.\n * @param {Listener} listener - Instance of {@link Listener}.\n */\n static addListener(listener) {\n ServiceProvider.listeners.add(listener);\n }\n\n /**\n * Fires events in Service Provider.\n * @param {String} eventName - Event name.\n * @param {Event} event - Event object.\n */\n static fireEvent(eventName, event) {\n ServiceProvider.listeners.fire(eventName, event);\n }\n\n /**\n * Service parameters.\n * @type {ServiceProviderProperties}\n *\n */\n static get parameters() {\n return ServiceProvider._parameters;\n }\n\n /**\n * Service parameters.\n * @private\n * @type {ServiceProviderProperties}\n */\n static set parameters(parameters) {\n ServiceProvider._parameters = parameters;\n }\n\n /**\n * Static property.\n * Return service provider paths.\n * @private\n * @type {String}\n */\n static get servicePaths() {\n return ServiceProvider._servicePaths;\n }\n\n /**\n * Static property setter.\n * Set service paths.\n * @param {String} value - The property value.\n * @ignore\n */\n static set servicePaths(value) {\n ServiceProvider._servicePaths = value;\n }\n\n /**\n * Adds a new service to the ServiceProvider.\n * @param {String} service - Service name.\n * @param {String} path - Service path.\n * @static\n */\n static setServicePath(service, path) {\n ServiceProvider.servicePaths[service] = path;\n }\n\n /**\n * Returns the service path for a certain service.\n * @param {String} serviceName - Service name.\n * @returns {String} The service path.\n * @static\n */\n static getServicePath(serviceName) {\n return ServiceProvider.servicePaths[serviceName];\n }\n\n /**\n * Static property.\n * Service provider integration path.\n * @type {String}\n */\n static get integrationPath() {\n return ServiceProvider._integrationPath;\n }\n\n /**\n * Static property setter.\n * Set service provider integration path.\n * @param {String} value - The property value.\n * @ignore\n */\n static set integrationPath(value) {\n ServiceProvider._integrationPath = value;\n }\n\n /**\n * Returns the server URL in the form protocol://serverName:serverPort.\n * @return {String} The client side server path.\n */\n static getServerURL() {\n const url = window.location.href;\n const arr = url.split(\"/\");\n const result = `${arr[0]}//${arr[2]}`;\n return result;\n }\n\n /**\n * Inits {@link this} class. Uses {@link this.integrationPath} as\n * base path to generate all backend services paths.\n * @param {Object} parameters - Function parameters.\n * @param {String} parameters.integrationPath - Service path.\n */\n static init(parameters) {\n ServiceProvider.parameters = parameters;\n // Services path (tech dependant).\n let configurationURI = ServiceProvider.createServiceURI(\"configurationjs\");\n let createImageURI = ServiceProvider.createServiceURI(\"createimage\");\n let showImageURI = ServiceProvider.createServiceURI(\"showimage\");\n let getMathMLURI = ServiceProvider.createServiceURI(\"getmathml\");\n let serviceURI = ServiceProvider.createServiceURI(\"service\");\n\n // Some backend integrations (like Java o Ruby) have an absolute backend path,\n // for example: /app/service. For them we calculate the absolute URL path, i.e\n // protocol://domain:port/app/service\n if (ServiceProvider.parameters.URI.indexOf(\"/\") === 0) {\n const serverPath = ServiceProvider.getServerURL();\n configurationURI = serverPath + configurationURI;\n showImageURI = serverPath + showImageURI;\n createImageURI = serverPath + createImageURI;\n getMathMLURI = serverPath + getMathMLURI;\n serviceURI = serverPath + serviceURI;\n }\n\n ServiceProvider.setServicePath(\"configurationjs\", configurationURI);\n ServiceProvider.setServicePath(\"showimage\", showImageURI);\n ServiceProvider.setServicePath(\"createimage\", createImageURI);\n ServiceProvider.setServicePath(\"service\", serviceURI);\n ServiceProvider.setServicePath(\"getmathml\", getMathMLURI);\n ServiceProvider.setServicePath(\"configurationjs\", configurationURI);\n\n ServiceProvider.listeners.fire(\"onInit\", {});\n }\n\n /**\n * Gets the content from an URL.\n * @param {String} url - Target URL.\n * @param {Object} [postVariables] - Object containing post variables.\n * null if a GET query should be done.\n * @returns {String} Content of the target URL.\n * @private\n * @static\n */\n static getUrl(url, postVariables) {\n const currentPath = window.location.toString().substr(0, window.location.toString().lastIndexOf(\"/\") + 1);\n const httpRequest = Util.createHttpRequest();\n\n if (httpRequest) {\n if (typeof postVariables === \"undefined\" || typeof postVariables === \"undefined\") {\n httpRequest.open(\"GET\", url, false);\n } else if (url.substr(0, 1) === \"/\" || url.substr(0, 7) === \"http://\" || url.substr(0, 8) === \"https://\") {\n httpRequest.open(\"POST\", url, false);\n } else {\n httpRequest.open(\"POST\", currentPath + url, false);\n }\n\n let header = Configuration.get(\"customHeaders\");\n if (header) {\n if (typeof header === \"string\") {\n header = Util.convertStringToObject(header);\n }\n Object.entries(header).forEach(([key, val]) => httpRequest.setRequestHeader(key, val));\n }\n\n if (typeof postVariables !== \"undefined\" && postVariables) {\n httpRequest.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded; charset=UTF-8\");\n httpRequest.send(Util.httpBuildQuery(postVariables));\n } else {\n httpRequest.send(null);\n }\n\n return httpRequest.responseText;\n }\n return \"\";\n }\n\n /**\n * Returns the response text of a certain service.\n * @param {String} service - Service name.\n * @param {String} postVariables - Post variables.\n * @param {Boolean} get - True if the request is GET instead of POST. false otherwise.\n * @returns {String} Service response text.\n */\n static getService(service, postVariables, get) {\n let response;\n if (get === true) {\n const getVariables = postVariables ? `?${postVariables}` : \"\";\n const serviceUrl = `${ServiceProvider.getServicePath(service)}${getVariables}`;\n response = ServiceProvider.getUrl(serviceUrl);\n } else {\n const serviceUrl = ServiceProvider.getServicePath(service);\n response = ServiceProvider.getUrl(serviceUrl, postVariables);\n }\n return response;\n }\n\n /**\n * Returns the server language of a certain service. The possible values\n * are: php, aspx, java and ruby.\n * This method has backward compatibility purposes.\n * @param {String} service - The configuration service.\n * @returns {String} - The server technology associated with the configuration service.\n */\n static getServerLanguageFromService(service) {\n if (service.indexOf(\".php\") !== -1) {\n return \"php\";\n }\n if (service.indexOf(\".aspx\") !== -1) {\n return \"aspx\";\n }\n if (service.indexOf(\"wirispluginengine\") !== -1) {\n return \"ruby\";\n }\n return \"java\";\n }\n\n /**\n * Returns the URI associated with a certain service.\n * @param {String} service - The service name.\n * @return {String} The service path.\n */\n static createServiceURI(service) {\n const extension = ServiceProvider.serverExtension();\n return Util.concatenateUrl(ServiceProvider.parameters.URI, service) + extension;\n }\n\n static serverExtension() {\n if (ServiceProvider.parameters.server.indexOf(\"php\") !== -1) {\n return \".php\";\n }\n if (ServiceProvider.parameters.server.indexOf(\"aspx\") !== -1) {\n return \".aspx\";\n }\n return \"\";\n }\n}\n\n/**\n * @property {String} service - The service name.\n * @property {String} path - The service path.\n * @static\n */\nServiceProvider._servicePaths = {};\n\n/**\n * The integration path. Contains the path of the configuration service.\n * Used to define the path for all services.\n * @type {String}\n * @private\n */\nServiceProvider._integrationPath = \"\";\n\n/**\n * ServiceProvider static listeners.\n * @type {Listeners}\n * @private\n */\nServiceProvider._listeners = new Listeners();\n\n/**\n * Service provider parameters.\n * @type {ServiceProviderParameters}\n */\nServiceProvider._parameters = {};\n","import TextCache from \"./textcache\";\nimport MathML from \"./mathml\";\nimport ServiceProvider from \"./serviceprovider\";\nimport Constants from \"./constants\";\nimport Util from \"./util\";\n\n/**\n * @classdesc\n * This class represents a LaTeX parser. Manages the services which allows to convert\n * LaTeX into MathML and MathML into LaTeX.\n */\nexport default class Latex {\n /**\n * Static property.\n * Return latex cache.\n * @private\n * @type {Cache}\n */\n static get cache() {\n return Latex._cache;\n }\n\n /**\n * Static property setter.\n * Set latex cache.\n * @param {Cache} value - The property value.\n * @ignore\n */\n static set cache(value) {\n Latex._cache = value;\n }\n\n /**\n * Converts MathML to LaTeX by calling mathml2latex service. For text services\n * we call a text service with the param mathml2latex.\n * @param {String} mathml - MathML String.\n * @return {String} LaTeX string generated by the MathML argument.\n */\n static getLatexFromMathML(mathml) {\n const mathmlWithoutSemantics = MathML.removeSemantics(mathml);\n /**\n * @type {TextCache}\n */\n const { cache } = Latex;\n\n const data = {\n service: \"mathml2latex\",\n mml: mathmlWithoutSemantics,\n };\n\n const jsonResponse = JSON.parse(ServiceProvider.getService(\"service\", data));\n\n // TODO: Error handling.\n let latex = \"\";\n\n if (jsonResponse.status === \"ok\") {\n latex = jsonResponse.result.text;\n const latexHtmlEntitiesEncoded = Util.htmlEntities(latex);\n // Inserting LaTeX semantics.\n const mathmlWithSemantics = MathML.addAnnotation(mathml, latexHtmlEntitiesEncoded, \"LaTeX\");\n cache.populate(latex, mathmlWithSemantics);\n }\n\n return latex;\n }\n\n /**\n * Converts LaTeX to MathML by calling latex2mathml service. For text services\n * we call a text service with the param latex2mathml.\n * @param {String} latex - String containing a LaTeX formula.\n * @param {Boolean} includeLatexOnSemantics\n * - If true LaTeX would me included into MathML semantics.\n * @return {String} MathML string generated by the LaTeX argument.\n */\n static getMathMLFromLatex(latex, includeLatexOnSemantics) {\n /**\n * @type {TextCache}\n */\n const latexCache = Latex.cache;\n\n if (Latex.cache.get(latex)) {\n return Latex.cache.get(latex);\n }\n const data = {\n service: \"latex2mathml\",\n latex,\n };\n\n if (includeLatexOnSemantics) {\n data.saveLatex = \"\";\n }\n\n const jsonResponse = JSON.parse(ServiceProvider.getService(\"service\", data));\n\n let output;\n if (jsonResponse.status === \"ok\") {\n let mathml = jsonResponse.result.text;\n mathml = mathml.split(\"\\r\").join(\"\").split(\"\\n\").join(\" \");\n\n // Populate LatexCache.\n if (mathml.indexOf(\"semantics\") === -1 && mathml.indexOf(\"annotation\") === -1) {\n const content = Util.htmlEntities(latex);\n mathml = MathML.addAnnotation(mathml, content, \"LaTeX\");\n output = mathml;\n } else {\n output = mathml;\n }\n if (!latexCache.get(latex)) {\n latexCache.populate(latex, mathml);\n }\n } else {\n output = `$$${latex}$$`;\n }\n return output;\n }\n\n /**\n * Converts all occurrences of MathML code to LaTeX.\n * The MathML code should containing <annotation encoding=\"LaTeX\"/> to be converted.\n * @param {String} content - A string containing MathML valid code.\n * @param {Object} characters - An object containing special characters.\n * @return {String} A string containing all MathML annotated occurrences\n * replaced by the corresponding LaTeX code.\n */\n static parseMathmlToLatex(content, characters) {\n let output = \"\";\n const mathTagBegin = `${characters.tagOpener}math`;\n const mathTagEnd = `${characters.tagOpener}/math${characters.tagCloser}`;\n const openTarget = `${characters.tagOpener}annotation encoding=${characters.doubleQuote}LaTeX${characters.doubleQuote}${characters.tagCloser}`;\n const closeTarget = `${characters.tagOpener}/annotation${characters.tagCloser}`;\n let start = content.indexOf(mathTagBegin);\n let end = 0;\n let mathml;\n let startAnnotation;\n let closeAnnotation;\n\n while (start !== -1) {\n output += content.substring(end, start);\n end = content.indexOf(mathTagEnd, start);\n\n if (end === -1) {\n end = content.length - 1;\n } else {\n end += mathTagEnd.length;\n }\n\n mathml = content.substring(start, end);\n\n startAnnotation = mathml.indexOf(openTarget);\n if (startAnnotation !== -1) {\n startAnnotation += openTarget.length;\n closeAnnotation = mathml.indexOf(closeTarget);\n let latex = mathml.substring(startAnnotation, closeAnnotation);\n if (characters === Constants.safeXmlCharacters) {\n latex = MathML.safeXmlDecode(latex);\n }\n output += `$$${latex}$$`;\n // Populate latex into cache.\n\n Latex.cache.populate(latex, mathml);\n } else {\n output += mathml;\n }\n start = content.indexOf(mathTagBegin, end);\n }\n\n output += content.substring(end, content.length);\n return output;\n }\n\n /**\n * Extracts the latex of a determined position in a text.\n * @param {Node} textNode - textNode to extract the LaTeX\n * @param {Number} caretPosition - Starting position to find LaTeX.\n * @param {Object} latexTags - Optional parameter representing tags between latex is inserted.\n * It has the 'open' attribute for the open tag and the 'close' attribute for the close tag.\n * \"$$\" by default.\n * @return {Object} An object with 3 keys: 'latex', 'start' and 'end'. Null if latex is not found.\n * @static\n */\n static getLatexFromTextNode(textNode, caretPosition, latexTags) {\n // TODO: Set LaTeX Tags as Core variable. Fix the call to this function (third argument).\n // Tags used for LaTeX formulas.\n const defaultLatexTags = {\n open: \"$$\",\n close: \"$$\",\n };\n // latexTags is an optional parameter. If is not set, use default latexTags.\n if (typeof latexTags === \"undefined\" || latexTags == null) {\n latexTags = defaultLatexTags;\n }\n // Looking for the first textNode.\n let startNode = textNode;\n\n while (startNode.previousSibling && startNode.previousSibling.nodeType === 3) {\n // TEXT_NODE.\n startNode = startNode.previousSibling;\n }\n\n /**\n * Returns the next latex position and node from a specific node and position.\n * @param {Node} currentNode - Node where searching latex.\n * @param {Number} currentPosition - Current position inside the currentNode.\n * @param {Object} latexTagsToUse - Tags used at latex beginning and latex final.\n * \"$$\" by default.\n * @param {Boolean} tag - Tag containing the current search.\n * @returns {Object} Object containing the current node and the position.\n */\n function getNextLatexPosition(currentNode, currentPosition, tag) {\n let position = currentNode.nodeValue.indexOf(tag, currentPosition);\n\n while (position === -1) {\n currentNode = currentNode.nextSibling;\n\n if (!currentNode) {\n // TEXT_NODE.\n return null; // Not found.\n }\n\n position = currentNode.nodeValue ? currentNode.nodeValue.indexOf(latexTags.close) : -1;\n }\n\n return {\n node: currentNode,\n position,\n };\n }\n\n /**\n * Determines if a node is previous, or not, to a second one.\n * @param {Node} node - Start node.\n * @param {Number} position - Start node position.\n * @param {Node} endNode - End node.\n * @param {Number} endPosition - End node position.\n * @returns {Boolean} True if the starting node is previous thant the en node. false otherwise.\n */\n function isPrevious(node, position, endNode, endPosition) {\n if (node === endNode) {\n return position <= endPosition;\n }\n while (node && node !== endNode) {\n node = node.nextSibling;\n }\n\n return node === endNode;\n }\n\n let start;\n let end = {\n node: startNode,\n position: 0,\n };\n // Is supposed that open and close tags has the same length.\n const tagLength = latexTags.open.length;\n do {\n start = getNextLatexPosition(end.node, end.position, latexTags.open);\n\n if (start == null || isPrevious(textNode, caretPosition, start.node, start.position)) {\n return null;\n }\n\n end = getNextLatexPosition(start.node, start.position + tagLength, latexTags.close);\n\n if (end == null) {\n return null;\n }\n\n end.position += tagLength;\n } while (isPrevious(end.node, end.position, textNode, caretPosition));\n\n // Isolating latex.\n let latex;\n\n if (start.node === end.node) {\n latex = start.node.nodeValue.substring(start.position + tagLength, end.position - tagLength);\n } else {\n const index = start.position + tagLength;\n latex = start.node.nodeValue.substring(index, start.node.nodeValue.length);\n let currentNode = start.node;\n\n do {\n currentNode = currentNode.nextSibling;\n if (currentNode === end.node) {\n latex += end.node.nodeValue.substring(0, end.position - tagLength);\n } else {\n latex += currentNode.nodeValue ? currentNode.nodeValue : \"\";\n }\n } while (currentNode !== end.node);\n }\n\n return {\n latex,\n startNode: start.node,\n startPosition: start.position,\n endNode: end.node,\n endPosition: end.position,\n };\n }\n}\n\n/**\n * Text cache. Stores all processed LaTeX strings and it's correspondent MathML string.\n * @type {Cache}\n * @static\n */\nLatex._cache = new TextCache();\n","import translations from \"../lang/strings.json\";\n/**\n * This class represents a string manager. It's used to load localized strings.\n */\nexport default class StringManager {\n constructor() {\n throw new Error(\"Static class StringManager can not be instantiated.\");\n }\n\n /**\n * Returns the associated value of certain string key. If the associated value\n * doesn't exits returns the original key.\n * @param {string} key - string key\n * @param {string} lang - DEFAULT = null. Specify the language to translate the string\n * @returns {string} correspondent value. If doesn't exists original key.\n */\n static get(key, lang) {\n // Default language definition\n let { language } = this;\n\n // If parameter language, use it\n if (lang) {\n language = lang;\n }\n\n // Cut down on strings. e.g. en_US -> en\n if (language && language.length > 2) {\n language = language.slice(0, 2);\n }\n\n // Check if we support the language\n if (!this.strings.hasOwnProperty(language)) {\n // eslint-disable-line no-prototype-builtins\n console.warn(`Unknown language ${language} set in StringManager.`);\n language = \"en\";\n }\n\n // Check if the key is supported in the given language\n if (!this.strings[language].hasOwnProperty(key)) {\n // eslint-disable-line no-prototype-builtins\n console.warn(`Unknown key ${key} for language ${language} in StringManager.`);\n return key;\n }\n\n return this.strings[language][key];\n }\n}\n\n/**\n * Dictionary of dictionaries:\n * Key: language code\n * Value: Key: id of the string\n * Value: translation of the string\n */\nStringManager.strings = translations;\n\n/**\n * Language of the translations; English by default\n */\nStringManager.language = \"en\";\n","/* eslint-disable no-bitwise */\nimport DOMPurify from \"dompurify\";\nimport MathML from \"./mathml\";\nimport Configuration from \"./configuration\";\nimport Latex from \"./latex\";\nimport StringManager from \"./stringmanager\";\n\n/**\n * This class represents an utility class.\n */\nexport default class Util {\n /**\n * Fires an event in a target.\n * @param {EventTarget} eventTarget - target where event should be fired.\n * @param {string} eventName event to fire.\n * @static\n */\n static fireEvent(eventTarget, eventName) {\n if (document.createEvent) {\n const eventObject = document.createEvent(\"HTMLEvents\");\n eventObject.initEvent(eventName, true, true);\n return !eventTarget.dispatchEvent(eventObject);\n }\n\n const eventObject = document.createEventObject();\n return eventTarget.fireEvent(`on${eventName}`, eventObject);\n }\n\n /**\n * Cross-browser addEventListener/attachEvent function.\n * @param {EventTarget} eventTarget - target to add the event.\n * @param {string} eventName - specifies the type of event.\n * @param {Function} callBackFunction - callback function.\n * @static\n */\n static addEvent(eventTarget, eventName, callBackFunction) {\n if (eventTarget.addEventListener) {\n eventTarget.addEventListener(eventName, callBackFunction, true);\n } else if (eventTarget.attachEvent) {\n // Backwards compatibility.\n eventTarget.attachEvent(`on${eventName}`, callBackFunction);\n }\n }\n\n /**\n * Cross-browser removeEventListener/detachEvent function.\n * @param {EventTarget} eventTarget - target to add the event.\n * @param {string} eventName - specifies the type of event.\n * @param {Function} callBackFunction - function to remove from the event target.\n * @static\n */\n static removeEvent(eventTarget, eventName, callBackFunction) {\n if (eventTarget.removeEventListener) {\n eventTarget.removeEventListener(eventName, callBackFunction, true);\n } else if (eventTarget.detachEvent) {\n eventTarget.detachEvent(`on${eventName}`, callBackFunction);\n }\n }\n\n /**\n * A map from event target to event handlers so we can remove the event\n * listeners in removeElementEvents\n *\n * @type {Map<EventTarget, Object>}\n * @static\n */\n static elementEventsMap = new Map();\n\n /**\n * Adds the a callback function, for a certain event target, to the following event types:\n * - dblclick\n * - mousedown\n * - mouseup\n * @param {EventTarget} eventTarget - event target.\n * @param {Function} doubleClickHandler - function to run when on dblclick event.\n * @param {Function} mousedownHandler - function to run when on mousedown event.\n * @param {Function} mouseupHandler - function to run when on mouseup event.\n * @static\n */\n static addElementEvents(eventTarget, doubleClickHandler, mousedownHandler, mouseupHandler) {\n // Make sure not to leak event listeners if we've already added events to\n // this element\n Util.removeElementEvents(eventTarget);\n\n let entry = {};\n Util.elementEventsMap.set(eventTarget, entry);\n\n if (doubleClickHandler) {\n entry.callbackDblclick = (event) => {\n const realEvent = event || window.event;\n const element = realEvent.srcElement ? realEvent.srcElement : realEvent.target;\n doubleClickHandler(element, realEvent);\n };\n\n Util.addEvent(eventTarget, \"dblclick\", entry.callbackDblclick);\n }\n\n if (mousedownHandler) {\n entry.callbackMousedown = (event) => {\n const realEvent = event || window.event;\n const element = realEvent.srcElement ? realEvent.srcElement : realEvent.target;\n mousedownHandler(element, realEvent);\n };\n\n Util.addEvent(eventTarget, \"mousedown\", entry.callbackMousedown);\n }\n\n if (mouseupHandler) {\n entry.callbackMouseup = (event) => {\n const realEvent = event || window.event;\n const element = realEvent.srcElement ? realEvent.srcElement : realEvent.target;\n mouseupHandler(element, realEvent);\n };\n // Chrome doesn't trigger this event for eventTarget if we release the mouse button\n // while the mouse is outside the editor text field.\n // This is a workaround: we trigger the event independently of where the mouse\n // is when we release its button.\n Util.addEvent(document, \"mouseup\", entry.callbackMouseup);\n Util.addEvent(eventTarget, \"mouseup\", entry.callbackMouseup);\n }\n }\n\n /**\n * Remove all callback function, for a certain event target, to the following event types:\n * - dblclick\n * - mousedown\n * - mouseup\n * @param {EventTarget} eventTarget - event target.\n * @static\n */\n static removeElementEvents(eventTarget) {\n let entry = Util.elementEventsMap.get(eventTarget);\n if (!entry) {\n return;\n }\n\n Util.elementEventsMap.delete(eventTarget);\n\n Util.removeEvent(eventTarget, \"dblclick\", entry.callbackDblclick);\n Util.removeEvent(eventTarget, \"mousedown\", entry.callbackMousedown);\n Util.removeEvent(document, \"mouseup\", entry.callbackMouseup);\n Util.removeEvent(eventTarget, \"mouseup\", entry.callbackMouseup);\n }\n\n /**\n * Adds a class name to a HTMLElement.\n * @param {HTMLElement} element - the HTML element.\n * @param {string} className - the class name.\n * @static\n */\n static addClass(element, className) {\n if (!Util.containsClass(element, className)) {\n element.className += ` ${className}`;\n }\n }\n\n /**\n * Checks if a HTMLElement contains a certain class.\n * @param {HTMLElement} element - the HTML element.\n * @param {string} className - the className.\n * @returns {boolean} true if the HTMLElement contains the class name. false otherwise.\n * @static\n */\n static containsClass(element, className) {\n if (element == null || !(\"className\" in element)) {\n return false;\n }\n\n const currentClasses = element.className.split(\" \");\n\n for (let i = currentClasses.length - 1; i >= 0; i -= 1) {\n if (currentClasses[i] === className) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Remove a certain class for a HTMLElement.\n * @param {HTMLElement} element - the HTML element.\n * @param {string} className - the class name.\n * @static\n */\n static removeClass(element, className) {\n let newClassName = \"\";\n const classes = element.className.split(\" \");\n\n for (let i = 0; i < classes.length; i += 1) {\n if (classes[i] !== className) {\n newClassName += `${classes[i]} `;\n }\n }\n element.className = newClassName.trim();\n }\n\n /**\n * Converts old xml initial text attribute (with «») to the correct one(with §lt;§gt;). It's\n * used to parse old applets.\n * @param {string} text - string containing safeXml characters\n * @returns {string} a string with safeXml characters parsed.\n * @static\n */\n static convertOldXmlinitialtextAttribute(text) {\n // Used to fix a bug with Cas imported from Moodle 1.9 to Moodle 2.x.\n // This could be removed in future.\n const val = \"value=\";\n\n const xitpos = text.indexOf(\"xmlinitialtext\");\n const valpos = text.indexOf(val, xitpos);\n const quote = text.charAt(valpos + val.length);\n const startquote = valpos + val.length + 1;\n const endquote = text.indexOf(quote, startquote);\n\n const value = text.substring(startquote, endquote);\n\n let newvalue = value.split(\"«\").join(\"§lt;\");\n newvalue = newvalue.split(\"»\").join(\"§gt;\");\n newvalue = newvalue.split(\"&\").join(\"§\");\n newvalue = newvalue.split(\"¨\").join(\"§quot;\");\n\n text = text.split(value).join(newvalue);\n return text;\n }\n\n /**\n * Convert a string representation of key-value pairs to an object.\n * @param {string} keyValueString - String with key-value pairs in the format key1='value1', key2='value2'\n * @returns {Object} - Object containing the key-value pairs\n */\n static convertStringToObject(keyValueString) {\n if (!keyValueString || typeof keyValueString !== \"string\") {\n return {};\n }\n\n return keyValueString\n .split(\",\")\n .map((pair) => pair.trim().split(\"=\"))\n .reduce((resultObject, [key, value]) => {\n if (key && value) {\n resultObject[key] = value;\n }\n return resultObject;\n }, {});\n }\n\n /**\n * Cross-browser solution for creating new elements.\n * @param {string} tagName - tag name of the wished element.\n * @param {Object} attributes - an object where each key is a wished\n * attribute name and each value is its value.\n * @param {Object} [creator] - if supplied, this function will use\n * the \"createElement\" method from this param. Otherwise\n * document will be used as creator.\n * @returns {Element} The DOM element with the specified attributes assigned.\n * @static\n */\n static createElement(tagName, attributes, creator) {\n if (attributes === undefined) {\n attributes = {};\n }\n\n if (creator === undefined) {\n creator = document;\n }\n\n let element;\n\n /*\n * Internet Explorer fix:\n * If you create a new object dynamically, you can't set a non-standard attribute.\n * For example, you can't set the \"src\" attribute on an \"applet\" object.\n * Other browsers will throw an exception and will run the standard code.\n */\n try {\n let html = `<${tagName}`;\n\n Object.keys(attributes).forEach((attributeName) => {\n html += ` ${attributeName}=\"${Util.htmlEntities(attributes[attributeName])}\"`;\n });\n html += \">\";\n element = creator.createElement(html);\n } catch (e) {\n element = creator.createElement(tagName);\n Object.keys(attributes).forEach((attributeName) => {\n element.setAttribute(attributeName, attributes[attributeName]);\n });\n }\n return element;\n }\n\n /**\n * Creates new HTML from it's HTML code as string.\n * @param {string} objectCode - html code\n * @returns {Element} the HTML element.\n * @static\n */\n static createObject(objectCode, creator) {\n if (creator === undefined) {\n creator = document;\n }\n\n // Internet Explorer can't include \"param\" tag when is setting an innerHTML property.\n objectCode = objectCode\n .split(\"<applet \")\n .join('<span wirisObject=\"WirisApplet\" ')\n .split(\"<APPLET \")\n .join('<span wirisObject=\"WirisApplet\" '); // It is a 'span' because 'span' objects can contain 'br' nodes.\n objectCode = objectCode.split(\"</applet>\").join(\"</span>\").split(\"</APPLET>\").join(\"</span>\");\n\n objectCode = objectCode\n .split(\"<param \")\n .join('<br wirisObject=\"WirisParam\" ')\n .split(\"<PARAM \")\n .join('<br wirisObject=\"WirisParam\" '); // It is a 'br' because 'br' can't contain nodes.\n objectCode = objectCode.split(\"</param>\").join(\"</br>\").split(\"</PARAM>\").join(\"</br>\");\n\n const container = Util.createElement(\"div\", {}, creator);\n container.innerHTML = objectCode;\n\n function recursiveParamsFix(object) {\n if (object.getAttribute && object.getAttribute(\"wirisObject\") === \"WirisParam\") {\n const attributesParsed = {};\n\n for (let i = 0; i < object.attributes.length; i += 1) {\n if (object.attributes[i].nodeValue !== null) {\n attributesParsed[object.attributes[i].nodeName] = object.attributes[i].nodeValue;\n }\n }\n\n const param = Util.createElement(\"param\", attributesParsed, creator);\n\n // IE fix.\n if (param.NAME) {\n param.name = param.NAME;\n param.value = param.VALUE;\n }\n\n param.removeAttribute(\"wirisObject\");\n object.parentNode.replaceChild(param, object);\n } else if (object.getAttribute && object.getAttribute(\"wirisObject\") === \"WirisApplet\") {\n const attributesParsed = {};\n\n for (let i = 0; i < object.attributes.length; i += 1) {\n if (object.attributes[i].nodeValue !== null) {\n attributesParsed[object.attributes[i].nodeName] = object.attributes[i].nodeValue;\n }\n }\n\n const applet = Util.createElement(\"applet\", attributesParsed, creator);\n applet.removeAttribute(\"wirisObject\");\n\n for (let i = 0; i < object.childNodes.length; i += 1) {\n recursiveParamsFix(object.childNodes[i]);\n\n if (object.childNodes[i].nodeName.toLowerCase() === \"param\") {\n applet.appendChild(object.childNodes[i]);\n i -= 1; // When we insert the object child into the applet, object loses one child.\n }\n }\n\n object.parentNode.replaceChild(applet, object);\n } else {\n for (let i = 0; i < object.childNodes.length; i += 1) {\n recursiveParamsFix(object.childNodes[i]);\n }\n }\n }\n\n recursiveParamsFix(container);\n return container.firstChild;\n }\n\n /**\n * Converts an Element to its HTML code.\n * @param {Element} element - entry element.\n * @return {string} the HTML code of the input element.\n * @static\n */\n static createObjectCode(element) {\n // In case that the image was not created, the object can be null or undefined.\n if (typeof element === \"undefined\" || element === null) {\n return null;\n }\n\n if (element.nodeType === 1) {\n // ELEMENT_NODE.\n let output = `<${element.tagName}`;\n\n for (let i = 0; i < element.attributes.length; i += 1) {\n if (element.attributes[i].specified) {\n output += ` ${element.attributes[i].name}=\"${Util.htmlEntities(element.attributes[i].value)}\"`;\n }\n }\n\n if (element.childNodes.length > 0) {\n output += \">\";\n\n for (let i = 0; i < element.childNodes.length; i += 1) {\n output += Util.createObject(element.childNodes[i]);\n }\n\n output += `</${element.tagName}>`;\n } else if (element.nodeName === \"DIV\" || element.nodeName === \"SCRIPT\") {\n output += `></${element.tagName}>`;\n } else {\n output += \"/>\";\n }\n\n return output;\n }\n\n if (element.nodeType === 3) {\n // TEXT_NODE.\n return Util.htmlEntities(element.nodeValue);\n }\n\n return \"\";\n }\n\n /**\n * Concatenates two URL paths.\n * @param {string} path1 - first URL path\n * @param {string} path2 - second URL path\n * @returns {string} new URL.\n */\n static concatenateUrl(path1, path2) {\n let separator = \"\";\n if (path1.indexOf(\"/\") !== path1.length && path2.indexOf(\"/\") !== 0) {\n separator = \"/\";\n }\n return (path1 + separator + path2).replace(/([^:]\\/)\\/+/g, \"$1\");\n }\n\n /**\n * Parses a text and replaces all HTML special characters by their correspondent entities.\n * @param {string} input - text to be parsed.\n * @returns {string} the input text with all their special characters replaced by their entities.\n * @static\n */\n static htmlEntities(input) {\n return input.split(\"&\").join(\"&amp;\").split(\"<\").join(\"&lt;\").split(\">\").join(\"&gt;\").split('\"').join(\"&quot;\");\n }\n\n /**\n * Sanitize HTML to prevent XSS injections.\n * @param {string} html - html to be sanitize.\n * @returns {string} html sanitized.\n * @static\n */\n static htmlSanitize(html) {\n const annotationRegex = /(<annotation [^>]*>)([\\s\\S]*?)(<\\/annotation>)/i;\n // Get all the annotation content including the tags.\n const annotation = html.match(annotationRegex);\n\n // Sanitize html code without removing our supported MathML tags and attributes.\n html = DOMPurify.sanitize(html, {\n ADD_TAGS: [\"semantics\", \"annotation\", \"mstack\", \"msline\", \"msrow\", \"none\"],\n ADD_ATTR: [\"linebreak\", \"charalign\", \"stackalign\"],\n });\n\n if (annotation) {\n const startTag = annotation[1];\n const content = annotation[2];\n const endTag = annotation[3];\n\n // Encode strictly <, >, and & to their HTML entities to force the browser to render any HTML as text.\n const safeContent = content\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\");\n\n const safeAnnotation = startTag + safeContent + endTag;\n\n // Re-insert the safely encoded annotation content.\n html = html.replace(annotationRegex, safeAnnotation);\n }\n\n return html;\n }\n\n /**\n * Parses a text and replaces all the HTML entities by their characters.\n * @param {string} input - text to be parsed\n * @returns {string} the input text with all their entities replaced by characters.\n * @static\n */\n static htmlEntitiesDecode(input) {\n // Textarea element decodes when inner html is set.\n const textarea = document.createElement(\"textarea\");\n textarea.innerHTML = input;\n return textarea.value;\n }\n\n /**\n * Returns a cross-browser http request.\n * @return {object} httpRequest request object.\n * @returns {XMLHttpRequest|ActiveXObject} the proper request object.\n */\n static createHttpRequest() {\n const currentPath = window.location.toString().substr(0, window.location.toString().lastIndexOf(\"/\") + 1);\n if (currentPath.substr(0, 7) === \"file://\") {\n throw StringManager.get(\"exception_cross_site\");\n }\n\n if (typeof XMLHttpRequest !== \"undefined\") {\n return new XMLHttpRequest();\n }\n\n try {\n return new ActiveXObject(\"Msxml2.XMLHTTP\");\n } catch (e) {\n try {\n return new ActiveXObject(\"Microsoft.XMLHTTP\");\n } catch (oc) {\n return null;\n }\n }\n }\n\n /**\n * Converts a hash to a HTTP query.\n * @param {Object[]} properties - a key/value object.\n * @returns {string} a HTTP query containing all the key value pairs with\n * all the special characters replaced by their entities.\n * @static\n */\n static httpBuildQuery(properties) {\n let result = \"\";\n\n Object.keys(properties).forEach((i) => {\n if (properties[i] != null) {\n result += `${Util.urlEncode(i)}=${Util.urlEncode(properties[i])}&`;\n }\n });\n\n // Deleting last '&' empty character.\n if (result.substring(result.length - 1) === \"&\") {\n result = result.substring(0, result.length - 1);\n }\n\n return result;\n }\n\n /**\n * Convert a hash to string sorting keys to get a deterministic output\n * @param {Object[]} hash - a key/value object.\n * @returns {string} a string with the form key1=value1...keyn=valuen\n * @static\n */\n static propertiesToString(hash) {\n // 1. Sort keys. We sort the keys because we want a deterministic output.\n const keys = [];\n Object.keys(hash).forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(hash, key)) {\n keys.push(key);\n }\n });\n\n const n = keys.length;\n for (let i = 0; i < n; i += 1) {\n for (let j = i + 1; j < n; j += 1) {\n const s1 = keys[i];\n const s2 = keys[j];\n if (Util.compareStrings(s1, s2) > 0) {\n // Swap.\n keys[i] = s2;\n keys[j] = s1;\n }\n }\n }\n\n // 2. Generate output.\n let output = \"\";\n for (let i = 0; i < n; i += 1) {\n const key = keys[i];\n output += key;\n output += \"=\";\n let value = hash[key];\n value = value.replace(\"\\\\\", \"\\\\\\\\\");\n value = value.replace(\"\\n\", \"\\\\n\");\n value = value.replace(\"\\r\", \"\\\\r\");\n value = value.replace(\"\\t\", \"\\\\t\");\n\n output += value;\n output += \"\\n\";\n }\n return output;\n }\n\n /**\n * Compare two strings using charCodeAt method\n * @param {string} a - first string to compare.\n * @param {string} b - second string to compare.\n * @returns {number} the difference between a and b\n * @static\n */\n static compareStrings(a, b) {\n let i;\n const an = a.length;\n const bn = b.length;\n const n = an > bn ? bn : an;\n for (i = 0; i < n; i += 1) {\n const c = Util.fixedCharCodeAt(a, i) - Util.fixedCharCodeAt(b, i);\n if (c !== 0) {\n return c;\n }\n }\n return a.length - b.length;\n }\n\n /**\n * Fix charCodeAt() JavaScript function to handle non-Basic-Multilingual-Plane characters.\n * @param {string} string - input string\n * @param {number} idx - an integer greater than or equal to 0\n * and less than the length of the string\n * @returns {number} an integer representing the UTF-16 code of the string at the given index.\n * @static\n */\n static fixedCharCodeAt(string, idx) {\n idx = idx || 0;\n const code = string.charCodeAt(idx);\n let hi;\n let low;\n\n /* High surrogate (could change last hex to 0xDB7F to treat high\n private surrogates as single characters) */\n\n if (code >= 0xd800 && code <= 0xdbff) {\n hi = code;\n low = string.charCodeAt(idx + 1);\n if (Number.isNaN(low)) {\n throw StringManager.get(\"exception_high_surrogate\");\n }\n return (hi - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000;\n }\n\n if (code >= 0xdc00 && code <= 0xdfff) {\n // Low surrogate.\n /* We return false to allow loops to skip this iteration since should have\n already handled high surrogate above in the previous iteration. */\n return false;\n }\n return code;\n }\n\n /**\n * Returns an URL with it's query params converted into array.\n * @param {string} url - input URL.\n * @returns {Object[]} an array containing all URL query params.\n * @static\n */\n static urlToAssArray(url) {\n let i;\n i = url.indexOf(\"?\");\n if (i > 0) {\n const query = url.substring(i + 1);\n const ss = query.split(\"&\");\n const h = {};\n for (i = 0; i < ss.length; i += 1) {\n const s = ss[i];\n const kv = s.split(\"=\");\n if (kv.length > 1) {\n h[kv[0]] = decodeURIComponent(kv[1].replace(/\\+/g, \" \"));\n }\n }\n return h;\n }\n return {};\n }\n\n /**\n * Returns an encoded URL by replacing each instance of certain characters by\n * one, two, three or four escape sequences using encodeURIComponent method.\n * !'()* . will not be encoded.\n *\n * @param {string} clearString - URL string to be encoded\n * @returns {string} URL with it's special characters replaced.\n * @static\n */\n static urlEncode(clearString) {\n let output = \"\";\n // Method encodeURIComponent doesn't encode !'()*~ .\n output = encodeURIComponent(clearString);\n return output;\n }\n\n // TODO: To parser?\n /**\n * Converts the HTML of a image into the output code that WIRIS must return.\n * By default returns the MathML stored on data-mahml attribute (if imgCode is a formula)\n * or the Wiriscas attribute of a WIRIS applet.\n * @param {string} imgCode - the html code from a formula or a CAS image.\n * @param {boolean} convertToXml - true if the image should be converted to XML.\n * @param {boolean} convertToSafeXml - true if the image should be converted to safeXML.\n * @returns {string} the XML or safeXML of a WIRIS image.\n * @static\n */\n static getWIRISImageOutput(imgCode, convertToXml, convertToSafeXml) {\n const imgObject = Util.createObject(imgCode);\n if (imgObject) {\n if (\n imgObject.className === Configuration.get(\"imageClassName\") ||\n imgObject.getAttribute(Configuration.get(\"imageMathmlAttribute\"))\n ) {\n if (!convertToXml) {\n return imgCode;\n }\n\n const dataMathML = imgObject.getAttribute(Configuration.get(\"imageMathmlAttribute\"));\n // To handle annotations, first we need the MathML in XML.\n let mathML = MathML.safeXmlDecode(dataMathML);\n\n if (!Configuration.get(\"saveHandTraces\")) {\n mathML = MathML.removeAnnotation(mathML, \"application/json\");\n }\n\n if (mathML == null) {\n mathML = imgObject.getAttribute(\"alt\");\n }\n\n // WARNING: This code is needed for CKEditor 5 Track Changes compatibility.\n // Preserve Track Changes attributes when converting image back to MathML.\n // This ensures change tracking information is maintained during the roundtrip conversion\n // (MathML → Image → MathML) in collaborative editing scenarios.\n const TRACK_CHANGES_ATTRIBUTE_PREFIXES = [\"data-suggestion-\", \"data-comment-\"];\n const preservedAttributes = {};\n\n // Extract Track Changes attributes from the image element\n for (const { name: attributeName, value: attributeValue } of imgObject.attributes) {\n const isTrackChangesAttribute = TRACK_CHANGES_ATTRIBUTE_PREFIXES.some((prefix) =>\n attributeName.startsWith(prefix),\n );\n\n if (isTrackChangesAttribute) {\n preservedAttributes[attributeName] = attributeValue;\n }\n }\n\n // If Track Changes attributes were found, inject them into the MathML opening tag\n if (Object.keys(preservedAttributes).length > 0) {\n const attributesString = Object.keys(preservedAttributes)\n .map((name) => ` ${name}=\"${Util.htmlEntities(preservedAttributes[name])}\"`)\n .join(\"\");\n\n mathML = mathML.replace(/(<math)/i, `$1${attributesString}`);\n }\n\n if (convertToSafeXml) {\n const safeMathML = MathML.safeXmlEncode(mathML);\n return safeMathML;\n }\n\n return mathML;\n }\n }\n return imgCode;\n }\n\n /**\n * Gets the node length in characters.\n * @param {Node} node - HTML node.\n * @returns {number} node length.\n * @static\n */\n static getNodeLength(node) {\n const staticNodeLengths = {\n IMG: 1,\n BR: 1,\n };\n\n if (node.nodeType === 3) {\n // TEXT_NODE.\n return node.nodeValue.length;\n }\n\n if (node.nodeType === 1) {\n // ELEMENT_NODE.\n let length = staticNodeLengths[node.nodeName.toUpperCase()];\n\n if (length === undefined) {\n length = 0;\n }\n\n for (let i = 0; i < node.childNodes.length; i += 1) {\n length += Util.getNodeLength(node.childNodes[i]);\n }\n return length;\n }\n return 0;\n }\n\n /**\n * Gets a selected node or text from an editable HTMLElement.\n * If the caret is on a text node, concatenates it with all the previous and next text nodes.\n * @param {HTMLElement} target - the editable HTMLElement.\n * @param {boolean} isIframe - specifies if the target is an iframe or not\n * @param {boolean} forceGetSelection - if true, ignores IE system to get\n * the current selection and uses window.getSelection()\n * @returns {object} an object with the 'node' key set if the item is an\n * element or the keys 'node' and 'caretPosition' if the element is text.\n * @static\n */\n static getSelectedItem(target, isIframe, forceGetSelection) {\n let windowTarget;\n\n if (isIframe) {\n windowTarget = target.contentWindow;\n windowTarget.focus();\n } else {\n windowTarget = window;\n target.focus();\n }\n\n if (document.selection && !forceGetSelection) {\n const range = windowTarget.document.selection.createRange();\n\n if (range.parentElement) {\n if (range.htmlText.length > 0) {\n if (range.text.length === 0) {\n return Util.getSelectedItem(target, isIframe, true);\n }\n\n return null;\n }\n\n windowTarget.document.execCommand(\"InsertImage\", false, \"#\");\n let temporalObject = range.parentElement();\n\n if (temporalObject.nodeName.toUpperCase() !== \"IMG\") {\n // IE9 fix: parentElement() does not return the IMG node,\n // returns the parent DIV node. In IE < 9, pasteHTML does not work well.\n range.pasteHTML('<span id=\"wrs_openEditorWindow_temporalObject\"></span>');\n temporalObject = windowTarget.document.getElementById(\"wrs_openEditorWindow_temporalObject\");\n }\n\n let node;\n let caretPosition;\n\n if (temporalObject.nextSibling && temporalObject.nextSibling.nodeType === 3) {\n // TEXT_NODE.\n node = temporalObject.nextSibling;\n caretPosition = 0;\n } else if (temporalObject.previousSibling && temporalObject.previousSibling.nodeType === 3) {\n node = temporalObject.previousSibling;\n caretPosition = node.nodeValue.length;\n } else {\n node = windowTarget.document.createTextNode(\"\");\n temporalObject.parentNode.insertBefore(node, temporalObject);\n caretPosition = 0;\n }\n\n temporalObject.parentNode.removeChild(temporalObject);\n\n return {\n node,\n caretPosition,\n };\n }\n\n if (range.length > 1) {\n return null;\n }\n\n return {\n node: range.item(0),\n };\n }\n\n if (windowTarget.getSelection) {\n let range;\n const selection = windowTarget.getSelection();\n\n try {\n range = selection.getRangeAt(0);\n } catch (e) {\n range = windowTarget.document.createRange();\n }\n\n const node = range.startContainer;\n\n if (node.nodeType === 3) {\n // TEXT_NODE.\n return {\n node,\n caretPosition: range.startOffset,\n };\n }\n\n if (node !== range.endContainer) {\n return null;\n }\n\n if (node.nodeType === 1) {\n // ELEMENT_NODE.\n const position = range.startOffset;\n\n if (node.childNodes[position]) {\n // In case that a formula is detected but not selected,\n // we create an empty span where we could insert the new formula.\n if (range.startOffset === range.endOffset) {\n if (\n position !== 0 &&\n node.childNodes[position - 1].localName === \"span\" &&\n node.childNodes[position].classList?.contains(\"Wirisformula\")\n ) {\n node.childNodes[position - 1].remove();\n return Util.getSelectedItem(target, isIframe, forceGetSelection);\n }\n if (node.childNodes[position].classList?.contains(\"Wirisformula\")) {\n if (\n (position > 0 && node.childNodes[position - 1].classList?.contains(\"Wirisformula\")) ||\n position === 0\n ) {\n const emptySpan = document.createElement(\"span\");\n node.insertBefore(emptySpan, node.childNodes[position]);\n return {\n node: node.childNodes[position],\n };\n }\n }\n }\n return {\n node: node.childNodes[position],\n };\n }\n }\n }\n\n return null;\n }\n\n /**\n * Returns null if there isn't any item or if it is malformed.\n * Otherwise returns an object containing the node with the MathML image\n * and the cursor position inside the textarea.\n * @param {HTMLTextAreaElement} textarea - textarea element.\n * @returns {Object} An object containing the node, the index of the\n * beginning of the selected text, caret position and the start and end position of the\n * text node.\n * @static\n */\n static getSelectedItemOnTextarea(textarea) {\n const textNode = document.createTextNode(textarea.value);\n const textNodeValues = Latex.getLatexFromTextNode(textNode, textarea.selectionStart);\n if (textNodeValues === null) {\n return null;\n }\n\n return {\n node: textNode,\n caretPosition: textarea.selectionStart,\n startPosition: textNodeValues.startPosition,\n endPosition: textNodeValues.endPosition,\n };\n }\n\n /**\n * Looks for elements that match the given name in a HTML code string.\n * Important: this function is very concrete for WIRIS code.\n * It takes as preconditions lots of behaviors that are not the general case.\n * @param {string} code - HTML code.\n * @param {string} name - element name.\n * @param {boolean} autoClosed - true if the elements are autoClosed.\n * @return {Object[]} an object containing all HTML elements of code matching the name argument.\n * @static\n */\n static getElementsByNameFromString(code, name, autoClosed) {\n const elements = [];\n code = code.toLowerCase();\n name = name.toLowerCase();\n let start = code.indexOf(`<${name} `);\n\n while (start !== -1) {\n // Look for nodes.\n let endString;\n\n if (autoClosed) {\n endString = \">\";\n } else {\n endString = `</${name}>`;\n }\n\n let end = code.indexOf(endString, start);\n\n if (end !== -1) {\n end += endString.length;\n elements.push({\n start,\n end,\n });\n } else {\n end = start + 1;\n }\n\n start = code.indexOf(`<${name} `, end);\n }\n\n return elements;\n }\n\n /**\n * Returns the numeric value of a base64 character.\n * @param {string} character - base64 character.\n * @returns {number} base64 character numeric value.\n * @static\n */\n static decode64(character) {\n const PLUS = \"+\".charCodeAt(0);\n const SLASH = \"/\".charCodeAt(0);\n const NUMBER = \"0\".charCodeAt(0);\n const LOWER = \"a\".charCodeAt(0);\n const UPPER = \"A\".charCodeAt(0);\n const PLUS_URL_SAFE = \"-\".charCodeAt(0);\n const SLASH_URL_SAFE = \"_\".charCodeAt(0);\n const code = character.charCodeAt(0);\n\n if (code === PLUS || code === PLUS_URL_SAFE) {\n return 62; // Char '+'.\n }\n if (code === SLASH || code === SLASH_URL_SAFE) {\n return 63; // Char '/'.\n }\n if (code < NUMBER) {\n return -1; // No match.\n }\n if (code < NUMBER + 10) {\n return code - NUMBER + 26 + 26;\n }\n if (code < UPPER + 26) {\n return code - UPPER;\n }\n if (code < LOWER + 26) {\n return code - LOWER + 26;\n }\n\n return null;\n }\n\n /**\n * Converts a base64 string to a array of bytes.\n * @param {string} b64String - base64 string.\n * @param {number} length - dimension of byte array (by default whole string).\n * @return {Object[]} the resultant byte array.\n * @static\n */\n static b64ToByteArray(b64String, length) {\n let tmp;\n\n if (b64String.length % 4 > 0) {\n throw new Error(\"Invalid string. Length must be a multiple of 4\"); // Tipped base64. Length is fixed.\n }\n\n const arr = [];\n\n let l;\n let placeHolders;\n if (!length) {\n // All b64String string.\n if (b64String.charAt(b64String.length - 2) === \"=\") {\n placeHolders = 2;\n } else if (b64String.charAt(b64String.length - 1) === \"=\") {\n placeHolders = 1;\n } else {\n placeHolders = 0;\n }\n l = placeHolders > 0 ? b64String.length - 4 : b64String.length;\n } else {\n l = length;\n }\n\n let i;\n for (i = 0; i < l; i += 4) {\n // Ignoring code checker standards (bitewise operators).\n // See https://tracker.moodle.org/browse/CONTRIB-5862 for further information.\n // @codingStandardsIgnoreStart\n // eslint-disable-next-line max-len\n tmp =\n (Util.decode64(b64String.charAt(i)) << 18) |\n (Util.decode64(b64String.charAt(i + 1)) << 12) |\n (Util.decode64(b64String.charAt(i + 2)) << 6) |\n Util.decode64(b64String.charAt(i + 3));\n\n arr.push((tmp >> 16) & 0xff);\n arr.push((tmp >> 8) & 0xff);\n arr.push(tmp & 0xff);\n // @codingStandardsIgnoreEnd\n }\n\n if (placeHolders) {\n if (placeHolders === 2) {\n // Ignoring code checker standards (bitewise operators).\n // @codingStandardsIgnoreStart\n // eslint-disable-next-line max-len\n tmp = (Util.decode64(b64String.charAt(i)) << 2) | (Util.decode64(b64String.charAt(i + 1)) >> 4);\n arr.push(tmp & 0xff);\n } else if (placeHolders === 1) {\n // eslint-disable-next-line max-len\n tmp =\n (Util.decode64(b64String.charAt(i)) << 10) |\n (Util.decode64(b64String.charAt(i + 1)) << 4) |\n (Util.decode64(b64String.charAt(i + 2)) >> 2);\n arr.push((tmp >> 8) & 0xff);\n arr.push(tmp & 0xff);\n // @codingStandardsIgnoreEnd\n }\n }\n return arr;\n }\n\n /**\n * Returns the first 32-bit signed integer from a byte array.\n * @param {Object[]} bytes - array of bytes.\n * @returns {number} the 32-bit signed integer.\n * @static\n */\n static readInt32(bytes) {\n if (bytes.length < 4) {\n return false;\n }\n const int32 = bytes.splice(0, 4);\n // @codingStandardsIgnoreStart¡\n return (int32[0] << 24) | (int32[1] << 16) | (int32[2] << 8) | (int32[3] << 0);\n // @codingStandardsIgnoreEnd\n }\n\n /**\n * Read the first byte from a byte array.\n * @param {Object} bytes - input byte array.\n * @returns {number} first byte of the byte array.\n * @static\n */\n static readByte(bytes) {\n // @codingStandardsIgnoreStart\n return bytes.shift() << 0;\n // @codingStandardsIgnoreEnd\n }\n\n /**\n * Read an arbitrary number of bytes, from a fixed position on a byte array.\n * @param {Object[]} bytes - byte array.\n * @param {number} pos - start position.\n * @param {number} len - number of bytes to read.\n * @returns {Object[]} the byte array.\n * @static\n */\n static readBytes(bytes, pos, len) {\n return bytes.splice(pos, len);\n }\n\n /**\n * Inserts or modifies formulas or CAS on a textarea.\n * @param {HTMLTextAreaElement} textarea - textarea target.\n * @param {string} text - text to add in the textarea. For example, to add the link to the image,\n * call this function as (textarea, Parser.createImageSrc(mathml));\n * @static\n */\n static updateTextArea(textarea, text) {\n if (textarea && text) {\n textarea.focus();\n\n if (textarea.selectionStart != null) {\n const { selectionEnd } = textarea;\n const selectionStart = textarea.value.substring(0, textarea.selectionStart);\n const selectionEndSub = textarea.value.substring(selectionEnd, textarea.value.length);\n textarea.value = selectionStart + text + selectionEndSub;\n textarea.selectionEnd = selectionEnd + text.length;\n } else {\n const selection = document.selection.createRange();\n selection.text = text;\n }\n }\n }\n\n /**\n * Modifies existing formula on a textarea.\n * @param {HTMLTextAreaElement} textarea - text area target.\n * @param {string} text - text to add in the textarea. For example, if you want to add the link\n * to the image,you can call this function as\n * Util.updateTextarea(textarea, Parser.createImageSrc(mathml));\n * @param {number} start - beginning index from textarea where it needs to be replaced by text.\n * @param {number} end - ending index from textarea where it needs to be replaced by text\n * @static\n */\n static updateExistingTextOnTextarea(textarea, text, start, end) {\n textarea.focus();\n const textareaStart = textarea.value.substring(0, start);\n textarea.value = textareaStart + text + textarea.value.substring(end, textarea.value.length);\n textarea.selectionEnd = start + text.length;\n }\n\n /**\n * Add a parameter with it's correspondent value to an URL (GET).\n * @param {string} path - URL path\n * @param {string} parameter - parameter\n * @param {string} value - value\n * @static\n */\n static addArgument(path, parameter, value) {\n let sep;\n if (path.indexOf(\"?\") > 0) {\n sep = \"&\";\n } else {\n sep = \"?\";\n }\n return `${path + sep + parameter}=${value}`;\n }\n}\n","import Configuration from \"./configuration\";\nimport Util from \"./util\";\n\n/**\n * @classdesc\n * This class represents MathType Image class. Contains all the logic related\n * to MathType images manipulation.\n * All MathType images are generated using the appropriate MathType\n * integration service: showimage or createimage.\n *\n * There are two available image formats:\n * - svg (default)\n * - png\n *\n * There are two formats for the image src attribute:\n * - A data-uri scheme containing the URL-encoded SVG or a PNG's base64.\n * - A link to the showimage service.\n */\nexport default class Image {\n /**\n * Removes data attributes from an image.\n * @param {HTMLImageElement} img - Image where remove data attributes.\n */\n static removeImgDataAttributes(img) {\n const attributesToRemove = [];\n const { attributes } = img;\n\n Object.keys(attributes).forEach((key) => {\n const attribute = attributes[key];\n if (attribute !== undefined && attribute.name !== undefined && attribute.name.indexOf(\"data-\") === 0) {\n // Is preferred keep an array and remove after the search\n // because when attribute is removed the array of attributes\n // is modified.\n attributesToRemove.push(attribute.name);\n }\n });\n\n attributesToRemove.forEach((attribute) => {\n img.removeAttribute(attribute);\n });\n }\n\n /**\n * @static\n * Clones all MathType image attributes from a HTMLImageElement to another.\n * @param {HTMLImageElement} originImg - The original image.\n * @param {HTMLImageElement} destImg - The destination image.\n */\n static clone(originImg, destImg) {\n const customEditorAttributeName = Configuration.get(\"imageCustomEditorName\");\n if (!originImg.hasAttribute(customEditorAttributeName)) {\n destImg.removeAttribute(customEditorAttributeName);\n }\n\n const mathmlAttributeName = Configuration.get(\"imageMathmlAttribute\");\n const imgAttributes = [\n mathmlAttributeName,\n customEditorAttributeName,\n \"alt\",\n \"height\",\n \"width\",\n \"style\",\n \"src\",\n \"role\",\n ];\n\n imgAttributes.forEach((iterator) => {\n const originAttribute = originImg.getAttribute(iterator);\n if (originAttribute) {\n destImg.setAttribute(iterator, originAttribute);\n }\n });\n }\n\n /**\n * Determines whether an img src contains an SVG.\n * @param {HTMLImageElement} img the img element to inspect\n * @returns true if the img src contains an SVG, false otherwise\n */\n static isSvg(img) {\n return img.src.startsWith(\"data:image/svg+xml;\");\n }\n\n /**\n * Determines whether an img src is encoded in base64 or not.\n * @param {HTMLImageElement} img the img element to inspect\n * @returns true if the img src is encoded in base64, false otherwise\n */\n static isBase64(img) {\n return img.src.startsWith(\"data:image/svg+xml;base64,\") || img.src.startsWith(\"data:image/png;base64,\");\n }\n\n /**\n * Calculates the metrics of a MathType image given the the service response and the image format.\n * @param {HTMLImageElement} img - The HTMLImageElement.\n * @param {String} uri - The URI generated by the image service: can be a data URI scheme or a URL.\n * @param {Boolean} jsonResponse - True the response of the image service is a\n * JSON object. False otherwise.\n */\n static setImgSize(img, uri, jsonResponse) {\n let ar;\n let base64String;\n let bytes;\n let svgString;\n if (jsonResponse) {\n // Cleaning data:image/png;base64.\n if (Image.isSvg(img)) {\n // SVG format.\n // If SVG is encoded in base64 we need to convert the base64 bytes into a SVG string.\n if (!Image.isBase64(img)) {\n ar = Image.getMetricsFromSvgString(uri);\n } else {\n base64String = img.src.substr(img.src.indexOf(\"base64,\") + 7, img.src.length);\n svgString = \"\";\n bytes = Util.b64ToByteArray(base64String, base64String.length);\n for (let i = 0; i < bytes.length; i += 1) {\n svgString += String.fromCharCode(bytes[i]);\n }\n ar = Image.getMetricsFromSvgString(svgString);\n }\n // PNG format: we store all metrics information in the first 88 bytes.\n } else {\n base64String = img.src.substr(img.src.indexOf(\"base64,\") + 7, img.src.length);\n bytes = Util.b64ToByteArray(base64String, 88);\n ar = Image.getMetricsFromBytes(bytes);\n }\n // Backwards compatibility: we store the metrics into createimage response.\n } else {\n ar = Util.urlToAssArray(uri);\n }\n let width = ar.cw;\n if (!width) {\n return;\n }\n let height = ar.ch;\n let baseline = ar.cb;\n const { dpi } = ar;\n if (dpi) {\n width = (width * 96) / dpi;\n height = (height * 96) / dpi;\n baseline = (baseline * 96) / dpi;\n }\n img.width = width;\n img.height = height;\n img.style.verticalAlign = `-${height - baseline}px`;\n }\n\n /**\n * Calculates the metrics of an image which has been resized. Is used to restore the original\n * metrics of a resized image.\n * @param {HTMLImageElement } img - The resized HTMLImageElement.\n */\n static fixAfterResize(img) {\n img.removeAttribute(\"style\");\n img.removeAttribute(\"width\");\n img.removeAttribute(\"height\");\n // In order to avoid resize with max-width css property.\n img.style.maxWidth = \"none\";\n\n const processImg = (img) => {\n if (img.src.indexOf(\"data:image\") !== -1) {\n if (img.src.indexOf(\"data:image/svg+xml\") !== -1) {\n // Image is in base64: decode it in order to calculate the size, and then bring it back to base64\n // This is a bit of an ugly hack used to recycle the logic of Image.setImgSize instead of rewriting it\n // (which would actually make more sense for readibility and efficiency).\n if (img.src.indexOf(\"data:image/svg+xml;base64,\") !== -1) {\n // 'data:image/svg+xml;base64,'.length === 26\n const base64String = img.getAttribute(\"src\").substring(26);\n const svgString = window.atob(base64String);\n const encodedSvgString = encodeURIComponent(svgString);\n img.setAttribute(\"src\", `data:image/svg+xml;charset=utf8,${encodedSvgString}`);\n // 'data:image/svg+xml;charset=utf8,'.length === 32.\n const svg = decodeURIComponent(img.src.substring(32, img.src.length));\n Image.setImgSize(img, svg, true);\n // Return src to base64!\n img.setAttribute(\"src\", `data:image/svg+xml;base64,${base64String}`);\n } else {\n // 'data:image/svg+xml;charset=utf8,'.length === 32.\n const svg = decodeURIComponent(img.src.substring(32, img.src.length));\n Image.setImgSize(img, svg, true);\n }\n } else {\n // 'data:image/png;base64,' === 22.\n const base64 = img.src.substring(22, img.src.length);\n Image.setImgSize(img, base64, true);\n }\n } else {\n Image.setImgSize(img, img.src);\n }\n };\n\n // If the image doesn't contain a blob, just process it normally\n if (img.src.indexOf(\"blob:\") === -1) {\n processImg(img);\n // if it does contain a blob, then read that, replace the src with the decoded content, and process it\n } else {\n const reader = new FileReader();\n reader.onload = function () {\n img.setAttribute(\"src\", reader.result);\n processImg(img);\n };\n fetch(img.src)\n .then((r) => r.blob())\n .then((blob) => {\n reader.readAsDataURL(blob);\n });\n }\n }\n\n /**\n * Returns the metrics (height, width and baseline) contained in a SVG image generated\n * by the MathType image service. This image contains as an extra custom attribute:\n * the baseline (wrs:baseline).\n * @param {String} svgString - The SVG image.\n * @return {Array} - The image metrics.\n */\n static getMetricsFromSvgString(svgString) {\n let first = svgString.indexOf('height=\"');\n let last = svgString.indexOf('\"', first + 8, svgString.length);\n const height = svgString.substring(first + 8, last);\n\n first = svgString.indexOf('width=\"');\n last = svgString.indexOf('\"', first + 7, svgString.length);\n const width = svgString.substring(first + 7, last);\n\n first = svgString.indexOf('wrs:baseline=\"');\n last = svgString.indexOf('\"', first + 14, svgString.length);\n const baseline = svgString.substring(first + 14, last);\n\n if (typeof width !== \"undefined\") {\n const arr = [];\n arr.cw = width;\n arr.ch = height;\n if (typeof baseline !== \"undefined\") {\n arr.cb = baseline;\n }\n return arr;\n }\n return [];\n }\n\n /**\n * Returns the metrics (width, height, baseline and dpi) contained in a PNG byte array.\n * @param {Array.<Bytes>} bytes - png byte array.\n * @return {Array} The png metrics.\n */\n static getMetricsFromBytes(bytes) {\n Util.readBytes(bytes, 0, 8);\n let width;\n let height;\n let typ;\n let baseline;\n let dpi;\n while (bytes.length >= 4) {\n typ = Util.readInt32(bytes);\n if (typ === 0x49484452) {\n width = Util.readInt32(bytes);\n height = Util.readInt32(bytes);\n // Read 5 bytes.\n Util.readInt32(bytes);\n Util.readByte(bytes);\n } else if (typ === 0x62615345) {\n // Baseline: 'baSE'.\n baseline = Util.readInt32(bytes);\n } else if (typ === 0x70485973) {\n // Dpis: 'pHYs'.\n dpi = Util.readInt32(bytes);\n dpi = Math.round(dpi / 39.37);\n Util.readInt32(bytes);\n Util.readByte(bytes);\n }\n Util.readInt32(bytes);\n }\n\n if (typeof width !== \"undefined\") {\n const arr = [];\n arr.cw = width;\n arr.ch = height;\n arr.dpi = dpi;\n if (baseline) {\n arr.cb = baseline;\n }\n\n return arr;\n }\n return [];\n }\n}\n","import TextCache from \"./textcache\";\nimport ServiceProvider from \"./serviceprovider\";\nimport MathML from \"./mathml\";\nimport StringManager from \"./stringmanager\";\n\n/**\n * @classdesc\n * This class represents MathType accessible class. Converts MathML to accessible text and manages\n * the associated client-side cache.\n */\nexport default class Accessibility {\n /**\n * Static property.\n * Accessibility cache, each entry contains a MathML and its correspondent accessibility text.\n * @type {TextCache}\n */\n static get cache() {\n return Accessibility._cache;\n }\n\n /**\n * Static property setter.\n * Set accessibility cache.\n * @param {TextCahe} value - The property value.\n * @ignore\n */\n static set cache(value) {\n Accessibility._cache = value;\n }\n\n /**\n * Converts MathML strings to its accessible text representation.\n * @param {String} mathML - MathML to be converted to accessible text.\n * @param {String} [language] - Language of the accessible text. 'en' by default.\n * @param {Array.<String>} [data] - Parameters to send to mathml2accessible service.\n * @return {String} Accessibility text.\n */\n static mathMLToAccessible(mathML, language, data) {\n if (typeof language === \"undefined\") {\n language = \"en\";\n }\n // Check MathML class. If the class is chemistry,\n // we add chemistry to data to force accessibility service\n // to load chemistry grammar.\n if (MathML.containClass(mathML, \"wrs_chemistry\")) {\n data.mode = \"chemistry\";\n }\n // Ignore accesibility styles\n data.ignoreStyles = true;\n let accessibleText = \"\";\n\n if (Accessibility.cache.get(mathML)) {\n accessibleText = Accessibility.cache.get(mathML);\n } else {\n data.service = \"mathml2accessible\";\n data.lang = language;\n const accessibleJsonResponse = JSON.parse(ServiceProvider.getService(\"service\", data));\n if (accessibleJsonResponse.status !== \"error\") {\n accessibleText = accessibleJsonResponse.result.text;\n Accessibility.cache.populate(mathML, accessibleText);\n } else {\n accessibleText = StringManager.get(\"error_convert_accessibility\");\n }\n }\n\n return accessibleText;\n }\n}\n\n/**\n * Contains an instance of TextCache class to manage the JavaScript accessible cache.\n * Each entry of the cache object contains the MathML and it's correspondent accessibility text.\n * @private\n * @type {TextCache}\n */\nAccessibility._cache = new TextCache();\n","import Util from \"./util\";\nimport Latex from \"./latex\";\nimport MathML from \"./mathml\";\nimport Image from \"./image\";\nimport Accessibility from \"./accessibility\";\nimport ServiceProvider from \"./serviceprovider\";\nimport Configuration from \"./configuration\";\nimport Constants from \"./constants\";\n// eslint-disable-next-line no-unused-vars\nimport md5 from \"./md5\";\n\n/**\n * @classdesc\n * This class represent a MahML parser. Converts MathML into formulas depending on the\n * image format (SVG, PNG, base64) and the save mode (XML, safeXML, Image) configured\n * in the backend.\n */\nexport default class Parser {\n /**\n * Converts a MathML string to an img element.\n * @param {Document} creator - Document object to call createElement method.\n * @param {string} mathml - MathML code\n * @param {Object[]} wirisProperties - object containing WIRIS custom properties\n * @param {language} language - custom language for accessibility.\n * @returns {HTMLImageElement} the formula image corresponding to initial MathML string.\n * @static\n */\n static mathmlToImgObject(creator, mathml, wirisProperties, language) {\n const imgObject = creator.createElement(\"img\");\n imgObject.align = \"middle\";\n imgObject.style.maxWidth = \"none\";\n let data = wirisProperties || {};\n\n // Take into account the backend config\n const wirisEditorProperties = Configuration.get(\"editorParameters\");\n data = { ...wirisEditorProperties, ...data };\n\n data.mml = mathml;\n data.lang = language;\n // Request metrics of the generated image.\n data.metrics = \"true\";\n data.centerbaseline = \"false\";\n\n // Full base64 method (edit & save).\n if (Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"default\") {\n data.base64 = true;\n }\n\n // Render js params: _wrs_int_wirisProperties contains some js render params.\n // Since MathML can support render params, js params should be send only to editor.\n\n imgObject.className = Configuration.get(\"imageClassName\");\n\n if (mathml.indexOf('class=\"') !== -1) {\n // We check here if the MathML has been created from a customEditor (such chemistry)\n // to add custom editor name attribute to img object (if necessary).\n let mathmlSubstring = mathml.substring(mathml.indexOf('class=\"') + 'class=\"'.length, mathml.length);\n mathmlSubstring = mathmlSubstring.substring(0, mathmlSubstring.indexOf('\"'));\n mathmlSubstring = mathmlSubstring.substring(4, mathmlSubstring.length);\n imgObject.setAttribute(Configuration.get(\"imageCustomEditorName\"), mathmlSubstring);\n }\n\n // WARNING: This code is needed for CKEditor 5 Track Changes compatibility.\n // Preserve Track Changes attributes (suggestions and comments) when converting MathML to image.\n // These attributes are needed to maintain change tracking information in collaborative editing scenarios.\n // They are extracted from the input MathML and transferred to the output image element.\n const TRACK_CHANGES_ATTRIBUTE_PREFIXES = [\"data-suggestion-\", \"data-comment-\"];\n const attributePattern = /([\\w-]+)=\"([^\"]*)\"/g;\n let attributeMatch;\n\n // Parse only the opening <math> tag to extract attributes\n const mathOpeningTagEnd = mathml.indexOf(\">\");\n\n if (mathOpeningTagEnd !== -1) {\n const mathOpeningTag = mathml.substring(0, mathOpeningTagEnd);\n\n while ((attributeMatch = attributePattern.exec(mathOpeningTag)) !== null) {\n const [, attributeName, attributeValue] = attributeMatch;\n\n // Transfer Track Changes attributes from MathML to image\n const isTrackChangesAttribute = TRACK_CHANGES_ATTRIBUTE_PREFIXES.some((prefix) =>\n attributeName.startsWith(prefix),\n );\n\n if (isTrackChangesAttribute) {\n imgObject.setAttribute(attributeName, Util.htmlEntitiesDecode(attributeValue));\n }\n }\n }\n\n // Performance enabled.\n if (\n Configuration.get(\"wirisPluginPerformance\") &&\n (Configuration.get(\"saveMode\") === \"xml\" || Configuration.get(\"saveMode\") === \"safeXml\")\n ) {\n let result = JSON.parse(Parser.createShowImageSrc(data, language));\n if (result.status === \"warning\") {\n // POST call.\n // if the mathml is malformed, this function will throw an exception.\n try {\n result = JSON.parse(ServiceProvider.getService(\"showimage\", data));\n } catch (e) {\n return null;\n }\n }\n ({ result } = result);\n if (result.format === \"png\") {\n imgObject.src = `data:image/png;base64,${result.content}`;\n } else {\n imgObject.src = `data:image/svg+xml;charset=utf8,${Util.urlEncode(result.content)}`;\n }\n imgObject.setAttribute(Configuration.get(\"imageMathmlAttribute\"), MathML.safeXmlEncode(mathml));\n Image.setImgSize(imgObject, result.content, true);\n\n if (Configuration.get(\"enableAccessibility\")) {\n if (typeof result.alt === \"undefined\") {\n imgObject.alt = Accessibility.mathMLToAccessible(mathml, language, data);\n } else {\n imgObject.alt = result.alt;\n }\n }\n } else {\n const result = Parser.createImageSrc(mathml, data);\n imgObject.setAttribute(Configuration.get(\"imageMathmlAttribute\"), MathML.safeXmlEncode(mathml));\n imgObject.src = result;\n Image.setImgSize(\n imgObject,\n result,\n Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"default\",\n );\n if (Configuration.get(\"enableAccessibility\")) {\n imgObject.alt = Accessibility.mathMLToAccessible(mathml, language, data);\n }\n }\n\n if (typeof Parser.observer !== \"undefined\") {\n Parser.observer.observe(imgObject);\n }\n\n // Role math https://www.w3.org/TR/wai-aria/roles#math.\n imgObject.setAttribute(\"role\", \"math\");\n return imgObject;\n }\n\n /**\n * Returns the source to showimage service by calling createimage service. The\n * output of the createimage service is a URL path pointing to showimage service.\n * This method is called when performance is disabled.\n * @param {string} mathml - MathML code.\n * @param {Object[]} data - data object containing service parameters.\n * @returns {string} the showimage path.\n */\n static createImageSrc(mathml, data) {\n // Full base64 method (edit & save).\n if (Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"default\") {\n data.base64 = true;\n }\n\n let result = ServiceProvider.getService(\"createimage\", data);\n\n if (result.indexOf(\"@BASE@\") !== -1) {\n // Replacing '@BASE@' with the base URL of createimage.\n const baseParts = ServiceProvider.getServicePath(\"createimage\").split(\"/\");\n baseParts.pop();\n result = result.split(\"@BASE@\").join(baseParts.join(\"/\"));\n }\n\n return result;\n }\n\n /**\n * Parses initial HTML code. If the HTML contains data generated by WIRIS,\n * this data would be converted as following:\n * <pre>\n * MathML code: Image containing the corresponding MathML formulas.\n * MathML code with LaTeX annotation : LaTeX string.\n * </pre>\n * @param {string} code - HTML code containing MathML data.\n * @param {string} language - language to create image alt text.\n * @returns {string} HTML code with the original MathML converted into LaTeX and images.\n */\n static initParse(code, language) {\n /* Note: The code inside this function has been inverted.\n If you invert again the code then you cannot use correctly LaTeX\n in Moodle.\n */\n code = Parser.initParseSaveMode(code, language);\n return Parser.initParseEditMode(code);\n }\n\n /**\n * Parses initial HTML code depending on the save mode. Transforms all MathML\n * occurrences for it's correspondent image or LaTeX.\n * @param {string} code - HTML code to be parsed\n * @param {string} language - language to create image alt text.\n * @returns {string} HTML code parsed.\n */\n static initParseSaveMode(code, language) {\n if (Configuration.get(\"saveMode\")) {\n // Converting XML to tags.\n code = Latex.parseMathmlToLatex(code, Constants.safeXmlCharacters);\n code = Latex.parseMathmlToLatex(code, Constants.xmlCharacters);\n code = Parser.parseMathmlToImg(code, Constants.safeXmlCharacters, language);\n code = Parser.parseMathmlToImg(code, Constants.xmlCharacters, language);\n if (Configuration.get(\"saveMode\") === \"base64\" && Configuration.get(\"base64savemode\") === \"image\") {\n code = Parser.codeImgTransform(code, \"base642showimage\");\n }\n }\n return code;\n }\n\n /**\n * Parses initial HTML code depending on the edit mode.\n * If 'latex' parseMode is enabled all MathML containing an annotation with encoding='LaTeX' will\n * be converted into a LaTeX string instead of an image.\n * @param {string} code - HTML code containing MathML.\n * @returns {string} parsed HTML code.\n */\n static initParseEditMode(code) {\n if (Configuration.get(\"parseModes\").indexOf(\"latex\") !== -1) {\n const imgList = Util.getElementsByNameFromString(code, \"img\", true);\n const token = 'encoding=\"LaTeX\">';\n // While replacing images with latex, the indexes of the found images changes\n // respecting the original code, so this carry is needed.\n let carry = 0;\n\n for (let i = 0; i < imgList.length; i += 1) {\n const imgCode = code.substring(imgList[i].start + carry, imgList[i].end + carry);\n\n if (imgCode.indexOf(` class=\"${Configuration.get(\"imageClassName\")}\"`) !== -1) {\n let mathmlStartToken = ` ${Configuration.get(\"imageMathmlAttribute\")}=\"`;\n let mathmlStart = imgCode.indexOf(mathmlStartToken);\n\n if (mathmlStart === -1) {\n mathmlStartToken = ' alt=\"';\n mathmlStart = imgCode.indexOf(mathmlStartToken);\n }\n\n if (mathmlStart !== -1) {\n mathmlStart += mathmlStartToken.length;\n const mathmlEnd = imgCode.indexOf('\"', mathmlStart);\n const mathml = Util.htmlSanitize(MathML.safeXmlDecode(imgCode.substring(mathmlStart, mathmlEnd)));\n let latexStartPosition = mathml.indexOf(token);\n\n if (latexStartPosition !== -1) {\n latexStartPosition += token.length;\n const latexEndPosition = mathml.indexOf(\"</annotation>\", latexStartPosition);\n const latex = mathml.substring(latexStartPosition, latexEndPosition);\n\n const replaceText = `$$${Util.htmlEntitiesDecode(latex)}$$`;\n const start = code.substring(0, imgList[i].start + carry);\n const end = code.substring(imgList[i].end + carry);\n code = start + replaceText + end;\n carry += replaceText.length - (imgList[i].end - imgList[i].start);\n }\n }\n }\n }\n }\n\n return code;\n }\n\n /**\n * Parses end HTML code. The end HTML code is HTML code with embedded images\n * or LaTeX formulas created with MathType. <br>\n * By default this method converts the formula images and LaTeX strings in MathML. <br>\n * If image mode is enabled the images will not be converted into MathML. For further information see {@link https://docs.wiris.com/mathtype/en/mathtype-integrations/mathtype-web-interface-features/full-mathml-mode---wirisplugins-js.html}.\n * @param {string} code - HTML to be parsed\n * @returns {string} the HTML code parsed.\n */\n static endParse(code) {\n // Transform LaTeX ocurrences to MathML elements.\n const codeEndParsedEditMode = Parser.endParseEditMode(code);\n // Transform img elements to MathML elements.\n const codeEndParseSaveMode = Parser.endParseSaveMode(codeEndParsedEditMode);\n return codeEndParseSaveMode;\n }\n\n /**\n * Parses end HTML code depending on the edit mode.\n * - LaTeX is an enabled parse mode, all LaTeX occurrences will be converted into MathML.\n * @param {string} code - HTML code to be parsed.\n * @returns {string} HTML code parsed.\n */\n static endParseEditMode(code) {\n // Converting LaTeX to images.\n if (Configuration.get(\"parseModes\").indexOf(\"latex\") !== -1) {\n let output = \"\";\n let endPosition = 0;\n let startPosition = code.indexOf(\"$$\");\n while (startPosition !== -1) {\n output += code.substring(endPosition, startPosition);\n endPosition = code.indexOf(\"$$\", startPosition + 2);\n\n if (endPosition !== -1) {\n // Before, it was a condition here to execute the next codelines\n // 'latex.indexOf('<') == -1'.\n // We don't know why it was used, but seems to have a conflict with\n // latex formulas that contains '<'.\n const latex = code.substring(startPosition + 2, endPosition);\n const decodedLatex = Util.htmlEntitiesDecode(latex);\n let mathml = Util.htmlSanitize(Latex.getMathMLFromLatex(decodedLatex, true));\n if (!Configuration.get(\"saveHandTraces\")) {\n // Remove hand traces.\n mathml = MathML.removeAnnotation(mathml, \"application/json\");\n }\n output += mathml;\n endPosition += 2;\n } else {\n output += \"$$\";\n endPosition = startPosition + 2;\n }\n\n startPosition = code.indexOf(\"$$\", endPosition);\n }\n\n output += code.substring(endPosition, code.length);\n code = output;\n }\n\n return code;\n }\n\n /**\n * Parses end HTML code depending on the save mode. Converts all\n * images into the element determined by the save mode:\n * - xml: Parses images formulas into MathML.\n * - safeXml: Parses images formulas into safeMAthML\n * - base64: Parses images into base64 images.\n * - image: Parse images into images (no parsing)\n * @param {string} code - HTML code to be parsed\n * @returns {string} HTML code parsed.\n */\n static endParseSaveMode(code) {\n const savemode = Configuration.get(\"saveMode\");\n const base64savemode = Configuration.get(\"base64savemode\");\n\n if (savemode) {\n if (savemode === \"safeXml\") {\n code = Parser.codeImgTransform(code, \"img2mathml\");\n } else if (savemode === \"xml\") {\n code = Parser.codeImgTransform(code, \"img2mathml\");\n } else if (savemode === \"base64\" && base64savemode === \"image\") {\n code = Parser.codeImgTransform(code, \"img264\");\n }\n }\n\n return code;\n }\n\n /**\n * Auxiliar function that builds the data object to send to the showimage endpoint\n * @param {Object[]} data - object containing showimage service parameters.\n * @param {string} language - string containing the language of the formula.\n * @returns {Object} JSON object with the data to send to showimage.\n */\n static createShowImageSrcData(data, language) {\n const dataMd5 = {};\n const renderParams = [\n \"mml\",\n \"color\",\n \"centerbaseline\",\n \"zoom\",\n \"dpi\",\n \"fontSize\",\n \"fontFamily\",\n \"defaultStretchy\",\n \"backgroundColor\",\n \"format\",\n ];\n renderParams.forEach((param) => {\n if (typeof data[param] !== \"undefined\") {\n dataMd5[param] = data[param];\n }\n });\n // Data variables to get.\n const dataObject = {};\n Object.keys(data).forEach((key) => {\n // We don't need mathml in this request we try to get cached.\n // Only need the formula md5 calculated before.\n if (key !== \"mml\") {\n dataObject[key] = data[key];\n }\n });\n\n dataObject.formula = com.wiris.js.JsPluginTools.md5encode(Util.propertiesToString(dataMd5));\n dataObject.lang = typeof language === \"undefined\" ? \"en\" : language;\n dataObject.version = Configuration.get(\"version\");\n\n return dataObject;\n }\n\n /**\n * Returns the result to call showimage service with the formula md5 as parameter.\n * The result could be:\n * - {'status' : warning'} : The image associated to the MathML md5 is not in cache.\n * - {'status' : 'ok' ...} : The image associated to the MathML md5 is in cache.\n * @param {Object[]} data - object containing showimage service parameters.\n * @param {string} language - string containing the language of the formula.\n * @returns {Object} JSON object containing showimage response.\n */\n static createShowImageSrc(data, language) {\n const dataObject = this.createShowImageSrcData(data, language);\n const result = ServiceProvider.getService(\"showimage\", Util.httpBuildQuery(dataObject), true);\n return result;\n }\n\n /**\n * Transform html img tags inside a html code to mathml, base64 img tags (i.e with base64 on src)\n * or showimage img tags (i.e with showimage.php on src)\n * @param {string} code - HTML code\n * @param {string} mode - base642showimage or img2mathml or img264 transform.\n * @returns {string} html - code transformed.\n */\n static codeImgTransform(code, mode) {\n let output = \"\";\n let endPosition = 0;\n const pattern = /<img/gi;\n const patternLength = pattern.source.length;\n\n while (pattern.test(code)) {\n const startPosition = pattern.lastIndex - patternLength;\n output += code.substring(endPosition, startPosition);\n\n let i = startPosition + 1;\n\n while (i < code.length && endPosition <= startPosition) {\n const character = code.charAt(i);\n\n if (character === '\"' || character === \"'\") {\n const characterNextPosition = code.indexOf(character, i + 1);\n\n if (characterNextPosition === -1) {\n i = code.length; // End while.\n } else {\n i = characterNextPosition;\n }\n } else if (character === \">\") {\n endPosition = i + 1;\n }\n\n i += 1;\n }\n\n if (endPosition < startPosition) {\n // The img tag is stripped.\n output += code.substring(startPosition, code.length);\n return output;\n }\n let imgCode = code.substring(startPosition, endPosition);\n const imgObject = Util.createObject(imgCode);\n let xmlCode = imgObject.getAttribute(Configuration.get(\"imageMathmlAttribute\"));\n let convertToXml;\n let convertToSafeXml;\n\n if (mode === \"base642showimage\") {\n if (xmlCode == null) {\n xmlCode = imgObject.getAttribute(\"alt\");\n }\n xmlCode = MathML.safeXmlDecode(xmlCode);\n imgCode = Parser.mathmlToImgObject(document, xmlCode, null, null);\n output += Util.createObjectCode(imgCode);\n } else if (mode === \"img2mathml\") {\n if (Configuration.get(\"saveMode\")) {\n if (Configuration.get(\"saveMode\") === \"safeXml\") {\n convertToXml = true;\n convertToSafeXml = true;\n } else if (Configuration.get(\"saveMode\") === \"xml\") {\n convertToXml = true;\n convertToSafeXml = false;\n }\n }\n output += Util.getWIRISImageOutput(imgCode, convertToXml, convertToSafeXml);\n } else if (mode === \"img264\") {\n if (xmlCode === null) {\n xmlCode = imgObject.getAttribute(\"alt\");\n }\n xmlCode = MathML.safeXmlDecode(xmlCode);\n\n const properties = {};\n properties.base64 = \"true\";\n imgCode = Parser.mathmlToImgObject(document, xmlCode, properties, null);\n // Metrics.\n Image.setImgSize(imgCode, imgCode.src, true);\n output += Util.createObjectCode(imgCode);\n }\n }\n output += code.substring(endPosition, code.length);\n return output;\n }\n\n /**\n * Converts all occurrences of MathML to the corresponding image.\n * @param {string} content - string with valid MathML code.\n * The MathML code doesn't contain semantics.\n * @param {Constants} characters - Constant object containing xmlCharacters\n * or safeXmlCharacters relation.\n * @param {string} language - a valid language code\n * in order to generate formula accessibility.\n * @returns {string} The input string with all the MathML\n * occurrences replaced by the corresponding image.\n */\n static parseMathmlToImg(content, characters, language) {\n let output = \"\";\n const mathTagBegin = `${characters.tagOpener}math`;\n const mathTagEnd = `${characters.tagOpener}/math${characters.tagCloser}`;\n let start = content.indexOf(mathTagBegin);\n let end = 0;\n\n while (start !== -1) {\n output += content.substring(end, start);\n // Avoid WIRIS images to be parsed.\n const imageMathmlAtrribute = content.indexOf(Configuration.get(\"imageMathmlAttribute\"));\n end = content.indexOf(mathTagEnd, start);\n\n if (end === -1) {\n end = content.length - 1;\n } else if (imageMathmlAtrribute !== -1) {\n // First close tag of img attribute\n // If a mathmlAttribute exists should be inside a img tag.\n end += content.indexOf(\"/>\", start);\n } else {\n end += mathTagEnd.length;\n }\n\n if (!MathML.isMathmlInAttribute(content, start) && imageMathmlAtrribute === -1) {\n let mathml = content.substring(start, end);\n mathml =\n characters.id === Constants.safeXmlCharacters.id\n ? MathML.safeXmlDecode(mathml)\n : MathML.mathMLEntities(mathml);\n output += Util.createObjectCode(Parser.mathmlToImgObject(document, mathml, null, language));\n } else {\n output += content.substring(start, end);\n }\n\n start = content.indexOf(mathTagBegin, end);\n }\n\n output += content.substring(end, content.length);\n return output;\n }\n}\n\n// Mutation observers to avoid wiris image formulas class be removed.\nif (typeof MutationObserver !== \"undefined\") {\n const mutationObserver = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (\n mutation.oldValue === Configuration.get(\"imageClassName\") &&\n mutation.attributeName === \"class\" &&\n mutation.target.className.indexOf(Configuration.get(\"imageClassName\")) === -1\n ) {\n mutation.target.className = Configuration.get(\"imageClassName\");\n }\n });\n });\n\n Parser.observer = Object.create(mutationObserver);\n Parser.observer.Config = { attributes: true, attributeOldValue: true };\n // We use own default config.\n Parser.observer.observe = function (target) {\n Object.getPrototypeOf(this).observe(target, this.Config);\n };\n}\n","/* eslint-disable class-methods-use-this */\n/* eslint-disable no-unused-vars */\n/* eslint-disable no-extra-semi */\n\n// The rules above are disabled because we are implementing\n// an external interface.\n\nexport default class EditorListener {\n /**\n * @classdesc\n * Determines if the content of the\n * MathType Editor has changes.\n * @implements {EditorListeners}\n * @constructs\n */\n constructor() {\n /**\n * Indicates if the content of the editor has changed.\n * @type {Boolean}\n */\n this.isContentChanged = false;\n\n /**\n * Indicates if the listener should be waiting for changes in the editor.\n * @type {Boolean}\n */\n this.waitingForChanges = false;\n }\n\n /**\n * Sets {@link EditorListener.isContentChanged} property.\n * @param {Boolean} value - The new vlue.\n */\n setIsContentChanged(value) {\n this.isContentChanged = value;\n }\n\n /**\n * Returns true if the content of the editor has been changed, false otherwise.\n * @return {Boolean}\n */\n getIsContentChanged() {\n return this.isContentChanged;\n }\n\n /**\n * Determines if the EditorListener should wait for any changes.\n * @param {Boolean} value - True if the editor should wait for changes, false otherwise.\n */\n setWaitingForChanges(value) {\n this.waitingForChanges = value;\n }\n\n /**\n * EditorListener method to overwrite.\n * @type {JsEditor}\n * @ignore\n */\n caretPositionChanged(_editor) {}\n\n /**\n * EditorListener method to overwrite\n * @type {JsEditor}\n * @ignore\n */\n clipboardChanged(_editor) {}\n\n /**\n * Determines if the content of an editor has been changed.\n * @param {JsEditor} editor - editor object.\n */\n contentChanged(_editor) {\n if (this.waitingForChanges === true && this.isContentChanged === false) {\n this.isContentChanged = true;\n }\n }\n\n /**\n * EditorListener method to overwrite\n * @param {JsEditor} editor - The editor instance.\n */\n styleChanged(_editor) {}\n\n /**\n * EditorListener method to overwrite\n * @param {JsEditor} - The editor instance.\n */\n transformationReceived(_editor) {}\n}\n","let wasm;\n\nconst cachedTextDecoder =\n typeof TextDecoder !== \"undefined\"\n ? new TextDecoder(\"utf-8\", { ignoreBOM: true, fatal: true })\n : {\n decode: () => {\n throw Error(\"TextDecoder not available\");\n },\n };\n\nif (typeof TextDecoder !== \"undefined\") {\n cachedTextDecoder.decode();\n}\n\nlet cachedUint8Memory0 = null;\n\nfunction getUint8Memory0() {\n if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) {\n cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8Memory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nconst heap = new Array(128).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nlet heap_next = heap.length;\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nfunction getObject(idx) {\n return heap[idx];\n}\n\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder =\n typeof TextEncoder !== \"undefined\"\n ? new TextEncoder(\"utf-8\")\n : {\n encode: () => {\n throw Error(\"TextEncoder not available\");\n },\n };\n\nconst encodeString =\n typeof cachedTextEncoder.encodeInto === \"function\"\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n }\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length,\n };\n };\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8Memory0()\n .subarray(ptr, ptr + buf.length)\n .set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7f) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, (len = offset + arg.length * 3), 1) >>> 0;\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nlet cachedInt32Memory0 = null;\n\nfunction getInt32Memory0() {\n if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {\n cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachedInt32Memory0;\n}\n\nlet cachedFloat64Memory0 = null;\n\nfunction getFloat64Memory0() {\n if (cachedFloat64Memory0 === null || cachedFloat64Memory0.byteLength === 0) {\n cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer);\n }\n return cachedFloat64Memory0;\n}\n\nlet cachedBigInt64Memory0 = null;\n\nfunction getBigInt64Memory0() {\n if (cachedBigInt64Memory0 === null || cachedBigInt64Memory0.byteLength === 0) {\n cachedBigInt64Memory0 = new BigInt64Array(wasm.memory.buffer);\n }\n return cachedBigInt64Memory0;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == \"number\" || type == \"boolean\" || val == null) {\n return `${val}`;\n }\n if (type == \"string\") {\n return `\"${val}\"`;\n }\n if (type == \"symbol\") {\n const description = val.description;\n if (description == null) {\n return \"Symbol\";\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == \"function\") {\n const name = val.name;\n if (typeof name == \"string\" && name.length > 0) {\n return `Function(${name})`;\n } else {\n return \"Function\";\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = \"[\";\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for (let i = 1; i < length; i++) {\n debug += \", \" + debugString(val[i]);\n }\n debug += \"]\";\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == \"Object\") {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return \"Object(\" + JSON.stringify(val) + \")\";\n } catch (_) {\n return \"Object\";\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nfunction makeClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n try {\n return f(state.a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(state.a, state.b);\n state.a = 0;\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_46(arg0, arg1, arg2) {\n wasm.__wbindgen_export_3(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction makeMutClosure(arg0, arg1, dtor, f) {\n const state = { a: arg0, b: arg1, cnt: 1, dtor };\n const real = (...args) => {\n // First up with a closure we increment the internal reference\n // count. This ensures that the Rust closure environment won't\n // be deallocated while we're invoking it.\n state.cnt++;\n const a = state.a;\n state.a = 0;\n try {\n return f(a, state.b, ...args);\n } finally {\n if (--state.cnt === 0) {\n wasm.__wbindgen_export_2.get(state.dtor)(a, state.b);\n } else {\n state.a = a;\n }\n }\n };\n real.original = state;\n\n return real;\n}\nfunction __wbg_adapter_49(arg0, arg1) {\n wasm.__wbindgen_export_4(arg0, arg1);\n}\n\nfunction __wbg_adapter_52(arg0, arg1, arg2) {\n wasm.__wbindgen_export_5(arg0, arg1, addHeapObject(arg2));\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_export_6(addHeapObject(e));\n }\n}\nfunction __wbg_adapter_103(arg0, arg1, arg2, arg3) {\n wasm.__wbindgen_export_7(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));\n}\n\n/**\n */\nexport function main_js() {\n wasm.main_js();\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n */\nexport const Level = Object.freeze({\n Err: 0,\n 0: \"Err\",\n Warn: 1,\n 1: \"Warn\",\n Info: 2,\n 2: \"Info\",\n Debug: 3,\n 3: \"Debug\",\n});\n/**\n */\nexport class Telemeter {\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_telemeter_free(ptr);\n }\n /**\n * @param {any} solution\n * @param {any} hosts\n * @param {any} config\n */\n constructor(solution, hosts, config) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.telemeter_new(retptr, addHeapObject(solution), addHeapObject(hosts), addHeapObject(config));\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n this.__wbg_ptr = r0 >>> 0;\n return this;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {string} sender_id\n * @returns {Promise<any>}\n */\n identify(sender_id) {\n const ptr0 = passStringToWasm0(sender_id, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.telemeter_identify(this.__wbg_ptr, ptr0, len0);\n return takeObject(ret);\n }\n /**\n * @param {string} event_type\n * @param {any} event_payload\n * @returns {Promise<any>}\n */\n track(event_type, event_payload) {\n const ptr0 = passStringToWasm0(event_type, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.telemeter_track(this.__wbg_ptr, ptr0, len0, addHeapObject(event_payload));\n return takeObject(ret);\n }\n /**\n * @param {any} level\n * @param {string} message\n * @param {any} payload\n * @returns {Promise<any>}\n */\n log(level, message, payload) {\n const ptr0 = passStringToWasm0(message, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.telemeter_log(this.__wbg_ptr, addHeapObject(level), ptr0, len0, addHeapObject(payload));\n return takeObject(ret);\n }\n /**\n * @returns {Promise<any>}\n */\n finish() {\n const ptr = this.__destroy_into_raw();\n const ret = wasm.telemeter_finish(ptr);\n return takeObject(ret);\n }\n /**\n * @param {boolean | undefined} [new_debug_status]\n */\n debug(new_debug_status) {\n wasm.telemeter_debug(this.__wbg_ptr, isLikeNone(new_debug_status) ? 0xffffff : new_debug_status ? 1 : 0);\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === \"function\" && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === \"function\") {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n if (module.headers.get(\"Content-Type\") != \"application/wasm\") {\n console.warn(\n \"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\",\n e,\n );\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_string_new = function (arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_c728d68b8b34487e = function () {\n const ret = new Object();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_status_7841bb47be2a8f16 = function (arg0) {\n const ret = getObject(arg0).status;\n return ret;\n };\n imports.wbg.__wbg_headers_ea7ef583d1564b08 = function (arg0) {\n const ret = getObject(arg0).headers;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new0_ad75dd38f92424e2 = function () {\n const ret = new Date();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getTime_ed6ee333b702f8fc = function (arg0) {\n const ret = getObject(arg0).getTime();\n return ret;\n };\n imports.wbg.__wbindgen_object_drop_ref = function (arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_is_object = function (arg0) {\n const val = getObject(arg0);\n const ret = typeof val === \"object\" && val !== null;\n return ret;\n };\n imports.wbg.__wbg_crypto_58f13aa23ffcb166 = function (arg0) {\n const ret = getObject(arg0).crypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_process_5b786e71d465a513 = function (arg0) {\n const ret = getObject(arg0).process;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_versions_c2ab80650590b6a2 = function (arg0) {\n const ret = getObject(arg0).versions;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_node_523d7bd03ef69fba = function (arg0) {\n const ret = getObject(arg0).node;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_string = function (arg0) {\n const ret = typeof getObject(arg0) === \"string\";\n return ret;\n };\n imports.wbg.__wbg_msCrypto_abcb1295e768d1f2 = function (arg0) {\n const ret = getObject(arg0).msCrypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_require_2784e593a4674877 = function () {\n return handleError(function () {\n const ret = module.require;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_newwithlength_13b5319ab422dcf6 = function (arg0) {\n const ret = new Uint8Array(arg0 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_4a9aa5157afeb382 = function (arg0, arg1) {\n const ret = getObject(arg0)[arg1 >>> 0];\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_next_1989a20442400aaa = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).next();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_done_bc26bf4ada718266 = function (arg0) {\n const ret = getObject(arg0).done;\n return ret;\n };\n imports.wbg.__wbg_value_0570714ff7d75f35 = function (arg0) {\n const ret = getObject(arg0).value;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_iterator_7ee1a391d310f8e4 = function () {\n const ret = Symbol.iterator;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_2aff440840bb6202 = function () {\n return handleError(function (arg0, arg1) {\n const ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_next_15da6a3df9290720 = function (arg0) {\n const ret = getObject(arg0).next;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_function = function (arg0) {\n const ret = typeof getObject(arg0) === \"function\";\n return ret;\n };\n imports.wbg.__wbg_call_669127b9d730c650 = function () {\n return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_object_clone_ref = function (arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_self_3fad056edded10bd = function () {\n return handleError(function () {\n const ret = self.self;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_window_a4f46c98a61d4089 = function () {\n return handleError(function () {\n const ret = window.window;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_globalThis_17eff828815f7d84 = function () {\n return handleError(function () {\n const ret = globalThis.globalThis;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_global_46f939f6541643c5 = function () {\n return handleError(function () {\n const ret = global.global;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_is_undefined = function (arg0) {\n const ret = getObject(arg0) === undefined;\n return ret;\n };\n imports.wbg.__wbg_newnoargs_ccdcae30fd002262 = function (arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_isArray_38525be7442aa21e = function (arg0) {\n const ret = Array.isArray(getObject(arg0));\n return ret;\n };\n imports.wbg.__wbg_call_53fc3abd42e24ec8 = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_isSafeInteger_c38b0a16d0c7cef7 = function (arg0) {\n const ret = Number.isSafeInteger(getObject(arg0));\n return ret;\n };\n imports.wbg.__wbg_new_feb65b865d980ae2 = function (arg0, arg1) {\n try {\n var state0 = { a: arg0, b: arg1 };\n var cb0 = (arg0, arg1) => {\n const a = state0.a;\n state0.a = 0;\n try {\n return __wbg_adapter_103(a, state0.b, arg0, arg1);\n } finally {\n state0.a = a;\n }\n };\n const ret = new Promise(cb0);\n return addHeapObject(ret);\n } finally {\n state0.a = state0.b = 0;\n }\n };\n imports.wbg.__wbindgen_memory = function () {\n const ret = wasm.memory;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_buffer_344d9b41efe96da7 = function (arg0) {\n const ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_d8a000788389a31e = function (arg0) {\n const ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_set_dcfd613a3420f908 = function (arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n };\n imports.wbg.__wbg_length_a5587d6cd79ab197 = function (arg0) {\n const ret = getObject(arg0).length;\n return ret;\n };\n imports.wbg.__wbindgen_string_get = function (arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof obj === \"string\" ? obj : undefined;\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n var len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_stringify_4039297315a25b00 = function () {\n return handleError(function (arg0) {\n const ret = JSON.stringify(getObject(arg0));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_set_40f7786a25a9cc7e = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));\n return ret;\n }, arguments);\n };\n imports.wbg.__wbg_has_cdf8b85f6e903c80 = function () {\n return handleError(function (arg0, arg1) {\n const ret = Reflect.has(getObject(arg0), getObject(arg1));\n return ret;\n }, arguments);\n };\n imports.wbg.__wbg_fetch_701fcd2bde06379a = function (arg0, arg1) {\n const ret = getObject(arg0).fetch(getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_fetch_b5d6bebed1e6c2d2 = function (arg0) {\n const ret = fetch(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_newwithbyteoffsetandlength_2dc04d99088b15e3 = function (arg0, arg1, arg2) {\n const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_e4960143e41697a4 = function () {\n return handleError(function () {\n const ret = new AbortController();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_signal_1ed842bebd6ae322 = function (arg0) {\n const ret = getObject(arg0).signal;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_abort_8355f201f30300bb = function (arg0) {\n getObject(arg0).abort();\n };\n imports.wbg.__wbindgen_error_new = function (arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_jsval_loose_eq = function (arg0, arg1) {\n const ret = getObject(arg0) == getObject(arg1);\n return ret;\n };\n imports.wbg.__wbindgen_boolean_get = function (arg0) {\n const v = getObject(arg0);\n const ret = typeof v === \"boolean\" ? (v ? 1 : 0) : 2;\n return ret;\n };\n imports.wbg.__wbindgen_number_get = function (arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof obj === \"number\" ? obj : undefined;\n getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbg_instanceof_Uint8Array_19e6f142a5e7e1e1 = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Uint8Array;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_instanceof_ArrayBuffer_c7cc317e5c29cc0d = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof ArrayBuffer;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_entries_6d727b73ee02b7ce = function (arg0) {\n const ret = Object.entries(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_String_917f38a1211cf44b = function (arg0, arg1) {\n const ret = String(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_warn_ade8d3b7ecee11ff = function (arg0, arg1) {\n console.warn(getObject(arg0), getObject(arg1));\n };\n imports.wbg.__wbg_readyState_13e55da5ad6d64e2 = function (arg0) {\n const ret = getObject(arg0).readyState;\n return ret;\n };\n imports.wbg.__wbg_warn_4affe1093892a4ef = function (arg0) {\n console.warn(getObject(arg0));\n };\n imports.wbg.__wbg_close_f4135085ec3fc8f0 = function () {\n return handleError(function (arg0) {\n getObject(arg0).close();\n }, arguments);\n };\n imports.wbg.__wbg_new_b9b318679315404f = function () {\n return handleError(function (arg0, arg1) {\n const ret = new WebSocket(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_setbinaryType_dcb62e0f2b346301 = function (arg0, arg1) {\n getObject(arg0).binaryType = takeObject(arg1);\n };\n imports.wbg.__wbg_log_7811587c4c6d2844 = function (arg0) {\n console.log(getObject(arg0));\n };\n imports.wbg.__wbg_error_f0a6627f4b23c19d = function (arg0) {\n console.error(getObject(arg0));\n };\n imports.wbg.__wbg_info_3ca7870690403fee = function (arg0) {\n console.info(getObject(arg0));\n };\n imports.wbg.__wbg_document_183cf1eecfdbffee = function (arg0) {\n const ret = getObject(arg0).document;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n };\n imports.wbg.__wbg_visibilityState_9721703a5ef75faf = function (arg0) {\n const ret = getObject(arg0).visibilityState;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getwithrefkey_3b3c46ba20582127 = function (arg0, arg1) {\n const ret = getObject(arg0)[getObject(arg1)];\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_length_cace2e0b3ddc0502 = function (arg0) {\n const ret = getObject(arg0).length;\n return ret;\n };\n imports.wbg.__wbg_addEventListener_0f2891b0794e07fa = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));\n }, arguments);\n };\n imports.wbg.__wbg_removeEventListener_104d11302bb212d1 = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).removeEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3));\n }, arguments);\n };\n imports.wbg.__wbindgen_is_bigint = function (arg0) {\n const ret = typeof getObject(arg0) === \"bigint\";\n return ret;\n };\n imports.wbg.__wbindgen_bigint_from_i64 = function (arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_in = function (arg0, arg1) {\n const ret = getObject(arg0) in getObject(arg1);\n return ret;\n };\n imports.wbg.__wbindgen_bigint_from_u64 = function (arg0) {\n const ret = BigInt.asUintN(64, arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_jsval_eq = function (arg0, arg1) {\n const ret = getObject(arg0) === getObject(arg1);\n return ret;\n };\n imports.wbg.__wbg_localStorage_e11f72e996a4f5d9 = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).localStorage;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_getItem_c81cd3ae30cd579a = function () {\n return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = getObject(arg1).getItem(getStringFromWasm0(arg2, arg3));\n var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n var len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n }, arguments);\n };\n imports.wbg.__wbg_navigator_7078da62d92ff5ad = function (arg0) {\n const ret = getObject(arg0).navigator;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_mediaDevices_e00b1f64d2b9939f = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).mediaDevices;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_enumerateDevices_619d52f5eef34c2f = function () {\n return handleError(function (arg0) {\n const ret = getObject(arg0).enumerateDevices();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_setItem_fe04f524052a3839 = function () {\n return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).setItem(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n }, arguments);\n };\n imports.wbg.__wbindgen_cb_drop = function (arg0) {\n const obj = takeObject(arg0).original;\n if (obj.cnt-- == 1) {\n obj.a = 0;\n return true;\n }\n const ret = false;\n return ret;\n };\n imports.wbg.__wbg_deviceId_58f7da2228a26c02 = function (arg0, arg1) {\n const ret = getObject(arg1).deviceId;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_instanceof_Response_944e2745b5db71f5 = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Response;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_randomFillSync_a0d98aa11c81fe89 = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).randomFillSync(takeObject(arg1));\n }, arguments);\n };\n imports.wbg.__wbg_subarray_6ca5cfa7fbb9abbe = function (arg0, arg1, arg2) {\n const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getRandomValues_504510b5564925af = function () {\n return handleError(function (arg0, arg1) {\n getObject(arg0).getRandomValues(getObject(arg1));\n }, arguments);\n };\n imports.wbg.__wbindgen_bigint_get_as_i64 = function (arg0, arg1) {\n const v = getObject(arg1);\n const ret = typeof v === \"bigint\" ? v : undefined;\n getBigInt64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? BigInt(0) : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbindgen_debug_string = function (arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbindgen_throw = function (arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbg_then_89e1c559530b85cf = function (arg0, arg1) {\n const ret = getObject(arg0).then(getObject(arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_queueMicrotask_e5949c35d772a669 = function (arg0) {\n queueMicrotask(getObject(arg0));\n };\n imports.wbg.__wbg_then_1bbc9edafd859b06 = function (arg0, arg1, arg2) {\n const ret = getObject(arg0).then(getObject(arg1), getObject(arg2));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_queueMicrotask_2be8b97a81fe4d00 = function (arg0) {\n const ret = getObject(arg0).queueMicrotask;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_resolve_a3252b2860f0a09e = function (arg0) {\n const ret = Promise.resolve(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_url_1f609e63ff1a7983 = function (arg0, arg1) {\n const ret = getObject(arg1).url;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n };\n imports.wbg.__wbg_send_2860805104507701 = function () {\n return handleError(function (arg0, arg1, arg2) {\n getObject(arg0).send(getArrayU8FromWasm0(arg1, arg2));\n }, arguments);\n };\n imports.wbg.__wbg_instanceof_Window_cde2416cf5126a72 = function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Window;\n } catch (_) {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_new_19676474aa414d62 = function () {\n return handleError(function () {\n const ret = new Headers();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_append_feec4143bbf21904 = function () {\n return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n getObject(arg0).append(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4));\n }, arguments);\n };\n imports.wbg.__wbg_newwithstrandinit_29038da14d09e330 = function () {\n return handleError(function (arg0, arg1, arg2) {\n const ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbindgen_closure_wrapper1532 = function (arg0, arg1, arg2) {\n const ret = makeClosure(arg0, arg1, 76, __wbg_adapter_46);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper1602 = function (arg0, arg1, arg2) {\n const ret = makeMutClosure(arg0, arg1, 76, __wbg_adapter_49);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_closure_wrapper1834 = function (arg0, arg1, arg2) {\n const ret = makeMutClosure(arg0, arg1, 76, __wbg_adapter_52);\n return addHeapObject(ret);\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, maybe_memory) {}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedBigInt64Memory0 = null;\n cachedFloat64Memory0 = null;\n cachedInt32Memory0 = null;\n cachedUint8Memory0 = null;\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(input) {\n if (wasm !== undefined) return wasm;\n\n if (typeof input === \"undefined\") {\n input = new URL(\"telemeter_wasm_bg.wasm\", import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (\n typeof input === \"string\" ||\n (typeof Request === \"function\" && input instanceof Request) ||\n (typeof URL === \"function\" && input instanceof URL)\n ) {\n input = fetch(input);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await input, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","/* eslint-disable-next-line */\nimport init, { Telemeter as TelemeterWASM } from \"../telemeter-wasm\";\n\n/**\n * @classdesc\n * This class implements the @wiris/telemeter-wasm. A utility that helps our Solutions to send the data\n * to Telemetry in a more comfortable and homogeneous way.\n */\nexport default class Telemeter {\n /**\n * Inits Telemeter class.\n * The parameters structures are defiended on {@link [Telemeter API](https://github.com/wiris/telemeter/blob/main/docs/USAGE.md#telemeter-api)}\n * @param {Object} telemeterAttributes.solution - The product that send data to Telemetry.\n * @param {Object} telemeterAttributes.hosts - Data about the environment where solution is integrated.\n * @param {Object} telemeterAttributes.config - Configuration parameters.\n */\n static init(telemeterAttributes) {\n if (!this.telemeter && !this.waitingForInit) {\n this.waitingForInit = true;\n init(telemeterAttributes.url)\n .then(() => {\n this.telemeter = new TelemeterWASM(\n telemeterAttributes.solution,\n telemeterAttributes.hosts,\n telemeterAttributes.config,\n );\n })\n .catch((error) => {\n console.log(error);\n })\n .finally(() => (this.waitingForInit = false));\n }\n }\n\n /**\n * Closes the Telemetry Session. After calling this method no data will be added to the Telemetry Session.\n */\n static async finish() {\n if (!this.telemeter) return;\n\n try {\n const local_telemeter = this.telemeter;\n this.telemeter = undefined;\n await local_telemeter.finish();\n } catch (e) {\n console.error(e);\n }\n }\n}\n","import Configuration from \"./configuration\";\nimport Core from \"./core.src\";\nimport EditorListener from \"./editorlistener\";\nimport Listeners from \"./listeners\";\nimport MathML from \"./mathml\";\nimport Util from \"./util\";\nimport Telemeter from \"./telemeter\";\n\nexport default class ContentManager {\n /**\n * @classdesc\n * This class represents a modal dialog, managing the following:\n * - The insertion of content into the current instance of the {@link ModalDialog} class.\n * - The actions to be done once the modal object has been submitted\n * (submitAction} method).\n * - The update of the content when the {@link ModalDialog} class is also updated,\n * for example when ModalDialog is re-opened.\n * - The communication between the {@link ModalDialog} class and itself, if the content\n * has been changed (hasChanges} method).\n * @constructs\n * @param {Object} contentManagerAttributes - Object containing all attributes needed to\n * create a new instance.\n */\n constructor(contentManagerAttributes) {\n /**\n * An object containing MathType editor parameters. See\n * http://docs.wiris.com/en/mathtype/mathtype_web/sdk-api/parameters for further information.\n * @type {Object}\n */\n this.editorAttributes = {};\n if (\"editorAttributes\" in contentManagerAttributes) {\n this.editorAttributes = contentManagerAttributes.editorAttributes;\n } else {\n throw new Error(\"ContentManager constructor error: editorAttributes property missed.\");\n }\n\n /**\n * CustomEditors instance. Contains the custom editors.\n * @type {CustomEditors}\n */\n this.customEditors = null;\n if (\"customEditors\" in contentManagerAttributes) {\n this.customEditors = contentManagerAttributes.customEditors;\n }\n\n /**\n * Environment properties. This object contains data about the integration platform.\n * @type {Object}\n * @property {String} editor - Editor name. Usually the HTML editor.\n * @property {String} mode - Save mode. Xml by default.\n * @property {String} version - Plugin version.\n */\n this.environment = {};\n if (\"environment\" in contentManagerAttributes) {\n this.environment = contentManagerAttributes.environment;\n } else {\n throw new Error(\"ContentManager constructor error: environment property missed\");\n }\n\n /**\n * ContentManager language.\n * @type {String}\n */\n this.language = \"\";\n if (\"language\" in contentManagerAttributes) {\n this.language = contentManagerAttributes.language;\n } else {\n throw new Error(\"ContentManager constructor error: language property missed\");\n }\n\n /**\n * {@link EditorListener} instance. Manages the changes inside the editor.\n * @type {EditorListener}\n */\n this.editorListener = new EditorListener();\n\n /**\n * MathType editor instance.\n * @type {JsEditor}\n */\n this.editor = null;\n\n /**\n * Navigator user agent.\n * @type {String}\n */\n this.ua = navigator.userAgent.toLowerCase();\n\n /**\n * Mobile device properties object\n * @type {DeviceProperties}\n */\n this.deviceProperties = {};\n this.deviceProperties.isAndroid = this.ua.indexOf(\"android\") > -1;\n this.deviceProperties.isIOS = ContentManager.isIOS();\n\n /**\n * Custom editor toolbar.\n * @type {String}\n */\n this.toolbar = null;\n\n /**\n * Custom editor toolbar.\n * @type {String}\n */\n this.dbclick = null;\n\n /**\n * Instance of the {@link ModalDialog} class associated with the current\n * {@link ContentManager} instance.\n * @type {ModalDialog}\n */\n this.modalDialogInstance = null;\n\n /**\n * ContentManager listeners.\n * @type {Listeners}\n */\n this.listeners = new Listeners();\n\n /**\n * MathML associated to the ContentManager instance.\n * @type {String}\n */\n this.mathML = null;\n\n /**\n * Indicates if the edited element is a new one or not.\n * @type {Boolean}\n */\n this.isNewElement = true;\n\n /**\n * {@link IntegrationModel} instance. Needed to call wrapper methods.\n * @type {IntegrationModel}\n */\n this.integrationModel = null;\n }\n\n /**\n * Adds a new listener to the current {@link ContentManager} instance.\n * @param {Object} listener - The listener to be added.\n */\n addListener(listener) {\n this.listeners.add(listener);\n }\n\n /**\n * Sets an instance of {@link IntegrationModel} class to the current {@link ContentManager}\n * instance.\n * @param {IntegrationModel} integrationModel - The {@link IntegrationModel} instance.\n */\n setIntegrationModel(integrationModel) {\n this.integrationModel = integrationModel;\n }\n\n /**\n * Sets the {@link ModalDialog} instance into the current {@link ContentManager} instance.\n * @param {ModalDialog} modalDialogInstance - The {@link ModalDialog} instance\n */\n setModalDialogInstance(modalDialogInstance) {\n this.modalDialogInstance = modalDialogInstance;\n }\n\n /**\n * Inserts the content into the current {@link ModalDialog} instance updating\n * the title and inserting the JavaScript editor.\n */\n insert() {\n // Before insert the editor we update the modal object title to avoid weird render display.\n this.updateTitle(this.modalDialogInstance);\n this.insertEditor(this.modalDialogInstance);\n }\n\n /**\n * Inserts MathType editor into the {@link ModalDialog.contentContainer}. It waits until\n * editor's JavaScript is loaded.\n */\n insertEditor() {\n if (ContentManager.isEditorLoaded()) {\n this.editor = window.com.wiris.jsEditor.JsEditor.newInstance(this.editorAttributes);\n this.editor.insertInto(this.modalDialogInstance.contentContainer);\n this.editor.focus();\n\n // `editor.action(\"rtl\");` toggles the RTL mode based on the current state, it doesn't just switch to RTL.\n if (this.modalDialogInstance.rtl && !this.editor.getEditorModel().isRTL()) {\n this.editor.action(\"rtl\");\n }\n // Setting div in rtl in case of it's activated.\n if (this.editor.getEditorModel().isRTL()) {\n this.editor.element.style.direction = \"rtl\";\n }\n\n // Editor listener: this object manages the changes logic of editor.\n this.editor.getEditorModel().addEditorListener(this.editorListener);\n\n // iOS events.\n if (this.modalDialogInstance.deviceProperties.isIOS) {\n setTimeout(function () {\n // Make sure the modalDialogInstance is available when the timeout is over\n // to avoid throw errors and stop execution.\n if (this.hasOwnProperty(\"modalDialogInstance\")) this.modalDialogInstance.hideKeyboard(); // eslint-disable-line no-prototype-builtins\n }, 400);\n\n const formulaDisplayDiv = document.getElementsByClassName(\"wrs_formulaDisplay\")[0];\n Util.addEvent(formulaDisplayDiv, \"focus\", this.modalDialogInstance.handleOpenedIosSoftkeyboard);\n Util.addEvent(formulaDisplayDiv, \"blur\", this.modalDialogInstance.handleClosedIosSoftkeyboard);\n }\n // Fire onLoad event. Necessary to set the MathML into the editor\n // after is loaded.\n this.listeners.fire(\"onLoad\", {});\n } else {\n setTimeout(ContentManager.prototype.insertEditor.bind(this), 100);\n }\n }\n\n /**\n * Initializes the current class by loading MathType script.\n */\n init() {\n if (!ContentManager.isEditorLoaded()) {\n this.addEditorAsExternalDependency();\n }\n }\n\n /**\n * Adds script element to the DOM to include editor externally.\n */\n addEditorAsExternalDependency() {\n const script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n let editorUrl = Configuration.get(\"editorUrl\");\n\n // We create an object url for parse url string and work more efficiently.\n const anchorElement = document.createElement(\"a\");\n\n ContentManager.setHrefToAnchorElement(anchorElement, editorUrl);\n ContentManager.setProtocolToAnchorElement(anchorElement);\n\n editorUrl = ContentManager.getURLFromAnchorElement(anchorElement);\n\n // Load editor URL. We add stats as GET params.\n const stats = this.getEditorStats();\n script.src = `${editorUrl}?lang=${this.language}&stats-editor=${stats.editor}&stats-mode=${stats.mode}&stats-version=${stats.version}`;\n\n document.getElementsByTagName(\"head\")[0].appendChild(script);\n }\n\n /**\n * Sets the specified url to the anchor element.\n * @param {HTMLAnchorElement} anchorElement - Element where set 'url'.\n * @param {String} url - URL to set.\n */\n static setHrefToAnchorElement(anchorElement, url) {\n anchorElement.href = url;\n }\n\n /**\n * Sets the current protocol to the anchor element.\n * @param {HTMLAnchorElement} anchorElement - Element where set its protocol.\n */\n static setProtocolToAnchorElement(anchorElement) {\n // Change to https if necessary.\n if (window.location.href.indexOf(\"https://\") === 0) {\n // It check if browser is https and configuration is http.\n // If this is so, we will replace protocol.\n if (anchorElement.protocol === \"http:\") {\n anchorElement.protocol = \"https:\";\n }\n }\n }\n\n /**\n * Returns the url of the anchor element adding the current port\n * if it is needed.\n * @param {HTMLAnchorElement} anchorElement - Element where extract the url.\n * @returns {String}\n */\n static getURLFromAnchorElement(anchorElement) {\n // Check protocol and remove port if it's standard.\n const removePort = anchorElement.port === \"80\" || anchorElement.port === \"443\" || anchorElement.port === \"\";\n return `${anchorElement.protocol}//${anchorElement.hostname}${removePort ? \"\" : `:${anchorElement.port}`}${anchorElement.pathname.startsWith(\"/\") ? anchorElement.pathname : `/${anchorElement.pathname}`}`; // eslint-disable-line max-len\n }\n\n /**\n * Returns object with editor stats.\n *\n * @typedef {Object} EditorStatsObject\n * @property {string} editor - Editor name.\n * @property {string} mode - Current configuration for formula save mode.\n * @property {string} version - Current plugins version.\n * @returns {EditorStatsObject}\n */\n getEditorStats() {\n // Editor stats. Use environment property to set it.\n const stats = {};\n if (\"editor\" in this.environment) {\n stats.editor = this.environment.editor;\n } else {\n stats.editor = \"unknown\";\n }\n\n if (\"mode\" in this.environment) {\n stats.mode = this.environment.mode;\n } else {\n stats.mode = Configuration.get(\"saveMode\");\n }\n\n if (\"version\" in this.environment) {\n stats.version = this.environment.version;\n } else {\n stats.version = Configuration.get(\"version\");\n }\n\n return stats;\n }\n\n /**\n * Returns true if device is iOS. Otherwise, false.\n * @returns {Boolean}\n */\n static isIOS() {\n return (\n [\"iPad Simulator\", \"iPhone Simulator\", \"iPod Simulator\", \"iPad\", \"iPhone\", \"iPod\"].includes(navigator.platform) ||\n // iPad on iOS 13 detection\n (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document)\n );\n }\n\n /**\n * Returns true if device is Mobile. Otherwise, false.\n * @returns {Boolean}\n */\n static isMobile() {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n }\n\n /**\n * Returns true if editor is loaded. Otherwise, false.\n * @returns {Boolean}\n */\n static isEditorLoaded() {\n // To know if editor JavaScript is loaded we need to wait until\n // window.com.wiris.jsEditor.JsEditor.newInstance is ready.\n return (\n window.com &&\n window.com.wiris &&\n window.com.wiris.jsEditor &&\n window.com.wiris.jsEditor.JsEditor &&\n window.com.wiris.jsEditor.JsEditor.newInstance\n );\n }\n\n /**\n * Sets the {@link ContentManager.editor} initial content.\n */\n setInitialContent() {\n if (!this.isNewElement) {\n this.setMathML(this.mathML);\n }\n }\n\n /**\n * Sets a MathML into {@link ContentManager.editor} instance.\n * @param {String} mathml - MathML string.\n * @param {Boolean} focusDisabled - If true editor don't get focus after the MathML is set.\n * False by default.\n */\n setMathML(mathml, focusDisabled) {\n // By default focus is enabled.\n if (typeof focusDisabled === \"undefined\") {\n focusDisabled = false;\n }\n // Using setMathML method is not a change produced by the user but for the API\n // so we set to false the contentChange property of editorListener.\n this.editor.setMathMLWithCallback(mathml, () => {\n this.editorListener.setWaitingForChanges(true);\n });\n\n // We need to wait a little until the callback finish.\n setTimeout(() => {\n this.editorListener.setIsContentChanged(false);\n }, 500);\n\n // In some scenarios - like closing modal object - editor mustn't be focused.\n if (!focusDisabled) {\n this.onFocus();\n }\n }\n\n /**\n * Sets the focus to the current instance of {@link ContentManager.editor}. Triggered by\n * {@link ModalDialog.focus}.\n */\n onFocus() {\n if (typeof this.editor !== \"undefined\" && this.editor != null) {\n this.editor.focus();\n\n // On WordPress integration, the focus gets lost right after setting it.\n // To fix this, we enforce another focus some milliseconds after this behaviour.\n setTimeout(() => {\n this.editor.focus();\n }, 100);\n }\n }\n\n /**\n * Updates the edition area by calling {@link IntegrationModel.updateFormula}.\n * Triggered by {@link ModalDialog.submitAction}.\n */\n submitAction() {\n if (!this.editor.isFormulaEmpty()) {\n let mathML = this.editor.getMathMLWithSemantics();\n // Add class for custom editors.\n if (this.customEditors.getActiveEditor() !== null) {\n const { toolbar } = this.customEditors.getActiveEditor();\n mathML = MathML.addCustomEditorClassAttribute(mathML, toolbar);\n } else {\n // We need - if exists - the editor name from MathML\n // class attribute.\n Object.keys(this.customEditors.editors).forEach((key) => {\n mathML = MathML.removeCustomEditorClassAttribute(mathML, key);\n });\n }\n const mathmlEntitiesEncoded = MathML.mathMLEntities(mathML);\n this.integrationModel.updateFormula(mathmlEntitiesEncoded);\n } else {\n this.integrationModel.updateFormula(null);\n }\n\n this.customEditors.disable();\n this.integrationModel.notifyWindowClosed();\n\n // Set disabled focus to prevent lost focus.\n this.setEmptyMathML();\n this.customEditors.disable();\n }\n\n /**\n * Sets an empty MathML as {@link ContentManager.editor} content.\n * This will open the MT/CT editor with the hand mode.\n * It adds dir rtl in case of it's activated.\n */\n setEmptyMathML() {\n const isMobile = this.deviceProperties.isAndroid || this.deviceProperties.isIOS;\n const isRTL = this.editor.getEditorModel().isRTL();\n\n if (isMobile || this.integrationModel.forcedHandMode) {\n // For mobile devices or forced hand mode, set an empty annotation MATHML to maintain the editor in Hand mode.\n const mathML = `<math${isRTL ? ' dir=\"rtl\"' : \"\"}><semantics><annotation encoding=\"application/json\">[]</annotation></semantics></math>`;\n this.setMathML(mathML, true);\n } else {\n // For non-mobile devices or not forced hand mode, set the empty MathML without an annotation.\n const mathML = `<math${isRTL ? ' dir=\"rtl\"' : \"\"}/>`;\n this.setMathML(mathML, true);\n }\n }\n\n /**\n * Open event. Triggered by {@link ModalDialog.open}. Does the following:\n * - Updates the {@link ContentManager.editor} content\n * (with an empty MathML or an existing formula),\n * - Updates the {@link ContentManager.editor} toolbar.\n * - Recovers the the focus.\n */\n onOpen() {\n if (this.isNewElement) {\n this.setEmptyMathML();\n } else {\n this.setMathML(this.mathML);\n }\n const toolbar = this.updateToolbar();\n this.onFocus();\n\n if (this.deviceProperties.isIOS) {\n const zoom = document.documentElement.clientWidth / window.innerWidth;\n\n if (zoom !== 1) {\n // Open editor in Keyboard mode if user use iOS, Safari and page is zoomed.\n this.setKeyboardMode();\n }\n }\n\n const trigger = this.dbclick ? \"formula\" : \"button\";\n\n // Call Telemetry service to track the event.\n try {\n Telemeter.telemeter.track(\"OPENED_MTCT_EDITOR\", {\n toolbar,\n trigger,\n });\n } catch (error) {\n console.error(\"Error tracking OPENED_MTCT_EDITOR\", error);\n }\n\n Core.globalListeners.fire(\"onModalOpen\", {});\n\n if (this.integrationModel.forcedHandMode) {\n this.hideHandModeButton();\n\n // In case we have a keyboard written formula, we still want it to be opened with handMode.\n if (this.mathML && !this.mathML.includes('<annotation encoding=\"application/json\">') && !this.isNewElement) {\n this.openHandOnKeyboardMathML(this.mathML, this.editor);\n }\n }\n }\n\n /**\n * Change Editor in keyboard mode when is loaded\n */\n setKeyboardMode() {\n const wrsEditor = document.getElementsByClassName(\"wrs_handOpen wrs_disablePalette\")[0];\n if (wrsEditor) {\n wrsEditor.classList.remove(\"wrs_handOpen\");\n wrsEditor.classList.remove(\"wrs_disablePalette\");\n } else {\n setTimeout(ContentManager.prototype.setKeyboardMode.bind(this), 100);\n }\n }\n\n /**\n * Hides the hand <-> keyboard mode switch.\n *\n * This method relies completely on the classes used on different HTML elements within the editor itself, meaning\n * any change on those classes will make this code stop working properly.\n *\n * On top of that, some of those classes are changed on runtime (for example, the one that makes some buttons change).\n * This forces us to use some delayed code (this is, a timeout) to make sure everything exists when we need it.\n * @param {*} forced (boolean) Forces the user to stay in Hand mode by hiding the keyboard mode button.\n */\n hideHandModeButton(forced = true) {\n if (this.handSwitchHidden) {\n return; // hand <-> keyboard button already hidden.\n }\n\n // \"Open hand mode\" button takes a little bit to be available.\n // This selector gets the hand <-> keyboard mode switch\n const handModeButtonSelector =\n \"div.wrs_editor.wrs_flexEditor.wrs_withHand.wrs_animated .wrs_handWrapper input[type=button]\";\n\n // If in \"forced mode\", we hide the \"keyboard button\" so the user can't can't change between hand and keyboard modes.\n // We use an observer to ensure that the button it hidden as soon as it appears.\n if (forced) {\n const mutationInstance = new MutationObserver((mutations) => {\n const handModeButton = document.querySelector(handModeButtonSelector);\n if (handModeButton) {\n handModeButton.hidden = true;\n this.handSwitchHidden = true;\n mutationInstance.disconnect();\n }\n });\n mutationInstance.observe(document.body, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n });\n }\n }\n\n /**\n * It will open any formula written in Keyboard mode with the hand mode with the default hand trace.\n *\n * @param {String} mathml The original KeyBoard MathML\n * @param {Object} editor The editor object.\n */\n async openHandOnKeyboardMathML(mathml, editor) {\n // First, as an editor requirement, we need to update the editor object with the current MathML formula.\n // Once the MathML formula is updated to the one we want to open with handMode, we will be able to proceed.\n await new Promise((resolve) => {\n editor.setMathMLWithCallback(mathml, resolve);\n });\n\n // We wait until the hand editor object exists.\n await this.waitForHand(editor);\n\n // Logic to get the hand traces and open the formula in hand mode.\n // This logic comes from the editor.\n const handEditor = editor.hand;\n editor.handTemporalMathML = editor.getMathML();\n const handCoordinates = editor.editorModel.getHandStrokes();\n handEditor.setStrokes(handCoordinates);\n handEditor.fitStrokes(true);\n editor.openHand();\n }\n\n /**\n * Waits until the hand editor object exists.\n * @param {Obect} editor The editor object.\n */\n async waitForHand(editor) {\n while (!editor.hand) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n }\n\n /**\n * Sets the correct toolbar depending if exist other custom toolbars\n * at the same time (e.g: Chemistry).\n */\n updateToolbar() {\n this.updateTitle(this.modalDialogInstance);\n const customEditor = this.customEditors.getActiveEditor();\n\n let toolbar;\n if (customEditor) {\n toolbar = customEditor.toolbar ? customEditor.toolbar : _wrs_int_wirisProperties.toolbar;\n\n if (this.toolbar == null || this.toolbar !== toolbar) {\n this.setToolbar(toolbar);\n }\n } else {\n toolbar = this.getToolbar();\n if (this.toolbar == null || this.toolbar !== toolbar) {\n this.setToolbar(toolbar);\n this.customEditors.disable();\n }\n }\n\n return toolbar;\n }\n\n /**\n * Updates the current {@link ModalDialog.title}. If a {@link CustomEditors} is enabled\n * sets the custom editor title. Otherwise sets the default title.\n */\n updateTitle() {\n const customEditor = this.customEditors.getActiveEditor();\n if (customEditor) {\n this.modalDialogInstance.setTitle(customEditor.title);\n } else {\n this.modalDialogInstance.setTitle(\"MathType\");\n }\n }\n\n /**\n * Returns the editor toolbar, depending on the configuration local or server side.\n * @returns {String} - Toolbar identifier.\n */\n getToolbar() {\n let toolbar = \"general\";\n if (\"toolbar\" in this.editorAttributes) {\n ({ toolbar } = this.editorAttributes);\n }\n // TODO: Change global integration variable for integration custom toolbar.\n if (toolbar === \"general\") {\n // eslint-disable-next-line camelcase\n toolbar =\n typeof _wrs_int_wirisProperties === \"undefined\" || typeof _wrs_int_wirisProperties.toolbar === \"undefined\"\n ? \"general\"\n : _wrs_int_wirisProperties.toolbar;\n }\n\n return toolbar;\n }\n\n /**\n * Sets the current {@link ContentManager.editor} instance toolbar.\n * @param {String} toolbar - The toolbar name.\n */\n setToolbar(toolbar) {\n this.toolbar = toolbar;\n this.editor.setParams({ toolbar: this.toolbar });\n }\n\n /**\n * Sets the custom headers added on editor requests.\n * @returns {Object} headers - key value headers.\n */\n setCustomHeaders(headers) {\n let headersObj = {};\n\n // We control that we only get String or Object as the input.\n if (typeof headers === \"object\") {\n headersObj = headers;\n } else if (typeof headers === \"string\") {\n headersObj = Util.convertStringToObject(headers);\n }\n\n this.editor.setParams({ customHeaders: headersObj });\n return headersObj;\n }\n\n /**\n * Returns true if the content of the editor has been changed. The logic of the changes\n * is delegated to {@link EditorListener} class.\n * @returns {Boolean} True if the editor content has been changed. False otherwise.\n */\n hasChanges() {\n return !this.editor.isFormulaEmpty() && this.editorListener.getIsContentChanged();\n }\n\n /**\n * Handle keyboard events detected in modal when elements of this class intervene.\n * @param {KeyboardEvent} keyboardEvent - The keyboard event.\n */\n onKeyDown(keyboardEvent) {\n if (keyboardEvent.key !== undefined && keyboardEvent.repeat === false) {\n if (keyboardEvent.key === \"Escape\" || keyboardEvent.key === \"Esc\") {\n // Code to detect Esc event.\n // There should be only one element with class name 'wrs_pressed' at the same time.\n let list = document.getElementsByClassName(\"wrs_expandButton wrs_expandButtonFor3RowsLayout wrs_pressed\");\n if (list.length === 0) {\n list = document.getElementsByClassName(\"wrs_expandButton wrs_expandButtonFor2RowsLayout wrs_pressed\");\n if (list.length === 0) {\n list = document.getElementsByClassName(\"wrs_select wrs_pressed\");\n if (list.length === 0) {\n this.modalDialogInstance.cancelAction();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n }\n } else if (keyboardEvent.shiftKey && keyboardEvent.key === \"Tab\") {\n // Code to detect shift Tab event.\n if (document.activeElement === this.modalDialogInstance.submitButton) {\n // Focus is on OK button.\n this.editor.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (document.querySelector('[title=\"Manual\"]') === document.activeElement) {\n // Focus is on minimize button (_).\n this.modalDialogInstance.closeDiv.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (document.activeElement === this.modalDialogInstance.minimizeDiv) {\n // Focus on cancel button.\n if (!(this.modalDialogInstance.properties.state === \"minimized\")) {\n this.modalDialogInstance.cancelButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n } else if (keyboardEvent.key === \"Tab\") {\n // Code to detect Tab event.\n if (document.activeElement === this.modalDialogInstance.cancelButton) {\n // Focus is on X button.\n this.modalDialogInstance.minimizeDiv.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (document.activeElement === this.modalDialogInstance.closeDiv) {\n // Focus on help button.\n if (!(this.modalDialogInstance.properties.state === \"minimized\")) {\n const element = document.querySelector('[title=\"Manual\"]');\n element.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n } else {\n // There should be only one element with class name 'wrs_formulaDisplay'.\n const element = document.getElementsByClassName(\"wrs_formulaDisplay\")[0];\n if (element.getAttribute(\"class\") === \"wrs_formulaDisplay wrs_focused\") {\n // Focus is on formuladisplay.\n this.modalDialogInstance.submitButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n }\n }\n }\n}\n","/**\n * A custom editor is MathType editor with a different\n * @typedef {Object} CustomEditor\n * @property {String} CustomEditor.name - Custom editor name.\n * @property {String} CustomEditor.toolbar - Custom editor toolbar.\n * @property {String} CustomEditor.icon - Custom editor icon.\n * @property {String} CustomEditor.confVariable - Configuration property to manage\n * the availability of the custom editor.\n * @property {String} CustomEditor.title - Custom editor modal dialog title.\n * @property {String} CustomEditor.tooltip - Custom editor icon tooltip.\n */\n\nexport default class CustomEditors {\n /**\n * @classdesc\n * This class represents the MathType custom editors manager.\n * A custom editor is MathType editor with a custom toolbar.\n * This class associates a {@link CustomEditor} to:\n * - It's own formulas\n * - A custom toolbar\n * - An icon to open it from a HTML editor.\n * - A tooltip for the icon.\n * - A global variable to enable or disable it globally.\n * @constructs\n */\n constructor() {\n /**\n * The custom editors.\n * @type {Array.<CustomEditor>}\n */\n\n this.editors = [];\n /**\n * The active editor name.\n * @type {String}\n */\n this.activeEditor = \"default\";\n }\n\n /**\n * Adds a {@link CustomEditor} to editors array.\n * @param {String} editorName - The editor name.\n * @param {CustomEditor} editorParams - The custom editor parameters.\n */\n addEditor(editorName, editorParams) {\n const customEditor = {};\n customEditor.name = editorParams.name;\n customEditor.toolbar = editorParams.toolbar;\n customEditor.icon = editorParams.icon;\n customEditor.confVariable = editorParams.confVariable;\n customEditor.title = editorParams.title;\n customEditor.tooltip = editorParams.tooltip;\n this.editors[editorName] = customEditor;\n }\n\n /**\n * Enables a {@link CustomEditor}.\n * @param {String} customEditorName - The custom editor name.\n */\n enable(customEditorName) {\n this.activeEditor = customEditorName;\n }\n\n /**\n * Disables a {@link CustomEditor}.\n */\n disable() {\n this.activeEditor = \"default\";\n }\n\n /**\n * Returns the active editor.\n * @return {CustomEditor} - A {@link CustomEditor} if a custom editor is enabled. Null otherwise.\n */\n getActiveEditor() {\n if (this.activeEditor !== \"default\") {\n return this.editors[this.activeEditor];\n }\n return null;\n }\n}\n","/**\n * Represents the configuration properties generated from the frontend (JavaScript variables).\n * @type {Object}\n * @property {string} imageClassName - Default MathType formula image class.\n * @property {string} imageClassName - Default MathType CAS image class.\n * @ignore\n */\nconst jsProperties = {\n imageCustomEditorName: \"data-custom-editor\",\n imageClassName: \"Wirisformula\",\n CASClassName: \"Wiriscas\",\n};\nexport default jsProperties;\n","export default class Event {\n /**\n * @classdesc\n * This class represents a custom event. Events should be fired by the {@link Listener} class.\n *\n * ```js\n * let customEvent = new Event();\n * customEvent.properties = {};\n *\n * let listeners = new Listeners();\n * listeners.newListener(eventName, callback);\n *\n * listeners.fire(eventName, customEvent) *\n * ```\n * @constructs\n */\n constructor() {\n /**\n * Indicates if the event should be cancelled.\n * @type {Boolean}\n */\n\n this.cancelled = false;\n /**\n * Indicates if the event should be prevented.\n * @type {Boolean}\n */\n this.defaultPrevented = false;\n }\n\n /**\n * Cancels the event.\n */\n cancel() {\n this.cancelled = true;\n }\n\n /**\n * Prevents the default action.\n */\n preventDefault() {\n this.defaultPrevented = true;\n }\n}\n","import IntegrationModel from \"./integrationmodel\";\n\n/**\n\n */\nexport default class PopUpMessage {\n /**\n * @classdesc\n * This class represents a dialog message overlaying a DOM element in order to\n * accept / cancel discard changes. The dialog can be closed i.e the overlay disappears\n * o canceled. In this last case a callback function should be called.\n * @constructs\n * @param {Object} popupMessageAttributes - Object containing popup properties.\n * @param {HTMLElement} popupMessageAttributes.overlayElement - Element to overlay.\n * @param {Object} popupMessageAttributes.callbacks - Contains callback\n * methods for close and cancel actions.\n * @param {Object} popupMessageAttributes.strings - Contains all the strings needed.\n */\n constructor(popupMessageAttributes) {\n /**\n * Element to be overlaid when the popup appears.\n */\n this.overlayElement = popupMessageAttributes.overlayElement;\n\n this.callbacks = popupMessageAttributes.callbacks;\n\n /**\n * HTMLElement element to wrap all HTML elements inside the popupMessage.\n */\n this.overlayWrapper = this.overlayElement.appendChild(document.createElement(\"div\"));\n this.overlayWrapper.setAttribute(\"class\", \"wrs_popupmessage_overlay_envolture\");\n\n /**\n * HTMLElement to display the popup message, close button and cancel button.\n */\n this.message = this.overlayWrapper.appendChild(document.createElement(\"div\"));\n this.message.id = \"wrs_popupmessage\";\n this.message.setAttribute(\"class\", \"wrs_popupmessage_panel\");\n this.message.setAttribute(\"role\", \"dialog\");\n this.message.setAttribute(\"aria-describedby\", \"description_txt\");\n const paragraph = document.createElement(\"p\");\n const text = document.createTextNode(popupMessageAttributes.strings.message);\n paragraph.appendChild(text);\n paragraph.id = \"description_txt\";\n this.message.appendChild(paragraph);\n\n /**\n * HTML element overlaying the overlayElement.\n */\n const overlay = this.overlayWrapper.appendChild(document.createElement(\"div\"));\n overlay.setAttribute(\"class\", \"wrs_popupmessage_overlay\");\n // We create a overlay that close popup message on click in there\n overlay.addEventListener(\"click\", this.cancelAction.bind(this));\n\n /**\n * HTML element containing cancel and close buttons.\n */\n this.buttonArea = this.message.appendChild(document.createElement(\"div\"));\n this.buttonArea.setAttribute(\"class\", \"wrs_popupmessage_button_area\");\n this.buttonArea.id = \"wrs_popup_button_area\";\n\n // Close button arguments.\n const buttonSubmitArguments = {\n class: \"wrs_button_accept\",\n innerHTML: popupMessageAttributes.strings.submitString,\n id: \"wrs_popup_accept_button\",\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-cd-close-button\",\n };\n\n /**\n * Close button arguments.\n */\n this.closeButton = this.createButton(buttonSubmitArguments, this.closeAction.bind(this));\n this.buttonArea.appendChild(this.closeButton);\n\n // Cancel button arguments.\n const buttonCancelArguments = {\n class: \"wrs_button_cancel\",\n innerHTML: popupMessageAttributes.strings.cancelString,\n id: \"wrs_popup_cancel_button\",\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-cd-cancel-button\",\n };\n\n /**\n * Cancel button.\n */\n this.cancelButton = this.createButton(buttonCancelArguments, this.cancelAction.bind(this));\n this.buttonArea.appendChild(this.cancelButton);\n }\n\n /**\n * This method create a button with arguments and return button dom object\n * @param {Object} parameters - An object containing id, class and innerHTML button text.\n * @param {String} parameters.id - Button id.\n * @param {String} parameters.class - Button class name.\n * @param {String} parameters.innerHTML - Button innerHTML text.\n * @param {Object} callback- Callback method to call on click event.\n * @returns {HTMLElement} HTML button.\n */\n // eslint-disable-next-line class-methods-use-this\n createButton(parameters, callback) {\n let element = {};\n element = document.createElement(\"button\");\n element.setAttribute(\"id\", parameters.id);\n element.setAttribute(\"class\", parameters.class);\n element.innerHTML = parameters.innerHTML;\n element.addEventListener(\"click\", callback);\n if (parameters[\"data-testid\"]) {\n element.setAttribute(\"data-testid\", parameters[\"data-testid\"]);\n }\n\n return element;\n }\n\n /**\n * Shows the popupmessage containing a message, and two buttons\n * to cancel the action or close the modal dialog.\n */\n show() {\n if (this.overlayWrapper.style.display !== \"block\") {\n // Clear focus with blur for prevent press any key.\n document.activeElement.blur();\n this.overlayWrapper.style.display = \"block\";\n this.closeButton.focus();\n } else {\n this.overlayWrapper.style.display = \"none\";\n // _wrs_modalWindow.focus(); This throws an error of not existing _wrs_modalWindow\n }\n }\n\n /**\n * This method cancels the popupMessage: the dialog disappears revealing the overlaid element.\n * A callback method is called (if defined). For example a method to focus the overlaid element.\n */\n cancelAction() {\n this.overlayWrapper.style.display = \"none\";\n if (typeof this.callbacks.cancelCallback !== \"undefined\") {\n this.callbacks.cancelCallback();\n // Set temporal image to null to prevent loading\n // an existent formula when starting one from scratch. Make focus come back too.\n // IntegrationModel.setActionsOnCancelButtons();\n }\n }\n\n /**\n * This method closes the popupMessage: the dialog disappears and the close callback is called.\n * For example to close the overlaid element.\n */\n closeAction() {\n this.cancelAction();\n if (typeof this.callbacks.closeCallback !== \"undefined\") {\n this.callbacks.closeCallback();\n }\n IntegrationModel.setActionsOnCancelButtons();\n }\n\n /**\n * Handle keyboard events detected in modal when elements of this class intervene.\n * @param {KeyboardEvent} keyboardEvent - The keyboard event.\n */\n onKeyDown(keyboardEvent) {\n if (keyboardEvent.key !== undefined) {\n // Code to detect Esc event.\n if (keyboardEvent.key === \"Escape\" || keyboardEvent.key === \"Esc\") {\n this.cancelAction();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else if (keyboardEvent.key === \"Tab\") {\n // Code to detect Tab event.\n if (document.activeElement === this.closeButton) {\n this.cancelButton.focus();\n } else {\n this.closeButton.focus();\n }\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n }\n }\n }\n}\n","/**\n * This module provides protection against external focus management scripts\n * that might interfere with the MathType editor modal.\n */\n\n/**\n * focusProtection function creates and returns methods to prevent external scripts from\n * interfering with the focus of the MathType modal dialog.\n *\n * @returns {Object} An object with protect and unprotect methods.\n */\nconst focusProtection = () => {\n /**\n * Initialize focus protection on the given modal element.\n *\n * @param {HTMLElement} modalElement - The modal element to protect\n * @param {HTMLElement} overlayElement - The overlay element of the modal (not used in current implementation)\n * @param {HTMLElement} editorElement - The editor element inside the modal\n */\n const protect = (modalElement, overlayElement, editorElement) => {\n if (!modalElement || !overlayElement || !editorElement) {\n console.warn(\"FocusProtection: Missing required elements\");\n return;\n }\n\n // Apply the focus protection\n overrideFocusBehavior(modalElement, editorElement);\n };\n\n /**\n * Apply focus protection by overriding focus-related methods\n *\n * @param {HTMLElement} modalElement - The modal element\n * @param {HTMLElement} editorElement - The editor element to keep focused\n * @private\n */\n const overrideFocusBehavior = (modalElement, editorElement) => {\n // Store original focus methods to be able to restore them\n const originalElementFocus = HTMLElement.prototype.focus;\n const originalElementBlur = HTMLElement.prototype.blur;\n\n // Override the focus method for all elements\n HTMLElement.prototype.focus = function (...args) {\n // If the modal is open and this is not part of the modal, prevent focus\n if (modalElement.style.display !== \"none\" && !modalElement.contains(this) && this !== document.body) {\n // If some external script is trying to focus another element, prevent it\n // and restore focus to the editor\n if (editorElement) {\n // Use the original focus method to avoid infinite recursion\n originalElementFocus.apply(editorElement, args);\n }\n return;\n }\n\n // Otherwise, allow the focus to happen\n originalElementFocus.apply(this, args);\n };\n\n // Store the methods to remove them when the modal is closed\n modalElement.originalElementFocus = originalElementFocus;\n modalElement.originalElementBlur = originalElementBlur;\n };\n\n /**\n * Remove focus protection from the modal\n *\n * @param {HTMLElement} modalElement - The modal element to unprotect\n */\n const unprotect = (modalElement) => {\n if (!modalElement) {\n return;\n }\n\n // Restore original focus methods\n if (modalElement.originalElementFocus) {\n HTMLElement.prototype.focus = modalElement.originalElementFocus;\n delete modalElement.originalElementFocus;\n }\n\n if (modalElement.originalElementBlur) {\n HTMLElement.prototype.blur = modalElement.originalElementBlur;\n delete modalElement.originalElementBlur;\n }\n };\n\n return {\n protect,\n unprotect,\n };\n};\n\nexport default focusProtection;\n","// eslint-disable-next-line max-classes-per-file\nimport PopUpMessage from \"./popupmessage\";\nimport Util from \"./util\";\nimport Configuration from \"./configuration\";\nimport Listeners from \"./listeners\";\nimport StringManager from \"./stringmanager\";\nimport ContentManager from \"./contentmanager\";\nimport Telemeter from \"./telemeter\";\nimport IntegrationModel from \"./integrationmodel\";\nimport Core from \"./core.src\";\nimport focusProtection from \"./focusprotection\";\nimport closeIcon from \"../styles/icons/general/close_icon.svg\"; //eslint-disable-line\nimport closeHoverIcon from \"../styles/icons/hover/close_icon_h.svg\"; //eslint-disable-line\nimport fullsIcon from \"../styles/icons/general/fulls_icon.svg\"; //eslint-disable-line\nimport fullsHoverIcon from \"../styles/icons/hover/fulls_icon_h.svg\"; //eslint-disable-line\nimport minIcon from \"../styles/icons/general/min_icon.svg\"; //eslint-disable-line\nimport minHoverIcon from \"../styles/icons/hover/min_icon_h.svg\"; //eslint-disable-line\nimport minsIcon from \"../styles/icons/general/mins_icon.svg\"; //eslint-disable-line\nimport minsHoverIcon from \"../styles/icons/hover/mins_icon_h.svg\"; //eslint-disable-line\nimport maxIcon from \"../styles/icons/general/max_icon.svg\"; //eslint-disable-line\nimport maxHoverIcon from \"../styles/icons/hover/max_icon_h.svg\"; //eslint-disable-line\nconst { unprotect, protect } = focusProtection();\n\n/**\n * @typedef {Object} DeviceProperties\n * @property {String} DeviceProperties.orientation - Indicates of the orientation of the device.\n * @property {Boolean} DeviceProperties.isAndroid - True if the device is Android. False otherwise.\n * @property {Boolean} DeviceProperties.isIOS - True if the device is iOS. False otherwise.\n * @property {Boolean} DeviceProperties.isMobile - True if the device is a mobile one.\n * False otherwise.\n * @property {Boolean} DeviceProperties.isDesktop - True if the device is a desktop one.\n * False otherwise.\n */\n\nexport default class ModalDialog {\n /**\n * @classdesc\n * This class represents a modal dialog. The modal dialog admits\n * a {@link ContentManager} instance to manage the content of the dialog.\n * @constructs\n * @param {Object} modalDialogAttributes - An object containing all modal dialog attributes.\n */\n constructor(modalDialogAttributes) {\n this.attributes = modalDialogAttributes;\n\n // Metrics.\n const ua = navigator.userAgent.toLowerCase();\n const isAndroid = ua.indexOf(\"android\") > -1;\n const isIOS = ContentManager.isIOS();\n this.iosSoftkeyboardOpened = false;\n this.iosMeasureUnit = ua.indexOf(\"crios\") === -1 ? \"%\" : \"vh\";\n this.iosDivHeight = `auto`;\n\n const deviceWidth = window.outerWidth;\n const deviceHeight = window.outerHeight;\n\n const landscape = deviceWidth > deviceHeight;\n const portrait = deviceWidth < deviceHeight;\n\n // TODO: Detect isMobile without using editor metrics.\n const isLandscape = landscape && this.attributes.height > deviceHeight;\n const isPortrait = portrait && this.attributes.width > deviceWidth;\n const isMobile = ContentManager.isMobile();\n\n // Obtain number of current instance.\n this.instanceId = document.getElementsByClassName(\"wrs_modal_dialogContainer\").length;\n\n // Device object properties.\n\n /**\n * @type {DeviceProperties}\n */\n this.deviceProperties = {\n orientation: landscape ? \"landscape\" : \"portrait\",\n isAndroid,\n isIOS,\n isMobile,\n isDesktop: !isMobile && !isIOS && !isAndroid,\n };\n\n this.properties = {\n created: false,\n state: \"\",\n previousState: \"\",\n position: { bottom: 0, right: 10 },\n size: { height: 338, width: 580 },\n };\n\n /**\n * Object to keep website's style before change it on lock scroll for mobile devices.\n * @type {Object}\n * @property {String} bodyStylePosition - Previous body style position.\n * @property {String} bodyStyleOverflow - Previous body style overflow.\n * @property {String} htmlStyleOverflow - Previous body style overflow.\n * @property {String} windowScrollX - Previous window's scroll Y.\n * @property {String} windowScrollY - Previous window's scroll X.\n */\n this.websiteBeforeLockParameters = null;\n\n let attributes = {};\n attributes.class = \"wrs_modal_overlay\";\n attributes.id = this.getElementId(attributes.class);\n this.overlay = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_title_bar\";\n attributes.id = this.getElementId(attributes.class);\n this.titleBar = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_title\";\n attributes.id = this.getElementId(attributes.class);\n this.title = Util.createElement(\"div\", attributes);\n this.title.innerHTML = \"offline\";\n\n attributes = {};\n attributes.class = \"wrs_modal_close_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"close\");\n attributes.style = {};\n this.closeDiv = Util.createElement(\"a\", attributes);\n this.closeDiv.setAttribute(\"role\", \"button\");\n this.closeDiv.setAttribute(\"tabindex\", 3);\n // Apply styles and events after the creation as createElement doesn't process them correctly\n const generalStyleClose = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(closeIcon)})`;\n const hoverStyleClose = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(closeHoverIcon)})`;\n this.closeDiv.setAttribute(\"style\", generalStyleClose);\n this.closeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleClose));\n this.closeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleClose));\n // To identifiy the element in automated testing\n this.closeDiv.setAttribute(\"data-testid\", \"mtcteditor-close-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_stack_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"exit_fullscreen\");\n this.stackDiv = Util.createElement(\"a\", attributes);\n this.stackDiv.setAttribute(\"role\", \"button\");\n this.stackDiv.setAttribute(\"tabindex\", 2);\n const generalStyleStack = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(minsIcon)})`;\n const hoverStyleStack = `background-size: 10px; background-image: url(data:image/svg+xml;base64,${window.btoa(minsHoverIcon)})`;\n this.stackDiv.setAttribute(\"style\", generalStyleStack);\n this.stackDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleStack));\n this.stackDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleStack));\n // To identifiy the element in automated testing\n this.stackDiv.setAttribute(\"data-testid\", \"mtcteditor-fullscreen-disable-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_maximize_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"fullscreen\");\n this.maximizeDiv = Util.createElement(\"a\", attributes);\n this.maximizeDiv.setAttribute(\"role\", \"button\");\n this.maximizeDiv.setAttribute(\"tabindex\", 2);\n const generalStyleMaximize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(fullsIcon)})`;\n const hoverStyleMaximize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(fullsHoverIcon)})`;\n this.maximizeDiv.setAttribute(\"style\", generalStyleMaximize);\n this.maximizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleMaximize));\n this.maximizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleMaximize));\n // To identifiy the element in automated testing\n this.maximizeDiv.setAttribute(\"data-testid\", \"mtcteditor-fullscreen-enable-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_minimize_button\";\n attributes.id = this.getElementId(attributes.class);\n attributes.title = StringManager.get(\"minimize\");\n this.minimizeDiv = Util.createElement(\"a\", attributes);\n this.minimizeDiv.setAttribute(\"role\", \"button\");\n this.minimizeDiv.setAttribute(\"tabindex\", 1);\n const generalStyleMinimize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minIcon)})`;\n const hoverStyleMinimize = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyleMinimize);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyleMinimize));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyleMinimize));\n // To identify the element in automated testing\n this.minimizeDiv.setAttribute(\"data-testid\", \"mtcteditor-minimize-button\");\n\n attributes = {};\n attributes.class = \"wrs_modal_dialogContainer\";\n attributes.id = this.getElementId(attributes.class);\n attributes.role = \"dialog\";\n this.container = Util.createElement(\"div\", attributes);\n this.container.setAttribute(\"aria-labeledby\", \"wrs_modal_title[0]\");\n\n attributes = {};\n attributes.class = \"wrs_modal_wrapper\";\n attributes.id = this.getElementId(attributes.class);\n this.wrapper = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_content_container\";\n attributes.id = this.getElementId(attributes.class);\n this.contentContainer = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_controls\";\n attributes.id = this.getElementId(attributes.class);\n this.controls = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_buttons_container\";\n attributes.id = this.getElementId(attributes.class);\n this.buttonContainer = Util.createElement(\"div\", attributes);\n\n // Buttons: all button must be created using createSubmitButton method.\n this.submitButton = this.createSubmitButton(\n {\n id: this.getElementId(\"wrs_modal_button_accept\"),\n class: \"wrs_modal_button_accept\",\n innerHTML: StringManager.get(\"accept\"),\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-insert-button\",\n },\n this.submitAction.bind(this),\n );\n\n this.cancelButton = this.createSubmitButton(\n {\n id: this.getElementId(\"wrs_modal_button_cancel\"),\n class: \"wrs_modal_button_cancel\",\n innerHTML: StringManager.get(\"cancel\"),\n // To identifiy the element in automated testing\n \"data-testid\": \"mtcteditor-cancel-button\",\n },\n this.cancelAction.bind(this),\n );\n\n this.contentManager = null;\n\n // Overlay popup.\n const popupStrings = {\n cancelString: StringManager.get(\"cancel\"),\n submitString: StringManager.get(\"close\"),\n message: StringManager.get(\"close_modal_warning\"),\n };\n\n const callbacks = {\n closeCallback: () => {\n this.close(\"mtc_close\");\n },\n cancelCallback: () => {\n this.focus();\n },\n };\n\n const popupupProperties = {\n overlayElement: this.container,\n callbacks,\n strings: popupStrings,\n };\n\n this.popup = new PopUpMessage(popupupProperties);\n\n /**\n * Indicates if directionality of the modal dialog is RTL. false by default.\n * @type {Boolean}\n */\n this.rtl = false;\n if (\"rtl\" in this.attributes) {\n this.rtl = this.attributes.rtl;\n }\n\n // Event handlers need modal instance context.\n this.handleOpenedIosSoftkeyboard = this.handleOpenedIosSoftkeyboard.bind(this);\n this.handleClosedIosSoftkeyboard = this.handleClosedIosSoftkeyboard.bind(this);\n }\n\n /**\n * This method sets an ContentManager instance to ModalDialog. ContentManager\n * manages the logic of ModalDialog content: submit, update, close and changes.\n * @param {ContentManager} contentManager - ContentManager instance.\n */\n setContentManager(contentManager) {\n this.contentManager = contentManager;\n }\n\n /**\n * Returns the modal contentElement object.\n * @returns {ContentManager} the instance of the ContentManager class.\n */\n getContentManager() {\n return this.contentManager;\n }\n\n /**\n * This method is called when the modal object has been submitted. Calls\n * contentElement submitAction method - if exists - and closes the modal\n * object. No logic about the content should be placed here,\n * contentElement.submitAction is the responsible of the content logic.\n */\n async submitAction() {\n if (typeof this.contentManager.submitAction !== \"undefined\") {\n this.contentManager.submitAction();\n }\n\n await this.close(\"mtc_insert\");\n }\n\n /**\n * Performs the cancel action.\n * If there are no changes in the content, it closes the modal.\n * Otherwise, it shows a pop-up message to confirm the cancel action.\n * @returns {Promise<void>} - A promise that resolves when the modal is closed.\n */\n async cancelAction() {\n if (typeof this.contentManager.hasChanges === \"undefined\" || !this.contentManager.hasChanges()) {\n IntegrationModel.setActionsOnCancelButtons();\n await this.close(\"mtc_close\");\n } else {\n this.showPopUpMessage();\n }\n }\n\n /**\n * Returns a button element.\n * @param {Object} properties - Input button properties.\n * @param {String} properties.class - Input button class.\n * @param {String} properties.innerHTML - Input button innerHTML.\n * @param {Object} callback - Callback function associated to click event.\n * @returns {HTMLButtonElement} The button element.\n *\n */\n // eslint-disable-next-line class-methods-use-this\n createSubmitButton(properties, callback) {\n class SubmitButton {\n constructor() {\n this.element = document.createElement(\"button\");\n this.element.id = properties.id;\n this.element.className = properties.class;\n this.element.innerHTML = properties.innerHTML;\n this.element.dataset.testid = properties[\"data-testid\"];\n Util.addEvent(this.element, \"click\", callback);\n }\n\n getElement() {\n return this.element;\n }\n }\n return new SubmitButton(properties, callback).getElement();\n }\n\n /**\n * Creates the modal window object inserting a contentElement object.\n */\n create() {\n /* Modal Window Structure\n _____________________________________________________________________________________\n |wrs_modal_dialog_Container |\n | _________________________________________________________________________________ |\n | |title_bar minimize_button stack_button close_button | |\n | |_______________________________________________________________________________| |\n | |wrapper | |\n | | _____________________________________________________________________________ | |\n | | |content | | |\n | | | | | |\n | | | | | |\n | | |___________________________________________________________________________| | |\n | | _____________________________________________________________________________ | |\n | | |controls | | |\n | | | ___________________________________ | | |\n | | | |buttonContainer | | | |\n | | | | _______________________________ | | | |\n | | | | |button_accept | button_cancel| | | | |\n | | | |_|_____________ |______________|_| | | |\n | | |___________________________________________________________________________| | |\n | |_______________________________________________________________________________| |\n |___________________________________________________________________________________| */\n\n this.titleBar.appendChild(this.closeDiv);\n this.titleBar.appendChild(this.stackDiv);\n this.titleBar.appendChild(this.maximizeDiv);\n this.titleBar.appendChild(this.minimizeDiv);\n this.titleBar.appendChild(this.title);\n\n if (this.deviceProperties.isDesktop) {\n this.container.appendChild(this.titleBar);\n }\n\n this.wrapper.appendChild(this.contentContainer);\n this.wrapper.appendChild(this.controls);\n\n this.controls.appendChild(this.buttonContainer);\n\n this.buttonContainer.appendChild(this.submitButton);\n this.buttonContainer.appendChild(this.cancelButton);\n\n this.container.appendChild(this.wrapper);\n\n // Check if browser has scrollBar before modal has modified.\n this.recalculateScrollBar();\n\n document.body.appendChild(this.container);\n document.body.appendChild(this.overlay);\n\n if (this.deviceProperties.isDesktop) {\n // Desktop.\n this.createModalWindowDesktop();\n this.createResizeButtons();\n\n this.addListeners();\n // Maximize window only when the configuration is set and the device is not iOS or Android.\n if (Configuration.get(\"modalWindowFullScreen\")) {\n this.maximize();\n }\n } else if (this.deviceProperties.isAndroid) {\n this.createModalWindowAndroid();\n } else if (this.deviceProperties.isIOS) {\n this.createModalWindowIos();\n }\n\n if (this.contentManager != null) {\n this.contentManager.insert(this);\n }\n\n this.properties.open = true;\n this.properties.created = true;\n\n // Checks language directionality.\n if (this.isRTL()) {\n this.container.style.right = `${window.innerWidth - this.scrollbarWidth - this.container.offsetWidth}px`;\n this.container.className += \" wrs_modal_rtl\";\n }\n }\n\n /**\n * Creates a button in the modal object to resize it.\n */\n createResizeButtons() {\n // This is a definition of Resize Button Bottom-Right.\n this.resizerBR = document.createElement(\"div\");\n this.resizerBR.className = \"wrs_bottom_right_resizer\";\n this.resizerBR.innerHTML = \"◢\";\n // To identifiy the element in automated testing\n this.resizerBR.dataset.testid = \"mtcteditor-resize-button-right\";\n // This is a definition of Resize Button Top-Left.\n this.resizerTL = document.createElement(\"div\");\n this.resizerTL.className = \"wrs_bottom_left_resizer\";\n // To identifiy the element in automated testing\n this.resizerTL.dataset.testid = \"mtcteditor-resize-button-left\";\n // Append resize buttons to modal.\n this.container.appendChild(this.resizerBR);\n this.titleBar.appendChild(this.resizerTL);\n // Add events to resize on click and drag.\n Util.addEvent(this.resizerBR, \"mousedown\", this.activateResizeStateBR.bind(this));\n Util.addEvent(this.resizerTL, \"mousedown\", this.activateResizeStateTL.bind(this));\n }\n\n /**\n * Initialize variables for Bottom-Right resize button\n * @param {MouseEvent} mouseEvent - Mouse event.\n */\n activateResizeStateBR(mouseEvent) {\n this.initializeResizeProperties(mouseEvent, false);\n }\n\n /**\n * Initialize variables for Top-Left resize button\n * @param {MouseEvent} mouseEvent - Mouse event.\n */\n activateResizeStateTL(mouseEvent) {\n this.initializeResizeProperties(mouseEvent, true);\n }\n\n /**\n * Common method to initialize variables at resize.\n * @param {MouseEvent} mouseEvent - Mouse event.\n */\n initializeResizeProperties(mouseEvent, leftOption) {\n // Apply class for disable involuntary select text when drag.\n Util.addClass(document.body, \"wrs_noselect\");\n Util.addClass(this.overlay, \"wrs_overlay_active\");\n this.resizeDataObject = {\n x: this.eventClient(mouseEvent).X,\n y: this.eventClient(mouseEvent).Y,\n };\n // Save Initial state of modal to compare on drag and obtain the difference.\n this.initialWidth = parseInt(this.container.style.width, 10);\n this.initialHeight = parseInt(this.container.style.height, 10);\n if (!leftOption) {\n this.initialRight = parseInt(this.container.style.right, 10);\n this.initialBottom = parseInt(this.container.style.bottom, 10);\n } else {\n this.leftScale = true;\n }\n if (!this.initialRight) {\n this.initialRight = 0;\n }\n if (!this.initialBottom) {\n this.initialBottom = 0;\n }\n // Disable mouse events on editor when we start to drag modal.\n document.body.style[\"user-select\"] = \"none\";\n }\n\n /**\n * This method opens the modal window, restoring the previous state, position and metrics,\n * if exists. By default the modal object opens in stack mode.\n */\n open() {\n // Removing close class.\n this.removeClass(\"wrs_closed\");\n // Hiding keyboard for mobile devices.\n const { isIOS } = this.deviceProperties;\n const { isAndroid } = this.deviceProperties;\n const { isMobile } = this.deviceProperties;\n if (isIOS || isAndroid || isMobile) {\n // Restore scale to 1.\n this.restoreWebsiteScale();\n this.lockWebsiteScroll();\n // Due to editor wait we need to wait until editor focus.\n setTimeout(() => {\n this.hideKeyboard();\n }, 400);\n }\n\n // New modal window. He need to create the whole object.\n if (!this.properties.created) {\n this.create();\n } else {\n // Previous state closed. Open method can be called even the previous state is open,\n // for example updating the content of the modal object.\n if (!this.properties.open) {\n this.properties.open = true;\n\n // Restoring the previous open state: if the modal object has been closed\n // re-open it should preserve the state and the metrics.\n if (!this.deviceProperties.isAndroid && !this.deviceProperties.isIOS) {\n this.restoreState();\n }\n }\n\n // Maximize window only when the configuration is set and the device is not iOs or Android.\n if (this.deviceProperties.isDesktop && Configuration.get(\"modalWindowFullScreen\")) {\n this.maximize();\n }\n\n // In iOS we need to recalculate the size of the modal object because\n // iOS keyboard is a float div which can overlay the modal object.\n if (this.deviceProperties.isIOS) {\n this.iosSoftkeyboardOpened = false;\n }\n }\n\n if (!ContentManager.isEditorLoaded()) {\n const listener = Listeners.newListener(\"onLoad\", () => {\n this.displayEditor();\n });\n this.contentManager.addListener(listener);\n } else {\n this.displayEditor();\n }\n }\n\n /**\n * Prepares and displays the editor in the modal.\n *\n * This method is responsible for displaying the MathType editor inside the modal container.\n *\n * For Moodle environments, it applies focus protection to prevent external scripts\n * from hijacking focus away from the editor while it's open. This is particularly\n * important in Moodle which may have its own focus management scripts.\n * @returns {void}\n */\n displayEditor() {\n if (this.contentManager.integrationModel.isMoodle) {\n protect(this.container, this.overlay, this.contentContainer);\n }\n\n // Initialize and open the editor using the contentManager.\n this.contentManager.onOpen(this);\n }\n\n /**\n * Closes the modal.\n * Removes specific CSS classes, saves modal properties, unlocks website scroll,\n * sets the 'open' property to false, and triggers the 'onModalClose' event.\n * If a close trigger is defined, it tracks the telemetry event 'CLOSED_MTCT_EDITOR' with the trigger.\n * @returns {Promise<void>} A promise that resolves when the modal is closed.\n */\n async close(trigger) {\n // Remove focus protection before closing\n unprotect(this.container);\n\n this.removeClass(\"wrs_maximized\");\n this.removeClass(\"wrs_minimized\");\n this.removeClass(\"wrs_stack\");\n this.addClass(\"wrs_closed\");\n this.saveModalProperties();\n this.unlockWebsiteScroll();\n this.properties.open = false;\n\n if (trigger) {\n try {\n await Telemeter.telemeter.track(\"CLOSED_MTCT_EDITOR\", {\n toolbar: this.contentManager.toolbar,\n trigger,\n });\n } catch (error) {\n console.error(\"Error tracking CLOSED_MTCT_EDITOR\", error);\n }\n }\n\n Core.globalListeners.fire(\"onModalClose\", {});\n }\n\n /**\n * Closes modal window and destroys the object.\n */\n destroy() {\n // Remove focus protection before destroying\n unprotect(this.container);\n\n // Close modal window.\n this.close();\n // Remove listeners and destroy the object.\n this.removeListeners();\n this.overlay.remove();\n this.container.remove();\n // Reset properties to allow open again.\n this.properties.created = false;\n }\n\n /**\n * Sets the website scale to one.\n */\n // eslint-disable-next-line class-methods-use-this\n restoreWebsiteScale() {\n let viewportmeta = document.querySelector(\"meta[name=viewport]\");\n // Let the equal symbols in order to search and make meta's final content.\n const contentAttrsToUpdate = [\"initial-scale=\", \"minimum-scale=\", \"maximum-scale=\"];\n const contentAttrsValuesToUpdate = [\"1.0\", \"1.0\", \"1.0\"];\n const setMetaAttrFunc = (viewportelement, contentAttrs) => {\n const contentAttr = viewportelement.getAttribute(\"content\");\n // If it exists, we need to maintain old values and put our values.\n if (contentAttr) {\n const attrArray = contentAttr.split(\",\");\n let finalContentMeta = \"\";\n const oldAttrs = [];\n for (let i = 0; i < attrArray.length; i += 1) {\n let isAttrToUpdate = false;\n let j = 0;\n while (!isAttrToUpdate && j < contentAttrs.length) {\n if (attrArray[i].indexOf(contentAttrs[j])) {\n isAttrToUpdate = true;\n }\n j += 1;\n }\n\n if (!isAttrToUpdate) {\n oldAttrs.push(attrArray[i]);\n }\n }\n\n for (let i = 0; i < contentAttrs.length; i += 1) {\n const attr = contentAttrs[i] + contentAttrsValuesToUpdate[i];\n finalContentMeta += i === 0 ? attr : `,${attr}`;\n }\n\n for (let i = 0; i < oldAttrs.length; i += 1) {\n finalContentMeta += `,${oldAttrs[i]}`;\n }\n viewportelement.setAttribute(\"content\", finalContentMeta);\n // It needs to set to empty because setAttribute refresh only when attribute is different.\n viewportelement.setAttribute(\"content\", \"\");\n viewportelement.setAttribute(\"content\", contentAttr);\n } else {\n viewportelement.setAttribute(\"content\", \"initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0\");\n viewportelement.removeAttribute(\"content\");\n }\n };\n\n if (!viewportmeta) {\n viewportmeta = document.createElement(\"meta\");\n document.getElementsByTagName(\"head\")[0].appendChild(viewportmeta);\n setMetaAttrFunc(viewportmeta, contentAttrsToUpdate, contentAttrsValuesToUpdate);\n viewportmeta.remove();\n } else {\n setMetaAttrFunc(viewportmeta, contentAttrsToUpdate, contentAttrsValuesToUpdate);\n }\n }\n\n /**\n * Locks website scroll for mobile devices.\n */\n lockWebsiteScroll() {\n this.websiteBeforeLockParameters = {\n bodyStylePosition: document.body.style.position ? document.body.style.position : \"\",\n bodyStyleOverflow: document.body.style.overflow ? document.body.style.overflow : \"\",\n htmlStyleOverflow: document.documentElement.style.overflow ? document.documentElement.style.overflow : \"\",\n windowScrollX: window.scrollX,\n windowScrollY: window.scrollY,\n };\n }\n\n /**\n * Unlocks website scroll for mobile devices.\n */\n unlockWebsiteScroll() {\n if (this.websiteBeforeLockParameters) {\n document.body.style.position = this.websiteBeforeLockParameters.bodyStylePosition;\n document.body.style.overflow = this.websiteBeforeLockParameters.bodyStyleOverflow;\n document.documentElement.style.overflow = this.websiteBeforeLockParameters.htmlStyleOverflow;\n const { windowScrollX } = this.websiteBeforeLockParameters;\n const { windowScrollY } = this.websiteBeforeLockParameters;\n window.scrollTo(windowScrollX, windowScrollY);\n this.websiteBeforeLockParameters = null;\n }\n }\n\n /**\n * Util function to known if browser is IE11.\n * @returns {Boolean} true if the browser is IE11. false otherwise.\n */\n // eslint-disable-next-line class-methods-use-this\n isIE11() {\n if (\n navigator.userAgent.search(\"Msie/\") >= 0 ||\n navigator.userAgent.search(\"Trident/\") >= 0 ||\n navigator.userAgent.search(\"Edge/\") >= 0\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Returns if the current language type is RTL.\n * @return {Boolean} true if current language is RTL. false otherwise.\n */\n isRTL() {\n if (this.attributes.language === \"ar\" || this.attributes.language === \"he\") {\n return true;\n }\n return this.rtl;\n }\n\n /**\n * Adds a class to all modal ModalDialog DOM elements.\n * @param {String} className - Class name.\n */\n addClass(className) {\n Util.addClass(this.overlay, className);\n Util.addClass(this.titleBar, className);\n Util.addClass(this.overlay, className);\n Util.addClass(this.container, className);\n Util.addClass(this.contentContainer, className);\n Util.addClass(this.stackDiv, className);\n Util.addClass(this.minimizeDiv, className);\n Util.addClass(this.maximizeDiv, className);\n Util.addClass(this.wrapper, className);\n }\n\n /**\n * Remove a class from all modal DOM elements.\n * @param {String} className - Class name.\n */\n removeClass(className) {\n Util.removeClass(this.overlay, className);\n Util.removeClass(this.titleBar, className);\n Util.removeClass(this.overlay, className);\n Util.removeClass(this.container, className);\n Util.removeClass(this.contentContainer, className);\n Util.removeClass(this.stackDiv, className);\n Util.removeClass(this.minimizeDiv, className);\n Util.removeClass(this.maximizeDiv, className);\n Util.removeClass(this.wrapper, className);\n }\n\n /**\n * Create modal dialog for desktop.\n */\n createModalWindowDesktop() {\n this.addClass(\"wrs_modal_desktop\");\n this.stack();\n }\n\n /**\n * Create modal dialog for non android devices.\n */\n createModalWindowAndroid() {\n this.addClass(\"wrs_modal_android\");\n window.addEventListener(\"resize\", this.orientationChangeAndroidSoftkeyboard.bind(this));\n }\n\n /**\n * Create modal dialog for iOS devices.\n */\n createModalWindowIos() {\n this.addClass(\"wrs_modal_ios\");\n // Refresh the size when the orientation is changed.\n window.addEventListener(\"resize\", this.orientationChangeIosSoftkeyboard.bind(this));\n }\n\n /**\n * Restore previous state, position and size of previous stacked modal dialog.\n */\n restoreState() {\n if (this.properties.state === \"maximized\") {\n // Reset states for prevent return to stack state.\n this.maximize();\n } else if (this.properties.state === \"minimized\") {\n // Reset states for prevent return to stack state.\n this.properties.state = this.properties.previousState;\n this.properties.previousState = \"\";\n this.minimize();\n } else {\n this.stack();\n }\n }\n\n /**\n * Stacks the modal object.\n */\n stack() {\n this.properties.previousState = this.properties.state;\n this.properties.state = \"stack\";\n this.removeClass(\"wrs_maximized\");\n this.minimizeDiv.title = StringManager.get(\"minimize\");\n this.removeClass(\"wrs_minimized\");\n this.addClass(\"wrs_stack\");\n\n // Change maximize/minimize icon to minimize icon\n const generalStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minIcon)})`;\n const hoverStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyle);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyle));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyle));\n\n this.restoreModalProperties();\n\n if (typeof this.resizerBR !== \"undefined\" && typeof this.resizerTL !== \"undefined\") {\n this.setResizeButtonsVisibility();\n }\n\n // Need recalculate position of actual modal because window can was changed in fullscreenmode.\n this.recalculateScrollBar();\n this.recalculatePosition();\n this.recalculateScale();\n this.focus();\n }\n\n /**\n * Minimizes the modal object.\n */\n minimize() {\n // Saving width, height, top and bottom parameters to restore when opening.\n this.saveModalProperties();\n this.title.style.cursor = \"pointer\";\n if (this.properties.state === \"minimized\" && this.properties.previousState === \"stack\") {\n this.stack();\n } else if (this.properties.state === \"minimized\" && this.properties.previousState === \"maximized\") {\n this.maximize();\n } else {\n // Setting css to prevent important tag into css style.\n this.container.style.height = \"30px\";\n this.container.style.width = \"250px\";\n this.container.style.bottom = \"0px\";\n this.container.style.right = \"10px\";\n\n this.removeListeners();\n this.properties.previousState = this.properties.state;\n this.properties.state = \"minimized\";\n this.setResizeButtonsVisibility();\n this.minimizeDiv.title = StringManager.get(\"maximize\");\n\n if (Util.containsClass(this.overlay, \"wrs_stack\")) {\n this.removeClass(\"wrs_stack\");\n } else {\n this.removeClass(\"wrs_maximized\");\n }\n this.addClass(\"wrs_minimized\");\n\n // Change minimize icon to maximize icon\n const generalStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(maxIcon)})`;\n const hoverStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(maxHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyle);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyle));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyle));\n }\n }\n\n /**\n * Maximizes the modal object.\n */\n maximize() {\n // Saving width, height, top and bottom parameters to restore when opening.\n this.saveModalProperties();\n if (this.properties.state !== \"maximized\") {\n this.properties.previousState = this.properties.state;\n this.properties.state = \"maximized\";\n }\n // Don't permit resize on maximize mode.\n this.setResizeButtonsVisibility();\n\n if (Util.containsClass(this.overlay, \"wrs_minimized\")) {\n this.minimizeDiv.title = StringManager.get(\"minimize\");\n this.removeClass(\"wrs_minimized\");\n } else if (Util.containsClass(this.overlay, \"wrs_stack\")) {\n this.container.style.left = null;\n this.container.style.top = null;\n this.removeClass(\"wrs_stack\");\n }\n\n this.addClass(\"wrs_maximized\");\n\n // Change maximize icon to minimize icon\n const generalStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minIcon)})`;\n const hoverStyle = `background-size: 10px; background-repeat: no-repeat; background-image: url(data:image/svg+xml;base64,${window.btoa(minHoverIcon)})`;\n this.minimizeDiv.setAttribute(\"style\", generalStyle);\n this.minimizeDiv.addEventListener(\"mouseover\", (e) => (e.target.style = hoverStyle));\n this.minimizeDiv.addEventListener(\"mouseout\", (e) => (e.target.style = generalStyle));\n\n // Set size to 80% screen with a max size.\n this.setSize(parseInt(window.innerHeight * 0.8, 10), parseInt(window.innerWidth * 0.8, 10));\n if (this.container.clientHeight > 700) {\n this.container.style.height = \"700px\";\n }\n if (this.container.clientWidth > 1200) {\n this.container.style.width = \"1200px\";\n }\n\n // Setting modal position in center on screen.\n const { innerHeight } = window;\n const { innerWidth } = window;\n const { offsetHeight } = this.container;\n const { offsetWidth } = this.container;\n const bottom = innerHeight / 2 - offsetHeight / 2;\n const right = innerWidth / 2 - offsetWidth / 2;\n\n this.setPosition(bottom, right);\n this.recalculateScale();\n this.recalculatePosition();\n this.recalculateSize();\n this.focus();\n }\n\n /**\n * Expand again the modal object from a minimized state.\n */\n reExpand() {\n if (this.properties.state === \"minimized\") {\n if (this.properties.previousState === \"maximized\") {\n this.maximize();\n } else {\n this.stack();\n }\n this.title.style.cursor = \"\";\n }\n }\n\n /**\n * Sets modal size.\n * @param {Number} height - Height of the ModalDialog\n * @param {Number} width - Width of the ModalDialog.\n */\n setSize(height, width) {\n this.container.style.height = `${height}px`;\n this.container.style.width = `${width}px`;\n this.recalculateSize();\n }\n\n /**\n * Sets modal position using bottom and right style attributes.\n * @param {number} bottom - bottom attribute.\n * @param {number} right - right attribute.\n */\n setPosition(bottom, right) {\n this.container.style.bottom = `${bottom}px`;\n this.container.style.right = `${right}px`;\n }\n\n /**\n * Saves position and size parameters of and open ModalDialog. This attributes\n * are needed to restore it on re-open.\n */\n saveModalProperties() {\n // Saving values of modal only when modal is in stack state.\n if (this.properties.state === \"stack\") {\n this.properties.position.bottom = parseInt(this.container.style.bottom, 10);\n this.properties.position.right = parseInt(this.container.style.right, 10);\n this.properties.size.width = parseInt(this.container.style.width, 10);\n this.properties.size.height = parseInt(this.container.style.height, 10);\n }\n }\n\n /**\n * Restore ModalDialog position and size parameters.\n */\n restoreModalProperties() {\n if (this.properties.state === \"stack\") {\n // Restoring Bottom and Right values from last modal.\n this.setPosition(this.properties.position.bottom, this.properties.position.right);\n // Restoring Height and Left values from last modal.\n this.setSize(this.properties.size.height, this.properties.size.width);\n }\n }\n\n /**\n * Sets the modal dialog initial size.\n */\n recalculateSize() {\n this.contentContainer.style.height = `${parseInt(this.wrapper.offsetHeight - 50, 10)}px`;\n }\n\n /**\n * Enable or disable visibility of resize buttons in modal window depend on state.\n */\n setResizeButtonsVisibility() {\n if (this.properties.state === \"stack\") {\n this.resizerTL.style.visibility = \"visible\";\n this.resizerBR.style.visibility = \"visible\";\n } else {\n this.resizerTL.style.visibility = \"hidden\";\n this.resizerBR.style.visibility = \"hidden\";\n }\n }\n\n /**\n * Makes an object draggable adding mouse and touch events.\n */\n addListeners() {\n // Button events (maximize, minimize, stack and close).\n this.maximizeDiv.addEventListener(\"click\", this.maximize.bind(this), true);\n this.stackDiv.addEventListener(\"click\", this.stack.bind(this), true);\n this.minimizeDiv.addEventListener(\"click\", this.minimize.bind(this), true);\n this.closeDiv.addEventListener(\"click\", this.cancelAction.bind(this));\n this.maximizeDiv.addEventListener(\n \"keypress\",\n (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n }\n },\n true,\n );\n this.stackDiv.addEventListener(\n \"keypress\",\n (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n e.preventDefault();\n }\n },\n true,\n );\n this.minimizeDiv.addEventListener(\n \"keypress\",\n (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n e.preventDefault();\n }\n },\n true,\n );\n this.closeDiv.addEventListener(\"keypress\", (e) => {\n if (e.key === \"Enter\" || e.key === \" \" || e.keyCode === 13 || e.keyCode === 32) {\n // Handle enter and space.\n e.target.click();\n e.preventDefault();\n }\n });\n this.title.addEventListener(\"click\", this.reExpand.bind(this));\n\n // Overlay events (close).\n this.overlay.addEventListener(\"click\", this.cancelAction.bind(this));\n\n // Mouse events.\n Util.addEvent(window, \"mousedown\", this.startDrag.bind(this));\n Util.addEvent(window, \"mouseup\", this.stopDrag.bind(this));\n Util.addEvent(window, \"mousemove\", this.drag.bind(this));\n Util.addEvent(window, \"resize\", this.onWindowResize.bind(this));\n // Key events.\n Util.addEvent(window, \"keydown\", this.onKeyDown.bind(this));\n }\n\n /**\n * Removes draggable events from an object.\n */\n removeListeners() {\n // Mouse events.\n Util.removeEvent(window, \"mousedown\", this.startDrag);\n Util.removeEvent(window, \"mouseup\", this.stopDrag);\n Util.removeEvent(window, \"mousemove\", this.drag);\n Util.removeEvent(window, \"resize\", this.onWindowResize);\n // Key events.\n Util.removeEvent(window, \"keydown\", this.onKeyDown);\n }\n\n /**\n * Returns mouse or touch coordinates (on touch events ev.ClientX doesn't exists)\n * @param {MouseEvent} mouseEvent - Mouse event.\n * @return {Object} With the X and Y coordinates.\n */\n // eslint-disable-next-line class-methods-use-this\n eventClient(mouseEvent) {\n if (typeof mouseEvent.clientX === \"undefined\" && mouseEvent.changedTouches) {\n const client = {\n X: mouseEvent.changedTouches[0].clientX,\n Y: mouseEvent.changedTouches[0].clientY,\n };\n return client;\n }\n const client = {\n X: mouseEvent.clientX,\n Y: mouseEvent.clientY,\n };\n return client;\n }\n\n /**\n * Start drag function: set the object dragDataObject with the draggable\n * object offsets coordinates.\n * when drag starts (on touchstart or mousedown events).\n * @param {MouseEvent} mouseEvent - Touchstart or mousedown event.\n */\n startDrag(mouseEvent) {\n if (this.properties.state === \"minimized\") {\n return;\n }\n if (mouseEvent.target === this.title) {\n if (typeof this.dragDataObject === \"undefined\" || this.dragDataObject === null) {\n // Save first click mouse point on screen.\n this.dragDataObject = {\n x: this.eventClient(mouseEvent).X,\n y: this.eventClient(mouseEvent).Y,\n };\n // Reset last drag position when start drag.\n this.lastDrag = {\n x: \"0px\",\n y: \"0px\",\n };\n // Init right and bottom values for window modal if it isn't exist.\n if (this.container.style.right === \"\") {\n this.container.style.right = \"0px\";\n }\n if (this.container.style.bottom === \"\") {\n this.container.style.bottom = \"0px\";\n }\n\n // Needed for IE11 for apply disabled mouse events on editor because\n // internet explorer needs a dynamic object to apply this property.\n if (this.isIE11()) {\n // this.iframe.style['position'] = 'relative';\n }\n // Apply class for disable involuntary select text when drag.\n Util.addClass(document.body, \"wrs_noselect\");\n Util.addClass(this.overlay, \"wrs_overlay_active\");\n // Obtain screen limits for prevent overflow.\n this.limitWindow = this.getLimitWindow();\n }\n }\n }\n\n /**\n * Updates dragDataObject with the draggable object coordinates when\n * the draggable object is being moved.\n * @param {MouseEvent} mouseEvent - The mouse event.\n */\n drag(mouseEvent) {\n if (this.dragDataObject) {\n mouseEvent.preventDefault();\n // Calculate max and min between actual mouse position and limit of screeen.\n // It restric the movement of modal into window.\n let limitY = Math.min(this.eventClient(mouseEvent).Y, this.limitWindow.minPointer.y);\n limitY = Math.max(this.limitWindow.maxPointer.y, limitY);\n let limitX = Math.min(this.eventClient(mouseEvent).X, this.limitWindow.minPointer.x);\n limitX = Math.max(this.limitWindow.maxPointer.x, limitX);\n // Subtract limit with first position to obtain relative pixels increment\n // to the anchor point.\n const dragX = `${limitX - this.dragDataObject.x}px`;\n const dragY = `${limitY - this.dragDataObject.y}px`;\n // Save last valid position of modal before window overflow.\n this.lastDrag = {\n x: dragX,\n y: dragY,\n };\n // This move modal with hardware acceleration.\n this.container.style.transform = `translate3d(${dragX},${dragY},0)`;\n }\n if (this.resizeDataObject) {\n const { innerWidth } = window;\n const { innerHeight } = window;\n let limitX = Math.min(this.eventClient(mouseEvent).X, innerWidth - this.scrollbarWidth - 7);\n let limitY = Math.min(this.eventClient(mouseEvent).Y, innerHeight - 7);\n if (limitX < 0) {\n limitX = 0;\n }\n\n if (limitY < 0) {\n limitY = 0;\n }\n\n let scaleMultiplier;\n if (this.leftScale) {\n scaleMultiplier = -1;\n } else {\n scaleMultiplier = 1;\n }\n\n this.container.style.width = `${this.initialWidth + scaleMultiplier * (limitX - this.resizeDataObject.x)}px`;\n this.container.style.height = `${this.initialHeight + scaleMultiplier * (limitY - this.resizeDataObject.y)}px`;\n if (!this.leftScale) {\n if (this.resizeDataObject.x - limitX - this.initialWidth < -580) {\n this.container.style.right = `${this.initialRight - (limitX - this.resizeDataObject.x)}px`;\n } else {\n this.container.style.right = `${this.initialRight + this.initialWidth - 580}px`;\n this.container.style.width = \"580px\";\n }\n if (this.resizeDataObject.y - limitY < this.initialHeight - 338) {\n this.container.style.bottom = `${this.initialBottom - (limitY - this.resizeDataObject.y)}px`;\n } else {\n this.container.style.bottom = `${this.initialBottom + this.initialHeight - 338}px`;\n this.container.style.height = \"338px\";\n }\n }\n this.recalculateScale();\n this.recalculatePosition();\n }\n }\n\n /**\n * Returns the boundaries of actual window to limit modal movement.\n * @return {Object} Object containing mouseX and mouseY coordinates of actual mouse on screen.\n */\n getLimitWindow() {\n // Obtain dimensions of window page.\n const maxWidth = window.innerWidth;\n const maxHeight = window.innerHeight;\n\n // Calculate relative position of mouse point into window.\n const { offsetHeight } = this.container;\n const contStyleBottom = parseInt(this.container.style.bottom, 10);\n const contStyleRight = parseInt(this.container.style.right, 10);\n\n const { pageXOffset } = window;\n const dragY = this.dragDataObject.y;\n const dragX = this.dragDataObject.x;\n\n const offSetToolbarY = offsetHeight + contStyleBottom - (maxHeight - (dragY - pageXOffset));\n const offSetToolbarX = maxWidth - this.scrollbarWidth - (dragX - pageXOffset) - contStyleRight;\n\n // Calculate limits with sizes of window, modal and mouse position.\n const minPointerY = maxHeight - this.container.offsetHeight + offSetToolbarY;\n const maxPointerY = this.title.offsetHeight - (this.title.offsetHeight - offSetToolbarY);\n const minPointerX = maxWidth - offSetToolbarX - this.scrollbarWidth;\n const maxPointerX = this.container.offsetWidth - offSetToolbarX;\n const minPointer = { x: minPointerX, y: minPointerY };\n const maxPointer = { x: maxPointerX, y: maxPointerY };\n return { minPointer, maxPointer };\n }\n\n /**\n * Returns the scrollbar width size of browser\n * @returns {Number} The scrollbar width.\n */\n // eslint-disable-next-line class-methods-use-this\n getScrollBarWidth() {\n // Create a paragraph with full width of page.\n const inner = document.createElement(\"p\");\n inner.style.width = \"100%\";\n inner.style.height = \"200px\";\n\n // Create a hidden div to compare sizes.\n const outer = document.createElement(\"div\");\n outer.style.position = \"absolute\";\n outer.style.top = \"0px\";\n outer.style.left = \"0px\";\n outer.style.visibility = \"hidden\";\n outer.style.width = \"200px\";\n outer.style.height = \"150px\";\n outer.style.overflow = \"hidden\";\n outer.appendChild(inner);\n\n document.body.appendChild(outer);\n const widthOuter = inner.offsetWidth;\n\n // Change type overflow of paragraph for measure scrollbar.\n outer.style.overflow = \"scroll\";\n let widthInner = inner.offsetWidth;\n\n // If measure is the same, we compare with internal div.\n if (widthOuter === widthInner) {\n widthInner = outer.clientWidth;\n }\n document.body.removeChild(outer);\n\n return widthOuter - widthInner;\n }\n\n /**\n * Set the dragDataObject to null.\n */\n stopDrag() {\n // Due to we have multiple events that call this function, we need only to execute\n // the next modifiers one time,\n // when the user stops to drag and dragDataObject is not null (the object to drag is attached).\n if (this.dragDataObject || this.resizeDataObject) {\n // If modal doesn't change, it's not necessary to set position with interpolation.\n this.container.style.transform = \"\";\n if (this.dragDataObject) {\n this.container.style.right = `${parseInt(this.container.style.right, 10) - parseInt(this.lastDrag.x, 10)}px`;\n this.container.style.bottom = `${parseInt(this.container.style.bottom, 10) - parseInt(this.lastDrag.y, 10)}px`;\n }\n // We make focus on editor after drag modal windows to prevent lose focus.\n this.focus();\n // Restore mouse events on iframe.\n // this.iframe.style['pointer-events'] = 'auto';\n document.body.style[\"user-select\"] = \"\";\n // Restore static state of iframe if we use Internet Explorer.\n if (this.isIE11()) {\n // this.iframe.style['position'] = null;\n }\n // Active text select event.\n Util.removeClass(document.body, \"wrs_noselect\");\n Util.removeClass(this.overlay, \"wrs_overlay_active\");\n }\n this.dragDataObject = null;\n this.resizeDataObject = null;\n this.initialWidth = null;\n this.leftScale = null;\n }\n\n /**\n * Recalculates scale for modal when resize browser window.\n */\n onWindowResize() {\n this.recalculateScrollBar();\n this.recalculatePosition();\n this.recalculateScale();\n }\n\n /**\n * Triggers keyboard events:\n * - Tab key tab to go to submit button.\n * - Esc key to close the modal dialog.\n * @param {KeyboardEvent} keyboardEvent - The keyboard event.\n */\n onKeyDown(keyboardEvent) {\n if (keyboardEvent.key !== undefined) {\n // Popupmessage is not oppened.\n if (this.popup.overlayWrapper.style.display !== \"block\") {\n // Code to detect Esc event\n if (keyboardEvent.key === \"Escape\" || keyboardEvent.key === \"Esc\") {\n if (this.properties.open) {\n this.contentManager.onKeyDown(keyboardEvent);\n }\n } else if (keyboardEvent.shiftKey && keyboardEvent.key === \"Tab\") {\n // Code to detect shift Tab event.\n if (document.activeElement === this.cancelButton) {\n this.submitButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else {\n this.contentManager.onKeyDown(keyboardEvent);\n }\n } else if (keyboardEvent.key === \"Tab\") {\n // Code to detect Tab event.\n if (document.activeElement === this.submitButton) {\n this.cancelButton.focus();\n keyboardEvent.stopPropagation();\n keyboardEvent.preventDefault();\n } else {\n this.contentManager.onKeyDown(keyboardEvent);\n }\n }\n } else {\n // Popupmessage oppened.\n this.popup.onKeyDown(keyboardEvent);\n }\n }\n }\n\n /**\n * Recalculating position for modal dialog when the browser is resized.\n */\n recalculatePosition() {\n this.container.style.right = `${Math.min(parseInt(this.container.style.right, 10), window.innerWidth - this.scrollbarWidth - this.container.offsetWidth)}px`;\n if (parseInt(this.container.style.right, 10) < 0) {\n this.container.style.right = \"0px\";\n }\n this.container.style.bottom = `${Math.min(parseInt(this.container.style.bottom, 10), window.innerHeight - this.container.offsetHeight)}px`;\n if (parseInt(this.container.style.bottom, 10) < 0) {\n this.container.style.bottom = \"0px\";\n }\n }\n\n /**\n * Recalculating scale for modal when the browser is resized.\n */\n recalculateScale() {\n let sizeModified = false;\n\n if (parseInt(this.container.style.width, 10) > 580) {\n this.container.style.width = `${Math.min(parseInt(this.container.style.width, 10), window.innerWidth - this.scrollbarWidth)}px`;\n sizeModified = true;\n } else {\n this.container.style.width = \"580px\";\n sizeModified = true;\n }\n\n if (parseInt(this.container.style.height, 10) > 338) {\n this.container.style.height = `${Math.min(parseInt(this.container.style.height, 10), window.innerHeight)}px`;\n sizeModified = true;\n } else {\n this.container.style.height = \"338px\";\n sizeModified = true;\n }\n\n if (sizeModified) {\n this.recalculateSize();\n }\n }\n\n /**\n * Recalculating width of browser scroll bar.\n */\n recalculateScrollBar() {\n this.hasScrollBar = window.innerWidth > document.documentElement.clientWidth;\n if (this.hasScrollBar) {\n this.scrollbarWidth = this.getScrollBarWidth();\n } else {\n this.scrollbarWidth = 0;\n }\n }\n\n /**\n * Hide soft keyboards on iOS devices.\n */\n // eslint-disable-next-line class-methods-use-this\n hideKeyboard() {\n // iOS keyboard can't be detected or hide directly from JavaScript.\n // So, this method simulates that user focus a text input and blur\n // the selection.\n const inputField = document.createElement(\"input\");\n this.container.appendChild(inputField);\n inputField.focus();\n inputField.blur();\n // Is removed to not see it.\n inputField.remove();\n }\n\n /**\n * Focus to contentManager object.\n */\n focus() {\n if (this.contentManager != null && typeof this.contentManager.onFocus !== \"undefined\") {\n this.contentManager.onFocus();\n }\n }\n\n /**\n * Returns true when the device is on portrait mode.\n */\n // eslint-disable-next-line class-methods-use-this\n portraitMode() {\n return window.innerHeight > window.innerWidth;\n }\n\n /**\n * Event handler that change container size when IOS soft keyboard is opened.\n */\n handleOpenedIosSoftkeyboard() {\n if (!this.iosSoftkeyboardOpened && this.iosDivHeight != null && this.iosDivHeight === `auto`) {\n if (this.portraitMode()) {\n this.setContainerHeight(`60${this.iosMeasureUnit}`);\n } else {\n this.setContainerHeight(`35${this.iosMeasureUnit}`);\n }\n }\n this.iosSoftkeyboardOpened = true;\n this.wrapper.style.flexGrow = \"1\";\n }\n\n /**\n * Event handler that change container size when IOS soft keyboard is closed.\n */\n handleClosedIosSoftkeyboard() {\n this.iosSoftkeyboardOpened = false;\n this.wrapper.style.flexGrow = \"1\";\n }\n\n /**\n * Change container sizes when orientation is changed on iOS.\n */\n orientationChangeIosSoftkeyboard() {\n if (this.iosSoftkeyboardOpened) {\n if (this.portraitMode()) {\n this.setContainerHeight(`65${this.iosMeasureUnit}`);\n } else {\n this.setContainerHeight(`45${this.iosMeasureUnit}`);\n }\n } else {\n this.wrapper.style.flexGrow = \"1\";\n }\n }\n\n /**\n * Change container sizes when orientation is changed on Android.\n */\n orientationChangeAndroidSoftkeyboard() {\n this.wrapper.style.flexGrow = \"1\";\n }\n\n /**\n * Set iframe container height.\n * @param {Number} height - New height.\n */\n setContainerHeight(height) {\n this.iosDivHeight = height;\n this.wrapper.style.height = height;\n }\n\n /**\n * Check content of editor before close action.\n */\n showPopUpMessage() {\n if (this.properties.state === \"minimized\") {\n this.stack();\n }\n this.popup.show();\n }\n\n /**\n * Sets the title of the modal dialog.\n * @param {String} title - Modal dialog title.\n */\n setTitle(title) {\n this.title.innerHTML = title;\n }\n\n /**\n * Returns the id of an element, adding the instance number to\n * the element class name:\n * className --> className[idNumber]\n * @param {String} className - The element class name.\n * @returns {String} A string appending the instance id to the className.\n */\n getElementId(className) {\n return `${className}[${this.instanceId}]`;\n }\n}\n","/* eslint-disable */\nvar polyfills;\nexport default polyfills;\n\n// Polyfills.\n/*! http://mths.be/codepointat v0.1.0 by @mathias */\nif (!String.prototype.codePointAt) {\n (function () {\n \"use strict\"; // needed to support `apply`/`call` with `undefined`/`null`\n var codePointAt = function (position) {\n if (this == null) {\n throw TypeError();\n }\n var string = String(this);\n var size = string.length;\n // `ToInteger`\n var index = position ? Number(position) : 0;\n if (index != index) {\n // better `isNaN`\n index = 0;\n }\n // Account for out-of-bounds indices:\n if (index < 0 || index >= size) {\n return undefined;\n }\n // Get the first code unit\n var first = string.charCodeAt(index);\n var second;\n if (\n // check if it’s the start of a surrogate pair\n first >= 0xd800 &&\n first <= 0xdbff && // high surrogate\n size > index + 1 // there is a next code unit\n ) {\n second = string.charCodeAt(index + 1);\n if (second >= 0xdc00 && second <= 0xdfff) {\n // low surrogate\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - 0xd800) * 0x400 + second - 0xdc00 + 0x10000;\n }\n }\n return first;\n };\n if (Object.defineProperty) {\n Object.defineProperty(String.prototype, \"codePointAt\", {\n value: codePointAt,\n configurable: true,\n writable: true,\n });\n } else {\n String.prototype.codePointAt = codePointAt;\n }\n })();\n}\n\n// Object.assign polyfill.\nif (typeof Object.assign != \"function\") {\n // Must be writable: true, enumerable: false, configurable: true\n Object.defineProperty(Object, \"assign\", {\n value: function assign(target, varArgs) {\n // .length of function is 2\n \"use strict\";\n if (target == null) {\n // TypeError if undefined or null\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n\n var to = Object(target);\n\n for (var index = 1; index < arguments.length; index++) {\n var nextSource = arguments[index];\n\n if (nextSource != null) {\n // Skip over if undefined or null\n for (var nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n return to;\n },\n writable: true,\n configurable: true,\n });\n}\n\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\nif (!Array.prototype.includes) {\n Object.defineProperty(Array.prototype, \"includes\", {\n value: function (searchElement, fromIndex) {\n if (this == null) {\n throw new TypeError('\"this\" s null or is not defined');\n }\n\n // 1. Let O be ? ToObject(this value).\n var o = Object(this);\n\n // 2. Let len be ? ToLength(? Get(O, \"length\")).\n var len = o.length >>> 0;\n\n // 3. if len is 0, return false.\n if (len === 0) {\n return false;\n }\n\n // 4. Let n be ? ToInteger(fromIndex).\n // (if fromIndex is undefinedo, this step generates the value 0.)\n var n = fromIndex | 0;\n\n // 5. if n ≥ 0, then\n // a. Let k be n.\n // 6. Else n < 0,\n // a. Let k be len + n.\n // b. if k < 0, let k be 0.\n var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n function sameValueZero(x, y) {\n return x === y || (typeof x === \"number\" && typeof y === \"number\" && isNaN(x) && isNaN(y));\n }\n\n // 7. Repeat while k < len\n while (k < len) {\n // a. let element k be the result of ? Get(O, ! ToString(k)).\n // b. if SameValueZero(searchElement, elementK) is true, return true.\n if (sameValueZero(o[k], searchElement)) {\n return true;\n }\n // c. Increase k by 1.\n k++;\n }\n\n // 8. Return false\n return false;\n },\n });\n}\n\nif (!String.prototype.includes) {\n String.prototype.includes = function (search, start) {\n \"use strict\";\n\n if (search instanceof RegExp) {\n throw TypeError(\"first argument must not be a RegExp\");\n }\n if (start === undefined) {\n start = 0;\n }\n return this.indexOf(search, start) !== -1;\n };\n}\n\nif (!String.prototype.startsWith) {\n Object.defineProperty(String.prototype, \"startsWith\", {\n value: function (search, rawPos) {\n var pos = rawPos > 0 ? rawPos | 0 : 0;\n return this.substring(pos, pos + search.length) === search;\n },\n });\n}\n","import Parser from \"./parser\";\nimport Util from \"./util\";\nimport StringManager from \"./stringmanager\";\nimport ContentManager from \"./contentmanager\";\nimport Latex from \"./latex\";\nimport MathML from \"./mathml\";\nimport CustomEditors from \"./customeditors\";\nimport Configuration from \"./configuration\";\nimport jsProperties from \"./jsvariables\";\nimport Event from \"./event\";\nimport Listeners from \"./listeners\";\nimport Image from \"./image\";\nimport ServiceProvider from \"./serviceprovider\";\nimport ModalDialog from \"./modal\";\nimport Telemeter from \"./telemeter\";\nimport \"./polyfills\";\nimport \"../styles/styles.css\";\n\n/**\n * @typedef {Object} CoreProperties\n * @property {ServiceProviderProperties} serviceProviderProperties\n * - The ServiceProvider class properties. *\n */\nexport default class Core {\n /**\n * @classdesc\n * This class represents MathType integration Core, managing the following:\n * - Integration initialization.\n * - Event managing.\n * - Insertion of formulas into the edit area.\n * ```js\n * let core = new Core();\n * core.addListener(listener);\n * core.language = 'en';\n *\n * // Initializing Core class.\n * core.init(configurationService);\n * ```\n * @constructs\n * Core constructor.\n * @param {CoreProperties}\n */\n constructor(coreProperties) {\n /**\n * Language. Needed for accessibility and locales. 'en' by default.\n * @type {String}\n */\n this.language = \"en\";\n\n /**\n * Edit mode, 'images' by default. Admits the following values:\n * - images\n * - latex\n * @type {String}\n */\n this.editMode = \"images\";\n\n /**\n * Modal dialog instance.\n * @type {ModalDialog}\n */\n this.modalDialog = null;\n\n /**\n * The instance of {@link CustomEditors}. By default\n * the only custom editor is the Chemistry editor.\n * @type {CustomEditors}\n */\n this.customEditors = new CustomEditors();\n\n /**\n * Chemistry editor.\n * @type {CustomEditor}\n */\n const chemEditorParams = {\n name: \"Chemistry\",\n toolbar: \"chemistry\",\n icon: \"chem.png\",\n confVariable: \"chemEnabled\",\n title: \"ChemType\",\n tooltip: \"Insert a chemistry formula - ChemType\", // TODO: Localize tooltip.\n };\n\n this.customEditors.addEditor(\"chemistry\", chemEditorParams);\n\n /**\n * Environment properties. This object contains data about the integration platform.\n * @typedef IntegrationEnvironment\n * @property {String} IntegrationEnvironment.editor - Editor name. For example the HTML editor.\n * @property {String} IntegrationEnvironment.mode - Integration save mode.\n * @property {String} IntegrationEnvironment.version - Integration version.\n *\n */\n\n /**\n * The environment properties object.\n * @type {IntegrationEnvironment}\n */\n this.environment = {};\n\n /**\n * @typedef EditionProperties\n * @property {Boolean} editionProperties.isNewElement - True if the formula is a new one.\n * False otherwise.\n * @property {HTMLImageElement} editionProperties.temporalImage- The image element.\n * Null if the formula is new.\n * @property {Range} editionProperties.latexRange - Tha range that contains the LaTeX formula.\n * @property {Range} editionProperties.range - The range that contains the image element.\n * @property {String} editionProperties.editMode - The edition mode. 'images' by default.\n */\n\n /**\n * The properties of the current edition process.\n * @type {EditionProperties}\n */\n this.editionProperties = {};\n\n this.editionProperties.isNewElement = true;\n this.editionProperties.temporalImage = null;\n this.editionProperties.latexRange = null;\n this.editionProperties.range = null;\n this.editionProperties.editionStartTime = null;\n\n /**\n * The {@link IntegrationModel} instance.\n * @type {IntegrationModel}\n */\n this.integrationModel = null;\n\n /**\n * The {@link ContentManager} instance.\n * @type {ContentManager}\n */\n this.contentManager = null;\n\n /**\n * The current browser.\n * @type {String}\n */\n this.browser = (() => {\n const ua = navigator.userAgent;\n let browser = \"none\";\n if (ua.search(\"Edge/\") >= 0) {\n browser = \"EDGE\";\n } else if (ua.search(\"Chrome/\") >= 0) {\n browser = \"CHROME\";\n } else if (ua.search(\"Trident/\") >= 0) {\n browser = \"IE\";\n } else if (ua.search(\"Firefox/\") >= 0) {\n browser = \"FIREFOX\";\n } else if (ua.search(\"Safari/\") >= 0) {\n browser = \"SAFARI\";\n }\n return browser;\n })();\n\n /**\n * Plugin listeners.\n * @type {Array.<Object>}\n */\n this.listeners = new Listeners();\n\n /**\n * Service provider properties.\n * @type {ServiceProviderProperties}\n */\n this.serviceProviderProperties = {};\n if (\"serviceProviderProperties\" in coreProperties) {\n this.serviceProviderProperties = coreProperties.serviceProviderProperties;\n } else {\n throw new Error(\"serviceProviderProperties property missing.\");\n }\n }\n\n /**\n * Static property.\n * Core listeners.\n * @private\n * @type {Listeners}\n */\n static get globalListeners() {\n return Core._globalListeners;\n }\n\n /**\n * Static property setter.\n * Set core listeners.\n * @param {Listeners} value - The property value.\n * @ignore\n */\n static set globalListeners(value) {\n Core._globalListeners = value;\n }\n\n /**\n * Core state. Says if it was loaded previously.\n * True when Core.init was called. Otherwise, false.\n * @private\n * @type {Boolean}\n */\n static get initialized() {\n return Core._initialized;\n }\n\n /**\n * Core state. Says if it was loaded previously.\n * @param {Boolean} value - True to say that Core.init was called. Otherwise, false.\n * @ignore\n */\n static set initialized(value) {\n Core._initialized = value;\n }\n\n /**\n * Sets the {@link Core.integrationModel} property.\n * @param {IntegrationModel} integrationModel - The {@link IntegrationModel} property.\n */\n setIntegrationModel(integrationModel) {\n this.integrationModel = integrationModel;\n }\n\n /**\n * Sets the {@link Core.environment} property.\n * @param {IntegrationEnvironment} integrationEnvironment -\n * The {@link IntegrationEnvironment} object.\n */\n setEnvironment(integrationEnvironment) {\n if (\"editor\" in integrationEnvironment) {\n this.environment.editor = integrationEnvironment.editor;\n }\n if (\"mode\" in integrationEnvironment) {\n this.environment.mode = integrationEnvironment.mode;\n }\n if (\"version\" in integrationEnvironment) {\n this.environment.version = integrationEnvironment.version;\n }\n }\n\n /**\n * Sets the custom headers added on editor requests if contentManager isn't undefined.\n * @returns {Object} headers - key value headers.\n */\n setHeaders(headers) {\n const headerObject = this?.contentManager?.setCustomHeaders(headers) || headers;\n Configuration.set(\"customHeaders\", headerObject);\n }\n\n /**\n * Returns the current {@link ModalDialog} instance.\n * @returns {ModalDialog} The current {@link ModalDialog} instance.\n */\n getModalDialog() {\n return this.modalDialog;\n }\n\n /**\n * Inits the {@link Core} class, doing the following:\n * - Calls asynchronously configuration service, retrieving the backend configuration in a JSON.\n * - Updates {@link Configuration} class with the previous configuration properties.\n * - Updates the {@link ServiceProvider} class using the configuration service path as reference.\n * - Loads language strings.\n * - Fires onLoad event.\n * @param {Object} serviceParameters - Service parameters.\n */\n init() {\n if (!Core.initialized) {\n const serviceProviderListener = Listeners.newListener(\"onInit\", () => {\n const jsConfiguration = ServiceProvider.getService(\"configurationjs\", \"\", \"get\");\n const jsonConfiguration = JSON.parse(jsConfiguration);\n Configuration.addConfiguration(jsonConfiguration);\n // Adding JavaScript (not backend) configuration variables.\n Configuration.addConfiguration(jsProperties);\n // Fire 'onLoad' event:\n // All integration must listen this event in order to know if the plugin\n // has been properly loaded.\n StringManager.language = this.language;\n this.listeners.fire(\"onLoad\", {});\n });\n\n ServiceProvider.addListener(serviceProviderListener);\n ServiceProvider.init(this.serviceProviderProperties);\n\n Core.initialized = true;\n } else {\n // Case when there are more than two editor instances.\n // After the first editor all the other editors don't need to load any file or service.\n this.listeners.fire(\"onLoad\", {});\n }\n }\n\n /**\n * Adds a {@link Listener} to the current instance of the {@link Core} class.\n * @param {Listener} listener - The listener object.\n */\n addListener(listener) {\n this.listeners.add(listener);\n }\n\n /**\n * Adds the global {@link Listener} instance to {@link Core} class.\n * @param {Listener} listener - The event listener to be added.\n * @static\n */\n static addGlobalListener(listener) {\n Core.globalListeners.add(listener);\n }\n\n beforeUpdateFormula(mathml, wirisProperties) {\n /**\n * This event is fired before updating the formula.\n * @type {Object}\n * @property {String} mathml - MathML to be transformed.\n * @property {String} editMode - Edit mode.\n * @property {Object} wirisProperties - Extra attributes for the formula.\n * @property {String} language - Formula language.\n */\n const beforeUpdateEvent = new Event();\n\n beforeUpdateEvent.mathml = mathml;\n\n // Cloning wirisProperties object\n // We don't want wirisProperties object modified.\n beforeUpdateEvent.wirisProperties = {};\n\n if (wirisProperties != null) {\n Object.keys(wirisProperties).forEach((attr) => {\n beforeUpdateEvent.wirisProperties[attr] = wirisProperties[attr];\n });\n }\n\n // Read only.\n beforeUpdateEvent.language = this.language;\n beforeUpdateEvent.editMode = this.editMode;\n\n if (this.listeners.fire(\"onBeforeFormulaInsertion\", beforeUpdateEvent)) {\n return {};\n }\n\n if (Core.globalListeners.fire(\"onBeforeFormulaInsertion\", beforeUpdateEvent)) {\n return {};\n }\n\n return {\n mathml: beforeUpdateEvent.mathml,\n wirisProperties: beforeUpdateEvent.wirisProperties,\n };\n }\n\n /**\n * Converts a MathML into it's correspondent image and inserts the image is\n * inserted in a HTMLElement target by creating\n * a new image or updating an existing one.\n * @param {HTMLElement} focusElement - The HTMLElement to be focused after the insertion.\n * @param {Window} windowTarget - The window element where the editable content is.\n * @param {String} mathml - The MathML.\n * @param {Array.<Object>} wirisProperties - The extra attributes for the formula.\n * @returns {ReturnObject} - Object with the information of the node or latex to insert.\n */\n insertFormula(focusElement, windowTarget, mathml, wirisProperties) {\n /**\n * It is the object with the information of the node or latex to insert.\n * @typedef ReturnObject\n * @property {Node} [node] - The DOM node to insert.\n * @property {String} [latex] - The latex to insert.\n */\n const returnObject = {};\n\n if (!mathml) {\n this.insertElementOnSelection(null, focusElement, windowTarget);\n } else if (this.editMode === \"latex\") {\n returnObject.latex = Latex.getLatexFromMathML(mathml);\n // this.integrationModel.getNonLatexNode is an integration wrapper\n // to have special behaviours for nonLatex.\n // Not all the integrations have special behaviours for nonLatex.\n if (!!this.integrationModel.fillNonLatexNode && !returnObject.latex) {\n const afterUpdateEvent = new Event();\n afterUpdateEvent.editMode = this.editMode;\n afterUpdateEvent.windowTarget = windowTarget;\n afterUpdateEvent.focusElement = focusElement;\n afterUpdateEvent.latex = returnObject.latex;\n this.integrationModel.fillNonLatexNode(afterUpdateEvent, windowTarget, mathml);\n } else {\n returnObject.node = windowTarget.document.createTextNode(`$$${returnObject.latex}$$`);\n }\n this.insertElementOnSelection(returnObject.node, focusElement, windowTarget);\n } else {\n returnObject.node = Parser.mathmlToImgObject(windowTarget.document, mathml, wirisProperties, this.language);\n\n this.insertElementOnSelection(returnObject.node, focusElement, windowTarget);\n }\n\n return returnObject;\n }\n\n afterUpdateFormula(focusElement, windowTarget, node, latex) {\n /**\n * This event is fired after update the formula.\n * @type {Event}\n * @param {String} editMode - edit mode.\n * @param {Object} windowTarget - target window.\n * @param {Object} focusElement - target element to be focused after update.\n * @param {String} latex - LaTeX generated by the formula (editMode=latex).\n * @param {Object} node - node generated after update the formula (text if LaTeX img otherwise).\n */\n const afterUpdateEvent = new Event();\n afterUpdateEvent.editMode = this.editMode;\n afterUpdateEvent.windowTarget = windowTarget;\n afterUpdateEvent.focusElement = focusElement;\n afterUpdateEvent.node = node;\n afterUpdateEvent.latex = latex;\n\n if (this.listeners.fire(\"onAfterFormulaInsertion\", afterUpdateEvent)) {\n return {};\n }\n\n if (Core.globalListeners.fire(\"onAfterFormulaInsertion\", afterUpdateEvent)) {\n return {};\n }\n\n return {};\n }\n\n /**\n * Sets the caret after a given Node and set the focus to the owner document.\n * @param {Node} node - The Node element.\n */\n placeCaretAfterNode(node) {\n if (node === null) return;\n\n this.integrationModel.getSelection();\n const nodeDocument = node.ownerDocument;\n if (typeof nodeDocument.getSelection !== \"undefined\" && !!node.parentElement) {\n const range = nodeDocument.createRange();\n range.setStartAfter(node);\n range.collapse(true);\n const selection = nodeDocument.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n nodeDocument.body.focus();\n }\n }\n\n /**\n * Replaces a Selection object with an HTMLElement.\n * @param {HTMLElement} element - The HTMLElement to replace the selection.\n * @param {HTMLElement} focusElement - The HTMLElement to be focused after the replace.\n * @param {Window} windowTarget - The window target.\n */\n insertElementOnSelection(element, focusElement, windowTarget) {\n let mathmlOrigin = null;\n if (this.editionProperties.isNewElement) {\n if (element) {\n if (focusElement.type === \"textarea\") {\n Util.updateTextArea(focusElement, element.textContent);\n } else if (document.selection && document.getSelection === 0) {\n let range = windowTarget.document.selection.createRange();\n windowTarget.document.execCommand(\"InsertImage\", false, element.src);\n\n if (!(\"parentElement\" in range)) {\n windowTarget.document.execCommand(\"delete\", false);\n range = windowTarget.document.selection.createRange();\n windowTarget.document.execCommand(\"InsertImage\", false, element.src);\n }\n\n if (\"parentElement\" in range) {\n const temporalObject = range.parentElement();\n\n if (temporalObject.nodeName.toUpperCase() === \"IMG\") {\n temporalObject.parentNode.replaceChild(element, temporalObject);\n } else {\n // IE9 fix: parentNode() does not return the IMG node,\n // returns the parent DIV node. In IE < 9, pasteHTML does not work well.\n range.pasteHTML(Util.createObjectCode(element));\n }\n }\n } else {\n let range = null;\n // In IE is needed keep the range due to after focus the modal window\n // it can't be retrieved the last selection.\n if (this.editionProperties.range) {\n ({ range } = this.editionProperties);\n this.editionProperties.range = null;\n } else {\n const editorSelection = this.integrationModel.getSelection();\n range = editorSelection.getRangeAt(0);\n }\n\n // Delete if something was surrounded.\n range.deleteContents();\n\n let node = range.startContainer;\n const position = range.startOffset;\n\n if (node.nodeType === 3) {\n // TEXT_NODE.\n node = node.splitText(position);\n node.parentNode.insertBefore(element, node);\n } else if (node.nodeType === 1) {\n // ELEMENT_NODE.\n node.insertBefore(element, node.childNodes[position]);\n }\n\n this.placeCaretAfterNode(element);\n }\n } else if (focusElement.type === \"textarea\") {\n focusElement.focus();\n } else {\n const editorSelection = this.integrationModel.getSelection();\n editorSelection.removeAllRanges();\n\n if (this.editionProperties.range) {\n const { range } = this.editionProperties;\n this.editionProperties.range = null;\n editorSelection.addRange(range);\n }\n }\n } else if (this.editionProperties.latexRange) {\n if (document.selection && document.getSelection === 0) {\n this.editionProperties.isNewElement = true;\n this.editionProperties.latexRange.select();\n this.insertElementOnSelection(element, focusElement, windowTarget);\n } else {\n this.editionProperties.latexRange.deleteContents();\n this.editionProperties.latexRange.insertNode(element);\n this.placeCaretAfterNode(element);\n }\n } else if (focusElement.type === \"textarea\") {\n let item;\n // Wrapper for some integrations that can have special behaviours to show latex.\n if (typeof this.integrationModel.getSelectedItem !== \"undefined\") {\n item = this.integrationModel.getSelectedItem(focusElement, false);\n } else {\n item = Util.getSelectedItemOnTextarea(focusElement);\n }\n Util.updateExistingTextOnTextarea(focusElement, element.textContent, item.startPosition, item.endPosition);\n } else {\n mathmlOrigin = this.editionProperties.temporalImage?.dataset.mathml;\n if (element && element.nodeName.toLowerCase() === \"img\") {\n // Editor empty, formula has been erased on edit.\n // There are editors (e.g: CKEditor) that put attributes in images.\n // We don't allow that behaviour in our images.\n Image.removeImgDataAttributes(this.editionProperties.temporalImage);\n // Clone is needed to maintain event references to temporalImage.\n Image.clone(element, this.editionProperties.temporalImage);\n } else {\n this.editionProperties.temporalImage.remove();\n }\n this.placeCaretAfterNode(this.editionProperties.temporalImage);\n }\n\n // Build the telemeter payload separated to delete null/undefined entries.\n const mathml = element?.dataset?.mathml;\n const payload = {\n mathml_origin: mathmlOrigin ? MathML.safeXmlDecode(mathmlOrigin) : mathmlOrigin,\n mathml: mathml ? MathML.safeXmlDecode(mathml) : mathml,\n elapsed_time: Date.now() - this.editionProperties.editionStartTime,\n editor_origin: null, // TODO read formula to find out whether it comes from Oxygen Desktop\n toolbar: this.modalDialog.contentManager.toolbar,\n size: mathml?.length,\n };\n\n // Remove the desired null keys.\n Object.keys(payload).forEach((key) => {\n if (key === \"mathml_origin\" || key === \"editor_origin\") !payload[key] ? delete payload[key] : {};\n });\n\n // Call Telemetry service to track the event.\n try {\n Telemeter.telemeter.track(\"INSERTED_FORMULA\", {\n ...payload,\n });\n } catch (error) {\n console.error(\"Error tracking INSERTED_FORMULA\", error);\n }\n }\n\n /**\n * Opens a modal dialog containing MathType editor..\n * @param {HTMLElement} target - The target HTMLElement where formulas should be inserted.\n * @param {Boolean} isIframe - True if the target HTMLElement is an iframe. False otherwise.\n */\n openModalDialog(target, isIframe) {\n // Count the time since the editor is open\n this.editionProperties.editionStartTime = Date.now();\n\n // Textarea elements don't have normal document ranges. It only accepts latex edit.\n this.editMode = \"images\";\n\n // In IE is needed keep the range due to after focus the modal window\n // it can't be retrieved the last selection.\n try {\n if (isIframe) {\n // Is needed focus the target first.\n target.contentWindow.focus();\n const selection = target.contentWindow.getSelection();\n this.editionProperties.range = selection.getRangeAt(0);\n } else {\n // Is needed focus the target first.\n target.focus();\n const selection = getSelection();\n this.editionProperties.range = selection.getRangeAt(0);\n }\n } catch (e) {\n this.editionProperties.range = null;\n }\n\n if (isIframe === undefined) {\n isIframe = true;\n }\n\n this.editionProperties.latexRange = null;\n\n if (target) {\n let selectedItem;\n if (typeof this.integrationModel.getSelectedItem !== \"undefined\") {\n selectedItem = this.integrationModel.getSelectedItem(target, isIframe);\n } else {\n selectedItem = Util.getSelectedItem(target, isIframe);\n }\n\n // Check LaTeX if and only if the node is a text node (nodeType==3).\n if (selectedItem) {\n // Case when image was selected and button pressed.\n if (!selectedItem.caretPosition && Util.containsClass(selectedItem.node, Configuration.get(\"imageClassName\"))) {\n this.editionProperties.temporalImage = selectedItem.node;\n this.editionProperties.isNewElement = false;\n } else if (selectedItem.node.nodeType === 3) {\n // If it's a text node means that editor is working with LaTeX.\n if (this.integrationModel.getMathmlFromTextNode) {\n // If integration has this function it isn't set range due to we don't\n // know if it will be put into a textarea as a text or image.\n const mathml = this.integrationModel.getMathmlFromTextNode(selectedItem.node, selectedItem.caretPosition);\n if (mathml) {\n this.editMode = \"latex\";\n this.editionProperties.isNewElement = false;\n this.editionProperties.temporalImage = document.createElement(\"img\");\n this.editionProperties.temporalImage.setAttribute(\n Configuration.get(\"imageMathmlAttribute\"),\n MathML.safeXmlEncode(mathml),\n );\n }\n } else {\n const latexResult = Latex.getLatexFromTextNode(selectedItem.node, selectedItem.caretPosition);\n if (latexResult) {\n const mathml = Latex.getMathMLFromLatex(latexResult.latex);\n this.editMode = \"latex\";\n this.editionProperties.isNewElement = false;\n this.editionProperties.temporalImage = document.createElement(\"img\");\n this.editionProperties.temporalImage.setAttribute(\n Configuration.get(\"imageMathmlAttribute\"),\n MathML.safeXmlEncode(mathml),\n );\n const windowTarget = isIframe ? target.contentWindow : window;\n\n if (target.tagName.toLowerCase() !== \"textarea\") {\n if (document.selection) {\n let leftOffset = 0;\n let previousNode = latexResult.startNode.previousSibling;\n\n while (previousNode) {\n leftOffset += Util.getNodeLength(previousNode);\n previousNode = previousNode.previousSibling;\n }\n\n this.editionProperties.latexRange = windowTarget.document.selection.createRange();\n this.editionProperties.latexRange.moveToElementText(latexResult.startNode.parentNode);\n this.editionProperties.latexRange.move(\"character\", leftOffset + latexResult.startPosition);\n this.editionProperties.latexRange.moveEnd(\"character\", latexResult.latex.length + 4); // Plus 4 for the '$$' characters.\n } else {\n this.editionProperties.latexRange = windowTarget.document.createRange();\n this.editionProperties.latexRange.setStart(latexResult.startNode, latexResult.startPosition);\n this.editionProperties.latexRange.setEnd(latexResult.endNode, latexResult.endPosition);\n }\n }\n }\n }\n }\n } else if (target.tagName.toLowerCase() === \"textarea\") {\n // By default editMode is 'images', but when target is a textarea it needs to be 'latex'.\n this.editMode = \"latex\";\n }\n }\n\n // Setting an object with the editor parameters.\n // Editor parameters can be customized in several ways:\n // 1 - editorAttributes: Contains the default editor attributes,\n // usually the metrics in a comma separated string. Always exists.\n // 2 - editorParameters: Object containing custom editor parameters.\n // These parameters are defined in the backend. So they affects all integration instances.\n\n // The backend send the default editor attributes in a coma separated\n // with the following structure: key1=value1,key2=value2...\n const defaultEditorAttributesArray = Configuration.get(\"editorAttributes\").split(\", \");\n const defaultEditorAttributes = {};\n for (let i = 0, len = defaultEditorAttributesArray.length; i < len; i += 1) {\n const tempAttribute = defaultEditorAttributesArray[i].split(\"=\");\n const key = tempAttribute[0];\n const value = tempAttribute[1];\n defaultEditorAttributes[key] = value;\n }\n // Custom editor parameters.\n const editorAttributes = {\n language: this.language, // Default language value\n };\n // Editor parameters in backend, usually configuration.ini.\n const serverEditorParameters = Configuration.get(\"editorParameters\");\n // Editor parameters through JavaScript configuration.\n const clientEditorParameters = this.integrationModel.editorParameters;\n Object.assign(editorAttributes, defaultEditorAttributes, serverEditorParameters);\n Object.assign(editorAttributes, defaultEditorAttributes, clientEditorParameters);\n\n // Now, update backwards: if user has set a custom language, pass that back to core properties\n this.language = editorAttributes.language;\n StringManager.language = this.language;\n\n editorAttributes.rtl = this.integrationModel.rtl;\n\n const customHeaders = Configuration.get(\"customHeaders\");\n // This is not being used in the code, we are keeping it just in case it's needed.\n // We check if it is a string since we have a setter that will make the customHeaders an object. And we do the conversion for the case when we get the headers from the backend.\n editorAttributes.customHeaders =\n typeof customHeaders === \"string\" ? Util.convertStringToObject(customHeaders) : customHeaders;\n\n const contentManagerAttributes = {};\n contentManagerAttributes.editorAttributes = editorAttributes;\n contentManagerAttributes.language = this.language;\n contentManagerAttributes.customEditors = this.customEditors;\n contentManagerAttributes.environment = this.environment;\n\n if (this.modalDialog == null) {\n this.modalDialog = new ModalDialog(editorAttributes);\n this.contentManager = new ContentManager(contentManagerAttributes);\n // When an instance of ContentManager is created we need to wait until\n // the ContentManager is ready by listening 'onLoad' event.\n const listener = Listeners.newListener(\"onLoad\", () => {\n this.contentManager.dbclick = this.editionProperties.dbclick;\n this.contentManager.isNewElement = this.editionProperties.isNewElement;\n if (this.editionProperties.temporalImage != null) {\n const mathML = MathML.safeXmlDecode(\n this.editionProperties.temporalImage.getAttribute(Configuration.get(\"imageMathmlAttribute\")),\n );\n this.contentManager.mathML = mathML;\n }\n });\n this.contentManager.addListener(listener);\n this.contentManager.init();\n this.modalDialog.setContentManager(this.contentManager);\n this.contentManager.setModalDialogInstance(this.modalDialog);\n } else {\n this.contentManager.dbclick = this.editionProperties.dbclick;\n this.contentManager.isNewElement = this.editionProperties.isNewElement;\n if (this.editionProperties.temporalImage != null) {\n const mathML = MathML.safeXmlDecode(\n this.editionProperties.temporalImage.getAttribute(Configuration.get(\"imageMathmlAttribute\")),\n );\n this.contentManager.mathML = mathML;\n }\n }\n this.contentManager.setIntegrationModel(this.integrationModel);\n this.modalDialog.open();\n }\n\n /**\n * Returns the {@link CustomEditors} instance.\n * @return {CustomEditors} The current {@link CustomEditors} instance.\n */\n getCustomEditors() {\n return this.customEditors;\n }\n}\n\n/**\n * Core static listeners.\n * @type {Listeners}\n * @private\n */\nCore._globalListeners = new Listeners();\n\n/**\n * Resources state. Says if they were loaded or not.\n * @type {Boolean}\n * @private\n */\nCore._initialized = false;\n","// eslint-disable-next-line no-unused-vars, import/named\nimport Core from \"./core.src\";\nimport Image from \"./image\";\nimport Listeners from \"./listeners\";\nimport Util from \"./util\";\nimport Configuration from \"./configuration\";\nimport ServiceProvider from \"./serviceprovider\";\nimport Telemeter from \"./telemeter\";\nimport warnIcon from \"../styles/icons/general/warn_icon.svg\"; //eslint-disable-line\n\n/**\n * @typedef {Object} IntegrationModelProperties\n * @property {string} configurationService - Configuration service path.\n * This parameter is needed to determine all services paths.\n * @property {HTMLElement} integrationModelProperties.target - HTML target.\n * @property {string} integrationModelProperties.scriptName - Integration script name.\n * Usually the name of the integration script.\n * @property {Object} integrationModelProperties.environment - integration environment properties.\n * @property {Object} [integrationModelProperties.callbackMethodArguments] - object containing\n * callback method arguments.\n * @property {string} [integrationModelProperties.version] - integration version number.\n * @property {Object} [integrationModelProperties.editorObject] - object containing\n * the integration editor instance.\n * @property {boolean} [integrationModelProperties.rtl] - true if the editor is in RTL mode.\n * false otherwise.\n * @property {ServiceProviderProperties} [integrationModelProperties.serviceProviderProperties]\n * - The service parameters.\n * @property {Object} [integrationModelProperties.integrationParameters]\n * - Overwritten integration parameters.\n */\n\nexport default class IntegrationModel {\n /**\n * @classdesc\n * This class represents an integration model, allowing the integration script to\n * communicate with Core class. Each integration must extend this class.\n * @constructs\n * @param {IntegrationModelProperties} integrationModelProperties\n */\n constructor(integrationModelProperties) {\n /**\n * Language. Needed for accessibility and locales. English by default.\n */\n this.language = \"en\";\n\n /**\n * Service parameters\n * @type {ServiceProviderProperties}\n */\n this.serviceProviderProperties = integrationModelProperties.serviceProviderProperties ?? {};\n\n /**\n * Configuration service path. The integration service is needed by Core class to\n * load all the backend configuration into the frontend and also to create the paths\n * of all services (all services lives in the same route). Mandatory property.\n */\n this.configurationService = \"\";\n if (\"configurationService\" in integrationModelProperties) {\n this.serviceProviderProperties.URI = integrationModelProperties.configurationService;\n console.warn(\"Deprecated property configurationService. Use serviceParameters on instead.\", [\n integrationModelProperties.configurationService,\n ]);\n }\n\n /**\n * Plugin version. Needed to stats and caching.\n * @type {string}\n */\n this.version = \"version\" in integrationModelProperties ? integrationModelProperties.version : \"\";\n\n /**\n * DOM target in which the plugin works. Needed to associate events, insert formulas, etc.\n * Mandatory property.\n */\n this.target = null;\n if (\"target\" in integrationModelProperties) {\n this.target = integrationModelProperties.target;\n } else {\n throw new Error(\"IntegrationModel constructor error: target property missed.\");\n }\n\n /**\n * Integration script name. Needed to know the plugin path.\n */\n if (\"scriptName\" in integrationModelProperties) {\n this.scriptName = integrationModelProperties.scriptName;\n }\n\n /**\n * Object containing the arguments needed by the callback function.\n */\n this.callbackMethodArguments = integrationModelProperties.callbackMethodArguments ?? {};\n\n /**\n * Contains information about the integration environment:\n * like the name of the editor, the version, etc.\n */\n this.environment = integrationModelProperties.environment ?? {};\n\n /**\n * Indicates if the DOM target is - or not - and iframe.\n */\n this.isIframe = false;\n if (this.target != null) {\n this.isIframe = this.target.tagName.toUpperCase() === \"IFRAME\";\n }\n\n /**\n * Instance of the integration editor object. Usually the entry point to access the API\n * of a HTML editor.\n */\n this.editorObject = integrationModelProperties.editorObject ?? null;\n\n /**\n * Specifies if the direction of the text is RTL. false by default.\n */\n this.rtl = integrationModelProperties.rtl ?? false;\n\n /**\n * Specifies if the integration model exposes the locale strings. false by default.\n */\n this.managesLanguage = integrationModelProperties.managesLanguage ?? false;\n\n /**\n * Specify if editor will open in hand mode only\n */\n this.forcedHandMode = integrationModelProperties?.integrationParameters?.forcedHandMode ?? false;\n\n /**\n * Indicates if an image is selected. Needed to resize the image to the original size in case\n * the image is resized.\n * @type {boolean}\n */\n this.temporalImageResizing = false;\n\n /**\n * The Core class instance associated to the integration model.\n * @type {Core}\n */\n this.core = null;\n\n /**\n * Integration model listeners.\n * @type {Listeners}\n */\n this.listeners = new Listeners();\n\n // Parameters overwrite.\n if (\"integrationParameters\" in integrationModelProperties) {\n IntegrationModel.integrationParameters.forEach((parameter) => {\n if (parameter in integrationModelProperties.integrationParameters) {\n // Don't add empty parameters.\n const value = integrationModelProperties.integrationParameters[parameter];\n if (Object.keys(value).length !== 0) {\n this[parameter] = value;\n }\n }\n });\n }\n }\n\n /**\n * Init function. Usually called from the integration side once the core.js file is loaded.\n */\n init() {\n // Check if language is an object and select the property necessary\n this.language = this.getLanguage();\n\n // We need to wait until Core class is loaded ('onLoad' event) before\n // call the callback method.\n const listener = Listeners.newListener(\"onLoad\", () => {\n this.callbackFunction(this.callbackMethodArguments);\n });\n\n // Backwards compatibility.\n if (this.serviceProviderProperties.URI.indexOf(\"configuration\") !== -1) {\n const uri = this.serviceProviderProperties.URI;\n const server = ServiceProvider.getServerLanguageFromService(uri);\n this.serviceProviderProperties.server = server;\n const configurationIndex = this.serviceProviderProperties.URI.indexOf(\"configuration\");\n const subsTring = this.serviceProviderProperties.URI.substring(0, configurationIndex);\n this.serviceProviderProperties.URI = subsTring;\n }\n\n let serviceParametersURI = this.serviceProviderProperties.URI;\n serviceParametersURI =\n serviceParametersURI.indexOf(\"/\") === 0 || serviceParametersURI.indexOf(\"http\") === 0\n ? serviceParametersURI\n : Util.concatenateUrl(this.getPath(), serviceParametersURI);\n\n this.serviceProviderProperties.URI = serviceParametersURI;\n\n const coreProperties = {};\n coreProperties.serviceProviderProperties = this.serviceProviderProperties;\n\n this.setCore(new Core(coreProperties));\n this.core.addListener(listener);\n this.core.language = this.language;\n\n // Initializing Core class.\n this.core.init();\n // TODO: Move to Core constructor.\n this.core.setEnvironment(this.environment);\n\n // No internet connection modal.\n let attributes = {};\n attributes.class = attributes.id = \"wrs_modal_offline\";\n this.offlineModal = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_content_offline\";\n this.offlineModalContent = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_close\";\n this.offlineModalClose = Util.createElement(\"span\", attributes);\n this.offlineModalClose.innerHTML = \"&times;\";\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_warn\";\n this.offlineModalWarn = Util.createElement(\"span\", attributes);\n const generalStyle = `background-image: url(data:image/svg+xml;base64,${window.btoa(warnIcon)})`;\n this.offlineModalWarn.setAttribute(\"style\", generalStyle);\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_text_container\";\n this.offlineModalMessage = Util.createElement(\"div\", attributes);\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_text_warn\";\n this.offlineModalMessage1 = Util.createElement(\"p\", attributes);\n this.offlineModalMessage1.innerHTML = \"You are not online!\";\n\n attributes = {};\n attributes.class = \"wrs_modal_offline_text\";\n this.offlineModalMessage2 = Util.createElement(\"p\", attributes);\n this.offlineModalMessage2.innerHTML = `Thank you for using MathType. We have detected you are disconnected from the network. We remind you that you'll need to be connected to use MathType. <br /><br />Please refresh the page if this message continues appearing.`;\n\n // Append offline modal elements\n this.offlineModalContent.appendChild(this.offlineModalClose);\n this.offlineModalMessage.appendChild(this.offlineModalMessage1);\n this.offlineModalMessage.appendChild(this.offlineModalMessage2);\n this.offlineModalContent.appendChild(this.offlineModalMessage);\n this.offlineModalContent.appendChild(this.offlineModalWarn);\n this.offlineModal.appendChild(this.offlineModalContent);\n document.body.appendChild(this.offlineModal);\n\n const modal = document.getElementById(\"wrs_modal_offline\");\n this.offlineModalClose.addEventListener(\"click\", () => {\n modal.style.display = \"none\";\n });\n\n // Store editor name for telemetry purposes.\n let editorName = this.environment.editor;\n editorName = editorName.slice(0, -1); // Remove version number from editors\n if (editorName.includes(\"TinyMCE\")) editorName = \"TinyMCE\"; // Remove version from Tinymce editor.\n if (editorName.includes(\"Generic\")) editorName = \"Generic\"; // Remove version from Generic editor.\n let solutionTelemeter = editorName;\n\n // If moodle, add information to hosts and solution.\n const isMoodle = !!(typeof M === \"object\" && M !== null);\n let lms;\n\n if (isMoodle) {\n solutionTelemeter = \"Moodle\";\n lms = {\n nam: \"moodle\",\n fam: \"lms\",\n ver: this.environment.moodleVersion,\n category: this.environment.moodleCourseCategory,\n course: this.environment.moodleCourseName,\n };\n if (!editorName.includes(\"TinyMCE\")) {\n editorName = \"Atto\";\n }\n }\n\n // Get the OS and its version.\n const OSData = this.getOS();\n\n // Get the broswer and its version.\n const broswerData = this.getBrowser();\n\n // Create list of hosts to send to telemetry.\n let hosts = [\n {\n nam: broswerData.detectedBrowser,\n fam: \"browser\",\n ver: broswerData.versionBrowser,\n },\n {\n nam: editorName.toLowerCase(),\n fam: \"html-editor\",\n ver: this.environment.editorVersion,\n },\n {\n nam: OSData.detectedOS,\n fam: \"os\",\n ver: OSData.versionOS,\n },\n {\n nam: window.location.hostname,\n fam: \"domain\",\n },\n lms,\n ];\n\n // Filter hosts to remove empty objects and empty keys.\n hosts = hosts.filter((element) => {\n if (element) Object.keys(element).forEach((key) => (element[key] === \"unknown\" ? delete element[key] : {}));\n return element !== undefined;\n });\n\n // Initialize telemeter\n Telemeter.init({\n solution: {\n name: `MathType for ${solutionTelemeter}`,\n version: this.version,\n },\n hosts,\n config: {\n test: false, // True to use the staging Telemetry endpoint instead of the production one.\n debug: false, // True to show more information about Telemeter's execution and use dev-tools.\n dry_run: false, // True to skip sending data to the Telemetry endpoint (for example for unit tests).\n api_key: \"eda2ce9b-0e8a-46f2-acdd-c228a615314e\", // to auth against Telemetry. Data team is the responsible of providing it.\n },\n url: undefined,\n });\n }\n\n /**\n * Returns the Browser name and its version.\n * @return {array} - detectedBrowser = Operating System name.\n * versionBrowser = Operating System version.\n */\n getBrowser() {\n // default value for OS just in case nothing is detected\n let detectedBrowser = \"unknown\";\n let versionBrowser = \"unknown\";\n\n const userAgent = window.navigator.userAgent;\n\n if (/Brave/.test(userAgent)) {\n detectedBrowser = \"brave\";\n if (userAgent.indexOf(\"Brave/\")) {\n const start = userAgent.indexOf(\"Brave\") + 6;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n }\n } else if (userAgent.indexOf(\"Edg/\") !== -1) {\n detectedBrowser = \"edge_chromium\";\n const start = userAgent.indexOf(\"Edg/\") + 4;\n versionBrowser = userAgent\n .substring(start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Edg/.test(userAgent)) {\n detectedBrowser = \"edge\";\n let start = userAgent.indexOf(\"Edg\") + 3;\n start += userAgent.substring(start).indexOf(\"/\");\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Firefox/.test(userAgent) || /FxiOS/.test(userAgent)) {\n detectedBrowser = \"firefox\";\n let start = userAgent.indexOf(\"Firefox\");\n start = start === -1 ? userAgent.indexOf(\"FxiOS\") : start;\n start = start + userAgent.substring(start).indexOf(\"/\") + 1;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent.substring(start, end + start).replace(\"_\", \".\");\n } else if (/OPR/.test(userAgent)) {\n detectedBrowser = \"opera\";\n const start = userAgent.indexOf(\"OPR/\") + 4;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Chrome/.test(userAgent) || /CriOS/.test(userAgent)) {\n detectedBrowser = \"chrome\";\n let start = userAgent.indexOf(\"Chrome\");\n start = start === -1 ? userAgent.indexOf(\"CriOS\") : start;\n start = start + userAgent.substring(start).indexOf(\"/\") + 1;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent.substring(start, end + start).replace(\"_\", \".\");\n } else if (/Safari/.test(userAgent)) {\n detectedBrowser = \"safari\";\n let start = userAgent.indexOf(\"Version/\");\n start = start + userAgent.substring(start).indexOf(\"/\") + 1;\n let end = userAgent.substring(start).indexOf(\" \");\n end = end === -1 ? userAgent.lastIndexOf(\"\") : end;\n versionBrowser = userAgent.substring(start, end + start).replace(\"_\", \".\");\n }\n\n return { detectedBrowser, versionBrowser };\n }\n\n /**\n * Returns the operating system and its version.\n * @return {array} - detectedOS = Operating System name.\n * versionOS = Operating System version.\n */\n getOS() {\n // default value for OS just in case nothing is detected\n let detectedOS = \"unknown\";\n let versionOS = \"unknown\";\n\n // Retrieve properties to easily detect the OS\n const userAgent = window.navigator.userAgent;\n const platform = window.navigator.platform;\n const macosPlatforms = [\"Macintosh\", \"MacIntel\", \"MacPPC\", \"Mac68K\"];\n const windowsPlatforms = [\"Win32\", \"Win64\", \"Windows\", \"WinCE\"];\n const iosPlatforms = [\"iPhone\", \"iPad\", \"iPod\"];\n\n // Find OS and their respective versions\n if (macosPlatforms.indexOf(platform) !== -1) {\n detectedOS = \"macos\";\n if (userAgent.indexOf(\"OS X\") !== -1) {\n const start = userAgent.indexOf(\"OS X\") + 5;\n const end = userAgent.substring(start).indexOf(\" \");\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n }\n } else if (iosPlatforms.indexOf(platform) !== -1) {\n detectedOS = \"ios\";\n if (userAgent.indexOf(\"OS \") !== -1) {\n const start = userAgent.indexOf(\"OS \") + 3;\n const end = userAgent.substring(start).indexOf(\")\");\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n }\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\n detectedOS = \"windows\";\n const start = userAgent.indexOf(\"Windows\");\n let end = userAgent.substring(start).indexOf(\";\");\n if (end === -1) {\n end = userAgent.substring(start).indexOf(\")\");\n }\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/Android/.test(userAgent)) {\n detectedOS = \"android\";\n const start = userAgent.indexOf(\"Android\");\n let end = userAgent.substring(start).indexOf(\";\");\n if (end === -1) {\n end = userAgent.substring(start).indexOf(\")\");\n }\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (/CrOS/.test(userAgent)) {\n detectedOS = \"chromeos\";\n let start = userAgent.indexOf(\"CrOS \") + 5;\n start += userAgent.substring(start).indexOf(\" \");\n const end = userAgent.substring(start).indexOf(\")\");\n versionOS = userAgent\n .substring(start, end + start)\n .replace(\"_\", \".\")\n .replace(/[^\\d.-]/g, \"\");\n } else if (detectedOS === \"unknown\" && /Linux/.test(platform)) {\n detectedOS = \"linux\";\n }\n\n return { detectedOS, versionOS };\n }\n\n /**\n * Returns the absolute path of the integration script.\n * @return {string} - Absolute path for the integration script.\n */\n getPath() {\n if (typeof this.scriptName === \"undefined\") {\n throw new Error(\"scriptName property needed for getPath.\");\n }\n const col = document.getElementsByTagName(\"script\");\n let path = \"\";\n for (let i = 0; i < col.length; i += 1) {\n const j = col[i].src.lastIndexOf(this.scriptName);\n if (j >= 0) {\n path = col[i].src.substr(0, j - 1);\n }\n }\n return path;\n }\n\n /**\n * Returns integration model plugin version\n * @param {string} - Plugin version\n */\n getVersion() {\n return this.version;\n }\n\n /**\n * Sets the language property.\n * @param {string} language - language code.\n */\n setLanguage(language) {\n this.language = language;\n }\n\n /**\n * Sets a Core instance.\n * @param {Core} core - instance of Core class.\n */\n setCore(core) {\n this.core = core;\n core.setIntegrationModel(this);\n }\n\n /**\n * Returns the Core instance.\n * @returns {Core} instance of Core class.\n */\n getCore() {\n return this.core;\n }\n\n /**\n * Sets the object target and updates the iframe property.\n * @param {HTMLElement} target - target object.\n */\n setTarget(target) {\n this.target = target;\n this.isIframe = this.target.tagName.toUpperCase() === \"IFRAME\";\n }\n\n /**\n * Sets the editor object.\n * @param {Object} editorObject - The editor object.\n */\n setEditorObject(editorObject) {\n this.editorObject = editorObject;\n }\n\n /**\n * Opens formula editor to editing a new formula. Can be overwritten in order to make some\n * actions from integration part before the formula is edited.\n */\n openNewFormulaEditor() {\n if (window.navigator.onLine) {\n this.core.editionProperties.dbclick = false;\n this.core.editionProperties.isNewElement = true;\n this.core.openModalDialog(this.target, this.isIframe);\n } else {\n const modal = document.getElementById(\"wrs_modal_offline\");\n modal.style.display = \"block\";\n }\n }\n\n /**\n * Opens formula editor to editing an existing formula. Can be overwritten in order to make some\n * actions from integration part before the formula is edited.\n */\n openExistingFormulaEditor() {\n // Recover owner integration instance.\n WirisPlugin.currentInstance = this;\n\n if (window.navigator.onLine) {\n this.core.editionProperties.isNewElement = false;\n this.core.openModalDialog(this.target, this.isIframe);\n } else {\n const modal = document.getElementById(\"wrs_modal_offline\");\n modal.style.display = \"block\";\n }\n }\n\n /**\n * Wrapper to Core.updateFormula method.\n * Transform a MathML into a image formula.\n * Then the image formula is inserted in the specified target, creating a new image (new formula)\n * or updating an existing one.\n * @param {string} mathml - MathML to generate the formula.\n * @param {string} editMode - Edit Mode (LaTeX or images).\n */\n updateFormula(mathml) {\n if (this.editorParameters) {\n mathml = com.wiris.editor.util.EditorUtils.addAnnotation(\n mathml,\n \"application/vnd.wiris.mtweb-params+json\",\n JSON.stringify(this.editorParameters),\n );\n }\n let focusElement;\n let windowTarget;\n const wirisProperties = null;\n\n if (this.isIframe) {\n focusElement = this.target.contentWindow;\n windowTarget = this.target.contentWindow;\n } else {\n focusElement = this.target;\n windowTarget = window;\n }\n\n let obj = this.core.beforeUpdateFormula(mathml, wirisProperties);\n\n if (!obj) {\n return \"\";\n }\n\n obj = this.insertFormula(focusElement, windowTarget, obj.mathml, obj.wirisProperties);\n\n if (!obj) {\n return \"\";\n }\n\n return this.core.afterUpdateFormula(obj.focusElement, obj.windowTarget, obj.node, obj.latex);\n }\n\n /**\n * Wrapper to Core.insertFormula method.\n * Inserts the formula in the specified target, creating\n * a new image (new formula) or updating an existing one.\n * @param {string} mathml - MathML to generate the formula.\n * @param {string} editMode - Edit Mode (LaTeX or images).\n * @returns {ReturnObject} - Object with the information of the node or latex to insert.\n */\n insertFormula(focusElement, windowTarget, mathml, wirisProperties) {\n const obj = this.core.insertFormula(focusElement, windowTarget, mathml, wirisProperties);\n\n // Delete temporal image when inserted\n this.core.editionProperties.temporalImage = null;\n\n return obj;\n }\n\n /**\n * Returns the target selection.\n * @returns {Selection} target selection.\n */\n getSelection() {\n if (this.isIframe) {\n this.target.contentWindow.focus();\n return this.target.contentWindow.getSelection();\n }\n this.target.focus();\n return window.getSelection();\n }\n\n /**\n * Add events to formulas in the DOM target. The events added are the following:\n * - doubleClickHandler: handles Double-click event on formulas by opening an editor\n * to edit them.\n * - mouseDownHandler: handles mouse down event on formulas by saving the size of the formula\n * in case the the formula is resized.\n * - mouseUpHandler: handles mouse up event on formulas by restoring the saved formula size\n * in case the formula is resized.\n */\n addEvents() {\n const eventTarget = this.isIframe ? this.target.contentWindow.document : this.target;\n Util.addElementEvents(\n eventTarget,\n (element, event) => {\n this.doubleClickHandler(element, event);\n // Avoid creating the double click listener more than once for each element.\n // This also allows CKEditor4 to add their own double click listener.\n event.preventDefault();\n },\n (element, event) => {\n this.mousedownHandler(element, event);\n },\n (element, event) => {\n this.mouseupHandler(element, event);\n },\n );\n }\n\n /**\n * Remove events to formulas in the DOM target.\n */\n removeEvents() {\n const eventTarget =\n this.isIframe && this.target.contentWindow?.document ? this.target.contentWindow.document : this.target;\n\n if (!eventTarget) {\n return;\n }\n\n Util.removeElementEvents(eventTarget);\n }\n\n /**\n * Remove events, modals and set this.editorObject to null in order to prevent memory leaks.\n */\n destroy() {\n this.removeEvents();\n // Destroy modal dialog if exists.\n if (this.core.modalDialog) {\n this.core.modalDialog.destroy();\n }\n\n // Remove offline modal dialog if exists.\n if (this.offlineModal) {\n this.offlineModal.remove();\n }\n\n this.editorObject = null;\n }\n\n /**\n * Handles a Double-click on the target element. Opens an editor\n * to re-edit the double-clicked formula.\n * @param {HTMLElement} element - DOM object target.\n */\n doubleClickHandler(element) {\n this.core.editionProperties.dbclick = true;\n if (element.nodeName.toLowerCase() === \"img\") {\n this.core.getCustomEditors().disable();\n const customEditorAttributeName = Configuration.get(\"imageCustomEditorName\");\n if (element.hasAttribute(customEditorAttributeName)) {\n const customEditor = element.getAttribute(customEditorAttributeName);\n this.core.getCustomEditors().enable(customEditor);\n }\n if (Util.containsClass(element, Configuration.get(\"imageClassName\"))) {\n this.core.editionProperties.temporalImage = element;\n this.core.editionProperties.isNewElement = true;\n this.openExistingFormulaEditor();\n }\n }\n }\n\n /**\n * Handles a mouse up event on the target element. Restores the image size to avoid\n * resizing formulas.\n */\n mouseupHandler() {\n if (this.temporalImageResizing) {\n setTimeout(() => {\n Image.fixAfterResize(this.temporalImageResizing);\n }, 10);\n }\n }\n\n /**\n * Handles a mouse down event on the target element. Saves the formula size to avoid\n * resizing formulas.\n * @param {HTMLElement} element - target element.\n */\n mousedownHandler(element) {\n if (element.nodeName.toLowerCase() === \"img\") {\n if (Util.containsClass(element, Configuration.get(\"imageClassName\"))) {\n this.temporalImageResizing = element;\n }\n }\n }\n\n /**\n * Returns the integration language. By default the browser agent. This method\n * should be overwritten to obtain the integration language, for example using the\n * plugin API of an HTML editor.\n * @returns {string} integration language.\n */\n getLanguage() {\n return this.getBrowserLanguage();\n }\n\n /**\n * Returns the browser language.\n * @returns {string} the browser language.\n */\n // eslint-disable-next-line class-methods-use-this\n getBrowserLanguage() {\n let language = \"en\";\n if (navigator.userLanguage) {\n language = navigator.userLanguage.substring(0, 2);\n } else if (navigator.language) {\n language = navigator.language.substring(0, 2);\n } else {\n language = \"en\";\n }\n return language;\n }\n\n /**\n * This function is called once the {@link Core} is loaded. IntegrationModel class\n * will fire this method when {@link Core} 'onLoad' event is fired.\n * This method should content all the logic to init\n * the integration.\n */\n callbackFunction() {\n // It's needed to wait until the integration target is ready. The event is fired\n // from the integration side.\n const listener = Listeners.newListener(\"onTargetReady\", () => {\n this.addEvents(this.target);\n });\n this.listeners.add(listener);\n }\n\n /**\n * Function called when the content submits an action.\n */\n // eslint-disable-next-line class-methods-use-this\n notifyWindowClosed() {\n // Nothing.\n }\n\n /**\n * Wrapper.\n * Extracts mathml of a determined text node. This function is used as a wrapper inside core.js\n * in order to get mathml from a text node that can contain normal LaTeX or other chosen text.\n * @param {string} textNode - text node to extract the MathML.\n * @param {int} caretPosition - caret position inside the text node.\n * @returns {string} MathML inside the text node.\n */\n\n // eslint-disable-next-line class-methods-use-this, no-unused-vars\n getMathmlFromTextNode(textNode, caretPosition) {}\n\n /**\n * Wrapper\n * It fills wrs event object of nonLatex with the desired data.\n * @param {Object} event - event object.\n * @param {Object} window dom window object.\n * @param {string} mathml valid mathml.\n */\n // eslint-disable-next-line class-methods-use-this, no-unused-vars\n fillNonLatexNode(event, window, mathml) {}\n\n /**\n Wrapper.\n * Returns selected item from the target.\n * @param {HTMLElement} target - target element\n * @param {boolean} iframe\n */\n // eslint-disable-next-line class-methods-use-this, no-unused-vars\n getSelectedItem(target, isIframe) {}\n\n // Set temporal image to null and make focus come back.\n static setActionsOnCancelButtons() {\n // Make focus come back on the previous place it was when click cancel button\n const currentInstance = WirisPlugin.currentInstance;\n const editorSelection = currentInstance.getSelection();\n editorSelection.removeAllRanges();\n\n if (currentInstance.core.editionProperties.range) {\n const { range } = currentInstance.core.editionProperties;\n currentInstance.core.editionProperties.range = null;\n editorSelection.addRange(range);\n if (range.startOffset !== range.endOffset) {\n currentInstance.core.placeCaretAfterNode(currentInstance.core.editionProperties.temporalImage);\n }\n }\n\n // eslint-disable-next-line no-undef\n if (WirisPlugin.currentInstance) {\n WirisPlugin.currentInstance.core.editionProperties.temporalImage = null; // eslint-disable-line\n }\n }\n}\n\n// To know if the integration that extends this class implements\n// wrapper methods, they are set as undefined.\nIntegrationModel.prototype.getMathmlFromTextNode = undefined;\nIntegrationModel.prototype.fillNonLatexNode = undefined;\nIntegrationModel.prototype.getSelectedItem = undefined;\n\n/**\n * An object containing a list with the overwritable class constructor properties.\n * @type {Object}\n */\nIntegrationModel.integrationParameters = [\"serviceProviderProperties\", \"editorParameters\"];\n","/* eslint-disable */\nvar md5;\nexport default md5;\n\n(function () {\n var HxOverrides = function () {};\n HxOverrides.__name__ = true;\n HxOverrides.dateStr = function (date) {\n var m = date.getMonth() + 1;\n var d = date.getDate();\n var h = date.getHours();\n var mi = date.getMinutes();\n var s = date.getSeconds();\n return (\n date.getFullYear() +\n \"-\" +\n (m < 10 ? \"0\" + m : \"\" + m) +\n \"-\" +\n (d < 10 ? \"0\" + d : \"\" + d) +\n \" \" +\n (h < 10 ? \"0\" + h : \"\" + h) +\n \":\" +\n (mi < 10 ? \"0\" + mi : \"\" + mi) +\n \":\" +\n (s < 10 ? \"0\" + s : \"\" + s)\n );\n };\n HxOverrides.strDate = function (s) {\n switch (s.length) {\n case 8:\n var k = s.split(\":\");\n var d = new Date();\n d.setTime(0);\n d.setUTCHours(k[0]);\n d.setUTCMinutes(k[1]);\n d.setUTCSeconds(k[2]);\n return d;\n case 10:\n var k = s.split(\"-\");\n return new Date(k[0], k[1] - 1, k[2], 0, 0, 0);\n case 19:\n var k = s.split(\" \");\n var y = k[0].split(\"-\");\n var t = k[1].split(\":\");\n return new Date(y[0], y[1] - 1, y[2], t[0], t[1], t[2]);\n default:\n throw \"Invalid date format : \" + s;\n }\n };\n HxOverrides.cca = function (s, index) {\n var x = s.charCodeAt(index);\n if (x != x) return undefined;\n return x;\n };\n HxOverrides.substr = function (s, pos, len) {\n if (pos != null && pos != 0 && len != null && len < 0) return \"\";\n if (len == null) len = s.length;\n if (pos < 0) {\n pos = s.length + pos;\n if (pos < 0) pos = 0;\n } else if (len < 0) len = s.length + len - pos;\n return s.substr(pos, len);\n };\n HxOverrides.remove = function (a, obj) {\n var i = 0;\n var l = a.length;\n while (i < l) {\n if (a[i] == obj) {\n a.splice(i, 1);\n return true;\n }\n i++;\n }\n return false;\n };\n HxOverrides.iter = function (a) {\n return {\n cur: 0,\n arr: a,\n hasNext: function () {\n return this.cur < this.arr.length;\n },\n next: function () {\n return this.arr[this.cur++];\n },\n };\n };\n var IntIter = function (min, max) {\n this.min = min;\n this.max = max;\n };\n IntIter.__name__ = true;\n IntIter.prototype = {\n next: function () {\n return this.min++;\n },\n hasNext: function () {\n return this.min < this.max;\n },\n __class__: IntIter,\n };\n var Std = function () {};\n Std.__name__ = true;\n Std[\"is\"] = function (v, t) {\n return js.Boot.__instanceof(v, t);\n };\n Std.string = function (s) {\n return js.Boot.__string_rec(s, \"\");\n };\n Std[\"int\"] = function (x) {\n return x | 0;\n };\n Std.parseInt = function (x) {\n var v = parseInt(x, 10);\n if (v == 0 && (HxOverrides.cca(x, 1) == 120 || HxOverrides.cca(x, 1) == 88)) v = parseInt(x);\n if (isNaN(v)) return null;\n return v;\n };\n Std.parseFloat = function (x) {\n return parseFloat(x);\n };\n Std.random = function (x) {\n return Math.floor(Math.random() * x);\n };\n var com = com || {};\n if (!com.wiris) com.wiris = {};\n if (!com.wiris.js) com.wiris.js = {};\n com.wiris.js.JsPluginTools = function () {\n this.tryReady();\n };\n com.wiris.js.JsPluginTools.__name__ = true;\n com.wiris.js.JsPluginTools.main = function () {\n var ev;\n ev = com.wiris.js.JsPluginTools.getInstance();\n haxe.Timer.delay($bind(ev, ev.tryReady), 100);\n };\n com.wiris.js.JsPluginTools.getInstance = function () {\n if (com.wiris.js.JsPluginTools.instance == null)\n com.wiris.js.JsPluginTools.instance = new com.wiris.js.JsPluginTools();\n return com.wiris.js.JsPluginTools.instance;\n };\n com.wiris.js.JsPluginTools.bypassEncapsulation = function () {\n if (window.com == null) window.com = {};\n if (window.com.wiris == null) window.com.wiris = {};\n if (window.com.wiris.js == null) window.com.wiris.js = {};\n if (window.com.wiris.js.JsPluginTools == null)\n window.com.wiris.js.JsPluginTools = com.wiris.js.JsPluginTools.getInstance();\n };\n com.wiris.js.JsPluginTools.prototype = {\n md5encode: function (content) {\n return haxe.Md5.encode(content);\n },\n doLoad: function () {\n this.ready = true;\n com.wiris.js.JsPluginTools.instance = this;\n com.wiris.js.JsPluginTools.bypassEncapsulation();\n },\n tryReady: function () {\n this.ready = false;\n if (js.Lib.document.readyState) {\n this.doLoad();\n this.ready = true;\n }\n if (!this.ready) haxe.Timer.delay($bind(this, this.tryReady), 100);\n },\n __class__: com.wiris.js.JsPluginTools,\n };\n var haxe = haxe || {};\n haxe.Log = function () {};\n haxe.Log.__name__ = true;\n haxe.Log.trace = function (v, infos) {\n js.Boot.__trace(v, infos);\n };\n haxe.Log.clear = function () {\n js.Boot.__clear_trace();\n };\n haxe.Md5 = function () {};\n haxe.Md5.__name__ = true;\n haxe.Md5.encode = function (s) {\n return new haxe.Md5().doEncode(s);\n };\n haxe.Md5.prototype = {\n doEncode: function (str) {\n var x = this.str2blks(str);\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n var step;\n var i = 0;\n while (i < x.length) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n step = 0;\n a = this.ff(a, b, c, d, x[i], 7, -680876936);\n d = this.ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = this.ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = this.ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = this.ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = this.ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = this.ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = this.ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = this.ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = this.ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = this.ff(c, d, a, b, x[i + 10], 17, -42063);\n b = this.ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = this.ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = this.ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = this.ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = this.ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = this.gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = this.gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = this.gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = this.gg(b, c, d, a, x[i], 20, -373897302);\n a = this.gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = this.gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = this.gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = this.gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = this.gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = this.gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = this.gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = this.gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = this.gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = this.gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = this.gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = this.gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = this.hh(a, b, c, d, x[i + 5], 4, -378558);\n d = this.hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = this.hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = this.hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = this.hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = this.hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = this.hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = this.hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = this.hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = this.hh(d, a, b, c, x[i], 11, -358537222);\n c = this.hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = this.hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = this.hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = this.hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = this.hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = this.hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = this.ii(a, b, c, d, x[i], 6, -198630844);\n d = this.ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = this.ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = this.ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = this.ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = this.ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = this.ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = this.ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = this.ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = this.ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = this.ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = this.ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = this.ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = this.ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = this.ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = this.ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = this.addme(a, olda);\n b = this.addme(b, oldb);\n c = this.addme(c, oldc);\n d = this.addme(d, oldd);\n i += 16;\n }\n return this.rhex(a) + this.rhex(b) + this.rhex(c) + this.rhex(d);\n },\n ii: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(c, this.bitOR(b, ~d)), a, b, x, s, t);\n },\n hh: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(this.bitXOR(b, c), d), a, b, x, s, t);\n },\n gg: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, d), this.bitAND(c, ~d)), a, b, x, s, t);\n },\n ff: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, c), this.bitAND(~b, d)), a, b, x, s, t);\n },\n cmn: function (q, a, b, x, s, t) {\n return this.addme(this.rol(this.addme(this.addme(a, q), this.addme(x, t)), s), b);\n },\n rol: function (num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n },\n str2blks: function (str) {\n var nblk = ((str.length + 8) >> 6) + 1;\n var blks = new Array();\n var _g1 = 0,\n _g = nblk * 16;\n while (_g1 < _g) {\n var i = _g1++;\n blks[i] = 0;\n }\n var i = 0;\n while (i < str.length) {\n blks[i >> 2] |= HxOverrides.cca(str, i) << (((str.length * 8 + i) % 4) * 8);\n i++;\n }\n blks[i >> 2] |= 128 << (((str.length * 8 + i) % 4) * 8);\n var l = str.length * 8;\n var k = nblk * 16 - 2;\n blks[k] = l & 255;\n blks[k] |= ((l >>> 8) & 255) << 8;\n blks[k] |= ((l >>> 16) & 255) << 16;\n blks[k] |= ((l >>> 24) & 255) << 24;\n return blks;\n },\n rhex: function (num) {\n var str = \"\";\n var hex_chr = \"0123456789abcdef\";\n var _g = 0;\n while (_g < 4) {\n var j = _g++;\n str += hex_chr.charAt((num >> (j * 8 + 4)) & 15) + hex_chr.charAt((num >> (j * 8)) & 15);\n }\n return str;\n },\n addme: function (x, y) {\n var lsw = (x & 65535) + (y & 65535);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 65535);\n },\n bitAND: function (a, b) {\n var lsb = a & 1 & (b & 1);\n var msb31 = (a >>> 1) & (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitXOR: function (a, b) {\n var lsb = (a & 1) ^ (b & 1);\n var msb31 = (a >>> 1) ^ (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitOR: function (a, b) {\n var lsb = (a & 1) | (b & 1);\n var msb31 = (a >>> 1) | (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n __class__: haxe.Md5,\n };\n haxe.Timer = function (time_ms) {\n var me = this;\n this.id = window.setInterval(function () {\n me.run();\n }, time_ms);\n };\n haxe.Timer.__name__ = true;\n haxe.Timer.delay = function (f, time_ms) {\n var t = new haxe.Timer(time_ms);\n t.run = function () {\n t.stop();\n f();\n };\n return t;\n };\n haxe.Timer.measure = function (f, pos) {\n var t0 = haxe.Timer.stamp();\n var r = f();\n haxe.Log.trace(haxe.Timer.stamp() - t0 + \"s\", pos);\n return r;\n };\n haxe.Timer.stamp = function () {\n return new Date().getTime() / 1000;\n };\n haxe.Timer.prototype = {\n run: function () {},\n stop: function () {\n if (this.id == null) return;\n window.clearInterval(this.id);\n this.id = null;\n },\n __class__: haxe.Timer,\n };\n var js = js || {};\n js.Boot = function () {};\n js.Boot.__name__ = true;\n js.Boot.__unhtml = function (s) {\n return s.split(\"&\").join(\"&amp;\").split(\"<\").join(\"&lt;\").split(\">\").join(\"&gt;\");\n };\n js.Boot.__trace = function (v, i) {\n var msg = i != null ? i.fileName + \":\" + i.lineNumber + \": \" : \"\";\n msg += js.Boot.__string_rec(v, \"\");\n var d;\n if (typeof document != \"undefined\" && (d = document.getElementById(\"haxe:trace\")) != null)\n d.innerHTML += js.Boot.__unhtml(msg) + \"<br/>\";\n else if (typeof console != \"undefined\" && console.log != null) console.log(msg);\n };\n js.Boot.__clear_trace = function () {\n var d = document.getElementById(\"haxe:trace\");\n if (d != null) d.innerHTML = \"\";\n };\n js.Boot.isClass = function (o) {\n return o.__name__;\n };\n js.Boot.isEnum = function (e) {\n return e.__ename__;\n };\n js.Boot.getClass = function (o) {\n return o.__class__;\n };\n js.Boot.__string_rec = function (o, s) {\n if (o == null) return \"null\";\n if (s.length >= 5) return \"<...>\";\n var t = typeof o;\n if (t == \"function\" && (o.__name__ || o.__ename__)) t = \"object\";\n switch (t) {\n case \"object\":\n if (o instanceof Array) {\n if (o.__enum__) {\n if (o.length == 2) return o[0];\n var str = o[0] + \"(\";\n s += \"\\t\";\n var _g1 = 2,\n _g = o.length;\n while (_g1 < _g) {\n var i = _g1++;\n if (i != 2) str += \",\" + js.Boot.__string_rec(o[i], s);\n else str += js.Boot.__string_rec(o[i], s);\n }\n return str + \")\";\n }\n var l = o.length;\n var i;\n var str = \"[\";\n s += \"\\t\";\n var _g = 0;\n while (_g < l) {\n var i1 = _g++;\n str += (i1 > 0 ? \",\" : \"\") + js.Boot.__string_rec(o[i1], s);\n }\n str += \"]\";\n return str;\n }\n var tostr;\n try {\n tostr = o.toString;\n } catch (e) {\n return \"???\";\n }\n if (tostr != null && tostr != Object.toString) {\n var s2 = o.toString();\n if (s2 != \"[object Object]\") return s2;\n }\n var k = null;\n var str = \"{\\n\";\n s += \"\\t\";\n var hasp = o.hasOwnProperty != null;\n for (var k in o) {\n if (hasp && !o.hasOwnProperty(k)) {\n continue;\n }\n if (\n k == \"prototype\" ||\n k == \"__class__\" ||\n k == \"__super__\" ||\n k == \"__interfaces__\" ||\n k == \"__properties__\"\n ) {\n continue;\n }\n if (str.length != 2) str += \", \\n\";\n str += s + k + \" : \" + js.Boot.__string_rec(o[k], s);\n }\n s = s.substring(1);\n str += \"\\n\" + s + \"}\";\n return str;\n case \"function\":\n return \"<function>\";\n case \"string\":\n return o;\n default:\n return String(o);\n }\n };\n js.Boot.__interfLoop = function (cc, cl) {\n if (cc == null) return false;\n if (cc == cl) return true;\n var intf = cc.__interfaces__;\n if (intf != null) {\n var _g1 = 0,\n _g = intf.length;\n while (_g1 < _g) {\n var i = _g1++;\n var i1 = intf[i];\n if (i1 == cl || js.Boot.__interfLoop(i1, cl)) return true;\n }\n }\n return js.Boot.__interfLoop(cc.__super__, cl);\n };\n js.Boot.__instanceof = function (o, cl) {\n try {\n if (o instanceof cl) {\n if (cl == Array) return o.__enum__ == null;\n return true;\n }\n if (js.Boot.__interfLoop(o.__class__, cl)) return true;\n } catch (e) {\n if (cl == null) return false;\n }\n switch (cl) {\n case Int:\n return Math.ceil(o % 2147483648.0) === o;\n case Float:\n return typeof o == \"number\";\n case Bool:\n return o === true || o === false;\n case String:\n return typeof o == \"string\";\n case Dynamic:\n return true;\n default:\n if (o == null) return false;\n if (cl == Class && o.__name__ != null) return true;\n else null;\n if (cl == Enum && o.__ename__ != null) return true;\n else null;\n return o.__enum__ == cl;\n }\n };\n js.Boot.__cast = function (o, t) {\n if (js.Boot.__instanceof(o, t)) return o;\n else throw \"Cannot cast \" + Std.string(o) + \" to \" + Std.string(t);\n };\n js.Lib = function () {};\n js.Lib.__name__ = true;\n js.Lib.debug = function () {\n debugger;\n };\n js.Lib.alert = function (v) {\n alert(js.Boot.__string_rec(v, \"\"));\n };\n js.Lib.eval = function (code) {\n return eval(code);\n };\n js.Lib.setErrorHandler = function (f) {\n js.Lib.onerror = f;\n };\n var $_;\n function $bind(o, m) {\n var f = function () {\n return f.method.apply(f.scope, arguments);\n };\n f.scope = o;\n f.method = m;\n return f;\n }\n if (Array.prototype.indexOf)\n HxOverrides.remove = function (a, o) {\n var i = a.indexOf(o);\n if (i == -1) return false;\n a.splice(i, 1);\n return true;\n };\n else null;\n Math.__name__ = [\"Math\"];\n Math.NaN = Number.NaN;\n Math.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY;\n Math.POSITIVE_INFINITY = Number.POSITIVE_INFINITY;\n Math.isFinite = function (i) {\n return isFinite(i);\n };\n Math.isNaN = function (i) {\n return isNaN(i);\n };\n String.prototype.__class__ = String;\n String.__name__ = true;\n Array.prototype.__class__ = Array;\n Array.__name__ = true;\n Date.prototype.__class__ = Date;\n Date.__name__ = [\"Date\"];\n var Int = { __name__: [\"Int\"] };\n var Dynamic = { __name__: [\"Dynamic\"] };\n var Float = Number;\n Float.__name__ = [\"Float\"];\n var Bool = Boolean;\n Bool.__ename__ = [\"Bool\"];\n var Class = { __name__: [\"Class\"] };\n var Enum = {};\n var Void = { __ename__: [\"Void\"] };\n if (typeof document != \"undefined\") js.Lib.document = document;\n if (typeof window != \"undefined\") {\n js.Lib.window = window;\n js.Lib.window.onerror = function (msg, url, line) {\n var f = js.Lib.onerror;\n if (f == null) return false;\n return f(msg, [url + \":\" + line]);\n };\n }\n com.wiris.js.JsPluginTools.main();\n delete Array.prototype.__class__;\n})();\n\n(function () {\n var HxOverrides = function () {};\n HxOverrides.__name__ = true;\n HxOverrides.dateStr = function (date) {\n var m = date.getMonth() + 1;\n var d = date.getDate();\n var h = date.getHours();\n var mi = date.getMinutes();\n var s = date.getSeconds();\n return (\n date.getFullYear() +\n \"-\" +\n (m < 10 ? \"0\" + m : \"\" + m) +\n \"-\" +\n (d < 10 ? \"0\" + d : \"\" + d) +\n \" \" +\n (h < 10 ? \"0\" + h : \"\" + h) +\n \":\" +\n (mi < 10 ? \"0\" + mi : \"\" + mi) +\n \":\" +\n (s < 10 ? \"0\" + s : \"\" + s)\n );\n };\n HxOverrides.strDate = function (s) {\n switch (s.length) {\n case 8:\n var k = s.split(\":\");\n var d = new Date();\n d.setTime(0);\n d.setUTCHours(k[0]);\n d.setUTCMinutes(k[1]);\n d.setUTCSeconds(k[2]);\n return d;\n case 10:\n var k = s.split(\"-\");\n return new Date(k[0], k[1] - 1, k[2], 0, 0, 0);\n case 19:\n var k = s.split(\" \");\n var y = k[0].split(\"-\");\n var t = k[1].split(\":\");\n return new Date(y[0], y[1] - 1, y[2], t[0], t[1], t[2]);\n default:\n throw \"Invalid date format : \" + s;\n }\n };\n HxOverrides.cca = function (s, index) {\n var x = s.charCodeAt(index);\n if (x != x) return undefined;\n return x;\n };\n HxOverrides.substr = function (s, pos, len) {\n if (pos != null && pos != 0 && len != null && len < 0) return \"\";\n if (len == null) len = s.length;\n if (pos < 0) {\n pos = s.length + pos;\n if (pos < 0) pos = 0;\n } else if (len < 0) len = s.length + len - pos;\n return s.substr(pos, len);\n };\n HxOverrides.remove = function (a, obj) {\n var i = 0;\n var l = a.length;\n while (i < l) {\n if (a[i] == obj) {\n a.splice(i, 1);\n return true;\n }\n i++;\n }\n return false;\n };\n HxOverrides.iter = function (a) {\n return {\n cur: 0,\n arr: a,\n hasNext: function () {\n return this.cur < this.arr.length;\n },\n next: function () {\n return this.arr[this.cur++];\n },\n };\n };\n var IntIter = function (min, max) {\n this.min = min;\n this.max = max;\n };\n IntIter.__name__ = true;\n IntIter.prototype = {\n next: function () {\n return this.min++;\n },\n hasNext: function () {\n return this.min < this.max;\n },\n __class__: IntIter,\n };\n var Std = function () {};\n Std.__name__ = true;\n Std[\"is\"] = function (v, t) {\n return js.Boot.__instanceof(v, t);\n };\n Std.string = function (s) {\n return js.Boot.__string_rec(s, \"\");\n };\n Std[\"int\"] = function (x) {\n return x | 0;\n };\n Std.parseInt = function (x) {\n var v = parseInt(x, 10);\n if (v == 0 && (HxOverrides.cca(x, 1) == 120 || HxOverrides.cca(x, 1) == 88)) v = parseInt(x);\n if (isNaN(v)) return null;\n return v;\n };\n Std.parseFloat = function (x) {\n return parseFloat(x);\n };\n Std.random = function (x) {\n return Math.floor(Math.random() * x);\n };\n var com = com || {};\n if (!com.wiris) com.wiris = {};\n if (!com.wiris.js) com.wiris.js = {};\n com.wiris.js.JsPluginTools = function () {\n this.tryReady();\n };\n com.wiris.js.JsPluginTools.__name__ = true;\n com.wiris.js.JsPluginTools.main = function () {\n var ev;\n ev = com.wiris.js.JsPluginTools.getInstance();\n haxe.Timer.delay($bind(ev, ev.tryReady), 100);\n };\n com.wiris.js.JsPluginTools.getInstance = function () {\n if (com.wiris.js.JsPluginTools.instance == null)\n com.wiris.js.JsPluginTools.instance = new com.wiris.js.JsPluginTools();\n return com.wiris.js.JsPluginTools.instance;\n };\n com.wiris.js.JsPluginTools.bypassEncapsulation = function () {\n if (window.com == null) window.com = {};\n if (window.com.wiris == null) window.com.wiris = {};\n if (window.com.wiris.js == null) window.com.wiris.js = {};\n if (window.com.wiris.js.JsPluginTools == null)\n window.com.wiris.js.JsPluginTools = com.wiris.js.JsPluginTools.getInstance();\n };\n com.wiris.js.JsPluginTools.prototype = {\n md5encode: function (content) {\n return haxe.Md5.encode(content);\n },\n doLoad: function () {\n this.ready = true;\n com.wiris.js.JsPluginTools.instance = this;\n com.wiris.js.JsPluginTools.bypassEncapsulation();\n },\n tryReady: function () {\n this.ready = false;\n if (js.Lib.document.readyState) {\n this.doLoad();\n this.ready = true;\n }\n if (!this.ready) haxe.Timer.delay($bind(this, this.tryReady), 100);\n },\n __class__: com.wiris.js.JsPluginTools,\n };\n var haxe = haxe || {};\n haxe.Log = function () {};\n haxe.Log.__name__ = true;\n haxe.Log.trace = function (v, infos) {\n js.Boot.__trace(v, infos);\n };\n haxe.Log.clear = function () {\n js.Boot.__clear_trace();\n };\n haxe.Md5 = function () {};\n haxe.Md5.__name__ = true;\n haxe.Md5.encode = function (s) {\n return new haxe.Md5().doEncode(s);\n };\n haxe.Md5.prototype = {\n doEncode: function (str) {\n var x = this.str2blks(str);\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n var step;\n var i = 0;\n while (i < x.length) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n step = 0;\n a = this.ff(a, b, c, d, x[i], 7, -680876936);\n d = this.ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = this.ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = this.ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = this.ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = this.ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = this.ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = this.ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = this.ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = this.ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = this.ff(c, d, a, b, x[i + 10], 17, -42063);\n b = this.ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = this.ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = this.ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = this.ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = this.ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = this.gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = this.gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = this.gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = this.gg(b, c, d, a, x[i], 20, -373897302);\n a = this.gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = this.gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = this.gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = this.gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = this.gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = this.gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = this.gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = this.gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = this.gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = this.gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = this.gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = this.gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = this.hh(a, b, c, d, x[i + 5], 4, -378558);\n d = this.hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = this.hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = this.hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = this.hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = this.hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = this.hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = this.hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = this.hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = this.hh(d, a, b, c, x[i], 11, -358537222);\n c = this.hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = this.hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = this.hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = this.hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = this.hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = this.hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = this.ii(a, b, c, d, x[i], 6, -198630844);\n d = this.ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = this.ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = this.ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = this.ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = this.ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = this.ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = this.ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = this.ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = this.ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = this.ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = this.ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = this.ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = this.ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = this.ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = this.ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = this.addme(a, olda);\n b = this.addme(b, oldb);\n c = this.addme(c, oldc);\n d = this.addme(d, oldd);\n i += 16;\n }\n return this.rhex(a) + this.rhex(b) + this.rhex(c) + this.rhex(d);\n },\n ii: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(c, this.bitOR(b, ~d)), a, b, x, s, t);\n },\n hh: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitXOR(this.bitXOR(b, c), d), a, b, x, s, t);\n },\n gg: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, d), this.bitAND(c, ~d)), a, b, x, s, t);\n },\n ff: function (a, b, c, d, x, s, t) {\n return this.cmn(this.bitOR(this.bitAND(b, c), this.bitAND(~b, d)), a, b, x, s, t);\n },\n cmn: function (q, a, b, x, s, t) {\n return this.addme(this.rol(this.addme(this.addme(a, q), this.addme(x, t)), s), b);\n },\n rol: function (num, cnt) {\n return (num << cnt) | (num >>> (32 - cnt));\n },\n str2blks: function (str) {\n var nblk = ((str.length + 8) >> 6) + 1;\n var blks = new Array();\n var _g1 = 0,\n _g = nblk * 16;\n while (_g1 < _g) {\n var i = _g1++;\n blks[i] = 0;\n }\n var i = 0;\n while (i < str.length) {\n blks[i >> 2] |= HxOverrides.cca(str, i) << (((str.length * 8 + i) % 4) * 8);\n i++;\n }\n blks[i >> 2] |= 128 << (((str.length * 8 + i) % 4) * 8);\n var l = str.length * 8;\n var k = nblk * 16 - 2;\n blks[k] = l & 255;\n blks[k] |= ((l >>> 8) & 255) << 8;\n blks[k] |= ((l >>> 16) & 255) << 16;\n blks[k] |= ((l >>> 24) & 255) << 24;\n return blks;\n },\n rhex: function (num) {\n var str = \"\";\n var hex_chr = \"0123456789abcdef\";\n var _g = 0;\n while (_g < 4) {\n var j = _g++;\n str += hex_chr.charAt((num >> (j * 8 + 4)) & 15) + hex_chr.charAt((num >> (j * 8)) & 15);\n }\n return str;\n },\n addme: function (x, y) {\n var lsw = (x & 65535) + (y & 65535);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 65535);\n },\n bitAND: function (a, b) {\n var lsb = a & 1 & (b & 1);\n var msb31 = (a >>> 1) & (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitXOR: function (a, b) {\n var lsb = (a & 1) ^ (b & 1);\n var msb31 = (a >>> 1) ^ (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n bitOR: function (a, b) {\n var lsb = (a & 1) | (b & 1);\n var msb31 = (a >>> 1) | (b >>> 1);\n return (msb31 << 1) | lsb;\n },\n __class__: haxe.Md5,\n };\n haxe.Timer = function (time_ms) {\n var me = this;\n this.id = window.setInterval(function () {\n me.run();\n }, time_ms);\n };\n haxe.Timer.__name__ = true;\n haxe.Timer.delay = function (f, time_ms) {\n var t = new haxe.Timer(time_ms);\n t.run = function () {\n t.stop();\n f();\n };\n return t;\n };\n haxe.Timer.measure = function (f, pos) {\n var t0 = haxe.Timer.stamp();\n var r = f();\n haxe.Log.trace(haxe.Timer.stamp() - t0 + \"s\", pos);\n return r;\n };\n haxe.Timer.stamp = function () {\n return new Date().getTime() / 1000;\n };\n haxe.Timer.prototype = {\n run: function () {},\n stop: function () {\n if (this.id == null) return;\n window.clearInterval(this.id);\n this.id = null;\n },\n __class__: haxe.Timer,\n };\n var js = js || {};\n js.Boot = function () {};\n js.Boot.__name__ = true;\n js.Boot.__unhtml = function (s) {\n return s.split(\"&\").join(\"&amp;\").split(\"<\").join(\"&lt;\").split(\">\").join(\"&gt;\");\n };\n js.Boot.__trace = function (v, i) {\n var msg = i != null ? i.fileName + \":\" + i.lineNumber + \": \" : \"\";\n msg += js.Boot.__string_rec(v, \"\");\n var d;\n if (typeof document != \"undefined\" && (d = document.getElementById(\"haxe:trace\")) != null)\n d.innerHTML += js.Boot.__unhtml(msg) + \"<br/>\";\n else if (typeof console != \"undefined\" && console.log != null) console.log(msg);\n };\n js.Boot.__clear_trace = function () {\n var d = document.getElementById(\"haxe:trace\");\n if (d != null) d.innerHTML = \"\";\n };\n js.Boot.isClass = function (o) {\n return o.__name__;\n };\n js.Boot.isEnum = function (e) {\n return e.__ename__;\n };\n js.Boot.getClass = function (o) {\n return o.__class__;\n };\n js.Boot.__string_rec = function (o, s) {\n if (o == null) return \"null\";\n if (s.length >= 5) return \"<...>\";\n var t = typeof o;\n if (t == \"function\" && (o.__name__ || o.__ename__)) t = \"object\";\n switch (t) {\n case \"object\":\n if (o instanceof Array) {\n if (o.__enum__) {\n if (o.length == 2) return o[0];\n var str = o[0] + \"(\";\n s += \"\\t\";\n var _g1 = 2,\n _g = o.length;\n while (_g1 < _g) {\n var i = _g1++;\n if (i != 2) str += \",\" + js.Boot.__string_rec(o[i], s);\n else str += js.Boot.__string_rec(o[i], s);\n }\n return str + \")\";\n }\n var l = o.length;\n var i;\n var str = \"[\";\n s += \"\\t\";\n var _g = 0;\n while (_g < l) {\n var i1 = _g++;\n str += (i1 > 0 ? \",\" : \"\") + js.Boot.__string_rec(o[i1], s);\n }\n str += \"]\";\n return str;\n }\n var tostr;\n try {\n tostr = o.toString;\n } catch (e) {\n return \"???\";\n }\n if (tostr != null && tostr != Object.toString) {\n var s2 = o.toString();\n if (s2 != \"[object Object]\") return s2;\n }\n var k = null;\n var str = \"{\\n\";\n s += \"\\t\";\n var hasp = o.hasOwnProperty != null;\n for (var k in o) {\n if (hasp && !o.hasOwnProperty(k)) {\n continue;\n }\n if (\n k == \"prototype\" ||\n k == \"__class__\" ||\n k == \"__super__\" ||\n k == \"__interfaces__\" ||\n k == \"__properties__\"\n ) {\n continue;\n }\n if (str.length != 2) str += \", \\n\";\n str += s + k + \" : \" + js.Boot.__string_rec(o[k], s);\n }\n s = s.substring(1);\n str += \"\\n\" + s + \"}\";\n return str;\n case \"function\":\n return \"<function>\";\n case \"string\":\n return o;\n default:\n return String(o);\n }\n };\n js.Boot.__interfLoop = function (cc, cl) {\n if (cc == null) return false;\n if (cc == cl) return true;\n var intf = cc.__interfaces__;\n if (intf != null) {\n var _g1 = 0,\n _g = intf.length;\n while (_g1 < _g) {\n var i = _g1++;\n var i1 = intf[i];\n if (i1 == cl || js.Boot.__interfLoop(i1, cl)) return true;\n }\n }\n return js.Boot.__interfLoop(cc.__super__, cl);\n };\n js.Boot.__instanceof = function (o, cl) {\n try {\n if (o instanceof cl) {\n if (cl == Array) return o.__enum__ == null;\n return true;\n }\n if (js.Boot.__interfLoop(o.__class__, cl)) return true;\n } catch (e) {\n if (cl == null) return false;\n }\n switch (cl) {\n case Int:\n return Math.ceil(o % 2147483648.0) === o;\n case Float:\n return typeof o == \"number\";\n case Bool:\n return o === true || o === false;\n case String:\n return typeof o == \"string\";\n case Dynamic:\n return true;\n default:\n if (o == null) return false;\n if (cl == Class && o.__name__ != null) return true;\n else null;\n if (cl == Enum && o.__ename__ != null) return true;\n else null;\n return o.__enum__ == cl;\n }\n };\n js.Boot.__cast = function (o, t) {\n if (js.Boot.__instanceof(o, t)) return o;\n else throw \"Cannot cast \" + Std.string(o) + \" to \" + Std.string(t);\n };\n js.Lib = function () {};\n js.Lib.__name__ = true;\n js.Lib.debug = function () {\n debugger;\n };\n js.Lib.alert = function (v) {\n alert(js.Boot.__string_rec(v, \"\"));\n };\n js.Lib.eval = function (code) {\n return eval(code);\n };\n js.Lib.setErrorHandler = function (f) {\n js.Lib.onerror = f;\n };\n var $_;\n function $bind(o, m) {\n var f = function () {\n return f.method.apply(f.scope, arguments);\n };\n f.scope = o;\n f.method = m;\n return f;\n }\n if (Array.prototype.indexOf)\n HxOverrides.remove = function (a, o) {\n var i = a.indexOf(o);\n if (i == -1) return false;\n a.splice(i, 1);\n return true;\n };\n else null;\n Math.__name__ = [\"Math\"];\n Math.NaN = Number.NaN;\n Math.NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY;\n Math.POSITIVE_INFINITY = Number.POSITIVE_INFINITY;\n Math.isFinite = function (i) {\n return isFinite(i);\n };\n Math.isNaN = function (i) {\n return isNaN(i);\n };\n String.prototype.__class__ = String;\n String.__name__ = true;\n Array.prototype.__class__ = Array;\n Array.__name__ = true;\n Date.prototype.__class__ = Date;\n Date.__name__ = [\"Date\"];\n var Int = { __name__: [\"Int\"] };\n var Dynamic = { __name__: [\"Dynamic\"] };\n var Float = Number;\n Float.__name__ = [\"Float\"];\n var Bool = Boolean;\n Bool.__ename__ = [\"Bool\"];\n var Class = { __name__: [\"Class\"] };\n var Enum = {};\n var Void = { __ename__: [\"Void\"] };\n if (typeof document != \"undefined\") js.Lib.document = document;\n if (typeof window != \"undefined\") {\n js.Lib.window = window;\n js.Lib.window.onerror = function (msg, url, line) {\n var f = js.Lib.onerror;\n if (f == null) return false;\n return f(msg, [url + \":\" + line]);\n };\n }\n com.wiris.js.JsPluginTools.main();\n})();\ndelete Array.prototype.__class__;\n// @codingStandardsIgnoreEnd\n","import IntegrationModel from \"@wiris/mathtype-html-integration-devkit/src/integrationmodel.js\";\nimport Util from \"@wiris/mathtype-html-integration-devkit/src/util.js\";\nimport Configuration from \"@wiris/mathtype-html-integration-devkit/src/configuration.js\";\nimport Latex from \"@wiris/mathtype-html-integration-devkit/src/latex.js\";\nimport MathML from \"@wiris/mathtype-html-integration-devkit/src/mathml.js\";\nimport Telemeter from \"@wiris/mathtype-html-integration-devkit/src/telemeter.js\";\n\n/**\n * This class represents the MathType integration for CKEditor5.\n * @extends {IntegrationModel}\n */\nexport default class CKEditor5Integration extends IntegrationModel {\n constructor(ckeditorIntegrationModelProperties) {\n const editor = ckeditorIntegrationModelProperties.editorObject;\n\n if (typeof editor.config !== \"undefined\" && typeof editor.config.get(\"mathTypeParameters\") !== \"undefined\") {\n ckeditorIntegrationModelProperties.integrationParameters = editor.config.get(\"mathTypeParameters\");\n }\n /**\n * CKEditor5 Integration.\n *\n * @param {integrationModelProperties} integrationModelAttributes\n */\n super(ckeditorIntegrationModelProperties);\n\n /**\n * Folder name used for the integration inside CKEditor plugins folder.\n */\n this.integrationFolderName = \"ckeditor_wiris\";\n }\n\n /**\n * @inheritdoc\n * @returns {string} - The CKEditor instance language.\n * @override\n */\n getLanguage() {\n // Returns the CKEDitor instance language taking into account that the language can be an object.\n // Try to get editorParameters.language, fail silently otherwise\n try {\n return this.editorParameters.language;\n } catch (e) {}\n const languageObject = this.editorObject.config.get(\"language\");\n if (languageObject != null) {\n if (typeof languageObject === \"object\") {\n if (Object.prototype.hasOwnProperty.call(languageObject, \"ui\")) {\n return languageObject.ui;\n }\n return this.editorObject.locale.uiLanguage;\n }\n return languageObject;\n }\n return super.getLanguage();\n }\n\n /**\n * Adds callbacks to the following CKEditor listeners:\n * - 'focus' - updates the current instance.\n * - 'contentDom' - adds 'doubleclick' callback.\n * - 'doubleclick' - sets to null data.dialog property to avoid modifications for MathType formulas.\n * - 'setData' - parses the data converting MathML into images.\n * - 'afterSetData' - adds an observer to MathType formulas to avoid modifications.\n * - 'getData' - parses the data converting images into selected save mode (MathML by default).\n * - 'mode' - recalculates the active element.\n */\n addEditorListeners() {\n const editor = this.editorObject;\n\n if (typeof editor.config.wirislistenersdisabled === \"undefined\" || !editor.config.wirislistenersdisabled) {\n this.checkElement();\n }\n }\n\n /**\n * Checks the current container and assign events in case that it doesn't have them.\n * CKEditor replaces several times the element element during its execution,\n * so we must assign the events again to editor element.\n */\n checkElement() {\n const editor = this.editorObject;\n const newElement = editor.sourceElement;\n\n // If the element wasn't treated, add the events.\n if (!newElement.wirisActive) {\n this.setTarget(newElement);\n this.addEvents();\n // Set the element as treated\n newElement.wirisActive = true;\n }\n }\n\n /**\n * @inheritdoc\n * @param {HTMLElement} element - HTMLElement target.\n * @param {MouseEvent} event - event which trigger the handler.\n */\n doubleClickHandler(element, event) {\n this.core.editionProperties.dbclick = true;\n if (this.editorObject.isReadOnly === false) {\n if (element.nodeName.toLowerCase() === \"img\") {\n if (Util.containsClass(element, Configuration.get(\"imageClassName\"))) {\n // Some plugins (image2, image) open a dialog on Double-click. On formulas\n // doubleclick event ends here.\n if (typeof event.stopPropagation !== \"undefined\") {\n // old I.E compatibility.\n event.stopPropagation();\n } else {\n event.returnValue = false;\n }\n this.core.getCustomEditors().disable();\n const customEditorAttr = element.getAttribute(Configuration.get(\"imageCustomEditorName\"));\n if (customEditorAttr) {\n this.core.getCustomEditors().enable(customEditorAttr);\n }\n this.core.editionProperties.temporalImage = element;\n this.openExistingFormulaEditor();\n }\n }\n }\n }\n\n /** @inheritdoc */\n static getCorePath() {\n return null; // TODO\n }\n\n /** @inheritdoc */\n callbackFunction() {\n super.callbackFunction();\n this.addEditorListeners();\n }\n\n openNewFormulaEditor() {\n // Store the editor selection as it will be lost upon opening the modal\n this.core.editionProperties.selection = this.editorObject.editing.view.document.selection;\n\n // Focus on the selected editor when multiple editor instances are present\n WirisPlugin.currentInstance = this;\n\n return super.openNewFormulaEditor();\n }\n\n /**\n * Replaces old formula with new MathML or inserts it in caret position if new\n * @param {String} mathml MathML to update old one or insert\n * @returns {module:engine/model/element~Element} The model element corresponding to the inserted image\n */\n insertMathml(mathml) {\n return this.editorObject.model.change((writer) => {\n const { isNewElement, temporalImage } = this.getCore().editionProperties;\n const selection = this.editorObject.model.document.selection;\n const attributes = Object.fromEntries(selection.getAttributes());\n const modelElementNew = writer.createElement(\"mathml\", { formula: mathml, ...attributes });\n\n if (isNewElement) {\n return this.insertNewFormula(writer, mathml, modelElementNew);\n }\n\n return this.replaceExistingFormula(mathml, modelElementNew, temporalImage);\n });\n }\n\n /**\n * Inserts a new formula at the current selection position.\n */\n insertNewFormula(writer, mathml, modelElement) {\n if (!mathml) {\n return;\n }\n\n const viewSelection =\n this.core.editionProperties.selection || this.editorObject.editing.view.document.selection;\n const modelPosition = this.editorObject.editing.mapper.toModelPosition(viewSelection.getLastPosition());\n\n this.editorObject.model.insertObject(modelElement, modelPosition);\n this.deleteViewSelection(viewSelection);\n\n // Set carret after the formula.\n const position = this.editorObject.model.createPositionAfter(modelElement);\n writer.setSelection(position);\n\n return modelElement;\n }\n\n deleteViewSelection(viewSelection) {\n if (viewSelection.isCollapsed) {\n return;\n }\n\n for (const range of viewSelection.getRanges()) {\n const modelRange = this.editorObject.editing.mapper.toModelRange(range);\n const modelSelection = this.editorObject.model.createSelection(modelRange);\n\n this.editorObject.model.deleteContent(modelSelection);\n }\n }\n\n /**\n * Replaces an existing formula with updated MathML.\n */\n replaceExistingFormula(mathml, modelElement, temporalImage) {\n const viewNode = this.editorObject.editing.view.domConverter.domToView(temporalImage);\n\n // Check if image exists in view to do standard formula editing\n if (viewNode?.parent) {\n const modelElementOld = this.editorObject.editing.mapper.toModelElement(viewNode.parent);\n\n // Insert the new <mathml> and remove the old one\n const position = this.editorObject.model.createPositionBefore(modelElementOld);\n\n if (mathml) {\n this.editorObject.model.insertObject(modelElement, position);\n }\n\n this.editorObject.model.deleteContent(this.editorObject.model.createSelection(modelElementOld, \"on\"));\n return modelElement;\n }\n\n // Otherwise it's LaTeX editing, so we insert at current selection\n if (!mathml) {\n return;\n }\n\n this.editorObject.model.insertContent(modelElement);\n\n return modelElement;\n }\n\n /**\n * Finds the text node corresponding to given DOM text element.\n * @param {element} viewElement Element to find corresponding text node of.\n * @returns {module:engine/model/text~Text|undefined} Text node corresponding to the given element or undefined if it doesn't exist.\n */\n findText(viewElement) {\n // eslint-disable-line consistent-return\n // mapper always converts text nodes to *new* model elements so we need to convert the text's parents and then come back down\n let pivot = viewElement;\n let element;\n while (!element) {\n element = this.editorObject.editing.mapper.toModelElement(\n this.editorObject.editing.view.domConverter.domToView(pivot),\n );\n pivot = pivot.parentElement;\n }\n\n // Navigate through all the subtree under `pivot` in order to find the correct text node\n const range = this.editorObject.model.createRangeIn(element);\n const descendants = Array.from(range.getItems());\n for (const node of descendants) {\n let viewElementData = viewElement.data;\n if (viewElement.nodeType === 3) {\n // Remove invisible white spaces\n viewElementData = viewElementData.replaceAll(String.fromCharCode(8288), \"\");\n }\n if (node.is(\"textProxy\") && node.data === viewElementData.replace(String.fromCharCode(160), \" \")) {\n return node.textNode;\n }\n }\n }\n\n /** @inheritdoc */\n insertFormula(_focusElement, windowTarget, mathml, _wirisProperties) {\n // eslint-disable-line no-unused-vars\n const returnObject = {};\n let mathmlOrigin;\n\n if (!mathml) {\n this.insertMathml(\"\");\n } else if (this.core.editMode === \"latex\") {\n this.handleLatexInsertion(returnObject, windowTarget, mathml);\n } else {\n mathmlOrigin = this.handleMathmlInsertion(returnObject, windowTarget, mathml);\n }\n\n const payload = {\n mathml: mathml ? MathML.safeXmlDecode(mathml) : undefined,\n elapsed_time: Date.now() - this.core.editionProperties.editionStartTime,\n toolbar: this.core.modalDialog.contentManager.toolbar,\n size: mathml?.length,\n };\n\n if (mathmlOrigin) {\n payload.mathml_origin = MathML.safeXmlDecode(mathmlOrigin);\n }\n\n try {\n Telemeter.telemeter.track(\"INSERTED_FORMULA\", {\n ...payload,\n });\n } catch (error) {\n console.error(\"Error tracking INSERTED_FORMULA\", error);\n }\n\n this.core.editionProperties.temporalImage = null;\n\n return returnObject;\n }\n\n handleLatexInsertion(returnObject, windowTarget, mathml) {\n returnObject.latex = Latex.getLatexFromMathML(mathml);\n returnObject.node = windowTarget.document.createTextNode(`$$${returnObject.latex}$$`);\n\n const { latexRange } = this.core.editionProperties;\n\n // When latexRange exists (meaning the whole LaTeX was selected or the editor was opened),\n // find the node contaning the LaTeX and replace it fully.\n if (latexRange) {\n const startNode = this.findText(latexRange.startContainer);\n const endNode = this.findText(latexRange.endContainer);\n\n // If nodes found, use standard replacement.\n if (startNode && endNode) {\n this.replaceLatexWithNodes(startNode, endNode, latexRange, returnObject.latex);\n return;\n }\n }\n\n this.replaceLatexUsingModelSearch(returnObject.latex);\n }\n\n handleMathmlInsertion(returnObject, windowTarget, mathml) {\n const mathmlOrigin = this.core.editionProperties.temporalImage?.dataset.mathml;\n\n try {\n const modelElement = this.insertMathml(mathml);\n const viewElement = this.editorObject.editing.mapper.toViewElement(modelElement);\n\n returnObject.node = this.editorObject.editing.view.domConverter.viewToDom(viewElement, windowTarget.document);\n } catch (error) {\n if (error.toString().includes(\"Cannot read property 'parent' of undefined\")) {\n this.core.modalDialog.cancelAction();\n }\n }\n\n return mathmlOrigin;\n }\n\n /**\n * Gets selection attributes excluding track changes tags.\n */\n getCleanSelectionAttributes() {\n const attributes = {};\n\n for (const [key, value] of this.editorObject.model.document.selection.getAttributes()) {\n if (!key.startsWith(\"suggestion:\") && !key.startsWith(\"comment:\")) {\n attributes[key] = value;\n }\n }\n\n return attributes;\n }\n\n /**\n * Searches for the original LaTeX in the model and replaces it.\n * Fallback when findText() cannot locate DOM nodes (like when there are track changes modifications).\n */\n replaceLatexUsingModelSearch(newLatex) {\n const foundRange = this.findLatexBlockNearSelection();\n\n if (foundRange) {\n this.editorObject.model.change((writer) => writer.setSelection(foundRange));\n this.replaceRangeWithLatex(newLatex);\n } else {\n // Insert at current position as a last resort.\n this.editorObject.model.change((writer) => {\n const newLatexText = writer.createText(`$$${newLatex}$$`, this.getCleanSelectionAttributes());\n this.editorObject.model.insertContent(newLatexText);\n });\n }\n\n this.core.editionProperties.extractedLatex = null;\n }\n\n /**\n * Checks if a text proxy has a track changes deletion marker.\n */\n isDeletedText(text) {\n for (const [key, value] of text.getAttributes()) {\n if (key.startsWith(\"suggestion:\") && value === \"deletion\") {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Finds a LaTeX block ($$...$$) near the current selection.\n * Handles track changes by considering the \"accepted\" version of text.\n */\n findLatexBlockNearSelection() {\n const position = this.editorObject.model.document.selection.getFirstPosition();\n\n if (!position?.parent) {\n return;\n }\n\n // Build LaTeX with track changes accepted suggestions, if any.\n const { textParts, acceptedText } = this.collectTextParts(position.parent);\n\n if (!acceptedText.includes(\"$$\")) {\n return;\n }\n\n // To handle multiple LaTeX on same line.\n const targetLatex = this.core.editionProperties.extractedLatex;\n const fullLatex = `$$${targetLatex}$$`;\n const startIndex = acceptedText.indexOf(fullLatex);\n\n if (startIndex === -1) {\n return;\n }\n\n const latexBoundaries = { start: startIndex, end: startIndex + fullLatex.length };\n\n return this.convertAcceptedOffsetsToModelRange(textParts, latexBoundaries);\n }\n\n /**\n * Collects all text fragments from a paragraph, tracking both model and accepted text positions.\n * This is necessary to handle track changes where some LaTeX may have suggestions.\n */\n collectTextParts(paragraph) {\n const textParts = [];\n let acceptedTextOffset = 0;\n let acceptedText = \"\";\n\n for (const item of this.editorObject.model.createRangeIn(paragraph).getItems()) {\n if (item.is(\"$textProxy\")) {\n const isDeleted = this.isDeletedText(item);\n\n textParts.push({\n text: item.data,\n startOffset: item.startOffset,\n endOffset: item.startOffset + item.data.length,\n parent: item.textNode.parent,\n acceptedStart: isDeleted ? null : acceptedTextOffset,\n acceptedEnd: isDeleted ? null : acceptedTextOffset + item.data.length,\n isDeleted\n });\n\n if (!isDeleted) {\n acceptedText += item.data;\n acceptedTextOffset += item.data.length;\n }\n }\n }\n return { textParts, acceptedText };\n }\n\n /**\n * Converts LaTeX with track changes accepted suggestions to a CKEditor model Range.\n */\n convertAcceptedOffsetsToModelRange(textParts, latexBoundaries) {\n let startPartIndex = -1, endPartIndex = -1;\n let startOffsetInPart = 0, endOffsetInPart = 0;\n\n // Find which text parts contain the LaTeX block boundaries\n for (let i = 0; i < textParts.length; i++) {\n const part = textParts[i];\n if (part.isDeleted) continue;\n\n if (startPartIndex === -1 && latexBoundaries.start >= part.acceptedStart && latexBoundaries.start <= part.acceptedEnd) {\n startPartIndex = i;\n startOffsetInPart = latexBoundaries.start - part.acceptedStart;\n }\n\n if (latexBoundaries.end >= part.acceptedStart && latexBoundaries.end <= part.acceptedEnd) {\n endPartIndex = i;\n endOffsetInPart = latexBoundaries.end - part.acceptedStart;\n }\n }\n\n if (startPartIndex === -1 || endPartIndex === -1) {\n return;\n }\n\n // Extend range to include any consecutive deleted parts after the block.\n let finalEndIndex = endPartIndex;\n let finalEndOffset = endOffsetInPart;\n\n for (let i = endPartIndex + 1; i < textParts.length && textParts[i].isDeleted; i++) {\n finalEndIndex = i;\n finalEndOffset = textParts[i].text.length;\n }\n\n const startPart = textParts[startPartIndex];\n const endPart = textParts[finalEndIndex];\n\n return this.editorObject.model.createRange(\n this.editorObject.model.createPositionAt(startPart.parent, startPart.startOffset + startOffsetInPart),\n this.editorObject.model.createPositionAt(endPart.parent, endPart.startOffset + finalEndOffset)\n );\n }\n\n replaceRangeWithLatex(newLatex) {\n this.editorObject.model.change((writer) => {\n this.editorObject.model.deleteContent(this.editorObject.model.document.selection);\n\n const newLatexText = writer.createText(`$$${newLatex}$$`, this.getCleanSelectionAttributes());\n this.editorObject.model.insertContent(newLatexText);\n });\n }\n\n /**\n * Replaces the whole LaTeX in the CKEditor5 model.\n */\n replaceLatexWithNodes(startNode, endNode, latexRange, newLatex) {\n this.editorObject.model.change((writer) => {\n const startOffset = startNode.startOffset + latexRange.startOffset;\n const endOffset = endNode.startOffset + latexRange.endOffset;\n\n let startPosition = writer.createPositionAt(startNode.parent, startOffset);\n let endPosition = writer.createPositionAt(endNode.parent, endOffset);\n\n // Adjust positions when LaTeX is adjacent to a formula.\n const startContainer = latexRange.startContainer;\n if (startContainer.nodeType === Node.TEXT_NODE && startContainer.previousSibling?.nodeType === Node.ELEMENT_NODE) {\n const originalLatex = `$$${Latex.getLatexFromMathML(\n MathML.safeXmlDecode(this.core.editionProperties.temporalImage.dataset.mathml),\n )}$$`;\n const textData = startContainer.data.replaceAll(String.fromCodePoint(8288), \"\");\n const latexOffset = textData.indexOf(originalLatex);\n\n if (latexOffset !== -1) {\n const closingDelimiterOffset = textData.substring(latexOffset + 2).indexOf(\"$$\") + 4;\n startPosition = writer.createPositionAt(startNode.parent, startNode.startOffset + latexOffset);\n endPosition = writer.createPositionAt(endNode.parent, endNode.startOffset + closingDelimiterOffset + latexOffset);\n }\n }\n\n writer.setSelection(writer.createRange(startPosition, endPosition));\n });\n\n this.replaceRangeWithLatex(newLatex);\n }\n\n /**\n * Inherited method from IntegrationModel.\n * Gets the MathML from a text node containing LaTeX.\n * Handles track changes by simulating \"accept all changes\" before conversion.\n */\n getMathmlFromTextNode(textNode, caretPosition) {\n const standardResult = Latex.getLatexFromTextNode(textNode, caretPosition);\n const acceptedLatex = this.extractAcceptedLatexFromDOM(textNode, caretPosition);\n\n // Prioritize accepted LaTeX if it differs from standard extraction (for track changes compatibility).\n // Important node: use explicit undefined check to allow empty LaTeX strings, otherwise it would not detect $$$$ as valid LaTeX.\n const latex = (acceptedLatex !== undefined && acceptedLatex !== standardResult?.latex)\n ? acceptedLatex\n : standardResult?.latex;\n\n // Do not continue if no LaTeX found by either method.\n // This is necessary since both parameters can be independently undefined in some edge cases.\n if (latex === undefined && acceptedLatex === undefined) {\n return;\n }\n\n // Verify caret is inside LaTeX block for track changes edge cases.\n if (!standardResult && acceptedLatex !== undefined && !this.isCaretInsideLatexBlock(textNode, caretPosition)) {\n return;\n }\n\n const finalLatex = latex === undefined ? acceptedLatex : latex;\n\n this.storeLatexRangeWithFallback(textNode, caretPosition, finalLatex);\n\n return Latex.getMathMLFromLatex(finalLatex);\n }\n\n isCaretInsideLatexBlock(textNode, caretPosition = 0) {\n // If LaTeX is found, the caret is inside one.\n return this.extractAcceptedLatexFromDOM(textNode, caretPosition) !== undefined;\n }\n\n /**\n * Stores the LaTeX range for its replacement later.\n */\n storeLatexRangeWithFallback(textNode, caretPosition, latex) {\n const parentTag = textNode.parentElement?.tagName?.toLowerCase();\n\n if (!textNode.parentElement || parentTag === \"textarea\") {\n return;\n }\n\n const latexResult = Latex.getLatexFromTextNode(textNode, caretPosition);\n\n if (latexResult) {\n const range = document.createRange();\n\n range.setStart(latexResult.startNode, latexResult.startPosition);\n range.setEnd(latexResult.endNode, latexResult.endPosition);\n this.core.editionProperties.latexRange = range;\n } else {\n this.core.editionProperties.latexRange = null;\n }\n\n this.core.editionProperties.extractedLatex = latex;\n }\n\n /**\n * Finds a container element containing a complete LaTeX block.\n * Necessary for track changes handling, to find the full LaTeX even with the suggestions.\n */\n findLatexContainerElement(textNode) {\n const MAX_DEPTH = 10; // Prevent excessive loops.\n let element = textNode.parentElement;\n\n for (let i = 0; i < MAX_DEPTH && element; i++) {\n const text = element.textContent || \"\";\n const openDelim = text.indexOf(\"$$\");\n\n if (openDelim !== -1 && text.includes(\"$$\", openDelim + 2)) {\n return element;\n }\n\n element = element.parentElement;\n }\n\n return null;\n }\n\n /**\n * Extracts LaTeX from DOM, skipping track changes deletion markers.\n */\n extractAcceptedLatexFromDOM(textNode, caretPositionInNode = 0) {\n const container = this.findLatexContainerElement(textNode);\n\n if (!container) {\n return;\n }\n\n const acceptedText = this.getAcceptedTextContent(container);\n\n // Calculate caret offset that will be used later to find the correct LaTeX block.\n // This includes all accepted text before textNode, plus the caret position within textNode.\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_TEXT);\n let node = walker.nextNode();\n let caretOffset = 0;\n\n while (node && node !== textNode) {\n if (!node.parentElement?.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n caretOffset += node.textContent?.length || 0;\n }\n\n node = walker.nextNode();\n }\n\n // Add the caret position within the text node, only if textNode is not deleted by Track Changes.\n if (node === textNode && !textNode.parentElement?.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n caretOffset += caretPositionInNode;\n }\n\n // Find the LaTeX block that contains the caret.\n let nextSearchIndex = 0;\n\n while (nextSearchIndex < acceptedText.length) {\n const openDelim = acceptedText.indexOf(\"$$\", nextSearchIndex);\n\n if (openDelim === -1) {\n break;\n }\n\n const closeDelim = acceptedText.indexOf(\"$$\", openDelim + 2);\n\n if (closeDelim === -1) {\n break;\n }\n\n if (caretOffset >= openDelim && caretOffset <= closeDelim + 2) {\n return acceptedText.substring(openDelim + 2, closeDelim);\n }\n\n nextSearchIndex = closeDelim + 2;\n }\n }\n\n /**\n * Recursively extracts text content, skipping track changes tags.\n */\n getAcceptedTextContent(node) {\n if (node.nodeType === Node.TEXT_NODE) {\n return node.textContent || \"\";\n }\n\n if (node.nodeType === Node.ELEMENT_NODE) {\n if (node.classList?.contains(\"ck-suggestion-marker-deletion\")) {\n return \"\";\n }\n\n return Array.from(node.childNodes).map((child) => this.getAcceptedTextContent(child)).join(\"\");\n }\n\n return \"\";\n }\n\n /** Called when the modal window is closed. */\n notifyWindowClosed() {\n this.editorObject.editing.view.focus();\n }\n}\n","/* eslint-disable max-classes-per-file */\nimport { Command } from \"ckeditor5/src/core.js\";\nimport CKEditor5Integration from \"./integration.js\";\n\n/**\n * Command for opening the MathType editor\n */\nexport class MathTypeCommand extends Command {\n execute(options = {}) {\n // Check we get a valid integration\n // eslint-disable-next-line no-prototype-builtins\n if (!options.hasOwnProperty(\"integration\") || !(options.integration instanceof CKEditor5Integration)) {\n throw 'Must pass a valid CKEditor5Integration instance as attribute \"integration\" of options';\n }\n\n // Save the integration instance as a property of the command.\n this.integration = options.integration;\n\n // Set custom editor or disable it\n this.setEditor();\n\n // Open the editor\n this.openEditor();\n }\n\n /**\n * Sets the appropriate custom editor, if any, or disables them.\n */\n setEditor() {\n // It's possible that a custom editor was last used.\n // We need to disable it to avoid wrong behaviors.\n this.integration.core.getCustomEditors().disable();\n }\n\n /**\n * Checks whether we are editing an existing formula or a new one and opens the editor.\n */\n openEditor() {\n this.integration.core.editionProperties.dbclick = false;\n const image = this._getSelectedImage();\n if (\n typeof image !== \"undefined\" &&\n image !== null &&\n image.classList.contains(WirisPlugin.Configuration.get(\"imageClassName\"))\n ) {\n this.integration.core.editionProperties.temporalImage = image;\n this.integration.openExistingFormulaEditor();\n } else {\n this.integration.openNewFormulaEditor();\n }\n }\n\n /**\n * Gets the currently selected formula image\n * @returns {Element} selected image, if any, undefined otherwise\n */\n _getSelectedImage() {\n const { selection } = this.editor.editing.view.document;\n\n // If we can not extract the formula, fall back to default behavior.\n if (selection.isCollapsed || selection.rangeCount !== 1) {\n return;\n }\n\n // Look for the <span> wrapping the formula and then for the <img/> inside\n\n const range = selection.getFirstRange();\n\n let image;\n\n for (const span of range) {\n if (span.item.name !== \"span\") {\n return;\n }\n image = span.item.getChild(0);\n break;\n }\n\n if (!image) {\n return;\n }\n\n // eslint-disable-next-line consistent-return\n return this.editor.editing.view.domConverter.mapViewToDom(image);\n }\n}\n\n/**\n * Command for opening the ChemType editor\n */\nexport class ChemTypeCommand extends MathTypeCommand {\n setEditor() {\n this.integration.core.getCustomEditors().enable(\"chemistry\");\n }\n}\n","// CKEditor imports\nimport { Plugin } from \"ckeditor5/src/core.js\";\nimport { ButtonView } from \"ckeditor5/src/ui.js\";\nimport { ClickObserver, HtmlDataProcessor, XmlDataProcessor, ViewUpcastWriter } from \"ckeditor5/src/engine.js\";\nimport { Widget, toWidget, viewToModelPositionOutsideModelElement } from \"ckeditor5/src/widget.js\";\n\n// MathType API imports\nimport IntegrationModel from \"@wiris/mathtype-html-integration-devkit/src/integrationmodel.js\";\nimport Core from \"@wiris/mathtype-html-integration-devkit/src/core.src.js\";\nimport Parser from \"@wiris/mathtype-html-integration-devkit/src/parser.js\";\nimport Util from \"@wiris/mathtype-html-integration-devkit/src/util.js\";\nimport Image from \"@wiris/mathtype-html-integration-devkit/src/image.js\";\nimport Configuration from \"@wiris/mathtype-html-integration-devkit/src/configuration.js\";\nimport Listeners from \"@wiris/mathtype-html-integration-devkit/src/listeners.js\";\nimport MathML from \"@wiris/mathtype-html-integration-devkit/src/mathml.js\";\nimport Latex from \"@wiris/mathtype-html-integration-devkit/src/latex.js\";\nimport StringManager from \"@wiris/mathtype-html-integration-devkit/src/stringmanager.js\";\nimport \"@wiris/mathtype-html-integration-devkit/src/md5.js\";\n\n// Local imports\nimport { MathTypeCommand, ChemTypeCommand } from \"./commands.js\";\nimport CKEditor5Integration from \"./integration.js\";\n\nimport mathIcon from \"../theme/icons/ckeditor5-formula.svg\";\nimport chemIcon from \"../theme/icons/ckeditor5-chem.svg\";\nimport \"../theme/styles.css\";\n\nimport packageInfo from \"../package.json\";\n\nexport let currentInstance = null; // eslint-disable-line import/no-mutable-exports\n\nexport default class MathType extends Plugin {\n static get requires() {\n return [Widget];\n }\n\n static get pluginName() {\n return \"MathType\";\n }\n\n init() {\n // Create the MathType API Integration object\n const integration = this._addIntegration();\n currentInstance = integration;\n\n // Add the MathType and ChemType commands to the editor\n this._addCommands(integration);\n\n // Add the track changes feature integration\n this._addTrackChangesIntegration(integration);\n\n // Add the buttons for MathType and ChemType\n this._addViews(integration);\n\n // Registers the <mathml> element in the schema\n this._addSchema();\n\n // Add the downcast and upcast converters\n this._addConverters(integration);\n\n // Expose the WirisPlugin variable to the window\n this._exposeWiris();\n }\n\n /**\n * Inherited from Plugin class: Executed when CKEditor5 is destroyed\n */\n destroy() {\n // eslint-disable-line class-methods-use-this\n currentInstance?.destroy();\n }\n\n /**\n * Create the MathType API Integration object\n * @returns {CKEditor5Integration} the integration object\n */\n _addIntegration() {\n const { editor } = this;\n\n /**\n * Integration model constructor attributes.\n * @type {integrationModelProperties}\n */\n const integrationProperties = {};\n integrationProperties.environment = {};\n integrationProperties.environment.editor = \"CKEditor5\";\n integrationProperties.environment.editorVersion = \"5.x\";\n integrationProperties.version = packageInfo.version;\n integrationProperties.editorObject = editor;\n integrationProperties.serviceProviderProperties = {};\n integrationProperties.serviceProviderProperties.URI = \"https://www.wiris.net/demo/plugins/app\";\n integrationProperties.serviceProviderProperties.server = \"java\";\n integrationProperties.target = editor.sourceElement;\n integrationProperties.scriptName = \"bundle.js\";\n integrationProperties.managesLanguage = true;\n // etc\n\n // There are platforms like Drupal that initialize CKEditor but they hide or remove the container element.\n // To avoid a wrong behavior, this integration only starts if the workspace container exists.\n let integration;\n if (integrationProperties.target) {\n // Instance of the integration associated to this editor instance\n integration = new CKEditor5Integration(integrationProperties);\n integration.init();\n integration.listeners.fire(\"onTargetReady\", {});\n\n integration.checkElement();\n\n this.listenTo(\n editor.editing.view.document,\n \"click\",\n (evt, data) => {\n // Is Double-click\n if (data.domEvent.detail === 2) {\n integration.doubleClickHandler(data.domTarget, data.domEvent);\n evt.stop();\n }\n },\n { priority: \"highest\" },\n );\n }\n\n return integration;\n }\n\n /**\n * Add the MathType and ChemType commands to the editor\n */\n _addCommands() {\n const { editor } = this;\n\n // Add command to open the formula editor\n editor.commands.add(\"MathType\", new MathTypeCommand(editor));\n\n // Add command to open the chemistry formula editor\n editor.commands.add(\"ChemType\", new ChemTypeCommand(editor));\n }\n\n /**\n * Add the buttons for MathType and ChemType\n * @param {CKEditor5Integration} integration the integration object\n */\n _addViews(integration) {\n const { editor } = this;\n\n // Check if MathType editor is enabled\n if (Configuration.get(\"editorEnabled\")) {\n // Add button for the formula editor\n editor.ui.componentFactory.add(\"MathType\", (locale) => {\n const view = new ButtonView(locale);\n\n // View is enabled iff command is enabled\n view.bind(\"isEnabled\").to(editor.commands.get(\"MathType\"), \"isEnabled\");\n view.set({\n label: StringManager.get(\"insert_math\", integration.getLanguage()),\n icon: mathIcon,\n tooltip: true,\n });\n\n // Callback executed once the image is clicked.\n view.on(\"execute\", () => {\n editor.execute(\"MathType\", {\n integration, // Pass integration as parameter\n });\n });\n\n return view;\n });\n }\n\n // Check if ChemType editor is enabled\n if (Configuration.get(\"chemEnabled\")) {\n // Add button for the chemistry formula editor\n editor.ui.componentFactory.add(\"ChemType\", (locale) => {\n const view = new ButtonView(locale);\n\n // View is enabled iff command is enabled\n view.bind(\"isEnabled\").to(editor.commands.get(\"ChemType\"), \"isEnabled\");\n\n view.set({\n label: StringManager.get(\"insert_chem\", integration.getLanguage()),\n icon: chemIcon,\n tooltip: true,\n });\n\n // Callback executed once the image is clicked.\n view.on(\"execute\", () => {\n editor.execute(\"ChemType\", {\n integration, // Pass integration as parameter\n });\n });\n\n return view;\n });\n }\n\n // Observer for the Double-click event\n editor.editing.view.addObserver(ClickObserver);\n }\n\n /**\n * Registers the <mathml> element in the schema\n */\n _addSchema() {\n const { schema } = this.editor.model;\n\n schema.register(\"mathml\", {\n inheritAllFrom: \"$inlineObject\",\n allowAttributes: [\"formula\", \"htmlContent\"],\n });\n }\n\n /**\n * Add the downcast and upcast converters\n */\n _addConverters(integration) {\n const { editor } = this;\n\n // Editing view -> Model\n editor.conversion.for(\"upcast\").elementToElement({\n view: {\n name: \"span\",\n classes: \"ck-math-widget\",\n },\n model: (viewElement, { writer: modelWriter }) => {\n const formula = MathML.safeXmlDecode(viewElement.getChild(0).getAttribute(\"data-mathml\"));\n return modelWriter.createElement(\"mathml\", {\n formula,\n });\n },\n });\n\n // Data view -> Model\n editor.data.upcastDispatcher.on(\"element:math\", (evt, data, conversionApi) => {\n const { consumable, writer } = conversionApi;\n const { viewItem } = data;\n\n // When element was already consumed then skip it.\n if (!consumable.test(viewItem, { name: true })) {\n return;\n }\n\n // If we encounter any <math> with a LaTeX annotation inside,\n // convert it into a \"$$...$$\" string.\n const isLatex = mathIsLatex(viewItem); // eslint-disable-line no-use-before-define\n\n // Get the formula of the <math> (which is all its children).\n const processor = new XmlDataProcessor(editor.editing.view.document);\n\n // Only god knows why the following line makes viewItem lose all of its children,\n // so we obtain isLatex before doing this because we need viewItem's children for that.\n const upcastWriter = new ViewUpcastWriter(editor.editing.view.document);\n const viewDocumentFragment = upcastWriter.createDocumentFragment(viewItem.getChildren());\n\n // and obtain the attributes of <math> too!\n const mathAttributes = [...viewItem.getAttributes()].map(([key, value]) => ` ${key}=\"${value}\"`).join(\"\");\n\n // We process the document fragment\n let formula = processor.toData(viewDocumentFragment) || \"\";\n\n // And obtain the complete formula\n formula = Util.htmlSanitize(`<math${mathAttributes}>${formula}</math>`);\n\n // Replaces the < & > characters to its HTMLEntity to avoid render issues.\n formula = formula.replaceAll('\"<\"', '\"&lt;\"').replaceAll('\">\"', '\"&gt;\"').replaceAll(\"><<\", \">&lt;<\");\n\n /* Model node that contains what's going to actually be inserted. This can be either:\n - A <mathml> element with a formula attribute set to the given formula, or\n - If the original <math> had a LaTeX annotation, then the annotation surrounded by \"$$...$$\" */\n const modelNode = isLatex\n ? writer.createText(Parser.initParse(formula, integration.getLanguage()))\n : writer.createElement(\"mathml\", { formula });\n\n // Find allowed parent for element that we are going to insert.\n // If current parent does not allow to insert element but one of the ancestors does\n // then split nodes to allowed parent.\n const splitResult = conversionApi.splitToAllowedParent(modelNode, data.modelCursor);\n\n // When there is no split result it means that we can't insert element to model tree, so let's skip it.\n if (!splitResult) {\n return;\n }\n\n // Insert element on allowed position.\n conversionApi.writer.insert(modelNode, splitResult.position);\n\n // Consume appropriate value from consumable values list.\n consumable.consume(viewItem, { name: true });\n\n const parts = conversionApi.getSplitParts(modelNode);\n\n // Set conversion result range.\n data.modelRange = writer.createRange(\n conversionApi.writer.createPositionBefore(modelNode),\n conversionApi.writer.createPositionAfter(parts[parts.length - 1]),\n );\n\n // Now we need to check where the `modelCursor` should be.\n if (splitResult.cursorParent) {\n // If we split parent to insert our element then we want to continue conversion in the new part of the split parent.\n //\n // before: <allowed><notAllowed>foo[]</notAllowed></allowed>\n // after: <allowed><notAllowed>foo</notAllowed><converted></converted><notAllowed>[]</notAllowed></allowed>\n\n data.modelCursor = conversionApi.writer.createPositionAt(splitResult.cursorParent, 0);\n } else {\n // Otherwise just continue after inserted element.\n data.modelCursor = data.modelRange.end;\n }\n });\n\n // Data view -> Model\n editor.data.upcastDispatcher.on(\n \"element:img\",\n (evt, data, conversionApi) => {\n const { consumable, writer } = conversionApi;\n const { viewItem } = data;\n\n // Only upcast when is wiris formula\n if (viewItem.getClassNames().next().value !== \"Wirisformula\") {\n return;\n }\n\n // The following code ensures that the element's name, attributes, and classes are consumed.\n // This means that they are marked as handled so that other parts of the system or plugins don't process them again.\n\n // Check if we can consume the element name.\n if (!consumable.test(viewItem, { name: true })) {\n return;\n }\n\n // Consume the name, attributes, and classes so nothing else processes it.\n consumable.consume(viewItem, { name: true });\n for (const attrName of viewItem.getAttributes()) {\n consumable.consume(viewItem, { attributes: [attrName] });\n }\n\n for (const className of viewItem.getClassNames()) {\n consumable.consume(viewItem, { classes: [className] });\n }\n\n const mathAttributes = [...viewItem.getAttributes()].map(([key, value]) => ` ${key}=\"${value}\"`).join(\"\");\n const htmlContent = Util.htmlSanitize(`<img${mathAttributes}>`);\n\n const modelNode = writer.createElement(\"mathml\", { htmlContent });\n\n // Find allowed parent for element that we are going to insert.\n // If current parent does not allow to insert element but one of the ancestors does\n // then split nodes to allowed parent.\n const splitResult = conversionApi.splitToAllowedParent(modelNode, data.modelCursor);\n\n // When there is no split result it means that we can't insert element to model tree, so let's skip it.\n if (!splitResult) {\n return;\n }\n\n // Insert element on allowed position.\n conversionApi.writer.insert(modelNode, splitResult.position);\n\n // Consume appropriate value from consumable values list.\n consumable.consume(viewItem, { name: true });\n\n const parts = conversionApi.getSplitParts(modelNode);\n\n // Set conversion result range.\n data.modelRange = writer.createRange(\n conversionApi.writer.createPositionBefore(modelNode),\n conversionApi.writer.createPositionAfter(parts[parts.length - 1]),\n );\n\n // Now we need to check where the `modelCursor` should be.\n if (splitResult.cursorParent) {\n // If we split parent to insert our element then we want to continue conversion in the new part of the split parent.\n //\n // before: <allowed><notAllowed>foo[]</notAllowed></allowed>\n // after: <allowed><notAllowed>foo</notAllowed><converted></converted><notAllowed>[]</notAllowed></allowed>\n\n data.modelCursor = conversionApi.writer.createPositionAt(splitResult.cursorParent, 0);\n } else {\n // Otherwise just continue after inserted element.\n data.modelCursor = data.modelRange.end;\n }\n },\n // Ensures MathType processes the Wiris formulas before other plugins, preventing conflicts.\n { priority: \"high\" },\n );\n\n /**\n * Whether the given view <math> element has a LaTeX annotation element.\n * @param {*} math\n * @returns {bool}\n */\n function mathIsLatex(math) {\n const semantics = math.getChild(0);\n if (!semantics || semantics.name !== \"semantics\") return false;\n for (const child of semantics.getChildren()) {\n if (child.name === \"annotation\" && child.getAttribute(\"encoding\") === \"LaTeX\") {\n return true;\n }\n }\n return false;\n }\n\n function createViewWidget(modelItem, { writer: viewWriter }) {\n const widgetElement = viewWriter.createContainerElement(\"span\", {\n class: \"ck-math-widget\",\n });\n\n const mathUIElement = createViewImage(modelItem, { writer: viewWriter }); // eslint-disable-line no-use-before-define\n\n if (mathUIElement) {\n viewWriter.insert(viewWriter.createPositionAt(widgetElement, 0), mathUIElement);\n }\n\n return toWidget(widgetElement, viewWriter);\n }\n\n function createViewImage(modelItem, { writer: viewWriter }) {\n const htmlDataProcessor = new HtmlDataProcessor(viewWriter.document);\n\n const formula = modelItem.getAttribute(\"formula\");\n const htmlContent = modelItem.getAttribute(\"htmlContent\");\n\n if (!formula && !htmlContent) {\n return null;\n }\n\n let imgElement = null;\n\n if (htmlContent) {\n imgElement = htmlDataProcessor.toView(htmlContent).getChild(0);\n } else if (formula) {\n const mathString = formula.replaceAll('ref=\"<\"', 'ref=\"&lt;\"');\n\n const lang = integration?.getLanguage() || \"en\"; // Safe fallback to 'en' in case integration is undefined.\n const imgHtml = Parser.initParse(mathString, lang);\n\n imgElement = htmlDataProcessor.toView(imgHtml).getChild(0);\n\n // Add HTML element (<img>) to model\n viewWriter.setAttribute(\"htmlContent\", imgHtml, modelItem);\n }\n\n /* Although we use the HtmlDataProcessor to obtain the attributes,\n * we must create a new EmptyElement which is independent of the\n * DataProcessor being used by this editor instance\n */\n if (imgElement) {\n return viewWriter.createEmptyElement(\"img\", imgElement.getAttributes());\n }\n\n return null;\n }\n\n // Model -> Editing view\n editor.conversion.for(\"editingDowncast\").elementToElement({\n model: \"mathml\",\n view: createViewWidget,\n });\n\n // Model -> Data view\n editor.conversion.for(\"dataDowncast\").elementToElement({\n model: \"mathml\",\n view: createDataString, // eslint-disable-line no-use-before-define\n });\n\n /**\n * Makes a copy of the given view node.\n * @param {module:engine/view/node~Node} sourceNode Node to copy.\n * @returns {module:engine/view/node~Node} Copy of the node.\n */\n function clone(viewWriter, sourceNode) {\n if (sourceNode.is(\"text\")) {\n return viewWriter.createText(sourceNode.data);\n }\n if (sourceNode.is(\"element\")) {\n if (sourceNode.is(\"emptyElement\")) {\n return viewWriter.createEmptyElement(sourceNode.name, sourceNode.getAttributes());\n }\n const element = viewWriter.createContainerElement(sourceNode.name, sourceNode.getAttributes());\n for (const child of sourceNode.getChildren()) {\n viewWriter.insert(viewWriter.createPositionAt(element, \"end\"), clone(viewWriter, child));\n }\n return element;\n }\n\n throw new Exception(\"Given node has unsupported type.\"); // eslint-disable-line no-undef\n }\n\n function createDataString(modelItem, { writer: viewWriter }) {\n const htmlDataProcessor = new HtmlDataProcessor(viewWriter.document);\n\n // Load img element\n const mathString =\n modelItem.getAttribute(\"htmlContent\") || Parser.endParseSaveMode(modelItem.getAttribute(\"formula\"));\n\n const sourceMathElement = htmlDataProcessor.toView(mathString).getChild(0);\n\n return clone(viewWriter, sourceMathElement);\n }\n\n // This stops the view selection getting into the <span>s and messing up caret movement\n editor.editing.mapper.on(\n \"viewToModelPosition\",\n viewToModelPositionOutsideModelElement(editor.model, (viewElement) => viewElement.hasClass(\"ck-math-widget\")),\n );\n\n // Keep a reference to the original get and set function.\n const { get, set } = editor.data;\n\n // Listen to the preview command execution to set a flag in localStorage.\n // This flag will be used in the getData() to prevent converting formulas while generating the preview.\n // This is necessary because the preview command uses editor.getData() multiple times internally.\n const previewCommand = editor.commands.get(\"previewFinalContent\");\n\n if (previewCommand) {\n this.listenTo(\n previewCommand,\n \"execute\",\n () => {\n localStorage.setItem(\"isGeneratingPreview\", true);\n\n setTimeout(() => {\n localStorage.setItem(\"isGeneratingPreview\", false);\n }, 1000);\n },\n { priority: \"high\" },\n );\n }\n\n /**\n * Listener for getData() that handles Track Changes and semantics cleanup.\n *\n * This listener intercepts the getData() call and processes the output differently\n * depending on whether we're generating a preview or performing a save operation:\n *\n * - Preview Mode: Removes deleted formulas (marked with Track Changes deletion attributes)\n * while preserving formula images for visual representation.\n * - Save Mode: Converts formulas to clean MathML by removing semantic annotations\n * and handwritten data, ensuring clean storage format.\n */\n editor.data.on(\n \"get\",\n (e) => {\n const output = e.return;\n\n // Check if we're in preview mode (flag set by previewFinalContent command)\n const isGeneratingPreview = localStorage.getItem(\"isGeneratingPreview\");\n\n if (isGeneratingPreview === \"true\") {\n // Wrap a <span> around all img elements to preserve Track Changes visibility for formulas.\n // Span must contain all the img attributes to avoid render issues.\n const attributesToPreserve = [\"data-suggestion-\", \"data-comment-\"];\n\n const previewOutput = output.replace(/<img([^>]*class=\"Wirisformula\"[^>]*)>/g, (match, attributes) => {\n // Extract Track Changes attributes\n const trackChangesAttrs = [];\n\n attributesToPreserve.forEach((prefix) => {\n const regex = new RegExp(`(${prefix}[^=]*=\"[^\"]*\")`, \"g\");\n let attrMatch;\n\n while ((attrMatch = regex.exec(attributes)) !== null) {\n trackChangesAttrs.push(attrMatch[1]);\n }\n });\n\n const spanAttrs = trackChangesAttrs.length > 0 ? ` ${trackChangesAttrs.join(\" \")}` : \"\";\n return `<span${spanAttrs}>${match}</span>`;\n });\n\n // Cleans all the semantics tag for safexml\n // including the handwritten data points\n e.return = MathML.removeSafeXMLSemantics(previewOutput);\n\n return;\n }\n\n // Clean track changes markers only from LaTeX content before converting to MathML.\n const latexParsedOutput = this._endParseEditModeWithTrackChangesSupport(output);\n\n // Convert formula images to MathML. It's important to use the save mode to prevent issues.\n const parsedResult = Parser.endParseSaveMode(latexParsedOutput);\n\n // Remove all semantic annotations (including handwritten data points)\n // to ensure clean, standard MathML format for storage\n e.return = MathML.removeSafeXMLSemantics(parsedResult);\n },\n { priority: \"low\" },\n );\n\n /**\n * Hack to transform <math> with LaTeX into $$LaTeX$$ and formula images in editor.setData().\n */\n editor.data.on(\n \"set\",\n (e, args) => {\n // Retrieve the data to be set on the CKEditor.\n let modifiedData = args[0];\n // Regex to find all mathml formulas.\n const regexp = /(<img\\b[^>]*>)|(<math(.*?)<\\/math>)/gm;\n const formulas = [];\n let formula;\n\n // Both data.set from the source plugin and console command are taken into account as the data received is MathML or an image containing the MathML.\n while ((formula = regexp.exec(modifiedData)) !== null) {\n formulas.push(formula[0]);\n }\n\n // Loop to find LaTeX and formula images and replace the MathML for the both.\n formulas.forEach((formula) => {\n if (formula.includes('encoding=\"LaTeX\"')) {\n // LaTeX found.\n const latex = `$$$${Latex.getLatexFromMathML(formula)}$$$`; // We add $$$ instead of $$ because the replace function ignores one $.\n modifiedData = modifiedData.replace(formula, latex);\n } else if (formula.includes(\"<img\")) {\n // If we found a formula image, we should find MathML data, and then substitute the entire image.\n const regexp = /«math\\b[^»]*»(.*?)«\\/math»/g;\n const safexml = formula.match(regexp);\n if (safexml !== null) {\n const decodeXML = MathML.safeXmlDecode(safexml[0]);\n modifiedData = modifiedData.replace(formula, decodeXML);\n }\n }\n });\n\n args[0] = modifiedData;\n },\n { priority: \"high\" },\n );\n }\n\n /**\n * When track changes markers are present inside a LaTeX block:\n * - The LaTeX is preserved as text (not converted to MathML) to maintain suggestions.\n * - It also prevents the issue where the suggestions were placed as MathML tags.\n *\n * When no track changes markers are inside a LaTeX block:\n * - The LaTeX is converted to MathML normally. (previous default behavior)\n *\n * This is to ensure that:\n * 1. LaTeX without suggestions gets converted to MathML for final output.\n * 2. LaTeX with pending suggestions is preserved so setData(getData()) works correctly.\n */\n _endParseEditModeWithTrackChangesSupport(code) {\n if (!Configuration.get(\"parseModes\").includes(\"latex\")) {\n return code;\n }\n\n const latexBlockRegex = /\\$\\$([\\s\\S]*?)\\$\\$/g;\n const trackChangesRegex = /<(suggestion|comment)-(start|end)/i;\n\n //TODO: Validate if replace all is needed instead of just replace when it is all implemented.\n return code.replace(latexBlockRegex, (fullMatch, latexContent) => {\n // Check if this LaTeX contains track changes markers to prevent conversion.\n if (trackChangesRegex.test(latexContent)) {\n return fullMatch;\n }\n\n // When LaTeX has no suggestion, it can be converted to MathML.\n const decodedLatex = Util.htmlEntitiesDecode(latexContent);\n let mathml = Util.htmlSanitize(Latex.getMathMLFromLatex(decodedLatex, true));\n\n if (!Configuration.get(\"saveHandTraces\")) {\n mathml = MathML.removeAnnotation(mathml, \"application/json\");\n }\n\n return mathml;\n });\n }\n\n /**\n * Expose the WirisPlugin variable to the window\n */\n // eslint-disable-next-line class-methods-use-this\n _exposeWiris() {\n window.WirisPlugin = {\n Core,\n Parser,\n Image,\n MathML,\n Util,\n Configuration,\n Listeners,\n IntegrationModel,\n currentInstance,\n Latex,\n };\n }\n\n _addTrackChangesIntegration(integration) {\n const { editor } = this;\n\n if (editor.plugins.has(\"TrackChangesEditing\")) {\n const trackChangesEditing = editor.plugins.get(\"TrackChangesEditing\");\n\n // Makes MathType and ChemType buttons available when editor is in the track changes mode\n trackChangesEditing.enableCommand(\"MathType\");\n trackChangesEditing.enableCommand(\"ChemType\");\n\n // Adds custom label replacing the default 'mathml'.\n // Handles both singular and plural forms.\n trackChangesEditing.descriptionFactory.registerElementLabel(\n \"mathml\",\n (quantity) =>\n (quantity > 1 ? `${quantity} ` : \"\") +\n StringManager.get(quantity > 1 ? \"formulas\" : \"formula\", integration?.getLanguage() || \"en\"),\n );\n\n this._registerLatexTrackChangesAdapter(integration);\n }\n }\n\n /**\n * Register a custom adapter for handling LaTeX text changes.\n * This ensures that LaTeX formulas ($$...$$) are treated as atomic units\n * when used by the track changes feature and avoid partial edits.\n */\n _registerLatexTrackChangesAdapter(integration) {\n const { editor } = this;\n\n editor.model.document.on(\"change:data\", () => {\n if (integration) {\n integration._trackChangesEnabled =\n editor.commands.get(\"trackChanges\")?.value ?? false;\n }\n });\n }\n}\n"],"names":["Constants","safeXmlCharactersEntities","tagOpener","tagCloser","doubleQuote","realDoubleQuote","safeBadBlackboardCharacters","ltElement","gtElement","ampElement","safeGoodBlackboardCharacters","xmlCharacters","id","ampersand","quote","safeXmlCharacters","MathML","isMathmlInAttribute","content","i","mathAtt","attContent","att","atts","regex","expression","RegExp","actualContent","substring","reversed","split","reverse","join","exists","test","safeXmlDecode","input","window","_wrs_blackboard","returnValue","currentEntity","length","character","charAt","match","safeXmlEncode","mathMLEntities","mathml","toReturn","codePointAt","end","indexOf","container","document","createElement","innerHTML","Util","fixedCharCodeAt","textContent","innerText","addCustomEditorClassAttribute","customEditor","start","substr","removeCustomEditorClassAttribute","replace","addAnnotation","annotationEncoding","containsAnnotation","mathmlWithAnnotation","closeSemanticsIndex","isEmpty","endIndexInline","endIndexNonInline","endIndex","beginMathMLContent","endMathmlContent","lastIndexOf","mathmlContent","removeAnnotation","mathmlWithoutAnnotation","openAnnotationTag","closeAnnotationTag","startAnnotationIndex","differentAnnotationFound","differentAnnotationIndex","closeIndex","endAnnotationIndex","startIndex","removeSemantics","semanticsStartingTagRegex","semanticsEndingTagRegex","removeSafeXMLSemantics","element","semanticsSafeStartingTagRegex","semanticsSafeEndingTagRegex","removeSemanticsOcurrences","text","characters","mathTagStart","mathTagEnd","mathTagEndline","semanticsTagStart","annotationTagStart","output","mathTagEndIndex","mathTagEndlineIndex","firstTagCloser","semanticsIndex","mmlTagStart","annotationIndex","mmlContent","containClass","mathML","className","classIndex","classTagEndIndex","classTag","closeTag","closeTagInline","firstCloseTagIndex","firstCloseTagInlineIndex","empty","mathTagEndRegex","mathTagEndArray","exec","index","encodeProperties","replacer","quoteIndex","propertyValue","propertyValueEncoded","htmlEntities","matchEncoded","mathmlEncoded","Configuration","addConfiguration","properties","Object","assign","_properties","value","get","key","prototype","hasOwnProperty","call","set","update","updateProperty","TextCache","cache","populate","Listeners","listeners","add","listener","push","fire","eventName","event","cancelled","callback","defaultPrevented","newListener","ServiceProvider","_listeners","addListener","fireEvent","parameters","_parameters","servicePaths","_servicePaths","setServicePath","service","path","getServicePath","serviceName","integrationPath","_integrationPath","getServerURL","url","location","href","arr","result","init","configurationURI","createServiceURI","createImageURI","showImageURI","getMathMLURI","serviceURI","URI","serverPath","getUrl","postVariables","currentPath","toString","httpRequest","createHttpRequest","open","header","convertStringToObject","entries","forEach","val","setRequestHeader","send","httpBuildQuery","responseText","getService","response","getVariables","serviceUrl","getServerLanguageFromService","extension","serverExtension","concatenateUrl","server","Latex","_cache","getLatexFromMathML","mathmlWithoutSemantics","data","mml","jsonResponse","JSON","parse","latex","status","latexHtmlEntitiesEncoded","mathmlWithSemantics","getMathMLFromLatex","includeLatexOnSemantics","latexCache","saveLatex","parseMathmlToLatex","mathTagBegin","openTarget","closeTarget","startAnnotation","closeAnnotation","getLatexFromTextNode","textNode","caretPosition","latexTags","defaultLatexTags","close","startNode","previousSibling","nodeType","getNextLatexPosition","currentNode","currentPosition","tag","position","nodeValue","nextSibling","node","isPrevious","endNode","endPosition","tagLength","startPosition","StringManager","Error","lang","language","slice","strings","console","warn","translations","eventTarget","createEvent","eventObject","initEvent","dispatchEvent","createEventObject","addEvent","callBackFunction","addEventListener","attachEvent","removeEvent","removeEventListener","detachEvent","elementEventsMap","Map","addElementEvents","doubleClickHandler","mousedownHandler","mouseupHandler","removeElementEvents","entry","callbackDblclick","realEvent","srcElement","target","callbackMousedown","callbackMouseup","delete","addClass","containsClass","currentClasses","removeClass","newClassName","classes","trim","convertOldXmlinitialtextAttribute","xitpos","valpos","startquote","endquote","newvalue","keyValueString","map","pair","reduce","resultObject","tagName","attributes","creator","undefined","html","keys","attributeName","e","setAttribute","createObject","objectCode","recursiveParamsFix","object","getAttribute","attributesParsed","nodeName","param","NAME","name","VALUE","removeAttribute","parentNode","replaceChild","applet","childNodes","toLowerCase","appendChild","firstChild","createObjectCode","specified","path1","path2","separator","htmlSanitize","annotationRegex","annotation","DOMPurify","sanitize","ADD_TAGS","ADD_ATTR","startTag","endTag","safeContent","safeAnnotation","htmlEntitiesDecode","textarea","XMLHttpRequest","ActiveXObject","oc","urlEncode","propertiesToString","hash","n","j","s1","s2","compareStrings","a","b","an","bn","c","string","idx","code","charCodeAt","hi","low","Number","isNaN","urlToAssArray","query","ss","h","s","kv","decodeURIComponent","clearString","encodeURIComponent","getWIRISImageOutput","imgCode","convertToXml","convertToSafeXml","imgObject","dataMathML","TRACK_CHANGES_ATTRIBUTE_PREFIXES","preservedAttributes","attributeValue","isTrackChangesAttribute","some","prefix","startsWith","attributesString","safeMathML","getNodeLength","staticNodeLengths","IMG","BR","toUpperCase","getSelectedItem","isIframe","forceGetSelection","windowTarget","contentWindow","focus","selection","range","createRange","parentElement","htmlText","execCommand","temporalObject","pasteHTML","getElementById","createTextNode","insertBefore","removeChild","item","getSelection","getRangeAt","startContainer","startOffset","endContainer","endOffset","localName","classList","contains","remove","emptySpan","getSelectedItemOnTextarea","textNodeValues","selectionStart","getElementsByNameFromString","autoClosed","elements","endString","decode64","PLUS","SLASH","NUMBER","LOWER","UPPER","PLUS_URL_SAFE","SLASH_URL_SAFE","b64ToByteArray","b64String","tmp","l","placeHolders","readInt32","bytes","int32","splice","readByte","shift","readBytes","pos","len","updateTextArea","selectionEnd","selectionEndSub","updateExistingTextOnTextarea","textareaStart","addArgument","parameter","sep","Image","removeImgDataAttributes","img","attributesToRemove","attribute","clone","originImg","destImg","customEditorAttributeName","hasAttribute","mathmlAttributeName","imgAttributes","iterator","originAttribute","isSvg","src","isBase64","setImgSize","uri","ar","base64String","svgString","getMetricsFromSvgString","String","fromCharCode","getMetricsFromBytes","width","cw","height","ch","baseline","cb","dpi","style","verticalAlign","fixAfterResize","maxWidth","processImg","atob","encodedSvgString","svg","base64","reader","FileReader","onload","fetch","then","r","blob","readAsDataURL","first","last","typ","Math","round","Accessibility","mathMLToAccessible","mode","ignoreStyles","accessibleText","accessibleJsonResponse","Parser","mathmlToImgObject","wirisProperties","align","wirisEditorProperties","metrics","centerbaseline","mathmlSubstring","attributePattern","attributeMatch","mathOpeningTagEnd","mathOpeningTag","createShowImageSrc","format","alt","createImageSrc","observer","observe","baseParts","pop","initParse","initParseSaveMode","initParseEditMode","parseMathmlToImg","codeImgTransform","imgList","token","carry","mathmlStartToken","mathmlStart","mathmlEnd","latexStartPosition","latexEndPosition","replaceText","endParse","codeEndParsedEditMode","endParseEditMode","codeEndParseSaveMode","endParseSaveMode","decodedLatex","savemode","base64savemode","createShowImageSrcData","dataMd5","renderParams","dataObject","formula","com","wiris","js","JsPluginTools","md5encode","version","pattern","patternLength","source","lastIndex","characterNextPosition","xmlCode","imageMathmlAtrribute","MutationObserver","mutationObserver","mutations","mutation","oldValue","create","Config","attributeOldValue","getPrototypeOf","EditorListener","isContentChanged","waitingForChanges","setIsContentChanged","getIsContentChanged","setWaitingForChanges","caretPositionChanged","_editor","clipboardChanged","contentChanged","styleChanged","transformationReceived","wasm","cachedTextDecoder","TextDecoder","ignoreBOM","fatal","decode","cachedUint8Memory0","getUint8Memory0","byteLength","Uint8Array","memory","buffer","getStringFromWasm0","ptr","subarray","heap","Array","fill","heap_next","addHeapObject","obj","getObject","dropObject","takeObject","ret","WASM_VECTOR_LEN","cachedTextEncoder","TextEncoder","encode","encodeString","encodeInto","arg","view","buf","read","written","passStringToWasm0","malloc","realloc","mem","offset","isLikeNone","x","cachedInt32Memory0","getInt32Memory0","Int32Array","cachedFloat64Memory0","getFloat64Memory0","Float64Array","cachedBigInt64Memory0","getBigInt64Memory0","BigInt64Array","debugString","type","description","isArray","debug","builtInMatches","stringify","_","message","stack","makeClosure","arg0","arg1","dtor","f","state","cnt","real","args","__wbindgen_export_2","original","__wbg_adapter_46","arg2","__wbindgen_export_3","makeMutClosure","__wbg_adapter_49","__wbindgen_export_4","__wbg_adapter_52","__wbindgen_export_5","handleError","apply","__wbindgen_export_6","__wbg_adapter_103","arg3","__wbindgen_export_7","getArrayU8FromWasm0","Telemeter","__destroy_into_raw","__wbg_ptr","free","__wbg_telemeter_free","solution","hosts","config","retptr","__wbindgen_add_to_stack_pointer","telemeter_new","r0","r1","r2","identify","sender_id","ptr0","__wbindgen_export_0","__wbindgen_export_1","len0","telemeter_identify","track","event_type","event_payload","telemeter_track","log","level","payload","telemeter_log","finish","telemeter_finish","new_debug_status","telemeter_debug","__wbg_load","module","imports","Response","WebAssembly","instantiateStreaming","headers","arrayBuffer","instantiate","instance","Instance","__wbg_get_imports","wbg","__wbindgen_string_new","__wbg_new_c728d68b8b34487e","__wbg_status_7841bb47be2a8f16","__wbg_headers_ea7ef583d1564b08","__wbg_new0_ad75dd38f92424e2","Date","__wbg_getTime_ed6ee333b702f8fc","getTime","__wbindgen_object_drop_ref","__wbindgen_is_object","__wbg_crypto_58f13aa23ffcb166","crypto","__wbg_process_5b786e71d465a513","process","__wbg_versions_c2ab80650590b6a2","versions","__wbg_node_523d7bd03ef69fba","__wbindgen_is_string","__wbg_msCrypto_abcb1295e768d1f2","msCrypto","__wbg_require_2784e593a4674877","require","arguments","__wbg_newwithlength_13b5319ab422dcf6","__wbg_get_4a9aa5157afeb382","__wbg_next_1989a20442400aaa","next","__wbg_done_bc26bf4ada718266","done","__wbg_value_0570714ff7d75f35","__wbg_iterator_7ee1a391d310f8e4","Symbol","__wbg_get_2aff440840bb6202","Reflect","__wbg_next_15da6a3df9290720","__wbindgen_is_function","__wbg_call_669127b9d730c650","__wbindgen_object_clone_ref","__wbg_self_3fad056edded10bd","self","__wbg_window_a4f46c98a61d4089","__wbg_globalThis_17eff828815f7d84","globalThis","__wbg_global_46f939f6541643c5","global","__wbindgen_is_undefined","__wbg_newnoargs_ccdcae30fd002262","Function","__wbg_isArray_38525be7442aa21e","__wbg_call_53fc3abd42e24ec8","__wbg_isSafeInteger_c38b0a16d0c7cef7","isSafeInteger","__wbg_new_feb65b865d980ae2","state0","cb0","Promise","__wbindgen_memory","__wbg_buffer_344d9b41efe96da7","__wbg_new_d8a000788389a31e","__wbg_set_dcfd613a3420f908","__wbg_length_a5587d6cd79ab197","__wbindgen_string_get","ptr1","len1","__wbg_stringify_4039297315a25b00","__wbg_set_40f7786a25a9cc7e","__wbg_has_cdf8b85f6e903c80","has","__wbg_fetch_701fcd2bde06379a","__wbg_fetch_b5d6bebed1e6c2d2","__wbg_newwithbyteoffsetandlength_2dc04d99088b15e3","__wbg_new_e4960143e41697a4","AbortController","__wbg_signal_1ed842bebd6ae322","signal","__wbg_abort_8355f201f30300bb","abort","__wbindgen_error_new","__wbindgen_jsval_loose_eq","__wbindgen_boolean_get","v","__wbindgen_number_get","__wbg_instanceof_Uint8Array_19e6f142a5e7e1e1","__wbg_instanceof_ArrayBuffer_c7cc317e5c29cc0d","ArrayBuffer","__wbg_entries_6d727b73ee02b7ce","__wbg_String_917f38a1211cf44b","__wbg_warn_ade8d3b7ecee11ff","__wbg_readyState_13e55da5ad6d64e2","readyState","__wbg_warn_4affe1093892a4ef","__wbg_close_f4135085ec3fc8f0","__wbg_new_b9b318679315404f","WebSocket","__wbg_setbinaryType_dcb62e0f2b346301","binaryType","__wbg_log_7811587c4c6d2844","__wbg_error_f0a6627f4b23c19d","error","__wbg_info_3ca7870690403fee","info","__wbg_document_183cf1eecfdbffee","__wbg_visibilityState_9721703a5ef75faf","visibilityState","__wbg_getwithrefkey_3b3c46ba20582127","__wbg_length_cace2e0b3ddc0502","__wbg_addEventListener_0f2891b0794e07fa","__wbg_removeEventListener_104d11302bb212d1","__wbindgen_is_bigint","__wbindgen_bigint_from_i64","__wbindgen_in","__wbindgen_bigint_from_u64","BigInt","asUintN","__wbindgen_jsval_eq","__wbg_localStorage_e11f72e996a4f5d9","localStorage","__wbg_getItem_c81cd3ae30cd579a","getItem","__wbg_navigator_7078da62d92ff5ad","navigator","__wbg_mediaDevices_e00b1f64d2b9939f","mediaDevices","__wbg_enumerateDevices_619d52f5eef34c2f","enumerateDevices","__wbg_setItem_fe04f524052a3839","arg4","setItem","__wbindgen_cb_drop","__wbg_deviceId_58f7da2228a26c02","deviceId","__wbg_instanceof_Response_944e2745b5db71f5","__wbg_randomFillSync_a0d98aa11c81fe89","randomFillSync","__wbg_subarray_6ca5cfa7fbb9abbe","__wbg_getRandomValues_504510b5564925af","getRandomValues","__wbindgen_bigint_get_as_i64","__wbindgen_debug_string","__wbindgen_throw","__wbg_then_89e1c559530b85cf","__wbg_queueMicrotask_e5949c35d772a669","queueMicrotask","__wbg_then_1bbc9edafd859b06","__wbg_queueMicrotask_2be8b97a81fe4d00","__wbg_resolve_a3252b2860f0a09e","resolve","__wbg_url_1f609e63ff1a7983","__wbg_send_2860805104507701","__wbg_instanceof_Window_cde2416cf5126a72","Window","__wbg_new_19676474aa414d62","Headers","__wbg_append_feec4143bbf21904","append","__wbg_newwithstrandinit_29038da14d09e330","Request","__wbindgen_closure_wrapper1532","__wbindgen_closure_wrapper1602","__wbindgen_closure_wrapper1834","__wbg_finalize_init","exports","__wbg_init","__wbindgen_wasm_module","__wbindgen_start","URL","telemeterAttributes","telemeter","waitingForInit","TelemeterWASM","catch","finally","local_telemeter","ContentManager","contentManagerAttributes","editorAttributes","customEditors","environment","editorListener","editor","ua","userAgent","deviceProperties","isAndroid","isIOS","toolbar","dbclick","modalDialogInstance","isNewElement","integrationModel","setIntegrationModel","setModalDialogInstance","insert","updateTitle","insertEditor","isEditorLoaded","jsEditor","JsEditor","newInstance","insertInto","contentContainer","rtl","getEditorModel","isRTL","action","direction","addEditorListener","setTimeout","hideKeyboard","formulaDisplayDiv","getElementsByClassName","handleOpenedIosSoftkeyboard","handleClosedIosSoftkeyboard","bind","addEditorAsExternalDependency","script","editorUrl","anchorElement","setHrefToAnchorElement","setProtocolToAnchorElement","getURLFromAnchorElement","stats","getEditorStats","getElementsByTagName","protocol","removePort","port","hostname","pathname","includes","platform","isMobile","setInitialContent","setMathML","focusDisabled","setMathMLWithCallback","onFocus","submitAction","isFormulaEmpty","getMathMLWithSemantics","getActiveEditor","editors","mathmlEntitiesEncoded","updateFormula","disable","notifyWindowClosed","setEmptyMathML","forcedHandMode","onOpen","updateToolbar","zoom","documentElement","clientWidth","innerWidth","setKeyboardMode","trigger","Core","globalListeners","hideHandModeButton","openHandOnKeyboardMathML","wrsEditor","forced","handSwitchHidden","handModeButtonSelector","mutationInstance","handModeButton","querySelector","hidden","disconnect","body","childList","characterData","subtree","waitForHand","handEditor","hand","handTemporalMathML","getMathML","handCoordinates","editorModel","getHandStrokes","setStrokes","fitStrokes","openHand","_wrs_int_wirisProperties","setToolbar","getToolbar","setTitle","title","setParams","setCustomHeaders","headersObj","customHeaders","hasChanges","onKeyDown","keyboardEvent","repeat","list","cancelAction","stopPropagation","preventDefault","shiftKey","activeElement","submitButton","closeDiv","minimizeDiv","cancelButton","CustomEditors","activeEditor","addEditor","editorName","editorParams","icon","confVariable","tooltip","enable","customEditorName","jsProperties","imageCustomEditorName","imageClassName","CASClassName","Event","cancel","PopUpMessage","popupMessageAttributes","overlayElement","callbacks","overlayWrapper","paragraph","overlay","buttonArea","buttonSubmitArguments","class","submitString","closeButton","createButton","closeAction","buttonCancelArguments","cancelString","show","display","blur","cancelCallback","closeCallback","IntegrationModel","setActionsOnCancelButtons","focusProtection","protect","modalElement","editorElement","overrideFocusBehavior","originalElementFocus","HTMLElement","originalElementBlur","unprotect","ModalDialog","modalDialogAttributes","iosSoftkeyboardOpened","iosMeasureUnit","iosDivHeight","deviceWidth","outerWidth","deviceHeight","outerHeight","landscape","portrait","instanceId","orientation","isDesktop","created","previousState","bottom","right","size","websiteBeforeLockParameters","getElementId","titleBar","generalStyleClose","btoa","closeIcon","hoverStyleClose","closeHoverIcon","stackDiv","generalStyleStack","minsIcon","hoverStyleStack","minsHoverIcon","maximizeDiv","generalStyleMaximize","fullsIcon","hoverStyleMaximize","fullsHoverIcon","generalStyleMinimize","minIcon","hoverStyleMinimize","minHoverIcon","role","wrapper","controls","buttonContainer","createSubmitButton","contentManager","popupStrings","popupupProperties","popup","setContentManager","getContentManager","showPopUpMessage","SubmitButton","dataset","testid","getElement","recalculateScrollBar","createModalWindowDesktop","createResizeButtons","addListeners","maximize","createModalWindowAndroid","createModalWindowIos","scrollbarWidth","offsetWidth","resizerBR","resizerTL","activateResizeStateBR","activateResizeStateTL","mouseEvent","initializeResizeProperties","leftOption","resizeDataObject","eventClient","X","y","Y","initialWidth","parseInt","initialHeight","initialRight","initialBottom","leftScale","restoreWebsiteScale","lockWebsiteScroll","restoreState","displayEditor","isMoodle","saveModalProperties","unlockWebsiteScroll","destroy","removeListeners","viewportmeta","contentAttrsToUpdate","contentAttrsValuesToUpdate","setMetaAttrFunc","viewportelement","contentAttrs","contentAttr","attrArray","finalContentMeta","oldAttrs","isAttrToUpdate","attr","bodyStylePosition","bodyStyleOverflow","overflow","htmlStyleOverflow","windowScrollX","scrollX","windowScrollY","scrollY","scrollTo","isIE11","search","orientationChangeAndroidSoftkeyboard","orientationChangeIosSoftkeyboard","minimize","generalStyle","hoverStyle","restoreModalProperties","setResizeButtonsVisibility","recalculatePosition","recalculateScale","cursor","maxIcon","maxHoverIcon","left","top","setSize","innerHeight","clientHeight","offsetHeight","setPosition","recalculateSize","reExpand","visibility","keyCode","click","startDrag","stopDrag","drag","onWindowResize","clientX","changedTouches","client","clientY","dragDataObject","lastDrag","limitWindow","getLimitWindow","limitY","min","minPointer","max","maxPointer","limitX","dragX","dragY","transform","scaleMultiplier","maxHeight","contStyleBottom","contStyleRight","pageXOffset","offSetToolbarY","offSetToolbarX","minPointerY","maxPointerY","minPointerX","maxPointerX","getScrollBarWidth","inner","outer","widthOuter","widthInner","sizeModified","hasScrollBar","inputField","portraitMode","setContainerHeight","flexGrow","TypeError","second","defineProperty","configurable","writable","varArgs","to","nextSource","nextKey","searchElement","fromIndex","o","k","abs","sameValueZero","rawPos","coreProperties","editMode","modalDialog","chemEditorParams","editionProperties","temporalImage","latexRange","editionStartTime","browser","serviceProviderProperties","_globalListeners","initialized","_initialized","setEnvironment","integrationEnvironment","setHeaders","headerObject","getModalDialog","serviceProviderListener","jsConfiguration","jsonConfiguration","addGlobalListener","beforeUpdateFormula","beforeUpdateEvent","insertFormula","focusElement","returnObject","insertElementOnSelection","fillNonLatexNode","afterUpdateEvent","afterUpdateFormula","placeCaretAfterNode","nodeDocument","ownerDocument","setStartAfter","collapse","removeAllRanges","addRange","mathmlOrigin","editorSelection","deleteContents","splitText","select","insertNode","mathml_origin","elapsed_time","now","editor_origin","openModalDialog","selectedItem","getMathmlFromTextNode","latexResult","leftOffset","previousNode","moveToElementText","move","moveEnd","setStart","setEnd","defaultEditorAttributesArray","defaultEditorAttributes","tempAttribute","serverEditorParameters","clientEditorParameters","editorParameters","getCustomEditors","integrationModelProperties","configurationService","scriptName","callbackMethodArguments","editorObject","managesLanguage","integrationParameters","temporalImageResizing","core","getLanguage","callbackFunction","configurationIndex","subsTring","serviceParametersURI","getPath","setCore","offlineModal","offlineModalContent","offlineModalClose","offlineModalWarn","warnIcon","offlineModalMessage","offlineModalMessage1","offlineModalMessage2","modal","solutionTelemeter","M","lms","nam","fam","ver","moodleVersion","category","moodleCourseCategory","course","moodleCourseName","OSData","getOS","broswerData","getBrowser","detectedBrowser","versionBrowser","editorVersion","detectedOS","versionOS","filter","dry_run","api_key","macosPlatforms","windowsPlatforms","iosPlatforms","col","getVersion","setLanguage","getCore","setTarget","setEditorObject","openNewFormulaEditor","onLine","openExistingFormulaEditor","WirisPlugin","currentInstance","util","EditorUtils","addEvents","removeEvents","getBrowserLanguage","userLanguage","HxOverrides","__name__","dateStr","date","m","getMonth","d","getDate","getHours","mi","getMinutes","getSeconds","getFullYear","strDate","setTime","setUTCHours","setUTCMinutes","setUTCSeconds","t","cca","iter","cur","hasNext","IntIter","__class__","Std","Boot","__instanceof","__string_rec","parseFloat","random","floor","tryReady","main","ev","getInstance","haxe","Timer","delay","$bind","bypassEncapsulation","Md5","doLoad","ready","Lib","Log","trace","infos","__trace","clear","__clear_trace","doEncode","str","str2blks","olda","oldb","oldc","oldd","ff","gg","hh","ii","addme","rhex","cmn","bitXOR","bitOR","bitAND","q","rol","num","nblk","blks","_g1","_g","hex_chr","lsw","msw","lsb","msb31","time_ms","me","setInterval","run","stop","measure","t0","stamp","clearInterval","__unhtml","msg","fileName","lineNumber","isClass","isEnum","__ename__","getClass","__enum__","i1","tostr","hasp","__interfLoop","cc","cl","intf","__interfaces__","__super__","Int","ceil","Float","Bool","Dynamic","Class","Enum","__cast","alert","eval","setErrorHandler","onerror","method","scope","NaN","NEGATIVE_INFINITY","POSITIVE_INFINITY","isFinite","Boolean","line","CKEditor5Integration","ckeditorIntegrationModelProperties","integrationFolderName","languageObject","ui","locale","uiLanguage","addEditorListeners","wirislistenersdisabled","checkElement","newElement","sourceElement","wirisActive","isReadOnly","customEditorAttr","getCorePath","editing","insertMathml","model","change","writer","fromEntries","getAttributes","modelElementNew","insertNewFormula","replaceExistingFormula","modelElement","viewSelection","modelPosition","mapper","toModelPosition","getLastPosition","insertObject","deleteViewSelection","createPositionAfter","setSelection","isCollapsed","getRanges","modelRange","toModelRange","modelSelection","createSelection","deleteContent","viewNode","domConverter","domToView","parent","modelElementOld","toModelElement","createPositionBefore","insertContent","findText","viewElement","pivot","createRangeIn","descendants","from","getItems","viewElementData","replaceAll","is","_focusElement","_wirisProperties","handleLatexInsertion","handleMathmlInsertion","replaceLatexWithNodes","replaceLatexUsingModelSearch","toViewElement","viewToDom","getCleanSelectionAttributes","newLatex","foundRange","findLatexBlockNearSelection","replaceRangeWithLatex","newLatexText","createText","extractedLatex","isDeletedText","getFirstPosition","textParts","acceptedText","collectTextParts","targetLatex","fullLatex","latexBoundaries","convertAcceptedOffsetsToModelRange","acceptedTextOffset","isDeleted","acceptedStart","acceptedEnd","startPartIndex","endPartIndex","startOffsetInPart","endOffsetInPart","part","finalEndIndex","finalEndOffset","startPart","endPart","createPositionAt","Node","TEXT_NODE","ELEMENT_NODE","originalLatex","textData","fromCodePoint","latexOffset","closingDelimiterOffset","standardResult","acceptedLatex","extractAcceptedLatexFromDOM","isCaretInsideLatexBlock","finalLatex","storeLatexRangeWithFallback","parentTag","findLatexContainerElement","MAX_DEPTH","openDelim","caretPositionInNode","getAcceptedTextContent","walker","createTreeWalker","NodeFilter","SHOW_TEXT","nextNode","caretOffset","nextSearchIndex","closeDelim","child","MathTypeCommand","Command","execute","options","integration","setEditor","openEditor","image","_getSelectedImage","rangeCount","getFirstRange","span","getChild","mapViewToDom","ChemTypeCommand","MathType","Plugin","requires","Widget","pluginName","_addIntegration","_addCommands","_addTrackChangesIntegration","_addViews","_addSchema","_addConverters","_exposeWiris","integrationProperties","packageInfo","listenTo","evt","domEvent","detail","domTarget","priority","commands","componentFactory","ButtonView","label","mathIcon","on","chemIcon","addObserver","ClickObserver","schema","register","inheritAllFrom","allowAttributes","conversion","for","elementToElement","modelWriter","upcastDispatcher","conversionApi","consumable","viewItem","isLatex","mathIsLatex","processor","XmlDataProcessor","upcastWriter","ViewUpcastWriter","viewDocumentFragment","createDocumentFragment","getChildren","mathAttributes","toData","modelNode","splitResult","splitToAllowedParent","modelCursor","consume","parts","getSplitParts","cursorParent","getClassNames","attrName","htmlContent","math","semantics","createViewWidget","modelItem","viewWriter","widgetElement","createContainerElement","mathUIElement","createViewImage","toWidget","htmlDataProcessor","HtmlDataProcessor","imgElement","toView","mathString","imgHtml","createEmptyElement","createDataString","sourceNode","Exception","sourceMathElement","viewToModelPositionOutsideModelElement","hasClass","previewCommand","return","isGeneratingPreview","attributesToPreserve","previewOutput","trackChangesAttrs","attrMatch","spanAttrs","latexParsedOutput","_endParseEditModeWithTrackChangesSupport","parsedResult","modifiedData","regexp","formulas","safexml","decodeXML","latexBlockRegex","trackChangesRegex","fullMatch","latexContent","plugins","trackChangesEditing","enableCommand","descriptionFactory","registerElementLabel","quantity","_registerLatexTrackChangesAdapter","_trackChangesEnabled"],"mappings":"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","x_google_ignoreList":[0]}