@pie-lib/math-rendering 2.3.13 → 2.4.2-next.1

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/CHANGELOG.md CHANGED
@@ -3,44 +3,6 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [2.3.13](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-rendering@2.3.12...@pie-lib/math-rendering@2.3.13) (2022-03-21)
7
-
8
-
9
- ### Bug Fixes
10
-
11
- * **math-rendering:** fix line spacing for mathjax mspace PD-1384 ([57fe827](https://github.com/pie-framework/pie-lib/commit/57fe827372c81138b35f294f16327c291872c8a2))
12
-
13
-
14
-
15
-
16
-
17
- ## [2.3.12](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-rendering@2.3.11...@pie-lib/math-rendering@2.3.12) (2021-11-29)
18
-
19
- **Note:** Version bump only for package @pie-lib/math-rendering
20
-
21
-
22
-
23
-
24
-
25
- ## [2.3.11](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-rendering@2.3.10...@pie-lib/math-rendering@2.3.11) (2021-09-08)
26
-
27
- **Note:** Version bump only for package @pie-lib/math-rendering
28
-
29
-
30
-
31
-
32
-
33
- ## [2.3.10](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-rendering@2.3.9...@pie-lib/math-rendering@2.3.10) (2021-09-08)
34
-
35
-
36
- ### Bug Fixes
37
-
38
- * wip ([fe4316d](https://github.com/pie-framework/pie-lib/commit/fe4316d))
39
-
40
-
41
-
42
-
43
-
44
6
  ## [2.3.9](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-rendering@2.3.8...@pie-lib/math-rendering@2.3.9) (2021-08-30)
45
7
 
46
8
 
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA","sourcesContent":["import renderMath from './render-math';\nimport { wrapMath, unWrapMath } from './normalization';\n\nexport { renderMath, wrapMath, unWrapMath };\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.js"],"sourcesContent":["import renderMath from './render-math';\nimport { wrapMath, unWrapMath } from './normalization';\n\nexport { renderMath, wrapMath, unWrapMath };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mstack/chtml.js"],"names":["reduceText","acc","n","node","kind","text","Line","Row","columns","operator","count","direction","length","Error","diff","padding","_","times","map","mathNodeToCharArray","mn","childNodes","reduce","split","toColumnArray","child","console","warn","toCHTML","rowStack","f","first","nodes","tail","flatten","undefined","getStackData","mstack","compact","CHTMLmstack","factory","parent","ce","adaptor","document","createElement","bind","chtml","standardCHTMLnode","stackData","maxCols","r","table","appendChild","forEach","row","tr","td","setAttribute","textContent","cols","pad","c","t","CHTMLWrapper","styles","border"],"mappings":"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","sourcesContent":["import { CHTMLWrapper } from 'mathjax-full/js/output/chtml/Wrapper';\nimport _ from 'lodash';\n\nconst reduceText = (acc, n) => {\n if (n.node && n.node.kind === 'text') {\n acc += n.node.text;\n }\n return acc;\n};\n\nexport class Line {\n constructor() {\n this.kind = 'line';\n }\n\n get columns() {\n return [];\n }\n}\n\nexport class Row {\n constructor(columns, operator) {\n this.kind = 'row';\n this.operator = operator;\n this.columns = columns;\n }\n\n pad(count, direction = 'right') {\n if (count < this.columns.length) {\n throw new Error('no');\n }\n\n const diff = count - this.columns.length;\n\n const padding = _.times(diff).map(n => '__pad__');\n return direction === 'right' ? [...padding, ...this.columns] : [...this.columns, ...padding];\n }\n}\n\nconst mathNodeToCharArray = mn => {\n const text = mn.childNodes.reduce(reduceText, '');\n return text.split('');\n};\n\n/**\n * Convert child a column entry\n * @param {*} child\n * @return an array of column content\n */\nconst toColumnArray = child => {\n if (!child || !child.kind) {\n return [];\n }\n\n if (child.kind === 'msrow') {\n throw new Error('msrow in msrow?');\n }\n\n if (child.kind === 'mo') {\n // We are going to treat this operator as a text array.\n // It's probably going to be a decimal point\n console.warn('mo that is not 1st node in msrow?');\n return mathNodeToCharArray(child);\n // throw new Error('mo must be first child of msrow');\n }\n\n if (child.kind === 'mn') {\n return mathNodeToCharArray(child);\n }\n\n if (child.toCHTML) {\n return child;\n }\n};\n\n/**\n * convert mstack chtml childNodes into a Row\n * @param child chtml child node of mstack\n * @return Row | Line\n */\nconst rowStack = child => {\n if (!child || !child.kind) {\n return;\n }\n\n if (child.kind === 'msrow') {\n if (!child.childNodes || child.childNodes.length === 0) {\n return new Row([]);\n }\n const f = _.first(child.childNodes);\n const nodes = f && f.kind === 'mo' ? _.tail(child.childNodes) : child.childNodes;\n\n const columns = _.flatten(nodes.map(toColumnArray));\n\n return new Row(columns, f.kind === 'mo' ? f : undefined);\n }\n\n if (child.kind === 'mn') {\n const columns = mathNodeToCharArray(child);\n return new Row(columns, undefined);\n }\n\n if (child.kind === 'mo') {\n console.warn('mo on its own row?');\n return new Row([], child);\n }\n\n if (child.kind === 'msline') {\n return new Line();\n }\n\n if (child.toCHTML) {\n return new Row([child]);\n }\n};\n\n/** convert MathJax chtml tree to Row[]\n * @param mstack the root of the mathjax chtml tree\n * @return Row[]\n */\n\nexport const getStackData = mstack => {\n if (!mstack || !mstack.childNodes) {\n return [];\n }\n return _.compact(mstack.childNodes.map(rowStack));\n};\n\nexport class CHTMLmstack extends CHTMLWrapper {\n constructor(factory, node, parent = null) {\n super(factory, node, parent);\n\n this.ce = this.adaptor.document.createElement.bind(this.adaptor.document);\n }\n\n toCHTML(parent) {\n const chtml = this.standardCHTMLnode(parent);\n\n const stackData = getStackData(this);\n\n // console.log('stackData', stackData);\n const maxCols = stackData.reduce((acc, r) => {\n if (r && r.columns.length > acc) {\n acc = r.columns.length;\n }\n return acc;\n }, 0);\n\n const table = this.ce('table');\n chtml.appendChild(table);\n\n stackData.forEach(row => {\n const tr = this.ce('tr');\n table.appendChild(tr);\n\n if (row.kind === 'row') {\n const td = this.ce('td');\n tr.appendChild(td);\n if (row.operator && row.operator.toCHTML) {\n td.setAttribute('class', 'inner');\n row.operator.toCHTML(td);\n } else {\n td.textContent = '';\n }\n\n // align right for now:\n const cols = row.pad(maxCols, 'right');\n cols.forEach(c => {\n const t = this.ce('td');\n tr.appendChild(t);\n if (c === '__pad__') {\n t.textContent = '';\n } else if (typeof c === 'string') {\n t.textContent = c;\n } else if (c.kind === 'none') {\n t.textContent = '';\n } else if (c.toCHTML) {\n t.setAttribute('class', 'inner');\n c.toCHTML(t);\n }\n });\n } else if (row.kind === 'line') {\n const td = this.ce('td');\n tr.appendChild(td);\n td.setAttribute('colspan', maxCols + 1);\n td.setAttribute('class', 'mjx-line');\n td.textContent = '';\n }\n });\n }\n}\nCHTMLmstack.styles = {\n 'mjx-mstack > table': {\n 'line-height': 'initial',\n border: 'solid 0px red',\n 'border-spacing': '0em',\n 'border-collapse': 'separate'\n },\n 'mjx-mstack > table > tr': {\n 'line-height': 'initial'\n },\n 'mjx-mstack > table > tr > td': {\n // padding: '1.2rem',\n border: 'solid 0px blue',\n 'font-family': 'sans-serif',\n 'line-height': 'initial'\n },\n 'mjx-mstack > table > tr > td.inner': {\n 'font-family': 'inherit'\n },\n 'mjx-mstack > table > tr > .mjx-line': {\n padding: 0,\n 'border-top': 'solid 1px black'\n }\n};\n"],"file":"chtml.js"}
1
+ {"version":3,"file":"chtml.js","names":["reduceText","acc","n","node","kind","text","Line","Row","columns","operator","count","direction","length","Error","diff","padding","_","times","map","mathNodeToCharArray","mn","childNodes","reduce","split","toColumnArray","child","console","warn","toCHTML","rowStack","f","first","nodes","tail","flatten","undefined","getStackData","mstack","compact","CHTMLmstack","factory","parent","ce","adaptor","document","createElement","bind","chtml","standardCHTMLnode","stackData","maxCols","r","table","appendChild","forEach","row","tr","td","setAttribute","textContent","cols","pad","c","t","CHTMLWrapper","styles","border"],"sources":["../../src/mstack/chtml.js"],"sourcesContent":["import { CHTMLWrapper } from 'mathjax-full/js/output/chtml/Wrapper';\nimport _ from 'lodash';\n\nconst reduceText = (acc, n) => {\n if (n.node && n.node.kind === 'text') {\n acc += n.node.text;\n }\n return acc;\n};\n\nexport class Line {\n constructor() {\n this.kind = 'line';\n }\n\n get columns() {\n return [];\n }\n}\n\nexport class Row {\n constructor(columns, operator) {\n this.kind = 'row';\n this.operator = operator;\n this.columns = columns;\n }\n\n pad(count, direction = 'right') {\n if (count < this.columns.length) {\n throw new Error('no');\n }\n\n const diff = count - this.columns.length;\n\n const padding = _.times(diff).map(n => '__pad__');\n return direction === 'right' ? [...padding, ...this.columns] : [...this.columns, ...padding];\n }\n}\n\nconst mathNodeToCharArray = mn => {\n const text = mn.childNodes.reduce(reduceText, '');\n return text.split('');\n};\n\n/**\n * Convert child a column entry\n * @param {*} child\n * @return an array of column content\n */\nconst toColumnArray = child => {\n if (!child || !child.kind) {\n return [];\n }\n\n if (child.kind === 'msrow') {\n throw new Error('msrow in msrow?');\n }\n\n if (child.kind === 'mo') {\n // We are going to treat this operator as a text array.\n // It's probably going to be a decimal point\n console.warn('mo that is not 1st node in msrow?');\n return mathNodeToCharArray(child);\n // throw new Error('mo must be first child of msrow');\n }\n\n if (child.kind === 'mn') {\n return mathNodeToCharArray(child);\n }\n\n if (child.toCHTML) {\n return child;\n }\n};\n\n/**\n * convert mstack chtml childNodes into a Row\n * @param child chtml child node of mstack\n * @return Row | Line\n */\nconst rowStack = child => {\n if (!child || !child.kind) {\n return;\n }\n\n if (child.kind === 'msrow') {\n if (!child.childNodes || child.childNodes.length === 0) {\n return new Row([]);\n }\n const f = _.first(child.childNodes);\n const nodes = f && f.kind === 'mo' ? _.tail(child.childNodes) : child.childNodes;\n\n const columns = _.flatten(nodes.map(toColumnArray));\n\n return new Row(columns, f.kind === 'mo' ? f : undefined);\n }\n\n if (child.kind === 'mn') {\n const columns = mathNodeToCharArray(child);\n return new Row(columns, undefined);\n }\n\n if (child.kind === 'mo') {\n console.warn('mo on its own row?');\n return new Row([], child);\n }\n\n if (child.kind === 'msline') {\n return new Line();\n }\n\n if (child.toCHTML) {\n return new Row([child]);\n }\n};\n\n/** convert MathJax chtml tree to Row[]\n * @param mstack the root of the mathjax chtml tree\n * @return Row[]\n */\n\nexport const getStackData = mstack => {\n if (!mstack || !mstack.childNodes) {\n return [];\n }\n return _.compact(mstack.childNodes.map(rowStack));\n};\n\nexport class CHTMLmstack extends CHTMLWrapper {\n constructor(factory, node, parent = null) {\n super(factory, node, parent);\n\n this.ce = this.adaptor.document.createElement.bind(this.adaptor.document);\n }\n\n toCHTML(parent) {\n const chtml = this.standardCHTMLnode(parent);\n\n const stackData = getStackData(this);\n\n // console.log('stackData', stackData);\n const maxCols = stackData.reduce((acc, r) => {\n if (r && r.columns.length > acc) {\n acc = r.columns.length;\n }\n return acc;\n }, 0);\n\n const table = this.ce('table');\n chtml.appendChild(table);\n\n stackData.forEach(row => {\n const tr = this.ce('tr');\n table.appendChild(tr);\n\n if (row.kind === 'row') {\n const td = this.ce('td');\n tr.appendChild(td);\n if (row.operator && row.operator.toCHTML) {\n td.setAttribute('class', 'inner');\n row.operator.toCHTML(td);\n } else {\n td.textContent = '';\n }\n\n // align right for now:\n const cols = row.pad(maxCols, 'right');\n cols.forEach(c => {\n const t = this.ce('td');\n tr.appendChild(t);\n if (c === '__pad__') {\n t.textContent = '';\n } else if (typeof c === 'string') {\n t.textContent = c;\n } else if (c.kind === 'none') {\n t.textContent = '';\n } else if (c.toCHTML) {\n t.setAttribute('class', 'inner');\n c.toCHTML(t);\n }\n });\n } else if (row.kind === 'line') {\n const td = this.ce('td');\n tr.appendChild(td);\n td.setAttribute('colspan', maxCols + 1);\n td.setAttribute('class', 'mjx-line');\n td.textContent = '';\n }\n });\n }\n}\nCHTMLmstack.styles = {\n 'mjx-mstack > table': {\n 'line-height': 'initial',\n border: 'solid 0px red',\n 'border-spacing': '0em',\n 'border-collapse': 'separate'\n },\n 'mjx-mstack > table > tr': {\n 'line-height': 'initial'\n },\n 'mjx-mstack > table > tr > td': {\n // padding: '1.2rem',\n border: 'solid 0px blue',\n 'font-family': 'sans-serif',\n 'line-height': 'initial'\n },\n 'mjx-mstack > table > tr > td.inner': {\n 'font-family': 'inherit'\n },\n 'mjx-mstack > table > tr > .mjx-line': {\n padding: 0,\n 'border-top': 'solid 1px black'\n }\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mstack/index.js"],"names":["chtmlNodes","mstack","CHTMLmstack","mmlNodes","MmlMstack","msline","MmlMsline","msrow","MmlMsrow","none","MmlNone"],"mappings":";;;;;;;AAAA;;AACA;;AAEO,IAAMA,UAAU,GAAG;AACxBC,EAAAA,MAAM,EAAEC;AADgB,CAAnB;;AAIA,IAAMC,QAAQ,GAAG;AACtBF,EAAAA,MAAM,EAAEG,cADc;AAEtBC,EAAAA,MAAM,EAAEC,cAFc;AAGtBC,EAAAA,KAAK,EAAEC,aAHe;AAItBC,EAAAA,IAAI,EAAEC;AAJgB,CAAjB","sourcesContent":["import { CHTMLmstack } from './chtml';\nimport { MmlNone, MmlMsline, MmlMstack, MmlMsrow } from './mml';\n\nexport const chtmlNodes = {\n mstack: CHTMLmstack\n};\n\nexport const mmlNodes = {\n mstack: MmlMstack,\n msline: MmlMsline,\n msrow: MmlMsrow,\n none: MmlNone\n};\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["chtmlNodes","mstack","CHTMLmstack","mmlNodes","MmlMstack","msline","MmlMsline","msrow","MmlMsrow","none","MmlNone"],"sources":["../../src/mstack/index.js"],"sourcesContent":["import { CHTMLmstack } from './chtml';\nimport { MmlNone, MmlMsline, MmlMstack, MmlMsrow } from './mml';\n\nexport const chtmlNodes = {\n mstack: CHTMLmstack\n};\n\nexport const mmlNodes = {\n mstack: MmlMstack,\n msline: MmlMsline,\n msrow: MmlMsrow,\n none: MmlNone\n};\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEO,IAAMA,UAAU,GAAG;EACxBC,MAAM,EAAEC;AADgB,CAAnB;;AAIA,IAAMC,QAAQ,GAAG;EACtBF,MAAM,EAAEG,cADc;EAEtBC,MAAM,EAAEC,cAFc;EAGtBC,KAAK,EAAEC,aAHe;EAItBC,IAAI,EAAEC;AAJgB,CAAjB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mstack/mml.js"],"names":["MmlNone","AbstractMmlNode","MmlMstack","MmlMsrow","MmlMsline"],"mappings":";;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;IAEaA,O;;;;;;;;;;;;;SACX,eAAW;AACT,aAAO,MAAP;AACD;;;;EAH0BC,wB;;;;IAMhBC,S;;;;;;;;;;;;;SACX,eAAW;AACT,aAAO,QAAP;AACD;;;;EAH4BD,wB;;;;IAMlBE,Q;;;;;;;;;;;;;SACX,eAAW;AACT,aAAO,OAAP;AACD;;;;EAH2BF,wB;;;;IAKjBG,S;;;;;;;;;;;;;SACX,eAAW;AACT,aAAO,QAAP;AACD;;;;EAH4BH,wB","sourcesContent":["import { AbstractMmlNode } from 'mathjax-full/js/core/MmlTree/MmlNode';\n\nexport class MmlNone extends AbstractMmlNode {\n get kind() {\n return 'none';\n }\n}\n\nexport class MmlMstack extends AbstractMmlNode {\n get kind() {\n return 'mstack';\n }\n}\n\nexport class MmlMsrow extends AbstractMmlNode {\n get kind() {\n return 'msrow';\n }\n}\nexport class MmlMsline extends AbstractMmlNode {\n get kind() {\n return 'msline';\n }\n}\n"],"file":"mml.js"}
1
+ {"version":3,"file":"mml.js","names":["MmlNone","AbstractMmlNode","MmlMstack","MmlMsrow","MmlMsline"],"sources":["../../src/mstack/mml.js"],"sourcesContent":["import { AbstractMmlNode } from 'mathjax-full/js/core/MmlTree/MmlNode';\n\nexport class MmlNone extends AbstractMmlNode {\n get kind() {\n return 'none';\n }\n}\n\nexport class MmlMstack extends AbstractMmlNode {\n get kind() {\n return 'mstack';\n }\n}\n\nexport class MmlMsrow extends AbstractMmlNode {\n get kind() {\n return 'msrow';\n }\n}\nexport class MmlMsline extends AbstractMmlNode {\n get kind() {\n return 'msline';\n }\n}\n"],"mappings":";;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;IAEaA,O;;;;;;;;;;;;;SACX,eAAW;MACT,OAAO,MAAP;IACD;;;;EAH0BC,wB;;;;IAMhBC,S;;;;;;;;;;;;;SACX,eAAW;MACT,OAAO,QAAP;IACD;;;;EAH4BD,wB;;;;IAMlBE,Q;;;;;;;;;;;;;SACX,eAAW;MACT,OAAO,OAAP;IACD;;;;EAH2BF,wB;;;;IAKjBG,S;;;;;;;;;;;;;SACX,eAAW;MACT,OAAO,QAAP;IACD;;;;EAH4BH,wB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/normalization.js"],"names":["BracketTypes","ROUND_BRACKETS","SQUARE_BRACKETS","DOLLAR","DOUBLE_DOLLAR","PAIRS","wrapMath","content","wrapType","console","warn","start","end","unWrapMath","displayStyleIndex","indexOf","replace","trim","startsWith","endsWith","unwrapped","substring","length"],"mappings":"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","sourcesContent":["export const BracketTypes = {};\n\nBracketTypes.ROUND_BRACKETS = 'round_brackets';\nBracketTypes.SQUARE_BRACKETS = 'square_brackets';\nBracketTypes.DOLLAR = 'dollar';\nBracketTypes.DOUBLE_DOLLAR = 'double_dollar';\n\nconst PAIRS = {\n [BracketTypes.ROUND_BRACKETS]: ['\\\\(', '\\\\)'],\n [BracketTypes.SQUARE_BRACKETS]: ['\\\\[', '\\\\]'],\n [BracketTypes.DOLLAR]: ['$', '$'],\n [BracketTypes.DOUBLE_DOLLAR]: ['$$', '$$']\n};\n\nexport const wrapMath = (content, wrapType) => {\n if (wrapType === BracketTypes.SQUARE_BRACKETS) {\n console.warn('\\\\[...\\\\] is not supported yet'); // eslint-disable-line\n wrapType = BracketTypes.ROUND_BRACKETS;\n }\n if (wrapType === BracketTypes.DOUBLE_DOLLAR) {\n console.warn('$$...$$ is not supported yet'); // eslint-disable-line\n wrapType = BracketTypes.DOLLAR;\n }\n\n const [start, end] = PAIRS[wrapType] || PAIRS[BracketTypes.ROUND_BRACKETS];\n return `${start}${content}${end}`;\n};\n\nexport const unWrapMath = content => {\n const displayStyleIndex = content.indexOf('\\\\displaystyle');\n if (displayStyleIndex !== -1) {\n console.warn('\\\\displaystyle is not supported - removing'); // eslint-disable-line\n content = content.replace('\\\\displaystyle', '').trim();\n }\n\n if (content.startsWith('$$') && content.endsWith('$$')) {\n console.warn('$$ syntax is not yet supported'); // eslint-disable-line\n return {\n unwrapped: content.substring(2, content.length - 2),\n wrapType: BracketTypes.DOLLAR\n };\n }\n if (content.startsWith('$') && content.endsWith('$')) {\n return {\n unwrapped: content.substring(1, content.length - 1),\n wrapType: BracketTypes.DOLLAR\n };\n }\n\n if (content.startsWith('\\\\[') && content.endsWith('\\\\]')) {\n console.warn('\\\\[..\\\\] syntax is not yet supported'); // eslint-disable-line\n return {\n unwrapped: content.substring(2, content.length - 2),\n wrapType: BracketTypes.ROUND_BRACKETS\n };\n }\n\n if (content.startsWith('\\\\(') && content.endsWith('\\\\)')) {\n return {\n unwrapped: content.substring(2, content.length - 2),\n wrapType: BracketTypes.ROUND_BRACKETS\n };\n }\n\n return {\n unwrapped: content,\n wrapType: BracketTypes.ROUND_BRACKETS\n };\n};\n"],"file":"normalization.js"}
1
+ {"version":3,"file":"normalization.js","names":["BracketTypes","ROUND_BRACKETS","SQUARE_BRACKETS","DOLLAR","DOUBLE_DOLLAR","PAIRS","wrapMath","content","wrapType","console","warn","start","end","unWrapMath","displayStyleIndex","indexOf","replace","trim","startsWith","endsWith","unwrapped","substring","length"],"sources":["../src/normalization.js"],"sourcesContent":["export const BracketTypes = {};\n\nBracketTypes.ROUND_BRACKETS = 'round_brackets';\nBracketTypes.SQUARE_BRACKETS = 'square_brackets';\nBracketTypes.DOLLAR = 'dollar';\nBracketTypes.DOUBLE_DOLLAR = 'double_dollar';\n\nconst PAIRS = {\n [BracketTypes.ROUND_BRACKETS]: ['\\\\(', '\\\\)'],\n [BracketTypes.SQUARE_BRACKETS]: ['\\\\[', '\\\\]'],\n [BracketTypes.DOLLAR]: ['$', '$'],\n [BracketTypes.DOUBLE_DOLLAR]: ['$$', '$$']\n};\n\nexport const wrapMath = (content, wrapType) => {\n if (wrapType === BracketTypes.SQUARE_BRACKETS) {\n console.warn('\\\\[...\\\\] is not supported yet'); // eslint-disable-line\n wrapType = BracketTypes.ROUND_BRACKETS;\n }\n if (wrapType === BracketTypes.DOUBLE_DOLLAR) {\n console.warn('$$...$$ is not supported yet'); // eslint-disable-line\n wrapType = BracketTypes.DOLLAR;\n }\n\n const [start, end] = PAIRS[wrapType] || PAIRS[BracketTypes.ROUND_BRACKETS];\n return `${start}${content}${end}`;\n};\n\nexport const unWrapMath = content => {\n const displayStyleIndex = content.indexOf('\\\\displaystyle');\n if (displayStyleIndex !== -1) {\n console.warn('\\\\displaystyle is not supported - removing'); // eslint-disable-line\n content = content.replace('\\\\displaystyle', '').trim();\n }\n\n if (content.startsWith('$$') && content.endsWith('$$')) {\n console.warn('$$ syntax is not yet supported'); // eslint-disable-line\n return {\n unwrapped: content.substring(2, content.length - 2),\n wrapType: BracketTypes.DOLLAR\n };\n }\n if (content.startsWith('$') && content.endsWith('$')) {\n return {\n unwrapped: content.substring(1, content.length - 1),\n wrapType: BracketTypes.DOLLAR\n };\n }\n\n if (content.startsWith('\\\\[') && content.endsWith('\\\\]')) {\n console.warn('\\\\[..\\\\] syntax is not yet supported'); // eslint-disable-line\n return {\n unwrapped: content.substring(2, content.length - 2),\n wrapType: BracketTypes.ROUND_BRACKETS\n };\n }\n\n if (content.startsWith('\\\\(') && content.endsWith('\\\\)')) {\n return {\n unwrapped: content.substring(2, content.length - 2),\n wrapType: BracketTypes.ROUND_BRACKETS\n };\n }\n\n return {\n unwrapped: content,\n wrapType: BracketTypes.ROUND_BRACKETS\n };\n};\n"],"mappings":"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"}
@@ -29,6 +29,8 @@ var _normalization = require("./normalization");
29
29
 
30
30
  var _MmlFactory = require("mathjax-full/js/core/MmlTree/MmlFactory");
31
31
 
32
+ var _SerializedMmlVisitor = require("mathjax-full/js/core/MmlTree/SerializedMmlVisitor");
33
+
32
34
  var _WrapperFactory = require("mathjax-full/js/output/chtml/WrapperFactory");
33
35
 
34
36
  var _mspace = require("mathjax-full/js/output/chtml/Wrappers/mspace");
@@ -47,6 +49,8 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
47
49
 
48
50
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
49
51
 
52
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
53
+
50
54
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
51
55
 
52
56
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -57,6 +61,12 @@ if (typeof window !== 'undefined') {
57
61
  (0, _html.RegisterHTMLHandler)((0, _browserAdaptor.browserAdaptor)());
58
62
  }
59
63
 
64
+ var visitor = new _SerializedMmlVisitor.SerializedMmlVisitor();
65
+
66
+ var toMMl = function toMMl(node) {
67
+ return visitor.visitTree(node);
68
+ };
69
+
60
70
  var log = (0, _debug["default"])('pie-lib:math-rendering');
61
71
  var NEWLINE_BLOCK_REGEX = /\\embed\{newLine\}\[\]/g;
62
72
  var NEWLINE_LATEX = '\\newline ';
@@ -88,6 +98,10 @@ var defaultOpts = function defaultOpts() {
88
98
  };
89
99
 
90
100
  var fixMathElement = function fixMathElement(element) {
101
+ if (element.dataset.mathHandled) {
102
+ return;
103
+ }
104
+
91
105
  var property = 'innerText';
92
106
 
93
107
  if (element.textContent) {
@@ -99,6 +113,7 @@ var fixMathElement = function fixMathElement(element) {
99
113
  // we need to replace the custom embedded elements with valid latex that Mathjax can understand
100
114
 
101
115
  element[property] = element[property].replace(NEWLINE_BLOCK_REGEX, NEWLINE_LATEX);
116
+ element.dataset.mathHandled = true;
102
117
  }
103
118
  };
104
119
 
@@ -113,6 +128,13 @@ var fixMathElements = function fixMathElements() {
113
128
 
114
129
  exports.fixMathElements = fixMathElements;
115
130
 
131
+ var adjustMathMLStyle = function adjustMathMLStyle() {
132
+ var nodes = document.querySelectorAll('math');
133
+ nodes.forEach(function (node) {
134
+ return node.setAttribute('displaystyle', 'true');
135
+ });
136
+ };
137
+
116
138
  var bootstrap = function bootstrap(opts) {
117
139
  if (typeof window === 'undefined') {
118
140
  return {
@@ -144,21 +166,15 @@ var bootstrap = function bootstrap(opts) {
144
166
  longdiv: '\\enclose{longdiv}'
145
167
  };
146
168
  var texConfig = opts.useSingleDollar ? {
147
- loader: {
148
- require: require
149
- },
150
169
  packages: packages,
151
170
  macros: macros,
152
171
  inlineMath: [['$', '$'], ['\\(', '\\)']],
153
- displayMath: [['$$', '$$'], ['\\[', '\\]']],
154
172
  processEscapes: true
155
173
  } : {
156
174
  packages: packages,
157
175
  macros: macros
158
176
  };
159
177
  var mmlConfig = {
160
- parseAs: 'html',
161
- forceReparse: false,
162
178
  parseError: function parseError(node) {
163
179
  // function to process parsing errors
164
180
  console.log('error:', node);
@@ -171,7 +187,6 @@ var bootstrap = function bootstrap(opts) {
171
187
  wrapperFactory: new _WrapperFactory.CHTMLWrapperFactory(_objectSpread(_objectSpread({}, _WrapperFactory.CHTMLWrapperFactory.defaultNodes), _mstack.chtmlNodes))
172
188
  };
173
189
  var mml = new _mathml.MathML(mmlConfig);
174
- console.log([new _tex.TeX(texConfig), mml]);
175
190
  var customMmlFactory = new _MmlFactory.MmlFactory(_objectSpread(_objectSpread({}, _MmlFactory.MmlFactory.defaultNodes), _mstack.mmlNodes));
176
191
 
177
192
  var html = _mathjax.mathjax.document(document, {
@@ -198,9 +213,23 @@ var bootstrap = function bootstrap(opts) {
198
213
  elements[_key] = arguments[_key];
199
214
  }
200
215
 
201
- this.html.findMath(elements.length ? {
216
+ var updatedDocument = this.html.findMath(elements.length ? {
202
217
  elements: elements
203
- } : {}).compile().getMetrics().typeset().updateDocument().clear();
218
+ } : {}).compile().getMetrics().typeset().updateDocument();
219
+
220
+ try {
221
+ var list = updatedDocument.math.list;
222
+
223
+ for (var item = list.next; _typeof(item.data) !== 'symbol'; item = item.next) {
224
+ var mathMl = toMMl(item.data.root);
225
+ var parsedMathMl = mathMl.replaceAll('\n', '');
226
+ item.data.typesetRoot.setAttribute('data-mathml', parsedMathMl);
227
+ }
228
+ } catch (e) {
229
+ console.error(e.toString());
230
+ }
231
+
232
+ updatedDocument.clear();
204
233
  }
205
234
  };
206
235
  };
@@ -208,6 +237,7 @@ var bootstrap = function bootstrap(opts) {
208
237
  var renderMath = function renderMath(el, renderOpts) {
209
238
  //TODO: remove this - has nothing to do with math-rendering (it's from editable-html)
210
239
  fixMathElements();
240
+ adjustMathMLStyle();
211
241
 
212
242
  if (!getGlobal().instance) {
213
243
  getGlobal().instance = bootstrap(renderOpts);
@@ -236,7 +266,7 @@ var renderMath = function renderMath(el, renderOpts) {
236
266
  "display": 'in-line',
237
267
  "text-align": 'left'
238
268
  } which prevents it from showing as a newline value
239
- */
269
+ */
240
270
 
241
271
 
242
272
  _mspace.CHTMLmspace.styles = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/render-math.js"],"names":["window","log","NEWLINE_BLOCK_REGEX","NEWLINE_LATEX","getGlobal","key","pkg","name","version","split","defaultOpts","opts","fixMathElement","element","property","textContent","unwrapped","replace","fixMathElements","mathElements","document","querySelectorAll","forEach","item","bootstrap","Typeset","useSingleDollar","console","warn","packages","AllPackages","filter","push","macros","parallelogram","overarc","napprox","longdiv","texConfig","loader","require","inlineMath","displayMath","processEscapes","mmlConfig","parseAs","forceReparse","parseError","node","error","adaptor","fontURL","mathjax","htmlConfig","wrapperFactory","CHTMLWrapperFactory","defaultNodes","chtmlNodes","mml","MathML","TeX","customMmlFactory","MmlFactory","mmlNodes","html","compileError","mj","math","err","typesetError","doc","InputJax","OutputJax","CHTML","setMmlFactory","elements","findMath","length","compile","getMetrics","typeset","updateDocument","clear","renderMath","el","renderOpts","instance","Element","arr","Array","from","CHTMLmspace","styles","display","height"],"mappings":"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","sourcesContent":["import { mathjax } from 'mathjax-full/js/mathjax';\nimport { MathML } from 'mathjax-full/js/input/mathml';\nimport { TeX } from 'mathjax-full/js/input/tex';\n\nimport { CHTML } from 'mathjax-full/js/output/chtml';\nimport { RegisterHTMLHandler } from 'mathjax-full/js/handlers/html';\nimport { browserAdaptor } from 'mathjax-full/js/adaptors/browserAdaptor';\nimport { AllPackages } from 'mathjax-full/js/input/tex/AllPackages';\n\nif (typeof window !== 'undefined') {\n RegisterHTMLHandler(browserAdaptor());\n}\n\nimport pkg from '../package.json';\nimport { mmlNodes, chtmlNodes } from './mstack';\nimport debug from 'debug';\nimport { wrapMath, unWrapMath } from './normalization';\nimport { MmlFactory } from 'mathjax-full/js/core/MmlTree/MmlFactory';\nimport { CHTMLWrapperFactory } from 'mathjax-full/js/output/chtml/WrapperFactory';\nimport { CHTMLmspace } from 'mathjax-full/js/output/chtml/Wrappers/mspace';\n\nconst log = debug('pie-lib:math-rendering');\n\nconst NEWLINE_BLOCK_REGEX = /\\\\embed\\{newLine\\}\\[\\]/g;\nconst NEWLINE_LATEX = '\\\\newline ';\n\nconst getGlobal = () => {\n const key = `${pkg.name}@${pkg.version.split('.')[0]}`;\n\n if (typeof window !== 'undefined') {\n if (!window[key]) {\n window[key] = {};\n }\n return window[key];\n } else {\n return {};\n }\n};\n\n/** Add temporary support for a global singleDollar override\n * <code>\n * // This will enable single dollar rendering\n * window.pie = window.pie || {};\n * window.pie.mathRendering = {useSingleDollar: true };\n * </code>\n */\nconst defaultOpts = () => getGlobal().opts || {};\n\nexport const fixMathElement = element => {\n let property = 'innerText';\n\n if (element.textContent) {\n property = 'textContent';\n }\n\n if (element[property]) {\n element[property] = wrapMath(unWrapMath(element[property]).unwrapped);\n // because mathquill doesn't understand line breaks, sometimes we end up with custom elements on prompts/rationale/etc.\n // we need to replace the custom embedded elements with valid latex that Mathjax can understand\n element[property] = element[property].replace(NEWLINE_BLOCK_REGEX, NEWLINE_LATEX);\n }\n};\n\nexport const fixMathElements = () => {\n const mathElements = document.querySelectorAll('[data-latex]');\n\n mathElements.forEach(item => fixMathElement(item));\n};\n\nconst bootstrap = opts => {\n if (typeof window === 'undefined') {\n return { Typeset: () => ({}) };\n }\n\n opts = opts || defaultOpts();\n\n if (opts.useSingleDollar) {\n // eslint-disable-next-line\n console.warn('[math-rendering] using $ is not advisable, please use $$..$$ or \\\\(...\\\\)');\n }\n\n const packages = AllPackages.filter(name => name !== 'bussproofs'); // Bussproofs needs an output jax\n\n // The autoload extension predefines all the macros from the extensions that haven't been loaded already\n // so that they automatically load the needed extension when they are first used\n packages.push('autoload');\n\n const macros = {\n parallelogram: '\\\\lower.2em{\\\\Huge\\\\unicode{x25B1}}',\n overarc: '\\\\overparen',\n napprox: '\\\\not\\\\approx',\n longdiv: '\\\\enclose{longdiv}'\n };\n\n const texConfig = opts.useSingleDollar\n ? {\n loader: {\n require: require\n },\n packages,\n macros,\n inlineMath: [\n ['$', '$'],\n ['\\\\(', '\\\\)']\n ],\n displayMath: [\n ['$$', '$$'],\n ['\\\\[', '\\\\]']\n ],\n processEscapes: true\n }\n : {\n packages,\n macros\n };\n\n const mmlConfig = {\n parseAs: 'html',\n forceReparse: false,\n parseError: function(node) {\n // function to process parsing errors\n console.log('error:', node);\n this.error(this.adaptor.textContent(node).replace(/\\n.*/g, ''));\n }\n };\n\n const fontURL = `https://unpkg.com/mathjax-full@${mathjax.version}/ts/output/chtml/fonts/tex-woff-v2`;\n const htmlConfig = {\n fontURL,\n\n wrapperFactory: new CHTMLWrapperFactory({\n ...CHTMLWrapperFactory.defaultNodes,\n ...chtmlNodes\n })\n };\n\n const mml = new MathML(mmlConfig);\n console.log([new TeX(texConfig), mml]);\n\n const customMmlFactory = new MmlFactory({\n ...MmlFactory.defaultNodes,\n ...mmlNodes\n });\n\n const html = mathjax.document(document, {\n compileError: (mj, math, err) => {\n console.log('bad math?:', math);\n console.error(err);\n },\n typesetError: function(doc, math, err) {\n console.log('typeset error');\n console.error(err);\n doc.typesetError(math, err);\n },\n\n InputJax: [new TeX(texConfig), mml],\n OutputJax: new CHTML(htmlConfig)\n });\n\n // Note: we must set this *after* mathjax.document (no idea why)\n mml.setMmlFactory(customMmlFactory);\n\n return {\n version: mathjax.version,\n html: html,\n\n Typeset: function(...elements) {\n this.html\n .findMath(elements.length ? { elements } : {})\n .compile()\n .getMetrics()\n .typeset()\n .updateDocument()\n .clear();\n }\n };\n};\n\nconst renderMath = (el, renderOpts) => {\n //TODO: remove this - has nothing to do with math-rendering (it's from editable-html)\n fixMathElements();\n\n if (!getGlobal().instance) {\n getGlobal().instance = bootstrap(renderOpts);\n }\n\n if (!el) {\n log('el is undefined');\n return;\n }\n\n if (el instanceof Element) {\n getGlobal().instance.Typeset(el);\n } else if (el.length) {\n const arr = Array.from(el);\n getGlobal().instance.Typeset(...arr);\n }\n};\n\n/**\n * This style is added to overried default styling of mjx-mspace Mathjax tag\n * In mathjax src code \\newline latex gets parsed to <mjx-mspace></mjx-mspace>,\n * but has the default style\n * 'mjx-mspace': {\n \"display\": 'in-line',\n \"text-align\": 'left'\n} which prevents it from showing as a newline value\n*/\nCHTMLmspace.styles = {\n 'mjx-mspace': {\n display: 'block',\n 'text-align': 'center',\n height: '5px'\n }\n};\n\nexport default renderMath;\n"],"file":"render-math.js"}
1
+ {"version":3,"file":"render-math.js","names":["window","RegisterHTMLHandler","browserAdaptor","visitor","SerializedMmlVisitor","toMMl","node","visitTree","log","debug","NEWLINE_BLOCK_REGEX","NEWLINE_LATEX","getGlobal","key","pkg","name","version","split","defaultOpts","opts","fixMathElement","element","dataset","mathHandled","property","textContent","wrapMath","unWrapMath","unwrapped","replace","fixMathElements","mathElements","document","querySelectorAll","forEach","item","adjustMathMLStyle","nodes","setAttribute","bootstrap","Typeset","useSingleDollar","console","warn","packages","AllPackages","filter","push","macros","parallelogram","overarc","napprox","longdiv","texConfig","inlineMath","processEscapes","mmlConfig","parseError","error","adaptor","fontURL","mathjax","htmlConfig","wrapperFactory","CHTMLWrapperFactory","defaultNodes","chtmlNodes","mml","MathML","customMmlFactory","MmlFactory","mmlNodes","html","compileError","mj","math","err","typesetError","doc","InputJax","TeX","OutputJax","CHTML","setMmlFactory","elements","updatedDocument","findMath","length","compile","getMetrics","typeset","updateDocument","list","next","data","mathMl","root","parsedMathMl","replaceAll","typesetRoot","e","toString","clear","renderMath","el","renderOpts","instance","Element","arr","Array","from","CHTMLmspace","styles","display","height"],"sources":["../src/render-math.js"],"sourcesContent":["import { mathjax } from 'mathjax-full/js/mathjax';\nimport { MathML } from 'mathjax-full/js/input/mathml';\nimport { TeX } from 'mathjax-full/js/input/tex';\n\nimport { CHTML } from 'mathjax-full/js/output/chtml';\nimport { RegisterHTMLHandler } from 'mathjax-full/js/handlers/html';\nimport { browserAdaptor } from 'mathjax-full/js/adaptors/browserAdaptor';\nimport { AllPackages } from 'mathjax-full/js/input/tex/AllPackages';\n\nif (typeof window !== 'undefined') {\n RegisterHTMLHandler(browserAdaptor());\n}\n\nimport pkg from '../package.json';\nimport { mmlNodes, chtmlNodes } from './mstack';\nimport debug from 'debug';\nimport { wrapMath, unWrapMath } from './normalization';\nimport { MmlFactory } from 'mathjax-full/js/core/MmlTree/MmlFactory';\nimport { SerializedMmlVisitor } from 'mathjax-full/js/core/MmlTree/SerializedMmlVisitor';\nimport { CHTMLWrapperFactory } from 'mathjax-full/js/output/chtml/WrapperFactory';\nimport { CHTMLmspace } from 'mathjax-full/js/output/chtml/Wrappers/mspace';\n\nconst visitor = new SerializedMmlVisitor();\nconst toMMl = node => visitor.visitTree(node);\n\nconst log = debug('pie-lib:math-rendering');\n\nconst NEWLINE_BLOCK_REGEX = /\\\\embed\\{newLine\\}\\[\\]/g;\nconst NEWLINE_LATEX = '\\\\newline ';\n\nconst getGlobal = () => {\n const key = `${pkg.name}@${pkg.version.split('.')[0]}`;\n\n if (typeof window !== 'undefined') {\n if (!window[key]) {\n window[key] = {};\n }\n return window[key];\n } else {\n return {};\n }\n};\n\n/** Add temporary support for a global singleDollar override\n * <code>\n * // This will enable single dollar rendering\n * window.pie = window.pie || {};\n * window.pie.mathRendering = {useSingleDollar: true };\n * </code>\n */\nconst defaultOpts = () => getGlobal().opts || {};\n\nexport const fixMathElement = element => {\n if (element.dataset.mathHandled) {\n return;\n }\n\n let property = 'innerText';\n\n if (element.textContent) {\n property = 'textContent';\n }\n\n if (element[property]) {\n element[property] = wrapMath(unWrapMath(element[property]).unwrapped);\n // because mathquill doesn't understand line breaks, sometimes we end up with custom elements on prompts/rationale/etc.\n // we need to replace the custom embedded elements with valid latex that Mathjax can understand\n element[property] = element[property].replace(NEWLINE_BLOCK_REGEX, NEWLINE_LATEX);\n element.dataset.mathHandled = true;\n }\n};\n\nexport const fixMathElements = () => {\n const mathElements = document.querySelectorAll('[data-latex]');\n\n mathElements.forEach(item => fixMathElement(item));\n};\n\nconst adjustMathMLStyle = () => {\n const nodes = document.querySelectorAll('math');\n nodes.forEach(node => node.setAttribute('displaystyle', 'true'));\n};\n\nconst bootstrap = opts => {\n if (typeof window === 'undefined') {\n return { Typeset: () => ({}) };\n }\n\n opts = opts || defaultOpts();\n\n if (opts.useSingleDollar) {\n // eslint-disable-next-line\n console.warn('[math-rendering] using $ is not advisable, please use $$..$$ or \\\\(...\\\\)');\n }\n\n const packages = AllPackages.filter(name => name !== 'bussproofs'); // Bussproofs needs an output jax\n\n // The autoload extension predefines all the macros from the extensions that haven't been loaded already\n // so that they automatically load the needed extension when they are first used\n packages.push('autoload');\n\n const macros = {\n parallelogram: '\\\\lower.2em{\\\\Huge\\\\unicode{x25B1}}',\n overarc: '\\\\overparen',\n napprox: '\\\\not\\\\approx',\n longdiv: '\\\\enclose{longdiv}'\n };\n\n const texConfig = opts.useSingleDollar\n ? {\n packages,\n macros,\n inlineMath: [\n ['$', '$'],\n ['\\\\(', '\\\\)']\n ],\n processEscapes: true\n }\n : {\n packages,\n macros\n };\n\n const mmlConfig = {\n parseError: function(node) {\n // function to process parsing errors\n console.log('error:', node);\n this.error(this.adaptor.textContent(node).replace(/\\n.*/g, ''));\n }\n };\n\n const fontURL = `https://unpkg.com/mathjax-full@${mathjax.version}/ts/output/chtml/fonts/tex-woff-v2`;\n const htmlConfig = {\n fontURL,\n\n wrapperFactory: new CHTMLWrapperFactory({\n ...CHTMLWrapperFactory.defaultNodes,\n ...chtmlNodes\n })\n };\n\n const mml = new MathML(mmlConfig);\n\n const customMmlFactory = new MmlFactory({\n ...MmlFactory.defaultNodes,\n ...mmlNodes\n });\n\n const html = mathjax.document(document, {\n compileError: (mj, math, err) => {\n console.log('bad math?:', math);\n console.error(err);\n },\n typesetError: function(doc, math, err) {\n console.log('typeset error');\n console.error(err);\n doc.typesetError(math, err);\n },\n\n InputJax: [new TeX(texConfig), mml],\n OutputJax: new CHTML(htmlConfig)\n });\n\n // Note: we must set this *after* mathjax.document (no idea why)\n mml.setMmlFactory(customMmlFactory);\n\n return {\n version: mathjax.version,\n html: html,\n Typeset: function(...elements) {\n const updatedDocument = this.html\n .findMath(elements.length ? { elements } : {})\n .compile()\n .getMetrics()\n .typeset()\n .updateDocument();\n\n try {\n const list = updatedDocument.math.list;\n\n for (let item = list.next; typeof item.data !== 'symbol'; item = item.next) {\n const mathMl = toMMl(item.data.root);\n const parsedMathMl = mathMl.replaceAll('\\n', '');\n\n item.data.typesetRoot.setAttribute('data-mathml', parsedMathMl);\n }\n } catch (e) {\n console.error(e.toString());\n }\n\n updatedDocument.clear();\n }\n };\n};\n\nconst renderMath = (el, renderOpts) => {\n //TODO: remove this - has nothing to do with math-rendering (it's from editable-html)\n fixMathElements();\n adjustMathMLStyle();\n\n if (!getGlobal().instance) {\n getGlobal().instance = bootstrap(renderOpts);\n }\n\n if (!el) {\n log('el is undefined');\n return;\n }\n\n if (el instanceof Element) {\n getGlobal().instance.Typeset(el);\n } else if (el.length) {\n const arr = Array.from(el);\n getGlobal().instance.Typeset(...arr);\n }\n};\n\n/**\n * This style is added to overried default styling of mjx-mspace Mathjax tag\n * In mathjax src code \\newline latex gets parsed to <mjx-mspace></mjx-mspace>,\n * but has the default style\n * 'mjx-mspace': {\n \"display\": 'in-line',\n \"text-align\": 'left'\n} which prevents it from showing as a newline value\n */\nCHTMLmspace.styles = {\n 'mjx-mspace': {\n display: 'block',\n 'text-align': 'center',\n height: '5px'\n }\n};\n\nexport default renderMath;\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AAMA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;AAXA,IAAI,OAAOA,MAAP,KAAkB,WAAtB,EAAmC;EACjC,IAAAC,yBAAA,EAAoB,IAAAC,8BAAA,GAApB;AACD;;AAWD,IAAMC,OAAO,GAAG,IAAIC,0CAAJ,EAAhB;;AACA,IAAMC,KAAK,GAAG,SAARA,KAAQ,CAAAC,IAAI;EAAA,OAAIH,OAAO,CAACI,SAAR,CAAkBD,IAAlB,CAAJ;AAAA,CAAlB;;AAEA,IAAME,GAAG,GAAG,IAAAC,iBAAA,EAAM,wBAAN,CAAZ;AAEA,IAAMC,mBAAmB,GAAG,yBAA5B;AACA,IAAMC,aAAa,GAAG,YAAtB;;AAEA,IAAMC,SAAS,GAAG,SAAZA,SAAY,GAAM;EACtB,IAAMC,GAAG,aAAMC,mBAAA,CAAIC,IAAV,cAAkBD,mBAAA,CAAIE,OAAJ,CAAYC,KAAZ,CAAkB,GAAlB,EAAuB,CAAvB,CAAlB,CAAT;;EAEA,IAAI,OAAOjB,MAAP,KAAkB,WAAtB,EAAmC;IACjC,IAAI,CAACA,MAAM,CAACa,GAAD,CAAX,EAAkB;MAChBb,MAAM,CAACa,GAAD,CAAN,GAAc,EAAd;IACD;;IACD,OAAOb,MAAM,CAACa,GAAD,CAAb;EACD,CALD,MAKO;IACL,OAAO,EAAP;EACD;AACF,CAXD;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMK,WAAW,GAAG,SAAdA,WAAc;EAAA,OAAMN,SAAS,GAAGO,IAAZ,IAAoB,EAA1B;AAAA,CAApB;;AAEO,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAAAC,OAAO,EAAI;EACvC,IAAIA,OAAO,CAACC,OAAR,CAAgBC,WAApB,EAAiC;IAC/B;EACD;;EAED,IAAIC,QAAQ,GAAG,WAAf;;EAEA,IAAIH,OAAO,CAACI,WAAZ,EAAyB;IACvBD,QAAQ,GAAG,aAAX;EACD;;EAED,IAAIH,OAAO,CAACG,QAAD,CAAX,EAAuB;IACrBH,OAAO,CAACG,QAAD,CAAP,GAAoB,IAAAE,uBAAA,EAAS,IAAAC,yBAAA,EAAWN,OAAO,CAACG,QAAD,CAAlB,EAA8BI,SAAvC,CAApB,CADqB,CAErB;IACA;;IACAP,OAAO,CAACG,QAAD,CAAP,GAAoBH,OAAO,CAACG,QAAD,CAAP,CAAkBK,OAAlB,CAA0BnB,mBAA1B,EAA+CC,aAA/C,CAApB;IACAU,OAAO,CAACC,OAAR,CAAgBC,WAAhB,GAA8B,IAA9B;EACD;AACF,CAlBM;;;;AAoBA,IAAMO,eAAe,GAAG,SAAlBA,eAAkB,GAAM;EACnC,IAAMC,YAAY,GAAGC,QAAQ,CAACC,gBAAT,CAA0B,cAA1B,CAArB;EAEAF,YAAY,CAACG,OAAb,CAAqB,UAAAC,IAAI;IAAA,OAAIf,cAAc,CAACe,IAAD,CAAlB;EAAA,CAAzB;AACD,CAJM;;;;AAMP,IAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,GAAM;EAC9B,IAAMC,KAAK,GAAGL,QAAQ,CAACC,gBAAT,CAA0B,MAA1B,CAAd;EACAI,KAAK,CAACH,OAAN,CAAc,UAAA5B,IAAI;IAAA,OAAIA,IAAI,CAACgC,YAAL,CAAkB,cAAlB,EAAkC,MAAlC,CAAJ;EAAA,CAAlB;AACD,CAHD;;AAKA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAAApB,IAAI,EAAI;EACxB,IAAI,OAAOnB,MAAP,KAAkB,WAAtB,EAAmC;IACjC,OAAO;MAAEwC,OAAO,EAAE;QAAA,OAAO,EAAP;MAAA;IAAX,CAAP;EACD;;EAEDrB,IAAI,GAAGA,IAAI,IAAID,WAAW,EAA1B;;EAEA,IAAIC,IAAI,CAACsB,eAAT,EAA0B;IACxB;IACAC,OAAO,CAACC,IAAR,CAAa,2EAAb;EACD;;EAED,IAAMC,QAAQ,GAAGC,wBAAA,CAAYC,MAAZ,CAAmB,UAAA/B,IAAI;IAAA,OAAIA,IAAI,KAAK,YAAb;EAAA,CAAvB,CAAjB,CAZwB,CAY4C;EAEpE;EACA;;;EACA6B,QAAQ,CAACG,IAAT,CAAc,UAAd;EAEA,IAAMC,MAAM,GAAG;IACbC,aAAa,EAAE,qCADF;IAEbC,OAAO,EAAE,aAFI;IAGbC,OAAO,EAAE,eAHI;IAIbC,OAAO,EAAE;EAJI,CAAf;EAOA,IAAMC,SAAS,GAAGlC,IAAI,CAACsB,eAAL,GACd;IACEG,QAAQ,EAARA,QADF;IAEEI,MAAM,EAANA,MAFF;IAGEM,UAAU,EAAE,CACV,CAAC,GAAD,EAAM,GAAN,CADU,EAEV,CAAC,KAAD,EAAQ,KAAR,CAFU,CAHd;IAOEC,cAAc,EAAE;EAPlB,CADc,GAUd;IACEX,QAAQ,EAARA,QADF;IAEEI,MAAM,EAANA;EAFF,CAVJ;EAeA,IAAMQ,SAAS,GAAG;IAChBC,UAAU,EAAE,oBAASnD,IAAT,EAAe;MACzB;MACAoC,OAAO,CAAClC,GAAR,CAAY,QAAZ,EAAsBF,IAAtB;MACA,KAAKoD,KAAL,CAAW,KAAKC,OAAL,CAAalC,WAAb,CAAyBnB,IAAzB,EAA+BuB,OAA/B,CAAuC,OAAvC,EAAgD,EAAhD,CAAX;IACD;EALe,CAAlB;EAQA,IAAM+B,OAAO,4CAAqCC,gBAAA,CAAQ7C,OAA7C,uCAAb;EACA,IAAM8C,UAAU,GAAG;IACjBF,OAAO,EAAPA,OADiB;IAGjBG,cAAc,EAAE,IAAIC,mCAAJ,iCACXA,mCAAA,CAAoBC,YADT,GAEXC,kBAFW;EAHC,CAAnB;EASA,IAAMC,GAAG,GAAG,IAAIC,cAAJ,CAAWZ,SAAX,CAAZ;EAEA,IAAMa,gBAAgB,GAAG,IAAIC,sBAAJ,iCACpBA,sBAAA,CAAWL,YADS,GAEpBM,gBAFoB,EAAzB;;EAKA,IAAMC,IAAI,GAAGX,gBAAA,CAAQ7B,QAAR,CAAiBA,QAAjB,EAA2B;IACtCyC,YAAY,EAAE,sBAACC,EAAD,EAAKC,IAAL,EAAWC,GAAX,EAAmB;MAC/BlC,OAAO,CAAClC,GAAR,CAAY,YAAZ,EAA0BmE,IAA1B;MACAjC,OAAO,CAACgB,KAAR,CAAckB,GAAd;IACD,CAJqC;IAKtCC,YAAY,EAAE,sBAASC,GAAT,EAAcH,IAAd,EAAoBC,GAApB,EAAyB;MACrClC,OAAO,CAAClC,GAAR,CAAY,eAAZ;MACAkC,OAAO,CAACgB,KAAR,CAAckB,GAAd;MACAE,GAAG,CAACD,YAAJ,CAAiBF,IAAjB,EAAuBC,GAAvB;IACD,CATqC;IAWtCG,QAAQ,EAAE,CAAC,IAAIC,QAAJ,CAAQ3B,SAAR,CAAD,EAAqBc,GAArB,CAX4B;IAYtCc,SAAS,EAAE,IAAIC,YAAJ,CAAUpB,UAAV;EAZ2B,CAA3B,CAAb,CAjEwB,CAgFxB;;;EACAK,GAAG,CAACgB,aAAJ,CAAkBd,gBAAlB;EAEA,OAAO;IACLrD,OAAO,EAAE6C,gBAAA,CAAQ7C,OADZ;IAELwD,IAAI,EAAEA,IAFD;IAGLhC,OAAO,EAAE,mBAAsB;MAAA,kCAAV4C,QAAU;QAAVA,QAAU;MAAA;;MAC7B,IAAMC,eAAe,GAAG,KAAKb,IAAL,CACrBc,QADqB,CACZF,QAAQ,CAACG,MAAT,GAAkB;QAAEH,QAAQ,EAARA;MAAF,CAAlB,GAAiC,EADrB,EAErBI,OAFqB,GAGrBC,UAHqB,GAIrBC,OAJqB,GAKrBC,cALqB,EAAxB;;MAOA,IAAI;QACF,IAAMC,IAAI,GAAGP,eAAe,CAACV,IAAhB,CAAqBiB,IAAlC;;QAEA,KAAK,IAAIzD,IAAI,GAAGyD,IAAI,CAACC,IAArB,EAA2B,QAAO1D,IAAI,CAAC2D,IAAZ,MAAqB,QAAhD,EAA0D3D,IAAI,GAAGA,IAAI,CAAC0D,IAAtE,EAA4E;UAC1E,IAAME,MAAM,GAAG1F,KAAK,CAAC8B,IAAI,CAAC2D,IAAL,CAAUE,IAAX,CAApB;UACA,IAAMC,YAAY,GAAGF,MAAM,CAACG,UAAP,CAAkB,IAAlB,EAAwB,EAAxB,CAArB;UAEA/D,IAAI,CAAC2D,IAAL,CAAUK,WAAV,CAAsB7D,YAAtB,CAAmC,aAAnC,EAAkD2D,YAAlD;QACD;MACF,CATD,CASE,OAAOG,CAAP,EAAU;QACV1D,OAAO,CAACgB,KAAR,CAAc0C,CAAC,CAACC,QAAF,EAAd;MACD;;MAEDhB,eAAe,CAACiB,KAAhB;IACD;EAzBI,CAAP;AA2BD,CA9GD;;AAgHA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACC,EAAD,EAAKC,UAAL,EAAoB;EACrC;EACA3E,eAAe;EACfM,iBAAiB;;EAEjB,IAAI,CAACxB,SAAS,GAAG8F,QAAjB,EAA2B;IACzB9F,SAAS,GAAG8F,QAAZ,GAAuBnE,SAAS,CAACkE,UAAD,CAAhC;EACD;;EAED,IAAI,CAACD,EAAL,EAAS;IACPhG,GAAG,CAAC,iBAAD,CAAH;IACA;EACD;;EAED,IAAIgG,EAAE,YAAYG,OAAlB,EAA2B;IACzB/F,SAAS,GAAG8F,QAAZ,CAAqBlE,OAArB,CAA6BgE,EAA7B;EACD,CAFD,MAEO,IAAIA,EAAE,CAACjB,MAAP,EAAe;IAAA;;IACpB,IAAMqB,GAAG,GAAGC,KAAK,CAACC,IAAN,CAAWN,EAAX,CAAZ;;IACA,uBAAA5F,SAAS,GAAG8F,QAAZ,EAAqBlE,OAArB,+CAAgCoE,GAAhC;EACD;AACF,CApBD;AAsBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAG,mBAAA,CAAYC,MAAZ,GAAqB;EACnB,cAAc;IACZC,OAAO,EAAE,OADG;IAEZ,cAAc,QAFF;IAGZC,MAAM,EAAE;EAHI;AADK,CAArB;eAQeX,U"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-lib/math-rendering",
3
- "version": "2.3.13",
3
+ "version": "2.4.2-next.1",
4
4
  "description": "math rendering utilities",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -12,8 +12,8 @@
12
12
  "dependencies": {
13
13
  "debug": "^4.1.1",
14
14
  "lodash": "^4.17.11",
15
- "mathjax-full": "^3.2.0"
15
+ "mathjax-full": "3.2.0"
16
16
  },
17
- "gitHead": "aece71eebc3d81299789f41be579058ca796d106",
17
+ "gitHead": "f3345ae70660f4ae88450512261c7ea1601003c8",
18
18
  "scripts": {}
19
19
  }
@@ -16,9 +16,13 @@ import { mmlNodes, chtmlNodes } from './mstack';
16
16
  import debug from 'debug';
17
17
  import { wrapMath, unWrapMath } from './normalization';
18
18
  import { MmlFactory } from 'mathjax-full/js/core/MmlTree/MmlFactory';
19
+ import { SerializedMmlVisitor } from 'mathjax-full/js/core/MmlTree/SerializedMmlVisitor';
19
20
  import { CHTMLWrapperFactory } from 'mathjax-full/js/output/chtml/WrapperFactory';
20
21
  import { CHTMLmspace } from 'mathjax-full/js/output/chtml/Wrappers/mspace';
21
22
 
23
+ const visitor = new SerializedMmlVisitor();
24
+ const toMMl = node => visitor.visitTree(node);
25
+
22
26
  const log = debug('pie-lib:math-rendering');
23
27
 
24
28
  const NEWLINE_BLOCK_REGEX = /\\embed\{newLine\}\[\]/g;
@@ -47,6 +51,10 @@ const getGlobal = () => {
47
51
  const defaultOpts = () => getGlobal().opts || {};
48
52
 
49
53
  export const fixMathElement = element => {
54
+ if (element.dataset.mathHandled) {
55
+ return;
56
+ }
57
+
50
58
  let property = 'innerText';
51
59
 
52
60
  if (element.textContent) {
@@ -58,6 +66,7 @@ export const fixMathElement = element => {
58
66
  // because mathquill doesn't understand line breaks, sometimes we end up with custom elements on prompts/rationale/etc.
59
67
  // we need to replace the custom embedded elements with valid latex that Mathjax can understand
60
68
  element[property] = element[property].replace(NEWLINE_BLOCK_REGEX, NEWLINE_LATEX);
69
+ element.dataset.mathHandled = true;
61
70
  }
62
71
  };
63
72
 
@@ -67,6 +76,11 @@ export const fixMathElements = () => {
67
76
  mathElements.forEach(item => fixMathElement(item));
68
77
  };
69
78
 
79
+ const adjustMathMLStyle = () => {
80
+ const nodes = document.querySelectorAll('math');
81
+ nodes.forEach(node => node.setAttribute('displaystyle', 'true'));
82
+ };
83
+
70
84
  const bootstrap = opts => {
71
85
  if (typeof window === 'undefined') {
72
86
  return { Typeset: () => ({}) };
@@ -94,19 +108,12 @@ const bootstrap = opts => {
94
108
 
95
109
  const texConfig = opts.useSingleDollar
96
110
  ? {
97
- loader: {
98
- require: require
99
- },
100
111
  packages,
101
112
  macros,
102
113
  inlineMath: [
103
114
  ['$', '$'],
104
115
  ['\\(', '\\)']
105
116
  ],
106
- displayMath: [
107
- ['$$', '$$'],
108
- ['\\[', '\\]']
109
- ],
110
117
  processEscapes: true
111
118
  }
112
119
  : {
@@ -115,8 +122,6 @@ const bootstrap = opts => {
115
122
  };
116
123
 
117
124
  const mmlConfig = {
118
- parseAs: 'html',
119
- forceReparse: false,
120
125
  parseError: function(node) {
121
126
  // function to process parsing errors
122
127
  console.log('error:', node);
@@ -135,7 +140,6 @@ const bootstrap = opts => {
135
140
  };
136
141
 
137
142
  const mml = new MathML(mmlConfig);
138
- console.log([new TeX(texConfig), mml]);
139
143
 
140
144
  const customMmlFactory = new MmlFactory({
141
145
  ...MmlFactory.defaultNodes,
@@ -163,15 +167,28 @@ const bootstrap = opts => {
163
167
  return {
164
168
  version: mathjax.version,
165
169
  html: html,
166
-
167
170
  Typeset: function(...elements) {
168
- this.html
171
+ const updatedDocument = this.html
169
172
  .findMath(elements.length ? { elements } : {})
170
173
  .compile()
171
174
  .getMetrics()
172
175
  .typeset()
173
- .updateDocument()
174
- .clear();
176
+ .updateDocument();
177
+
178
+ try {
179
+ const list = updatedDocument.math.list;
180
+
181
+ for (let item = list.next; typeof item.data !== 'symbol'; item = item.next) {
182
+ const mathMl = toMMl(item.data.root);
183
+ const parsedMathMl = mathMl.replaceAll('\n', '');
184
+
185
+ item.data.typesetRoot.setAttribute('data-mathml', parsedMathMl);
186
+ }
187
+ } catch (e) {
188
+ console.error(e.toString());
189
+ }
190
+
191
+ updatedDocument.clear();
175
192
  }
176
193
  };
177
194
  };
@@ -179,6 +196,7 @@ const bootstrap = opts => {
179
196
  const renderMath = (el, renderOpts) => {
180
197
  //TODO: remove this - has nothing to do with math-rendering (it's from editable-html)
181
198
  fixMathElements();
199
+ adjustMathMLStyle();
182
200
 
183
201
  if (!getGlobal().instance) {
184
202
  getGlobal().instance = bootstrap(renderOpts);
@@ -205,7 +223,7 @@ const renderMath = (el, renderOpts) => {
205
223
  "display": 'in-line',
206
224
  "text-align": 'left'
207
225
  } which prevents it from showing as a newline value
208
- */
226
+ */
209
227
  CHTMLmspace.styles = {
210
228
  'mjx-mspace': {
211
229
  display: 'block',
package/LICENSE.md DELETED
@@ -1,5 +0,0 @@
1
- Copyright 2019 CoreSpring Inc
2
-
3
- Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
4
-
5
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.