katex 0.10.0-rc → 0.10.2

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.
Files changed (144) hide show
  1. package/CHANGELOG.md +214 -126
  2. package/README.md +18 -17
  3. package/cli.js +5 -1
  4. package/contrib/auto-render/README.md +1 -1
  5. package/contrib/auto-render/auto-render.js +4 -1
  6. package/contrib/auto-render/test/auto-render-spec.js +17 -0
  7. package/contrib/copy-tex/README.md +8 -2
  8. package/contrib/copy-tex/copy-tex.js +0 -1
  9. package/contrib/copy-tex/copy-tex.webpack.js +6 -0
  10. package/contrib/mathtex-script-type/README.md +10 -6
  11. package/contrib/mhchem/README.md +19 -0
  12. package/contrib/mhchem/mhchem.js +1695 -0
  13. package/contrib/mhchem/mhchem.patch +235 -0
  14. package/dist/README.md +18 -17
  15. package/dist/contrib/auto-render.js +179 -161
  16. package/dist/contrib/auto-render.min.js +1 -1
  17. package/dist/contrib/auto-render.mjs +215 -0
  18. package/dist/contrib/copy-tex.js +84 -62
  19. package/dist/contrib/copy-tex.min.css +1 -1
  20. package/dist/contrib/copy-tex.min.js +1 -1
  21. package/dist/contrib/copy-tex.mjs +85 -0
  22. package/dist/contrib/mathtex-script-type.js +17 -14
  23. package/dist/contrib/mathtex-script-type.mjs +24 -0
  24. package/dist/contrib/mhchem.js +3241 -0
  25. package/dist/contrib/mhchem.min.js +1 -0
  26. package/dist/contrib/mhchem.mjs +3109 -0
  27. package/dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
  28. package/dist/fonts/KaTeX_AMS-Regular.woff +0 -0
  29. package/dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  30. package/dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  31. package/dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  32. package/dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  33. package/dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  34. package/dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  35. package/dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  36. package/dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  37. package/dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  38. package/dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  39. package/dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  40. package/dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  41. package/dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  42. package/dist/fonts/KaTeX_Main-Bold.ttf +0 -0
  43. package/dist/fonts/KaTeX_Main-Bold.woff +0 -0
  44. package/dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
  45. package/dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  46. package/dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  47. package/dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  48. package/dist/fonts/KaTeX_Main-Italic.ttf +0 -0
  49. package/dist/fonts/KaTeX_Main-Italic.woff +0 -0
  50. package/dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
  51. package/dist/fonts/KaTeX_Main-Regular.ttf +0 -0
  52. package/dist/fonts/KaTeX_Main-Regular.woff +0 -0
  53. package/dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
  54. package/dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  55. package/dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  56. package/dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  57. package/dist/fonts/KaTeX_Math-Italic.ttf +0 -0
  58. package/dist/fonts/KaTeX_Math-Italic.woff +0 -0
  59. package/dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
  60. package/dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  61. package/dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  62. package/dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  63. package/dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  64. package/dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  65. package/dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  66. package/dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  67. package/dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  68. package/dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  69. package/dist/fonts/KaTeX_Script-Regular.ttf +0 -0
  70. package/dist/fonts/KaTeX_Script-Regular.woff +0 -0
  71. package/dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
  72. package/dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
  73. package/dist/fonts/KaTeX_Size1-Regular.woff +0 -0
  74. package/dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  75. package/dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
  76. package/dist/fonts/KaTeX_Size2-Regular.woff +0 -0
  77. package/dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  78. package/dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
  79. package/dist/fonts/KaTeX_Size3-Regular.woff +0 -0
  80. package/dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  81. package/dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
  82. package/dist/fonts/KaTeX_Size4-Regular.woff +0 -0
  83. package/dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  84. package/dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  85. package/dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  86. package/dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  87. package/dist/katex.css +24 -9
  88. package/dist/katex.js +13295 -12413
  89. package/dist/katex.min.css +1 -1
  90. package/dist/katex.min.js +1 -1
  91. package/dist/katex.mjs +13388 -11826
  92. package/katex.js +1 -2
  93. package/package.json +60 -48
  94. package/src/Lexer.js +25 -25
  95. package/src/MacroExpander.js +0 -1
  96. package/src/Options.js +11 -75
  97. package/src/Parser.js +231 -313
  98. package/src/Settings.js +6 -0
  99. package/src/buildCommon.js +140 -103
  100. package/src/buildHTML.js +125 -121
  101. package/src/buildMathML.js +14 -4
  102. package/src/buildTree.js +16 -10
  103. package/src/delimiter.js +4 -3
  104. package/src/domTree.js +91 -44
  105. package/src/environments/array.js +120 -7
  106. package/src/fontMetrics.js +3 -2
  107. package/src/functions/arrow.js +21 -7
  108. package/src/functions/color.js +2 -37
  109. package/src/functions/delimsizing.js +18 -11
  110. package/src/functions/enclose.js +19 -4
  111. package/src/functions/environment.js +35 -4
  112. package/src/functions/font.js +1 -2
  113. package/src/functions/genfrac.js +35 -20
  114. package/src/functions/href.js +5 -3
  115. package/src/functions/includegraphics.js +146 -0
  116. package/src/functions/mclass.js +1 -0
  117. package/src/functions/op.js +21 -32
  118. package/src/functions/operatorname.js +1 -2
  119. package/src/functions/ordgroup.js +4 -0
  120. package/src/functions/phantom.js +7 -3
  121. package/src/functions/rule.js +20 -9
  122. package/src/functions/sizing.js +2 -4
  123. package/src/functions/smash.js +5 -2
  124. package/src/functions/sqrt.js +1 -4
  125. package/src/functions/styling.js +0 -1
  126. package/src/functions/supsub.js +6 -2
  127. package/src/functions/symbolsOp.js +4 -0
  128. package/src/functions/symbolsSpacing.js +29 -6
  129. package/src/functions/tag.js +20 -4
  130. package/src/functions/text.js +6 -4
  131. package/src/functions/verb.js +16 -4
  132. package/src/functions.js +2 -0
  133. package/src/katex.less +35 -12
  134. package/src/macros.js +161 -36
  135. package/src/mathMLTree.js +17 -19
  136. package/src/parseNode.js +27 -1
  137. package/src/stretchy.js +3 -1
  138. package/src/svgGeometry.js +1 -1
  139. package/src/symbols.js +39 -17
  140. package/src/tree.js +0 -4
  141. package/src/types.js +4 -3
  142. package/src/unicodeMake.js +1 -1
  143. package/src/utils.js +1 -62
  144. package/src/wide-character.js +2 -2
