mathpix-markdown-it 2.0.38 → 2.0.40

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 (97) hide show
  1. package/README.md +3 -0
  2. package/doc/changelog.md +128 -0
  3. package/es5/browser/auto-render.js +1 -1
  4. package/es5/bundle.js +4 -4
  5. package/es5/index.js +4 -4
  6. package/lib/components/mathpix-markdown/index.js +2 -1
  7. package/lib/components/mathpix-markdown/index.js.map +1 -1
  8. package/lib/index.d.ts +2 -1
  9. package/lib/index.js +3 -1
  10. package/lib/index.js.map +1 -1
  11. package/lib/markdown/common/consts.d.ts +5 -0
  12. package/lib/markdown/common/consts.js +17 -5
  13. package/lib/markdown/common/consts.js.map +1 -1
  14. package/lib/markdown/common/convert-math-to-html.d.ts +10 -0
  15. package/lib/markdown/common/convert-math-to-html.js +163 -41
  16. package/lib/markdown/common/convert-math-to-html.js.map +1 -1
  17. package/lib/markdown/common/labels.d.ts +9 -1
  18. package/lib/markdown/common/labels.js +82 -37
  19. package/lib/markdown/common/labels.js.map +1 -1
  20. package/lib/markdown/common/reset-mmd-state.d.ts +4 -0
  21. package/lib/markdown/common/reset-mmd-state.js +30 -0
  22. package/lib/markdown/common/reset-mmd-state.js.map +1 -0
  23. package/lib/markdown/common.d.ts +3 -0
  24. package/lib/markdown/common.js +34 -23
  25. package/lib/markdown/common.js.map +1 -1
  26. package/lib/markdown/highlight/highlight-math-token.js +1 -0
  27. package/lib/markdown/highlight/highlight-math-token.js.map +1 -1
  28. package/lib/markdown/index.js +22 -8
  29. package/lib/markdown/index.js.map +1 -1
  30. package/lib/markdown/mathpix-markdown-plugins.js +21 -1
  31. package/lib/markdown/mathpix-markdown-plugins.js.map +1 -1
  32. package/lib/markdown/md-block-rule/begin-tabular/common.d.ts +15 -1
  33. package/lib/markdown/md-block-rule/begin-tabular/common.js +57 -11
  34. package/lib/markdown/md-block-rule/begin-tabular/common.js.map +1 -1
  35. package/lib/markdown/md-block-rule/begin-tabular/index.d.ts +3 -0
  36. package/lib/markdown/md-block-rule/begin-tabular/index.js +79 -20
  37. package/lib/markdown/md-block-rule/begin-tabular/index.js.map +1 -1
  38. package/lib/markdown/md-block-rule/begin-tabular/multi-column-row.d.ts +3 -1
  39. package/lib/markdown/md-block-rule/begin-tabular/multi-column-row.js +15 -9
  40. package/lib/markdown/md-block-rule/begin-tabular/multi-column-row.js.map +1 -1
  41. package/lib/markdown/md-block-rule/begin-tabular/parse-tabular.d.ts +2 -1
  42. package/lib/markdown/md-block-rule/begin-tabular/parse-tabular.js +177 -73
  43. package/lib/markdown/md-block-rule/begin-tabular/parse-tabular.js.map +1 -1
  44. package/lib/markdown/md-block-rule/begin-tabular/sub-cell.d.ts +1 -0
  45. package/lib/markdown/md-block-rule/begin-tabular/sub-cell.js +11 -23
  46. package/lib/markdown/md-block-rule/begin-tabular/sub-cell.js.map +1 -1
  47. package/lib/markdown/md-block-rule/begin-tabular/sub-code.d.ts +0 -6
  48. package/lib/markdown/md-block-rule/begin-tabular/sub-code.js +10 -21
  49. package/lib/markdown/md-block-rule/begin-tabular/sub-code.js.map +1 -1
  50. package/lib/markdown/md-block-rule/begin-tabular/sub-math.d.ts +13 -5
  51. package/lib/markdown/md-block-rule/begin-tabular/sub-math.js +132 -93
  52. package/lib/markdown/md-block-rule/begin-tabular/sub-math.js.map +1 -1
  53. package/lib/markdown/md-block-rule/begin-tabular/sub-tabular.d.ts +3 -1
  54. package/lib/markdown/md-block-rule/begin-tabular/sub-tabular.js +44 -36
  55. package/lib/markdown/md-block-rule/begin-tabular/sub-tabular.js.map +1 -1
  56. package/lib/markdown/md-block-rule/begin-tabular/tabular-td.d.ts +11 -3
  57. package/lib/markdown/md-block-rule/begin-tabular/tabular-td.js +207 -57
  58. package/lib/markdown/md-block-rule/begin-tabular/tabular-td.js.map +1 -1
  59. package/lib/markdown/md-block-rule/mmd-html-block.js +11 -2
  60. package/lib/markdown/md-block-rule/mmd-html-block.js.map +1 -1
  61. package/lib/markdown/md-core-rules/set-positions.js +90 -15
  62. package/lib/markdown/md-core-rules/set-positions.js.map +1 -1
  63. package/lib/markdown/md-inline-rule/core-inline.js +41 -9
  64. package/lib/markdown/md-inline-rule/core-inline.js.map +1 -1
  65. package/lib/markdown/md-inline-rule/tabular.js +5 -2
  66. package/lib/markdown/md-inline-rule/tabular.js.map +1 -1
  67. package/lib/markdown/md-latex-footnotes/block-rule.js +72 -3
  68. package/lib/markdown/md-latex-footnotes/block-rule.js.map +1 -1
  69. package/lib/markdown/md-latex-lists-env/re-level.js +39 -22
  70. package/lib/markdown/md-latex-lists-env/re-level.js.map +1 -1
  71. package/lib/markdown/md-renderer-rules/render-tabular.js +115 -36
  72. package/lib/markdown/md-renderer-rules/render-tabular.js.map +1 -1
  73. package/lib/markdown/md-svg-to-base64/base64.js +8 -8
  74. package/lib/markdown/md-svg-to-base64/base64.js.map +1 -1
  75. package/lib/markdown/md-theorem/block-rule.js +10 -6
  76. package/lib/markdown/md-theorem/block-rule.js.map +1 -1
  77. package/lib/markdown/mdPluginRaw.js +24 -3
  78. package/lib/markdown/mdPluginRaw.js.map +1 -1
  79. package/lib/markdown/mdPluginTOC.js +30 -4
  80. package/lib/markdown/mdPluginTOC.js.map +1 -1
  81. package/lib/markdown/mdPluginTableTabular.js +46 -1
  82. package/lib/markdown/mdPluginTableTabular.js.map +1 -1
  83. package/lib/markdown/utils.js +3 -0
  84. package/lib/markdown/utils.js.map +1 -1
  85. package/lib/mathjax/index.js +3 -3
  86. package/lib/mathjax/index.js.map +1 -1
  87. package/lib/mathpix-markdown-model/index.d.ts +4 -0
  88. package/lib/mathpix-markdown-model/index.js +2 -1
  89. package/lib/mathpix-markdown-model/index.js.map +1 -1
  90. package/package.json +1 -1
  91. package/pr-specs/2026-04-global-state-cleanup-and-perf.md +212 -0
  92. package/pr-specs/2026-04-optimize-tabular-parsing.md +211 -0
  93. package/pr-specs/2026-05-footnote-perf-and-parser-invariants.md +246 -0
  94. package/pr-specs/2026-05-tabular-vertical-align-bracket.md +270 -0
  95. package/lib/markdown/mdPluginSeparateForBlock.d.ts +0 -2
  96. package/lib/markdown/mdPluginSeparateForBlock.js +0 -209
  97. package/lib/markdown/mdPluginSeparateForBlock.js.map +0 -1
