@pie-lib/math-rendering 2.3.10-next.293 → 2.3.10-next.306
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/lib/render-math.js +8 -0
- package/lib/render-math.js.map +1 -1
- package/package.json +2 -2
- package/src/render-math.js +6 -0
package/lib/render-math.js
CHANGED
|
@@ -123,6 +123,13 @@ var fixMathElements = function fixMathElements() {
|
|
|
123
123
|
|
|
124
124
|
exports.fixMathElements = fixMathElements;
|
|
125
125
|
|
|
126
|
+
var adjustMathMLStyle = function adjustMathMLStyle() {
|
|
127
|
+
var nodes = document.querySelectorAll('math');
|
|
128
|
+
nodes.forEach(function (node) {
|
|
129
|
+
return node.setAttribute('displaystyle', 'true');
|
|
130
|
+
});
|
|
131
|
+
};
|
|
132
|
+
|
|
126
133
|
var bootstrap = function bootstrap(opts) {
|
|
127
134
|
if (typeof window === 'undefined') {
|
|
128
135
|
return {
|
|
@@ -232,6 +239,7 @@ var bootstrap = function bootstrap(opts) {
|
|
|
232
239
|
var renderMath = function renderMath(el, renderOpts) {
|
|
233
240
|
//TODO: remove this - has nothing to do with math-rendering (it's from editable-html)
|
|
234
241
|
fixMathElements();
|
|
242
|
+
adjustMathMLStyle();
|
|
235
243
|
|
|
236
244
|
if (!getGlobal().instance) {
|
|
237
245
|
getGlobal().instance = bootstrap(renderOpts);
|
package/lib/render-math.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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","property","textContent","wrapMath","unWrapMath","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","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","updatedDocument","findMath","length","compile","getMetrics","typeset","updateDocument","list","next","data","mathMl","root","parsedMathMl","replaceAll","typesetRoot","setAttribute","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 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 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\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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"}
|
|
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","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","loader","require","inlineMath","displayMath","processEscapes","mmlConfig","parseAs","forceReparse","parseError","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","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 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 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 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 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.10-next.
|
|
3
|
+
"version": "2.3.10-next.306+d4c12e9b",
|
|
4
4
|
"description": "math rendering utilities",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -14,6 +14,6 @@
|
|
|
14
14
|
"lodash": "^4.17.11",
|
|
15
15
|
"mathjax-full": "3.2.0"
|
|
16
16
|
},
|
|
17
|
-
"gitHead": "
|
|
17
|
+
"gitHead": "d4c12e9bebddc8c13f218c3fc301d02ea8e98b8c",
|
|
18
18
|
"scripts": {}
|
|
19
19
|
}
|
package/src/render-math.js
CHANGED
|
@@ -71,6 +71,11 @@ export const fixMathElements = () => {
|
|
|
71
71
|
mathElements.forEach(item => fixMathElement(item));
|
|
72
72
|
};
|
|
73
73
|
|
|
74
|
+
const adjustMathMLStyle = () => {
|
|
75
|
+
const nodes = document.querySelectorAll('math');
|
|
76
|
+
nodes.forEach(node => node.setAttribute('displaystyle', 'true'));
|
|
77
|
+
};
|
|
78
|
+
|
|
74
79
|
const bootstrap = opts => {
|
|
75
80
|
if (typeof window === 'undefined') {
|
|
76
81
|
return { Typeset: () => ({}) };
|
|
@@ -196,6 +201,7 @@ const bootstrap = opts => {
|
|
|
196
201
|
const renderMath = (el, renderOpts) => {
|
|
197
202
|
//TODO: remove this - has nothing to do with math-rendering (it's from editable-html)
|
|
198
203
|
fixMathElements();
|
|
204
|
+
adjustMathMLStyle();
|
|
199
205
|
|
|
200
206
|
if (!getGlobal().instance) {
|
|
201
207
|
getGlobal().instance = bootstrap(renderOpts);
|