@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.
- package/README.md +102 -0
- package/dist/base/AbstractTokenNode.d.ts +100 -0
- package/dist/base/AbstractTokenNode.d.ts.map +1 -0
- package/dist/base/AbstractTokenNode.js +253 -0
- package/dist/base/AbstractTokenNode.js.map +1 -0
- package/dist/base/BaseTableFigureTokenNode.d.ts +26 -0
- package/dist/base/BaseTableFigureTokenNode.d.ts.map +1 -0
- package/dist/base/BaseTableFigureTokenNode.js +113 -0
- package/dist/base/BaseTableFigureTokenNode.js.map +1 -0
- package/dist/base/BaseTokenNode.d.ts +25 -0
- package/dist/base/BaseTokenNode.d.ts.map +1 -0
- package/dist/base/BaseTokenNode.js +137 -0
- package/dist/base/BaseTokenNode.js.map +1 -0
- package/dist/base/ITokenNodeFactory.d.ts +6 -0
- package/dist/base/ITokenNodeFactory.d.ts.map +1 -0
- package/dist/base/ITokenNodeFactory.js +2 -0
- package/dist/base/ITokenNodeFactory.js.map +1 -0
- package/dist/base/NodeRoles.d.ts +6 -0
- package/dist/base/NodeRoles.d.ts.map +1 -0
- package/dist/base/NodeRoles.js +7 -0
- package/dist/base/NodeRoles.js.map +1 -0
- package/dist/base/TokenNodeFactory.d.ts +9 -0
- package/dist/base/TokenNodeFactory.d.ts.map +1 -0
- package/dist/base/TokenNodeFactory.js +94 -0
- package/dist/base/TokenNodeFactory.js.map +1 -0
- package/dist/content/CaptionTokenNode.d.ts +23 -0
- package/dist/content/CaptionTokenNode.d.ts.map +1 -0
- package/dist/content/CaptionTokenNode.js +79 -0
- package/dist/content/CaptionTokenNode.js.map +1 -0
- package/dist/content/QuoteTokenNode.d.ts +12 -0
- package/dist/content/QuoteTokenNode.d.ts.map +1 -0
- package/dist/content/QuoteTokenNode.js +27 -0
- package/dist/content/QuoteTokenNode.js.map +1 -0
- package/dist/content/TextTokenNode.d.ts +26 -0
- package/dist/content/TextTokenNode.d.ts.map +1 -0
- package/dist/content/TextTokenNode.js +70 -0
- package/dist/content/TextTokenNode.js.map +1 -0
- package/dist/document/AbstractSectionTokenNode.d.ts +12 -0
- package/dist/document/AbstractSectionTokenNode.d.ts.map +1 -0
- package/dist/document/AbstractSectionTokenNode.js +22 -0
- package/dist/document/AbstractSectionTokenNode.js.map +1 -0
- package/dist/document/AppendixTokenNode.d.ts +12 -0
- package/dist/document/AppendixTokenNode.d.ts.map +1 -0
- package/dist/document/AppendixTokenNode.js +24 -0
- package/dist/document/AppendixTokenNode.js.map +1 -0
- package/dist/document/BaseEnvTokenNode.d.ts +20 -0
- package/dist/document/BaseEnvTokenNode.d.ts.map +1 -0
- package/dist/document/BaseEnvTokenNode.js +76 -0
- package/dist/document/BaseEnvTokenNode.js.map +1 -0
- package/dist/document/DocumentTokenNode.d.ts +11 -0
- package/dist/document/DocumentTokenNode.d.ts.map +1 -0
- package/dist/document/DocumentTokenNode.js +17 -0
- package/dist/document/DocumentTokenNode.js.map +1 -0
- package/dist/document/EnvironmentTokenNode.d.ts +12 -0
- package/dist/document/EnvironmentTokenNode.d.ts.map +1 -0
- package/dist/document/EnvironmentTokenNode.js +22 -0
- package/dist/document/EnvironmentTokenNode.js.map +1 -0
- package/dist/document/GroupTokenNode.d.ts +9 -0
- package/dist/document/GroupTokenNode.d.ts.map +1 -0
- package/dist/document/GroupTokenNode.js +16 -0
- package/dist/document/GroupTokenNode.js.map +1 -0
- package/dist/document/MathEnvTokenNode.d.ts +21 -0
- package/dist/document/MathEnvTokenNode.d.ts.map +1 -0
- package/dist/document/MathEnvTokenNode.js +91 -0
- package/dist/document/MathEnvTokenNode.js.map +1 -0
- package/dist/document/SectionTokenNode.d.ts +17 -0
- package/dist/document/SectionTokenNode.d.ts.map +1 -0
- package/dist/document/SectionTokenNode.js +66 -0
- package/dist/document/SectionTokenNode.js.map +1 -0
- package/dist/document/TitleTokenNode.d.ts +11 -0
- package/dist/document/TitleTokenNode.d.ts.map +1 -0
- package/dist/document/TitleTokenNode.js +19 -0
- package/dist/document/TitleTokenNode.js.map +1 -0
- package/dist/export_types.d.ts +46 -0
- package/dist/export_types.d.ts.map +1 -0
- package/dist/export_types.js +27 -0
- package/dist/export_types.js.map +1 -0
- package/dist/figures/DiagramTokenNode.d.ts +22 -0
- package/dist/figures/DiagramTokenNode.d.ts.map +1 -0
- package/dist/figures/DiagramTokenNode.js +62 -0
- package/dist/figures/DiagramTokenNode.js.map +1 -0
- package/dist/figures/FigureTokenNode.d.ts +11 -0
- package/dist/figures/FigureTokenNode.d.ts.map +1 -0
- package/dist/figures/FigureTokenNode.js +18 -0
- package/dist/figures/FigureTokenNode.js.map +1 -0
- package/dist/figures/IncludeGraphicsTokenNode.d.ts +20 -0
- package/dist/figures/IncludeGraphicsTokenNode.d.ts.map +1 -0
- package/dist/figures/IncludeGraphicsTokenNode.js +44 -0
- package/dist/figures/IncludeGraphicsTokenNode.js.map +1 -0
- package/dist/figures/IncludePdfTokenNode.d.ts +18 -0
- package/dist/figures/IncludePdfTokenNode.d.ts.map +1 -0
- package/dist/figures/IncludePdfTokenNode.js +38 -0
- package/dist/figures/IncludePdfTokenNode.js.map +1 -0
- package/dist/figures/SubFigureTokenNode.d.ts +11 -0
- package/dist/figures/SubFigureTokenNode.d.ts.map +1 -0
- package/dist/figures/SubFigureTokenNode.js +18 -0
- package/dist/figures/SubFigureTokenNode.js.map +1 -0
- package/dist/graph/graphTypes.d.ts +42 -0
- package/dist/graph/graphTypes.d.ts.map +1 -0
- package/dist/graph/graphTypes.js +75 -0
- package/dist/graph/graphTypes.js.map +1 -0
- package/dist/graph/index.d.ts +4 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +3 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/mathColors.d.ts +11 -0
- package/dist/graph/mathColors.d.ts.map +1 -0
- package/dist/graph/mathColors.js +20 -0
- package/dist/graph/mathColors.js.map +1 -0
- package/dist/graph/mathDepGraph.d.ts +4 -0
- package/dist/graph/mathDepGraph.d.ts.map +1 -0
- package/dist/graph/mathDepGraph.js +320 -0
- package/dist/graph/mathDepGraph.js.map +1 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +54 -0
- package/dist/index.js.map +1 -0
- package/dist/lists/ListItemTokenNode.d.ts +15 -0
- package/dist/lists/ListItemTokenNode.d.ts.map +1 -0
- package/dist/lists/ListItemTokenNode.js +91 -0
- package/dist/lists/ListItemTokenNode.js.map +1 -0
- package/dist/lists/ListTokenNode.d.ts +19 -0
- package/dist/lists/ListTokenNode.d.ts.map +1 -0
- package/dist/lists/ListTokenNode.js +52 -0
- package/dist/lists/ListTokenNode.js.map +1 -0
- package/dist/metadata/AuthorTokenNode.d.ts +12 -0
- package/dist/metadata/AuthorTokenNode.d.ts.map +1 -0
- package/dist/metadata/AuthorTokenNode.js +39 -0
- package/dist/metadata/AuthorTokenNode.js.map +1 -0
- package/dist/metadata/MetadataTokenNode.d.ts +16 -0
- package/dist/metadata/MetadataTokenNode.d.ts.map +1 -0
- package/dist/metadata/MetadataTokenNode.js +35 -0
- package/dist/metadata/MetadataTokenNode.js.map +1 -0
- package/dist/references/BibitemTokenNode.d.ts +34 -0
- package/dist/references/BibitemTokenNode.d.ts.map +1 -0
- package/dist/references/BibitemTokenNode.js +149 -0
- package/dist/references/BibitemTokenNode.js.map +1 -0
- package/dist/references/CitationTokenNode.d.ts +19 -0
- package/dist/references/CitationTokenNode.d.ts.map +1 -0
- package/dist/references/CitationTokenNode.js +56 -0
- package/dist/references/CitationTokenNode.js.map +1 -0
- package/dist/references/FootnoteTokenNode.d.ts +13 -0
- package/dist/references/FootnoteTokenNode.d.ts.map +1 -0
- package/dist/references/FootnoteTokenNode.js +24 -0
- package/dist/references/FootnoteTokenNode.js.map +1 -0
- package/dist/references/ReferenceTokenNode.d.ts +19 -0
- package/dist/references/ReferenceTokenNode.d.ts.map +1 -0
- package/dist/references/ReferenceTokenNode.js +87 -0
- package/dist/references/ReferenceTokenNode.js.map +1 -0
- package/dist/references/UrlTokenNode.d.ts +17 -0
- package/dist/references/UrlTokenNode.d.ts.map +1 -0
- package/dist/references/UrlTokenNode.js +33 -0
- package/dist/references/UrlTokenNode.js.map +1 -0
- package/dist/styles.d.ts +9 -0
- package/dist/styles.d.ts.map +1 -0
- package/dist/styles.js +122 -0
- package/dist/styles.js.map +1 -0
- package/dist/tables/SubTableTokenNode.d.ts +11 -0
- package/dist/tables/SubTableTokenNode.d.ts.map +1 -0
- package/dist/tables/SubTableTokenNode.js +18 -0
- package/dist/tables/SubTableTokenNode.js.map +1 -0
- package/dist/tables/TableTokenNode.d.ts +11 -0
- package/dist/tables/TableTokenNode.d.ts.map +1 -0
- package/dist/tables/TableTokenNode.js +18 -0
- package/dist/tables/TableTokenNode.js.map +1 -0
- package/dist/tables/TabularTokenNode.d.ts +63 -0
- package/dist/tables/TabularTokenNode.d.ts.map +1 -0
- package/dist/tables/TabularTokenNode.js +318 -0
- package/dist/tables/TabularTokenNode.js.map +1 -0
- package/dist/technical/AlgorithmTokenNode.d.ts +22 -0
- package/dist/technical/AlgorithmTokenNode.d.ts.map +1 -0
- package/dist/technical/AlgorithmTokenNode.js +54 -0
- package/dist/technical/AlgorithmTokenNode.js.map +1 -0
- package/dist/technical/CodeTokenNode.d.ts +16 -0
- package/dist/technical/CodeTokenNode.d.ts.map +1 -0
- package/dist/technical/CodeTokenNode.js +43 -0
- package/dist/technical/CodeTokenNode.js.map +1 -0
- package/dist/technical/CommandTokenNode.d.ts +14 -0
- package/dist/technical/CommandTokenNode.d.ts.map +1 -0
- package/dist/technical/CommandTokenNode.js +26 -0
- package/dist/technical/CommandTokenNode.js.map +1 -0
- package/dist/technical/EquationArrayTokenNode.d.ts +40 -0
- package/dist/technical/EquationArrayTokenNode.d.ts.map +1 -0
- package/dist/technical/EquationArrayTokenNode.js +220 -0
- package/dist/technical/EquationArrayTokenNode.js.map +1 -0
- package/dist/technical/EquationTokenNode.d.ts +19 -0
- package/dist/technical/EquationTokenNode.d.ts.map +1 -0
- package/dist/technical/EquationTokenNode.js +96 -0
- package/dist/technical/EquationTokenNode.js.map +1 -0
- package/dist/tokenProcessing.d.ts +4 -0
- package/dist/tokenProcessing.d.ts.map +1 -0
- package/dist/tokenProcessing.js +19 -0
- package/dist/tokenProcessing.js.map +1 -0
- package/dist/types.d.ts +287 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +90 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/arxiv.d.ts +57 -0
- package/dist/utils/arxiv.d.ts.map +1 -0
- package/dist/utils/arxiv.js +142 -0
- package/dist/utils/arxiv.js.map +1 -0
- package/dist/utils/citationConverters.d.ts +33 -0
- package/dist/utils/citationConverters.d.ts.map +1 -0
- package/dist/utils/citationConverters.js +151 -0
- package/dist/utils/citationConverters.js.map +1 -0
- package/dist/utils.d.ts +14 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +117 -0
- package/dist/utils.js.map +1 -0
- 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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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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
|