@sciencestack-ai/tokens 0.1.0

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 (210) hide show
  1. package/README.md +102 -0
  2. package/dist/base/AbstractTokenNode.d.ts +100 -0
  3. package/dist/base/AbstractTokenNode.d.ts.map +1 -0
  4. package/dist/base/AbstractTokenNode.js +253 -0
  5. package/dist/base/AbstractTokenNode.js.map +1 -0
  6. package/dist/base/BaseTableFigureTokenNode.d.ts +26 -0
  7. package/dist/base/BaseTableFigureTokenNode.d.ts.map +1 -0
  8. package/dist/base/BaseTableFigureTokenNode.js +113 -0
  9. package/dist/base/BaseTableFigureTokenNode.js.map +1 -0
  10. package/dist/base/BaseTokenNode.d.ts +25 -0
  11. package/dist/base/BaseTokenNode.d.ts.map +1 -0
  12. package/dist/base/BaseTokenNode.js +137 -0
  13. package/dist/base/BaseTokenNode.js.map +1 -0
  14. package/dist/base/ITokenNodeFactory.d.ts +6 -0
  15. package/dist/base/ITokenNodeFactory.d.ts.map +1 -0
  16. package/dist/base/ITokenNodeFactory.js +2 -0
  17. package/dist/base/ITokenNodeFactory.js.map +1 -0
  18. package/dist/base/NodeRoles.d.ts +6 -0
  19. package/dist/base/NodeRoles.d.ts.map +1 -0
  20. package/dist/base/NodeRoles.js +7 -0
  21. package/dist/base/NodeRoles.js.map +1 -0
  22. package/dist/base/TokenNodeFactory.d.ts +9 -0
  23. package/dist/base/TokenNodeFactory.d.ts.map +1 -0
  24. package/dist/base/TokenNodeFactory.js +94 -0
  25. package/dist/base/TokenNodeFactory.js.map +1 -0
  26. package/dist/content/CaptionTokenNode.d.ts +23 -0
  27. package/dist/content/CaptionTokenNode.d.ts.map +1 -0
  28. package/dist/content/CaptionTokenNode.js +79 -0
  29. package/dist/content/CaptionTokenNode.js.map +1 -0
  30. package/dist/content/QuoteTokenNode.d.ts +12 -0
  31. package/dist/content/QuoteTokenNode.d.ts.map +1 -0
  32. package/dist/content/QuoteTokenNode.js +27 -0
  33. package/dist/content/QuoteTokenNode.js.map +1 -0
  34. package/dist/content/TextTokenNode.d.ts +26 -0
  35. package/dist/content/TextTokenNode.d.ts.map +1 -0
  36. package/dist/content/TextTokenNode.js +70 -0
  37. package/dist/content/TextTokenNode.js.map +1 -0
  38. package/dist/document/AbstractSectionTokenNode.d.ts +12 -0
  39. package/dist/document/AbstractSectionTokenNode.d.ts.map +1 -0
  40. package/dist/document/AbstractSectionTokenNode.js +22 -0
  41. package/dist/document/AbstractSectionTokenNode.js.map +1 -0
  42. package/dist/document/AppendixTokenNode.d.ts +12 -0
  43. package/dist/document/AppendixTokenNode.d.ts.map +1 -0
  44. package/dist/document/AppendixTokenNode.js +24 -0
  45. package/dist/document/AppendixTokenNode.js.map +1 -0
  46. package/dist/document/BaseEnvTokenNode.d.ts +20 -0
  47. package/dist/document/BaseEnvTokenNode.d.ts.map +1 -0
  48. package/dist/document/BaseEnvTokenNode.js +76 -0
  49. package/dist/document/BaseEnvTokenNode.js.map +1 -0
  50. package/dist/document/DocumentTokenNode.d.ts +11 -0
  51. package/dist/document/DocumentTokenNode.d.ts.map +1 -0
  52. package/dist/document/DocumentTokenNode.js +17 -0
  53. package/dist/document/DocumentTokenNode.js.map +1 -0
  54. package/dist/document/EnvironmentTokenNode.d.ts +12 -0
  55. package/dist/document/EnvironmentTokenNode.d.ts.map +1 -0
  56. package/dist/document/EnvironmentTokenNode.js +22 -0
  57. package/dist/document/EnvironmentTokenNode.js.map +1 -0
  58. package/dist/document/GroupTokenNode.d.ts +9 -0
  59. package/dist/document/GroupTokenNode.d.ts.map +1 -0
  60. package/dist/document/GroupTokenNode.js +16 -0
  61. package/dist/document/GroupTokenNode.js.map +1 -0
  62. package/dist/document/MathEnvTokenNode.d.ts +21 -0
  63. package/dist/document/MathEnvTokenNode.d.ts.map +1 -0
  64. package/dist/document/MathEnvTokenNode.js +91 -0
  65. package/dist/document/MathEnvTokenNode.js.map +1 -0
  66. package/dist/document/SectionTokenNode.d.ts +17 -0
  67. package/dist/document/SectionTokenNode.d.ts.map +1 -0
  68. package/dist/document/SectionTokenNode.js +66 -0
  69. package/dist/document/SectionTokenNode.js.map +1 -0
  70. package/dist/document/TitleTokenNode.d.ts +11 -0
  71. package/dist/document/TitleTokenNode.d.ts.map +1 -0
  72. package/dist/document/TitleTokenNode.js +19 -0
  73. package/dist/document/TitleTokenNode.js.map +1 -0
  74. package/dist/export_types.d.ts +46 -0
  75. package/dist/export_types.d.ts.map +1 -0
  76. package/dist/export_types.js +27 -0
  77. package/dist/export_types.js.map +1 -0
  78. package/dist/figures/DiagramTokenNode.d.ts +22 -0
  79. package/dist/figures/DiagramTokenNode.d.ts.map +1 -0
  80. package/dist/figures/DiagramTokenNode.js +62 -0
  81. package/dist/figures/DiagramTokenNode.js.map +1 -0
  82. package/dist/figures/FigureTokenNode.d.ts +11 -0
  83. package/dist/figures/FigureTokenNode.d.ts.map +1 -0
  84. package/dist/figures/FigureTokenNode.js +18 -0
  85. package/dist/figures/FigureTokenNode.js.map +1 -0
  86. package/dist/figures/IncludeGraphicsTokenNode.d.ts +20 -0
  87. package/dist/figures/IncludeGraphicsTokenNode.d.ts.map +1 -0
  88. package/dist/figures/IncludeGraphicsTokenNode.js +44 -0
  89. package/dist/figures/IncludeGraphicsTokenNode.js.map +1 -0
  90. package/dist/figures/IncludePdfTokenNode.d.ts +18 -0
  91. package/dist/figures/IncludePdfTokenNode.d.ts.map +1 -0
  92. package/dist/figures/IncludePdfTokenNode.js +38 -0
  93. package/dist/figures/IncludePdfTokenNode.js.map +1 -0
  94. package/dist/figures/SubFigureTokenNode.d.ts +11 -0
  95. package/dist/figures/SubFigureTokenNode.d.ts.map +1 -0
  96. package/dist/figures/SubFigureTokenNode.js +18 -0
  97. package/dist/figures/SubFigureTokenNode.js.map +1 -0
  98. package/dist/graph/graphTypes.d.ts +42 -0
  99. package/dist/graph/graphTypes.d.ts.map +1 -0
  100. package/dist/graph/graphTypes.js +75 -0
  101. package/dist/graph/graphTypes.js.map +1 -0
  102. package/dist/graph/index.d.ts +4 -0
  103. package/dist/graph/index.d.ts.map +1 -0
  104. package/dist/graph/index.js +3 -0
  105. package/dist/graph/index.js.map +1 -0
  106. package/dist/graph/mathColors.d.ts +11 -0
  107. package/dist/graph/mathColors.d.ts.map +1 -0
  108. package/dist/graph/mathColors.js +20 -0
  109. package/dist/graph/mathColors.js.map +1 -0
  110. package/dist/graph/mathDepGraph.d.ts +4 -0
  111. package/dist/graph/mathDepGraph.d.ts.map +1 -0
  112. package/dist/graph/mathDepGraph.js +320 -0
  113. package/dist/graph/mathDepGraph.js.map +1 -0
  114. package/dist/index.d.ts +42 -0
  115. package/dist/index.d.ts.map +1 -0
  116. package/dist/index.js +54 -0
  117. package/dist/index.js.map +1 -0
  118. package/dist/lists/ListItemTokenNode.d.ts +15 -0
  119. package/dist/lists/ListItemTokenNode.d.ts.map +1 -0
  120. package/dist/lists/ListItemTokenNode.js +91 -0
  121. package/dist/lists/ListItemTokenNode.js.map +1 -0
  122. package/dist/lists/ListTokenNode.d.ts +19 -0
  123. package/dist/lists/ListTokenNode.d.ts.map +1 -0
  124. package/dist/lists/ListTokenNode.js +52 -0
  125. package/dist/lists/ListTokenNode.js.map +1 -0
  126. package/dist/metadata/AuthorTokenNode.d.ts +12 -0
  127. package/dist/metadata/AuthorTokenNode.d.ts.map +1 -0
  128. package/dist/metadata/AuthorTokenNode.js +39 -0
  129. package/dist/metadata/AuthorTokenNode.js.map +1 -0
  130. package/dist/metadata/MetadataTokenNode.d.ts +16 -0
  131. package/dist/metadata/MetadataTokenNode.d.ts.map +1 -0
  132. package/dist/metadata/MetadataTokenNode.js +35 -0
  133. package/dist/metadata/MetadataTokenNode.js.map +1 -0
  134. package/dist/references/BibitemTokenNode.d.ts +34 -0
  135. package/dist/references/BibitemTokenNode.d.ts.map +1 -0
  136. package/dist/references/BibitemTokenNode.js +149 -0
  137. package/dist/references/BibitemTokenNode.js.map +1 -0
  138. package/dist/references/CitationTokenNode.d.ts +19 -0
  139. package/dist/references/CitationTokenNode.d.ts.map +1 -0
  140. package/dist/references/CitationTokenNode.js +56 -0
  141. package/dist/references/CitationTokenNode.js.map +1 -0
  142. package/dist/references/FootnoteTokenNode.d.ts +13 -0
  143. package/dist/references/FootnoteTokenNode.d.ts.map +1 -0
  144. package/dist/references/FootnoteTokenNode.js +24 -0
  145. package/dist/references/FootnoteTokenNode.js.map +1 -0
  146. package/dist/references/ReferenceTokenNode.d.ts +19 -0
  147. package/dist/references/ReferenceTokenNode.d.ts.map +1 -0
  148. package/dist/references/ReferenceTokenNode.js +87 -0
  149. package/dist/references/ReferenceTokenNode.js.map +1 -0
  150. package/dist/references/UrlTokenNode.d.ts +17 -0
  151. package/dist/references/UrlTokenNode.d.ts.map +1 -0
  152. package/dist/references/UrlTokenNode.js +33 -0
  153. package/dist/references/UrlTokenNode.js.map +1 -0
  154. package/dist/styles.d.ts +9 -0
  155. package/dist/styles.d.ts.map +1 -0
  156. package/dist/styles.js +122 -0
  157. package/dist/styles.js.map +1 -0
  158. package/dist/tables/SubTableTokenNode.d.ts +11 -0
  159. package/dist/tables/SubTableTokenNode.d.ts.map +1 -0
  160. package/dist/tables/SubTableTokenNode.js +18 -0
  161. package/dist/tables/SubTableTokenNode.js.map +1 -0
  162. package/dist/tables/TableTokenNode.d.ts +11 -0
  163. package/dist/tables/TableTokenNode.d.ts.map +1 -0
  164. package/dist/tables/TableTokenNode.js +18 -0
  165. package/dist/tables/TableTokenNode.js.map +1 -0
  166. package/dist/tables/TabularTokenNode.d.ts +63 -0
  167. package/dist/tables/TabularTokenNode.d.ts.map +1 -0
  168. package/dist/tables/TabularTokenNode.js +318 -0
  169. package/dist/tables/TabularTokenNode.js.map +1 -0
  170. package/dist/technical/AlgorithmTokenNode.d.ts +22 -0
  171. package/dist/technical/AlgorithmTokenNode.d.ts.map +1 -0
  172. package/dist/technical/AlgorithmTokenNode.js +54 -0
  173. package/dist/technical/AlgorithmTokenNode.js.map +1 -0
  174. package/dist/technical/CodeTokenNode.d.ts +16 -0
  175. package/dist/technical/CodeTokenNode.d.ts.map +1 -0
  176. package/dist/technical/CodeTokenNode.js +43 -0
  177. package/dist/technical/CodeTokenNode.js.map +1 -0
  178. package/dist/technical/CommandTokenNode.d.ts +14 -0
  179. package/dist/technical/CommandTokenNode.d.ts.map +1 -0
  180. package/dist/technical/CommandTokenNode.js +26 -0
  181. package/dist/technical/CommandTokenNode.js.map +1 -0
  182. package/dist/technical/EquationArrayTokenNode.d.ts +40 -0
  183. package/dist/technical/EquationArrayTokenNode.d.ts.map +1 -0
  184. package/dist/technical/EquationArrayTokenNode.js +220 -0
  185. package/dist/technical/EquationArrayTokenNode.js.map +1 -0
  186. package/dist/technical/EquationTokenNode.d.ts +19 -0
  187. package/dist/technical/EquationTokenNode.d.ts.map +1 -0
  188. package/dist/technical/EquationTokenNode.js +96 -0
  189. package/dist/technical/EquationTokenNode.js.map +1 -0
  190. package/dist/tokenProcessing.d.ts +4 -0
  191. package/dist/tokenProcessing.d.ts.map +1 -0
  192. package/dist/tokenProcessing.js +19 -0
  193. package/dist/tokenProcessing.js.map +1 -0
  194. package/dist/types.d.ts +287 -0
  195. package/dist/types.d.ts.map +1 -0
  196. package/dist/types.js +90 -0
  197. package/dist/types.js.map +1 -0
  198. package/dist/utils/arxiv.d.ts +57 -0
  199. package/dist/utils/arxiv.d.ts.map +1 -0
  200. package/dist/utils/arxiv.js +142 -0
  201. package/dist/utils/arxiv.js.map +1 -0
  202. package/dist/utils/citationConverters.d.ts +33 -0
  203. package/dist/utils/citationConverters.d.ts.map +1 -0
  204. package/dist/utils/citationConverters.js +151 -0
  205. package/dist/utils/citationConverters.js.map +1 -0
  206. package/dist/utils.d.ts +14 -0
  207. package/dist/utils.d.ts.map +1 -0
  208. package/dist/utils.js +117 -0
  209. package/dist/utils.js.map +1 -0
  210. package/package.json +44 -0
