documents.js 1.60.3 → 1.62.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/README.md +84 -44
  2. package/dist/{blr-types-CYYC3yYU.d.cts → blr-types-DVgO1DQ9.d.cts} +1 -1
  3. package/dist/{blr-types-CYYC3yYU.d.ts → blr-types-DVgO1DQ9.d.ts} +1 -1
  4. package/dist/convert/capability.cjs +1 -0
  5. package/dist/convert/capability.d.cts +1 -1
  6. package/dist/convert/capability.d.ts +1 -1
  7. package/dist/convert/capability.js +1 -0
  8. package/dist/convert/convert.cjs +29 -27
  9. package/dist/convert/convert.d.cts +9 -3
  10. package/dist/convert/convert.d.ts +9 -3
  11. package/dist/convert/convert.js +29 -27
  12. package/dist/edit/docx/content.cjs +75 -13
  13. package/dist/edit/docx/content.d.cts +8 -2
  14. package/dist/edit/docx/content.d.ts +8 -2
  15. package/dist/edit/docx/content.js +75 -13
  16. package/dist/edit/docx/paragraph.cjs +14 -0
  17. package/dist/edit/docx/paragraph.d.cts +5 -0
  18. package/dist/edit/docx/paragraph.d.ts +5 -0
  19. package/dist/edit/docx/paragraph.js +14 -0
  20. package/dist/edit/docx/run.cjs +1 -1
  21. package/dist/edit/docx/run.js +1 -1
  22. package/dist/edit/docx/table.cjs +41 -0
  23. package/dist/edit/docx/table.d.cts +7 -1
  24. package/dist/edit/docx/table.d.ts +7 -1
  25. package/dist/edit/docx/table.js +42 -1
  26. package/dist/edit/geometry.cjs +38 -0
  27. package/dist/edit/geometry.d.cts +7 -0
  28. package/dist/edit/geometry.d.ts +7 -0
  29. package/dist/edit/geometry.js +36 -0
  30. package/dist/edit/odg/content.cjs +15 -12
  31. package/dist/edit/odg/content.js +15 -12
  32. package/dist/edit/odg/editor.d.cts +1 -1
  33. package/dist/edit/odg/editor.d.ts +1 -1
  34. package/dist/edit/odg/page.d.cts +3 -3
  35. package/dist/edit/odg/page.d.ts +3 -3
  36. package/dist/edit/odg/vector.cjs +22 -13
  37. package/dist/edit/odg/vector.d.cts +1 -1
  38. package/dist/edit/odg/vector.d.ts +1 -1
  39. package/dist/edit/odg/vector.js +23 -14
  40. package/dist/edit/odp/content.cjs +15 -0
  41. package/dist/edit/odp/content.js +16 -1
  42. package/dist/edit/odp/editor.d.cts +1 -1
  43. package/dist/edit/odp/editor.d.ts +1 -1
  44. package/dist/edit/odp/image.d.cts +1 -1
  45. package/dist/edit/odp/image.d.ts +1 -1
  46. package/dist/edit/odp/shape.cjs +11 -30
  47. package/dist/edit/odp/shape.d.cts +2 -2
  48. package/dist/edit/odp/shape.d.ts +2 -2
  49. package/dist/edit/odp/shape.js +13 -33
  50. package/dist/edit/odp/slide.cjs +11 -0
  51. package/dist/edit/odp/slide.d.cts +14 -4
  52. package/dist/edit/odp/slide.d.ts +14 -4
  53. package/dist/edit/odp/slide.js +12 -1
  54. package/dist/edit/odt/content.cjs +56 -16
  55. package/dist/edit/odt/content.d.cts +4 -2
  56. package/dist/edit/odt/content.d.ts +4 -2
  57. package/dist/edit/odt/content.js +56 -17
  58. package/dist/edit/odt/editor.d.cts +1 -1
  59. package/dist/edit/odt/editor.d.ts +1 -1
  60. package/dist/edit/odt/table.cjs +36 -0
  61. package/dist/edit/odt/table.d.cts +1 -36
  62. package/dist/edit/odt/table.d.ts +1 -36
  63. package/dist/edit/odt/table.js +37 -1
  64. package/dist/edit/pptx/content.cjs +71 -3
  65. package/dist/edit/pptx/content.js +71 -3
  66. package/dist/edit/pptx/editor.d.cts +1 -1
  67. package/dist/edit/pptx/editor.d.ts +1 -1
  68. package/dist/edit/pptx/image.d.cts +1 -1
  69. package/dist/edit/pptx/image.d.ts +1 -1
  70. package/dist/edit/pptx/shape.cjs +23 -1
  71. package/dist/edit/pptx/shape.d.cts +2 -2
  72. package/dist/edit/pptx/shape.d.ts +2 -2
  73. package/dist/edit/pptx/shape.js +23 -3
  74. package/dist/edit/pptx/slide.cjs +10 -1
  75. package/dist/edit/pptx/slide.d.cts +11 -4
  76. package/dist/edit/pptx/slide.d.ts +11 -4
  77. package/dist/edit/pptx/slide.js +10 -1
  78. package/dist/edit/pptx/table.cjs +136 -0
  79. package/dist/edit/pptx/table.d.cts +2 -0
  80. package/dist/edit/pptx/table.d.ts +2 -0
  81. package/dist/edit/pptx/table.js +131 -0
  82. package/dist/firebird/backup.d.cts +1 -1
  83. package/dist/firebird/backup.d.ts +1 -1
  84. package/dist/firebird/blr-types.cjs +2 -2
  85. package/dist/firebird/blr-types.d.cts +1 -1
  86. package/dist/firebird/blr-types.d.ts +1 -1
  87. package/dist/firebird/blr-types.js +2 -2
  88. package/dist/firebird/data.cjs +68 -14
  89. package/dist/firebird/data.d.cts +1 -1
  90. package/dist/firebird/data.d.ts +1 -1
  91. package/dist/firebird/data.js +68 -14
  92. package/dist/firebird/schema.cjs +13 -1
  93. package/dist/firebird/schema.d.cts +1 -1
  94. package/dist/firebird/schema.d.ts +1 -1
  95. package/dist/firebird/schema.js +13 -1
  96. package/dist/{geometry-DvwdrIij.d.cts → geometry-DaJr8yQW.d.cts} +2 -2
  97. package/dist/{geometry-DvwdrIij.d.ts → geometry-DaJr8yQW.d.ts} +2 -2
  98. package/dist/hsqldb/binary-script.cjs +154 -0
  99. package/dist/hsqldb/binary-script.d.cts +15 -0
  100. package/dist/hsqldb/binary-script.d.ts +15 -0
  101. package/dist/hsqldb/binary-script.js +151 -0
  102. package/dist/hsqldb/cache.cjs +18 -11
  103. package/dist/hsqldb/cache.d.cts +9 -4
  104. package/dist/hsqldb/cache.d.ts +9 -4
  105. package/dist/hsqldb/cache.js +18 -11
  106. package/dist/hsqldb/rowformat.cjs +60 -16
  107. package/dist/hsqldb/rowformat.d.cts +2 -21
  108. package/dist/hsqldb/rowformat.d.ts +2 -21
  109. package/dist/hsqldb/rowformat.js +60 -17
  110. package/dist/{image-BZDy72Jb.d.cts → image-7snmKIxn.d.cts} +1 -1
  111. package/dist/{image-B-xQWYYS.d.ts → image-Cs8xF753.d.ts} +1 -1
  112. package/dist/{image-CeqwL-Qs.d.ts → image-DHcA9kaK.d.ts} +1 -1
  113. package/dist/{image-DWX6cNOD.d.cts → image-M5SezZVI.d.cts} +1 -1
  114. package/dist/index.cjs +54 -3
  115. package/dist/index.d.cts +28 -20
  116. package/dist/index.d.ts +27 -19
  117. package/dist/index.js +13 -4
  118. package/dist/layout/cell-typing.cjs +209 -0
  119. package/dist/layout/cell-typing.d.cts +22 -0
  120. package/dist/layout/cell-typing.d.ts +22 -0
  121. package/dist/layout/cell-typing.js +208 -0
  122. package/dist/layout/drawing.cjs +193 -17
  123. package/dist/layout/drawing.js +193 -17
  124. package/dist/layout/engine.cjs +46 -29
  125. package/dist/layout/engine.d.cts +0 -2
  126. package/dist/layout/engine.d.ts +0 -2
  127. package/dist/layout/engine.js +47 -30
  128. package/dist/layout/lattice.cjs +139 -0
  129. package/dist/layout/lattice.d.cts +20 -0
  130. package/dist/layout/lattice.d.ts +20 -0
  131. package/dist/layout/lattice.js +135 -0
  132. package/dist/layout/reconstruct.cjs +176 -113
  133. package/dist/layout/reconstruct.d.cts +2 -0
  134. package/dist/layout/reconstruct.d.ts +2 -0
  135. package/dist/layout/reconstruct.js +173 -110
  136. package/dist/layout/shared.cjs +52 -0
  137. package/dist/layout/shared.d.cts +4 -2
  138. package/dist/layout/shared.d.ts +4 -2
  139. package/dist/layout/shared.js +51 -1
  140. package/dist/layout/sheets.cjs +45 -11
  141. package/dist/layout/sheets.js +46 -12
  142. package/dist/layout/slides.cjs +7 -7
  143. package/dist/layout/slides.d.cts +0 -3
  144. package/dist/layout/slides.d.ts +0 -3
  145. package/dist/layout/slides.js +7 -7
  146. package/dist/markdown/write.cjs +19 -6
  147. package/dist/markdown/write.js +19 -6
  148. package/dist/mathml/layout.cjs +43 -9
  149. package/dist/mathml/layout.d.cts +1 -1
  150. package/dist/mathml/layout.d.ts +1 -1
  151. package/dist/mathml/layout.js +43 -9
  152. package/dist/mathml/variant.cjs +48 -5
  153. package/dist/mathml/variant.js +48 -5
  154. package/dist/model/embedded-drawing.cjs +32 -0
  155. package/dist/model/embedded-drawing.d.cts +8 -0
  156. package/dist/model/embedded-drawing.d.ts +8 -0
  157. package/dist/model/embedded-drawing.js +30 -0
  158. package/dist/model/formula.cjs +31 -0
  159. package/dist/model/formula.d.cts +6 -6
  160. package/dist/model/formula.d.ts +6 -6
  161. package/dist/model/formula.js +27 -0
  162. package/dist/model/geometry.d.cts +1 -1
  163. package/dist/model/geometry.d.ts +1 -1
  164. package/dist/model/paint-order.cjs +15 -0
  165. package/dist/model/paint-order.d.cts +14 -0
  166. package/dist/model/paint-order.d.ts +14 -0
  167. package/dist/model/paint-order.js +14 -0
  168. package/dist/odb/components.cjs +12 -0
  169. package/dist/odb/components.d.cts +6 -0
  170. package/dist/odb/components.d.ts +6 -0
  171. package/dist/odb/components.js +10 -0
  172. package/dist/odb/read.cjs +11 -7
  173. package/dist/odb/read.d.cts +3 -2
  174. package/dist/odb/read.d.ts +3 -2
  175. package/dist/odb/read.js +11 -7
  176. package/dist/odf/formula/detect.cjs +86 -18
  177. package/dist/odf/formula/detect.d.cts +10 -6
  178. package/dist/odf/formula/detect.d.ts +10 -6
  179. package/dist/odf/formula/detect.js +86 -19
  180. package/dist/odf/formula/read.cjs +4 -16
  181. package/dist/odf/formula/read.d.cts +4 -8
  182. package/dist/odf/formula/read.d.ts +4 -8
  183. package/dist/odf/formula/read.js +5 -17
  184. package/dist/odf/odp/read.cjs +9 -19
  185. package/dist/odf/odp/read.d.cts +2 -7
  186. package/dist/odf/odp/read.d.ts +2 -7
  187. package/dist/odf/odp/read.js +10 -20
  188. package/dist/odf/odt/read.cjs +63 -23
  189. package/dist/odf/odt/read.d.cts +2 -7
  190. package/dist/odf/odt/read.d.ts +2 -7
  191. package/dist/odf/odt/read.js +64 -24
  192. package/dist/omml/write.cjs +258 -0
  193. package/dist/omml/write.d.cts +2 -0
  194. package/dist/omml/write.d.ts +2 -0
  195. package/dist/omml/write.js +256 -0
  196. package/dist/rowformat-Cl2exlEh.d.cts +25 -0
  197. package/dist/rowformat-Cl2exlEh.d.ts +25 -0
  198. package/dist/{schema-Acco3Ezi.d.cts → schema-BeR_KJ0X.d.cts} +3 -1
  199. package/dist/{schema-VkAA6pF5.d.ts → schema-CSKwSb_v.d.ts} +3 -1
  200. package/dist/{shape-BUfjw5eZ.d.cts → shape-BhkP6HB8.d.cts} +6 -2
  201. package/dist/{shape-CTkl6kt8.d.ts → shape-BkVcwPcf.d.ts} +6 -2
  202. package/dist/{shape-BfN3m52m.d.ts → shape-CVXedeL7.d.ts} +3 -2
  203. package/dist/{shape-CN2ycxOo.d.cts → shape-CXZ6fejV.d.cts} +3 -2
  204. package/dist/table-C3CPZ--2.d.cts +35 -0
  205. package/dist/table-DjYcNOFm.d.cts +44 -0
  206. package/dist/table-DqfqMkVq.d.ts +44 -0
  207. package/dist/table-DvS_7UQS.d.ts +35 -0
  208. package/dist/{vector-ClohqsOe.d.cts → vector-Puuqu_IT.d.cts} +4 -0
  209. package/dist/{vector-ClohqsOe.d.ts → vector-Puuqu_IT.d.ts} +4 -0
  210. package/dist/write-DuyfnbL_.d.cts +16 -0
  211. package/dist/write-Zqwx6pka.d.ts +16 -0
  212. package/package.json +4 -4
  213. package/dist/odf/formula/placeholder.cjs +0 -36
  214. package/dist/odf/formula/placeholder.d.cts +0 -14
  215. package/dist/odf/formula/placeholder.d.ts +0 -14
  216. package/dist/odf/formula/placeholder.js +0 -36
