File size: 146,759 Bytes
f56a29b | 1 | {"version":3,"file":"index.cjs","sources":["../node_modules/entities/dist/esm/generated/decode-data-xml.js","../node_modules/entities/dist/esm/decode-codepoint.js","../node_modules/entities/dist/esm/decode.js","../src/parse-stringify/parse-tag.js","../src/parse-stringify/parse.js","../src/parse-stringify/stringify.js","../src/mathml/math.js","../src/mathml/menclose.js","../src/mathml/mfrac.js","../src/mathml/mglyph.js","../src/mathml/mmultiscripts.js","../src/mathml/mrow.js","../src/mathml/mspace.js","../src/mathml/msqrt.js","../src/mathml/mstyle.js","../src/helpers.js","../src/ooml/nary.js","../src/ooml/scriptlevel.js","../src/mathml/msub.js","../src/mathml/msubsup.js","../src/mathml/msup.js","../src/mathml/table.js","../src/mathml/munderover.js","../src/mathml/text_style.js","../src/mathml/text_container.js","../src/mathml/under_or_over.js","../src/mathml/mroot.js","../src/mathml/text.js","../src/walker.js","../src/index.js"],"sourcesContent":["// Generated using scripts/write-decode-map.ts\nexport const xmlDecodeTree = /* #__PURE__ */ new Uint16Array(\n// prettier-ignore\n/* #__PURE__ */ \"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 65535) {\n codePoint -= 65536;\n output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);\n codePoint = 56320 | (codePoint & 1023);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 55296 && codePoint <= 57343) ||\n codePoint > 1114111) {\n return 65533;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode-codepoint.js.map","import { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { replaceCodePoint, fromCodePoint } from \"./decode-codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 32;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(input, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (input.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(input, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(input, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(input, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(input, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(input, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(input, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(input, offset) {\n if (offset >= input.length) {\n return -1;\n }\n if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(input, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(input, offset);\n }\n addToNumericResult(input, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n Number.parseInt(input.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(input, offset) {\n const startIndex = offset;\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(input, startIndex, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(input, startIndex, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(input, offset) {\n const startIndex = offset;\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(input, startIndex, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(input, startIndex, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(input, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < input.length; offset++, this.excess++) {\n const char = input.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let returnValue = \"\";\n const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));\n return function decodeWithTrie(input, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n returnValue += input.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const length = decoder.write(input, \n // Skip the \"&\"\n offset + 1);\n if (length < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + length;\n // If `length` is 0, skip the current `&` and continue.\n offset = length === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = returnValue + input.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n returnValue = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIndex, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIndex + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIndex;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midValue = decodeTree[mid];\n if (midValue < char) {\n lo = mid + 1;\n }\n else if (midValue > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(htmlString, mode = DecodingMode.Legacy) {\n return htmlDecoder(htmlString, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute) {\n return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString) {\n return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString) {\n return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nexport { decodeCodePoint, replaceCodePoint, fromCodePoint, } from \"./decode-codepoint.js\";\n//# sourceMappingURL=decode.js.map","const attrRE = /\\s([^'\"/\\s><]+?)[\\s/>]|([^\\s=]+)=\\s?(\".*?\"|'.*?')/g\n\nexport default function stringify(tag) {\n const res = {\n type: 'tag',\n name: '',\n voidElement: false,\n attribs: {},\n children: []\n }\n\n const tagMatch = tag.match(/<\\/?([^\\s]+?)[/\\s>]/)\n if (tagMatch) {\n res.name = tagMatch[1]\n if (tag.charAt(tag.length - 2) === '/') {\n res.voidElement = true\n }\n\n // handle comment tag\n if (res.name.startsWith('!--')) {\n const endIndex = tag.indexOf('-->')\n return {\n type: 'comment',\n comment: endIndex !== -1 ? tag.slice(4, endIndex) : ''\n }\n }\n }\n\n const reg = new RegExp(attrRE)\n let result = null\n for (;;) {\n result = reg.exec(tag)\n\n if (result === null) {\n break\n }\n\n if (!result[0].trim()) {\n continue\n }\n\n if (result[1]) {\n const attr = result[1].trim()\n let arr = [attr, '']\n\n if (attr.indexOf('=') > -1) {\n arr = attr.split('=')\n }\n\n res.attribs[arr[0]] = arr[1]\n reg.lastIndex--\n } else if (result[2]) {\n res.attribs[result[2]] = result[3].trim().substring(1, result[3].length - 1)\n }\n }\n\n return res\n}\n","import * as entities from 'entities'\n\nimport parseTag from './parse-tag'\n\nconst tagRE = /<[a-zA-Z0-9\\-!/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g\nconst whitespaceRE = /^\\s*$/\n\nconst textContainerNames = ['mtext', 'mi', 'mn', 'mo', 'ms']\n\n// re-used obj for quick lookups of components\nconst empty = Object.create(null)\n\nexport function parse(html, options = {}) {\n const result = []\n const arr = []\n let current\n let level = -1\n\n html.replace(tagRE, (tag, index) => {\n const isOpen = tag.charAt(1) !== '/'\n const isComment = tag.startsWith('<!--')\n const start = index + tag.length\n const nextChar = html.charAt(start)\n let parent\n\n if (isComment) {\n const comment = parseTag(tag)\n\n // if we're at root, push new base node\n if (level < 0) {\n result.push(comment)\n return result\n }\n parent = arr[level]\n parent.children.push(comment)\n return result\n }\n\n if (isOpen) {\n level++\n\n current = parseTag(tag)\n if (current.type === 'tag' && options.components?.[current.name]) {\n current.type = 'component'\n }\n\n if (\n textContainerNames.includes(current.name) &&\n !current.voidElement &&\n nextChar &&\n nextChar !== '<'\n ) {\n const data = html.slice(start, html.indexOf('<', start)).trim()\n current.children.push({\n type: 'text',\n data: options.disableDecode ? data : entities.decodeXML(data)\n })\n }\n\n // if we're at root, push new base node\n if (level === 0) {\n result.push(current)\n }\n\n parent = arr[level - 1]\n\n if (parent) {\n parent.children.push(current)\n }\n\n arr[level] = current\n }\n\n if (!isOpen || current.voidElement) {\n if (level > -1 && (current.voidElement || current.name === tag.slice(2, -1))) {\n level--\n // move current up a level to match the end tag\n current = level === -1 ? result : arr[level]\n }\n if (\n level > -1 &&\n textContainerNames.includes[arr[level].name] &&\n nextChar !== '<' &&\n nextChar\n ) {\n // trailing text node\n parent = arr[level].children\n\n // calculate correct end of the content slice in case there's\n // no tag after the text node.\n const end = html.indexOf('<', start)\n let data = html.slice(start, end === -1 ? undefined : end)\n // if a node is nothing but whitespace, collapse it as the spec states:\n // https://www.w3.org/TR/html4/struct/text.html#h-9.1\n if (whitespaceRE.test(data)) {\n data = ' '\n }\n // don't add whitespace-only text nodes if they would be trailing text nodes\n // or if they would be leading whitespace-only text nodes:\n // * end > -1 indicates this is not a trailing text node\n // * leading node is when level is -1 and parent has length 0\n if ((end > -1 && level + parent.length >= 0) || data !== ' ') {\n parent.push({\n type: 'text',\n data: options.disableDecode ? data : entities.decodeXML(data)\n })\n }\n }\n }\n })\n\n return result\n}\n","function attrString(attribs) {\n const buff = []\n for (const key in attribs) {\n buff.push(`${key}=\"${attribs[key]}\"`)\n }\n if (!buff.length) {\n return ''\n }\n return ` ${buff.join(' ')}`\n}\n\nfunction escapeXmlText(str) {\n return str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')\n}\n\nfunction stringify(buff, doc) {\n switch (doc.type) {\n case 'text':\n return buff + escapeXmlText(doc.data)\n case 'tag': {\n const voidElement =\n doc.voidElement || (!doc.children.length && doc.attribs['xml:space'] !== 'preserve')\n buff += `<${doc.name}${doc.attribs ? attrString(doc.attribs) : ''}${voidElement ? '/>' : '>'}`\n if (voidElement) {\n return buff\n }\n return `${buff + doc.children.reduce(stringify, '')}</${doc.name}>`\n }\n case 'comment':\n buff += `<!--${doc.comment}-->`\n return buff\n }\n}\n\nexport function stringifyDoc(doc) {\n return doc.reduce((token, rootEl) => token + stringify('', rootEl), '')\n}\n","export function math(element, targetParent, previousSibling, nextSibling, ancestors) {\n targetParent.name = 'm:oMath'\n targetParent.attribs = {\n 'xmlns:m': 'http://schemas.openxmlformats.org/officeDocument/2006/math',\n 'xmlns:w': 'http://schemas.openxmlformats.org/wordprocessingml/2006/main'\n }\n targetParent.type = 'tag'\n targetParent.children = []\n return targetParent\n}\n\nexport function semantics(element, targetParent, previousSibling, nextSibling, ancestors) {\n // Ignore as default behavior\n return targetParent\n}\n","export function menclose(element, targetParent, previousSibling, nextSibling, ancestors) {\n const type = element.attribs?.notation?.split(' ')[0] || 'longdiv'\n\n const targetElement = {\n type: 'tag',\n name: 'm:e',\n attribs: {},\n children: []\n }\n\n if (type === 'longdiv') {\n targetParent.children.push({\n type: 'tag',\n name: 'm:rad',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:radPr',\n attribs: {},\n children: [{ type: 'tag', name: 'm:degHide', attribs: { 'm:val': 'on' }, children: [] }]\n },\n { type: 'tag', name: 'm:deg', attribs: {}, children: [] },\n targetElement\n ]\n })\n } else {\n const hide = {\n t: { type: 'tag', name: 'm:hideTop', attribs: { 'm:val': 'on' }, children: [] },\n b: { type: 'tag', name: 'm:hideBot', attribs: { 'm:val': 'on' }, children: [] },\n l: { type: 'tag', name: 'm:hideLeft', attribs: { 'm:val': 'on' }, children: [] },\n r: { type: 'tag', name: 'm:hideRight', attribs: { 'm:val': 'on' }, children: [] }\n }\n const borderBoxPr = { type: 'tag', name: 'm:borderBoxPr', attribs: {}, children: [] }\n\n const containerElement = {\n type: 'tag',\n name: 'm:borderBox',\n attribs: {},\n children: []\n }\n switch (type) {\n case 'actuarial':\n case 'radical':\n case 'box':\n containerElement.children = [targetElement]\n break\n case 'left':\n case 'roundedbox':\n borderBoxPr.children = [hide.t, hide.b, hide.r]\n containerElement.children = [borderBoxPr, targetElement]\n break\n case 'right':\n case 'circle':\n borderBoxPr.children = [hide.t, hide.b, hide.l]\n containerElement.children = [borderBoxPr, targetElement]\n break\n case 'top':\n borderBoxPr.children = [hide.b, hide.l, hide.r]\n containerElement.children = [borderBoxPr, targetElement]\n break\n case 'bottom':\n borderBoxPr.children = [hide.t, hide.l, hide.r]\n containerElement.children = [borderBoxPr, targetElement]\n break\n case 'updiagonalstrike':\n borderBoxPr.children = [\n hide.t,\n hide.b,\n hide.l,\n hide.r,\n { type: 'tag', name: 'm:strikeBLTR', attribs: { 'm:val': 'on' }, children: [] }\n ]\n containerElement.children = [borderBoxPr, targetElement]\n break\n case 'downdiagonalstrike':\n borderBoxPr.children = [\n hide.t,\n hide.b,\n hide.l,\n hide.r,\n { type: 'tag', name: 'm:strikeTLBR', attribs: { 'm:val': 'on' }, children: [] }\n ]\n containerElement.children = [borderBoxPr, targetElement]\n break\n case 'verticalstrike':\n borderBoxPr.children = [\n hide.t,\n hide.b,\n hide.l,\n hide.r,\n { type: 'tag', name: 'm:strikeV', attribs: { 'm:val': 'on' }, children: [] }\n ]\n containerElement.children = [borderBoxPr, targetElement]\n break\n case 'horizontalstrike':\n borderBoxPr.children = [\n hide.t,\n hide.b,\n hide.l,\n hide.r,\n { type: 'tag', name: 'm:strikeH', attribs: { 'm:val': 'on' }, children: [] }\n ]\n containerElement.children = [borderBoxPr, targetElement]\n break\n default:\n borderBoxPr.children = [hide.t, hide.b, hide.l, hide.r]\n containerElement.children = [borderBoxPr, targetElement]\n break\n }\n targetParent.children.push(containerElement)\n }\n return targetElement\n}\n","import { walker } from '../walker.js'\n\nexport function mfrac(element, targetParent, previousSibling, nextSibling, ancestors) {\n if (element.children.length !== 2) {\n // treat as mrow\n return targetParent\n }\n\n const numerator = element.children[0]\n const denumerator = element.children[1]\n const numeratorTarget = {\n name: 'm:num',\n type: 'tag',\n attribs: {},\n children: []\n }\n const denumeratorTarget = {\n name: 'm:den',\n type: 'tag',\n attribs: {},\n children: []\n }\n ancestors = [...ancestors]\n ancestors.unshift(element)\n walker(numerator, numeratorTarget, false, false, ancestors)\n walker(denumerator, denumeratorTarget, false, false, ancestors)\n const lt = element.attribs?.linethickness\n const fracType = (lt === '0' || lt === '0px' || lt === '0em' || lt === '0pt') ? 'noBar' : 'bar'\n targetParent.children.push({\n type: 'tag',\n name: 'm:f',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:fPr',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:type',\n attribs: {\n 'm:val': fracType\n },\n children: []\n }\n ]\n },\n numeratorTarget,\n denumeratorTarget\n ]\n })\n // Don't iterate over children in the usual way.\n}\n","export function mglyph(element, targetParent, previousSibling, nextSibling, ancestors) {\n // No support in omml. Output alt text.\n if (element.attribs?.alt) {\n targetParent.children.push({\n type: 'text',\n data: element.attribs.alt\n })\n }\n}\n","import { walker } from '../walker.js'\n\nexport function mmultiscripts(element, targetParent, previousSibling, nextSibling, ancestors) {\n if (element.children.length === 0) {\n // Don't use\n return\n }\n\n const base = element.children[0]\n const postSubs = []\n const postSupers = []\n const preSubs = []\n const preSupers = []\n const children = element.children.slice(1)\n let dividerFound = false\n children.forEach((child, index) => {\n if (child.name === 'mprescripts') {\n dividerFound = true\n } else if (child.name !== 'none') {\n if (index % 2) {\n if (dividerFound) {\n preSubs.push(child)\n } else {\n postSupers.push(child)\n }\n } else {\n if (dividerFound) {\n preSupers.push(child)\n } else {\n postSubs.push(child)\n }\n }\n }\n })\n ancestors = [...ancestors]\n ancestors.unshift(element)\n const tempTarget = {\n children: []\n }\n walker(base, tempTarget, false, false, ancestors)\n let topTarget = tempTarget.children[0]\n\n if (postSubs.length || postSupers.length) {\n const subscriptTarget = {\n name: 'm:sub',\n type: 'tag',\n attribs: {},\n children: []\n }\n postSubs.forEach((subscript) => walker(subscript, subscriptTarget, false, false, ancestors))\n\n const superscriptTarget = {\n name: 'm:sup',\n type: 'tag',\n attribs: {},\n children: []\n }\n\n postSupers.forEach((superscript) =>\n walker(superscript, superscriptTarget, false, false, ancestors)\n )\n\n const topPostTarget = {\n type: 'tag',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:e',\n attribs: {},\n children: [topTarget]\n }\n ]\n }\n if (postSubs.length && postSupers.length) {\n topPostTarget.name = 'm:sSubSup'\n topPostTarget.children.push(subscriptTarget)\n topPostTarget.children.push(superscriptTarget)\n } else if (postSubs.length) {\n topPostTarget.name = 'm:sSub'\n topPostTarget.children.push(subscriptTarget)\n } else {\n topPostTarget.name = 'm:sSup'\n topPostTarget.children.push(superscriptTarget)\n }\n topTarget = topPostTarget\n }\n\n if (preSubs.length || preSupers.length) {\n const preSubscriptTarget = {\n name: 'm:sub',\n type: 'tag',\n attribs: {},\n children: []\n }\n preSubs.forEach((subscript) => walker(subscript, preSubscriptTarget, false, false, ancestors))\n\n const preSuperscriptTarget = {\n name: 'm:sup',\n type: 'tag',\n attribs: {},\n children: []\n }\n\n preSupers.forEach((superscript) =>\n walker(superscript, preSuperscriptTarget, false, false, ancestors)\n )\n const topPreTarget = {\n name: 'm:sPre',\n type: 'tag',\n attribs: {},\n children: [\n {\n name: 'm:e',\n type: 'tag',\n attribs: {},\n children: [topTarget]\n },\n preSubscriptTarget,\n preSuperscriptTarget\n ]\n }\n topTarget = topPreTarget\n }\n targetParent.children.push(topTarget)\n // Don't iterate over children in the usual way.\n}\n","export function mrow(element, targetParent, previousSibling, nextSibling, ancestors) {\n // Detect fence pattern: <mo fence=\"true\">OPEN ... <mo fence=\"true\">CLOSE\n // Convert to OMML <m:d> delimiter (e.g. binomial, \\left(\\right))\n const children = element.children || []\n if (children.length >= 2) {\n const first = children[0]\n const last = children[children.length - 1]\n if (first?.name === 'mo' && first?.attribs?.fence === 'true' &&\n last?.name === 'mo' && last?.attribs?.fence === 'true') {\n const begChar = first.children?.[0]?.data || '('\n const endChar = last.children?.[0]?.data || ')'\n const dNode = {\n type: 'tag', name: 'm:d', attribs: {}, children: [\n { type: 'tag', name: 'm:dPr', attribs: {}, children: [\n { type: 'tag', name: 'm:begChr', attribs: { 'm:val': begChar }, children: [] },\n { type: 'tag', name: 'm:endChr', attribs: { 'm:val': endChar }, children: [] },\n { type: 'tag', name: 'm:ctrlPr', attribs: {}, children: [] }\n ]},\n { type: 'tag', name: 'm:e', attribs: {}, children: [] }\n ]\n }\n targetParent.children.push(dNode)\n // Mark fence operators so the walker child loop skips them\n first.skipInWalker = true\n last.skipInWalker = true\n // Return <m:e> as target — inner children go here\n return dNode.children[1]\n }\n }\n // isNary redirect is now handled in walker's child loop\n return targetParent\n}\n","export function mspace(element, targetParent, previousSibling, nextSibling, ancestors) {\n targetParent.children.push({\n name: 'm:r',\n type: 'tag',\n attribs: {},\n children: [\n {\n name: 'm:t',\n type: 'tag',\n attribs: {\n 'xml:space': 'preserve'\n },\n children: [\n {\n type: 'text',\n data: ' '\n }\n ]\n }\n ]\n })\n}\n","export function msqrt(element, targetParent, previousSibling, nextSibling, ancestors) {\n const targetElement = {\n name: 'm:e',\n type: 'tag',\n attribs: {},\n children: []\n }\n targetParent.children.push({\n name: 'm:rad',\n type: 'tag',\n attribs: {},\n children: [\n {\n name: 'm:radPr',\n type: 'tag',\n attribs: {},\n children: [\n {\n name: 'm:degHide',\n type: 'tag',\n attribs: {\n 'm:val': 'on'\n },\n children: []\n }\n ]\n },\n {\n name: 'm:deg',\n type: 'tag',\n attribs: {},\n children: []\n },\n targetElement\n ]\n })\n return targetElement\n}\n","export function mstyle(element, targetParent, previousSibling, nextSibling, ancestors) {\n // Ignore as default behavior\n return targetParent\n}\n","export function getTextContent(node, trim = true) {\n let returnString = ''\n if (node.type === 'text') {\n let text = node.data.replace(/[\\u2062]|[\\u200B]/g, '')\n if (trim) {\n text = text.trim()\n }\n returnString += text\n } else if (node.children) {\n node.children.forEach((subNode) => {\n returnString += getTextContent(subNode, trim)\n })\n }\n return returnString\n}\n","import { getTextContent } from '../helpers.js'\n\nconst NARY_REGEXP = /^[\\u220f-\\u2211]|[\\u2229-\\u2233]|[\\u22c0-\\u22c3]$/\nconst GROW_REGEXP = /^\\u220f|\\u2211|[\\u2229-\\u222b]|\\u222e|\\u222f|\\u2232|\\u2233|[\\u22c0-\\u22c3]$/\n\nexport function getNary(node) {\n // Check if node contains only a nary operator.\n const text = getTextContent(node)\n if (NARY_REGEXP.test(text)) {\n return text\n }\n return false\n}\n\nexport function getNaryTarget(naryChar, element, type, subHide = false, supHide = false) {\n const stretchy = element.attribs?.stretchy\n const grow =\n stretchy === 'true' ? '1' : stretchy === 'false' ? '0' : GROW_REGEXP.test(naryChar) ? '1' : '0'\n return {\n type: 'tag',\n name: 'm:nary',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:naryPr',\n attribs: {},\n children: [\n { type: 'tag', name: 'm:chr', attribs: { 'm:val': naryChar }, children: [] },\n { type: 'tag', name: 'm:limLoc', attribs: { 'm:val': type }, children: [] },\n { type: 'tag', name: 'm:grow', attribs: { 'm:val': grow }, children: [] },\n {\n type: 'tag',\n name: 'm:subHide',\n attribs: { 'm:val': subHide ? 'on' : 'off' },\n children: []\n },\n {\n type: 'tag',\n name: 'm:supHide',\n attribs: { 'm:val': supHide ? 'on' : 'off' },\n children: []\n }\n ]\n }\n ]\n }\n}\n","export function addScriptlevel(target, ancestors) {\n const scriptlevel = ancestors.find((ancestor) => ancestor.attribs?.scriptlevel)?.attribs\n ?.scriptlevel\n if (['0', '1', '2'].includes(scriptlevel)) {\n target.children.unshift({\n type: 'tag',\n name: 'm:argPr',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:scrLvl',\n attribs: { 'm:val': scriptlevel },\n children: []\n }\n ]\n })\n }\n}\n","import { getNary, getNaryTarget } from '../ooml/index.js'\nimport { walker } from '../walker.js'\n\nexport function msub(element, targetParent, previousSibling, nextSibling, ancestors) {\n // Subscript\n if (element.children.length !== 2) {\n // treat as mrow\n return targetParent\n }\n ancestors = [...ancestors]\n ancestors.unshift(element)\n const base = element.children[0]\n const subscript = element.children[1]\n\n let topTarget\n //\n // m:nAry\n //\n // Conditions:\n // 1. base text must be nary operator\n // 2. no accents\n const naryChar = getNary(base)\n if (\n naryChar &&\n element.attribs?.accent?.toLowerCase() !== 'true' &&\n element.attribs?.accentunder?.toLowerCase() !== 'true'\n ) {\n topTarget = getNaryTarget(naryChar, element, 'subSup', false, true)\n element.isNary = true\n } else {\n // Check for empty base → prescript pattern (LaTeX {}_{sub}X)\n const isEmptyBase = base.name === 'mrow' && (!base.children || base.children.length === 0)\n\n if (isEmptyBase) {\n topTarget = {\n type: 'tag',\n name: 'm:sPre',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:sPrePr',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:ctrlPr',\n attribs: {},\n children: []\n }\n ]\n }\n ]\n }\n element.isPrescript = true\n } else {\n const baseTarget = {\n name: 'm:e',\n type: 'tag',\n attribs: {},\n children: []\n }\n walker(base, baseTarget, false, false, ancestors)\n topTarget = {\n type: 'tag',\n name: 'm:sSub',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:sSubPr',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:ctrlPr',\n attribs: {},\n children: []\n }\n ]\n },\n baseTarget\n ]\n }\n }\n }\n\n const subscriptTarget = {\n name: 'm:sub',\n type: 'tag',\n attribs: {},\n children: []\n }\n\n walker(subscript, subscriptTarget, false, false, ancestors)\n topTarget.children.push(subscriptTarget)\n if (element.isNary) {\n topTarget.children.push({ type: 'tag', name: 'm:sup', attribs: {}, children: [] })\n topTarget.children.push({ type: 'tag', name: 'm:e', attribs: {}, children: [] })\n }\n // For prescript, add empty m:sup and m:e (base filled by walker redirect)\n if (element.isPrescript) {\n topTarget.children.push({ type: 'tag', name: 'm:sup', attribs: {}, children: [] })\n topTarget.children.push({ type: 'tag', name: 'm:e', attribs: {}, children: [] })\n }\n targetParent.children.push(topTarget)\n // Don't iterate over children in the usual way.\n}\n","import { getNary, getNaryTarget } from '../ooml/index.js'\nimport { walker } from '../walker.js'\n\nexport function msubsup(element, targetParent, previousSibling, nextSibling, ancestors) {\n // Sub + superscript\n if (element.children.length !== 3) {\n // treat as mrow\n return targetParent\n }\n\n ancestors = [...ancestors]\n ancestors.unshift(element)\n\n const base = element.children[0]\n const subscript = element.children[1]\n const superscript = element.children[2]\n\n let topTarget\n //\n // m:nAry\n //\n // Conditions:\n // 1. base text must be nary operator\n // 2. no accents\n const naryChar = getNary(base)\n if (\n naryChar &&\n element.attribs?.accent?.toLowerCase() !== 'true' &&\n element.attribs?.accentunder?.toLowerCase() !== 'true'\n ) {\n topTarget = getNaryTarget(naryChar, element, 'subSup')\n element.isNary = true\n } else {\n // Check for empty base → prescript pattern (LaTeX {}^{sup}_{sub}X)\n const isEmptyBase = base.name === 'mrow' && (!base.children || base.children.length === 0)\n\n if (isEmptyBase) {\n topTarget = {\n type: 'tag',\n name: 'm:sPre',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:sPrePr',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:ctrlPr',\n attribs: {},\n children: []\n }\n ]\n }\n ]\n }\n element.isPrescript = true\n } else {\n // Regular m:sSubSup\n const baseTarget = {\n name: 'm:e',\n type: 'tag',\n attribs: {},\n children: []\n }\n\n walker(base, baseTarget, false, false, ancestors)\n topTarget = {\n type: 'tag',\n name: 'm:sSubSup',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:sSubSupPr',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:ctrlPr',\n attribs: {},\n children: []\n }\n ]\n },\n baseTarget\n ]\n }\n }\n }\n\n const subscriptTarget = {\n name: 'm:sub',\n type: 'tag',\n attribs: {},\n children: []\n }\n const superscriptTarget = {\n name: 'm:sup',\n type: 'tag',\n attribs: {},\n children: []\n }\n walker(subscript, subscriptTarget, false, false, ancestors)\n walker(superscript, superscriptTarget, false, false, ancestors)\n topTarget.children.push(subscriptTarget)\n topTarget.children.push(superscriptTarget)\n if (element.isNary) {\n topTarget.children.push({ type: 'tag', name: 'm:e', attribs: {}, children: [] })\n }\n if (element.isPrescript) {\n topTarget.children.push({ type: 'tag', name: 'm:e', attribs: {}, children: [] })\n }\n targetParent.children.push(topTarget)\n // Don't iterate over children in the usual way.\n}\n","import { getNary, getNaryTarget } from '../ooml/index.js'\nimport { walker } from '../walker.js'\n\nexport function msup(element, targetParent, previousSibling, nextSibling, ancestors) {\n // Superscript\n if (element.children.length !== 2) {\n // treat as mrow\n return targetParent\n }\n ancestors = [...ancestors]\n ancestors.unshift(element)\n const base = element.children[0]\n const superscript = element.children[1]\n\n let topTarget\n //\n // m:nAry\n //\n // Conditions:\n // 1. base text must be nary operator\n // 2. no accents\n const naryChar = getNary(base)\n if (\n naryChar &&\n element.attribs?.accent?.toLowerCase() !== 'true' &&\n element.attribs?.accentunder?.toLowerCase() !== 'true'\n ) {\n topTarget = getNaryTarget(naryChar, element, 'subSup', true)\n element.isNary = true\n topTarget.children.push({ type: 'tag', name: 'm:sub' })\n } else {\n // Check for empty base → prescript pattern (LaTeX {}^{sup}X)\n const isEmptyBase = base.name === 'mrow' && (!base.children || base.children.length === 0)\n\n if (isEmptyBase) {\n topTarget = {\n type: 'tag',\n name: 'm:sPre',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:sPrePr',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:ctrlPr',\n attribs: {},\n children: []\n }\n ]\n }\n ]\n }\n element.isPrescript = true\n } else {\n const baseTarget = {\n name: 'm:e',\n type: 'tag',\n attribs: {},\n children: []\n }\n walker(base, baseTarget, false, false, ancestors)\n\n topTarget = {\n type: 'tag',\n name: 'm:sSup',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:sSupPr',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:ctrlPr',\n attribs: {},\n children: []\n }\n ]\n },\n baseTarget\n ]\n }\n }\n }\n\n const superscriptTarget = {\n name: 'm:sup',\n type: 'tag',\n attribs: {},\n children: []\n }\n\n walker(superscript, superscriptTarget, false, false, ancestors)\n\n // For prescript, also add an empty m:sub\n if (element.isPrescript) {\n topTarget.children.push({ type: 'tag', name: 'm:sub', attribs: {}, children: [] })\n }\n topTarget.children.push(superscriptTarget)\n if (element.isNary) {\n topTarget.children.push({ type: 'tag', name: 'm:e', attribs: {}, children: [] })\n }\n if (element.isPrescript) {\n topTarget.children.push({ type: 'tag', name: 'm:e', attribs: {}, children: [] })\n }\n targetParent.children.push(topTarget)\n // Don't iterate over children in the usual way.\n}\n","export function mtable(element, targetParent, previousSibling, nextSibling, ancestors) {\n const cellsPerRowCount = Math.max(...element.children.map((row) => row.children.length))\n const targetElement = {\n name: 'm:m',\n type: 'tag',\n attribs: {},\n children: [\n {\n name: 'm:mPr',\n type: 'tag',\n attribs: {},\n children: [\n {\n name: 'm:baseJc',\n type: 'tag',\n attribs: {\n 'm:val': 'center'\n },\n children: []\n },\n {\n name: 'm:plcHide',\n type: 'tag',\n attribs: {\n 'm:val': 'on'\n },\n children: []\n },\n {\n name: 'm:mcs',\n type: 'tag',\n attribs: {},\n children: [\n {\n name: 'm:mc',\n type: 'tag',\n attribs: {},\n children: [\n {\n name: 'm:mcPr',\n type: 'tag',\n attribs: {},\n children: [\n {\n name: 'm:count',\n type: 'tag',\n attribs: {\n 'm:val': cellsPerRowCount.toString()\n },\n children: []\n },\n {\n name: 'm:mcJc',\n type: 'tag',\n attribs: {\n 'm:val': 'center'\n },\n children: []\n }\n ]\n }\n ]\n }\n ]\n }\n ]\n }\n ]\n }\n targetParent.children.push(targetElement)\n return targetElement\n}\n\nexport function mtd(element, targetParent, previousSibling, nextSibling, ancestors) {\n // table cell\n const targetElement = {\n name: 'm:e',\n type: 'tag',\n attribs: {},\n children: []\n }\n targetParent.children.push(targetElement)\n return targetElement\n}\n\nexport function mtr(element, targetParent, previousSibling, nextSibling, ancestors) {\n // table row\n const targetElement = {\n name: 'm:mr',\n type: 'tag',\n attribs: {},\n children: []\n }\n targetParent.children.push(targetElement)\n return targetElement\n}\n","import { getNary, getNaryTarget } from '../ooml/index.js'\nimport { walker } from '../walker.js'\n\nexport function munderover(element, targetParent, previousSibling, nextSibling, ancestors) {\n // Munderover\n if (element.children.length !== 3) {\n // treat as mrow\n return targetParent\n }\n\n ancestors = [...ancestors]\n ancestors.unshift(element)\n\n const base = element.children[0]\n const underscript = element.children[1]\n const overscript = element.children[2]\n\n //\n // m:nAry\n //\n // Conditions:\n // 1. base text must be nary operator\n // 2. no accents\n const naryChar = getNary(base)\n if (\n naryChar &&\n element.attributes?.accent?.toLowerCase() !== 'true' &&\n element.attributes?.accentunder?.toLowerCase() !== 'true'\n ) {\n const topTarget = getNaryTarget(naryChar, element, 'undOvr')\n element.isNary = true\n const subscriptTarget = {\n name: 'm:sub',\n type: 'tag',\n attribs: {},\n children: []\n }\n const superscriptTarget = {\n name: 'm:sup',\n type: 'tag',\n attribs: {},\n children: []\n }\n walker(underscript, subscriptTarget, false, false, ancestors)\n walker(overscript, superscriptTarget, false, false, ancestors)\n topTarget.children.push(subscriptTarget)\n topTarget.children.push(superscriptTarget)\n topTarget.children.push({ type: 'tag', name: 'm:e', attribs: {}, children: [] })\n targetParent.children.push(topTarget)\n return\n }\n\n // Fallback: m:limUpp()m:limlow\n\n const baseTarget = {\n name: 'm:e',\n type: 'tag',\n attribs: {},\n children: []\n }\n\n walker(base, baseTarget, false, false, ancestors)\n\n const underscriptTarget = {\n name: 'm:lim',\n type: 'tag',\n attribs: {},\n children: []\n }\n const overscriptTarget = {\n name: 'm:lim',\n type: 'tag',\n attribs: {},\n children: []\n }\n\n walker(underscript, underscriptTarget, false, false, ancestors)\n walker(overscript, overscriptTarget, false, false, ancestors)\n targetParent.children.push({\n type: 'tag',\n name: 'm:limUpp',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:e',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:limLow',\n attribs: {},\n children: [baseTarget, underscriptTarget]\n }\n ]\n },\n overscriptTarget\n ]\n })\n // Don't iterate over children in the usual way.\n}\n","import { getTextContent } from '../helpers.js'\n\nexport function getStyle(element, ancestors, previousStyle = {}) {\n const elAttributes = element.attribs || {}\n const color =\n elAttributes.mathcolor ||\n ancestors.find(\n (element) => element.name === 'mstyle' && element.attribs && element.attribs.color\n )?.attribs.color ||\n ''\n // const minsize = parseFloat(elAttributes.scriptminsize || ancestors.find(element => element.name === 'mstyle' && element.attribs && element.attribs.scriptminsize)?.attribs.scriptminsize || '8pt')\n // const sizemultiplier = parseFloat(elAttributes.scriptsizemultiplier || ancestors.find(element => element.name === 'mstyle' && element.attribs && element.attribs.scriptsizemultiplier)?.attribs.scriptsizemultiplier || '0.71')\n const size =\n elAttributes.mathsize ||\n ancestors.find(\n (element) => element.name === 'mstyle' && element.attribs && element.attribs.mathsize\n )?.attribs.mathsize ||\n ''\n const scriptlevel =\n elAttributes.scriptlevel ||\n ancestors.find(\n (element) => element.name === 'mstyle' && element.attribs && element.attribs.scriptlevel\n )?.attribs.scriptlevel ||\n ''\n const background =\n elAttributes.mathbackground ||\n ancestors.find(\n (element) => element.name === 'mstyle' && element.attribs && element.attribs.mathbackground\n )?.attribs.mathbackground ||\n ''\n let variant =\n elAttributes.mathvariant ||\n ancestors.find(\n (element) => element.name === 'mstyle' && element.attribs && element.attribs.mathvariant\n )?.attribs.mathvariant ||\n ''\n if (variant === 'b-i') {\n variant = 'bold-italic'\n }\n const fontweight =\n elAttributes.fontweight ||\n ancestors.find(\n (element) => element.name === 'mstyle' && element.attribs && element.attribs.fontweight\n )?.attribs.fontweight ||\n ''\n if (fontweight === 'bold' && !['bold', 'bold-italic'].includes(variant)) {\n if (variant.includes('italic')) {\n variant = 'bold-italic'\n } else {\n variant = 'bold'\n }\n } else if (fontweight === 'normal' && ['bold', 'bold-italic'].includes(variant)) {\n if (variant.includes('italic')) {\n variant = 'italic'\n } else {\n variant = ''\n }\n }\n const fontstyle =\n elAttributes.fontstyle ||\n ancestors.find(\n (element) => element.name === 'mstyle' && element.attribs && element.attribs.fontstyle\n )?.attribs.fontstyle ||\n ''\n if (fontstyle === 'italic' && !['italic', 'bold-italic'].includes(variant)) {\n if (variant.includes('bold')) {\n variant = 'bold-italic'\n } else {\n variant = 'italic'\n }\n } else if (fontstyle === 'normal' && ['italic', 'bold-italic'].includes(variant)) {\n if (variant.includes('bold')) {\n variant = 'bold'\n } else {\n variant = ''\n }\n }\n // Override variant for some types\n if (!elAttributes.mathvariant) {\n const textContent = getTextContent(element)\n if (\n previousStyle.variant === '' &&\n ((element.name === 'mi' && textContent.length > 1) ||\n (element.name === 'mn' && !/^\\d+\\.\\d+$/.test(textContent)))\n ) {\n variant = ''\n } else if (\n ['mi', 'mn', 'mo'].includes(element.name) &&\n ['italic', 'bold-italic'].includes(previousStyle.variant)\n ) {\n if (fontweight === 'bold') {\n variant = 'bold-italic'\n } else {\n variant = 'italic'\n }\n }\n }\n\n return {\n color,\n variant,\n size,\n scriptlevel,\n background,\n fontstyle\n }\n}\n","import { getStyle } from './text_style.js'\n\nconst STYLES = {\n bold: 'b',\n italic: 'i',\n 'bold-italic': 'bi'\n}\n\nfunction textContainer(element, targetParent, previousSibling, nextSibling, ancestors, textType) {\n // isNary redirect is now handled in walker's child loop\n\n const hasMglyphChild = element.children?.find((element) => element.name === 'mglyph')\n const style = getStyle(element, ancestors, previousSibling?.style)\n element.style = style // Add it to element to make it comparable\n element.hasMglyphChild = hasMglyphChild\n const styleSame =\n Object.keys(style).every((key) => {\n const previousStyle = previousSibling?.style\n return previousStyle && style[key] === previousStyle[key]\n }) && previousSibling?.hasMglyphChild === hasMglyphChild\n const sameGroup = // Only group mtexts or mi, mn, mo with oneanother.\n textType === previousSibling?.name ||\n (['mi', 'mn', 'mo'].includes(textType) && ['mi', 'mn', 'mo'].includes(previousSibling?.name))\n let targetElement\n const lastChild = targetParent.children[targetParent.children.length - 1]\n if (sameGroup && styleSame && !hasMglyphChild && lastChild?.name === 'm:r') {\n targetElement = lastChild.children[lastChild.children.length - 1]\n } else {\n const rElement = {\n name: 'm:r',\n type: 'tag',\n attribs: {},\n children: []\n }\n\n if (style.variant) {\n const wrPr = {\n name: 'w:rPr',\n type: 'tag',\n attribs: {},\n children: []\n }\n if (style.variant.includes('bold')) {\n wrPr.children.push({ name: 'w:b', type: 'tag', attribs: {}, children: [] })\n }\n if (style.variant.includes('italic')) {\n wrPr.children.push({ name: 'w:i', type: 'tag', attribs: {}, children: [] })\n }\n rElement.children.push(wrPr)\n const mrPr = {\n name: 'm:rPr',\n type: 'tag',\n attribs: {},\n children: [\n {\n name: 'm:nor',\n type: 'tag',\n attribs: {},\n children: []\n }\n ]\n }\n if (style.variant !== 'italic') {\n mrPr.children.push({\n name: 'm:sty',\n type: 'tag',\n attribs: {\n 'm:val': STYLES[style.variant]\n },\n children: []\n })\n }\n rElement.children.push(mrPr)\n } else if (hasMglyphChild || textType === 'mtext') {\n rElement.children.push({\n name: 'm:rPr',\n type: 'tag',\n attribs: {},\n children: [\n {\n name: 'm:nor',\n type: 'tag',\n attribs: {},\n children: []\n }\n ]\n })\n } else if (style.fontstyle === 'normal' || (textType === 'ms' && style.fontstyle === '')) {\n rElement.children.push({\n name: 'm:rPr',\n type: 'tag',\n attribs: {},\n children: [\n {\n name: 'm:sty',\n type: 'tag',\n attribs: { 'm:val': 'p' },\n children: []\n }\n ]\n })\n }\n\n targetElement = {\n name: 'm:t',\n type: 'tag',\n attribs: {\n 'xml:space': 'preserve'\n },\n children: []\n }\n rElement.children.push(targetElement)\n targetParent.children.push(rElement)\n }\n return targetElement\n}\n\nexport function mtext(element, targetParent, previousSibling, nextSibling, ancestors) {\n return textContainer(element, targetParent, previousSibling, nextSibling, ancestors, 'mtext')\n}\n\nexport function mi(element, targetParent, previousSibling, nextSibling, ancestors) {\n return textContainer(element, targetParent, previousSibling, nextSibling, ancestors, 'mi')\n}\n\nexport function mn(element, targetParent, previousSibling, nextSibling, ancestors) {\n return textContainer(element, targetParent, previousSibling, nextSibling, ancestors, 'mn')\n}\n\nexport function mo(element, targetParent, previousSibling, nextSibling, ancestors) {\n return textContainer(element, targetParent, previousSibling, nextSibling, ancestors, 'mo')\n}\n\nexport function ms(element, targetParent, previousSibling, nextSibling, ancestors) {\n return textContainer(element, targetParent, previousSibling, nextSibling, ancestors, 'ms')\n}\n","import { getNary, getNaryTarget } from '../ooml/index.js'\nimport { walker } from '../walker.js'\n\nimport { getTextContent } from '../helpers.js'\n\nconst UPPER_COMBINATION = {\n '\\u2190': '\\u20D6', // arrow left\n '\\u27F5': '\\u20D6', // arrow left, long\n '\\u2192': '\\u20D7', // arrow right\n '\\u27F6': '\\u20D7', // arrow right, long\n '\\u00B4': '\\u0301', // accute\n '\\u02DD': '\\u030B', // accute, double\n '\\u02D8': '\\u0306', // breve\n ˇ: '\\u030C', // caron\n '\\u00B8': '\\u0312', // cedilla\n '\\u005E': '\\u0302', // circumflex accent\n '\\u00A8': '\\u0308', // diaresis\n '\\u02D9': '\\u0307', // dot above\n '\\u0060': '\\u0300', // grave accent\n '\\u002D': '\\u0305', // hyphen -> overline\n '\\u00AF': '\\u0305', // macron\n '\\u2212': '\\u0305', // minus -> overline\n '\\u002E': '\\u0307', // period -> dot above\n '\\u007E': '\\u0303', // tilde\n '\\u02DC': '\\u0303' // small tilde\n}\n\nfunction underOrOver(element, targetParent, previousSibling, nextSibling, ancestors, direction) {\n // Munder/Mover\n\n if (element.children.length !== 2) {\n // treat as mrow\n return targetParent\n }\n\n ancestors = [...ancestors]\n ancestors.unshift(element)\n\n const base = element.children[0]\n const script = element.children[1]\n\n // Munder/Mover can be translated to ooml in different ways.\n\n // First we check for m:nAry.\n //\n // m:nAry\n //\n // Conditions:\n // 1. base text must be nary operator\n // 2. no accents\n const naryChar = getNary(base)\n\n if (\n naryChar &&\n element.attribs?.accent?.toLowerCase() !== 'true' &&\n element.attribs?.accentunder?.toLowerCase() !== 'true'\n ) {\n const topTarget = getNaryTarget(\n naryChar,\n element,\n 'undOvr',\n direction === 'over',\n direction === 'under'\n )\n element.isNary = true\n\n const subscriptTarget = {\n name: 'm:sub',\n type: 'tag',\n attribs: {},\n children: []\n }\n const superscriptTarget = {\n name: 'm:sup',\n type: 'tag',\n attribs: {},\n children: []\n }\n walker(\n script,\n direction === 'under' ? subscriptTarget : superscriptTarget,\n false,\n false,\n ancestors\n )\n topTarget.children.push(subscriptTarget)\n topTarget.children.push(superscriptTarget)\n topTarget.children.push({ type: 'tag', name: 'm:e', attribs: {}, children: [] })\n targetParent.children.push(topTarget)\n return\n }\n\n const scriptText = getTextContent(script)\n\n const baseTarget = {\n name: 'm:e',\n type: 'tag',\n attribs: {},\n children: []\n }\n walker(base, baseTarget, false, false, ancestors)\n\n //\n // m:bar\n //\n // Then we check whether it should be an m:bar.\n // This happens if:\n // 1. The script text is a single character that corresponds to\n // \\u0332/\\u005F (underbar) or \\u0305/\\u00AF (overbar)\n // 2. The type of the script element is mo.\n if (\n (direction === 'under' && script.name === 'mo' && ['\\u0332', '\\u005F'].includes(scriptText)) ||\n (direction === 'over' && script.name === 'mo' && ['\\u0305', '\\u00AF'].includes(scriptText))\n ) {\n // m:bar\n targetParent.children.push({\n type: 'tag',\n name: 'm:bar',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:barPr',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:pos',\n attribs: {\n 'm:val': direction === 'under' ? 'bot' : 'top'\n },\n children: []\n }\n ]\n },\n {\n type: 'tag',\n name: 'm:e',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: direction === 'under' ? 'm:sSub' : 'm:sSup',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: direction === 'under' ? 'm:sSubPr' : 'm:sSupPr',\n attribs: {},\n children: [{ type: 'tag', name: 'm:ctrlPr', attribs: {}, children: [] }]\n },\n baseTarget,\n { type: 'tag', name: 'm:sub', attribs: {}, children: [] }\n ]\n }\n ]\n }\n ]\n })\n return\n }\n\n // m:acc\n //\n // Next we try to see if it is an m:acc. This is the case if:\n // 1. The scriptText is 0-1 characters long.\n // 2. The script is an mo-element\n // 3. The accent is set.\n if (\n (direction === 'under' &&\n element.attribs?.accentunder?.toLowerCase() === 'true' &&\n script.name === 'mo' &&\n scriptText.length < 2) ||\n (direction === 'over' &&\n element.attribs?.accent?.toLowerCase() === 'true' &&\n script.name === 'mo' &&\n scriptText.length < 2)\n ) {\n // m:acc\n targetParent.children.push({\n type: 'tag',\n name: 'm:acc',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:accPr',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:chr',\n attribs: {\n 'm:val': UPPER_COMBINATION[scriptText] || scriptText\n },\n children: []\n }\n ]\n },\n baseTarget\n ]\n })\n return\n }\n // m:groupChr\n //\n // Now we try m:groupChr. Conditions are:\n // 1. Base is an 'mrow' and script is an 'mo'.\n // 2. Script length is 1.\n // 3. No accent\n if (\n element.attribs?.accent?.toLowerCase() !== 'true' &&\n element.attribs?.accentunder?.toLowerCase() !== 'true' &&\n script.name === 'mo' &&\n base.name === 'mrow' &&\n scriptText.length === 1\n ) {\n targetParent.children.push({\n type: 'tag',\n name: 'm:groupChr',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:groupChrPr',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:chr',\n attribs: {\n 'm:val': scriptText,\n 'm:pos': direction === 'under' ? 'bot' : 'top'\n },\n children: []\n }\n ]\n },\n baseTarget\n ]\n })\n return\n }\n // Fallback: m:lim\n\n const scriptTarget = {\n name: 'm:lim',\n type: 'tag',\n attribs: {},\n children: []\n }\n\n walker(script, scriptTarget, false, false, ancestors)\n targetParent.children.push({\n type: 'tag',\n name: direction === 'under' ? 'm:limLow' : 'm:limUpp',\n attribs: {},\n children: [baseTarget, scriptTarget]\n })\n // Don't iterate over children in the usual way.\n}\n\nexport function munder(element, targetParent, previousSibling, nextSibling, ancestors) {\n return underOrOver(element, targetParent, previousSibling, nextSibling, ancestors, 'under')\n}\n\nexport function mover(element, targetParent, previousSibling, nextSibling, ancestors) {\n return underOrOver(element, targetParent, previousSibling, nextSibling, ancestors, 'over')\n}\n","import { getTextContent } from '../helpers.js'\nimport { walker } from '../walker.js'\n\nexport function mroot(element, targetParent, previousSibling, nextSibling, ancestors) {\n // Root\n if (element.children.length !== 2) {\n // treat as mrow\n return targetParent\n }\n ancestors = [...ancestors]\n ancestors.unshift(element)\n const base = element.children[0]\n const root = element.children[1]\n\n const baseTarget = {\n type: 'tag',\n name: 'm:e',\n attribs: {},\n children: []\n }\n walker(base, baseTarget, false, false, ancestors)\n\n const rootTarget = {\n type: 'tag',\n name: 'm:deg',\n attribs: {},\n children: []\n }\n walker(root, rootTarget, false, false, ancestors)\n\n const rootText = getTextContent(root)\n\n targetParent.children.push({\n type: 'tag',\n name: 'm:rad',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:radPr',\n attribs: {},\n children: [\n {\n type: 'tag',\n name: 'm:degHide',\n attribs: { 'm:val': rootText.length ? 'off' : 'on' },\n children: []\n }\n ]\n },\n rootTarget,\n baseTarget\n ]\n })\n}\n","export function text(element, targetParent, previousSibling, nextSibling, ancestors) {\n let text = element.data.replace(/[\\u2062]|[\\u200B]/g, '')\n if (ancestors.find((element) => ['mi', 'mn', 'mo'].includes(element.name))) {\n text = text.replace(/\\s/g, '')\n } else {\n const ms = ancestors.find((element) => element.name === 'ms')\n if (ms) {\n text = (ms.attribs?.lquote || '\"') + text + (ms.attribs?.rquote || '\"')\n }\n }\n if (text.length) {\n if (\n targetParent.children.length &&\n targetParent.children[targetParent.children.length - 1].type === 'text'\n ) {\n targetParent.children[targetParent.children.length - 1].data += text\n } else {\n targetParent.children.push({\n type: 'text',\n data: text\n })\n }\n }\n return targetParent\n}\n","import * as mathmlHandlers from './mathml/index.js'\nimport { addScriptlevel } from './ooml/index.js'\n\nexport function walker(\n element,\n targetParent,\n previousSibling = false,\n nextSibling = false,\n ancestors = []\n) {\n if (\n !previousSibling &&\n ['m:deg', 'm:den', 'm:e', 'm:fName', 'm:lim', 'm:num', 'm:sub', 'm:sup'].includes(\n targetParent.name\n )\n ) {\n // We are walking through the first element within one of the\n // elements where an <m:argPr> might occur. The <m:argPr> can specify\n // the scriptlevel, but it only makes sense if there is some content.\n // The fact that we are here means that there is at least one content item.\n // So we will check whether to add the m:rPr.\n // For possible parent types, see\n // https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.math.argumentproperties?view=openxml-2.8.1#remarks\n addScriptlevel(targetParent, ancestors)\n }\n let targetElement\n const nameOrType = element.name || element.type\n if (mathmlHandlers[nameOrType]) {\n targetElement = mathmlHandlers[nameOrType](\n element,\n targetParent,\n previousSibling,\n nextSibling,\n ancestors\n )\n } else {\n if (nameOrType && nameOrType !== 'root') {\n console.warn(`Type not supported: ${nameOrType}`)\n }\n\n targetElement = targetParent\n }\n\n if (!targetElement) {\n // Target element hasn't been assigned, so don't handle children.\n return\n }\n if (element.children?.length) {\n ancestors = [...ancestors]\n ancestors.unshift(element)\n // Track nary body redirect: after a nary operator, redirect subsequent\n // siblings into its <m:e> until a relational operator (=, <, >, etc.) is\n // encountered. Chains through nested nary operators (e.g. double\n // integrals ∫∫).\n let naryBodyTarget = null\n // Track prescript redirect: after a msubsup with empty base (e.g.\n // {}^{14}_{6}C), redirect the next sibling into <m:sPre>'s <m:e>.\n let prescriptTarget = null\n for (let i = 0; i < element.children.length; i++) {\n const child = element.children[i]\n if (child.skipInWalker) continue\n\n // A relational/separator <mo> or <mtext> stops the nary redirect so\n // that content after the operand stays outside the nary body.\n // Examples: ∑ aᵢ = S → operand is aᵢ (stopped by =)\n // ∑ aᵢ, bⱼ → operand is aᵢ (stopped by ,)\n // ∑ aᵢ \\text{ for } i → operand is aᵢ (stopped by mtext)\n if (naryBodyTarget) {\n if (child.name === 'mo') {\n const txt = child.children?.[0]?.data\n if (txt && /^[=<>≤≥≠≈≡∼≲≳≪≫∈∉⊂⊃⊆⊇⊄⊅≺≻⪯⪰∝≅≃≍≎∥⊥⊢⊣⊨⊩,;:∣]$/.test(txt)) {\n naryBodyTarget = null\n }\n } else if (child.name === 'mtext') {\n naryBodyTarget = null\n }\n }\n\n const effectiveTarget = prescriptTarget || naryBodyTarget || targetElement\n walker(\n child,\n effectiveTarget,\n element.children[i - 1],\n element.children[i + 1],\n ancestors\n )\n if (child.isNary) {\n // Chain into the new nary's <m:e>\n const naryNode = effectiveTarget.children[effectiveTarget.children.length - 1]\n naryBodyTarget = naryNode.children[naryNode.children.length - 1]\n }\n if (child.isPrescript) {\n // Redirect next sibling into <m:sPre>'s <m:e>\n const preNode = effectiveTarget.children[effectiveTarget.children.length - 1]\n prescriptTarget = preNode.children[preNode.children.length - 1]\n } else if (prescriptTarget) {\n // One element consumed; stop prescript redirect\n prescriptTarget = null\n }\n }\n }\n}\n","import { parse, stringifyDoc } from './parse-stringify'\nimport { walker } from './walker.js'\n\nclass MML2OMML {\n constructor(mmlString, options = {}) {\n this.inString = mmlString\n this.inXML = parse(mmlString, options)\n this.outXML = false\n this.outString = false\n }\n\n run() {\n const outXML = {}\n walker({ children: this.inXML, type: 'root' }, outXML)\n this.outXML = outXML\n }\n\n getResult() {\n this.outString = stringifyDoc([this.outXML])\n return this.outString\n }\n}\n\nexport const mml2omml = (mmlString, options) => {\n const converter = new MML2OMML(mmlString, options)\n converter.run()\n return converter.getResult()\n}\n"],"names":["stringify","parseTag","entities.decodeXML"],"mappings":"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","x_google_ignoreList":[0,1,2]} |