katex 0.12.0 → 0.13.3

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 (167) hide show
  1. package/CHANGELOG.md +112 -0
  2. package/LICENSE +1 -1
  3. package/README.md +8 -7
  4. package/contrib/auto-render/auto-render.js +12 -19
  5. package/contrib/auto-render/index.html +9 -3
  6. package/contrib/auto-render/splitAtDelimiters.js +44 -61
  7. package/contrib/auto-render/test/auto-render-spec.js +88 -52
  8. package/contrib/copy-tex/README.md +5 -9
  9. package/contrib/copy-tex/copy-tex.css +0 -3
  10. package/contrib/mathtex-script-type/README.md +5 -5
  11. package/contrib/mhchem/README.md +4 -2
  12. package/contrib/render-a11y-string/render-a11y-string.js +31 -2
  13. package/contrib/render-a11y-string/test/render-a11y-string-spec.js +23 -0
  14. package/dist/README.md +8 -7
  15. package/dist/contrib/auto-render.js +148 -171
  16. package/dist/contrib/auto-render.min.js +1 -1
  17. package/dist/contrib/auto-render.mjs +91 -95
  18. package/dist/contrib/copy-tex.css +3 -3
  19. package/dist/contrib/copy-tex.js +11 -108
  20. package/dist/contrib/copy-tex.min.css +1 -1
  21. package/dist/contrib/copy-tex.min.js +1 -1
  22. package/dist/contrib/copy-tex.mjs +21 -20
  23. package/dist/contrib/mathtex-script-type.js +66 -91
  24. package/dist/contrib/mathtex-script-type.min.js +1 -1
  25. package/dist/contrib/mathtex-script-type.mjs +3 -3
  26. package/dist/contrib/mhchem.js +70 -95
  27. package/dist/contrib/mhchem.min.js +1 -1
  28. package/dist/contrib/mhchem.mjs +2 -2
  29. package/dist/contrib/render-a11y-string.js +97 -92
  30. package/dist/contrib/render-a11y-string.min.js +1 -1
  31. package/dist/contrib/render-a11y-string.mjs +86 -45
  32. package/dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
  33. package/dist/fonts/KaTeX_AMS-Regular.woff +0 -0
  34. package/dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  35. package/dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  36. package/dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  37. package/dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  38. package/dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  39. package/dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  40. package/dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  41. package/dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  42. package/dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  43. package/dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  44. package/dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  45. package/dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  46. package/dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  47. package/dist/fonts/KaTeX_Main-Bold.ttf +0 -0
  48. package/dist/fonts/KaTeX_Main-Bold.woff +0 -0
  49. package/dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
  50. package/dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  51. package/dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  52. package/dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  53. package/dist/fonts/KaTeX_Main-Italic.ttf +0 -0
  54. package/dist/fonts/KaTeX_Main-Italic.woff +0 -0
  55. package/dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
  56. package/dist/fonts/KaTeX_Main-Regular.ttf +0 -0
  57. package/dist/fonts/KaTeX_Main-Regular.woff +0 -0
  58. package/dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
  59. package/dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  60. package/dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  61. package/dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  62. package/dist/fonts/KaTeX_Math-Italic.ttf +0 -0
  63. package/dist/fonts/KaTeX_Math-Italic.woff +0 -0
  64. package/dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
  65. package/dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  66. package/dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  67. package/dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  68. package/dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  69. package/dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  70. package/dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  71. package/dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  72. package/dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  73. package/dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  74. package/dist/fonts/KaTeX_Script-Regular.ttf +0 -0
  75. package/dist/fonts/KaTeX_Script-Regular.woff +0 -0
  76. package/dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
  77. package/dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
  78. package/dist/fonts/KaTeX_Size1-Regular.woff +0 -0
  79. package/dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  80. package/dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
  81. package/dist/fonts/KaTeX_Size2-Regular.woff +0 -0
  82. package/dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  83. package/dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
  84. package/dist/fonts/KaTeX_Size3-Regular.woff +0 -0
  85. package/dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  86. package/dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
  87. package/dist/fonts/KaTeX_Size4-Regular.woff +0 -0
  88. package/dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  89. package/dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  90. package/dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  91. package/dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  92. package/dist/katex.css +66 -10
  93. package/dist/katex.js +2714 -1950
  94. package/dist/katex.min.css +1 -1
  95. package/dist/katex.min.js +1 -1
  96. package/dist/katex.mjs +3162 -2372
  97. package/katex.js +4 -3
  98. package/package.json +69 -59
  99. package/src/Lexer.js +4 -2
  100. package/src/MacroExpander.js +117 -37
  101. package/src/Options.js +2 -2
  102. package/src/ParseError.js +1 -1
  103. package/src/Parser.js +100 -159
  104. package/src/Settings.js +2 -2
  105. package/src/Style.js +4 -4
  106. package/src/Token.js +1 -1
  107. package/src/buildCommon.js +12 -5
  108. package/src/buildHTML.js +11 -0
  109. package/src/buildMathML.js +6 -0
  110. package/src/defineEnvironment.js +0 -3
  111. package/src/defineFunction.js +15 -22
  112. package/src/delimiter.js +61 -57
  113. package/src/domTree.js +1 -1
  114. package/src/environments/array.js +223 -35
  115. package/src/environments/cd.js +312 -0
  116. package/src/fontMetrics.js +1 -1
  117. package/src/fontMetricsData.js +2076 -0
  118. package/src/fonts/.gitignore +9 -0
  119. package/src/fonts/Makefile +139 -0
  120. package/src/fonts/default.cfg +20 -0
  121. package/src/fonts/generate_fonts.py +61 -0
  122. package/src/fonts/lib/Extra.otf +0 -0
  123. package/src/fonts/lib/Space.ttx +234 -0
  124. package/src/fonts/makeBlacker +49 -0
  125. package/src/fonts/makeFF +2003 -0
  126. package/src/fonts/xbbold.mf +182 -0
  127. package/src/fonts.less +64 -0
  128. package/src/functions/accent.js +3 -2
  129. package/src/functions/arrow.js +8 -2
  130. package/src/functions/color.js +4 -4
  131. package/src/functions/cr.js +7 -25
  132. package/src/functions/def.js +50 -24
  133. package/src/functions/delimsizing.js +8 -0
  134. package/src/functions/enclose.js +80 -12
  135. package/src/functions/environment.js +1 -1
  136. package/src/functions/font.js +3 -4
  137. package/src/functions/genfrac.js +36 -11
  138. package/src/functions/hbox.js +39 -0
  139. package/src/functions/kern.js +1 -0
  140. package/src/functions/mathchoice.js +1 -0
  141. package/src/functions/mclass.js +2 -1
  142. package/src/functions/op.js +3 -7
  143. package/src/functions/operatorname.js +1 -1
  144. package/src/functions/raisebox.js +0 -1
  145. package/src/functions/styling.js +1 -0
  146. package/src/functions/supsub.js +1 -3
  147. package/src/functions/symbolsOrd.js +0 -2
  148. package/src/functions/text.js +2 -3
  149. package/src/functions/vcenter.js +44 -0
  150. package/src/functions.js +3 -0
  151. package/src/katex.less +69 -16
  152. package/src/macros.js +42 -6
  153. package/src/mathMLTree.js +16 -1
  154. package/src/metrics/.gitignore +1 -0
  155. package/src/metrics/README.md +23 -0
  156. package/src/metrics/extract_tfms.py +114 -0
  157. package/src/metrics/extract_ttfs.py +119 -0
  158. package/src/metrics/format_json.py +28 -0
  159. package/src/metrics/mapping.pl +1224 -0
  160. package/src/metrics/parse_tfm.py +211 -0
  161. package/src/parseNode.js +29 -1
  162. package/src/parseTree.js +6 -0
  163. package/src/stretchy.js +12 -5
  164. package/src/svgGeometry.js +33 -4
  165. package/src/symbols.js +5 -3
  166. package/src/types.js +3 -2
  167. package/src/unicodeScripts.js +5 -0