@@ -1,12 +1,16 @@
1
- import { t as Box } from "../../geometry-DvwdrIij.cjs";
2
- import { EmbeddedFormula } from "../../model/formula.cjs";
1
+ import { t as Box$1 } from "../../geometry-DaJr8yQW.cjs";
2
+ import { ContentFormula } from "document-schema.js";
3
3
  import { Package, XmlElement, XmlNode } from "odf.js";
4
4
  //#region src/odf/formula/detect.d.ts
5
5
  interface DetectedFormulaFrame {
6
6
  readonly frameElement: XmlElement;
7
- readonly formula: EmbeddedFormula;
8
- readonly frame: Box;
7
+ readonly formula: ContentFormula;
8
+ readonly frame: Box$1;
9
9
  }
10
- declare function detectEmbeddedFormulaFrames(containerChildren: readonly XmlNode[], pkg: Package): readonly DetectedFormulaFrame[];
10
+ interface DetectedSlideFormulaFrame extends DetectedFormulaFrame {
11
+ readonly shapeIndex: number;
12
+ }
13
+ declare function collectFormulaFrames(nodes: readonly XmlNode[], pkg: Package): readonly DetectedFormulaFrame[];
14
+ declare function collectSlideFormulaFrames(pageChildren: readonly XmlNode[], pkg: Package): readonly DetectedSlideFormulaFrame[];
11
15
  //#endregion
