@kerebron/extension-odt 0.4.27 → 0.4.29

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 (57) hide show
  1. package/esm/ExtensionOdt.d.ts +16 -0
  2. package/esm/ExtensionOdt.d.ts.map +1 -0
  3. package/esm/ExtensionOdt.js +131 -0
  4. package/esm/ExtensionOdt.js.map +1 -0
  5. package/esm/OdtParser.d.ts +70 -0
  6. package/esm/OdtParser.d.ts.map +1 -0
  7. package/esm/OdtParser.js +250 -0
  8. package/esm/OdtParser.js.map +1 -0
  9. package/esm/lists.d.ts +23 -0
  10. package/esm/lists.d.ts.map +1 -0
  11. package/esm/lists.js +24 -0
  12. package/esm/lists.js.map +1 -0
  13. package/esm/node_handlers/basic_node_handlers.d.ts +4 -0
  14. package/esm/node_handlers/basic_node_handlers.d.ts.map +1 -0
  15. package/esm/node_handlers/basic_node_handlers.js +134 -0
  16. package/esm/node_handlers/basic_node_handlers.js.map +1 -0
  17. package/esm/node_handlers/list_node_handlers.d.ts +3 -0
  18. package/esm/node_handlers/list_node_handlers.d.ts.map +1 -0
  19. package/esm/node_handlers/list_node_handlers.js +92 -0
  20. package/esm/node_handlers/list_node_handlers.js.map +1 -0
  21. package/esm/node_handlers/table_node_handlers.d.ts +3 -0
  22. package/esm/node_handlers/table_node_handlers.d.ts.map +1 -0
  23. package/esm/node_handlers/table_node_handlers.js +25 -0
  24. package/esm/node_handlers/table_node_handlers.js.map +1 -0
  25. package/esm/package.json +3 -0
  26. package/esm/postprocess/convertCodeParagraphsToCodeBlocks.d.ts +3 -0
  27. package/esm/postprocess/convertCodeParagraphsToCodeBlocks.d.ts.map +1 -0
  28. package/esm/postprocess/convertCodeParagraphsToCodeBlocks.js +82 -0
  29. package/esm/postprocess/convertCodeParagraphsToCodeBlocks.js.map +1 -0
  30. package/esm/postprocess/convertMathMl.d.ts +3 -0
  31. package/esm/postprocess/convertMathMl.d.ts.map +1 -0
  32. package/esm/postprocess/convertMathMl.js +36 -0
  33. package/esm/postprocess/convertMathMl.js.map +1 -0
  34. package/esm/postprocess/fixContinuedLists.d.ts +3 -0
  35. package/esm/postprocess/fixContinuedLists.d.ts.map +1 -0
  36. package/esm/postprocess/fixContinuedLists.js +81 -0
  37. package/esm/postprocess/fixContinuedLists.js.map +1 -0
  38. package/esm/postprocess/postProcess.d.ts +8 -0
  39. package/esm/postprocess/postProcess.d.ts.map +1 -0
  40. package/esm/postprocess/postProcess.js +13 -0
  41. package/esm/postprocess/postProcess.js.map +1 -0
  42. package/esm/postprocess/removeUnusedBookmarks.d.ts +3 -0
  43. package/esm/postprocess/removeUnusedBookmarks.d.ts.map +1 -0
  44. package/esm/postprocess/removeUnusedBookmarks.js +28 -0
  45. package/esm/postprocess/removeUnusedBookmarks.js.map +1 -0
  46. package/package.json +7 -4
  47. package/src/ExtensionOdt.ts +196 -0
  48. package/src/OdtParser.ts +350 -0
  49. package/src/lists.ts +35 -0
  50. package/src/node_handlers/basic_node_handlers.ts +155 -0
  51. package/src/node_handlers/list_node_handlers.ts +131 -0
  52. package/src/node_handlers/table_node_handlers.ts +28 -0
  53. package/src/postprocess/convertCodeParagraphsToCodeBlocks.ts +118 -0
  54. package/src/postprocess/convertMathMl.ts +56 -0
  55. package/src/postprocess/fixContinuedLists.ts +113 -0
  56. package/src/postprocess/postProcess.ts +23 -0
  57. package/src/postprocess/removeUnusedBookmarks.ts +36 -0
