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.
- package/README.md +3 -0
- package/doc/changelog.md +128 -0
- package/es5/browser/auto-render.js +1 -1
- package/es5/bundle.js +4 -4
- package/es5/index.js +4 -4
- package/lib/components/mathpix-markdown/index.js +2 -1
- package/lib/components/mathpix-markdown/index.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/markdown/common/consts.d.ts +5 -0
- package/lib/markdown/common/consts.js +17 -5
- package/lib/markdown/common/consts.js.map +1 -1
- package/lib/markdown/common/convert-math-to-html.d.ts +10 -0
- package/lib/markdown/common/convert-math-to-html.js +163 -41
- package/lib/markdown/common/convert-math-to-html.js.map +1 -1
- package/lib/markdown/common/labels.d.ts +9 -1
- package/lib/markdown/common/labels.js +82 -37
- package/lib/markdown/common/labels.js.map +1 -1
- package/lib/markdown/common/reset-mmd-state.d.ts +4 -0
- package/lib/markdown/common/reset-mmd-state.js +30 -0
- package/lib/markdown/common/reset-mmd-state.js.map +1 -0
- package/lib/markdown/common.d.ts +3 -0
- package/lib/markdown/common.js +34 -23
- package/lib/markdown/common.js.map +1 -1
- package/lib/markdown/highlight/highlight-math-token.js +1 -0
- package/lib/markdown/highlight/highlight-math-token.js.map +1 -1
- package/lib/markdown/index.js +22 -8
- package/lib/markdown/index.js.map +1 -1
- package/lib/markdown/mathpix-markdown-plugins.js +21 -1
- package/lib/markdown/mathpix-markdown-plugins.js.map +1 -1
- package/lib/markdown/md-block-rule/begin-tabular/common.d.ts +15 -1
- package/lib/markdown/md-block-rule/begin-tabular/common.js +57 -11
- package/lib/markdown/md-block-rule/begin-tabular/common.js.map +1 -1
- package/lib/markdown/md-block-rule/begin-tabular/index.d.ts +3 -0
- package/lib/markdown/md-block-rule/begin-tabular/index.js +79 -20
- package/lib/markdown/md-block-rule/begin-tabular/index.js.map +1 -1
- package/lib/markdown/md-block-rule/begin-tabular/multi-column-row.d.ts +3 -1
- package/lib/markdown/md-block-rule/begin-tabular/multi-column-row.js +15 -9
- package/lib/markdown/md-block-rule/begin-tabular/multi-column-row.js.map +1 -1
- package/lib/markdown/md-block-rule/begin-tabular/parse-tabular.d.ts +2 -1
- package/lib/markdown/md-block-rule/begin-tabular/parse-tabular.js +177 -73
- package/lib/markdown/md-block-rule/begin-tabular/parse-tabular.js.map +1 -1
- package/lib/markdown/md-block-rule/begin-tabular/sub-cell.d.ts +1 -0
- package/lib/markdown/md-block-rule/begin-tabular/sub-cell.js +11 -23
- package/lib/markdown/md-block-rule/begin-tabular/sub-cell.js.map +1 -1
- package/lib/markdown/md-block-rule/begin-tabular/sub-code.d.ts +0 -6
- package/lib/markdown/md-block-rule/begin-tabular/sub-code.js +10 -21
- package/lib/markdown/md-block-rule/begin-tabular/sub-code.js.map +1 -1
- package/lib/markdown/md-block-rule/begin-tabular/sub-math.d.ts +13 -5
- package/lib/markdown/md-block-rule/begin-tabular/sub-math.js +132 -93
- package/lib/markdown/md-block-rule/begin-tabular/sub-math.js.map +1 -1
- package/lib/markdown/md-block-rule/begin-tabular/sub-tabular.d.ts +3 -1
- package/lib/markdown/md-block-rule/begin-tabular/sub-tabular.js +44 -36
- package/lib/markdown/md-block-rule/begin-tabular/sub-tabular.js.map +1 -1
- package/lib/markdown/md-block-rule/begin-tabular/tabular-td.d.ts +11 -3
- package/lib/markdown/md-block-rule/begin-tabular/tabular-td.js +207 -57
- package/lib/markdown/md-block-rule/begin-tabular/tabular-td.js.map +1 -1
- package/lib/markdown/md-block-rule/mmd-html-block.js +11 -2
- package/lib/markdown/md-block-rule/mmd-html-block.js.map +1 -1
- package/lib/markdown/md-core-rules/set-positions.js +90 -15
- package/lib/markdown/md-core-rules/set-positions.js.map +1 -1
- package/lib/markdown/md-inline-rule/core-inline.js +41 -9
- package/lib/markdown/md-inline-rule/core-inline.js.map +1 -1
- package/lib/markdown/md-inline-rule/tabular.js +5 -2
- package/lib/markdown/md-inline-rule/tabular.js.map +1 -1
- package/lib/markdown/md-latex-footnotes/block-rule.js +72 -3
- package/lib/markdown/md-latex-footnotes/block-rule.js.map +1 -1
- package/lib/markdown/md-latex-lists-env/re-level.js +39 -22
- package/lib/markdown/md-latex-lists-env/re-level.js.map +1 -1
- package/lib/markdown/md-renderer-rules/render-tabular.js +115 -36
- package/lib/markdown/md-renderer-rules/render-tabular.js.map +1 -1
- package/lib/markdown/md-svg-to-base64/base64.js +8 -8
- package/lib/markdown/md-svg-to-base64/base64.js.map +1 -1
- package/lib/markdown/md-theorem/block-rule.js +10 -6
- package/lib/markdown/md-theorem/block-rule.js.map +1 -1
- package/lib/markdown/mdPluginRaw.js +24 -3
- package/lib/markdown/mdPluginRaw.js.map +1 -1
- package/lib/markdown/mdPluginTOC.js +30 -4
- package/lib/markdown/mdPluginTOC.js.map +1 -1
- package/lib/markdown/mdPluginTableTabular.js +46 -1
- package/lib/markdown/mdPluginTableTabular.js.map +1 -1
- package/lib/markdown/utils.js +3 -0
- package/lib/markdown/utils.js.map +1 -1
- package/lib/mathjax/index.js +3 -3
- package/lib/mathjax/index.js.map +1 -1
- package/lib/mathpix-markdown-model/index.d.ts +4 -0
- package/lib/mathpix-markdown-model/index.js +2 -1
- package/lib/mathpix-markdown-model/index.js.map +1 -1
- package/package.json +1 -1
- package/pr-specs/2026-04-global-state-cleanup-and-perf.md +212 -0
- package/pr-specs/2026-04-optimize-tabular-parsing.md +211 -0
- package/pr-specs/2026-05-footnote-perf-and-parser-invariants.md +246 -0
- package/pr-specs/2026-05-tabular-vertical-align-bracket.md +270 -0
- package/lib/markdown/mdPluginSeparateForBlock.d.ts +0 -2
- package/lib/markdown/mdPluginSeparateForBlock.js +0 -209
- package/lib/markdown/mdPluginSeparateForBlock.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sub-math.js","sourceRoot":"","sources":["../../../../src/markdown/md-block-rule/begin-tabular/sub-math.ts"],"names":[],"mappings":";;;AAAA,mCAAwD;AACxD,iDAAmD;AACnD,qCAAiF;AACjF,uCAAmD;AACnD,8CAI6B;
|
|
1
|
+
{"version":3,"file":"sub-math.js","sourceRoot":"","sources":["../../../../src/markdown/md-block-rule/begin-tabular/sub-math.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { TTokenTabular } from "./index";
|
|
2
|
+
import { TVerticalPos } from "./common";
|
|
2
3
|
export declare const ClearSubTableLists: () => void;
|
|
3
|
-
export declare const
|
|
4
|
+
export declare const getSubTabularBracket: (placeholderOrId: string) => TVerticalPos | undefined;
|
|
5
|
+
export declare const pushSubTabular: (str: string, subTabularContent: string, subRes: Array<TTokenTabular>, posBegin: number, posEnd: number, i?: number, level?: number, bracket?: TVerticalPos) => string;
|
|
4
6
|
/**
|
|
5
7
|
* Expands <...> / <<...>> placeholders inside a tabular cell by replacing them with cached
|
|
6
8
|
* sub-tabular content (or diagbox fallback). If injected content contains a list begin
|
|
@@ -1,17 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getSubTabular = exports.pushSubTabular = exports.ClearSubTableLists = void 0;
|
|
3
|
+
exports.getSubTabular = exports.pushSubTabular = exports.getSubTabularBracket = exports.ClearSubTableLists = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var common_1 = require("./common");
|
|
6
6
|
var consts_1 = require("../../common/consts");
|
|
7
7
|
var sub_cell_1 = require("./sub-cell");
|
|
8
8
|
var sub_code_1 = require("./sub-code");
|
|
9
9
|
var placeholder_utils_1 = require("./placeholder-utils");
|
|
10
|
-
var subTabular =
|
|
10
|
+
var subTabular = new Map();
|
|
11
|
+
// Guards direct lookup: keys are generateUniqueId() UUIDs, cell text should match exactly.
|
|
12
|
+
var SUB_TABULAR_KEY_RE = new RegExp("^".concat(consts_1.uuidPatternNoCapture, "$"));
|
|
11
13
|
var ClearSubTableLists = function () {
|
|
12
|
-
subTabular
|
|
14
|
+
subTabular.clear();
|
|
13
15
|
};
|
|
14
16
|
exports.ClearSubTableLists = ClearSubTableLists;
|
|
17
|
+
// Bracket of the nested tabular referenced by the placeholder `<<id>>` (or bare uuid).
|
|
18
|
+
var getSubTabularBracket = function (placeholderOrId) {
|
|
19
|
+
var _a;
|
|
20
|
+
var id = placeholderOrId.replace(consts_1.ANGLE_BRACKETS_RE, '');
|
|
21
|
+
return (_a = subTabular.get(id)) === null || _a === void 0 ? void 0 : _a.bracket;
|
|
22
|
+
};
|
|
23
|
+
exports.getSubTabularBracket = getSubTabularBracket;
|
|
15
24
|
/**
|
|
16
25
|
* Extracts child placeholder IDs from a sub-tabular content string.
|
|
17
26
|
* Returns a list of raw placeholder IDs without angle brackets.
|
|
@@ -23,26 +32,22 @@ var extractChildIds = function (content) {
|
|
|
23
32
|
.map(function (match) { return match.replace(consts_1.ANGLE_BRACKETS_RE, ""); })
|
|
24
33
|
.filter(function (s) { return s.length > 0; });
|
|
25
34
|
};
|
|
26
|
-
var pushSubTabular = function (str, subTabularContent, subRes, posBegin, posEnd, i, level) {
|
|
35
|
+
var pushSubTabular = function (str, subTabularContent, subRes, posBegin, posEnd, i, level, bracket) {
|
|
27
36
|
var e_1, _a;
|
|
28
37
|
var _b;
|
|
29
|
-
var _c;
|
|
30
38
|
if (subRes === void 0) { subRes = []; }
|
|
31
39
|
if (posBegin === void 0) { posBegin = 0; }
|
|
32
40
|
if (i === void 0) { i = 0; }
|
|
33
41
|
if (level === void 0) { level = 0; }
|
|
34
42
|
var id = (0, common_1.generateUniqueId)();
|
|
35
43
|
var childIds = extractChildIds(subTabularContent);
|
|
36
|
-
var _loop_1 = function (childId) {
|
|
37
|
-
var cIdx = subTabular.findIndex(function (item) { return item.id === childId; });
|
|
38
|
-
if (cIdx >= 0) {
|
|
39
|
-
((_b = (_c = subTabular[cIdx]).parents) !== null && _b !== void 0 ? _b : (_c.parents = [])).push(id);
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
44
|
try {
|
|
43
45
|
for (var childIds_1 = tslib_1.__values(childIds), childIds_1_1 = childIds_1.next(); !childIds_1_1.done; childIds_1_1 = childIds_1.next()) {
|
|
44
46
|
var childId = childIds_1_1.value;
|
|
45
|
-
|
|
47
|
+
var child = subTabular.get(childId);
|
|
48
|
+
if (child) {
|
|
49
|
+
((_b = child.parents) !== null && _b !== void 0 ? _b : (child.parents = [])).push(id);
|
|
50
|
+
}
|
|
46
51
|
}
|
|
47
52
|
}
|
|
48
53
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
@@ -54,15 +59,15 @@ var pushSubTabular = function (str, subTabularContent, subRes, posBegin, posEnd,
|
|
|
54
59
|
}
|
|
55
60
|
var isBlockLocal = (0, common_1.detectLocalBlock)(subTabularContent);
|
|
56
61
|
var childBlock = childIds.some(function (cid) {
|
|
57
|
-
var
|
|
58
|
-
return
|
|
62
|
+
var child = subTabular.get(cid);
|
|
63
|
+
return child ? !!child.isBlock : false;
|
|
59
64
|
});
|
|
60
|
-
subTabular.
|
|
61
|
-
id: id,
|
|
65
|
+
subTabular.set(id, {
|
|
62
66
|
content: subTabularContent,
|
|
63
67
|
parsed: subRes,
|
|
64
68
|
children: childIds,
|
|
65
69
|
isBlock: isBlockLocal || childBlock,
|
|
70
|
+
bracket: bracket,
|
|
66
71
|
});
|
|
67
72
|
if (posBegin > 0) {
|
|
68
73
|
return str.slice(i, posBegin) + "<<".concat(id, ">>") + str.slice(posEnd + '\\end{tabular}'.length, str.length);
|
|
@@ -78,7 +83,7 @@ exports.pushSubTabular = pushSubTabular;
|
|
|
78
83
|
* (or other block-ish LaTeX), it may be newline-wrapped to keep downstream block parsing stable.
|
|
79
84
|
*/
|
|
80
85
|
var getSubTabular = function (sub, i, isCell, forLatex) {
|
|
81
|
-
var _a, _b
|
|
86
|
+
var _a, _b;
|
|
82
87
|
if (isCell === void 0) { isCell = true; }
|
|
83
88
|
if (forLatex === void 0) { forLatex = false; }
|
|
84
89
|
// first expand any extracted code-block placeholders (may add newlines)
|
|
@@ -87,10 +92,11 @@ var getSubTabular = function (sub, i, isCell, forLatex) {
|
|
|
87
92
|
if (isCell) {
|
|
88
93
|
sub = (0, common_1.getContent)(sub);
|
|
89
94
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
95
|
+
if (SUB_TABULAR_KEY_RE.test(sub)) {
|
|
96
|
+
var directEntry = subTabular.get(sub);
|
|
97
|
+
if ((_a = directEntry === null || directEntry === void 0 ? void 0 : directEntry.parsed) === null || _a === void 0 ? void 0 : _a.length) {
|
|
98
|
+
return directEntry.parsed;
|
|
99
|
+
}
|
|
94
100
|
}
|
|
95
101
|
// find placeholders
|
|
96
102
|
var cellM = (0, placeholder_utils_1.findPlaceholders)(sub, i);
|
|
@@ -100,25 +106,25 @@ var getSubTabular = function (sub, i, isCell, forLatex) {
|
|
|
100
106
|
var parents = null;
|
|
101
107
|
var cursor = 0;
|
|
102
108
|
var contentFragments = [];
|
|
103
|
-
var
|
|
109
|
+
var hasDiagbox = false;
|
|
110
|
+
for (var j = 0; j < cellM.length; j++) {
|
|
104
111
|
var placeholder = cellM[j];
|
|
105
112
|
var id = (0, placeholder_utils_1.placeholderToId)(placeholder);
|
|
106
113
|
if (!id) {
|
|
107
|
-
|
|
114
|
+
continue;
|
|
108
115
|
}
|
|
109
116
|
var start = sub.indexOf(placeholder, cursor);
|
|
110
117
|
if (start === -1) {
|
|
111
|
-
|
|
118
|
+
continue;
|
|
112
119
|
}
|
|
113
120
|
var end = start + placeholder.length;
|
|
114
121
|
// prefix text between placeholders
|
|
115
122
|
var prefix = sub.slice(cursor, start);
|
|
116
123
|
// Avoid trimming around list-begin tokens to keep `\begin{itemize}` detectable.
|
|
117
|
-
var
|
|
124
|
+
var entry = subTabular.get(id);
|
|
118
125
|
var isBlockRule = false;
|
|
119
|
-
if (
|
|
120
|
-
|
|
121
|
-
isBlockRule = !!subTabular[idx].isBlock || (0, common_1.detectLocalBlock)(prefix) || (0, common_1.detectLocalBlock)(content);
|
|
126
|
+
if (entry) {
|
|
127
|
+
isBlockRule = !!entry.isBlock || (0, common_1.detectLocalBlock)(prefix) || (0, common_1.detectLocalBlock)(entry.content);
|
|
122
128
|
if (!isBlockRule || prefix.trim() === "") {
|
|
123
129
|
prefix = prefix.trim();
|
|
124
130
|
}
|
|
@@ -130,15 +136,19 @@ var getSubTabular = function (sub, i, isCell, forLatex) {
|
|
|
130
136
|
}
|
|
131
137
|
}
|
|
132
138
|
var injected = "";
|
|
133
|
-
if (
|
|
134
|
-
parents =
|
|
135
|
-
injected = (_b =
|
|
139
|
+
if (entry) {
|
|
140
|
+
parents = entry.parents;
|
|
141
|
+
injected = (_b = entry.content) !== null && _b !== void 0 ? _b : "";
|
|
136
142
|
}
|
|
137
143
|
else {
|
|
138
|
-
|
|
144
|
+
var diagboxMatch = (0, sub_cell_1.findInDiagboxTable)(id);
|
|
145
|
+
if (diagboxMatch) {
|
|
146
|
+
hasDiagbox = true;
|
|
147
|
+
injected = diagboxMatch;
|
|
148
|
+
}
|
|
139
149
|
}
|
|
140
150
|
// decide wrapping using non-space neighbors around placeholder
|
|
141
|
-
var
|
|
151
|
+
var _c = (0, placeholder_utils_1.getInlineContextAroundSpan)(sub, start, end), beforeNonSpace = _c.beforeNonSpace, afterNonSpace = _c.afterNonSpace;
|
|
142
152
|
// If injected content starts a list env, wrap with newlines so block parsing stays stable
|
|
143
153
|
if (isBlockRule) {
|
|
144
154
|
injected = (0, placeholder_utils_1.wrapWithNewlinesIfInline)(injected, beforeNonSpace, afterNonSpace);
|
|
@@ -146,9 +156,6 @@ var getSubTabular = function (sub, i, isCell, forLatex) {
|
|
|
146
156
|
var st = prefix + injected;
|
|
147
157
|
contentFragments.push(st);
|
|
148
158
|
cursor = end;
|
|
149
|
-
};
|
|
150
|
-
for (var j = 0; j < cellM.length; j++) {
|
|
151
|
-
_loop_2(j);
|
|
152
159
|
}
|
|
153
160
|
if (cursor < sub.length) {
|
|
154
161
|
contentFragments.push(sub.slice(cursor));
|
|
@@ -162,6 +169,7 @@ var getSubTabular = function (sub, i, isCell, forLatex) {
|
|
|
162
169
|
type: forLatex ? "inline" : "subTabular",
|
|
163
170
|
parents: parents,
|
|
164
171
|
isSubTabular: true,
|
|
172
|
+
hasDiagbox: hasDiagbox,
|
|
165
173
|
},
|
|
166
174
|
];
|
|
167
175
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sub-tabular.js","sourceRoot":"","sources":["../../../../src/markdown/md-block-rule/begin-tabular/sub-tabular.ts"],"names":[],"mappings":";;;;AACA,
|
|
1
|
+
{"version":3,"file":"sub-tabular.js","sourceRoot":"","sources":["../../../../src/markdown/md-block-rule/begin-tabular/sub-tabular.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TAttrs, TTokenTabular } from './index';
|
|
2
|
-
import { TDecimal } from "./common";
|
|
2
|
+
import { TDecimal, TTdMeta } from "./common";
|
|
3
3
|
type TLines = {
|
|
4
4
|
left?: string;
|
|
5
5
|
right?: string;
|
|
@@ -11,12 +11,20 @@ type TAligns = {
|
|
|
11
11
|
v?: string;
|
|
12
12
|
w?: string;
|
|
13
13
|
};
|
|
14
|
+
export declare const clearColumnStyleCache: () => void;
|
|
15
|
+
export declare const getSharedTableOpenAttrs: (extraClass?: string, skipVisual?: boolean) => TAttrs[] | undefined;
|
|
16
|
+
export declare const getSharedTbodyOpenAttrs: (numCol: number) => TAttrs[];
|
|
17
|
+
export declare const getSharedTrOpenAttrs: (skipVisual?: boolean) => TAttrs[] | undefined;
|
|
18
|
+
export declare const SHARED_TD_CLOSE: TTokenTabular;
|
|
19
|
+
export declare const SHARED_TR_CLOSE: TTokenTabular;
|
|
20
|
+
export declare const SHARED_TABLE_CLOSE: TTokenTabular;
|
|
21
|
+
export declare const SHARED_TBODY_CLOSE: TTokenTabular;
|
|
14
22
|
export declare const setColumnLines: (aligns: TAligns | null, lines: TLines) => string[];
|
|
15
23
|
export declare const addStyle: (attrs: any[], style: string) => Array<TAttrs>;
|
|
16
24
|
export declare const addHLineIntoStyle: (attrs: any[], line?: string, pos?: string) => Array<TAttrs>;
|
|
17
|
-
export declare const AddTd: (content: string, aligns: TAligns | null, lines: TLines, space: string, decimal?: TDecimal | null) => {
|
|
25
|
+
export declare const AddTd: (content: string, aligns: TAligns | null, lines: TLines, space: string, decimal?: TDecimal | null, skipVisual?: boolean, meta?: TTdMeta) => {
|
|
18
26
|
res: Array<TTokenTabular>;
|
|
19
27
|
content: string;
|
|
20
28
|
};
|
|
21
|
-
export declare const AddTdSubTable: (subTable: Array<TTokenTabular>, aligns: TAligns, lines: TLines) => Array<TTokenTabular>;
|
|
29
|
+
export declare const AddTdSubTable: (subTable: Array<TTokenTabular>, aligns: TAligns, lines: TLines, skipVisual?: boolean, meta?: TTdMeta) => Array<TTokenTabular>;
|
|
22
30
|
export {};
|
|
@@ -1,59 +1,99 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AddTdSubTable = exports.AddTd = exports.addHLineIntoStyle = exports.addStyle = exports.setColumnLines = void 0;
|
|
3
|
+
exports.AddTdSubTable = exports.AddTd = exports.addHLineIntoStyle = exports.addStyle = exports.setColumnLines = exports.SHARED_TBODY_CLOSE = exports.SHARED_TABLE_CLOSE = exports.SHARED_TR_CLOSE = exports.SHARED_TD_CLOSE = exports.getSharedTrOpenAttrs = exports.getSharedTbodyOpenAttrs = exports.getSharedTableOpenAttrs = exports.clearColumnStyleCache = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
4
5
|
var utils_1 = require("../../utils");
|
|
5
6
|
var sub_code_1 = require("./sub-code");
|
|
6
7
|
var consts_1 = require("../../common/consts");
|
|
8
|
+
// Pre-interned border styles — only ~8 unique values per orientation,
|
|
9
|
+
// share one instance across every <td> instead of reallocating per call.
|
|
10
|
+
var V_LEFT_NONE = 'border-left: none !important; ';
|
|
11
|
+
var V_LEFT_SOLID = 'border-left-style: solid !important; border-left-width: 1px !important; ';
|
|
12
|
+
var V_LEFT_DOUBLE = 'border-left-style: double !important; border-left-width: 3px !important; ';
|
|
13
|
+
var V_LEFT_DASHED = 'border-left-style: dashed !important; border-left-width: 1px !important; ';
|
|
14
|
+
var V_RIGHT_NONE = 'border-right: none !important; ';
|
|
15
|
+
var V_RIGHT_SOLID = 'border-right-style: solid !important; border-right-width: 1px !important; ';
|
|
16
|
+
var V_RIGHT_DOUBLE = 'border-right-style: double !important; border-right-width: 3px !important; ';
|
|
17
|
+
var V_RIGHT_DASHED = 'border-right-style: dashed !important; border-right-width: 1px !important; ';
|
|
18
|
+
var H_TOP_NONE = 'border-top: none !important; ';
|
|
19
|
+
var H_TOP_SOLID = 'border-top-style: solid !important; border-top-width: 1px !important; ';
|
|
20
|
+
var H_TOP_DOUBLE = 'border-top-style: double !important; border-top-width: 3px !important; ';
|
|
21
|
+
var H_TOP_DASHED = 'border-top-style: dashed !important; border-top-width: 1px !important; ';
|
|
22
|
+
var H_BOTTOM_NONE = 'border-bottom: none !important; ';
|
|
23
|
+
var H_BOTTOM_SOLID = 'border-bottom-style: solid !important; border-bottom-width: 1px !important; ';
|
|
24
|
+
var H_BOTTOM_DOUBLE = 'border-bottom-style: double !important; border-bottom-width: 3px !important; ';
|
|
25
|
+
var H_BOTTOM_DASHED = 'border-bottom-style: dashed !important; border-bottom-width: 1px !important; ';
|
|
7
26
|
var verticalCellLine = function (line, pos) {
|
|
8
27
|
if (pos === void 0) { pos = 'left'; }
|
|
9
28
|
var lines = line.split(' ');
|
|
29
|
+
var isLeft = pos === 'left';
|
|
10
30
|
if (lines.length > 1) {
|
|
11
|
-
return
|
|
31
|
+
return isLeft ? V_LEFT_DOUBLE : V_RIGHT_DOUBLE;
|
|
12
32
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
default:
|
|
27
|
-
return "border-".concat(pos, "-style: solid !important; border-").concat(pos, "-width: 1px !important; ");
|
|
28
|
-
}
|
|
33
|
+
switch (lines[0]) {
|
|
34
|
+
case '':
|
|
35
|
+
return '';
|
|
36
|
+
case 'none':
|
|
37
|
+
return isLeft ? V_LEFT_NONE : V_RIGHT_NONE;
|
|
38
|
+
case 'solid':
|
|
39
|
+
return isLeft ? V_LEFT_SOLID : V_RIGHT_SOLID;
|
|
40
|
+
case 'double':
|
|
41
|
+
return isLeft ? V_LEFT_DOUBLE : V_RIGHT_DOUBLE;
|
|
42
|
+
case 'dashed':
|
|
43
|
+
return isLeft ? V_LEFT_DASHED : V_RIGHT_DASHED;
|
|
44
|
+
default:
|
|
45
|
+
return isLeft ? V_LEFT_SOLID : V_RIGHT_SOLID;
|
|
29
46
|
}
|
|
30
47
|
};
|
|
31
48
|
var horizontalCellLine = function (line, pos) {
|
|
32
49
|
if (pos === void 0) { pos = 'bottom'; }
|
|
33
50
|
var lines = line.split(' ');
|
|
51
|
+
var isTop = pos === 'top';
|
|
34
52
|
if (lines.length > 1) {
|
|
35
|
-
return
|
|
53
|
+
return isTop ? H_TOP_DOUBLE : H_BOTTOM_DOUBLE;
|
|
36
54
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
return "border-".concat(pos, ": none !important; ");
|
|
49
|
-
}
|
|
55
|
+
switch (lines[0]) {
|
|
56
|
+
case 'none':
|
|
57
|
+
return isTop ? H_TOP_NONE : H_BOTTOM_NONE;
|
|
58
|
+
case 'hline':
|
|
59
|
+
return isTop ? H_TOP_SOLID : H_BOTTOM_SOLID;
|
|
60
|
+
case 'hhline':
|
|
61
|
+
return isTop ? H_TOP_DOUBLE : H_BOTTOM_DOUBLE;
|
|
62
|
+
case 'hdashline':
|
|
63
|
+
return isTop ? H_TOP_DASHED : H_BOTTOM_DASHED;
|
|
64
|
+
default:
|
|
65
|
+
return isTop ? H_TOP_NONE : H_BOTTOM_NONE;
|
|
50
66
|
}
|
|
51
67
|
};
|
|
52
|
-
|
|
68
|
+
// Per-parse dedup caches for style strings and <td> attrs arrays. Shared attrs
|
|
69
|
+
// are read-only; mutators clone via `attrsSharedMarker` (see tokenAttrSet).
|
|
70
|
+
var columnStyleCache = new Map();
|
|
71
|
+
var cellAttrsCache = new Map();
|
|
72
|
+
var markAttrsShared = function (attrs) {
|
|
73
|
+
Object.defineProperty(attrs, consts_1.attrsSharedMarker, {
|
|
74
|
+
value: true, enumerable: false, configurable: true, writable: true,
|
|
75
|
+
});
|
|
76
|
+
return attrs;
|
|
77
|
+
};
|
|
78
|
+
var clearColumnStyleCache = function () {
|
|
79
|
+
columnStyleCache.clear();
|
|
80
|
+
cellAttrsCache.clear();
|
|
81
|
+
TABLE_OPEN_ATTRS_CACHE.clear();
|
|
82
|
+
TBODY_OPEN_ATTRS_CACHE.clear();
|
|
83
|
+
TR_OPEN_ATTRS_SHARED = null;
|
|
84
|
+
};
|
|
85
|
+
exports.clearColumnStyleCache = clearColumnStyleCache;
|
|
86
|
+
var internStyle = function (style) {
|
|
87
|
+
var cached = columnStyleCache.get(style);
|
|
88
|
+
if (cached !== undefined)
|
|
89
|
+
return cached;
|
|
90
|
+
columnStyleCache.set(style, style);
|
|
91
|
+
return style;
|
|
92
|
+
};
|
|
93
|
+
var composeCellStyle = function (aligns, lines, space) {
|
|
53
94
|
var _a = lines.left, left = _a === void 0 ? '' : _a, _b = lines.right, right = _b === void 0 ? '' : _b, _c = lines.bottom, bottom = _c === void 0 ? '' : _c, _d = lines.top, top = _d === void 0 ? '' : _d;
|
|
54
|
-
if (!aligns)
|
|
95
|
+
if (!aligns)
|
|
55
96
|
aligns = { h: '', v: '', w: '' };
|
|
56
|
-
}
|
|
57
97
|
var _e = aligns.h, h = _e === void 0 ? '' : _e, _f = aligns.v, v = _f === void 0 ? '' : _f, _g = aligns.w, w = _g === void 0 ? '' : _g;
|
|
58
98
|
var borderLeft = verticalCellLine(left, 'left');
|
|
59
99
|
var borderRight = verticalCellLine(right, 'right');
|
|
@@ -65,15 +105,110 @@ var setColumnLines = function (aligns, lines) {
|
|
|
65
105
|
var width = '';
|
|
66
106
|
if (w) {
|
|
67
107
|
width = (0, utils_1.getLatexTextWidth)(w, 1200);
|
|
68
|
-
if (!width)
|
|
108
|
+
if (!width)
|
|
69
109
|
width = "width: ".concat(w, "; ");
|
|
70
|
-
}
|
|
71
110
|
}
|
|
72
111
|
var vAlign = v ? "vertical-align: ".concat(v, "; ") : '';
|
|
73
|
-
|
|
112
|
+
var padding = space && space !== 'none' ? "padding-bottom: ".concat(space, " !important;") : '';
|
|
113
|
+
var style = textAlign + borderLeft + borderRight + borderBottom + borderTop + width + vAlign + padding;
|
|
114
|
+
return internStyle(style);
|
|
115
|
+
};
|
|
116
|
+
/** Read-only shared attrs keyed by (style, isEmpty). Mutators must clone. */
|
|
117
|
+
var getSharedCellAttrs = function (style, isEmpty, skipVisual) {
|
|
118
|
+
if (skipVisual === void 0) { skipVisual = false; }
|
|
119
|
+
// Style and `_empty` class are HTML/CSS-only. XLSX reads style too but
|
|
120
|
+
// doesn't set skipVisual, so that path is unaffected.
|
|
121
|
+
if (skipVisual)
|
|
122
|
+
return undefined;
|
|
123
|
+
var key = isEmpty ? style + '\0E' : style;
|
|
124
|
+
var cached = cellAttrsCache.get(key);
|
|
125
|
+
if (cached)
|
|
126
|
+
return cached;
|
|
127
|
+
var attrs = isEmpty
|
|
128
|
+
? [['style', style], ['class', '_empty']]
|
|
129
|
+
: [['style', style]];
|
|
130
|
+
markAttrsShared(attrs);
|
|
131
|
+
cellAttrsCache.set(key, attrs);
|
|
132
|
+
return attrs;
|
|
133
|
+
};
|
|
134
|
+
// Shared attrs for structural tabular tokens — same values repeat thousands
|
|
135
|
+
// of times per doc.
|
|
136
|
+
var TABLE_OPEN_ATTRS_CACHE = new Map();
|
|
137
|
+
var TBODY_OPEN_ATTRS_CACHE = new Map();
|
|
138
|
+
var TR_OPEN_ATTRS_SHARED = null;
|
|
139
|
+
var TR_OPEN_STYLE = 'border-top: none !important; border-bottom: none !important;';
|
|
140
|
+
var getSharedTableOpenAttrs = function (extraClass, skipVisual) {
|
|
141
|
+
if (skipVisual === void 0) { skipVisual = false; }
|
|
142
|
+
// class='tabular' is HTML-only (used for table detection by DOCX/PPTX builders).
|
|
143
|
+
// Under skipVisual, keep only data-type (non-visual subtable marker).
|
|
144
|
+
if (skipVisual && !extraClass)
|
|
145
|
+
return undefined;
|
|
146
|
+
var key = (skipVisual ? 'v:' : '') + (extraClass || '');
|
|
147
|
+
var cached = TABLE_OPEN_ATTRS_CACHE.get(key);
|
|
148
|
+
if (cached)
|
|
149
|
+
return cached;
|
|
150
|
+
var attrs = skipVisual
|
|
151
|
+
? [['data-type', extraClass]]
|
|
152
|
+
: (extraClass
|
|
153
|
+
? [['class', 'tabular'], ['data-type', extraClass]]
|
|
154
|
+
: [['class', 'tabular']]);
|
|
155
|
+
markAttrsShared(attrs);
|
|
156
|
+
TABLE_OPEN_ATTRS_CACHE.set(key, attrs);
|
|
157
|
+
return attrs;
|
|
158
|
+
};
|
|
159
|
+
exports.getSharedTableOpenAttrs = getSharedTableOpenAttrs;
|
|
160
|
+
var getSharedTbodyOpenAttrs = function (numCol) {
|
|
161
|
+
var key = numCol.toString();
|
|
162
|
+
var cached = TBODY_OPEN_ATTRS_CACHE.get(key);
|
|
163
|
+
if (cached)
|
|
164
|
+
return cached;
|
|
165
|
+
var attrs = [['data_num_col', key]];
|
|
166
|
+
markAttrsShared(attrs);
|
|
167
|
+
TBODY_OPEN_ATTRS_CACHE.set(key, attrs);
|
|
168
|
+
return attrs;
|
|
169
|
+
};
|
|
170
|
+
exports.getSharedTbodyOpenAttrs = getSharedTbodyOpenAttrs;
|
|
171
|
+
var getSharedTrOpenAttrs = function (skipVisual) {
|
|
172
|
+
if (skipVisual === void 0) { skipVisual = false; }
|
|
173
|
+
// tr_open.style is the HTML border-reset — no MD/LaTeX/XLSX consumer.
|
|
174
|
+
if (skipVisual)
|
|
175
|
+
return undefined;
|
|
176
|
+
if (TR_OPEN_ATTRS_SHARED)
|
|
177
|
+
return TR_OPEN_ATTRS_SHARED;
|
|
178
|
+
var attrs = [['style', TR_OPEN_STYLE]];
|
|
179
|
+
markAttrsShared(attrs);
|
|
180
|
+
TR_OPEN_ATTRS_SHARED = attrs;
|
|
181
|
+
return attrs;
|
|
182
|
+
};
|
|
183
|
+
exports.getSharedTrOpenAttrs = getSharedTrOpenAttrs;
|
|
184
|
+
// Frozen shared close-tokens. SHARED_TBODY_CLOSE only when !forLatex (forLatex carries per-table `latex` payload).
|
|
185
|
+
exports.SHARED_TD_CLOSE = Object.freeze({
|
|
186
|
+
token: 'td_close', type: 'td_close', tag: 'td', n: -1,
|
|
187
|
+
});
|
|
188
|
+
exports.SHARED_TR_CLOSE = Object.freeze({
|
|
189
|
+
token: 'tr_close', type: 'tr_close', tag: 'tr', n: -1,
|
|
190
|
+
});
|
|
191
|
+
exports.SHARED_TABLE_CLOSE = Object.freeze({
|
|
192
|
+
token: 'table_close', type: 'table_close', tag: 'table', n: -1,
|
|
193
|
+
});
|
|
194
|
+
exports.SHARED_TBODY_CLOSE = Object.freeze({
|
|
195
|
+
token: 'tbody_close', type: 'tbody_close', tag: 'tbody', n: -1,
|
|
196
|
+
});
|
|
197
|
+
// Legacy entry point: callers that build their own attrs array (AddTdSubTable,
|
|
198
|
+
// multi-column paths) still use this — hot <td> path uses getSharedCellAttrs.
|
|
199
|
+
var setColumnLines = function (aligns, lines) {
|
|
200
|
+
var style = composeCellStyle(aligns, lines, '');
|
|
201
|
+
return ['style', style];
|
|
74
202
|
};
|
|
75
203
|
exports.setColumnLines = setColumnLines;
|
|
76
204
|
var addStyle = function (attrs, style) {
|
|
205
|
+
// Clone-on-write: shared attrs (from the per-parse cache) are read-only.
|
|
206
|
+
// Clone the outer array AND each inner [name, value] tuple, because
|
|
207
|
+
// `attrs[i][1] += style` below would otherwise mutate the cached tuple.
|
|
208
|
+
// Array.isArray guard: legacy callers may pass mixed-shape attrs; preserve non-tuple items as-is.
|
|
209
|
+
if (attrs && attrs[consts_1.attrsSharedMarker]) {
|
|
210
|
+
attrs = attrs.map(function (pair) { return Array.isArray(pair) ? [pair[0], pair[1]] : pair; });
|
|
211
|
+
}
|
|
77
212
|
var index = attrs.findIndex(function (item) { return item[0] === 'style'; });
|
|
78
213
|
if (index >= 0) {
|
|
79
214
|
attrs[index][1] += style;
|
|
@@ -91,21 +226,18 @@ var addHLineIntoStyle = function (attrs, line, pos) {
|
|
|
91
226
|
return (0, exports.addStyle)(attrs, style);
|
|
92
227
|
};
|
|
93
228
|
exports.addHLineIntoStyle = addHLineIntoStyle;
|
|
94
|
-
var AddTd = function (content, aligns, lines, space, decimal) {
|
|
229
|
+
var AddTd = function (content, aligns, lines, space, decimal, skipVisual, meta) {
|
|
95
230
|
if (decimal === void 0) { decimal = null; }
|
|
231
|
+
if (skipVisual === void 0) { skipVisual = false; }
|
|
96
232
|
var res = [];
|
|
97
|
-
var
|
|
98
|
-
var slyleLines = (0, exports.setColumnLines)(aligns, lines);
|
|
99
|
-
attrs.push(slyleLines);
|
|
100
|
-
if (space && space !== 'none') {
|
|
101
|
-
(0, exports.addStyle)(attrs, "padding-bottom: ".concat(space, " !important;"));
|
|
102
|
-
}
|
|
103
|
-
if (!content) {
|
|
104
|
-
attrs.push(['class', '_empty']);
|
|
105
|
-
}
|
|
233
|
+
var style = skipVisual ? '' : composeCellStyle(aligns, lines, space);
|
|
106
234
|
content = content.replace(consts_1.preserveNewlineUnlessDoubleAngleUuidRegex, ' ');
|
|
107
235
|
content = (0, sub_code_1.getExtractedCodeBlockContent)(content, 0);
|
|
108
|
-
|
|
236
|
+
var attrs = getSharedCellAttrs(style, !content, skipVisual);
|
|
237
|
+
var tdOpen = { token: 'td_open', type: 'td_open', tag: 'td', n: 1, attrs: attrs };
|
|
238
|
+
if (meta)
|
|
239
|
+
tdOpen.meta = meta;
|
|
240
|
+
res.push(tdOpen);
|
|
109
241
|
if (content) {
|
|
110
242
|
if (decimal && parseFloat(content)) {
|
|
111
243
|
var arr = content.split('.');
|
|
@@ -132,18 +264,36 @@ var AddTd = function (content, aligns, lines, space, decimal) {
|
|
|
132
264
|
res.push({ token: 'inline', type: 'inline', tag: '', n: 0, content: content });
|
|
133
265
|
}
|
|
134
266
|
}
|
|
135
|
-
res.push(
|
|
267
|
+
res.push(exports.SHARED_TD_CLOSE);
|
|
136
268
|
return { res: res, content: content };
|
|
137
269
|
};
|
|
138
270
|
exports.AddTd = AddTd;
|
|
139
|
-
var AddTdSubTable = function (subTable, aligns, lines) {
|
|
271
|
+
var AddTdSubTable = function (subTable, aligns, lines, skipVisual, meta) {
|
|
272
|
+
var e_1, _a;
|
|
273
|
+
if (skipVisual === void 0) { skipVisual = false; }
|
|
140
274
|
var res = [];
|
|
141
|
-
var attrs
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
275
|
+
var attrs;
|
|
276
|
+
if (!skipVisual) {
|
|
277
|
+
attrs = [(0, exports.setColumnLines)(aligns, lines)];
|
|
278
|
+
}
|
|
279
|
+
var tdOpen = { token: 'td_open', type: 'td_open', tag: 'td', n: 1, attrs: attrs };
|
|
280
|
+
if (meta)
|
|
281
|
+
tdOpen.meta = meta;
|
|
282
|
+
res.push(tdOpen);
|
|
283
|
+
try {
|
|
284
|
+
for (var subTable_1 = tslib_1.__values(subTable), subTable_1_1 = subTable_1.next(); !subTable_1_1.done; subTable_1_1 = subTable_1.next()) {
|
|
285
|
+
var t = subTable_1_1.value;
|
|
286
|
+
res.push(t);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
290
|
+
finally {
|
|
291
|
+
try {
|
|
292
|
+
if (subTable_1_1 && !subTable_1_1.done && (_a = subTable_1.return)) _a.call(subTable_1);
|
|
293
|
+
}
|
|
294
|
+
finally { if (e_1) throw e_1.error; }
|
|
295
|
+
}
|
|
296
|
+
res.push(exports.SHARED_TD_CLOSE);
|
|
147
297
|
return res;
|
|
148
298
|
};
|
|
149
299
|
exports.AddTdSubTable = AddTdSubTable;
|