@@ -0,0 +1,320 @@
1
+ import { NodeRoles } from '../base/NodeRoles';
2
+ import { EnvironmentTokenNode } from '../document/EnvironmentTokenNode';
3
+ import { MathEnvTokenNode } from '../document/MathEnvTokenNode';
4
+ import { SectionTokenNode } from '../document/SectionTokenNode';
5
+ import { ReferenceTokenNode } from '../references/ReferenceTokenNode';
6
+ import { EquationTokenNode } from '../technical/EquationTokenNode';
7
+ import { GraphNode, GraphEdge, GraphNodeType } from './graphTypes';
8
+ import { getTokenByLabel } from '@/lib/vrender/utils/tokens';
9
+ /**
10
+ * This file generates a dependency graph for mathematical environments in a LaTeX-like document
11
+ * It tracks relationships between mathematical environments (like theorems, lemmas, proofs)
12
+ * by analyzing their cross-references
13
+
14
+ // Main functionality:
15
+ // 1. Identifies numbered mathematical environments (theorems, lemmas, etc.)
16
+ // 2. Tracks references between these environments (when one theorem references another)
17
+ // 3. Handles special cases like untitled proofs by connecting them to their previous sibling theorems
18
+ // 4. Handles linked equations by connecting their parent math/proof envs to the math envs that reference them
19
+ // 5. Generates a graph structure where:
20
+ // - Nodes represent mathematical environments
21
+ // - Edges represent references/dependencies between them
22
+ */
23
+ const excludeMathEnvNames = ['proof', 'remark', 'example', 'heuristic'];
24
+ function isNumberedMathEnv(node) {
25
+ if (!(node instanceof MathEnvTokenNode)) {
26
+ return false;
27
+ }
28
+ const name = node.name.toLowerCase();
29
+ if (excludeMathEnvNames.includes(name)) {
30
+ return false;
31
+ }
32
+ if (node.numbering && node.numbering.length > 0) {
33
+ return true;
34
+ }
35
+ return false;
36
+ }
37
+ function isProofEnv(node) {
38
+ // could be a \begin{proof} block
39
+ if (!(node instanceof MathEnvTokenNode || node instanceof EnvironmentTokenNode))
40
+ return false;
41
+ const name = node.name;
42
+ if (!name)
43
+ return false;
44
+ // const title = (node as any).title;
45
+ return name.toLowerCase() == 'proof'; // && (!title || title.length < 1);
46
+ }
47
+ class MathGraphGenerator {
48
+ id2GraphNode = {};
49
+ graphNodes = [];
50
+ graphEdges = new Set();
51
+ untitledProof2GraphNode = {};
52
+ resolveLabel(label) {
53
+ return getTokenByLabel(label);
54
+ }
55
+ getGraphEdge(source_node, target_node) {
56
+ for (const edge of Array.from(this.graphEdges)) {
57
+ if (edge.source.id == source_node.id && edge.target.id == target_node.id) {
58
+ return edge;
59
+ }
60
+ }
61
+ return null;
62
+ }
63
+ findRefsInNode(node) {
64
+ const refs = [];
65
+ if (node instanceof ReferenceTokenNode) {
66
+ refs.push(...node.getData());
67
+ }
68
+ else {
69
+ // Process children recursively
70
+ if (node.hasChildren()) {
71
+ node.getChildren().forEach((child) => {
72
+ refs.push(...this.findRefsInNode(child));
73
+ });
74
+ }
75
+ }
76
+ return refs;
77
+ }
78
+ addRefsToGraphNode(targetGraphNode, refs, partial, label) {
79
+ for (const ref of refs) {
80
+ let refNode = this.resolveLabel(ref);
81
+ let outLabel = label;
82
+ // Handle equation references
83
+ if (refNode instanceof EquationTokenNode) {
84
+ if (refNode.numbering) {
85
+ const tag = `eq-${refNode.numbering}`;
86
+ if (outLabel)
87
+ outLabel += ` (${tag})`;
88
+ else
89
+ outLabel = tag;
90
+ }
91
+ // Find closest math env parent of the equation
92
+ let parent = refNode.parent;
93
+ while (parent && !(parent instanceof MathEnvTokenNode || isNumberedMathEnv(parent))) {
94
+ parent = parent.parent;
95
+ }
96
+ if (parent) {
97
+ if (isNumberedMathEnv(parent)) {
98
+ refNode = parent;
99
+ }
100
+ else if (this.untitledProof2GraphNode[parent.id]) {
101
+ refNode = this.untitledProof2GraphNode[parent.id].node;
102
+ }
103
+ }
104
+ }
105
+ if (!refNode || !isNumberedMathEnv(refNode))
106
+ continue;
107
+ const sourceGraphNode = this._getOrCreateGraphNode(refNode);
108
+ if (sourceGraphNode.id === targetGraphNode.id)
109
+ continue;
110
+ // if (partial) {
111
+ // if (outLabel) {
112
+ // outLabel += ' (nearby ref)';
113
+ // } else {
114
+ // outLabel = '(nearby ref)';
115
+ // }
116
+ // }
117
+ // Create edge and add to sets
118
+ const edge = this._getOrCreateGraphEdge(sourceGraphNode, targetGraphNode, outLabel, partial);
119
+ this.graphEdges.add(edge);
120
+ // Note: nodes are added to graphNodes in document order via _getOrCreateGraphNode
121
+ }
122
+ }
123
+ _getOrCreateGraphEdge(sourceGraphNode, targetGraphNode, edgeLabel, partial) {
124
+ const existingEdge = this.getGraphEdge(sourceGraphNode, targetGraphNode);
125
+ if (existingEdge) {
126
+ if (existingEdge.partial && !partial) {
127
+ // current full edge should override existing partial edge
128
+ this.graphEdges.delete(existingEdge);
129
+ }
130
+ else {
131
+ return existingEdge;
132
+ }
133
+ }
134
+ const edge = new GraphEdge(sourceGraphNode, targetGraphNode, edgeLabel, partial);
135
+ return edge;
136
+ }
137
+ searchRefsInNode(node, targetGraphNode, label, contentOnly = false) {
138
+ if (!targetGraphNode) {
139
+ targetGraphNode = this._getOrCreateGraphNode(node);
140
+ }
141
+ const contentRefs = [];
142
+ for (const child of node.getChildren()) {
143
+ if (contentOnly && child.role !== NodeRoles.CONTENT) {
144
+ continue;
145
+ }
146
+ contentRefs.push(...this.findRefsInNode(child));
147
+ }
148
+ this.addRefsToGraphNode(targetGraphNode, contentRefs, false, label);
149
+ }
150
+ _getOrCreateGraphNode(node, type, label) {
151
+ if (this.id2GraphNode[node.id]) {
152
+ return this.id2GraphNode[node.id];
153
+ }
154
+ if (!type) {
155
+ type = GraphNodeType.mathEnv;
156
+ if (isNumberedMathEnv(node)) {
157
+ type = GraphNodeType.mathEnv;
158
+ }
159
+ else if (isProofEnv(node)) {
160
+ type = GraphNodeType.proof;
161
+ }
162
+ }
163
+ if (!label) {
164
+ label = node.id;
165
+ if (type == GraphNodeType.mathEnv) {
166
+ label = node instanceof MathEnvTokenNode ? `${node.name} ${node.numbering}` : node.id;
167
+ }
168
+ else if (type == GraphNodeType.proof) {
169
+ label = 'Proof';
170
+ }
171
+ }
172
+ const graphNode = new GraphNode(node, type, label);
173
+ this.id2GraphNode[node.id] = graphNode;
174
+ // Add to array in document order (DFS traversal order)
175
+ this.graphNodes.push(graphNode);
176
+ return graphNode;
177
+ }
178
+ getNodesAndEdges() {
179
+ // Remove duplicate edges (same source->target with same label)
180
+ const uniqueEdges = new Map();
181
+ Array.from(this.graphEdges).forEach((edge) => {
182
+ const edgeKey = `${edge.source.id}->${edge.target.id}:${edge.label || ''}`;
183
+ if (!uniqueEdges.has(edgeKey)) {
184
+ uniqueEdges.set(edgeKey, edge);
185
+ }
186
+ });
187
+ return {
188
+ nodes: this.graphNodes, // Already in document order from DFS traversal
189
+ edges: Array.from(uniqueEdges.values())
190
+ };
191
+ }
192
+ processNodeTitleRefs(node) {
193
+ // Check if refs in title -> then attach inner refs of this node to the refs in title
194
+ // ie. if this node references other math envs in the title, we assume its inner refs connect to the math envs in the title
195
+ const titleNodes = node.getTitleData();
196
+ const titleRefs = titleNodes.flatMap((t) => this.findRefsInNode(t));
197
+ if (titleRefs.length > 0) {
198
+ let titleStr = '';
199
+ for (let titleNode of titleNodes) {
200
+ const data = titleNode.getData();
201
+ if (typeof data == 'string') {
202
+ titleStr += data;
203
+ }
204
+ else if (titleNode instanceof ReferenceTokenNode) {
205
+ // collect the titles of all referenced mathenvs to be the titleStr
206
+ const mathEnvTitles = [];
207
+ for (let ref of data) {
208
+ const refNode = this.resolveLabel(ref);
209
+ if (refNode instanceof MathEnvTokenNode && isNumberedMathEnv(refNode)) {
210
+ mathEnvTitles.push(`${refNode.name} ${refNode.numbering}`);
211
+ }
212
+ }
213
+ titleStr += ` ${mathEnvTitles.join(',')} `;
214
+ }
215
+ }
216
+ let label = titleStr;
217
+ if (!titleStr.toLowerCase().startsWith('proof')) {
218
+ label = 'Proof: ' + titleStr;
219
+ }
220
+ for (const ref of titleRefs) {
221
+ const refNode = this.resolveLabel(ref);
222
+ if (!refNode)
223
+ continue;
224
+ if (isNumberedMathEnv(refNode)) {
225
+ const refGraphNode = this._getOrCreateGraphNode(refNode, GraphNodeType.mathEnv);
226
+ // search content only i.e. don't include title data, otherwise
227
+ // refs in the title will create edges to each other
228
+ this.searchRefsInNode(node, refGraphNode, label, true);
229
+ }
230
+ }
231
+ }
232
+ }
233
+ processNodes(node) {
234
+ if (!node)
235
+ return;
236
+ const ALLOW_STANDALONE_PROOFS = false;
237
+ if (Array.isArray(node)) {
238
+ // Process array of nodes (detect mathenv and try to match it with next sibling ref or untitled proofs)
239
+ let latestMathEnvGraphNode = null;
240
+ node.forEach((n) => {
241
+ if (isProofEnv(n)) {
242
+ // if proof env, check if titled or untitled
243
+ const proofNode = n;
244
+ let titleData = [];
245
+ if (proofNode instanceof MathEnvTokenNode) {
246
+ titleData = proofNode.getTitleData();
247
+ }
248
+ if (titleData.length > 0) {
249
+ // titled proof
250
+ this.processNodeTitleRefs(proofNode);
251
+ }
252
+ else {
253
+ // untitled proof: heuristic to check if there is a previous sibling math env 'latestMathEnvGraphNode'
254
+ if (latestMathEnvGraphNode) {
255
+ this.untitledProof2GraphNode[n.id] = latestMathEnvGraphNode;
256
+ const proofLabel = `Proof (${latestMathEnvGraphNode.label})`;
257
+ if (ALLOW_STANDALONE_PROOFS) {
258
+ // Create a separate graph node for the untitled proof
259
+ const proofGraphNode = this._getOrCreateGraphNode(n, GraphNodeType.proof, proofLabel);
260
+ // Store the parent relationship (no edge, just metadata)
261
+ proofGraphNode.parentNode = latestMathEnvGraphNode;
262
+ // Nodes are already added via _getOrCreateGraphNode
263
+ this.searchRefsInNode(n, proofGraphNode);
264
+ }
265
+ else {
266
+ // direct link to parent math env as proof edge
267
+ this.searchRefsInNode(n, latestMathEnvGraphNode, proofLabel);
268
+ }
269
+ return;
270
+ }
271
+ }
272
+ // reset latestMathEnvGraphNode after proof block
273
+ latestMathEnvGraphNode = null;
274
+ }
275
+ else if (isNumberedMathEnv(n)) {
276
+ latestMathEnvGraphNode = this._getOrCreateGraphNode(n, GraphNodeType.mathEnv);
277
+ }
278
+ else if (n instanceof ReferenceTokenNode) {
279
+ // if we detect a reference node, attach refs to the latest mathenv sibling
280
+ if (latestMathEnvGraphNode) {
281
+ this.addRefsToGraphNode(latestMathEnvGraphNode, n.getData(), true);
282
+ }
283
+ return;
284
+ }
285
+ else if (n instanceof SectionTokenNode) {
286
+ // if detect any non math section i.e. not a numbered math env or untitled proof, we reset latestMathEnv
287
+ latestMathEnvGraphNode = null;
288
+ }
289
+ this.processNodes(n);
290
+ });
291
+ return;
292
+ }
293
+ else if (typeof node == 'object') {
294
+ if (isNumberedMathEnv(node)) {
295
+ this.searchRefsInNode(node);
296
+ }
297
+ else if (node instanceof SectionTokenNode) {
298
+ this.processNodeTitleRefs(node);
299
+ }
300
+ // Process children recursively
301
+ if (node.hasChildren()) {
302
+ // big difference! vs individual processNodes(child)
303
+ this.processNodes(node.getChildren());
304
+ // node.getChildren().forEach((child) => {
305
+ // this.processNodes(child);
306
+ // });
307
+ }
308
+ }
309
+ }
310
+ }
311
+ export function GenerateMathDepGraph(tokenNodes) {
312
+ const processor = new MathGraphGenerator();
313
+ // Then process to find dependencies and get graph data
314
+ processor.processNodes(tokenNodes);
315
+ const graphData = processor.getNodesAndEdges();
316
+ // const outJSON = graphdataToJSONForLLM(graphData);
317
+ // console.log(JSON.stringify(outJSON));
318
+ return graphData;
319
+ }
320
+ //# sourceMappingURL=mathDepGraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mathDepGraph.js","sourceRoot":"","sources":["../../src/graph/mathDepGraph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ export * from './types';
2
+ export * from './export_types';
3
+ export * from './styles';
4
+ export * from './utils';
5
+ export * from './utils/arxiv';
6
+ export * from './utils/citationConverters';
7
+ export { AbstractTokenNode } from './base/AbstractTokenNode';
8
+ export { BaseTokenNode } from './base/BaseTokenNode';
9
+ export { DocumentTokenNode } from './document/DocumentTokenNode';
10
+ export { TitleTokenNode } from './document/TitleTokenNode';
11
+ export { AbstractSectionTokenNode } from './document/AbstractSectionTokenNode';
12
+ export { SectionTokenNode } from './document/SectionTokenNode';
13
+ export { GroupTokenNode } from './document/GroupTokenNode';
14
+ export { MathEnvTokenNode } from './document/MathEnvTokenNode';
15
+ export { EnvironmentTokenNode } from './document/EnvironmentTokenNode';
16
+ export { AppendixTokenNode } from './document/AppendixTokenNode';
17
+ export { EquationTokenNode } from './technical/EquationTokenNode';
18
+ export { EquationArrayTokenNode, EqArrayRowNode } from './technical/EquationArrayTokenNode';
19
+ export { CodeTokenNode } from './technical/CodeTokenNode';
20
+ export { AlgorithmTokenNode, AlgorithmicTokenNode } from './technical/AlgorithmTokenNode';
21
+ export { CommandTokenNode } from './technical/CommandTokenNode';
22
+ export { TextTokenNode } from './content/TextTokenNode';
23
+ export { QuoteTokenNode } from './content/QuoteTokenNode';
24
+ export { CitationTokenNode } from './references/CitationTokenNode';
25
+ export { ReferenceTokenNode } from './references/ReferenceTokenNode';
26
+ export { FootnoteTokenNode } from './references/FootnoteTokenNode';
27
+ export { UrlTokenNode } from './references/UrlTokenNode';
28
+ export { ListTokenNode } from './lists/ListTokenNode';
29
+ export { ListItemTokenNode } from './lists/ListItemTokenNode';
30
+ export { TableTokenNode } from './tables/TableTokenNode';
31
+ export { SubTableTokenNode } from './tables/SubTableTokenNode';
32
+ export { TabularTokenNode } from './tables/TabularTokenNode';
33
+ export { CaptionTokenNode } from './content/CaptionTokenNode';
34
+ export { FigureTokenNode } from './figures/FigureTokenNode';
35
+ export { SubFigureTokenNode } from './figures/SubFigureTokenNode';
36
+ export { IncludeGraphicsTokenNode } from './figures/IncludeGraphicsTokenNode';
37
+ export { IncludePdfTokenNode } from './figures/IncludePdfTokenNode';
38
+ export { DiagramTokenNode } from './figures/DiagramTokenNode';
39
+ export { MetadataTokenNode } from './metadata/MetadataTokenNode';
40
+ export { AuthorTokenNode } from './metadata/AuthorTokenNode';
41
+ export { BibitemTokenNode } from './references/BibitemTokenNode';
42
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AAGxB,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAG3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG9D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,54 @@
1
+ // Export all types
2
+ export * from './types';
3
+ export * from './export_types';
4
+ export * from './styles';
5
+ export * from './utils';
6
+ // Export utilities
7
+ export * from './utils/arxiv';
8
+ export * from './utils/citationConverters';
9
+ // Base tokens
10
+ export { AbstractTokenNode } from './base/AbstractTokenNode';
11
+ export { BaseTokenNode } from './base/BaseTokenNode';
12
+ // Document tokens
13
+ export { DocumentTokenNode } from './document/DocumentTokenNode';
14
+ export { TitleTokenNode } from './document/TitleTokenNode';
15
+ export { AbstractSectionTokenNode } from './document/AbstractSectionTokenNode';
16
+ export { SectionTokenNode } from './document/SectionTokenNode';
17
+ export { GroupTokenNode } from './document/GroupTokenNode';
18
+ export { MathEnvTokenNode } from './document/MathEnvTokenNode';
19
+ export { EnvironmentTokenNode } from './document/EnvironmentTokenNode';
20
+ export { AppendixTokenNode } from './document/AppendixTokenNode';
21
+ // Technical tokens
22
+ export { EquationTokenNode } from './technical/EquationTokenNode';
23
+ export { EquationArrayTokenNode, EqArrayRowNode } from './technical/EquationArrayTokenNode';
24
+ export { CodeTokenNode } from './technical/CodeTokenNode';
25
+ export { AlgorithmTokenNode, AlgorithmicTokenNode } from './technical/AlgorithmTokenNode';
26
+ export { CommandTokenNode } from './technical/CommandTokenNode';
27
+ // Content tokens
28
+ export { TextTokenNode } from './content/TextTokenNode';
29
+ export { QuoteTokenNode } from './content/QuoteTokenNode';
30
+ // References tokens
31
+ export { CitationTokenNode } from './references/CitationTokenNode';
32
+ export { ReferenceTokenNode } from './references/ReferenceTokenNode';
33
+ export { FootnoteTokenNode } from './references/FootnoteTokenNode';
34
+ export { UrlTokenNode } from './references/UrlTokenNode';
35
+ // Lists tokens
36
+ export { ListTokenNode } from './lists/ListTokenNode';
37
+ export { ListItemTokenNode } from './lists/ListItemTokenNode';
38
+ // Tables tokens
39
+ export { TableTokenNode } from './tables/TableTokenNode';
40
+ export { SubTableTokenNode } from './tables/SubTableTokenNode';
41
+ export { TabularTokenNode } from './tables/TabularTokenNode';
42
+ export { CaptionTokenNode } from './content/CaptionTokenNode';
43
+ // Figures tokens
44
+ export { FigureTokenNode } from './figures/FigureTokenNode';
45
+ export { SubFigureTokenNode } from './figures/SubFigureTokenNode';
46
+ export { IncludeGraphicsTokenNode } from './figures/IncludeGraphicsTokenNode';
47
+ export { IncludePdfTokenNode } from './figures/IncludePdfTokenNode';
48
+ export { DiagramTokenNode } from './figures/DiagramTokenNode';
49
+ // metadata tokens
50
+ export { MetadataTokenNode } from './metadata/MetadataTokenNode';
51
+ export { AuthorTokenNode } from './metadata/AuthorTokenNode';
52
+ // bibliography tokens
53
+ export { BibitemTokenNode } from './references/BibitemTokenNode';
54
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AAExB,mBAAmB;AACnB,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAE3C,cAAc;AACd,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,kBAAkB;AAClB,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,mBAAmB;AACnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,oBAAoB;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,eAAe;AACf,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,gBAAgB;AAChB,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,iBAAiB;AACjB,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,kBAAkB;AAClB,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,sBAAsB;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { ListItemToken } from '../types';
2
+ import { ITokenNodeFactory } from '../base/ITokenNodeFactory';
3
+ import { BaseEnvTokenNode } from '../document/BaseEnvTokenNode';
4
+ import { CopyContentOptions, LatexExportOptions, MarkdownExportOptions } from '../export_types';
5
+ export declare class ListItemTokenNode extends BaseEnvTokenNode {
6
+ protected tokenFactory?: ITokenNodeFactory | undefined;
7
+ constructor(token: ListItemToken, id?: string, tokenFactory?: ITokenNodeFactory | undefined);
8
+ get token(): ListItemToken;
9
+ getCopyContent(options?: CopyContentOptions): string;
10
+ getLatexContent(options?: LatexExportOptions): string;
11
+ getTooltipContent(): string | null;
12
+ getReferenceText(): string | null;
13
+ getMarkdownContent(options?: MarkdownExportOptions): string;
14
+ }
15
+ //# sourceMappingURL=ListItemTokenNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListItemTokenNode.d.ts","sourceRoot":"","sources":["../../src/lists/ListItemTokenNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAY,MAAM,UAAU,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAMhG,qBAAa,iBAAkB,SAAQ,gBAAgB;IAInD,SAAS,CAAC,YAAY,CAAC,EAAE,iBAAiB;gBAF1C,KAAK,EAAE,aAAa,EACpB,EAAE,CAAC,EAAE,MAAM,EACD,YAAY,CAAC,EAAE,iBAAiB,YAAA;IAK5C,IAAI,KAAK,IAAI,aAAa,CAEzB;IAED,cAAc,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM;IAKpD,eAAe,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM;IAOrD,iBAAiB,IAAI,MAAM,GAAG,IAAI;IAalC,gBAAgB;IAuBhB,kBAAkB,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM;CAgC5D"}
@@ -0,0 +1,91 @@
1
+ import { ListType } from '../types';
2
+ import { BaseTokenNode } from '../base/BaseTokenNode';
3
+ import { BaseEnvTokenNode } from '../document/BaseEnvTokenNode';
4
+ import { ListTokenNode } from './ListTokenNode';
5
+ import { AbstractTokenNode } from '../base/AbstractTokenNode';
6
+ const convertNumberToChar = (index) => {
7
+ return String.fromCharCode(97 + index); // a, b, c, ...
8
+ };
9
+ export class ListItemTokenNode extends BaseEnvTokenNode {
10
+ tokenFactory;
11
+ constructor(token, id, tokenFactory) {
12
+ super(token, id, tokenFactory);
13
+ this.tokenFactory = tokenFactory;
14
+ }
15
+ get token() {
16
+ return this._token;
17
+ }
18
+ getCopyContent(options) {
19
+ const data = this.getContentData();
20
+ return BaseTokenNode.GetCopyContent(data, options);
21
+ }
22
+ getLatexContent(options) {
23
+ const titleData = BaseTokenNode.GetCopyContent(this.getTitleData());
24
+ let title = titleData.length > 0 ? `[${titleData}]` : '';
25
+ return `\\item${title} ${BaseTokenNode.GetLatexContent(this.getContentData(), options)}`;
26
+ }
27
+ getTooltipContent() {
28
+ let content = '';
29
+ if (this.hasChildren()) {
30
+ content = this.getChildren()
31
+ .map((child) => child.getCopyContent() ?? '')
32
+ .join('\n');
33
+ }
34
+ if (content.length > 200) {
35
+ content = content.slice(0, 200) + '...';
36
+ }
37
+ return content;
38
+ }
39
+ getReferenceText() {
40
+ const titleStr = this.getTitleStr();
41
+ if (titleStr.length > 0) {
42
+ return 'Item ' + titleStr;
43
+ }
44
+ const parent = this.parent;
45
+ if (parent instanceof ListTokenNode) {
46
+ const listType = parent.listType;
47
+ const index = parent.getListItemIndex(this);
48
+ if (index !== -1) {
49
+ if (listType === ListType.ENUMERATE) {
50
+ const depth = parent.computeDepth();
51
+ // in latex, nested enumerate lists return as a/b/c
52
+ if (depth >= 1) {
53
+ return `Item ${convertNumberToChar(index)}`;
54
+ }
55
+ }
56
+ return `Item ${index + 1}`;
57
+ }
58
+ }
59
+ return null;
60
+ }
61
+ getMarkdownContent(options) {
62
+ const parent = this.parent;
63
+ const titleData = this.getTitleData();
64
+ const contentData = this.getContentData();
65
+ let marker = '-'; // default bullet
66
+ let indentation = '';
67
+ if (parent instanceof ListTokenNode) {
68
+ const listType = parent.listType;
69
+ const depth = parent.computeDepth();
70
+ const data = parent.getData();
71
+ const index = data.indexOf(this);
72
+ // Calculate indentation (2 spaces per level)
73
+ indentation = ' '.repeat(depth);
74
+ if (listType === ListType.ENUMERATE) {
75
+ marker = `${index + 1}.`;
76
+ }
77
+ else if (listType === ListType.ITEMIZE) {
78
+ marker = '-';
79
+ }
80
+ else if (listType === ListType.DESCRIPTION) {
81
+ // Description list: **term**: description
82
+ const titleStr = AbstractTokenNode.GetMarkdownContent(titleData, options);
83
+ const contentStr = AbstractTokenNode.GetMarkdownContent(contentData, options);
84
+ return `${indentation}**${titleStr}**: ${contentStr}`;
85
+ }
86
+ }
87
+ const contentStr = AbstractTokenNode.GetMarkdownContent(contentData, options);
88
+ return `${indentation}${marker} ${contentStr.trim()}`;
89
+ }
90
+ }
91
+ //# sourceMappingURL=ListItemTokenNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListItemTokenNode.js","sourceRoot":"","sources":["../../src/lists/ListItemTokenNode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { ListToken } from '../types';
2
+ import { BaseTokenNode } from '../base/BaseTokenNode';
3
+ import { ITokenNodeFactory } from '../base/ITokenNodeFactory';
4
+ import { ListItemTokenNode } from './ListItemTokenNode';
5
+ import { LatexExportOptions, MarkdownExportOptions } from '../export_types';
6
+ export declare class ListTokenNode extends BaseTokenNode {
7
+ protected tokenFactory?: ITokenNodeFactory | undefined;
8
+ constructor(token: ListToken, id?: string, tokenFactory?: ITokenNodeFactory | undefined);
9
+ get token(): ListToken;
10
+ hasCustomBullets(): boolean;
11
+ getData(): ListItemTokenNode[];
12
+ get isInline(): boolean;
13
+ get listType(): import("..").ListType;
14
+ computeDepth(): number;
15
+ getLatexContent(options?: LatexExportOptions): string;
16
+ getMarkdownContent(options?: MarkdownExportOptions): string;
17
+ getListItemIndex(item: ListItemTokenNode): number;
18
+ }
19
+ //# sourceMappingURL=ListTokenNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListTokenNode.d.ts","sourceRoot":"","sources":["../../src/lists/ListTokenNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAsB,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAEhG,qBAAa,aAAc,SAAQ,aAAa;IAI5C,SAAS,CAAC,YAAY,CAAC,EAAE,iBAAiB;gBAF1C,KAAK,EAAE,SAAS,EAChB,EAAE,CAAC,EAAE,MAAM,EACD,YAAY,CAAC,EAAE,iBAAiB,YAAA;IAK5C,IAAI,KAAK,IAAI,SAAS,CAErB;IAED,gBAAgB;IAIhB,OAAO,IAAI,iBAAiB,EAAE;IAI9B,IAAI,QAAQ,YAEX;IAED,IAAI,QAAQ,0BAEX;IAED,YAAY,IAAI,MAAM;IAYtB,eAAe,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM;IASrD,kBAAkB,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM;IAS3D,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM;CAGlD"}
@@ -0,0 +1,52 @@
1
+ import { BaseTokenNode } from '../base/BaseTokenNode';
2
+ import { ListItemTokenNode } from './ListItemTokenNode';
3
+ export class ListTokenNode extends BaseTokenNode {
4
+ tokenFactory;
5
+ constructor(token, id, tokenFactory) {
6
+ super(token, id, tokenFactory);
7
+ this.tokenFactory = tokenFactory;
8
+ }
9
+ get token() {
10
+ return this._token;
11
+ }
12
+ hasCustomBullets() {
13
+ return this.getData().some((item) => item instanceof ListItemTokenNode && item.getTitleData().length > 0);
14
+ }
15
+ getData() {
16
+ return this.getChildren();
17
+ }
18
+ get isInline() {
19
+ return this.token.inline ?? false;
20
+ }
21
+ get listType() {
22
+ return this.token.name;
23
+ }
24
+ computeDepth() {
25
+ let depth = 0;
26
+ let currentParent = this.parent;
27
+ while (currentParent) {
28
+ if (currentParent instanceof ListTokenNode) {
29
+ return currentParent.computeDepth() + 1;
30
+ }
31
+ currentParent = currentParent.parent;
32
+ }
33
+ return depth;
34
+ }
35
+ getLatexContent(options) {
36
+ const prefix = `\\begin{${this.listType}}`;
37
+ const suffix = `\\end{${this.listType}}`;
38
+ const content = super.getLatexContent(options);
39
+ return `${prefix}\n${content}\n${suffix}\n`;
40
+ }
41
+ getMarkdownContent(options) {
42
+ const anchorId = this.getAnchorId();
43
+ const anchor = anchorId ? `<a id="${anchorId}"></a>\n\n` : '';
44
+ // Lists are just containers, children (ListItemTokenNode) handle formatting
45
+ const content = super.getMarkdownContent(options);
46
+ return `${anchor}${content}\n\n`;
47
+ }
48
+ getListItemIndex(item) {
49
+ return this.getData().indexOf(item);
50
+ }
51
+ }
52
+ //# sourceMappingURL=ListTokenNode.js.map