@@ -0,0 +1,16 @@
1
+ import type { Schema } from 'prosemirror-model';
2
+ import { type Converter, type CoreEditor, Extension, type UrlRewriter } from '@kerebron/editor';
3
+ import { OdtParserConfig } from './OdtParser.js';
4
+ import { Command } from '@kerebron/editor/commands';
5
+ export interface OdtConfig extends OdtParserConfig {
6
+ debug?: boolean;
7
+ postProcessCommands?: Command[];
8
+ }
9
+ export declare class ExtensionOdt extends Extension {
10
+ config: OdtConfig;
11
+ name: string;
12
+ urlFromRewriter?: UrlRewriter;
13
+ constructor(config?: OdtConfig);
14
+ getConverters(editor: CoreEditor, schema: Schema): Record<string, Converter>;
15
+ }
16
+ //# sourceMappingURL=ExtensionOdt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtensionOdt.d.ts","sourceRoot":"","sources":["../src/ExtensionOdt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EACL,KAAK,SAAS,EACd,KAAK,UAAU,EACf,SAAS,EACT,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAa,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAGpD,MAAM,WAAW,SAAU,SAAQ,eAAe;IAChD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC;CACjC;AAED,qBAAa,YAAa,SAAQ,SAAS;IAIb,MAAM,EAAE,SAAS;IAH7C,IAAI,SAAS;IACN,eAAe,CAAC,EAAE,WAAW,CAAC;gBAET,MAAM,GAAE,SAAc;IAIzC,aAAa,CACpB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,GACb,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;CAoK7B"}
@@ -0,0 +1,131 @@
1
+ import { Extension, } from '@kerebron/editor';
2
+ import { parse_content, parse_styles, unzip } from '@kerebron/odt-wasm';
3
+ import { OdtParser } from './OdtParser.js';
4
+ import { getDefaultsPostProcessFilters } from './postprocess/postProcess.js';
5
+ import { InputRulesPlugin } from '@kerebron/editor/plugins/input-rules';
6
+ export class ExtensionOdt extends Extension {
7
+ config;
8
+ name = 'odt';
9
+ urlFromRewriter;
10
+ constructor(config = {}) {
11
+ super(config);
12
+ this.config = config;
13
+ }
14
+ getConverters(editor, schema) {
15
+ const config = this.config;
16
+ const odtConverter = {
17
+ fromDoc: async (document) => {
18
+ throw new Error('Not implemented');
19
+ },
20
+ toDoc: async (buffer) => {
21
+ const { doc, filesMap } = odtConverter.odtToJson(buffer);
22
+ const filterCommands = getDefaultsPostProcessFilters({
23
+ doc,
24
+ filesMap,
25
+ }).concat(this.config.postProcessCommands || []);
26
+ const plugin = editor.state.plugins.find((plugin) => plugin instanceof InputRulesPlugin);
27
+ if (plugin) {
28
+ // plugin.props.
29
+ }
30
+ const subEditor = editor.clone();
31
+ subEditor.setDocument(doc.toJSON());
32
+ let modified = false;
33
+ if (this.urlFromRewriter) {
34
+ const imageNodes = [];
35
+ subEditor.getDocument().descendants((node, pos) => {
36
+ if (node.type.name === 'image') {
37
+ imageNodes.push({ node, pos });
38
+ }
39
+ });
40
+ const linkNodes = [];
41
+ subEditor.getDocument().descendants((node, pos) => {
42
+ if (node.marks.find((mark) => mark.type.name === 'link')) {
43
+ linkNodes.push({ node, pos });
44
+ }
45
+ });
46
+ const tr = subEditor.state.tr;
47
+ for (const { node, pos } of linkNodes) {
48
+ const linkMark = node.marks.find((mark) => mark.type.name === 'link');
49
+ if (!linkMark) {
50
+ continue;
51
+ }
52
+ let href = linkMark.attrs.href || '';
53
+ href = await this.urlFromRewriter(href, {
54
+ type: 'A',
55
+ dest: 'kerebron',
56
+ });
57
+ if (href !== linkMark.attrs.href) {
58
+ const newMarks = node.marks.map((mark) => {
59
+ if (mark.type.name === 'link') {
60
+ const markType = this.editor.schema.marks['link'];
61
+ return markType.create({ ...mark.attrs, href });
62
+ }
63
+ return mark;
64
+ });
65
+ const nodeType = this.editor.schema.nodes[node.type.name];
66
+ let replaceNode;
67
+ if (nodeType.isText) {
68
+ replaceNode = this.editor.schema.text(node.text || '', newMarks);
69
+ }
70
+ else {
71
+ replaceNode = nodeType.create(node.attrs, node.content, newMarks);
72
+ }
73
+ tr.replaceWith(tr.mapping.map(pos), tr.mapping.map(pos + node.nodeSize), replaceNode);
74
+ }
75
+ }
76
+ for (const { node, pos } of imageNodes) {
77
+ let src = node.attrs.src || '';
78
+ src = await this.urlFromRewriter(src, {
79
+ type: 'IMG',
80
+ dest: 'kerebron',
81
+ filesMap,
82
+ });
83
+ if (src !== node.attrs.src) {
84
+ const nodeType = this.editor.schema.nodes[node.type.name];
85
+ const replaceNode = nodeType.create({ ...node.attrs, src }, node.content, node.marks);
86
+ tr.replaceWith(tr.mapping.map(pos), tr.mapping.map(pos + node.nodeSize), replaceNode);
87
+ }
88
+ }
89
+ subEditor.dispatchTransaction(tr), modified = true;
90
+ }
91
+ if (filterCommands.length > 0) {
92
+ for (const filter of filterCommands) {
93
+ filter(subEditor.state, (tr) => subEditor.dispatchTransaction(tr));
94
+ }
95
+ modified = true;
96
+ }
97
+ if (modified) {
98
+ return subEditor.getDocument();
99
+ }
100
+ return doc;
101
+ },
102
+ odtToJson: (buffer) => {
103
+ const files = unzip(buffer);
104
+ const filesMap = {};
105
+ for (const k of files.keys()) {
106
+ filesMap[k] = Uint8Array.from(files.get(k));
107
+ }
108
+ const stylesTree = parse_styles(files.get('styles.xml'));
109
+ const contentTree = parse_content(files.get('content.xml'));
110
+ if (this.config.debug) {
111
+ const event = new CustomEvent('odt:parsed', {
112
+ detail: {
113
+ stylesTree,
114
+ contentTree,
115
+ filesMap,
116
+ },
117
+ });
118
+ this.editor.dispatchEvent(event);
119
+ }
120
+ const parser = new OdtParser(editor.schema, this.config);
121
+ parser.filesMap = filesMap;
122
+ const doc = parser.parse({ ...filesMap, contentTree, stylesTree });
123
+ return { doc, stylesTree, contentTree, filesMap };
124
+ },
125
+ };
126
+ return {
127
+ 'application/vnd.oasis.opendocument.text': odtConverter,
128
+ };
129
+ }
130
+ }
131
+ //# sourceMappingURL=ExtensionOdt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtensionOdt.js","sourceRoot":"","sources":["../src/ExtensionOdt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import { Mark, Node, Schema } from 'prosemirror-model';
2
+ import { ListTracker } from './lists.js';
3
+ export interface OdtElement {
4
+ $value: 'TODO';
5
+ }
6
+ export type NodeHandler = (ctx: OdtStashContext, value: any) => void;
7
+ interface ListStyle {
8
+ '@name': string;
9
+ }
10
+ interface Style {
11
+ '@name': string;
12
+ '@parent-style-name'?: string;
13
+ styles: string[];
14
+ }
15
+ interface StylesTree {
16
+ styles: {
17
+ 'list-style': Array<ListStyle>;
18
+ 'style': Array<Style>;
19
+ };
20
+ }
21
+ interface AutomaticStyles {
22
+ 'style': Array<Style>;
23
+ }
24
+ export declare function resolveStyle(stylesTree: StylesTree, automaticStyles: AutomaticStyles, name: string): Style;
25
+ export interface TaggedEnum {
26
+ tag: string;
27
+ value: any;
28
+ }
29
+ export declare function tagEnum(item: any): {
30
+ tag: string;
31
+ value: unknown;
32
+ };
33
+ export declare function iterateChildren(nodes: unknown[], callback: (item: TaggedEnum) => void): void;
34
+ export declare function iterateEnum($value: unknown[]): Array<TaggedEnum>;
35
+ export interface OdtParserConfig {
36
+ }
37
+ export interface OdtContext {
38
+ handlers: Record<string, NodeHandler>;
39
+ content: Node[];
40
+ marks: Mark[];
41
+ meta: Record<string, any>;
42
+ }
43
+ export declare class OdtStashContext {
44
+ readonly schema: Schema;
45
+ readonly stylesTree: StylesTree;
46
+ readonly automaticStyles: AutomaticStyles;
47
+ private ctxStash;
48
+ private currentCtx;
49
+ listTracker: ListTracker;
50
+ constructor(schema: Schema, handlers: Record<string, NodeHandler>, stylesTree: StylesTree, automaticStyles: AutomaticStyles);
51
+ stash(): number;
52
+ unstash(): void;
53
+ openNode(): void;
54
+ closeNode(type: string, attrs?: {}, marks?: readonly Mark[]): Node;
55
+ private createNode;
56
+ createText(text: string): Node | undefined;
57
+ styleToMarks(style: Style): Mark[];
58
+ handle(nodeType: string, value: any): void;
59
+ getElementStyle(element: any): Style;
60
+ get current(): OdtContext;
61
+ }
62
+ export declare class OdtParser {
63
+ private readonly schema;
64
+ private readonly config;
65
+ constructor(schema: Schema, config?: OdtParserConfig);
66
+ filesMap?: Record<string, Uint8Array<ArrayBufferLike>>;
67
+ parse(files: any): Node;
68
+ }
69
+ export {};
70
+ //# sourceMappingURL=OdtParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OdtParser.d.ts","sourceRoot":"","sources":["../src/OdtParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,250 @@
1
+ import { Mark } from 'prosemirror-model';
2
+ import { getBasicNodesHandlers, getInlineNodesHandlers, } from './node_handlers/basic_node_handlers.js';
3
+ import { getListNodesHandlers } from './node_handlers/list_node_handlers.js';
4
+ import { getTableNodesHandlers } from './node_handlers/table_node_handlers.js';
5
+ import { ListTracker } from './lists.js';
6
+ const COURIER_FONTS = ['Courier New', 'Courier', 'Roboto Mono'];
7
+ export function resolveStyle(stylesTree, automaticStyles, name) {
8
+ let style;
9
+ if (!style) {
10
+ style = stylesTree.styles['list-style'].find((item) => item['@name'] === name);
11
+ }
12
+ if (!style) {
13
+ style = stylesTree.styles['style'].find((item) => item['@name'] === name);
14
+ }
15
+ if (!style) {
16
+ style = automaticStyles.style.find((item) => item['@name'] === name);
17
+ }
18
+ if (!style) {
19
+ style = {
20
+ '@name': name,
21
+ };
22
+ }
23
+ style['styles'] = [name];
24
+ if (style['@parent-style-name']) {
25
+ const parentStyle = resolveStyle(stylesTree, automaticStyles, style['@parent-style-name']);
26
+ if (parentStyle) {
27
+ const styles = [...style['styles'], ...parentStyle['styles']];
28
+ for (const key in style) {
29
+ if (typeof style[key] === 'undefined') {
30
+ delete style[key];
31
+ }
32
+ }
33
+ style = {
34
+ ...parentStyle,
35
+ ...style,
36
+ styles,
37
+ };
38
+ }
39
+ }
40
+ return style;
41
+ }
42
+ export function tagEnum(item) {
43
+ if ('string' === typeof item) {
44
+ return {
45
+ tag: item, // '$text',
46
+ value: item,
47
+ };
48
+ }
49
+ if ('object' === typeof item) {
50
+ const entries = Object.entries(item);
51
+ if (entries.length === 1) {
52
+ return {
53
+ tag: entries[0][0],
54
+ value: entries[0][1],
55
+ };
56
+ }
57
+ }
58
+ throw new Error('Incorrect enum: ' + JSON.stringify(item));
59
+ }
60
+ export function iterateChildren(nodes, callback) {
61
+ for (const child of nodes) {
62
+ if ('Unknown' === child) {
63
+ continue;
64
+ }
65
+ const item = tagEnum(child);
66
+ callback(item);
67
+ }
68
+ }
69
+ export function iterateEnum($value) {
70
+ if (!$value) {
71
+ return [];
72
+ }
73
+ return $value.map(tagEnum);
74
+ }
75
+ export class OdtStashContext {
76
+ schema;
77
+ stylesTree;
78
+ automaticStyles;
79
+ ctxStash = [];
80
+ currentCtx;
81
+ listTracker = new ListTracker();
82
+ constructor(schema, handlers, stylesTree, automaticStyles) {
83
+ this.schema = schema;
84
+ this.stylesTree = stylesTree;
85
+ this.automaticStyles = automaticStyles;
86
+ this.currentCtx = {
87
+ handlers,
88
+ content: [],
89
+ marks: [],
90
+ meta: {},
91
+ };
92
+ this.stash();
93
+ }
94
+ stash() {
95
+ this.ctxStash.push(this.currentCtx);
96
+ const funcs = {};
97
+ const handlers = { ...this.currentCtx.handlers };
98
+ const content = this.currentCtx.content;
99
+ const marks = this.currentCtx.marks;
100
+ this.currentCtx = {
101
+ ...structuredClone({
102
+ ...this.currentCtx,
103
+ content: undefined,
104
+ marks: undefined,
105
+ handlers: undefined,
106
+ }),
107
+ ...funcs,
108
+ content,
109
+ marks,
110
+ handlers,
111
+ };
112
+ return this.ctxStash.length - 1;
113
+ }
114
+ unstash() {
115
+ const ctx = this.ctxStash.pop();
116
+ if (!ctx) {
117
+ throw new Error('Unstash failed');
118
+ }
119
+ this.currentCtx = ctx;
120
+ }
121
+ openNode() {
122
+ this.stash();
123
+ this.current.content = [];
124
+ }
125
+ closeNode(type, attrs = {}, marks = Mark.none) {
126
+ const node = this.createNode(type, attrs, marks);
127
+ this.unstash();
128
+ if (node) {
129
+ this.current.content.push(node);
130
+ }
131
+ return node;
132
+ }
133
+ createNode(type, attrs = {}, marks = Mark.none) {
134
+ const nodeType = this.schema.nodes[type];
135
+ if (!nodeType) {
136
+ throw new Error('Invalid node type: ' + type);
137
+ }
138
+ const node = nodeType.createAndFill(attrs, this.current.content, marks);
139
+ if (!node) {
140
+ throw new Error('Error creating node: ' + type);
141
+ }
142
+ return node;
143
+ }
144
+ createText(text) {
145
+ if (!text)
146
+ return;
147
+ return this.schema.text(text, this.current.marks);
148
+ }
149
+ styleToMarks(style) {
150
+ const marks = [];
151
+ const textProperties = style && style['text-properties'] || {};
152
+ if (COURIER_FONTS.indexOf(textProperties['@font-name'] || '') > -1) {
153
+ const markType = this.schema.mark('code');
154
+ marks.push(markType);
155
+ }
156
+ if (textProperties['@font-style'] === 'italic') {
157
+ const markType = this.schema.mark('em');
158
+ marks.push(markType);
159
+ }
160
+ if (textProperties['@font-weight'] === 'bold') {
161
+ const markType = this.schema.mark('strong');
162
+ marks.push(markType);
163
+ }
164
+ return marks;
165
+ }
166
+ handle(nodeType, value) {
167
+ if (!this.current.handlers[nodeType]) {
168
+ throw new Error('No handler for node: ' + nodeType);
169
+ }
170
+ if ('function' !== typeof this.current.handlers[nodeType]) {
171
+ throw new Error('Invalid handler for node: ' + nodeType);
172
+ }
173
+ this.current.handlers[nodeType](this, value);
174
+ }
175
+ getElementStyle(element) {
176
+ const style = ('object' === typeof element && element['@style-name'])
177
+ ? resolveStyle(this.stylesTree, this.automaticStyles, element['@style-name'])
178
+ : {};
179
+ return style;
180
+ }
181
+ get current() {
182
+ return this.currentCtx;
183
+ }
184
+ }
185
+ export class OdtParser {
186
+ schema;
187
+ config;
188
+ constructor(schema, config = {}) {
189
+ this.schema = schema;
190
+ this.config = config;
191
+ }
192
+ filesMap;
193
+ parse(files) {
194
+ const contentTree = files.contentTree;
195
+ const stylesTree = files.stylesTree;
196
+ const handlers = {
197
+ ...getInlineNodesHandlers(),
198
+ ...getBasicNodesHandlers(),
199
+ ...getListNodesHandlers(),
200
+ ...getTableNodesHandlers(),
201
+ 'change-start': {
202
+ // custom(state) {
203
+ // state.textMarks.add({
204
+ // markName: 'change',
205
+ // markAttributes: {},
206
+ // });
207
+ // },
208
+ },
209
+ 'change-end': {
210
+ // custom(state) {
211
+ // state.textMarks.forEach((x) =>
212
+ // x.markName === 'change' ? state.textMarks.delete(x) : x
213
+ // );
214
+ // },
215
+ },
216
+ 'frame': (ctx, odtElement) => {
217
+ if (odtElement.object && odtElement.object['@href']) {
218
+ const fullPath = odtElement.object['@href'].replace(/^\.\//, '') +
219
+ '/content.xml';
220
+ if (files[fullPath]) {
221
+ const content = new TextDecoder().decode(files[fullPath]);
222
+ ctx.openNode();
223
+ ctx.closeNode('math', {
224
+ lang: 'mathml',
225
+ content,
226
+ });
227
+ return;
228
+ }
229
+ }
230
+ if (odtElement.image && odtElement.image['@href']) { // TODO links rewrite
231
+ const alt = odtElement.description?.value || '';
232
+ const src = odtElement.image['@href'];
233
+ ctx.openNode();
234
+ ctx.closeNode('image', {
235
+ src,
236
+ alt,
237
+ });
238
+ }
239
+ },
240
+ 'annotation': () => {
241
+ // ignore: true,
242
+ },
243
+ };
244
+ const ctx = new OdtStashContext(this.schema, handlers, stylesTree, contentTree['automatic-styles']);
245
+ ctx.openNode();
246
+ ctx.handle('body', contentTree.body);
247
+ return ctx.closeNode('doc');
248
+ }
249
+ }
250
+ //# sourceMappingURL=OdtParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OdtParser.js","sourceRoot":"","sources":["../src/OdtParser.ts"],"names":[],"mappings":"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"}
package/esm/lists.d.ts ADDED
@@ -0,0 +1,23 @@
1
+ import { OdtElement } from './OdtParser.js';
2
+ export declare class ListNumbering {
3
+ levels: {
4
+ [level: number]: number;
5
+ };
6
+ levelNodes: {
7
+ [level: number]: Node;
8
+ };
9
+ constructor();
10
+ clearAbove(level: number): void;
11
+ setLevelNode(level: number, node: Node): void;
12
+ }
13
+ export interface List {
14
+ level: number;
15
+ odtElement: OdtElement;
16
+ }
17
+ export declare class ListTracker {
18
+ listStack: List[];
19
+ listNumberings: Map<string, ListNumbering>;
20
+ lastNumbering?: ListNumbering;
21
+ preserveMinLevel: number;
22
+ }
23
+ //# sourceMappingURL=lists.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lists.d.ts","sourceRoot":"","sources":["../src/lists.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,qBAAa,aAAa;IACxB,MAAM,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAM;IACzC,UAAU,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAM;;IAQ3C,UAAU,CAAC,KAAK,EAAE,MAAM;IAMxB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;CAGvC;AAED,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,qBAAa,WAAW;IACtB,SAAS,EAAE,IAAI,EAAE,CAAM;IAEvB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAoC;IAC9E,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,gBAAgB,SAAO;CACxB"}
package/esm/lists.js ADDED
@@ -0,0 +1,24 @@
1
+ export class ListNumbering {
2
+ levels = {};
3
+ levelNodes = {};
4
+ constructor() {
5
+ for (let i = 0; i < 20; i++) {
6
+ this.levels[i] = 1;
7
+ }
8
+ }
9
+ clearAbove(level) {
10
+ for (let i = level + 1; i < 20; i++) {
11
+ this.levels[i] = 1;
12
+ }
13
+ }
14
+ setLevelNode(level, node) {
15
+ this.levelNodes[level] = node;
16
+ }
17
+ }
18
+ export class ListTracker {
19
+ listStack = [];
20
+ listNumberings = new Map();
21
+ lastNumbering;
22
+ preserveMinLevel = 999;
23
+ }
24
+ //# sourceMappingURL=lists.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lists.js","sourceRoot":"","sources":["../src/lists.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IACxB,MAAM,GAAgC,EAAE,CAAC;IACzC,UAAU,GAA8B,EAAE,CAAC;IAE3C;QACE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,UAAU,CAAC,KAAa;QACtB,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,YAAY,CAAC,KAAa,EAAE,IAAU;QACpC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAChC,CAAC;CACF;AAOD,MAAM,OAAO,WAAW;IACtB,SAAS,GAAW,EAAE,CAAC;IAEvB,cAAc,GAA+B,IAAI,GAAG,EAAyB,CAAC;IAC9E,aAAa,CAAiB;IAC9B,gBAAgB,GAAG,GAAG,CAAC;CACxB"}
@@ -0,0 +1,4 @@
1
+ import { NodeHandler } from '../OdtParser.js';
2
+ export declare function getInlineNodesHandlers(): Record<string, NodeHandler>;
3
+ export declare function getBasicNodesHandlers(): Record<string, NodeHandler>;
4
+ //# sourceMappingURL=basic_node_handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic_node_handlers.d.ts","sourceRoot":"","sources":["../../src/node_handlers/basic_node_handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAEhF,wBAAgB,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CA4DpE;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CA0FnE"}