mathpix-markdown-it 2.0.29 → 2.0.30
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/es5/bundle.js +2 -2
- package/es5/index.js +2 -2
- package/lib/markdown/common/consts.d.ts +28 -0
- package/lib/markdown/common/consts.js +46 -2
- package/lib/markdown/common/consts.js.map +1 -1
- package/lib/markdown/md-block-rule/helper.d.ts +16 -1
- package/lib/markdown/md-block-rule/helper.js +93 -16
- package/lib/markdown/md-block-rule/helper.js.map +1 -1
- package/lib/markdown/md-block-rule/renewcommand.js +1 -1
- package/lib/markdown/md-block-rule/renewcommand.js.map +1 -1
- package/lib/markdown/md-inline-rule/setcounter-section.js +1 -2
- package/lib/markdown/md-inline-rule/setcounter-section.js.map +1 -1
- package/lib/markdown/md-latex-lists-env/index.d.ts +16 -0
- package/lib/markdown/md-latex-lists-env/index.js +55 -0
- package/lib/markdown/md-latex-lists-env/index.js.map +1 -0
- package/lib/markdown/md-latex-lists-env/latex-list-common.d.ts +31 -0
- package/lib/markdown/md-latex-lists-env/latex-list-common.js +78 -0
- package/lib/markdown/md-latex-lists-env/latex-list-common.js.map +1 -0
- package/lib/markdown/md-latex-lists-env/latex-list-env-block.d.ts +13 -0
- package/lib/markdown/md-latex-lists-env/latex-list-env-block.js +295 -0
- package/lib/markdown/md-latex-lists-env/latex-list-env-block.js.map +1 -0
- package/lib/markdown/md-latex-lists-env/latex-list-env-inline.d.ts +59 -0
- package/lib/markdown/md-latex-lists-env/latex-list-env-inline.js +219 -0
- package/lib/markdown/md-latex-lists-env/latex-list-env-inline.js.map +1 -0
- package/lib/markdown/md-latex-lists-env/latex-list-items.d.ts +75 -0
- package/lib/markdown/md-latex-lists-env/latex-list-items.js +235 -0
- package/lib/markdown/md-latex-lists-env/latex-list-items.js.map +1 -0
- package/lib/markdown/md-latex-lists-env/latex-list-tokens.d.ts +74 -0
- package/lib/markdown/md-latex-lists-env/latex-list-tokens.js +290 -0
- package/lib/markdown/md-latex-lists-env/latex-list-tokens.js.map +1 -0
- package/lib/markdown/md-latex-lists-env/latex-list-types.d.ts +52 -0
- package/lib/markdown/md-latex-lists-env/latex-list-types.js +13 -0
- package/lib/markdown/md-latex-lists-env/latex-list-types.js.map +1 -0
- package/lib/markdown/md-latex-lists-env/list-state.d.ts +48 -0
- package/lib/markdown/md-latex-lists-env/list-state.js +86 -0
- package/lib/markdown/md-latex-lists-env/list-state.js.map +1 -0
- package/lib/markdown/md-latex-lists-env/re-level.d.ts +62 -0
- package/lib/markdown/md-latex-lists-env/re-level.js +172 -0
- package/lib/markdown/md-latex-lists-env/re-level.js.map +1 -0
- package/lib/markdown/md-latex-lists-env/render-latex-list-env.d.ts +55 -0
- package/lib/markdown/md-latex-lists-env/render-latex-list-env.js +556 -0
- package/lib/markdown/md-latex-lists-env/render-latex-list-env.js.map +1 -0
- package/lib/markdown/md-theorem/block-rule.js +11 -1
- package/lib/markdown/md-theorem/block-rule.js.map +1 -1
- package/lib/markdown/md-theorem/inline-rule.js +1 -2
- package/lib/markdown/md-theorem/inline-rule.js.map +1 -1
- package/lib/markdown/mdPluginConfigured.d.ts +2 -1
- package/lib/markdown/mdPluginConfigured.js +2 -2
- package/lib/markdown/mdPluginConfigured.js.map +1 -1
- package/lib/markdown/mdPluginText.js +2 -0
- package/lib/markdown/mdPluginText.js.map +1 -1
- package/lib/styles/styles-lists.d.ts +1 -1
- package/lib/styles/styles-lists.js +1 -1
- package/lib/styles/styles-lists.js.map +1 -1
- package/package.json +1 -1
- package/lib/markdown/md-block-rule/lists/index.d.ts +0 -9
- package/lib/markdown/md-block-rule/lists/index.js +0 -637
- package/lib/markdown/md-block-rule/lists/index.js.map +0 -1
- package/lib/markdown/md-block-rule/lists/re-level.d.ts +0 -30
- package/lib/markdown/md-block-rule/lists/re-level.js +0 -162
- package/lib/markdown/md-block-rule/lists/re-level.js.map +0 -1
- package/lib/markdown/md-inline-rule/lists.d.ts +0 -5
- package/lib/markdown/md-inline-rule/lists.js +0 -174
- package/lib/markdown/md-inline-rule/lists.js.map +0 -1
- package/lib/markdown/md-renderer-rules/render-lists.d.ts +0 -7
- package/lib/markdown/md-renderer-rules/render-lists.js +0 -339
- package/lib/markdown/md-renderer-rules/render-lists.js.map +0 -1
- package/lib/markdown/mdPluginLists.js +0 -60
- package/lib/markdown/mdPluginLists.js.map +0 -1
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.processListChildToken = exports.setTokenCloseList = exports.ListOpen = exports.setTokenOpenList = exports.setTokenListItemOpenBlock = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var list_state_1 = require("./list-state");
|
|
6
|
+
var latex_list_types_1 = require("./latex-list-types");
|
|
7
|
+
var re_level_1 = require("./re-level");
|
|
8
|
+
var latex_list_common_1 = require("./latex-list-common");
|
|
9
|
+
var consts_1 = require("../common/consts");
|
|
10
|
+
/**
|
|
11
|
+
* Creates an opening list-item token (<li>) for block-style LaTeX list items.
|
|
12
|
+
* Handles marker parsing, enumeration start values, nesting metadata,
|
|
13
|
+
* and updates the internal list-level state (item counters).
|
|
14
|
+
*
|
|
15
|
+
* @param state - Markdown-It state object
|
|
16
|
+
* @param startLine - Starting line number of the list item
|
|
17
|
+
* @param endLine - Ending line number of the list item
|
|
18
|
+
* @param marker - Optional raw \item[...] marker string
|
|
19
|
+
* @param li - Optional enumeration start value (e.g., \setcounter)
|
|
20
|
+
* @param itemizeLevelTokens - Pre-parsed bullet tokens for itemize levels
|
|
21
|
+
* @param enumerateLevelTypes - Current enumerate list-style types
|
|
22
|
+
* @param itemizeLevelContents - Raw bullet text for each itemize level
|
|
23
|
+
*/
|
|
24
|
+
var setTokenListItemOpenBlock = function (state, startLine, endLine, marker, li, itemizeLevelTokens, enumerateLevelTypes, itemizeLevelContents) {
|
|
25
|
+
var _a;
|
|
26
|
+
// Check current list depth and close previous item if needed
|
|
27
|
+
(0, latex_list_common_1.closeOpenListItemIfNeeded)(state);
|
|
28
|
+
// Create opening <li> token
|
|
29
|
+
var token = state.push('latex_list_item_open', 'li', 1);
|
|
30
|
+
(0, list_state_1.incrementItemCount)();
|
|
31
|
+
token.meta = { isBlock: true };
|
|
32
|
+
token.parentType = ((_a = state.types) === null || _a === void 0 ? void 0 : _a.length) > 0
|
|
33
|
+
? state.types[state.types.length - 1]
|
|
34
|
+
: '';
|
|
35
|
+
// Parse marker (e.g., \item[abc])
|
|
36
|
+
if (marker !== undefined) {
|
|
37
|
+
token.marker = marker.trim();
|
|
38
|
+
var parsedMarkerTokens = [];
|
|
39
|
+
state.md.inline.parse(marker, state.md, state.env, parsedMarkerTokens);
|
|
40
|
+
token.markerTokens = parsedMarkerTokens;
|
|
41
|
+
}
|
|
42
|
+
// Apply enumeration start value
|
|
43
|
+
if ((li === null || li === void 0 ? void 0 : li.value) !== undefined) {
|
|
44
|
+
token.startValue = li.value;
|
|
45
|
+
token.attrSet("value", String(li.value));
|
|
46
|
+
li = null;
|
|
47
|
+
}
|
|
48
|
+
// Parent metadata
|
|
49
|
+
token.parentStart = state.startLine;
|
|
50
|
+
token.map = [startLine, endLine];
|
|
51
|
+
token.prentLevel = state.prentLevel;
|
|
52
|
+
// Assign list-type metadata
|
|
53
|
+
token.itemizeLevel = itemizeLevelTokens;
|
|
54
|
+
token.itemizeLevelContents = itemizeLevelContents;
|
|
55
|
+
token.enumerateLevel = enumerateLevelTypes;
|
|
56
|
+
};
|
|
57
|
+
exports.setTokenListItemOpenBlock = setTokenListItemOpenBlock;
|
|
58
|
+
/**
|
|
59
|
+
* Creates an opening token for LaTeX list environments (\begin{itemize}, \begin{enumerate}).
|
|
60
|
+
* Updates list nesting state, parent tracking, and attaches itemize/enumerate
|
|
61
|
+
* styling metadata used for rendering markers and list formatting.
|
|
62
|
+
*
|
|
63
|
+
* @param state - Markdown-It processing state
|
|
64
|
+
* @param startLine - Line number where the list begins
|
|
65
|
+
* @param endLine - Line number where the list ends
|
|
66
|
+
* @param type - List type ("itemize" or "enumerate")
|
|
67
|
+
* @param itemizeLevelTokens - Pre-parsed itemize bullet tokens
|
|
68
|
+
* @param enumerateLevelTypes - List-style types for enumerate levels
|
|
69
|
+
* @param itemizeLevelContents - Raw bullet text for each itemize level
|
|
70
|
+
*/
|
|
71
|
+
var setTokenOpenList = function (state, startLine, endLine, type, itemizeLevelTokens, enumerateLevelTypes, itemizeLevelContents) {
|
|
72
|
+
// Determine token type and HTML tag
|
|
73
|
+
var _a = (0, latex_list_common_1.getListTokenTypes)(type), openType = _a.openType, htmlTag = _a.htmlTag;
|
|
74
|
+
// itemize_list_open or enumerate_list_open
|
|
75
|
+
var token = state.push(openType, htmlTag, 1);
|
|
76
|
+
(0, latex_list_common_1.applyListOpenState)(state, type, token);
|
|
77
|
+
// Attach styling metadata
|
|
78
|
+
token.itemizeLevel = itemizeLevelTokens;
|
|
79
|
+
token.itemizeLevelContents = itemizeLevelContents;
|
|
80
|
+
token.enumerateLevel = enumerateLevelTypes;
|
|
81
|
+
token.prentLevel = state.prentLevel;
|
|
82
|
+
// Map source lines
|
|
83
|
+
if (startLine > -1 && endLine > -1) {
|
|
84
|
+
state.startLine = startLine;
|
|
85
|
+
token.map = [startLine, endLine];
|
|
86
|
+
}
|
|
87
|
+
return token;
|
|
88
|
+
};
|
|
89
|
+
exports.setTokenOpenList = setTokenOpenList;
|
|
90
|
+
/**
|
|
91
|
+
* Parses a LaTeX list environment beginning on the current line
|
|
92
|
+
* (e.g., \begin{itemize} or \begin{enumerate}), opens the
|
|
93
|
+
* corresponding list token, and processes any inline content
|
|
94
|
+
* that appears on the same line after \begin{...}.
|
|
95
|
+
*
|
|
96
|
+
* Returns:
|
|
97
|
+
* - iOpen: how many list environments were opened
|
|
98
|
+
* - tokenStart: the created *_list_open token, if any
|
|
99
|
+
* - li: optional enumerate start value extracted via \setcounter
|
|
100
|
+
*/
|
|
101
|
+
var ListOpen = function (state, startLine, lineText, itemizeLevelTokens, enumerateLevelTypes, itemizeLevelContents) {
|
|
102
|
+
var e_1, _a;
|
|
103
|
+
var tokenStart = null;
|
|
104
|
+
var iOpen = 0;
|
|
105
|
+
var padding = 0;
|
|
106
|
+
var li = null;
|
|
107
|
+
// Line must start with '\' to be a LaTeX command
|
|
108
|
+
if (lineText.charCodeAt(0) !== 0x5c /* '\' */) {
|
|
109
|
+
return { iOpen: iOpen, tokenStart: tokenStart, li: li };
|
|
110
|
+
}
|
|
111
|
+
var match = lineText.match(consts_1.BEGIN_LIST_ENV_RE);
|
|
112
|
+
// If we are not already inside a list and no \begin{itemize/enumerate} found
|
|
113
|
+
if (!match && state.parentType !== "itemize" && state.parentType !== "enumerate") {
|
|
114
|
+
return { iOpen: iOpen, tokenStart: tokenStart, li: li };
|
|
115
|
+
}
|
|
116
|
+
// Ensure itemize level tokens are prepared
|
|
117
|
+
(0, re_level_1.SetItemizeLevelTokens)(state);
|
|
118
|
+
if (!match) {
|
|
119
|
+
// Already in a list, but no new begin here — nothing more to do
|
|
120
|
+
return { iOpen: iOpen, tokenStart: tokenStart, li: li };
|
|
121
|
+
}
|
|
122
|
+
var strAfter = lineText.slice(match.index + match[0].length);
|
|
123
|
+
var rawType = match[1].trim();
|
|
124
|
+
if (!(0, latex_list_types_1.isListType)(rawType)) {
|
|
125
|
+
return { iOpen: iOpen, tokenStart: tokenStart, li: li };
|
|
126
|
+
}
|
|
127
|
+
var listType = rawType;
|
|
128
|
+
tokenStart = (0, exports.setTokenOpenList)(state, startLine, startLine + 1, listType, itemizeLevelTokens, enumerateLevelTypes, itemizeLevelContents);
|
|
129
|
+
iOpen++;
|
|
130
|
+
// Process inline content after \begin{...}
|
|
131
|
+
if (strAfter && strAfter.trim().length > 0) {
|
|
132
|
+
var children = [];
|
|
133
|
+
state.env.parentType = state.parentType;
|
|
134
|
+
state.env.isBlock = true;
|
|
135
|
+
state.env.prentLevel = state.prentLevel;
|
|
136
|
+
state.md.inline.parse(strAfter, state.md, state.env, children);
|
|
137
|
+
// Context shared across child token processing
|
|
138
|
+
var ctx = {
|
|
139
|
+
li: li,
|
|
140
|
+
padding: padding,
|
|
141
|
+
iOpen: iOpen,
|
|
142
|
+
itemizeLevelTokens: itemizeLevelTokens,
|
|
143
|
+
enumerateLevelTypes: enumerateLevelTypes,
|
|
144
|
+
itemizeLevelContents: itemizeLevelContents
|
|
145
|
+
};
|
|
146
|
+
try {
|
|
147
|
+
// Process each inline child token
|
|
148
|
+
for (var children_1 = tslib_1.__values(children), children_1_1 = children_1.next(); !children_1_1.done; children_1_1 = children_1.next()) {
|
|
149
|
+
var child = children_1_1.value;
|
|
150
|
+
(0, exports.processListChildToken)(state, {
|
|
151
|
+
startLine: startLine,
|
|
152
|
+
endLine: startLine,
|
|
153
|
+
content: ''
|
|
154
|
+
}, child, ctx);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
158
|
+
finally {
|
|
159
|
+
try {
|
|
160
|
+
if (children_1_1 && !children_1_1.done && (_a = children_1.return)) _a.call(children_1);
|
|
161
|
+
}
|
|
162
|
+
finally { if (e_1) throw e_1.error; }
|
|
163
|
+
}
|
|
164
|
+
// Update context after processing children
|
|
165
|
+
li = ctx.li;
|
|
166
|
+
padding = ctx.padding;
|
|
167
|
+
iOpen = ctx.iOpen;
|
|
168
|
+
state.env.isBlock = false;
|
|
169
|
+
}
|
|
170
|
+
return { iOpen: iOpen, tokenStart: tokenStart, li: li };
|
|
171
|
+
};
|
|
172
|
+
exports.ListOpen = ListOpen;
|
|
173
|
+
/**
|
|
174
|
+
* Closes the current LaTeX list environment (\end{itemize} / \end{enumerate}).
|
|
175
|
+
*
|
|
176
|
+
* - Closes any still-open list item if needed
|
|
177
|
+
* - Emits the appropriate *_list_close token
|
|
178
|
+
* - Updates list nesting levels and internal list-level state
|
|
179
|
+
*
|
|
180
|
+
* @param state - Markdown-It processing state
|
|
181
|
+
* @param startLine - Line where the list block starts
|
|
182
|
+
* @param endLine - Line where the list block ends
|
|
183
|
+
* @returns The created closing list token
|
|
184
|
+
*/
|
|
185
|
+
var setTokenCloseList = function (state, startLine, endLine) {
|
|
186
|
+
var _a;
|
|
187
|
+
// Close an open <li> if there is one
|
|
188
|
+
(0, latex_list_common_1.closeOpenListItemIfNeeded)(state);
|
|
189
|
+
var currentListType = (_a = state.types) === null || _a === void 0 ? void 0 : _a[state.types.length - 1];
|
|
190
|
+
var isItemize = currentListType === latex_list_types_1.ListType.itemize;
|
|
191
|
+
var _b = (0, latex_list_common_1.getListTokenTypes)(isItemize ? latex_list_types_1.ListType.itemize : latex_list_types_1.ListType.enumerate), closeType = _b.closeType, htmlTag = _b.htmlTag;
|
|
192
|
+
// itemize_list_close or enumerate_list_close
|
|
193
|
+
var token = state.push(closeType, htmlTag, -1);
|
|
194
|
+
if (startLine > -1 && endLine > -1) {
|
|
195
|
+
token.map = [startLine, endLine];
|
|
196
|
+
}
|
|
197
|
+
(0, latex_list_common_1.applyListCloseState)(state, token);
|
|
198
|
+
if (state.types && state.types.length > 0) {
|
|
199
|
+
state.types.pop();
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
exports.setTokenCloseList = setTokenCloseList;
|
|
203
|
+
/**
|
|
204
|
+
* Processes a single inline token inside a LaTeX list item.
|
|
205
|
+
*
|
|
206
|
+
* This function:
|
|
207
|
+
* - Applies \setcounter values to list items (\item)
|
|
208
|
+
* - Handles custom list markers and computes marker padding
|
|
209
|
+
* - Updates parent metadata (type, nesting level, line map)
|
|
210
|
+
* - Adjusts list nesting state for itemize/enumerate environments
|
|
211
|
+
* - Attaches itemize/enumerate level styling metadata
|
|
212
|
+
*
|
|
213
|
+
* @param state - The Markdown-It state object
|
|
214
|
+
* @param item - Parsed list item metadata (start/end line and content)
|
|
215
|
+
* @param child - Inline token to process
|
|
216
|
+
* @param ctx - Shared context for updating list state (padding, counters, levels)
|
|
217
|
+
*/
|
|
218
|
+
var processListChildToken = function (state, item, child, ctx) {
|
|
219
|
+
var _a, _b, _c;
|
|
220
|
+
// 1. Handle \setcounter
|
|
221
|
+
if (child.type === 'setcounter') {
|
|
222
|
+
ctx.li = { value: child.content };
|
|
223
|
+
if (((_a = state.md.options) === null || _a === void 0 ? void 0 : _a.forLatex) && child.latex) {
|
|
224
|
+
var token_1 = state.push("setcounter", "", 0);
|
|
225
|
+
token_1.latex = child.latex;
|
|
226
|
+
}
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
// 2. Push token to state
|
|
230
|
+
state.tokens.push(child);
|
|
231
|
+
var token = child;
|
|
232
|
+
// 3. Apply enumerate start value for list item
|
|
233
|
+
if (token.type === 'latex_list_item_open' && ((_b = ctx.li) === null || _b === void 0 ? void 0 : _b.hasOwnProperty('value'))) {
|
|
234
|
+
token.startValue = ctx.li.value;
|
|
235
|
+
token.attrSet('value', ctx.li.value.toString());
|
|
236
|
+
ctx.li = null;
|
|
237
|
+
}
|
|
238
|
+
// 4. Handle custom marker and compute padding
|
|
239
|
+
if (token.hasOwnProperty('marker')) {
|
|
240
|
+
var paddingChild = 0;
|
|
241
|
+
var markerTokens = (_c = token.markerTokens) !== null && _c !== void 0 ? _c : [];
|
|
242
|
+
for (var i = 0; i < markerTokens.length; i++) {
|
|
243
|
+
if (markerTokens[i].type === 'text') {
|
|
244
|
+
paddingChild += markerTokens[i].content.length;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
if (paddingChild > ctx.padding) {
|
|
248
|
+
ctx.padding = paddingChild;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// 5. Parent metadata
|
|
252
|
+
token.parentType = state.types && state.types.length > 0
|
|
253
|
+
? state.types[state.types.length - 1]
|
|
254
|
+
: '';
|
|
255
|
+
token.parentStart = state.startLine;
|
|
256
|
+
token.map = [item.startLine, item.endLine + 1];
|
|
257
|
+
if (token.hasOwnProperty('inlinePos')) {
|
|
258
|
+
token.bMarks = token.inlinePos.start_content;
|
|
259
|
+
}
|
|
260
|
+
// 6. Logical nesting level for this token
|
|
261
|
+
token.prentLevel = token.type === "latex_list_item_open"
|
|
262
|
+
? state.prentLevel + 1
|
|
263
|
+
: state.prentLevel;
|
|
264
|
+
// 7. Open / close list environments
|
|
265
|
+
if (token.type === 'enumerate_list_open' || token.type === 'itemize_list_open') {
|
|
266
|
+
state.prentLevel++;
|
|
267
|
+
if (token.type === 'itemize_list_open') {
|
|
268
|
+
state.types.push('itemize');
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
state.types.push('enumerate');
|
|
272
|
+
}
|
|
273
|
+
ctx.iOpen++;
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
if (token.type === 'enumerate_list_close' || token.type === 'itemize_list_close') {
|
|
277
|
+
state.prentLevel--;
|
|
278
|
+
if (state.types && state.types.length > 0) {
|
|
279
|
+
state.types.pop();
|
|
280
|
+
}
|
|
281
|
+
ctx.iOpen--;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
// 8. Attach list-level styling metadata
|
|
285
|
+
token.itemizeLevel = ctx.itemizeLevelTokens;
|
|
286
|
+
token.itemizeLevelContents = ctx.itemizeLevelContents;
|
|
287
|
+
token.enumerateLevel = ctx.enumerateLevelTypes;
|
|
288
|
+
};
|
|
289
|
+
exports.processListChildToken = processListChildToken;
|
|
290
|
+
//# sourceMappingURL=latex-list-tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"latex-list-tokens.js","sourceRoot":"","sources":["../../../src/markdown/md-latex-lists-env/latex-list-tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type Token from 'markdown-it/lib/token';
|
|
2
|
+
export declare enum ListType {
|
|
3
|
+
itemize = "itemize",
|
|
4
|
+
enumerate = "enumerate"
|
|
5
|
+
}
|
|
6
|
+
export interface ListInlineContext {
|
|
7
|
+
li: {
|
|
8
|
+
value: any;
|
|
9
|
+
} | null;
|
|
10
|
+
padding: number;
|
|
11
|
+
iOpen: number;
|
|
12
|
+
itemizeLevelTokens: Token[][];
|
|
13
|
+
enumerateLevelTypes: string[];
|
|
14
|
+
itemizeLevelContents: string[];
|
|
15
|
+
}
|
|
16
|
+
export interface ParsedListItem {
|
|
17
|
+
startLine: number;
|
|
18
|
+
endLine: number;
|
|
19
|
+
content: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ListItemsResult {
|
|
22
|
+
iOpen: number;
|
|
23
|
+
padding: number;
|
|
24
|
+
}
|
|
25
|
+
export interface ListOpenResult {
|
|
26
|
+
iOpen: number;
|
|
27
|
+
tokenStart: Token | null;
|
|
28
|
+
li?: {
|
|
29
|
+
value: number;
|
|
30
|
+
} | null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Result of handling a potential inline `\begin{lstlisting}` occurrence.
|
|
34
|
+
*
|
|
35
|
+
* @property handled Whether the current line was handled (matched a begin).
|
|
36
|
+
* @property envDepth Updated lstlisting environment depth after handling.
|
|
37
|
+
* @property items Aggregated items list (possibly updated).
|
|
38
|
+
* @property lineText The (unchanged) original line text.
|
|
39
|
+
*/
|
|
40
|
+
export interface LstEndResult {
|
|
41
|
+
handled: boolean;
|
|
42
|
+
envDepth: number;
|
|
43
|
+
items: any[];
|
|
44
|
+
lineText: string;
|
|
45
|
+
}
|
|
46
|
+
export declare const isListType: (value: string) => value is ListType;
|
|
47
|
+
export interface CustomMarkerHtmlResult {
|
|
48
|
+
htmlMarker: string;
|
|
49
|
+
markerType: string;
|
|
50
|
+
textContent: string;
|
|
51
|
+
isMarkerEmpty: boolean;
|
|
52
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isListType = exports.ListType = void 0;
|
|
4
|
+
var ListType;
|
|
5
|
+
(function (ListType) {
|
|
6
|
+
ListType["itemize"] = "itemize";
|
|
7
|
+
ListType["enumerate"] = "enumerate";
|
|
8
|
+
})(ListType = exports.ListType || (exports.ListType = {}));
|
|
9
|
+
var isListType = function (value) {
|
|
10
|
+
return Object.values(ListType).includes(value);
|
|
11
|
+
};
|
|
12
|
+
exports.isListType = isListType;
|
|
13
|
+
//# sourceMappingURL=latex-list-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"latex-list-types.js","sourceRoot":"","sources":["../../../src/markdown/md-latex-lists-env/latex-list-types.ts"],"names":[],"mappings":";;;AAEA,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,+BAAmB,CAAA;IACnB,mCAAuB,CAAA;AACzB,CAAC,EAHW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAGnB;AA2CM,IAAM,UAAU,GAAG,UAAC,KAAa;IACtC,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAiB,CAAC,CAAC;AAC7D,CAAC,CAAA;AAFY,QAAA,UAAU,cAEtB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State manager for nested LaTeX list environments (e.g., \begin{itemize}, \item).
|
|
3
|
+
*
|
|
4
|
+
* This module tracks the current depth of nested lists and the number of \item
|
|
5
|
+
* entries opened at each depth level during parsing.
|
|
6
|
+
*
|
|
7
|
+
* Depth levels:
|
|
8
|
+
* -1 — outside of any list
|
|
9
|
+
* 0 — first list level
|
|
10
|
+
* 1 — nested list level
|
|
11
|
+
* ...
|
|
12
|
+
*/
|
|
13
|
+
export interface ListLevelState {
|
|
14
|
+
openItems: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Reset all list-related state.
|
|
18
|
+
* Should be called before starting a new parsing session.
|
|
19
|
+
*/
|
|
20
|
+
export declare const resetListState: () => void;
|
|
21
|
+
/**
|
|
22
|
+
* Enter a new nested list level (e.g., encountering \begin{itemize}).
|
|
23
|
+
* Automatically creates state storage for the new level if needed.
|
|
24
|
+
*/
|
|
25
|
+
export declare const enterListLevel: () => void;
|
|
26
|
+
/**
|
|
27
|
+
* Leave the current list level (e.g., encountering \end{itemize}).
|
|
28
|
+
* If already outside lists, logs a warning.
|
|
29
|
+
*/
|
|
30
|
+
export declare const leaveListLevel: () => void;
|
|
31
|
+
/**
|
|
32
|
+
* Get the state object for a specific depth level.
|
|
33
|
+
*
|
|
34
|
+
* @param depth - The list depth level.
|
|
35
|
+
* @returns State object or undefined.
|
|
36
|
+
*/
|
|
37
|
+
export declare const getListLevelState: (depth: number) => ListLevelState | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Get the state object for the current depth level.
|
|
40
|
+
*
|
|
41
|
+
* @returns State object or undefined.
|
|
42
|
+
*/
|
|
43
|
+
export declare const getCurrentListLevelState: () => ListLevelState | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Increment the number of opened \item commands on the current list level.
|
|
46
|
+
* Logs a warning if called when no list level is active.
|
|
47
|
+
*/
|
|
48
|
+
export declare const incrementItemCount: () => void;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* State manager for nested LaTeX list environments (e.g., \begin{itemize}, \item).
|
|
4
|
+
*
|
|
5
|
+
* This module tracks the current depth of nested lists and the number of \item
|
|
6
|
+
* entries opened at each depth level during parsing.
|
|
7
|
+
*
|
|
8
|
+
* Depth levels:
|
|
9
|
+
* -1 — outside of any list
|
|
10
|
+
* 0 — first list level
|
|
11
|
+
* 1 — nested list level
|
|
12
|
+
* ...
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.incrementItemCount = exports.getCurrentListLevelState = exports.getListLevelState = exports.leaveListLevel = exports.enterListLevel = exports.resetListState = void 0;
|
|
16
|
+
// Internal state
|
|
17
|
+
var listLevels = [];
|
|
18
|
+
var currentListDepth = -1; // -1 means “not inside a list”
|
|
19
|
+
/**
|
|
20
|
+
* Reset all list-related state.
|
|
21
|
+
* Should be called before starting a new parsing session.
|
|
22
|
+
*/
|
|
23
|
+
var resetListState = function () {
|
|
24
|
+
listLevels = [];
|
|
25
|
+
currentListDepth = -1;
|
|
26
|
+
};
|
|
27
|
+
exports.resetListState = resetListState;
|
|
28
|
+
/**
|
|
29
|
+
* Enter a new nested list level (e.g., encountering \begin{itemize}).
|
|
30
|
+
* Automatically creates state storage for the new level if needed.
|
|
31
|
+
*/
|
|
32
|
+
var enterListLevel = function () {
|
|
33
|
+
currentListDepth++;
|
|
34
|
+
if (!listLevels[currentListDepth]) {
|
|
35
|
+
listLevels[currentListDepth] = { openItems: 0 };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
exports.enterListLevel = enterListLevel;
|
|
39
|
+
/**
|
|
40
|
+
* Leave the current list level (e.g., encountering \end{itemize}).
|
|
41
|
+
* If already outside lists, logs a warning.
|
|
42
|
+
*/
|
|
43
|
+
var leaveListLevel = function () {
|
|
44
|
+
if (currentListDepth < 0) {
|
|
45
|
+
console.warn('[list-state] Attempt to leave list level while depth = -1');
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
currentListDepth--;
|
|
49
|
+
};
|
|
50
|
+
exports.leaveListLevel = leaveListLevel;
|
|
51
|
+
/**
|
|
52
|
+
* Get the state object for a specific depth level.
|
|
53
|
+
*
|
|
54
|
+
* @param depth - The list depth level.
|
|
55
|
+
* @returns State object or undefined.
|
|
56
|
+
*/
|
|
57
|
+
var getListLevelState = function (depth) {
|
|
58
|
+
return listLevels[depth];
|
|
59
|
+
};
|
|
60
|
+
exports.getListLevelState = getListLevelState;
|
|
61
|
+
/**
|
|
62
|
+
* Get the state object for the current depth level.
|
|
63
|
+
*
|
|
64
|
+
* @returns State object or undefined.
|
|
65
|
+
*/
|
|
66
|
+
var getCurrentListLevelState = function () {
|
|
67
|
+
return listLevels[currentListDepth];
|
|
68
|
+
};
|
|
69
|
+
exports.getCurrentListLevelState = getCurrentListLevelState;
|
|
70
|
+
/**
|
|
71
|
+
* Increment the number of opened \item commands on the current list level.
|
|
72
|
+
* Logs a warning if called when no list level is active.
|
|
73
|
+
*/
|
|
74
|
+
var incrementItemCount = function () {
|
|
75
|
+
var level = (0, exports.getCurrentListLevelState)();
|
|
76
|
+
if (!level) {
|
|
77
|
+
console.warn('[list-state] incrementItemCount called outside of any list level', {
|
|
78
|
+
currentListDepth: currentListDepth,
|
|
79
|
+
listLevels: listLevels,
|
|
80
|
+
});
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
level.openItems += 1;
|
|
84
|
+
};
|
|
85
|
+
exports.incrementItemCount = incrementItemCount;
|
|
86
|
+
//# sourceMappingURL=list-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-state.js","sourceRoot":"","sources":["../../../src/markdown/md-latex-lists-env/list-state.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAMH,iBAAiB;AACjB,IAAI,UAAU,GAAqB,EAAE,CAAC;AACtC,IAAI,gBAAgB,GAAW,CAAC,CAAC,CAAC,CAAC,+BAA+B;AAElE;;;GAGG;AACI,IAAM,cAAc,GAAG;IAC5B,UAAU,GAAG,EAAE,CAAC;IAChB,gBAAgB,GAAG,CAAC,CAAC,CAAC;AACxB,CAAC,CAAC;AAHW,QAAA,cAAc,kBAGzB;AAEF;;;GAGG;AACI,IAAM,cAAc,GAAG;IAC5B,gBAAgB,EAAE,CAAC;IAEnB,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;QACjC,UAAU,CAAC,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;KACjD;AACH,CAAC,CAAC;AANW,QAAA,cAAc,kBAMzB;AAEF;;;GAGG;AACI,IAAM,cAAc,GAAG;IAC5B,IAAI,gBAAgB,GAAG,CAAC,EAAE;QACxB,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;QAC1E,OAAO;KACR;IACD,gBAAgB,EAAE,CAAC;AACrB,CAAC,CAAC;AANW,QAAA,cAAc,kBAMzB;AAEF;;;;;GAKG;AACI,IAAM,iBAAiB,GAAG,UAAC,KAAa;IAC7C,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC,CAAC;AAFW,QAAA,iBAAiB,qBAE5B;AAEF;;;;GAIG;AACI,IAAM,wBAAwB,GAAG;IACtC,OAAO,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACtC,CAAC,CAAC;AAFW,QAAA,wBAAwB,4BAEnC;AAEF;;;GAGG;AACI,IAAM,kBAAkB,GAAG;IAChC,IAAM,KAAK,GAAG,IAAA,gCAAwB,GAAE,CAAC;IACzC,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,CAAC,IAAI,CACV,kEAAkE,EAClE;YACE,gBAAgB,kBAAA;YAChB,UAAU,YAAA;SACX,CACF,CAAC;QACF,OAAO;KACR;IACD,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC;AACvB,CAAC,CAAC;AAbW,QAAA,kBAAkB,sBAa7B"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type Token from "markdown-it/lib/token";
|
|
2
|
+
import type StateBlock from 'markdown-it/lib/rules_block/state_block';
|
|
3
|
+
import type StateInline from 'markdown-it/lib/rules_inline/state_inline';
|
|
4
|
+
/** Default LaTeX itemize bullet styles */
|
|
5
|
+
export declare let itemizeLevelDefaults: string[];
|
|
6
|
+
/** Default enumerate styles for CSS list-style-type */
|
|
7
|
+
export declare let enumerateLevelDefaults: string[];
|
|
8
|
+
/** Active itemize levels (mutable state) */
|
|
9
|
+
export declare let itemizeLevel: string[];
|
|
10
|
+
/** Active enumerate levels (mutable state) */
|
|
11
|
+
export declare let enumerateLevel: string[];
|
|
12
|
+
/** Parsed tokens for itemize bullets */
|
|
13
|
+
export declare let itemizeLevelTokens: Token[][];
|
|
14
|
+
/**
|
|
15
|
+
* Reset and return default itemize bullet definitions.
|
|
16
|
+
*/
|
|
17
|
+
export declare const SetDefaultItemizeLevel: () => string[];
|
|
18
|
+
/**
|
|
19
|
+
* Reset and return default enumerate level definitions.
|
|
20
|
+
*/
|
|
21
|
+
export declare const SetDefaultEnumerateLevel: () => string[];
|
|
22
|
+
/**
|
|
23
|
+
* Return itemize level array (or fallback to defaults).
|
|
24
|
+
*/
|
|
25
|
+
export declare const GetItemizeLevel: (data?: string[] | null) => string[];
|
|
26
|
+
/**
|
|
27
|
+
* Return enumerate level array (or fallback to defaults).
|
|
28
|
+
*/
|
|
29
|
+
export declare const GetEnumerateLevel: (data?: string[] | null) => string[];
|
|
30
|
+
/** Return structure of parsed tokens + raw bullet content */
|
|
31
|
+
export interface ItemizeLevelTokenResult {
|
|
32
|
+
tokens: Token[][];
|
|
33
|
+
contents: string[];
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Parse bullet tokens for all itemize levels.
|
|
37
|
+
*/
|
|
38
|
+
export declare const SetItemizeLevelTokens: (state: StateBlock | StateInline) => ItemizeLevelTokenResult;
|
|
39
|
+
/**
|
|
40
|
+
* Parse bullet tokens for a specific itemize level index.
|
|
41
|
+
*/
|
|
42
|
+
export declare const SetItemizeLevelTokensByIndex: (state: StateBlock | StateInline, index: number) => void;
|
|
43
|
+
/**
|
|
44
|
+
* Returns cached itemize level tokens or provided subset.
|
|
45
|
+
*/
|
|
46
|
+
export declare const GetItemizeLevelTokens: (data?: Token[][] | null) => Token[][];
|
|
47
|
+
/**
|
|
48
|
+
* Get both bullet content and parsed tokens from state.
|
|
49
|
+
*/
|
|
50
|
+
export declare const GetItemizeLevelTokensByState: (state: StateBlock | StateInline) => ItemizeLevelTokenResult;
|
|
51
|
+
/**
|
|
52
|
+
* Change list style for \labelitemi, \labelenumi etc.
|
|
53
|
+
* Supports both itemize and enumerate levels.
|
|
54
|
+
*/
|
|
55
|
+
export declare const ChangeLevel: (state: StateBlock | StateInline, data: {
|
|
56
|
+
command?: string;
|
|
57
|
+
params?: string;
|
|
58
|
+
}) => boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Clears stored itemize level token cache.
|
|
61
|
+
*/
|
|
62
|
+
export declare const clearItemizeLevelTokens: () => void;
|