@@ -1,15 +1,15 @@
1
1
  import katex from '../katex.mjs';
2
2
 
3
3
  /* eslint no-constant-condition:0 */
4
- const findEndOfMath = function findEndOfMath(delimiter, text, startIndex) {
4
+ var findEndOfMath = function findEndOfMath(delimiter, text, startIndex) {
5
5
  // Adapted from
6
6
  // https://github.com/Khan/perseus/blob/master/src/perseus-markdown.jsx
7
- let index = startIndex;
8
- let braceLevel = 0;
9
- const delimLength = delimiter.length;
7
+ var index = startIndex;
8
+ var braceLevel = 0;
9
+ var delimLength = delimiter.length;
10
10
 
11
11
  while (index < text.length) {
12
- const character = text[index];
12
+ var character = text[index];
13
13
 
14
14
  if (braceLevel <= 0 && text.slice(index, index + delimLength) === delimiter) {
15
15
  return index;
@@ -27,92 +27,68 @@ const findEndOfMath = function findEndOfMath(delimiter, text, startIndex) {
27
27
  return -1;
28
28
  };
29
29
 
30
- const splitAtDelimiters = function splitAtDelimiters(startData, leftDelim, rightDelim, display) {
31
- const finalData = [];
32
-
33
- for (let i = 0; i < startData.length; i++) {
34
- if (startData[i].type === "text") {
35
- const text = startData[i].data;
36
- let lookingForLeft = true;
37
- let currIndex = 0;
38
- let nextIndex;
39
- nextIndex = text.indexOf(leftDelim);
40
-
41
- if (nextIndex !== -1) {
42
- currIndex = nextIndex;
43
- finalData.push({
44
- type: "text",
45
- data: text.slice(0, currIndex)
46
- });
47
- lookingForLeft = false;
48
- }
30
+ var escapeRegex = function escapeRegex(string) {
31
+ return string.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&");
32
+ };
49
33
 
50
- while (true) {
51
- if (lookingForLeft) {
52
- nextIndex = text.indexOf(leftDelim, currIndex);
53
-
54
- if (nextIndex === -1) {
55
- break;
56
- }
57
-
58
- finalData.push({
59
- type: "text",
60
- data: text.slice(currIndex, nextIndex)
61
- });
62
- currIndex = nextIndex;
63
- } else {
64
- nextIndex = findEndOfMath(rightDelim, text, currIndex + leftDelim.length);
65
-
66
- if (nextIndex === -1) {
67
- break;
68
- }
69
-
70
- finalData.push({
71
- type: "math",
72
- data: text.slice(currIndex + leftDelim.length, nextIndex),
73
- rawData: text.slice(currIndex, nextIndex + rightDelim.length),
74
- display: display
75
- });
76
- currIndex = nextIndex + rightDelim.length;
77
- }
34
+ var amsRegex = /^\\begin{/;
78
35
 
79
- lookingForLeft = !lookingForLeft;
80
- }
36
+ var splitAtDelimiters = function splitAtDelimiters(text, delimiters) {
37
+ var index;
38
+ var data = [];
39
+ var regexLeft = new RegExp("(" + delimiters.map(x => escapeRegex(x.left)).join("|") + ")");
81
40
 
82
- finalData.push({
41
+ while (true) {
42
+ index = text.search(regexLeft);
43
+
44
+ if (index === -1) {
45
+ break;
46
+ }
47
+
48
+ if (index > 0) {
49
+ data.push({
83
50
  type: "text",
84
- data: text.slice(currIndex)
51
+ data: text.slice(0, index)
85
52
  });
86
- } else {
87
- finalData.push(startData[i]);
88
- }
89
- }
53
+ text = text.slice(index); // now text starts with delimiter
54
+ } // ... so this always succeeds:
90
55
 
91
- return finalData;
92
- };
93
56
 
94
- /* eslint no-console:0 */
57
+ var i = delimiters.findIndex(delim => text.startsWith(delim.left));
58
+ index = findEndOfMath(delimiters[i].right, text, delimiters[i].left.length);
95
59
 
96
- const splitWithDelimiters = function splitWithDelimiters(text, delimiters) {
97
- let data = [{
98
- type: "text",
99
- data: text
100
- }];
60
+ if (index === -1) {
61
+ break;
62
+ }
63
+
64
+ var rawData = text.slice(0, index + delimiters[i].right.length);
65
+ var math = amsRegex.test(rawData) ? rawData : text.slice(delimiters[i].left.length, index);
66
+ data.push({
67
+ type: "math",
68
+ data: math,
69
+ rawData,
70
+ display: delimiters[i].display
71
+ });
72
+ text = text.slice(index + delimiters[i].right.length);
73
+ }
101
74
 
102
- for (let i = 0; i < delimiters.length; i++) {
103
- const delimiter = delimiters[i];
104
- data = splitAtDelimiters(data, delimiter.left, delimiter.right, delimiter.display || false);
75
+ if (text !== "") {
76
+ data.push({
77
+ type: "text",
78
+ data: text
79
+ });
105
80
  }
106
81
 
107
82
  return data;
108
83
  };
84
+
85
+ /* eslint no-console:0 */
109
86
  /* Note: optionsCopy is mutated by this method. If it is ever exposed in the
110
87
  * API, we should copy it before mutating.
111
88
  */
112
89
 
113
-
114
- const renderMathInText = function renderMathInText(text, optionsCopy) {
115
- const data = splitWithDelimiters(text, optionsCopy.delimiters);
90
+ var renderMathInText = function renderMathInText(text, optionsCopy) {
91
+ var data = splitAtDelimiters(text, optionsCopy.delimiters);
116
92
 
117
93
  if (data.length === 1 && data[0].type === 'text') {
118
94
  // There is no formula in the text.
@@ -121,14 +97,14 @@ const renderMathInText = function renderMathInText(text, optionsCopy) {
121
97
  return null;
122
98
  }
123
99
 
124
- const fragment = document.createDocumentFragment();
100
+ var fragment = document.createDocumentFragment();
125
101
 
126
- for (let i = 0; i < data.length; i++) {
102
+ for (var i = 0; i < data.length; i++) {
127
103
  if (data[i].type === "text") {
128
104
  fragment.appendChild(document.createTextNode(data[i].data));
129
105
  } else {
130
- const span = document.createElement("span");
131
- let math = data[i].data; // Override any display mode defined in the settings with that
106
+ var span = document.createElement("span");
107
+ var math = data[i].data; // Override any display mode defined in the settings with that
132
108
  // defined by the text itself
133
109
 
134
110
  optionsCopy.displayMode = data[i].display;
@@ -156,39 +132,41 @@ const renderMathInText = function renderMathInText(text, optionsCopy) {
156
132
  return fragment;
157
133
  };
158
134
 
159
- const renderElem = function renderElem(elem, optionsCopy) {
160
- for (let i = 0; i < elem.childNodes.length; i++) {
161
- const childNode = elem.childNodes[i];
135
+ var renderElem = function renderElem(elem, optionsCopy) {
136
+ for (var i = 0; i < elem.childNodes.length; i++) {
137
+ var childNode = elem.childNodes[i];
162
138
 
163
139
  if (childNode.nodeType === 3) {
164
140
  // Text node
165
- const frag = renderMathInText(childNode.textContent, optionsCopy);
141
+ var frag = renderMathInText(childNode.textContent, optionsCopy);
166
142
 
167
143
  if (frag) {
168
144
  i += frag.childNodes.length - 1;
169
145
  elem.replaceChild(frag, childNode);
170
146
  }
171
147
  } else if (childNode.nodeType === 1) {
172
- // Element node
173
- const className = ' ' + childNode.className + ' ';
174
- const shouldRender = optionsCopy.ignoredTags.indexOf(childNode.nodeName.toLowerCase()) === -1 && optionsCopy.ignoredClasses.every(x => className.indexOf(' ' + x + ' ') === -1);
148
+ (function () {
149
+ // Element node
150
+ var className = ' ' + childNode.className + ' ';
151
+ var shouldRender = optionsCopy.ignoredTags.indexOf(childNode.nodeName.toLowerCase()) === -1 && optionsCopy.ignoredClasses.every(x => className.indexOf(' ' + x + ' ') === -1);
175
152
 
176
- if (shouldRender) {
177
- renderElem(childNode, optionsCopy);
178
- }
153
+ if (shouldRender) {
154
+ renderElem(childNode, optionsCopy);
155
+ }
156
+ })();
179
157
  } // Otherwise, it's something else, and ignore it.
180
158
 
181
159
  }
182
160
  };
183
161
 
184
- const renderMathInElement = function renderMathInElement(elem, options) {
162
+ var renderMathInElement = function renderMathInElement(elem, options) {
185
163
  if (!elem) {
186
164
  throw new Error("No element provided to render");
187
165
  }
188
166
 
189
- const optionsCopy = {}; // Object.assign(optionsCopy, option)
167
+ var optionsCopy = {}; // Object.assign(optionsCopy, option)
190
168
 
191
- for (const option in options) {
169
+ for (var option in options) {
192
170
  if (options.hasOwnProperty(option)) {
193
171
  optionsCopy[option] = options[option];
194
172
  }
@@ -205,11 +183,29 @@ const renderMathInElement = function renderMathInElement(elem, options) {
205
183
  display: false
206
184
  }, // LaTeX uses $…$, but it ruins the display of normal `$` in text:
207
185
  // {left: "$", right: "$", display: false},
208
- // \[…\] must come last in this array. Otherwise, renderMathInElement
209
- // will search for \[ before it searches for $$ or \(
210
- // That makes it susceptible to finding a \\[0.3em] row delimiter and
211
- // treating it as if it were the start of a KaTeX math zone.
186
+ // $ must come after $$
187
+ // Render AMS environments even if outside $$…$$ delimiters.
212
188
  {
189
+ left: "\\begin{equation}",
190
+ right: "\\end{equation}",
191
+ display: true
192
+ }, {
193
+ left: "\\begin{align}",
194
+ right: "\\end{align}",
195
+ display: true
196
+ }, {
197
+ left: "\\begin{alignat}",
198
+ right: "\\end{alignat}",
199
+ display: true
200
+ }, {
201
+ left: "\\begin{gather}",
202
+ right: "\\end{gather}",
203
+ display: true
204
+ }, {
205
+ left: "\\begin{CD}",
206
+ right: "\\end{CD}",
207
+ display: true
208
+ }, {
213
209
  left: "\\[",
214
210
  right: "\\]",
215
211
  display: true
@@ -6,9 +6,9 @@
6
6
  */
7
7
  .katex,
8
8
  .katex-display {
9
- user-select: all;
10
- -moz-user-select: all;
11
9
  -webkit-user-select: all;
12
- -ms-user-select: all;
10
+ -moz-user-select: all;
11
+ -ms-user-select: all;
12
+ user-select: all;
13
13
  }
14
14
 
@@ -8,109 +8,11 @@
8
8
  for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
9
9
  }
10
10
  })((typeof self !== 'undefined' ? self : this), function() {
11
- return /******/ (function(modules) { // webpackBootstrap
12
- /******/ // The module cache
13
- /******/ var installedModules = {};
14
- /******/
15
- /******/ // The require function
16
- /******/ function __webpack_require__(moduleId) {
17
- /******/
18
- /******/ // Check if module is in cache
19
- /******/ if(installedModules[moduleId]) {
20
- /******/ return installedModules[moduleId].exports;
21
- /******/ }
22
- /******/ // Create a new module (and put it into the cache)
23
- /******/ var module = installedModules[moduleId] = {
24
- /******/ i: moduleId,
25
- /******/ l: false,
26
- /******/ exports: {}
27
- /******/ };
28
- /******/
29
- /******/ // Execute the module function
30
- /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
31
- /******/
32
- /******/ // Flag the module as loaded
33
- /******/ module.l = true;
34
- /******/
35
- /******/ // Return the exports of the module
36
- /******/ return module.exports;
37
- /******/ }
38
- /******/
39
- /******/
40
- /******/ // expose the modules object (__webpack_modules__)
41
- /******/ __webpack_require__.m = modules;
42
- /******/
43
- /******/ // expose the module cache
44
- /******/ __webpack_require__.c = installedModules;
45
- /******/
46
- /******/ // define getter function for harmony exports
47
- /******/ __webpack_require__.d = function(exports, name, getter) {
48
- /******/ if(!__webpack_require__.o(exports, name)) {
49
- /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
50
- /******/ }
51
- /******/ };
52
- /******/
53
- /******/ // define __esModule on exports
54
- /******/ __webpack_require__.r = function(exports) {
55
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
56
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
57
- /******/ }
58
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
59
- /******/ };
60
- /******/
61
- /******/ // create a fake namespace object
62
- /******/ // mode & 1: value is a module id, require it
63
- /******/ // mode & 2: merge all properties of value into the ns
64
- /******/ // mode & 4: return value when already ns object
65
- /******/ // mode & 8|1: behave like require
66
- /******/ __webpack_require__.t = function(value, mode) {
67
- /******/ if(mode & 1) value = __webpack_require__(value);
68
- /******/ if(mode & 8) return value;
69
- /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
70
- /******/ var ns = Object.create(null);
71
- /******/ __webpack_require__.r(ns);
72
- /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
73
- /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
74
- /******/ return ns;
75
- /******/ };
76
- /******/
77
- /******/ // getDefaultExport function for compatibility with non-harmony modules
78
- /******/ __webpack_require__.n = function(module) {
79
- /******/ var getter = module && module.__esModule ?
80
- /******/ function getDefault() { return module['default']; } :
81
- /******/ function getModuleExports() { return module; };
82
- /******/ __webpack_require__.d(getter, 'a', getter);
83
- /******/ return getter;
84
- /******/ };
85
- /******/
86
- /******/ // Object.prototype.hasOwnProperty.call
87
- /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
88
- /******/
89
- /******/ // __webpack_public_path__
90
- /******/ __webpack_require__.p = "";
91
- /******/
92
- /******/
93
- /******/ // Load entry module and return exports
94
- /******/ return __webpack_require__(__webpack_require__.s = 1);
95
- /******/ })
96
- /************************************************************************/
97
- /******/ ([
98
- /* 0 */
99
- /***/ (function(module, exports, __webpack_require__) {
100
-
101
- // extracted by mini-css-extract-plugin
102
-
103
- /***/ }),
104
- /* 1 */
105
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
106
-
107
- "use strict";
108
- __webpack_require__.r(__webpack_exports__);
109
-
110
- // EXTERNAL MODULE: ./contrib/copy-tex/copy-tex.css
111
- var copy_tex = __webpack_require__(0);
112
-
113
- // CONCATENATED MODULE: ./contrib/copy-tex/katex2tex.js
11
+ return /******/ (function() { // webpackBootstrap
12
+ /******/ "use strict";
13
+ var __webpack_exports__ = {};
14
+
15
+ ;// CONCATENATED MODULE: ./contrib/copy-tex/katex2tex.js
114
16
  // Set these to how you want inline and display math to be delimited.
115
17
  var defaultCopyDelimiters = {
116
18
  inline: ['$', '$'],
@@ -171,7 +73,7 @@ var katexReplaceWithTex = function katexReplaceWithTex(fragment, copyDelimiters)
171
73
  return fragment;
172
74
  };
173
75
  /* harmony default export */ var katex2tex = (katexReplaceWithTex);
174
- // CONCATENATED MODULE: ./contrib/copy-tex/copy-tex.js
76
+ ;// CONCATENATED MODULE: ./contrib/copy-tex/copy-tex.js
175
77
  // Global copy handler to modify behavior on .katex elements.
176
78
 
177
79
  document.addEventListener('copy', function (event) {
@@ -200,14 +102,15 @@ document.addEventListener('copy', function (event) {
200
102
 
201
103
  event.preventDefault();
202
104
  });
203
- // CONCATENATED MODULE: ./contrib/copy-tex/copy-tex.webpack.js
105
+ ;// CONCATENATED MODULE: ./contrib/copy-tex/copy-tex.webpack.js
204
106
  /**
205
107
  * This is the webpack entry point for KaTeX. As ECMAScript doesn't support
206
108
  * CSS modules natively, a separate entry point is used.
207
109
  */
208
110
 
209
111
 
210
-
211
- /***/ })
212
- /******/ ])["default"];
112
+ __webpack_exports__ = __webpack_exports__.default;
113
+ /******/ return __webpack_exports__;
114
+ /******/ })()
115
+ ;
213
116
  });
@@ -1 +1 @@
1
- .katex,.katex-display{user-select:all;-moz-user-select:all;-webkit-user-select:all;-ms-user-select:all}
1
+ .katex,.katex-display{-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;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=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});
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 l in n)("object"==typeof exports?exports:e)[l]=n[l]}}("undefined"!=typeof self?self:this,(function(){return function(){"use strict";var e={},t={inline:["$","$"],display:["$$","$$"]},n=function(e,n){void 0===n&&(n=t);for(var l=e.querySelectorAll(".katex-mathml + .katex-html"),r=0;r<l.length;r++){var i=l[r];i.remove?i.remove(null):i.parentNode.removeChild(i)}for(var o=e.querySelectorAll(".katex-mathml"),a=0;a<o.length;a++){var d=o[a],f=d.querySelector("annotation");f&&(d.replaceWith?d.replaceWith(f):d.parentNode.replaceChild(f,d),f.innerHTML=n.inline[0]+f.innerHTML+n.inline[1])}for(var c=e.querySelectorAll(".katex-display annotation"),s=0;s<c.length;s++){var p=c[s];p.innerHTML=n.display[0]+p.innerHTML.substr(n.inline[0].length,p.innerHTML.length-n.inline[0].length-n.inline[1].length)+n.display[1]}return e};return document.addEventListener("copy",(function(e){var t=window.getSelection();if(!t.isCollapsed){var l=t.getRangeAt(0).cloneContents();if(l.querySelector(".katex-mathml")){for(var r=[],i=0;i<l.childNodes.length;i++)r.push(l.childNodes[i].outerHTML);e.clipboardData.setData("text/html",r.join("")),e.clipboardData.setData("text/plain",n(l).textContent),e.preventDefault()}}})),e=e.default}()}));
@@ -1,5 +1,5 @@
1
1
  // Set these to how you want inline and display math to be delimited.
2
- const defaultCopyDelimiters = {
2
+ var defaultCopyDelimiters = {
3
3
  inline: ['$', '$'],
4
4
  // alternative: ['\(', '\)']
5
5
  display: ['$$', '$$'] // alternative: ['\[', '\]']
@@ -8,17 +8,17 @@ const defaultCopyDelimiters = {
8
8
  // Modifies fragment in-place. Useful for writing your own 'copy' handler,
9
9
  // as in copy-tex.js.
10
10
 
11
- const katexReplaceWithTex = function katexReplaceWithTex(fragment, copyDelimiters) {
11
+ var katexReplaceWithTex = function katexReplaceWithTex(fragment, copyDelimiters) {
12
12
  if (copyDelimiters === void 0) {
13
13
  copyDelimiters = defaultCopyDelimiters;
14
14
  }
15
15
 
16
16
  // Remove .katex-html blocks that are preceded by .katex-mathml blocks
17
17
  // (which will get replaced below).
18
- const katexHtml = fragment.querySelectorAll('.katex-mathml + .katex-html');
18
+ var katexHtml = fragment.querySelectorAll('.katex-mathml + .katex-html');
19
19
 
20
- for (let i = 0; i < katexHtml.length; i++) {
21
- const element = katexHtml[i];
20
+ for (var i = 0; i < katexHtml.length; i++) {
21
+ var element = katexHtml[i];
22
22
 
23
23
  if (element.remove) {
24
24
  element.remove(null);
@@ -29,17 +29,18 @@ const katexReplaceWithTex = function katexReplaceWithTex(fragment, copyDelimiter
29
29
  // descendant, with inline delimiters.
30
30
 
31
31
 
32
- const katexMathml = fragment.querySelectorAll('.katex-mathml');
32
+ var katexMathml = fragment.querySelectorAll('.katex-mathml');
33
33
 
34
- for (let i = 0; i < katexMathml.length; i++) {
35
- const element = katexMathml[i];
36
- const texSource = element.querySelector('annotation');
34
+ for (var _i = 0; _i < katexMathml.length; _i++) {
35
+ var _element = katexMathml[_i];
36
+
37
+ var texSource = _element.querySelector('annotation');
37
38
 
38
39
  if (texSource) {
39
- if (element.replaceWith) {
40
- element.replaceWith(texSource);
40
+ if (_element.replaceWith) {
41
+ _element.replaceWith(texSource);
41
42
  } else {
42
- element.parentNode.replaceChild(texSource, element);
43
+ _element.parentNode.replaceChild(texSource, _element);
43
44
  }
44
45
 
45
46
  texSource.innerHTML = copyDelimiters.inline[0] + texSource.innerHTML + copyDelimiters.inline[1];
@@ -47,33 +48,33 @@ const katexReplaceWithTex = function katexReplaceWithTex(fragment, copyDelimiter
47
48
  } // Switch display math to display delimiters.
48
49
 
49
50
 
50
- const displays = fragment.querySelectorAll('.katex-display annotation');
51
+ var displays = fragment.querySelectorAll('.katex-display annotation');
51
52
 
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];
53
+ for (var _i2 = 0; _i2 < displays.length; _i2++) {
54
+ var _element2 = displays[_i2];
55
+ _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];
55
56
  }
56
57
 
57
58
  return fragment;
58
59
  };
59
60
 
60
61
  document.addEventListener('copy', function (event) {
61
- const selection = window.getSelection();
62
+ var selection = window.getSelection();
62
63
 
63
64
  if (selection.isCollapsed) {
64
65
  return; // default action OK if selection is empty
65
66
  }
66
67
 
67
- const fragment = selection.getRangeAt(0).cloneContents();
68
+ var fragment = selection.getRangeAt(0).cloneContents();
68
69
 
69
70
  if (!fragment.querySelector('.katex-mathml')) {
70
71
  return; // default action OK if no .katex-mathml elements
71
72
  } // Preserve usual HTML copy/paste behavior.
72
73
 
73
74
 
74
- const html = [];
75
+ var html = [];
75
76
 
76
- for (let i = 0; i < fragment.childNodes.length; i++) {
77
+ for (var i = 0; i < fragment.childNodes.length; i++) {
77
78
  html.push(fragment.childNodes[i].outerHTML);
78
79
  }
79
80