@@ -91,7 +91,7 @@ return /******/ (function(modules) { // webpackBootstrap
91
91
  /******/
92
92
  /******/
93
93
  /******/ // Load entry module and return exports
94
- /******/ return __webpack_require__(__webpack_require__.s = 2);
94
+ /******/ return __webpack_require__(__webpack_require__.s = 1);
95
95
  /******/ })
96
96
  /************************************************************************/
97
97
  /******/ ([
@@ -101,8 +101,7 @@ return /******/ (function(modules) { // webpackBootstrap
101
101
  // extracted by mini-css-extract-plugin
102
102
 
103
103
  /***/ }),
104
- /* 1 */,
105
- /* 2 */
104
+ /* 1 */
106
105
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
107
106
 
108
107
  "use strict";
@@ -114,77 +113,100 @@ var copy_tex = __webpack_require__(0);
114
113
  // CONCATENATED MODULE: ./contrib/copy-tex/katex2tex.js
115
114
  // Set these to how you want inline and display math to be delimited.
116
115
  var defaultCopyDelimiters = {
117
- inline: ['$', '$'], // alternative: ['\(', '\)']
118
- display: ['$$', '$$'] // alternative: ['\[', '\]']
119
- };
116
+ inline: ['$', '$'],
117
+ // alternative: ['\(', '\)']
118
+ display: ['$$', '$$'] // alternative: ['\[', '\]']
120
119
 
121
- // Replace .katex elements with their TeX source (<annotation> element).
120
+ }; // Replace .katex elements with their TeX source (<annotation> element).
122
121
  // Modifies fragment in-place. Useful for writing your own 'copy' handler,
123
122
  // as in copy-tex.js.
124
- var katexReplaceWithTex = function katexReplaceWithTex(fragment) {
125
- var copyDelimiters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultCopyDelimiters;
126
-
127
- // Remove .katex-html blocks that are preceded by .katex-mathml blocks
128
- // (which will get replaced below).
129
- var katexHtml = fragment.querySelectorAll('.katex-mathml + .katex-html');
130
- for (var i = 0; i < katexHtml.length; i++) {
131
- var element = katexHtml[i];
132
- if (element.remove) {
133
- element.remove(null);
134
- } else {
135
- element.parentNode.removeChild(element);
136
- }
137
- }
138
- // Replace .katex-mathml elements with their annotation (TeX source)
139
- // descendant, with inline delimiters.
140
- var katexMathml = fragment.querySelectorAll('.katex-mathml');
141
- for (var _i = 0; _i < katexMathml.length; _i++) {
142
- var _element = katexMathml[_i];
143
- var texSource = _element.querySelector('annotation');
144
- if (texSource) {
145
- if (_element.replaceWith) {
146
- _element.replaceWith(texSource);
147
- } else {
148
- _element.parentNode.replaceChild(texSource, _element);
149
- }
150
- texSource.innerHTML = copyDelimiters.inline[0] + texSource.innerHTML + copyDelimiters.inline[1];
151
- }
123
+
124
+ var katexReplaceWithTex = function katexReplaceWithTex(fragment, copyDelimiters) {
125
+ if (copyDelimiters === void 0) {
126
+ copyDelimiters = defaultCopyDelimiters;
127
+ }
128
+
129
+ // Remove .katex-html blocks that are preceded by .katex-mathml blocks
130
+ // (which will get replaced below).
131
+ var katexHtml = fragment.querySelectorAll('.katex-mathml + .katex-html');
132
+
133
+ for (var i = 0; i < katexHtml.length; i++) {
134
+ var element = katexHtml[i];
135
+
136
+ if (element.remove) {
137
+ element.remove(null);
138
+ } else {
139
+ element.parentNode.removeChild(element);
152
140
  }
153
- // Switch display math to display delimiters.
154
- var displays = fragment.querySelectorAll('.katex-display annotation');
155
- for (var _i2 = 0; _i2 < displays.length; _i2++) {
156
- var _element2 = displays[_i2];
157
- _element2.innerHTML = copyDelimiters.display[0] + _element2.innerHTML.substr(copyDelimiters.inline[0].length, _element2.innerHTML.length - copyDelimiters.inline[0].length - copyDelimiters.inline[1].length) + copyDelimiters.display[1];
141
+ } // Replace .katex-mathml elements with their annotation (TeX source)
142
+ // descendant, with inline delimiters.
143
+
144
+
145
+ var katexMathml = fragment.querySelectorAll('.katex-mathml');
146
+
147
+ for (var _i = 0; _i < katexMathml.length; _i++) {
148
+ var _element = katexMathml[_i];
149
+
150
+ var texSource = _element.querySelector('annotation');
151
+
152
+ if (texSource) {
153
+ if (_element.replaceWith) {
154
+ _element.replaceWith(texSource);
155
+ } else {
156
+ _element.parentNode.replaceChild(texSource, _element);
157
+ }
158
+
159
+ texSource.innerHTML = copyDelimiters.inline[0] + texSource.innerHTML + copyDelimiters.inline[1];
158
160
  }
159
- return fragment;
160
- };
161
+ } // Switch display math to display delimiters.
162
+
163
+
164
+ var displays = fragment.querySelectorAll('.katex-display annotation');
165
+
166
+ for (var _i2 = 0; _i2 < displays.length; _i2++) {
167
+ var _element2 = displays[_i2];
168
+ _element2.innerHTML = copyDelimiters.display[0] + _element2.innerHTML.substr(copyDelimiters.inline[0].length, _element2.innerHTML.length - copyDelimiters.inline[0].length - copyDelimiters.inline[1].length) + copyDelimiters.display[1];
169
+ }
161
170
 
171
+ return fragment;
172
+ };
162
173
  /* harmony default export */ var katex2tex = (katexReplaceWithTex);
163
174
  // CONCATENATED MODULE: ./contrib/copy-tex/copy-tex.js
175
+ // Global copy handler to modify behavior on .katex elements.
164
176
 
177
+ document.addEventListener('copy', function (event) {
178
+ var selection = window.getSelection();
165
179
 
180
+ if (selection.isCollapsed) {
181
+ return; // default action OK if selection is empty
182
+ }
166
183
 
167
- // Global copy handler to modify behavior on .katex elements.
168
- document.addEventListener('copy', function (event) {
169
- var selection = window.getSelection();
170
- if (selection.isCollapsed) {
171
- return; // default action OK if selection is empty
172
- }
173
- var fragment = selection.getRangeAt(0).cloneContents();
174
- if (!fragment.querySelector('.katex-mathml')) {
175
- return; // default action OK if no .katex-mathml elements
176
- }
177
- // Preserve usual HTML copy/paste behavior.
178
- var html = [];
179
- for (var i = 0; i < fragment.childNodes.length; i++) {
180
- html.push(fragment.childNodes[i].outerHTML);
181
- }
182
- event.clipboardData.setData('text/html', html.join(''));
183
- // Rewrite plain-text version.
184
- event.clipboardData.setData('text/plain', katex2tex(fragment).textContent);
185
- // Prevent normal copy handling.
186
- event.preventDefault();
184
+ var fragment = selection.getRangeAt(0).cloneContents();
185
+
186
+ if (!fragment.querySelector('.katex-mathml')) {
187
+ return; // default action OK if no .katex-mathml elements
188
+ } // Preserve usual HTML copy/paste behavior.
189
+
190
+
191
+ var html = [];
192
+
193
+ for (var i = 0; i < fragment.childNodes.length; i++) {
194
+ html.push(fragment.childNodes[i].outerHTML);
195
+ }
196
+
197
+ event.clipboardData.setData('text/html', html.join('')); // Rewrite plain-text version.
198
+
199
+ event.clipboardData.setData('text/plain', katex2tex(fragment).textContent); // Prevent normal copy handling.
200
+
201
+ event.preventDefault();
187
202
  });
203
+ // CONCATENATED MODULE: ./contrib/copy-tex/copy-tex.webpack.js
204
+ /**
205
+ * This is the webpack entry point for KaTeX. As ECMAScript doesn't support
206
+ * CSS modules natively, a separate entry point is used.
207
+ */
208
+
209
+
188
210
 
189
211
  /***/ })
190
212
  /******/ ])["default"];
@@ -1 +1 @@
1
- .katex,.katex-display{-moz-user-select:all;-ms-user-select:all;-webkit-user-select:all;user-select:all}
1
+ .katex,.katex-display{user-select:all;-moz-user-select:all;-webkit-user-select:all;-ms-user-select:all}
@@ -1 +1 @@
1
- !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=2)}([function(e,t,n){},,function(e,t,n){"use strict";n.r(t);n(0);var r={inline:["$","$"],display:["$$","$$"]},o=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r,n=e.querySelectorAll(".katex-mathml + .katex-html"),o=0;o<n.length;o++){var l=n[o];l.remove?l.remove(null):l.parentNode.removeChild(l)}for(var i=e.querySelectorAll(".katex-mathml"),a=0;a<i.length;a++){var u=i[a],f=u.querySelector("annotation");f&&(u.replaceWith?u.replaceWith(f):u.parentNode.replaceChild(f,u),f.innerHTML=t.inline[0]+f.innerHTML+t.inline[1])}for(var c=e.querySelectorAll(".katex-display annotation"),d=0;d<c.length;d++){var p=c[d];p.innerHTML=t.display[0]+p.innerHTML.substr(t.inline[0].length,p.innerHTML.length-t.inline[0].length-t.inline[1].length)+t.display[1]}return e};document.addEventListener("copy",function(e){var t=window.getSelection();if(!t.isCollapsed){var n=t.getRangeAt(0).cloneContents();if(n.querySelector(".katex-mathml")){for(var r=[],l=0;l<n.childNodes.length;l++)r.push(n.childNodes[l].outerHTML);e.clipboardData.setData("text/html",r.join("")),e.clipboardData.setData("text/plain",o(n).textContent),e.preventDefault()}}})}]).default});
1
+ !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var r in n)("object"==typeof exports?exports:e)[r]=n[r]}}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){},function(e,t,n){"use strict";n.r(t);n(0);var r={inline:["$","$"],display:["$$","$$"]},o=function(e,t){void 0===t&&(t=r);for(var n=e.querySelectorAll(".katex-mathml + .katex-html"),o=0;o<n.length;o++){var l=n[o];l.remove?l.remove(null):l.parentNode.removeChild(l)}for(var i=e.querySelectorAll(".katex-mathml"),a=0;a<i.length;a++){var u=i[a],f=u.querySelector("annotation");f&&(u.replaceWith?u.replaceWith(f):u.parentNode.replaceChild(f,u),f.innerHTML=t.inline[0]+f.innerHTML+t.inline[1])}for(var c=e.querySelectorAll(".katex-display annotation"),d=0;d<c.length;d++){var p=c[d];p.innerHTML=t.display[0]+p.innerHTML.substr(t.inline[0].length,p.innerHTML.length-t.inline[0].length-t.inline[1].length)+t.display[1]}return e};document.addEventListener("copy",function(e){var t=window.getSelection();if(!t.isCollapsed){var n=t.getRangeAt(0).cloneContents();if(n.querySelector(".katex-mathml")){for(var r=[],l=0;l<n.childNodes.length;l++)r.push(n.childNodes[l].outerHTML);e.clipboardData.setData("text/html",r.join("")),e.clipboardData.setData("text/plain",o(n).textContent),e.preventDefault()}}})}]).default});
@@ -0,0 +1,85 @@
1
+ // Set these to how you want inline and display math to be delimited.
2
+ const defaultCopyDelimiters = {
3
+ inline: ['$', '$'],
4
+ // alternative: ['\(', '\)']
5
+ display: ['$$', '$$'] // alternative: ['\[', '\]']
6
+
7
+ }; // Replace .katex elements with their TeX source (<annotation> element).
8
+ // Modifies fragment in-place. Useful for writing your own 'copy' handler,
9
+ // as in copy-tex.js.
10
+
11
+ const katexReplaceWithTex = function katexReplaceWithTex(fragment, copyDelimiters) {
12
+ if (copyDelimiters === void 0) {
13
+ copyDelimiters = defaultCopyDelimiters;
14
+ }
15
+
16
+ // Remove .katex-html blocks that are preceded by .katex-mathml blocks
17
+ // (which will get replaced below).
18
+ const katexHtml = fragment.querySelectorAll('.katex-mathml + .katex-html');
19
+
20
+ for (let i = 0; i < katexHtml.length; i++) {
21
+ const element = katexHtml[i];
22
+
23
+ if (element.remove) {
24
+ element.remove(null);
25
+ } else {
26
+ element.parentNode.removeChild(element);
27
+ }
28
+ } // Replace .katex-mathml elements with their annotation (TeX source)
29
+ // descendant, with inline delimiters.
30
+
31
+
32
+ const katexMathml = fragment.querySelectorAll('.katex-mathml');
33
+
34
+ for (let i = 0; i < katexMathml.length; i++) {
35
+ const element = katexMathml[i];
36
+ const texSource = element.querySelector('annotation');
37
+
38
+ if (texSource) {
39
+ if (element.replaceWith) {
40
+ element.replaceWith(texSource);
41
+ } else {
42
+ element.parentNode.replaceChild(texSource, element);
43
+ }
44
+
45
+ texSource.innerHTML = copyDelimiters.inline[0] + texSource.innerHTML + copyDelimiters.inline[1];
46
+ }
47
+ } // Switch display math to display delimiters.
48
+
49
+
50
+ const displays = fragment.querySelectorAll('.katex-display annotation');
51
+
52
+ for (let i = 0; i < displays.length; i++) {
53
+ const element = displays[i];
54
+ element.innerHTML = copyDelimiters.display[0] + element.innerHTML.substr(copyDelimiters.inline[0].length, element.innerHTML.length - copyDelimiters.inline[0].length - copyDelimiters.inline[1].length) + copyDelimiters.display[1];
55
+ }
56
+
57
+ return fragment;
58
+ };
59
+
60
+ document.addEventListener('copy', function (event) {
61
+ const selection = window.getSelection();
62
+
63
+ if (selection.isCollapsed) {
64
+ return; // default action OK if selection is empty
65
+ }
66
+
67
+ const fragment = selection.getRangeAt(0).cloneContents();
68
+
69
+ if (!fragment.querySelector('.katex-mathml')) {
70
+ return; // default action OK if no .katex-mathml elements
71
+ } // Preserve usual HTML copy/paste behavior.
72
+
73
+
74
+ const html = [];
75
+
76
+ for (let i = 0; i < fragment.childNodes.length; i++) {
77
+ html.push(fragment.childNodes[i].outerHTML);
78
+ }
79
+
80
+ event.clipboardData.setData('text/html', html.join('')); // Rewrite plain-text version.
81
+
82
+ event.clipboardData.setData('text/plain', katexReplaceWithTex(fragment).textContent); // Prevent normal copy handling.
83
+
84
+ event.preventDefault();
85
+ });
@@ -109,24 +109,27 @@ __webpack_require__.r(__webpack_exports__);
109
109
  /* harmony import */ var katex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
