@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 +0 -38
- package/lib/index.js.map +1 -1
- package/lib/mstack/chtml.js.map +1 -1
- package/lib/mstack/index.js.map +1 -1
- package/lib/mstack/mml.js.map +1 -1
- package/lib/normalization.js.map +1 -1
- package/lib/render-math.js +40 -10
- package/lib/render-math.js.map +1 -1
- package/package.json +3 -3
- package/src/render-math.js +33 -15
- package/LICENSE.md +0 -5
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,"
|
|
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"}
|
package/lib/mstack/chtml.js.map
CHANGED
|
@@ -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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"}
|
package/lib/mstack/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|
package/lib/mstack/mml.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|
package/lib/normalization.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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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"}
|
package/lib/render-math.js
CHANGED
|
@@ -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()
|
|
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 = {
|
package/lib/render-math.js.map
CHANGED
|
@@ -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":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-lib/math-rendering",
|
|
3
|
-
"version": "2.
|
|
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": "
|
|
15
|
+
"mathjax-full": "3.2.0"
|
|
16
16
|
},
|
|
17
|
-
"gitHead": "
|
|
17
|
+
"gitHead": "f3345ae70660f4ae88450512261c7ea1601003c8",
|
|
18
18
|
"scripts": {}
|
|
19
19
|
}
|
package/src/render-math.js
CHANGED
|
@@ -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
|
-
|
|
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.
|