12
- export { DetectedFormulaFrame, detectEmbeddedFormulaFrames };
16
+ export { DetectedFormulaFrame, DetectedSlideFormulaFrame, collectFormulaFrames, collectSlideFormulaFrames };
@@ -1,12 +1,16 @@
1
- import { t as Box } from "../../geometry-DvwdrIij.js";
2
- import { EmbeddedFormula } from "../../model/formula.js";
1
+ import { t as Box$1 } from "../../geometry-DaJr8yQW.js";
2
+ import { ContentFormula } from "document-schema.js";
3
3
  import { Package, XmlElement, XmlNode } from "odf.js";
4
4
  //#region src/odf/formula/detect.d.ts
5
5
  interface DetectedFormulaFrame {
6
6
  readonly frameElement: XmlElement;
7
- readonly formula: EmbeddedFormula;
8
- readonly frame: Box;
7
+ readonly formula: ContentFormula;
8
+ readonly frame: Box$1;
9
9
  }
10
- declare function detectEmbeddedFormulaFrames(containerChildren: readonly XmlNode[], pkg: Package): readonly DetectedFormulaFrame[];
10
+ interface DetectedSlideFormulaFrame extends DetectedFormulaFrame {
11
+ readonly shapeIndex: number;
12
+ }
13
+ declare function collectFormulaFrames(nodes: readonly XmlNode[], pkg: Package): readonly DetectedFormulaFrame[];
14
+ declare function collectSlideFormulaFrames(pageChildren: readonly XmlNode[], pkg: Package): readonly DetectedSlideFormulaFrame[];
11
15
  //#endregion
12
- export { DetectedFormulaFrame, detectEmbeddedFormulaFrames };
16
+ export { DetectedFormulaFrame, DetectedSlideFormulaFrame, collectFormulaFrames, collectSlideFormulaFrames };
@@ -1,28 +1,95 @@
1
1
  import { readOdfEmbeddedFormula } from "./read.js";
2
- import { attrValue, childrenWithTag, readDrawFrame } from "odf.js";
2
+ import { attrValue, childrenWithTag, parseOdfLength, parseOdfTransform, readDrawFrame } from "odf.js";
3
3
  //#region src/odf/formula/detect.ts