110
110
  /* harmony import */ var katex__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(katex__WEBPACK_IMPORTED_MODULE_0__);
111
111
 
112
-
113
112
  var scripts = document.body.getElementsByTagName("script");
114
113
  scripts = Array.prototype.slice.call(scripts);
115
114
  scripts.forEach(function (script) {
116
- if (!script.type || !script.type.match(/math\/tex/i)) {
117
- return -1;
118
- }
119
- var display = script.type.match(/mode\s*=\s*display(;|\s|\n|$)/) != null;
115
+ if (!script.type || !script.type.match(/math\/tex/i)) {
116
+ return -1;
117
+ }
118
+
119
+ var display = script.type.match(/mode\s*=\s*display(;|\s|\n|$)/) != null;
120
+ var katexElement = document.createElement(display ? "div" : "span");
121
+ katexElement.setAttribute("class", display ? "equation" : "inline-equation");
122
+
123
+ try {
124
+ katex__WEBPACK_IMPORTED_MODULE_0___default.a.render(script.text, katexElement, {
125
+ displayMode: display
126
+ });
127
+ } catch (err) {
128
+ //console.error(err); linter doesn't like this
129
+ katexElement.textContent = script.text;
130
+ }
120
131
 
121
- var katexElement = document.createElement(display ? "div" : "span");
122
- katexElement.setAttribute("class", display ? "equation" : "inline-equation");
123
- try {
124
- katex__WEBPACK_IMPORTED_MODULE_0___default.a.render(script.text, katexElement, { displayMode: display });
125
- } catch (err) {
126
- //console.error(err); linter doesn't like this
127
- katexElement.textContent = script.text;
128
- }
129
- script.parentNode.replaceChild(katexElement, script);
132
+ script.parentNode.replaceChild(katexElement, script);
130
133
  });
131
134
 
132
135
  /***/ })
@@ -0,0 +1,24 @@
1
+ import katex from '../katex.mjs';
2
+
3
+ let scripts = document.body.getElementsByTagName("script");
4
+ scripts = Array.prototype.slice.call(scripts);
5
+ scripts.forEach(function (script) {
6
+ if (!script.type || !script.type.match(/math\/tex/i)) {
7
+ return -1;
8
+ }
9
+
10
+ const display = script.type.match(/mode\s*=\s*display(;|\s|\n|$)/) != null;
11
+ const katexElement = document.createElement(display ? "div" : "span");
12
+ katexElement.setAttribute("class", display ? "equation" : "inline-equation");
13
+
14
+ try {
15
+ katex.render(script.text, katexElement, {
16
+ displayMode: display
17
+ });
18
+ } catch (err) {
19
+ //console.error(err); linter doesn't like this
20
+ katexElement.textContent = script.text;
21
+ }
22
+
23
+ script.parentNode.replaceChild(katexElement, script);
24
+ });