@kerebron/extension-odt 0.0.13 → 0.1.1

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 (38) hide show
  1. package/esm/editor/src/CoreEditor.d.ts +3 -8
  2. package/esm/editor/src/CoreEditor.d.ts.map +1 -1
  3. package/esm/editor/src/CoreEditor.js +12 -30
  4. package/esm/editor/src/Extension.d.ts +1 -1
  5. package/esm/editor/src/Extension.d.ts.map +1 -1
  6. package/esm/editor/src/Extension.js +1 -1
  7. package/esm/editor/src/ExtensionManager.js +2 -2
  8. package/esm/editor/src/mod.d.ts +1 -0
  9. package/esm/editor/src/mod.d.ts.map +1 -1
  10. package/esm/editor/src/mod.js +1 -0
  11. package/esm/editor/src/nodeToTreeString.d.ts +4 -0
  12. package/esm/editor/src/nodeToTreeString.d.ts.map +1 -0
  13. package/esm/editor/src/nodeToTreeString.js +53 -0
  14. package/esm/editor/src/utilities/createNodeFromContent.d.ts +2 -6
  15. package/esm/editor/src/utilities/createNodeFromContent.d.ts.map +1 -1
  16. package/esm/editor/src/utilities/createNodeFromContent.js +5 -90
  17. package/esm/extension-odt/src/ExtensionOdt.d.ts +7 -2
  18. package/esm/extension-odt/src/ExtensionOdt.d.ts.map +1 -1
  19. package/esm/extension-odt/src/ExtensionOdt.js +23 -5
  20. package/esm/extension-odt/src/OdtParser.d.ts +72 -3
  21. package/esm/extension-odt/src/OdtParser.d.ts.map +1 -1
  22. package/esm/extension-odt/src/OdtParser.js +375 -113
  23. package/esm/extension-odt/src/postprocess/convertCodeParagraphsToCodeBlocks.d.ts +3 -0
  24. package/esm/extension-odt/src/postprocess/convertCodeParagraphsToCodeBlocks.d.ts.map +1 -0
  25. package/esm/extension-odt/src/postprocess/convertCodeParagraphsToCodeBlocks.js +72 -0
  26. package/esm/extension-odt/src/postprocess/fixContinuedLists.d.ts +3 -0
  27. package/esm/extension-odt/src/postprocess/fixContinuedLists.d.ts.map +1 -0
  28. package/esm/extension-odt/src/postprocess/fixContinuedLists.js +83 -0
  29. package/esm/extension-odt/src/postprocess/postProcess.d.ts +3 -0
  30. package/esm/extension-odt/src/postprocess/postProcess.d.ts.map +1 -0
  31. package/esm/extension-odt/src/postprocess/postProcess.js +10 -0
  32. package/esm/extension-odt/src/postprocess/removeUnusedBookmarks.d.ts +3 -0
  33. package/esm/extension-odt/src/postprocess/removeUnusedBookmarks.d.ts.map +1 -0
  34. package/esm/extension-odt/src/postprocess/removeUnusedBookmarks.js +27 -0
  35. package/package.json +4 -4
  36. package/esm/editor/src/debugDoc.d.ts +0 -3
  37. package/esm/editor/src/debugDoc.d.ts.map +0 -1
  38. package/esm/editor/src/debugDoc.js +0 -33