4
4
  function subPackagePathFromHref(href) {
5
5
  return href.replace(/^#?\.\//, "");
6
6
  }
7
- function detectEmbeddedFormulaFrames(containerChildren, pkg) {
8
- const out = [];
9
- for (const child of containerChildren) {
10
- if (child.type !== "element" || child.tag !== "draw:frame") continue;
11
- const objectElement = childrenWithTag(child, "draw:object")[0];
12
- if (objectElement === void 0) continue;
13
- const href = attrValue(objectElement, "xlink:href");
14
- if (href === void 0) continue;
15
- const formula = readOdfEmbeddedFormula(pkg, subPackagePathFromHref(href));
16
- if (formula === void 0) continue;
17
- const shape = readDrawFrame(child, [], pkg);
18
- if (shape === void 0) continue;
19
- out.push({
20
- frameElement: child,
21
- formula,
22
- frame: shape.frame
23
- });
7
+ function formulaOfFrame(frame, pkg) {
8
+ const objectElement = childrenWithTag(frame, "draw:object")[0];
9
+ if (objectElement === void 0) return;
10
+ const href = attrValue(objectElement, "xlink:href");
11
+ if (href === void 0) return;
12
+ return readOdfEmbeddedFormula(pkg, subPackagePathFromHref(href));
13
+ }
14
+ function flowAnchoredFrameBox(frame) {
15
+ const widthValue = attrValue(frame, "svg:width");
16
+ const heightValue = attrValue(frame, "svg:height");
17
+ if (widthValue === void 0 || heightValue === void 0) return;
18
+ const widthPt = parseOdfLength(widthValue);
19
+ const heightPt = parseOdfLength(heightValue);
20
+ if (widthPt === void 0 || heightPt === void 0) return;
21
+ return {
22
+ xPt: 0,
23
+ yPt: 0,
24
+ widthPt,
25
+ heightPt
26
+ };
27
+ }
28
+ function nestedGroupFunctions(group, groupFunctions) {
29
+ const value = attrValue(group, "draw:transform");
30
+ const own = value === void 0 ? [] : parseOdfTransform(value);
31
+ return own.length === 0 ? groupFunctions : [...own, ...groupFunctions];
32
+ }
33
+ function readFormulaFrame(frame, groupFunctions, pkg, allowFlowAnchored) {
34
+ const formula = formulaOfFrame(frame, pkg);
35
+ if (formula === void 0) return;
36
+ const box = readDrawFrame(frame, groupFunctions, pkg)?.frame ?? (allowFlowAnchored ? flowAnchoredFrameBox(frame) : void 0);
37
+ if (box === void 0) return;
38
+ return {
39
+ frameElement: frame,
40
+ formula,
41
+ frame: box
42
+ };
43
+ }
44
+ function walkForFormulaFrames(nodes, groupFunctions, pkg, out) {
45
+ for (const node of nodes) {
46
+ if (node.type !== "element") continue;
47
+ if (node.tag === "draw:frame") {
48
+ const detected = readFormulaFrame(node, groupFunctions, pkg, true);
49
+ if (detected !== void 0) {
50
+ out.push(detected);
51
+ continue;
52
+ }
53
+ walkForFormulaFrames(node.children, groupFunctions, pkg, out);
54
+ continue;
55
+ }
56
+ if (node.tag === "draw:g") {
57
+ walkForFormulaFrames(node.children, nestedGroupFunctions(node, groupFunctions), pkg, out);
58
+ continue;
59
+ }
60
+ walkForFormulaFrames(node.children, groupFunctions, pkg, out);
24
61
  }
62
+ }
63
+ function collectFormulaFrames(nodes, pkg) {
64
+ const out = [];
65
+ walkForFormulaFrames(nodes, [], pkg, out);
66
+ return out;
67
+ }
68
+ function collectSlideFormulaFrames(pageChildren, pkg) {
69
+ const out = [];
70
+ const state = { nextShapeIndex: 0 };
71
+ const walk = (nodes, groupFunctions) => {
72
+ for (const node of nodes) {
73
+ if (node.type !== "element") continue;
74
+ if (node.tag === "draw:frame") {
75
+ const shape = readDrawFrame(node, groupFunctions, pkg);
76
+ if (shape === void 0) continue;
77
+ const shapeIndex = state.nextShapeIndex;
78
+ state.nextShapeIndex += 1;
79
+ const formula = formulaOfFrame(node, pkg);
80
+ if (formula !== void 0) out.push({
81
+ frameElement: node,
82
+ formula,
83
+ frame: shape.frame,
84
+ shapeIndex
85
+ });
86
+ continue;
87
+ }
88
+ if (node.tag === "draw:g") walk(node.children, nestedGroupFunctions(node, groupFunctions));
89
+ }
90
+ };
91
+ walk(pageChildren, []);
25
92
  return out;
26
93
  }
27
94
  //#endregion
28
- export { detectEmbeddedFormulaFrames };
95
+ export { collectFormulaFrames, collectSlideFormulaFrames };
@@ -2,27 +2,15 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  let odf_js = require("odf.js");
3
3
  //#region src/odf/formula/read.ts
4
4
  function readOdfFormulaContent(pkg) {
5
- const formula = (0, odf_js.readOdfFormula)(pkg);
6
- return {
7
- mathml: formula.mathml,
8
- starMath: formula.starMath,
9
- metadata: formula.metadata
10
- };
5
+ return (0, odf_js.readOdfFormulaDocument)(pkg);
11
6
  }
12
7
  function readOdfEmbeddedFormula(outerPkg, subPackagePath) {
13
8
  const contentPart = outerPkg.parts[`${subPackagePath}/content.xml`];
14
9
  if (contentPart?.kind !== "xml") return;
15
- const metaPart = outerPkg.parts[`${subPackagePath}/meta.xml`];
16
- const subPkg = { parts: metaPart?.kind === "xml" ? {
17
- "content.xml": contentPart,
18
- "meta.xml": metaPart
19
- } : { "content.xml": contentPart } };
10
+ const subPkg = { parts: { "content.xml": contentPart } };
20
11
  try {
21
- const formula = (0, odf_js.readOdfFormula)(subPkg);
22
- return {
23
- mathml: formula.mathml,
24
- starMath: formula.starMath
25
- };
12
+ const document = (0, odf_js.readOdfFormulaDocument)(subPkg);
13
+ return document.kind === "formula" ? document.formula : void 0;
26
14
  } catch {
27
15
  return;
28
16
  }
@@ -1,11 +1,7 @@
1
- import { EmbeddedFormula } from "../../model/formula.cjs";
2
- import { LayoutMetadata } from "document-schema.js";
1
+ import { ContentDocument, ContentFormula } from "document-schema.js";
3
2
  import { Package } from "odf.js";
4
3
  //#region src/odf/formula/read.d.ts
5
- interface StandaloneFormulaContent extends EmbeddedFormula {
6
- readonly metadata: LayoutMetadata;
7
- }
8
- declare function readOdfFormulaContent(pkg: Package): StandaloneFormulaContent;
9
- declare function readOdfEmbeddedFormula(outerPkg: Package, subPackagePath: string): EmbeddedFormula | undefined;
4
+ declare function readOdfFormulaContent(pkg: Package): ContentDocument;
5
+ declare function readOdfEmbeddedFormula(outerPkg: Package, subPackagePath: string): ContentFormula | undefined;
10
6
  //#endregion
11
- export { StandaloneFormulaContent, readOdfEmbeddedFormula, readOdfFormulaContent };
7
+ export { readOdfEmbeddedFormula, readOdfFormulaContent };
@@ -1,11 +1,7 @@
1
- import { EmbeddedFormula } from "../../model/formula.js";
2
- import { LayoutMetadata } from "document-schema.js";
1
+ import { ContentDocument, ContentFormula } from "document-schema.js";
3
2
  import { Package } from "odf.js";
4
3
  //#region src/odf/formula/read.d.ts
5
- interface StandaloneFormulaContent extends EmbeddedFormula {
6
- readonly metadata: LayoutMetadata;
7
- }
8
- declare function readOdfFormulaContent(pkg: Package): StandaloneFormulaContent;
9
- declare function readOdfEmbeddedFormula(outerPkg: Package, subPackagePath: string): EmbeddedFormula | undefined;
4
+ declare function readOdfFormulaContent(pkg: Package): ContentDocument;
5
+ declare function readOdfEmbeddedFormula(outerPkg: Package, subPackagePath: string): ContentFormula | undefined;
10
6
  //#endregion
11
- export { StandaloneFormulaContent, readOdfEmbeddedFormula, readOdfFormulaContent };
7
+ export { readOdfEmbeddedFormula, readOdfFormulaContent };
@@ -1,27 +1,15 @@
1
- import { readOdfFormula } from "odf.js";
1
+ import { readOdfFormulaDocument } from "odf.js";
2
2
  //#region src/odf/formula/read.ts
3
3
  function readOdfFormulaContent(pkg) {
4
- const formula = readOdfFormula(pkg);
5
- return {
6
- mathml: formula.mathml,
7
- starMath: formula.starMath,
8
- metadata: formula.metadata
9
- };
4
+ return readOdfFormulaDocument(pkg);
10
5
  }
11
6
  function readOdfEmbeddedFormula(outerPkg, subPackagePath) {
12
7
  const contentPart = outerPkg.parts[`${subPackagePath}/content.xml`];
13
8
  if (contentPart?.kind !== "xml") return;
14
- const metaPart = outerPkg.parts[`${subPackagePath}/meta.xml`];
15
- const subPkg = { parts: metaPart?.kind === "xml" ? {
16
- "content.xml": contentPart,
17
- "meta.xml": metaPart
18
- } : { "content.xml": contentPart } };
9
+ const subPkg = { parts: { "content.xml": contentPart } };
19
10
  try {
20
- const formula = readOdfFormula(subPkg);
21
- return {
22
- mathml: formula.mathml,
23
- starMath: formula.starMath
24
- };
11
+ const document = readOdfFormulaDocument(subPkg);
12
+ return document.kind === "formula" ? document.formula : void 0;
25
13
  } catch {
26
14
  return;
27
15
  }
@@ -1,44 +1,34 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_model_formula = require("../../model/formula.cjs");
2
3
  const require_odf_formula_detect = require("../formula/detect.cjs");
3
- const require_odf_formula_placeholder = require("../formula/placeholder.cjs");
4
4
  let document_schema_js = require("document-schema.js");
5
5
  let odf_js = require("odf.js");
6
6
  //#region src/odf/odp/read.ts
7
7
  function readOdpContent(pkg) {
8
8
  const odpDoc = (0, odf_js.readOdp)(pkg);
9
- const formulas = /* @__PURE__ */ new Map();
10
9
  const contentPart = pkg.parts["content.xml"];
11
10
  if (contentPart?.kind === "xml") {
12
11
  const root = (0, odf_js.rootElement)(contentPart.nodes);
13
12
  const body = root === void 0 ? void 0 : (0, odf_js.findChildElement)(root.children, "office:body");
14
13
  const presentation = body === void 0 ? void 0 : (0, odf_js.findChildElement)(body.children, "office:presentation");
15
14
  (presentation === void 0 ? [] : (0, odf_js.childrenWithTag)(presentation, "draw:page")).forEach((pageElement, slideIndex) => {
16
- if ((0, odf_js.childrenWithTag)(pageElement, "draw:g").length > 0) return;
17
15
  const slide = odpDoc.slides[slideIndex];
18
16
  if (slide === void 0) return;
19
- const frameElements = (0, odf_js.childrenWithTag)(pageElement, "draw:frame");
20
- const detected = require_odf_formula_detect.detectEmbeddedFormulaFrames(frameElements, pkg);
21
- for (const found of detected) {
22
- const shapeIndex = frameElements.indexOf(found.frameElement);
23
- const shape = slide.shapes[shapeIndex];
17
+ for (const found of require_odf_formula_detect.collectSlideFormulaFrames(pageElement.children, pkg)) {
18
+ const shape = slide.shapes[found.shapeIndex];
24
19
  if (shape === void 0) continue;
25
- const sourcePath = `slides[${slideIndex}].shapes[${shapeIndex}]`;
26
- slide.shapes[shapeIndex] = {
20
+ slide.shapes[found.shapeIndex] = {
27
21
  ...shape,
28
- blocks: [require_odf_formula_placeholder.buildFormulaPlaceholderBlock(found.formula, found.frame, sourcePath)]
22
+ blocks: [require_model_formula.buildFormulaBlock(found.formula, found.frame, `slides[${slideIndex}].shapes[${found.shapeIndex}]`)]
29
23
  };
30
- formulas.set(sourcePath, found.formula);
31
24
  }
32
25
  });
33
26
  }
34
27
  return {
35
- document: {
36
- kind: "presentation",
37
- formatVersion: document_schema_js.CONTENT_FORMAT_VERSION,
38
- metadata: { ...odpDoc.metadata },
39
- slides: odpDoc.slides
40
- },
41
- formulas
28
+ kind: "presentation",
29
+ formatVersion: document_schema_js.CONTENT_FORMAT_VERSION,
30
+ metadata: { ...odpDoc.metadata },
31
+ slides: odpDoc.slides
42
32
  };
43
33
  }
44
34
  //#endregion
@@ -1,11 +1,6 @@
1
- import { EmbeddedFormula } from "../../model/formula.cjs";
2
1
  import { ContentDocument } from "document-schema.js";
3
2
  import { Package } from "odf.js";
4
3
  //#region src/odf/odp/read.d.ts
5
- interface OdpContentResult {
6
- readonly document: ContentDocument;
7
- readonly formulas: ReadonlyMap<string, EmbeddedFormula>;
8
- }
9
- declare function readOdpContent(pkg: Package): OdpContentResult;
4
+ declare function readOdpContent(pkg: Package): ContentDocument;
10
5
  //#endregion
11
- export { OdpContentResult, readOdpContent };
6
+ export { readOdpContent };
@@ -1,11 +1,6 @@
1
- import { EmbeddedFormula } from "../../model/formula.js";
2
1
  import { ContentDocument } from "document-schema.js";
3
2
  import { Package } from "odf.js";
4
3
  //#region src/odf/odp/read.d.ts
5
- interface OdpContentResult {
6
- readonly document: ContentDocument;
7
- readonly formulas: ReadonlyMap<string, EmbeddedFormula>;
8
- }
9
- declare function readOdpContent(pkg: Package): OdpContentResult;
4
+ declare function readOdpContent(pkg: Package): ContentDocument;
10
5
  //#endregion
11
- export { OdpContentResult, readOdpContent };
6
+ export { readOdpContent };
@@ -1,43 +1,33 @@
1
- import { detectEmbeddedFormulaFrames } from "../formula/detect.js";
2
- import { buildFormulaPlaceholderBlock } from "../formula/placeholder.js";
1
+ import { buildFormulaBlock } from "../../model/formula.js";
2
+ import { collectSlideFormulaFrames } from "../formula/detect.js";
3
3
  import { CONTENT_FORMAT_VERSION } from "document-schema.js";
4
4
  import { childrenWithTag, findChildElement, readOdp, rootElement } from "odf.js";
5
5
  //#region src/odf/odp/read.ts
6
6
  function readOdpContent(pkg) {
7
7
  const odpDoc = readOdp(pkg);
8
- const formulas = /* @__PURE__ */ new Map();
9
8
  const contentPart = pkg.parts["content.xml"];
10
9
  if (contentPart?.kind === "xml") {
11
10
  const root = rootElement(contentPart.nodes);
12
11
  const body = root === void 0 ? void 0 : findChildElement(root.children, "office:body");
13
12
  const presentation = body === void 0 ? void 0 : findChildElement(body.children, "office:presentation");
14
13
  (presentation === void 0 ? [] : childrenWithTag(presentation, "draw:page")).forEach((pageElement, slideIndex) => {
15
- if (childrenWithTag(pageElement, "draw:g").length > 0) return;
16
14
  const slide = odpDoc.slides[slideIndex];
17
15
  if (slide === void 0) return;
18
- const frameElements = childrenWithTag(pageElement, "draw:frame");
19
- const detected = detectEmbeddedFormulaFrames(frameElements, pkg);
20
- for (const found of detected) {
21
- const shapeIndex = frameElements.indexOf(found.frameElement);
22
- const shape = slide.shapes[shapeIndex];
16
+ for (const found of collectSlideFormulaFrames(pageElement.children, pkg)) {
17
+ const shape = slide.shapes[found.shapeIndex];
23
18
  if (shape === void 0) continue;
24
- const sourcePath = `slides[${slideIndex}].shapes[${shapeIndex}]`;
25
- slide.shapes[shapeIndex] = {
19
+ slide.shapes[found.shapeIndex] = {
26
20
  ...shape,
27
- blocks: [buildFormulaPlaceholderBlock(found.formula, found.frame, sourcePath)]
21
+ blocks: [buildFormulaBlock(found.formula, found.frame, `slides[${slideIndex}].shapes[${found.shapeIndex}]`)]
28
22
  };
29
- formulas.set(sourcePath, found.formula);
30
23
  }
31
24
  });
32
25
  }
33
26
  return {
34
- document: {
35
- kind: "presentation",
36
- formatVersion: CONTENT_FORMAT_VERSION,
37
- metadata: { ...odpDoc.metadata },
38
- slides: odpDoc.slides
39
- },
40
- formulas
27
+ kind: "presentation",
28
+ formatVersion: CONTENT_FORMAT_VERSION,
29
+ metadata: { ...odpDoc.metadata },
30
+ slides: odpDoc.slides
41
31
  };
42
32
  }
43
33
  //#endregion
@@ -1,43 +1,83 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_model_formula = require("../../model/formula.cjs");
2
3
  const require_odf_formula_detect = require("../formula/detect.cjs");
3
- const require_odf_formula_placeholder = require("../formula/placeholder.cjs");
4
4
  let document_schema_js = require("document-schema.js");
5
5
  let odf_js = require("odf.js");
6
6
  //#region src/odf/odt/read.ts
7
7
  function readOdtContent(pkg) {
8
8
  const odtDoc = (0, odf_js.readOdt)(pkg);
9
- const formulas = /* @__PURE__ */ new Map();
10
9
  const contentPart = pkg.parts["content.xml"];
11
10
  if (contentPart?.kind === "xml" && odtDoc.sections.length === 1) {
12
11
  const root = (0, odf_js.rootElement)(contentPart.nodes);
13
12
  const body = root === void 0 ? void 0 : (0, odf_js.findChildElement)(root.children, "office:body");
14
13
  const text = body === void 0 ? void 0 : (0, odf_js.findChildElement)(body.children, "office:text");
15
14
  if (text !== void 0) {
16
- const detected = require_odf_formula_detect.detectEmbeddedFormulaFrames(text.children, pkg);
17
- if (detected.length > 0) {
18
- const section = odtDoc.sections[0];
19
- const blocks = [...section.blocks];
20
- for (const found of detected) {
21
- const sourcePath = `sections[0].blocks[${blocks.length}]`;
22
- blocks.push(require_odf_formula_placeholder.buildFormulaPlaceholderBlock(found.formula, found.frame, sourcePath));
23
- formulas.set(sourcePath, found.formula);
24
- }
25
- odtDoc.sections[0] = {
26
- ...section,
27
- blocks
28
- };
29
- }
15
+ const section = odtDoc.sections[0];
16
+ const placements = collectFormulaPlacements(text.children, pkg);
17
+ if (placements.length > 0) odtDoc.sections[0] = {
18
+ ...section,
19
+ blocks: spliceFormulaBlocks(section.blocks, placements)
20
+ };
30
21
  }
31
22
  }
32
23
  return {
33
- document: {
34
- kind: "wordprocessing",
35
- formatVersion: document_schema_js.CONTENT_FORMAT_VERSION,
36
- metadata: { ...odtDoc.metadata },
37
- sections: odtDoc.sections
38
- },
39
- formulas
24
+ kind: "wordprocessing",
25
+ formatVersion: document_schema_js.CONTENT_FORMAT_VERSION,
26
+ metadata: { ...odtDoc.metadata },
27
+ sections: odtDoc.sections
40
28
  };
41
29
  }
30
+ function pushPlacements(out, index, detected) {
31
+ for (const frame of detected) out.push({
32
+ index,
33
+ detected: frame
34
+ });
35
+ }
36
+ function collectFormulaPlacements(nodes, pkg) {
37
+ const out = [];
38
+ walkForPlacements(nodes, pkg, { blockCount: 0 }, out);
39
+ return out;
40
+ }
41
+ function walkForPlacements(nodes, pkg, state, out) {
42
+ for (const node of nodes) {
43
+ if (node.type !== "element") continue;
44
+ if (node.tag === "text:p" || node.tag === "text:h") {
45
+ state.blockCount += 1;
46
+ pushPlacements(out, state.blockCount, require_odf_formula_detect.collectFormulaFrames(node.children, pkg));
47
+ } else if (node.tag === "text:list") walkListForPlacements(node.children, pkg, state, out);
48
+ else if (node.tag === "table:table") {
49
+ state.blockCount += 1;
50
+ pushPlacements(out, state.blockCount, require_odf_formula_detect.collectFormulaFrames(node.children, pkg));
51
+ } else if (node.tag === "text:section") walkForPlacements(node.children, pkg, state, out);
52
+ else pushPlacements(out, state.blockCount, require_odf_formula_detect.collectFormulaFrames([node], pkg));
53
+ }
54
+ }
55
+ function walkListForPlacements(itemNodes, pkg, state, out) {
56
+ for (const item of itemNodes) {
57
+ if (item.type !== "element" || item.tag !== "text:list-item") continue;
58
+ for (const itemChild of item.children) {
59
+ if (itemChild.type !== "element") continue;
60
+ if (itemChild.tag === "text:p" || itemChild.tag === "text:h") {
61
+ state.blockCount += 1;
62
+ pushPlacements(out, state.blockCount, require_odf_formula_detect.collectFormulaFrames(itemChild.children, pkg));
63
+ } else if (itemChild.tag === "text:list") walkListForPlacements(itemChild.children, pkg, state, out);
64
+ else pushPlacements(out, state.blockCount, require_odf_formula_detect.collectFormulaFrames([itemChild], pkg));
65
+ }
66
+ }
67
+ }
68
+ function spliceFormulaBlocks(blocks, placements) {
69
+ const out = [];
70
+ let next = 0;
71
+ for (let index = 0; index <= blocks.length; index++) {
72
+ while (next < placements.length && placements[next].index === index) {
73
+ const { detected } = placements[next];
74
+ out.push(require_model_formula.buildFormulaBlock(detected.formula, detected.frame, `sections[0].blocks[${out.length}]`));
75
+ next += 1;
76
+ }
77
+ const block = blocks[index];
78
+ if (block !== void 0) out.push(block);
79
+ }
80
+ return out;
81
+ }
42
82
  //#endregion
43
83
  exports.readOdtContent = readOdtContent;
@@ -1,11 +1,6 @@
1
- import { EmbeddedFormula } from "../../model/formula.cjs";
2
1
  import { ContentDocument } from "document-schema.js";
3
2
  import { Package } from "odf.js";
4
3
  //#region src/odf/odt/read.d.ts
5
- interface OdtContentResult {
6
- readonly document: ContentDocument;
7
- readonly formulas: ReadonlyMap<string, EmbeddedFormula>;
8
- }
9
- declare function readOdtContent(pkg: Package): OdtContentResult;
4
+ declare function readOdtContent(pkg: Package): ContentDocument;
10
5
  //#endregion
11
- export { OdtContentResult, readOdtContent };
6
+ export { readOdtContent };
@@ -1,11 +1,6 @@
1
- import { EmbeddedFormula } from "../../model/formula.js";
2
1
  import { ContentDocument } from "document-schema.js";
3
2
  import { Package } from "odf.js";
4
3
  //#region src/odf/odt/read.d.ts
5
- interface OdtContentResult {
6
- readonly document: ContentDocument;
7
- readonly formulas: ReadonlyMap<string, EmbeddedFormula>;
8
- }
9
- declare function readOdtContent(pkg: Package): OdtContentResult;
4
+ declare function readOdtContent(pkg: Package): ContentDocument;
10
5
  //#endregion
11
- export { OdtContentResult, readOdtContent };
6
+ export { readOdtContent };
@@ -1,42 +1,82 @@
1
- import { detectEmbeddedFormulaFrames } from "../formula/detect.js";
2
- import { buildFormulaPlaceholderBlock } from "../formula/placeholder.js";
1
+ import { buildFormulaBlock } from "../../model/formula.js";
2
+ import { collectFormulaFrames } from "../formula/detect.js";
3
3
  import { CONTENT_FORMAT_VERSION } from "document-schema.js";
4
4
  import { findChildElement, readOdt, rootElement } from "odf.js";
5
5
  //#region src/odf/odt/read.ts
6
6
  function readOdtContent(pkg) {
7
7
  const odtDoc = readOdt(pkg);
8
- const formulas = /* @__PURE__ */ new Map();
9
8
  const contentPart = pkg.parts["content.xml"];
10
9
  if (contentPart?.kind === "xml" && odtDoc.sections.length === 1) {
11
10
  const root = rootElement(contentPart.nodes);
12
11
  const body = root === void 0 ? void 0 : findChildElement(root.children, "office:body");
13
12
  const text = body === void 0 ? void 0 : findChildElement(body.children, "office:text");
14
13
  if (text !== void 0) {
15
- const detected = detectEmbeddedFormulaFrames(text.children, pkg);
16
- if (detected.length > 0) {
17
- const section = odtDoc.sections[0];
18
- const blocks = [...section.blocks];
19
- for (const found of detected) {
20
- const sourcePath = `sections[0].blocks[${blocks.length}]`;
21
- blocks.push(buildFormulaPlaceholderBlock(found.formula, found.frame, sourcePath));
22
- formulas.set(sourcePath, found.formula);
23
- }
24
- odtDoc.sections[0] = {
25
- ...section,
26
- blocks
27
- };
28
- }
14
+ const section = odtDoc.sections[0];
15
+ const placements = collectFormulaPlacements(text.children, pkg);
16
+ if (placements.length > 0) odtDoc.sections[0] = {
17
+ ...section,
18
+ blocks: spliceFormulaBlocks(section.blocks, placements)
19
+ };
29
20
  }
30
21
  }
31
22
  return {
32
- document: {
33
- kind: "wordprocessing",
34
- formatVersion: CONTENT_FORMAT_VERSION,
35
- metadata: { ...odtDoc.metadata },
36
- sections: odtDoc.sections
37
- },
38
- formulas
23
+ kind: "wordprocessing",
24
+ formatVersion: CONTENT_FORMAT_VERSION,
25
+ metadata: { ...odtDoc.metadata },
26
+ sections: odtDoc.sections
39
27
  };
40
28
  }
29
+ function pushPlacements(out, index, detected) {
30
+ for (const frame of detected) out.push({
31
+ index,
32
+ detected: frame
33
+ });
34
+ }
35
+ function collectFormulaPlacements(nodes, pkg) {
36
+ const out = [];
37
+ walkForPlacements(nodes, pkg, { blockCount: 0 }, out);
38
+ return out;
39
+ }
40
+ function walkForPlacements(nodes, pkg, state, out) {
41
+ for (const node of nodes) {
42
+ if (node.type !== "element") continue;
43
+ if (node.tag === "text:p" || node.tag === "text:h") {
44
+ state.blockCount += 1;
45
+ pushPlacements(out, state.blockCount, collectFormulaFrames(node.children, pkg));
46
+ } else if (node.tag === "text:list") walkListForPlacements(node.children, pkg, state, out);
47
+ else if (node.tag === "table:table") {
48
+ state.blockCount += 1;
49
+ pushPlacements(out, state.blockCount, collectFormulaFrames(node.children, pkg));
50
+ } else if (node.tag === "text:section") walkForPlacements(node.children, pkg, state, out);
51
+ else pushPlacements(out, state.blockCount, collectFormulaFrames([node], pkg));
52
+ }
53
+ }
54
+ function walkListForPlacements(itemNodes, pkg, state, out) {
55
+ for (const item of itemNodes) {
56
+ if (item.type !== "element" || item.tag !== "text:list-item") continue;
57
+ for (const itemChild of item.children) {
58
+ if (itemChild.type !== "element") continue;
59
+ if (itemChild.tag === "text:p" || itemChild.tag === "text:h") {
60
+ state.blockCount += 1;
61
+ pushPlacements(out, state.blockCount, collectFormulaFrames(itemChild.children, pkg));
62
+ } else if (itemChild.tag === "text:list") walkListForPlacements(itemChild.children, pkg, state, out);
63
+ else pushPlacements(out, state.blockCount, collectFormulaFrames([itemChild], pkg));
64
+ }
65
+ }
66
+ }
67
+ function spliceFormulaBlocks(blocks, placements) {
68
+ const out = [];
69
+ let next = 0;
70
+ for (let index = 0; index <= blocks.length; index++) {
71
+ while (next < placements.length && placements[next].index === index) {
72
+ const { detected } = placements[next];
73
+ out.push(buildFormulaBlock(detected.formula, detected.frame, `sections[0].blocks[${out.length}]`));
74
+ next += 1;
75
+ }
76
+ const block = blocks[index];
77
+ if (block !== void 0) out.push(block);
78
+ }
79
+ return out;
80
+ }
41
81
  //#endregion
42
82
  export { readOdtContent };