@@ -1,209 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var common_1 = require("./common");
4
- var mdPluginText_1 = require("./mdPluginText");
5
- var begin_tabular_1 = require("./md-block-rule/begin-tabular");
6
- exports.default = (function (md) {
7
- md.core.ruler.after('normalize', 'separateForBlock', function (state) {
8
- (0, mdPluginText_1.resetCounter)();
9
- var pickTag = /\\(?:title\{([^}]*)\}|section\{([^}]*)\}|subsection\{([^}]*)\})/;
10
- var str = state.src;
11
- var arr = str.split('\n');
12
- var arr2 = [];
13
- for (var i = 0; i < arr.length; i++) {
14
- var item = arr[i];
15
- var match = item.match(pickTag);
16
- if (!match) {
17
- arr2.push(arr[i]);
18
- continue;
19
- }
20
- if (match.index === 0 && match[0].length === item.length) {
21
- arr2.push(arr[i]);
22
- continue;
23
- }
24
- if (match.index === 0 || item.slice(0, match.index).trim() === '') {
25
- var s2 = item.slice(0, match[0].length);
26
- var s3 = item.slice(match.index + match[0].length, item.length);
27
- arr2.push(s2);
28
- arr2.push(s3);
29
- }
30
- else {
31
- var ch = item.charCodeAt(match.index - 1);
32
- if ((0, common_1.isSpace)(ch)) {
33
- var s1 = item.slice(0, match.index - 1);
34
- var s2 = item.slice(match.index, item.length);
35
- var s3 = item.slice(match.index + match[0].length, item.length);
36
- arr2.push(s1);
37
- arr2.push(s2);
38
- if (s3 && s3.length > 0) {
39
- arr2.push(s3);
40
- }
41
- }
42
- else {
43
- arr2.push(item);
44
- }
45
- }
46
- }
47
- state.src = arr2.join('\n');
48
- });
49
- md.core.ruler.after('normalize', 'separateBeforeBlock', function (state) {
50
- var beginTag = /\\(?:begin\s{0,}\{(center|left|right|table|figure)\})/;
51
- var closeTag = /\\(?:end\s{0,}\{(center|left|right|table|figure)\})/;
52
- var endTag = function (arg) { return new RegExp('\\end\s{0,}\{(' + arg + ')\}'); };
53
- var needSep = false;
54
- var str = state.src;
55
- var arr = str.split('\n');
56
- var arr2 = [];
57
- var isOpen = false;
58
- var last = '';
59
- var isOpenContent = false;
60
- var matchB; //= item.match(beginTag);
61
- var matchE; //= item.match(closeTag);
62
- var isInline = false;
63
- for (var i = 0; i < arr.length; i++) {
64
- var item = arr[i];
65
- if (!isOpenContent) {
66
- isOpenContent = begin_tabular_1.openTag.test(item);
67
- }
68
- if (isOpenContent) {
69
- if (begin_tabular_1.closeTag.test(item)) {
70
- isOpenContent = false;
71
- }
72
- }
73
- if (isOpenContent) {
74
- arr2.push(item);
75
- last = item;
76
- continue;
77
- }
78
- if (!matchB) {
79
- matchB = item.match(beginTag);
80
- if (matchB) {
81
- var str_1 = item.slice(0, matchB.index);
82
- if (str_1.indexOf('`') !== -1) {
83
- matchB = null;
84
- }
85
- else {
86
- var align = matchB[1];
87
- closeTag = endTag(align);
88
- }
89
- }
90
- isInline = closeTag.test(item);
91
- }
92
- if (!matchB) {
93
- arr2.push(item);
94
- last = item;
95
- continue;
96
- }
97
- matchE = item.match(closeTag);
98
- if (matchE) {
99
- var str_2 = item.slice(matchE.index);
100
- if (str_2.indexOf('`') !== -1) {
101
- matchE = null;
102
- }
103
- }
104
- if (!matchE && isOpen) {
105
- arr2.push(item);
106
- last = item;
107
- continue;
108
- }
109
- if (matchB && matchE && isInline) {
110
- isOpen = false;
111
- if (matchB.index === 0 || item.slice(0, matchB.index).trim() === '') {
112
- if (last.trim().length > 0) {
113
- arr2.push('\n');
114
- if (matchE.index + matchE[0].length < item.length) {
115
- var s1 = item.slice(0, matchE.index + matchE[0].length);
116
- var s2 = item.slice(matchE.index + matchE[0].length, item.length);
117
- arr2.push(s1);
118
- arr2.push('\n');
119
- arr2.push(s2);
120
- }
121
- else {
122
- arr2.push(item);
123
- }
124
- }
125
- else {
126
- if (matchE.index + matchE[0].length < item.length) {
127
- var s1 = item.slice(0, matchE.index + matchE[0].length);
128
- var s2 = item.slice(matchE.index + matchE[0].length, item.length);
129
- arr2.push(s1);
130
- arr2.push('\n');
131
- arr2.push(s2);
132
- }
133
- else {
134
- arr2.push(item);
135
- if (i + 1 < arr.length && arr[i].trim().length > 0) {
136
- arr2.push('\n');
137
- }
138
- }
139
- }
140
- }
141
- else {
142
- var s1 = item.slice(0, matchB.index);
143
- arr2.push(s1);
144
- arr2.push('\n');
145
- if (matchE.index + matchE[0].length < item.length) {
146
- var s2 = item.slice(matchB.index, matchE.index + matchE[0].length);
147
- arr2.push(s2);
148
- arr2.push('\n');
149
- var s3 = item.slice(matchE.index + matchE[0].length, item.length);
150
- arr2.push(s3);
151
- }
152
- else {
153
- var s2 = item.slice(matchB.index);
154
- arr2.push(s2);
155
- }
156
- }
157
- matchB = null;
158
- last = item;
159
- continue;
160
- }
161
- if (matchE) {
162
- isOpen = false;
163
- if (matchE.index + matchE[0].length < item.length) {
164
- var s1 = item.slice(0, matchE.index + matchE[0].length);
165
- var s2 = item.slice(matchE.index + matchE[0].length, item.length);
166
- arr2.push(s1);
167
- arr2.push('\n');
168
- arr2.push(s2);
169
- }
170
- else {
171
- arr2.push(item);
172
- if (i + 1 < arr.length && arr[i + 1].trim().length > 0
173
- && !closeTag.test(arr[i + 1]) && arr[i + 1].charCodeAt(0) !== 0x60) {
174
- arr2.push('\n');
175
- }
176
- }
177
- matchB = null;
178
- matchE = null;
179
- last = item;
180
- continue;
181
- }
182
- if (matchB) {
183
- isOpen = true;
184
- if (matchB.index === 0 || item.slice(0, matchB.index).trim() === '') {
185
- if (last.trim().length > 0 && last.charCodeAt(0) !== 0x60) {
186
- arr2.push('\n');
187
- arr2.push(item);
188
- }
189
- else {
190
- arr2.push(item);
191
- }
192
- }
193
- else {
194
- var s1 = item.slice(0, needSep ? matchB.index : matchB.index);
195
- var s2 = item.slice(matchB.index);
196
- arr2.push(s1);
197
- arr2.push('\n');
198
- arr2.push(s2);
199
- }
200
- last = item;
201
- continue;
202
- }
203
- arr2.push(item);
204
- last = item;
205
- }
206
- state.src = arr2.join('\n');
207
- });
208
- });
209
- //# sourceMappingURL=mdPluginSeparateForBlock.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mdPluginSeparateForBlock.js","sourceRoot":"","sources":["../../src/markdown/mdPluginSeparateForBlock.ts"],"names":[],"mappings":"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"}