@@ -0,0 +1,3 @@
1
+ import { Command } from 'prosemirror-state';
2
+ export declare const fixContinuedLists: Command;
3
+ //# sourceMappingURL=fixContinuedLists.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixContinuedLists.d.ts","sourceRoot":"","sources":["../../../../src/extension-odt/src/postprocess/fixContinuedLists.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AA6D5C,eAAO,MAAM,iBAAiB,EAAE,OAsD/B,CAAC"}
@@ -0,0 +1,83 @@
1
+ import { Fragment, Slice, } from 'prosemirror-model';
2
+ import { nodeToTreeString } from '../../../editor/src/mod.js';
3
+ const ANY_LIST = ['ordered_list', 'bullet_list'];
4
+ function getListEndingMaxDepth(list) {
5
+ if (!list) {
6
+ return 0;
7
+ }
8
+ if (ANY_LIST.indexOf(list.type.name) === -1) {
9
+ return 0;
10
+ }
11
+ if (list.lastChild?.type.name === 'list_item') {
12
+ return 1 + getListEndingMaxDepth(list.lastChild?.lastChild);
13
+ }
14
+ return 0;
15
+ }
16
+ function convertToStitchingLevels(list, array = []) {
17
+ if (ANY_LIST.indexOf(list.type.name) === -1) {
18
+ throw new Error(`Incorrect list type: ${list.type.name}`);
19
+ }
20
+ if (!list?.firstChild) {
21
+ return array;
22
+ }
23
+ const firstChildParagraph = list.firstChild.firstChild;
24
+ if (firstChildParagraph?.content.size === 0) {
25
+ if (list?.firstChild.children.length < 2) {
26
+ array.push(new Slice(Fragment.from([]), 0, 0));
27
+ // array.push(list.slice(list.firstChild.nodeSize, list.firstChild.nodeSize)) // empty slice
28
+ return array;
29
+ }
30
+ const subList = list?.firstChild.child(1);
31
+ array.push(list.slice(list.firstChild.nodeSize, list.content.size));
32
+ if (ANY_LIST.indexOf(subList?.type.name) > -1) {
33
+ convertToStitchingLevels(subList, array);
34
+ }
35
+ }
36
+ else {
37
+ array.push(list.slice(0, list.content.size));
38
+ }
39
+ return array;
40
+ }
41
+ export const fixContinuedLists = (state, dispatch) => {
42
+ const doc = state.doc;
43
+ let tr = state.tr;
44
+ let previousList = null;
45
+ // console.debug(nodeToTreeString(doc));
46
+ doc.forEach((child, childPos) => {
47
+ if (child.type.name === 'ordered_list') {
48
+ const start = childPos;
49
+ const end = start + child.nodeSize;
50
+ if (previousList) {
51
+ console.log('xxxxx');
52
+ console.debug(nodeToTreeString(child));
53
+ const stitchingLevels = convertToStitchingLevels(child);
54
+ if (stitchingLevels.length <= previousList.stitchingDepth) {
55
+ const betweenStart = previousList.end;
56
+ const betweenNodes = doc.slice(betweenStart, start);
57
+ tr = tr.delete(tr.mapping.map(betweenStart), tr.mapping.map(end));
58
+ let posToInsert = tr.mapping.map(previousList.end);
59
+ for (const level of stitchingLevels) {
60
+ posToInsert -= 1; // Before /OL token
61
+ tr = tr.replace(posToInsert, posToInsert, level);
62
+ posToInsert -= 1; // Before /LI token
63
+ }
64
+ if (betweenNodes.size > 0) {
65
+ tr = tr.replace(posToInsert, posToInsert, betweenNodes);
66
+ }
67
+ previousList.stitchingDepth = getListEndingMaxDepth(child);
68
+ previousList.end = end;
69
+ return;
70
+ }
71
+ }
72
+ previousList = {
73
+ stitchingDepth: getListEndingMaxDepth(child),
74
+ start,
75
+ end,
76
+ };
77
+ }
78
+ });
79
+ if (dispatch) {
80
+ dispatch(tr);
81
+ }
82
+ return tr.steps.length > 0;
83
+ };
@@ -0,0 +1,3 @@
1
+ import { Command } from 'prosemirror-state';
2
+ export declare function getDefaultsPostProcessFilters(): Array<Command>;
3
+ //# sourceMappingURL=postProcess.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postProcess.d.ts","sourceRoot":"","sources":["../../../../src/extension-odt/src/postprocess/postProcess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAM5C,wBAAgB,6BAA6B,IAAI,KAAK,CAAC,OAAO,CAAC,CAM9D"}
@@ -0,0 +1,10 @@
1
+ import { convertCodeParagraphsToCodeBlocks } from './convertCodeParagraphsToCodeBlocks.js';
2
+ import { removeUnusedBookmarks } from './removeUnusedBookmarks.js';
3
+ import { fixContinuedLists } from './fixContinuedLists.js';
4
+ export function getDefaultsPostProcessFilters() {
5
+ return [
6
+ convertCodeParagraphsToCodeBlocks,
7
+ removeUnusedBookmarks,
8
+ fixContinuedLists
9
+ ];
10
+ }
@@ -0,0 +1,3 @@
1
+ import { Command } from 'prosemirror-state';
2
+ export declare const removeUnusedBookmarks: Command;
3
+ //# sourceMappingURL=removeUnusedBookmarks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"removeUnusedBookmarks.d.ts","sourceRoot":"","sources":["../../../../src/extension-odt/src/postprocess/removeUnusedBookmarks.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,eAAO,MAAM,qBAAqB,EAAE,OAgCnC,CAAA"}
@@ -0,0 +1,27 @@
1
+ export const removeUnusedBookmarks = (state, dispatch) => {
2
+ return false;
3
+ function condition(mark) {
4
+ console.log('rrrr', mark.type.name);
5
+ return mark.type.name === "bookmark";
6
+ }
7
+ if (node.marks) {
8
+ // For text nodes, filter out the marks that match the condition
9
+ const newMarks = node.marks.filter(mark => !condition(mark));
10
+ // If marks were removed, return a new text node with the remaining marks
11
+ if (newMarks.length !== node.marks.length) {
12
+ return node.mark(newMarks);
13
+ }
14
+ // Otherwise, return the original text node
15
+ return node;
16
+ }
17
+ // if (Array.isArray(node.content)) {
18
+ // const content: Node[] = node.content.content.map(childNode => removeUnusedBookmarks(childNode));
19
+ // return node.copy(content);
20
+ // } else {
21
+ // console.log('node.content', node.content);
22
+ // }
23
+ if (dispatch) {
24
+ dispatch(tr);
25
+ }
26
+ return tr.steps.length > 0;
27
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kerebron/extension-odt",
3
- "version": "0.0.13",
3
+ "version": "0.1.1",
4
4
  "license": "MIT",
5
5
  "module": "./esm/extension-odt/src/ExtensionOdt.js",
6
6
  "exports": {
@@ -11,10 +11,10 @@
11
11
  "scripts": {},
12
12
  "dependencies": {
13
13
  "prosemirror-keymap": "1.2.2",
14
- "prosemirror-model": "1.24.1",
14
+ "prosemirror-model": "1.25.1",
15
15
  "prosemirror-state": "1.4.3",
16
- "prosemirror-transform": "1.10.3",
17
- "prosemirror-view": "1.33.6"
16
+ "prosemirror-transform": "1.10.4",
17
+ "prosemirror-view": "1.40.0"
18
18
  },
19
19
  "devDependencies": {
20
20
  "@types/node": "^20.9.0"
@@ -1,3 +0,0 @@
1
- import { Node } from 'prosemirror-model';
2
- export declare function debugDoc(node: Node, level?: number, currentPos?: number): void;
3
- //# sourceMappingURL=debugDoc.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"debugDoc.d.ts","sourceRoot":"","sources":["../../../src/editor/src/debugDoc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,mBAAmB,CAAC;AAYvC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,SAAI,EAAE,UAAU,SAAI,QAgC7D"}
@@ -1,33 +0,0 @@
1
- function trimText(str, maxLen = 20) {
2
- str = str.replaceAll('\n', '\\n');
3
- if (str.length <= maxLen) {
4
- return str;
5
- }
6
- return str.slice(0, maxLen) + '...';
7
- }
8
- export function debugDoc(node, level = 0, currentPos = 0) {
9
- let delim = '';
10
- for (let i = 0; i < level; i++) {
11
- delim += ' ';
12
- }
13
- // https://prosemirror.net/docs/guide/#doc.indexing
14
- let line = '';
15
- line += ` - [${node.type.name}] `;
16
- line += `pos: ${currentPos}, `;
17
- line += `nodeSize: ${node.nodeSize}, `; // isLeaf ? 1 : 2 + this.content.size
18
- line += `fragment.size: ${node.content.size}, `;
19
- console.log(delim + line);
20
- let marksLine = '';
21
- for (const mark of node.marks) {
22
- marksLine += `(${mark.type.name}), `;
23
- }
24
- if (marksLine) {
25
- console.log(delim + ' ' + marksLine);
26
- }
27
- if (node.text) {
28
- console.log(delim + ' "' + trimText(node.text) + '"');
29
- }
30
- node.forEach((child, offset) => {
31
- debugDoc(child, level + 1, currentPos + offset); // + (node.isLeaf ? 1 : 2)
32
- });
33
- }