@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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/integration.js","../src/commands.js","../src/plugin.js"],"sourcesContent":["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":["CKEditor5Integration","IntegrationModel","ckeditorIntegrationModelProperties","editor","editorObject","config","get","integrationParameters","integrationFolderName","getLanguage","editorParameters","language","e","languageObject","Object","prototype","hasOwnProperty","call","ui","locale","uiLanguage","addEditorListeners","wirislistenersdisabled","checkElement","newElement","sourceElement","wirisActive","setTarget","addEvents","doubleClickHandler","element","event","core","editionProperties","dbclick","isReadOnly","nodeName","toLowerCase","Util","containsClass","Configuration","stopPropagation","returnValue","getCustomEditors","disable","customEditorAttr","getAttribute","enable","temporalImage","openExistingFormulaEditor","getCorePath","callbackFunction","openNewFormulaEditor","selection","editing","view","document","WirisPlugin","currentInstance","insertMathml","mathml","model","change","writer","getCore","modelElementNew","createElement","formula","fromEntries","getAttributes","isNewElement","viewSelection","modelPosition","mapper","toModelPosition","getLastPosition","insertObject","isCollapsed","range","getRanges","modelRange","toModelRange","modelSelection","createSelection","deleteContent","position","createPositionAfter","setSelection","img","viewElement","domConverter","domToView","parent","modelElementOld","toModelElement","createPositionBefore","findText","pivot","parentElement","createRangeIn","descendants","Array","from","getItems","node","viewElementData","data","nodeType","replaceAll","String","fromCharCode","is","replace","textNode","insertFormula","focusElement","windowTarget","wirisProperties","returnObject","mathmlOrigin","editMode","latex","Latex","getLatexFromMathML","createTextNode","latexRange","startNode","startContainer","endNode","endContainer","startPosition","createPositionAt","startOffset","endPosition","endOffset","createRange","previousSibling","latexEdited","MathML","safeXmlDecode","dataset","offset","indexOf","dataOffset","substring","second$","substr","insertText","viewToDom","toViewElement","x","toString","includes","modalDialog","cancelAction","payload","mathml_origin","elapsed_time","Date","now","editionStartTime","editor_origin","toolbar","contentManager","size","length","keys","forEach","key","Telemeter","telemeter","track","error","console","notifyWindowClosed","focus","MathTypeCommand","Command","execute","options","integration","setEditor","openEditor","image","_getSelectedImage","classList","contains","rangeCount","getFirstRange","span","item","name","getChild","mapViewToDom","ChemTypeCommand","MathType","Plugin","requires","Widget","pluginName","init","_addIntegration","_addCommands","_addTrackChangesIntegration","_addViews","_addSchema","_addConverters","_exposeWiris","destroy","integrationProperties","environment","editorVersion","version","packageInfo","serviceProviderProperties","URI","server","target","scriptName","managesLanguage","listeners","fire","listenTo","evt","domEvent","detail","domTarget","stop","priority","commands","add","componentFactory","ButtonView","bind","to","set","label","StringManager","icon","mathIcon","tooltip","on","chemIcon","addObserver","ClickObserver","schema","register","inheritAllFrom","allowAttributes","conversion","for","elementToElement","classes","modelWriter","upcastDispatcher","conversionApi","consumable","viewItem","test","isLatex","mathIsLatex","processor","XmlDataProcessor","upcastWriter","ViewUpcastWriter","viewDocumentFragment","createDocumentFragment","getChildren","mathAttributes","map","value","join","toData","htmlSanitize","modelNode","createText","Parser","initParse","splitResult","splitToAllowedParent","modelCursor","insert","consume","parts","getSplitParts","cursorParent","end","getClassNames","next","attrName","attributes","className","htmlContent","math","semantics","child","createViewWidget","modelItem","viewWriter","widgetElement","createContainerElement","class","mathUIElement","createViewImage","toWidget","htmlDataProcessor","HtmlDataProcessor","imgElement","toView","mathString","lang","imgHtml","setAttribute","createEmptyElement","renderUnsafeAttributes","createDataString","clone","sourceNode","Exception","endParseSaveMode","sourceMathElement","viewToModelPositionOutsideModelElement","hasClass","previewCommand","localStorage","setItem","setTimeout","output","return","isGeneratingPreview","getItem","attributesToPreserve","previewOutput","match","trackChangesAttrs","prefix","regex","RegExp","attrMatch","exec","push","spanAttrs","removeSafeXMLSemantics","parsedResult","endParse","args","modifiedData","regexp","formulas","safexml","decodeXML","window","Core","Image","Listeners","plugins","has","trackChangesEditing","enableCommand","descriptionFactory","registerElementLabel","quantity"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/integration.js","../src/commands.js","../src/plugin.js"],"sourcesContent":["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":["CKEditor5Integration","IntegrationModel","ckeditorIntegrationModelProperties","editor","editorObject","config","get","integrationParameters","integrationFolderName","getLanguage","editorParameters","language","e","languageObject","Object","prototype","hasOwnProperty","call","ui","locale","uiLanguage","addEditorListeners","wirislistenersdisabled","checkElement","newElement","sourceElement","wirisActive","setTarget","addEvents","doubleClickHandler","element","event","core","editionProperties","dbclick","isReadOnly","nodeName","toLowerCase","Util","containsClass","Configuration","stopPropagation","returnValue","getCustomEditors","disable","customEditorAttr","getAttribute","enable","temporalImage","openExistingFormulaEditor","getCorePath","callbackFunction","openNewFormulaEditor","selection","editing","view","document","WirisPlugin","currentInstance","insertMathml","mathml","model","change","writer","isNewElement","getCore","attributes","fromEntries","getAttributes","modelElementNew","createElement","formula","insertNewFormula","replaceExistingFormula","modelElement","viewSelection","modelPosition","mapper","toModelPosition","getLastPosition","insertObject","deleteViewSelection","position","createPositionAfter","setSelection","isCollapsed","range","getRanges","modelRange","toModelRange","modelSelection","createSelection","deleteContent","viewNode","domConverter","domToView","parent","modelElementOld","toModelElement","createPositionBefore","insertContent","findText","viewElement","pivot","parentElement","createRangeIn","descendants","Array","from","getItems","node","viewElementData","data","nodeType","replaceAll","String","fromCharCode","is","replace","textNode","insertFormula","_focusElement","windowTarget","_wirisProperties","returnObject","mathmlOrigin","editMode","handleLatexInsertion","handleMathmlInsertion","payload","MathML","safeXmlDecode","undefined","elapsed_time","Date","now","editionStartTime","toolbar","modalDialog","contentManager","size","length","mathml_origin","Telemeter","telemeter","track","error","console","latex","Latex","getLatexFromMathML","createTextNode","latexRange","startNode","startContainer","endNode","endContainer","replaceLatexWithNodes","replaceLatexUsingModelSearch","dataset","toViewElement","viewToDom","toString","includes","cancelAction","getCleanSelectionAttributes","key","value","startsWith","newLatex","foundRange","findLatexBlockNearSelection","replaceRangeWithLatex","newLatexText","createText","extractedLatex","isDeletedText","text","getFirstPosition","textParts","acceptedText","collectTextParts","targetLatex","fullLatex","startIndex","indexOf","latexBoundaries","start","end","convertAcceptedOffsetsToModelRange","paragraph","acceptedTextOffset","item","isDeleted","push","startOffset","endOffset","acceptedStart","acceptedEnd","startPartIndex","endPartIndex","startOffsetInPart","endOffsetInPart","i","part","finalEndIndex","finalEndOffset","startPart","endPart","createRange","createPositionAt","startPosition","endPosition","Node","TEXT_NODE","previousSibling","ELEMENT_NODE","originalLatex","textData","fromCodePoint","latexOffset","closingDelimiterOffset","substring","getMathmlFromTextNode","caretPosition","standardResult","getLatexFromTextNode","acceptedLatex","extractAcceptedLatexFromDOM","isCaretInsideLatexBlock","finalLatex","storeLatexRangeWithFallback","getMathMLFromLatex","parentTag","tagName","latexResult","setStart","setEnd","findLatexContainerElement","MAX_DEPTH","textContent","openDelim","caretPositionInNode","container","getAcceptedTextContent","walker","createTreeWalker","NodeFilter","SHOW_TEXT","nextNode","caretOffset","classList","contains","nextSearchIndex","closeDelim","childNodes","map","child","join","notifyWindowClosed","focus","MathTypeCommand","Command","execute","options","integration","setEditor","openEditor","image","_getSelectedImage","rangeCount","getFirstRange","span","name","getChild","mapViewToDom","ChemTypeCommand","MathType","Plugin","requires","Widget","pluginName","init","_addIntegration","_addCommands","_addTrackChangesIntegration","_addViews","_addSchema","_addConverters","_exposeWiris","destroy","integrationProperties","environment","editorVersion","version","packageInfo","serviceProviderProperties","URI","server","target","scriptName","managesLanguage","listeners","fire","listenTo","evt","domEvent","detail","domTarget","stop","priority","commands","add","componentFactory","ButtonView","bind","to","set","label","StringManager","icon","mathIcon","tooltip","on","chemIcon","addObserver","ClickObserver","schema","register","inheritAllFrom","allowAttributes","conversion","for","elementToElement","classes","modelWriter","upcastDispatcher","conversionApi","consumable","viewItem","test","isLatex","mathIsLatex","processor","XmlDataProcessor","upcastWriter","ViewUpcastWriter","viewDocumentFragment","createDocumentFragment","getChildren","mathAttributes","toData","htmlSanitize","modelNode","Parser","initParse","splitResult","splitToAllowedParent","modelCursor","insert","consume","parts","getSplitParts","cursorParent","getClassNames","next","attrName","className","htmlContent","math","semantics","createViewWidget","modelItem","viewWriter","widgetElement","createContainerElement","class","mathUIElement","createViewImage","toWidget","htmlDataProcessor","HtmlDataProcessor","imgElement","toView","mathString","lang","imgHtml","setAttribute","createEmptyElement","createDataString","clone","sourceNode","Exception","endParseSaveMode","sourceMathElement","viewToModelPositionOutsideModelElement","hasClass","previewCommand","localStorage","setItem","setTimeout","output","return","isGeneratingPreview","getItem","attributesToPreserve","previewOutput","match","trackChangesAttrs","forEach","prefix","regex","RegExp","attrMatch","exec","spanAttrs","removeSafeXMLSemantics","latexParsedOutput","_endParseEditModeWithTrackChangesSupport","parsedResult","args","modifiedData","regexp","formulas","safexml","decodeXML","code","latexBlockRegex","trackChangesRegex","fullMatch","latexContent","decodedLatex","htmlEntitiesDecode","removeAnnotation","window","Core","Image","Listeners","plugins","has","trackChangesEditing","enableCommand","descriptionFactory","registerElementLabel","quantity","_registerLatexTrackChangesAdapter","_trackChangesEnabled"],"mappings":"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"}