@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
package/README.md
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# @sciencestack/tokens
|
|
2
|
+
|
|
3
|
+
TypeScript types and node implementations for ScienceStack AST tokens.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @sciencestack/tokens
|
|
9
|
+
# or
|
|
10
|
+
pnpm add @sciencestack/tokens
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import {
|
|
17
|
+
TokenType,
|
|
18
|
+
DocumentToken,
|
|
19
|
+
TextToken,
|
|
20
|
+
EquationToken,
|
|
21
|
+
SectionToken,
|
|
22
|
+
// ... and many more
|
|
23
|
+
} from '@sciencestack/tokens';
|
|
24
|
+
|
|
25
|
+
// Use types for type safety
|
|
26
|
+
const textToken: TextToken = {
|
|
27
|
+
type: TokenType.TEXT,
|
|
28
|
+
content: 'Hello, world!',
|
|
29
|
+
id: 'text-1'
|
|
30
|
+
};
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## What's Included
|
|
34
|
+
|
|
35
|
+
### Core Types
|
|
36
|
+
- `TokenType` - Enum of all token types
|
|
37
|
+
- Token interfaces for all AST nodes (Document, Section, Text, Equation, etc.)
|
|
38
|
+
- Display types, list types, and other enums
|
|
39
|
+
|
|
40
|
+
### Token Node Classes
|
|
41
|
+
- `DocumentTokenNode`, `TextTokenNode`, `EquationTokenNode`, etc.
|
|
42
|
+
- Full implementations for all token types
|
|
43
|
+
|
|
44
|
+
### Utilities
|
|
45
|
+
- Style mappings (`STYLE_TO_TAILWIND`)
|
|
46
|
+
- Token manipulation utilities
|
|
47
|
+
- Type guards and helpers
|
|
48
|
+
|
|
49
|
+
## Token Types
|
|
50
|
+
|
|
51
|
+
The package includes types for:
|
|
52
|
+
|
|
53
|
+
- **Document Structure**: Document, Title, Section, Abstract, Appendix
|
|
54
|
+
- **Text Content**: Text, Quote, Group
|
|
55
|
+
- **Math & Technical**: Equation, EquationArray, Code, Algorithm
|
|
56
|
+
- **Figures & Tables**: Figure, SubFigure, Table, Tabular, Caption
|
|
57
|
+
- **References**: Citation, Reference, Footnote, URL, Bibliography
|
|
58
|
+
- **Lists**: List, ListItem (enumerate, itemize, description)
|
|
59
|
+
- **Environments**: Environment, MathEnv
|
|
60
|
+
- **Graphics**: IncludeGraphics, IncludePDF, Diagram
|
|
61
|
+
- **Metadata**: Author, Affiliation, Keywords
|
|
62
|
+
|
|
63
|
+
## For SDK Developers
|
|
64
|
+
|
|
65
|
+
This package is the foundation for the ScienceStack SDK. Use these types to:
|
|
66
|
+
- Build type-safe operations
|
|
67
|
+
- Validate AST structures
|
|
68
|
+
- Create custom token processors
|
|
69
|
+
- Integrate with ScienceStack services
|
|
70
|
+
|
|
71
|
+
## Development
|
|
72
|
+
|
|
73
|
+
### Testing
|
|
74
|
+
|
|
75
|
+
The package includes comprehensive test coverage (87 tests):
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
# Run tests
|
|
79
|
+
pnpm test
|
|
80
|
+
|
|
81
|
+
# Run tests in watch mode
|
|
82
|
+
pnpm test:watch
|
|
83
|
+
|
|
84
|
+
# Generate coverage report
|
|
85
|
+
pnpm test:coverage
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
See [TESTING.md](./TESTING.md) for detailed testing documentation.
|
|
89
|
+
|
|
90
|
+
### Building
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
# Build TypeScript
|
|
94
|
+
pnpm build
|
|
95
|
+
|
|
96
|
+
# Watch mode
|
|
97
|
+
pnpm dev
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## License
|
|
101
|
+
|
|
102
|
+
MIT
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { IToken, TokenType } from '../types';
|
|
2
|
+
import { CopyContentOptions, LatexExportOptions, MarkdownExportOptions, JSONExportOptions } from '../export_types';
|
|
3
|
+
import { NodeRoles } from './NodeRoles';
|
|
4
|
+
export declare abstract class AbstractTokenNode {
|
|
5
|
+
private _id;
|
|
6
|
+
protected _parent: AbstractTokenNode | null;
|
|
7
|
+
protected _children: AbstractTokenNode[];
|
|
8
|
+
protected _token: IToken;
|
|
9
|
+
role: NodeRoles;
|
|
10
|
+
constructor(token: IToken, id?: string, role?: NodeRoles);
|
|
11
|
+
get isInline(): boolean;
|
|
12
|
+
get id(): string;
|
|
13
|
+
get token(): IToken;
|
|
14
|
+
get type(): TokenType;
|
|
15
|
+
get parent(): AbstractTokenNode | null;
|
|
16
|
+
get children(): AbstractTokenNode[];
|
|
17
|
+
get styles(): string[] | undefined;
|
|
18
|
+
get labels(): string[];
|
|
19
|
+
set parent(node: AbstractTokenNode | null);
|
|
20
|
+
addChild(child: AbstractTokenNode): void;
|
|
21
|
+
removeChild(child: AbstractTokenNode): void;
|
|
22
|
+
clearChildren(): void;
|
|
23
|
+
getRoot(): AbstractTokenNode;
|
|
24
|
+
getDepth(): number;
|
|
25
|
+
/**
|
|
26
|
+
* Finds the first parent node that matches the given predicate
|
|
27
|
+
* @param predicate A function that takes a TokenNode and returns a boolean
|
|
28
|
+
* @returns The first matching parent node or null if none found
|
|
29
|
+
*/
|
|
30
|
+
findParentMatching(predicate: (node: AbstractTokenNode) => boolean): AbstractTokenNode | null;
|
|
31
|
+
hasChildren(): boolean;
|
|
32
|
+
getChildren(): AbstractTokenNode[];
|
|
33
|
+
abstract getData(nodeType?: NodeRoles): any;
|
|
34
|
+
isRoot(): boolean;
|
|
35
|
+
isLeaf(): boolean;
|
|
36
|
+
getFirstChild(): AbstractTokenNode | null;
|
|
37
|
+
getLastChild(): AbstractTokenNode | null;
|
|
38
|
+
/**
|
|
39
|
+
* Gets the first leaf node in this subtree (the leftmost node with no children)
|
|
40
|
+
* @returns The first leaf node or this node if it's a leaf
|
|
41
|
+
*/
|
|
42
|
+
getFirstLeaf(): AbstractTokenNode;
|
|
43
|
+
/**
|
|
44
|
+
* Gets the last leaf node in this subtree (the rightmost node with no children)
|
|
45
|
+
* @returns The last leaf node or this node if it's a leaf
|
|
46
|
+
*/
|
|
47
|
+
getLastLeaf(): AbstractTokenNode;
|
|
48
|
+
static GetCopyContent(nodes: AbstractTokenNode[], options?: CopyContentOptions): string;
|
|
49
|
+
static GetLatexContent(nodes: AbstractTokenNode[], options?: LatexExportOptions): string;
|
|
50
|
+
static GetMarkdownContent(nodes: AbstractTokenNode[], options?: MarkdownExportOptions): string;
|
|
51
|
+
static GetJSONContent(nodes: AbstractTokenNode[], options?: JSONExportOptions): any[];
|
|
52
|
+
/**
|
|
53
|
+
* Returns raw text content, optionally with character offsets for partial extraction.
|
|
54
|
+
* Used primarily for text selection and annotation systems.
|
|
55
|
+
*/
|
|
56
|
+
abstract getCopyContent(options?: CopyContentOptions): string;
|
|
57
|
+
/**
|
|
58
|
+
* Returns LaTeX-formatted content with proper escaping and styling.
|
|
59
|
+
* Always returns full content (no partial extraction).
|
|
60
|
+
* Used for LaTeX export and copy operations.
|
|
61
|
+
*/
|
|
62
|
+
abstract getLatexContent(options?: LatexExportOptions): string;
|
|
63
|
+
abstract getMarkdownContent(options?: MarkdownExportOptions): string;
|
|
64
|
+
/**
|
|
65
|
+
* Returns JSON-formatted content (token structure) for export.
|
|
66
|
+
* Always returns full content (no partial extraction).
|
|
67
|
+
* Used for JSON export operations.
|
|
68
|
+
*/
|
|
69
|
+
getJSONContent(options?: JSONExportOptions): {
|
|
70
|
+
type: TokenType;
|
|
71
|
+
id?: string;
|
|
72
|
+
styles?: string[];
|
|
73
|
+
labels?: string[];
|
|
74
|
+
};
|
|
75
|
+
getTooltipContent(): string | null;
|
|
76
|
+
findById(id: string): AbstractTokenNode | null;
|
|
77
|
+
/**
|
|
78
|
+
* Finds the first node with the specified label
|
|
79
|
+
* @param label The label to search for
|
|
80
|
+
* @returns The first matching node or null if none found
|
|
81
|
+
*/
|
|
82
|
+
findByLabel(label: string): AbstractTokenNode | null;
|
|
83
|
+
/**
|
|
84
|
+
* Gets the next sibling node if it exists
|
|
85
|
+
* @returns The next sibling node or null if none exists
|
|
86
|
+
*/
|
|
87
|
+
getNextSibling(): AbstractTokenNode | null;
|
|
88
|
+
/**
|
|
89
|
+
* Gets the previous sibling node if it exists
|
|
90
|
+
* @returns The previous sibling node or null if none exists
|
|
91
|
+
*/
|
|
92
|
+
getPreviousSibling(): AbstractTokenNode | null;
|
|
93
|
+
toPlainObject(): object;
|
|
94
|
+
getAnchorId(): string | null;
|
|
95
|
+
/**
|
|
96
|
+
* For \ref displays of the tokennode (if label exists)
|
|
97
|
+
*/
|
|
98
|
+
getReferenceText(): string | null;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=AbstractTokenNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbstractTokenNode.d.ts","sourceRoot":"","sources":["../../src/base/AbstractTokenNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { IsInlineToken } from '../styles';
|
|
2
|
+
import { NodeRoles } from './NodeRoles';
|
|
3
|
+
import { nanoid } from 'nanoid';
|
|
4
|
+
export class AbstractTokenNode {
|
|
5
|
+
_id;
|
|
6
|
+
_parent = null;
|
|
7
|
+
_children = [];
|
|
8
|
+
_token;
|
|
9
|
+
role = NodeRoles.CONTENT;
|
|
10
|
+
constructor(token, id, role = NodeRoles.CONTENT) {
|
|
11
|
+
this._token = token;
|
|
12
|
+
this._id = id ?? token.id ?? nanoid();
|
|
13
|
+
this.role = role;
|
|
14
|
+
}
|
|
15
|
+
get isInline() {
|
|
16
|
+
return IsInlineToken(this.token);
|
|
17
|
+
}
|
|
18
|
+
// Getter for the node's id
|
|
19
|
+
get id() {
|
|
20
|
+
return this._id;
|
|
21
|
+
}
|
|
22
|
+
// Other getters
|
|
23
|
+
get token() {
|
|
24
|
+
return this._token;
|
|
25
|
+
}
|
|
26
|
+
get type() {
|
|
27
|
+
return this._token.type;
|
|
28
|
+
}
|
|
29
|
+
get parent() {
|
|
30
|
+
return this._parent;
|
|
31
|
+
}
|
|
32
|
+
get children() {
|
|
33
|
+
return this._children;
|
|
34
|
+
}
|
|
35
|
+
get styles() {
|
|
36
|
+
return this._token.styles;
|
|
37
|
+
}
|
|
38
|
+
get labels() {
|
|
39
|
+
return this._token.labels ?? [];
|
|
40
|
+
}
|
|
41
|
+
// Setter for parent
|
|
42
|
+
set parent(node) {
|
|
43
|
+
this._parent = node;
|
|
44
|
+
}
|
|
45
|
+
addChild(child) {
|
|
46
|
+
this._children.push(child);
|
|
47
|
+
child.parent = this;
|
|
48
|
+
}
|
|
49
|
+
removeChild(child) {
|
|
50
|
+
const index = this._children.indexOf(child);
|
|
51
|
+
if (index !== -1) {
|
|
52
|
+
this._children.splice(index, 1);
|
|
53
|
+
child.parent = null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
clearChildren() {
|
|
57
|
+
this._children.forEach((child) => (child.parent = null));
|
|
58
|
+
this._children = [];
|
|
59
|
+
}
|
|
60
|
+
// Tree traversal methods
|
|
61
|
+
getRoot() {
|
|
62
|
+
let current = this;
|
|
63
|
+
while (current.parent !== null) {
|
|
64
|
+
current = current.parent;
|
|
65
|
+
}
|
|
66
|
+
return current;
|
|
67
|
+
}
|
|
68
|
+
getDepth() {
|
|
69
|
+
let depth = 0;
|
|
70
|
+
let current = this;
|
|
71
|
+
while (current.parent !== null) {
|
|
72
|
+
depth++;
|
|
73
|
+
current = current.parent;
|
|
74
|
+
}
|
|
75
|
+
return depth;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Finds the first parent node that matches the given predicate
|
|
79
|
+
* @param predicate A function that takes a TokenNode and returns a boolean
|
|
80
|
+
* @returns The first matching parent node or null if none found
|
|
81
|
+
*/
|
|
82
|
+
findParentMatching(predicate) {
|
|
83
|
+
let current = this.parent;
|
|
84
|
+
while (current !== null) {
|
|
85
|
+
if (predicate(current)) {
|
|
86
|
+
return current;
|
|
87
|
+
}
|
|
88
|
+
current = current.parent;
|
|
89
|
+
}
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
// Utility methods
|
|
93
|
+
hasChildren() {
|
|
94
|
+
return this._children.length > 0;
|
|
95
|
+
}
|
|
96
|
+
getChildren() {
|
|
97
|
+
return this._children.slice();
|
|
98
|
+
}
|
|
99
|
+
isRoot() {
|
|
100
|
+
return this._parent === null;
|
|
101
|
+
}
|
|
102
|
+
isLeaf() {
|
|
103
|
+
return this._children.length === 0;
|
|
104
|
+
}
|
|
105
|
+
getFirstChild() {
|
|
106
|
+
return this._children[0] ?? null;
|
|
107
|
+
}
|
|
108
|
+
getLastChild() {
|
|
109
|
+
return this._children[this._children.length - 1] ?? null;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Gets the first leaf node in this subtree (the leftmost node with no children)
|
|
113
|
+
* @returns The first leaf node or this node if it's a leaf
|
|
114
|
+
*/
|
|
115
|
+
getFirstLeaf() {
|
|
116
|
+
let current = this;
|
|
117
|
+
while (current.hasChildren()) {
|
|
118
|
+
current = current.getFirstChild();
|
|
119
|
+
}
|
|
120
|
+
return current;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Gets the last leaf node in this subtree (the rightmost node with no children)
|
|
124
|
+
* @returns The last leaf node or this node if it's a leaf
|
|
125
|
+
*/
|
|
126
|
+
getLastLeaf() {
|
|
127
|
+
let current = this;
|
|
128
|
+
while (current.hasChildren()) {
|
|
129
|
+
current = current.getLastChild();
|
|
130
|
+
}
|
|
131
|
+
return current;
|
|
132
|
+
}
|
|
133
|
+
static GetCopyContent(nodes, options) {
|
|
134
|
+
let content = '';
|
|
135
|
+
for (let node of nodes) {
|
|
136
|
+
if (!node.isInline)
|
|
137
|
+
content += '\n';
|
|
138
|
+
content += node.getCopyContent(options);
|
|
139
|
+
}
|
|
140
|
+
return content;
|
|
141
|
+
}
|
|
142
|
+
static GetLatexContent(nodes, options) {
|
|
143
|
+
let content = '';
|
|
144
|
+
for (let node of nodes) {
|
|
145
|
+
if (!node.isInline)
|
|
146
|
+
content += '\n';
|
|
147
|
+
content += node.getLatexContent(options);
|
|
148
|
+
}
|
|
149
|
+
return content;
|
|
150
|
+
}
|
|
151
|
+
static GetMarkdownContent(nodes, options) {
|
|
152
|
+
let content = '';
|
|
153
|
+
for (let node of nodes) {
|
|
154
|
+
if (!node.isInline)
|
|
155
|
+
content += '\n\n';
|
|
156
|
+
let markdownContent = node.getMarkdownContent(options);
|
|
157
|
+
content += markdownContent;
|
|
158
|
+
}
|
|
159
|
+
return content;
|
|
160
|
+
}
|
|
161
|
+
static GetJSONContent(nodes, options) {
|
|
162
|
+
const content = [];
|
|
163
|
+
for (let node of nodes) {
|
|
164
|
+
content.push(node.getJSONContent(options));
|
|
165
|
+
}
|
|
166
|
+
return content;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Returns JSON-formatted content (token structure) for export.
|
|
170
|
+
* Always returns full content (no partial extraction).
|
|
171
|
+
* Used for JSON export operations.
|
|
172
|
+
*/
|
|
173
|
+
getJSONContent(options) {
|
|
174
|
+
return { ...this.token };
|
|
175
|
+
}
|
|
176
|
+
getTooltipContent() {
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
// Method to find a node by its ID
|
|
180
|
+
findById(id) {
|
|
181
|
+
if (this._id === id) {
|
|
182
|
+
return this;
|
|
183
|
+
}
|
|
184
|
+
for (const child of this._children) {
|
|
185
|
+
const result = child.findById(id);
|
|
186
|
+
if (result !== null) {
|
|
187
|
+
return result;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Finds the first node with the specified label
|
|
194
|
+
* @param label The label to search for
|
|
195
|
+
* @returns The first matching node or null if none found
|
|
196
|
+
*/
|
|
197
|
+
findByLabel(label) {
|
|
198
|
+
if (this.labels.includes(label)) {
|
|
199
|
+
return this;
|
|
200
|
+
}
|
|
201
|
+
for (const child of this._children) {
|
|
202
|
+
const result = child.findByLabel(label);
|
|
203
|
+
if (result !== null) {
|
|
204
|
+
return result;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return null;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Gets the next sibling node if it exists
|
|
211
|
+
* @returns The next sibling node or null if none exists
|
|
212
|
+
*/
|
|
213
|
+
getNextSibling() {
|
|
214
|
+
if (!this.parent)
|
|
215
|
+
return null;
|
|
216
|
+
const siblings = this.parent.getChildren();
|
|
217
|
+
const currentIndex = siblings.indexOf(this);
|
|
218
|
+
if (currentIndex === -1 || currentIndex === siblings.length - 1)
|
|
219
|
+
return null;
|
|
220
|
+
return siblings[currentIndex + 1];
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Gets the previous sibling node if it exists
|
|
224
|
+
* @returns The previous sibling node or null if none exists
|
|
225
|
+
*/
|
|
226
|
+
getPreviousSibling() {
|
|
227
|
+
if (!this.parent)
|
|
228
|
+
return null;
|
|
229
|
+
const siblings = this.parent.getChildren();
|
|
230
|
+
const currentIndex = siblings.indexOf(this);
|
|
231
|
+
if (currentIndex <= 0)
|
|
232
|
+
return null;
|
|
233
|
+
return siblings[currentIndex - 1];
|
|
234
|
+
}
|
|
235
|
+
toPlainObject() {
|
|
236
|
+
return {
|
|
237
|
+
id: this._id,
|
|
238
|
+
parent: this._parent ? this._parent.id : null,
|
|
239
|
+
children: this._children.map((child) => child.toPlainObject()),
|
|
240
|
+
token: this._token
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
getAnchorId() {
|
|
244
|
+
return null;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* For \ref displays of the tokennode (if label exists)
|
|
248
|
+
*/
|
|
249
|
+
getReferenceText() {
|
|
250
|
+
return null;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=AbstractTokenNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbstractTokenNode.js","sourceRoot":"","sources":["../../src/base/AbstractTokenNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { BaseTokenNode } from './BaseTokenNode';
|
|
2
|
+
import { CaptionToken, TableToken, FigureToken, SubFigureToken, SubTableToken } from '../types';
|
|
3
|
+
import { ITokenNodeFactory } from './ITokenNodeFactory';
|
|
4
|
+
import { CaptionTokenNode } from '../content/CaptionTokenNode';
|
|
5
|
+
import { CopyContentOptions, LatexExportOptions, MarkdownExportOptions } from '../export_types';
|
|
6
|
+
type TableFigureTokens = TableToken | FigureToken | SubFigureToken | SubTableToken;
|
|
7
|
+
export declare abstract class BaseTableFigureTokenNode extends BaseTokenNode {
|
|
8
|
+
protected tokenFactory?: ITokenNodeFactory | undefined;
|
|
9
|
+
protected _captionToken: CaptionToken | undefined;
|
|
10
|
+
constructor(token: TableFigureTokens, id?: string, tokenFactory?: ITokenNodeFactory | undefined);
|
|
11
|
+
get token(): TableFigureTokens;
|
|
12
|
+
get numbering(): string | undefined;
|
|
13
|
+
protected abstract getLabelPrefix(): string;
|
|
14
|
+
abstract getEnvironmentName(): string;
|
|
15
|
+
getTooltipContent(): string | null;
|
|
16
|
+
getAnchorId(): string;
|
|
17
|
+
getCopyContent(options?: CopyContentOptions): string;
|
|
18
|
+
getLatexContent(options?: LatexExportOptions): string;
|
|
19
|
+
getMarkdownContent(options?: MarkdownExportOptions): string;
|
|
20
|
+
getAllCaptions(topLevelOnly?: boolean): CaptionTokenNode[];
|
|
21
|
+
getFirstCaption(): CaptionTokenNode | null;
|
|
22
|
+
getParentFigureOrTable(): BaseTableFigureTokenNode | null;
|
|
23
|
+
getReferenceText(): string | null;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=BaseTableFigureTokenNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseTableFigureTokenNode.d.ts","sourceRoot":"","sources":["../../src/base/BaseTableFigureTokenNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAChG,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAGhG,KAAK,iBAAiB,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,aAAa,CAAC;AACnF,8BAAsB,wBAAyB,SAAQ,aAAa;IAMhE,SAAS,CAAC,YAAY,CAAC,EAAE,iBAAiB;IAL5C,SAAS,CAAC,aAAa,EAAE,YAAY,GAAG,SAAS,CAAC;gBAGhD,KAAK,EAAE,iBAAiB,EACxB,EAAE,CAAC,EAAE,MAAM,EACD,YAAY,CAAC,EAAE,iBAAiB,YAAA;IAQ5C,IAAI,KAAK,IAAI,iBAAiB,CAE7B;IAED,IAAI,SAAS,uBAEZ;IAED,SAAS,CAAC,QAAQ,CAAC,cAAc,IAAI,MAAM;aAC3B,kBAAkB,IAAI,MAAM;IAM5C,iBAAiB;IAOjB,WAAW;IAgBX,cAAc,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM;IAKpD,eAAe,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM;IAMrD,kBAAkB,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM;IAe3D,cAAc,CAAC,YAAY,UAAO;IA2BlC,eAAe,IAAI,gBAAgB,GAAG,IAAI;IAI1C,sBAAsB,IAAI,wBAAwB,GAAG,IAAI;IAWzD,gBAAgB,IAAI,MAAM,GAAG,IAAI;CAelC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { BaseTokenNode } from './BaseTokenNode';
|
|
2
|
+
import { convertTokens2String } from '../utils';
|
|
3
|
+
import { CaptionTokenNode } from '../content/CaptionTokenNode';
|
|
4
|
+
export class BaseTableFigureTokenNode extends BaseTokenNode {
|
|
5
|
+
tokenFactory;
|
|
6
|
+
_captionToken;
|
|
7
|
+
constructor(token, id, tokenFactory) {
|
|
8
|
+
super(token, id, tokenFactory);
|
|
9
|
+
this.tokenFactory = tokenFactory;
|
|
10
|
+
// reset styles
|
|
11
|
+
this.token.styles = [];
|
|
12
|
+
}
|
|
13
|
+
get token() {
|
|
14
|
+
return this._token;
|
|
15
|
+
}
|
|
16
|
+
get numbering() {
|
|
17
|
+
return this.token.numbering;
|
|
18
|
+
}
|
|
19
|
+
// protected _extractLabels() {
|
|
20
|
+
// extractLabelsFromChilds(this.token, (label) => label.startsWith(this.getLabelPrefix()));
|
|
21
|
+
// }
|
|
22
|
+
getTooltipContent() {
|
|
23
|
+
if (this._captionToken) {
|
|
24
|
+
return convertTokens2String(this._captionToken.content);
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
getAnchorId() {
|
|
29
|
+
const anchorId = super.getAnchorId();
|
|
30
|
+
if (anchorId) {
|
|
31
|
+
return anchorId;
|
|
32
|
+
}
|
|
33
|
+
const prefix = this.getLabelPrefix();
|
|
34
|
+
if (this.numbering) {
|
|
35
|
+
return `${prefix}-${this.numbering}`;
|
|
36
|
+
}
|
|
37
|
+
if (this.labels.length > 0) {
|
|
38
|
+
return `${prefix}-${this.labels[0]}`;
|
|
39
|
+
}
|
|
40
|
+
return `${prefix}-${this.id}`;
|
|
41
|
+
}
|
|
42
|
+
getCopyContent(options) {
|
|
43
|
+
const content = super.getCopyContent(options);
|
|
44
|
+
return content;
|
|
45
|
+
}
|
|
46
|
+
getLatexContent(options) {
|
|
47
|
+
const content = super.getLatexContent(options).trim();
|
|
48
|
+
const envName = this.getEnvironmentName().toLowerCase();
|
|
49
|
+
return `\\begin{${envName}}\n${content}\n\\end{${envName}}\n`;
|
|
50
|
+
}
|
|
51
|
+
getMarkdownContent(options) {
|
|
52
|
+
const anchorId = this.getAnchorId();
|
|
53
|
+
const anchor = anchorId ? `<a id="${anchorId}"></a>\n\n` : '';
|
|
54
|
+
// Use environment name and numbering for the heading with underline
|
|
55
|
+
const envName = this.getEnvironmentName();
|
|
56
|
+
const headingText = this.numbering ? `${envName} ${this.numbering}` : envName;
|
|
57
|
+
const heading = `<u><b>${headingText}</b></u>`;
|
|
58
|
+
// Children render normally under this heading
|
|
59
|
+
const content = super.getMarkdownContent(options);
|
|
60
|
+
return `${anchor}${heading}\n\n${content}`;
|
|
61
|
+
}
|
|
62
|
+
getAllCaptions(topLevelOnly = true) {
|
|
63
|
+
// DFS in natural order to find the captions
|
|
64
|
+
const captions = [];
|
|
65
|
+
const traverse = (node) => {
|
|
66
|
+
if (node instanceof CaptionTokenNode) {
|
|
67
|
+
captions.push(node);
|
|
68
|
+
}
|
|
69
|
+
if (topLevelOnly && node instanceof BaseTableFigureTokenNode && node !== this) {
|
|
70
|
+
// Don't traverse into nested table/figure containers (subfigures, subtables, etc.)
|
|
71
|
+
// as they have their own captions that are not siblings of this container's captions
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
for (const child of node.getChildren()) {
|
|
75
|
+
traverse(child);
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
for (const child of this.getChildren()) {
|
|
79
|
+
traverse(child);
|
|
80
|
+
}
|
|
81
|
+
return captions;
|
|
82
|
+
}
|
|
83
|
+
getFirstCaption() {
|
|
84
|
+
return this.getAllCaptions()?.[0] || null;
|
|
85
|
+
}
|
|
86
|
+
getParentFigureOrTable() {
|
|
87
|
+
let parent = this.parent;
|
|
88
|
+
while (parent) {
|
|
89
|
+
if (parent instanceof BaseTableFigureTokenNode) {
|
|
90
|
+
return parent;
|
|
91
|
+
}
|
|
92
|
+
parent = parent.parent;
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
getReferenceText() {
|
|
97
|
+
const caption = this.getFirstCaption();
|
|
98
|
+
if (caption) {
|
|
99
|
+
const refText = caption.getReferenceText();
|
|
100
|
+
if (refText)
|
|
101
|
+
return refText;
|
|
102
|
+
}
|
|
103
|
+
if (!this.numbering) {
|
|
104
|
+
// check parent and use its referencetext
|
|
105
|
+
const parent = this.getParentFigureOrTable();
|
|
106
|
+
if (parent) {
|
|
107
|
+
return parent.getReferenceText();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return `${this.getEnvironmentName()} ${this.numbering}`;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=BaseTableFigureTokenNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseTableFigureTokenNode.js","sourceRoot":"","sources":["../../src/base/BaseTableFigureTokenNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { BaseToken } from '../types';
|
|
2
|
+
import { CopyContentOptions, LatexExportOptions, MarkdownExportOptions, JSONExportOptions } from '../export_types';
|
|
3
|
+
import { AbstractTokenNode } from './AbstractTokenNode';
|
|
4
|
+
import { ITokenNodeFactory } from './ITokenNodeFactory';
|
|
5
|
+
import { NodeRoles } from './NodeRoles';
|
|
6
|
+
export declare class BaseTokenNode extends AbstractTokenNode {
|
|
7
|
+
protected tokenFactory?: ITokenNodeFactory | undefined;
|
|
8
|
+
constructor(token: BaseToken, id?: string, tokenFactory?: ITokenNodeFactory | undefined);
|
|
9
|
+
get token(): BaseToken;
|
|
10
|
+
/**
|
|
11
|
+
* Initialize children from token.content.
|
|
12
|
+
* The created child nodes will have their IDs set when added to this parent.
|
|
13
|
+
*/
|
|
14
|
+
protected _initializeChildren(): void;
|
|
15
|
+
protected _initializeBaseTokensAsChildren(tokens: BaseToken[], nodeRole: NodeRoles): AbstractTokenNode[];
|
|
16
|
+
getCopyContent(options?: CopyContentOptions): string;
|
|
17
|
+
getLatexContent(options?: LatexExportOptions): string;
|
|
18
|
+
getMarkdownContent(options?: MarkdownExportOptions): string;
|
|
19
|
+
getJSONContent(options?: JSONExportOptions): any;
|
|
20
|
+
getTooltipContent(): string | null;
|
|
21
|
+
getClosestParentWithLabel(): BaseTokenNode | null;
|
|
22
|
+
getData(nodeRole?: NodeRoles): string | AbstractTokenNode[] | null;
|
|
23
|
+
getAnchorId(): string | null;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=BaseTokenNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseTokenNode.d.ts","sourceRoot":"","sources":["../../src/base/BaseTokenNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAqB,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,aAAc,SAAQ,iBAAiB;IAIhD,SAAS,CAAC,YAAY,CAAC,EAAE,iBAAiB;gBAF1C,KAAK,EAAE,SAAS,EAChB,EAAE,CAAC,EAAE,MAAM,EACD,YAAY,CAAC,EAAE,iBAAiB,YAAA;IAM5C,IAAI,KAAK,IAAI,SAAS,CAErB;IAED;;;OAGG;IACH,SAAS,CAAC,mBAAmB,IAAI,IAAI;IAOrC,SAAS,CAAC,+BAA+B,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,SAAS;IAiBlF,cAAc,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM;IAcpD,eAAe,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,MAAM;IAgBrD,kBAAkB,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM;IAc3D,cAAc,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,GAAG;IAmChD,iBAAiB,IAAI,MAAM,GAAG,IAAI;IAOlC,yBAAyB,IAAI,aAAa,GAAG,IAAI;IASjD,OAAO,CAAC,QAAQ,CAAC,EAAE,SAAS;IAa5B,WAAW,IAAI,MAAM,GAAG,IAAI;CAG7B"}
|