js.documents 1.57.0 → 1.58.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 (454) hide show
  1. package/README.md +38 -0
  2. package/dist/blr-types-CYYC3yYU.d.cts +35 -0
  3. package/dist/blr-types-CYYC3yYU.d.ts +35 -0
  4. package/dist/cell-CNHPsDEk.d.cts +17 -0
  5. package/dist/cell-CNHPsDEk.d.ts +17 -0
  6. package/dist/color-71eoF1Up.d.cts +2 -0
  7. package/dist/color-Bo228AY2.d.ts +2 -0
  8. package/dist/convert/codec.cjs +51 -0
  9. package/dist/convert/codec.d.cts +13 -0
  10. package/dist/convert/codec.d.ts +13 -0
  11. package/dist/convert/codec.js +42 -0
  12. package/dist/convert/convert.cjs +443 -0
  13. package/dist/convert/convert.d.cts +55 -0
  14. package/dist/convert/convert.d.ts +55 -0
  15. package/dist/convert/convert.js +419 -0
  16. package/dist/convert/local.cjs +393 -0
  17. package/dist/convert/local.d.cts +5 -0
  18. package/dist/convert/local.d.ts +5 -0
  19. package/dist/convert/local.js +392 -0
  20. package/dist/convert/port.cjs +0 -0
  21. package/dist/convert/port.d.cts +34 -0
  22. package/dist/convert/port.d.ts +34 -0
  23. package/dist/convert/port.js +0 -0
  24. package/dist/edit/docx/content.cjs +71 -0
  25. package/dist/edit/docx/content.d.cts +6 -0
  26. package/dist/edit/docx/content.d.ts +6 -0
  27. package/dist/edit/docx/content.js +70 -0
  28. package/dist/edit/docx/editor.cjs +116 -0
  29. package/dist/edit/docx/editor.d.cts +23 -0
  30. package/dist/edit/docx/editor.d.ts +23 -0
  31. package/dist/edit/docx/editor.js +113 -0
  32. package/dist/edit/docx/image.cjs +74 -0
  33. package/dist/edit/docx/image.d.cts +2 -0
  34. package/dist/edit/docx/image.d.ts +2 -0
  35. package/dist/edit/docx/image.js +72 -0
  36. package/dist/edit/docx/paragraph.cjs +132 -0
  37. package/dist/edit/docx/paragraph.d.cts +40 -0
  38. package/dist/edit/docx/paragraph.d.ts +40 -0
  39. package/dist/edit/docx/paragraph.js +130 -0
  40. package/dist/edit/docx/props.cjs +132 -0
  41. package/dist/edit/docx/props.d.cts +20 -0
  42. package/dist/edit/docx/props.d.ts +20 -0
  43. package/dist/edit/docx/props.js +117 -0
  44. package/dist/edit/docx/run.cjs +143 -0
  45. package/dist/edit/docx/run.d.cts +2 -0
  46. package/dist/edit/docx/run.d.ts +2 -0
  47. package/dist/edit/docx/run.js +141 -0
  48. package/dist/edit/docx/scaffold.cjs +97 -0
  49. package/dist/edit/docx/scaffold.d.cts +5 -0
  50. package/dist/edit/docx/scaffold.d.ts +5 -0
  51. package/dist/edit/docx/scaffold.js +96 -0
  52. package/dist/edit/docx/table.cjs +99 -0
  53. package/dist/edit/docx/table.d.cts +34 -0
  54. package/dist/edit/docx/table.d.ts +34 -0
  55. package/dist/edit/docx/table.js +95 -0
  56. package/dist/edit/odg/content.cjs +65 -0
  57. package/dist/edit/odg/content.d.cts +6 -0
  58. package/dist/edit/odg/content.d.ts +6 -0
  59. package/dist/edit/odg/content.js +64 -0
  60. package/dist/edit/odg/editor.cjs +96 -0
  61. package/dist/edit/odg/editor.d.cts +19 -0
  62. package/dist/edit/odg/editor.d.ts +19 -0
  63. package/dist/edit/odg/editor.js +93 -0
  64. package/dist/edit/odg/page.cjs +70 -0
  65. package/dist/edit/odg/page.d.cts +34 -0
  66. package/dist/edit/odg/page.d.ts +34 -0
  67. package/dist/edit/odg/page.js +69 -0
  68. package/dist/edit/odg/scaffold.cjs +106 -0
  69. package/dist/edit/odg/scaffold.d.cts +7 -0
  70. package/dist/edit/odg/scaffold.d.ts +7 -0
  71. package/dist/edit/odg/scaffold.js +103 -0
  72. package/dist/edit/odg/style.cjs +83 -0
  73. package/dist/edit/odg/style.d.cts +14 -0
  74. package/dist/edit/odg/style.d.ts +14 -0
  75. package/dist/edit/odg/style.js +78 -0
  76. package/dist/edit/odg/svg-path.cjs +30 -0
  77. package/dist/edit/odg/svg-path.d.cts +7 -0
  78. package/dist/edit/odg/svg-path.d.ts +7 -0
  79. package/dist/edit/odg/svg-path.js +27 -0
  80. package/dist/edit/odg/vector.cjs +208 -0
  81. package/dist/edit/odg/vector.d.cts +2 -0
  82. package/dist/edit/odg/vector.d.ts +2 -0
  83. package/dist/edit/odg/vector.js +201 -0
  84. package/dist/edit/odp/content.cjs +42 -0
  85. package/dist/edit/odp/content.d.cts +6 -0
  86. package/dist/edit/odp/content.d.ts +6 -0
  87. package/dist/edit/odp/content.js +41 -0
  88. package/dist/edit/odp/editor.cjs +113 -0
  89. package/dist/edit/odp/editor.d.cts +20 -0
  90. package/dist/edit/odp/editor.d.ts +20 -0
  91. package/dist/edit/odp/editor.js +110 -0
  92. package/dist/edit/odp/image.cjs +10 -0
  93. package/dist/edit/odp/image.d.cts +2 -0
  94. package/dist/edit/odp/image.d.ts +2 -0
  95. package/dist/edit/odp/image.js +9 -0
  96. package/dist/edit/odp/scaffold.cjs +108 -0
  97. package/dist/edit/odp/scaffold.d.cts +7 -0
  98. package/dist/edit/odp/scaffold.d.ts +7 -0
  99. package/dist/edit/odp/scaffold.js +105 -0
  100. package/dist/edit/odp/shape.cjs +133 -0
  101. package/dist/edit/odp/shape.d.cts +2 -0
  102. package/dist/edit/odp/shape.d.ts +2 -0
  103. package/dist/edit/odp/shape.js +130 -0
  104. package/dist/edit/odp/slide.cjs +80 -0
  105. package/dist/edit/odp/slide.d.cts +31 -0
  106. package/dist/edit/odp/slide.d.ts +31 -0
  107. package/dist/edit/odp/slide.js +79 -0
  108. package/dist/edit/ods/address.cjs +108 -0
  109. package/dist/edit/ods/address.d.cts +15 -0
  110. package/dist/edit/ods/address.d.ts +15 -0
  111. package/dist/edit/ods/address.js +97 -0
  112. package/dist/edit/ods/cell.cjs +177 -0
  113. package/dist/edit/ods/cell.d.cts +2 -0
  114. package/dist/edit/ods/cell.d.ts +2 -0
  115. package/dist/edit/ods/cell.js +176 -0
  116. package/dist/edit/ods/content.cjs +26 -0
  117. package/dist/edit/ods/content.d.cts +6 -0
  118. package/dist/edit/ods/content.d.ts +6 -0
  119. package/dist/edit/ods/content.js +25 -0
  120. package/dist/edit/ods/editor.cjs +84 -0
  121. package/dist/edit/ods/editor.d.cts +17 -0
  122. package/dist/edit/ods/editor.d.ts +17 -0
  123. package/dist/edit/ods/editor.js +81 -0
  124. package/dist/edit/ods/print-settings.cjs +90 -0
  125. package/dist/edit/ods/print-settings.d.cts +7 -0
  126. package/dist/edit/ods/print-settings.d.ts +7 -0
  127. package/dist/edit/ods/print-settings.js +88 -0
  128. package/dist/edit/ods/scaffold.cjs +129 -0
  129. package/dist/edit/ods/scaffold.d.cts +9 -0
  130. package/dist/edit/ods/scaffold.d.ts +9 -0
  131. package/dist/edit/ods/scaffold.js +124 -0
  132. package/dist/edit/ods/sheet.cjs +70 -0
  133. package/dist/edit/ods/sheet.d.cts +22 -0
  134. package/dist/edit/ods/sheet.d.ts +22 -0
  135. package/dist/edit/ods/sheet.js +69 -0
  136. package/dist/edit/odt/automatic-styles.cjs +49 -0
  137. package/dist/edit/odt/automatic-styles.d.cts +8 -0
  138. package/dist/edit/odt/automatic-styles.d.ts +8 -0
  139. package/dist/edit/odt/automatic-styles.js +45 -0
  140. package/dist/edit/odt/content.cjs +110 -0
  141. package/dist/edit/odt/content.d.cts +9 -0
  142. package/dist/edit/odt/content.d.ts +9 -0
  143. package/dist/edit/odt/content.js +108 -0
  144. package/dist/edit/odt/editor.cjs +98 -0
  145. package/dist/edit/odt/editor.d.cts +25 -0
  146. package/dist/edit/odt/editor.d.ts +25 -0
  147. package/dist/edit/odt/editor.js +95 -0
  148. package/dist/edit/odt/list.cjs +82 -0
  149. package/dist/edit/odt/list.d.cts +2 -0
  150. package/dist/edit/odt/list.d.ts +2 -0
  151. package/dist/edit/odt/list.js +79 -0
  152. package/dist/edit/odt/paragraph.cjs +84 -0
  153. package/dist/edit/odt/paragraph.d.cts +2 -0
  154. package/dist/edit/odt/paragraph.d.ts +2 -0
  155. package/dist/edit/odt/paragraph.js +82 -0
  156. package/dist/edit/odt/props.cjs +26 -0
  157. package/dist/edit/odt/props.d.cts +7 -0
  158. package/dist/edit/odt/props.d.ts +7 -0
  159. package/dist/edit/odt/props.js +23 -0
  160. package/dist/edit/odt/run.cjs +82 -0
  161. package/dist/edit/odt/run.d.cts +2 -0
  162. package/dist/edit/odt/run.d.ts +2 -0
  163. package/dist/edit/odt/run.js +80 -0
  164. package/dist/edit/odt/scaffold.cjs +109 -0
  165. package/dist/edit/odt/scaffold.d.cts +5 -0
  166. package/dist/edit/odt/scaffold.d.ts +5 -0
  167. package/dist/edit/odt/scaffold.js +108 -0
  168. package/dist/edit/odt/table.cjs +123 -0
  169. package/dist/edit/odt/table.d.cts +37 -0
  170. package/dist/edit/odt/table.d.ts +37 -0
  171. package/dist/edit/odt/table.js +119 -0
  172. package/dist/edit/pptx/content.cjs +49 -0
  173. package/dist/edit/pptx/content.d.cts +6 -0
  174. package/dist/edit/pptx/content.d.ts +6 -0
  175. package/dist/edit/pptx/content.js +48 -0
  176. package/dist/edit/pptx/editor.cjs +187 -0
  177. package/dist/edit/pptx/editor.d.cts +20 -0
  178. package/dist/edit/pptx/editor.d.ts +20 -0
  179. package/dist/edit/pptx/editor.js +184 -0
  180. package/dist/edit/pptx/image.cjs +27 -0
  181. package/dist/edit/pptx/image.d.cts +2 -0
  182. package/dist/edit/pptx/image.d.ts +2 -0
  183. package/dist/edit/pptx/image.js +26 -0
  184. package/dist/edit/pptx/scaffold.cjs +292 -0
  185. package/dist/edit/pptx/scaffold.d.cts +13 -0
  186. package/dist/edit/pptx/scaffold.d.ts +13 -0
  187. package/dist/edit/pptx/scaffold.js +283 -0
  188. package/dist/edit/pptx/shape.cjs +182 -0
  189. package/dist/edit/pptx/shape.d.cts +2 -0
  190. package/dist/edit/pptx/shape.d.ts +2 -0
  191. package/dist/edit/pptx/shape.js +179 -0
  192. package/dist/edit/pptx/slide.cjs +146 -0
  193. package/dist/edit/pptx/slide.d.cts +33 -0
  194. package/dist/edit/pptx/slide.d.ts +33 -0
  195. package/dist/edit/pptx/slide.js +145 -0
  196. package/dist/firebird/backup.cjs +150 -0
  197. package/dist/firebird/backup.d.cts +21 -0
  198. package/dist/firebird/backup.d.ts +21 -0
  199. package/dist/firebird/backup.js +145 -0
  200. package/dist/firebird/blr-types.cjs +118 -0
  201. package/dist/firebird/blr-types.d.cts +2 -0
  202. package/dist/firebird/blr-types.d.ts +2 -0
  203. package/dist/firebird/blr-types.js +90 -0
  204. package/dist/firebird/data.cjs +231 -0
  205. package/dist/firebird/data.d.cts +17 -0
  206. package/dist/firebird/data.d.ts +17 -0
  207. package/dist/firebird/data.js +228 -0
  208. package/dist/firebird/date.cjs +63 -0
  209. package/dist/firebird/date.d.cts +17 -0
  210. package/dist/firebird/date.d.ts +17 -0
  211. package/dist/firebird/date.js +58 -0
  212. package/dist/firebird/reader.cjs +157 -0
  213. package/dist/firebird/reader.d.cts +2 -0
  214. package/dist/firebird/reader.d.ts +2 -0
  215. package/dist/firebird/reader.js +154 -0
  216. package/dist/firebird/schema.cjs +91 -0
  217. package/dist/firebird/schema.d.cts +2 -0
  218. package/dist/firebird/schema.d.ts +2 -0
  219. package/dist/firebird/schema.js +89 -0
  220. package/dist/geometry-DvwdrIij.d.cts +5 -0
  221. package/dist/geometry-DvwdrIij.d.ts +5 -0
  222. package/dist/hsqldb/cache.cjs +88 -0
  223. package/dist/hsqldb/cache.d.cts +13 -0
  224. package/dist/hsqldb/cache.d.ts +13 -0
  225. package/dist/hsqldb/cache.js +84 -0
  226. package/dist/hsqldb/rowformat.cjs +222 -0
  227. package/dist/hsqldb/rowformat.d.cts +21 -0
  228. package/dist/hsqldb/rowformat.d.ts +21 -0
  229. package/dist/hsqldb/rowformat.js +218 -0
  230. package/dist/hsqldb/script.cjs +450 -0
  231. package/dist/hsqldb/script.d.cts +19 -0
  232. package/dist/hsqldb/script.d.ts +19 -0
  233. package/dist/hsqldb/script.js +447 -0
  234. package/dist/image-B-xQWYYS.d.ts +16 -0
  235. package/dist/image-BZDy72Jb.d.cts +16 -0
  236. package/dist/image-BfRLAD9B.d.cts +18 -0
  237. package/dist/image-BfRLAD9B.d.ts +18 -0
  238. package/dist/image-CeqwL-Qs.d.ts +14 -0
  239. package/dist/image-DWX6cNOD.d.cts +14 -0
  240. package/dist/index.cjs +201 -10863
  241. package/dist/index.d.cts +71 -1406
  242. package/dist/index.d.ts +71 -1406
  243. package/dist/index.js +67 -10727
  244. package/dist/layout/drawing.cjs +117 -0
  245. package/dist/layout/drawing.d.cts +13 -0
  246. package/dist/layout/drawing.d.ts +13 -0
  247. package/dist/layout/drawing.js +116 -0
  248. package/dist/layout/engine.cjs +216 -0
  249. package/dist/layout/engine.d.cts +19 -0
  250. package/dist/layout/engine.d.ts +19 -0
  251. package/dist/layout/engine.js +215 -0
  252. package/dist/layout/reconstruct.cjs +809 -0
  253. package/dist/layout/reconstruct.d.cts +12 -0
  254. package/dist/layout/reconstruct.d.ts +12 -0
  255. package/dist/layout/reconstruct.js +805 -0
  256. package/dist/layout/shared.cjs +104 -0
  257. package/dist/layout/shared.d.cts +15 -0
  258. package/dist/layout/shared.d.ts +15 -0
  259. package/dist/layout/shared.js +96 -0
  260. package/dist/layout/sheets.cjs +413 -0
  261. package/dist/layout/sheets.d.cts +14 -0
  262. package/dist/layout/sheets.d.ts +14 -0
  263. package/dist/layout/sheets.js +414 -0
  264. package/dist/layout/slides.cjs +194 -0
  265. package/dist/layout/slides.d.cts +25 -0
  266. package/dist/layout/slides.d.ts +25 -0
  267. package/dist/layout/slides.js +192 -0
  268. package/dist/list-BuBM9rwQ.d.cts +24 -0
  269. package/dist/list-CvKxhy3y.d.ts +24 -0
  270. package/dist/mathml/compose.cjs +53 -0
  271. package/dist/mathml/compose.d.cts +8 -0
  272. package/dist/mathml/compose.d.ts +8 -0
  273. package/dist/mathml/compose.js +49 -0
  274. package/dist/mathml/layout-types.cjs +0 -0
  275. package/dist/mathml/layout-types.d.cts +50 -0
  276. package/dist/mathml/layout-types.d.ts +50 -0
  277. package/dist/mathml/layout-types.js +0 -0
  278. package/dist/mathml/layout.cjs +373 -0
  279. package/dist/mathml/layout.d.cts +24 -0
  280. package/dist/mathml/layout.d.ts +24 -0
  281. package/dist/mathml/layout.js +371 -0
  282. package/dist/mathml/length.cjs +41 -0
  283. package/dist/mathml/length.d.cts +4 -0
  284. package/dist/mathml/length.d.ts +4 -0
  285. package/dist/mathml/length.js +40 -0
  286. package/dist/mathml/metrics.cjs +0 -0
  287. package/dist/mathml/metrics.d.cts +44 -0
  288. package/dist/mathml/metrics.d.ts +44 -0
  289. package/dist/mathml/metrics.js +0 -0
  290. package/dist/mathml/nodes.cjs +39 -0
  291. package/dist/mathml/nodes.d.cts +2 -0
  292. package/dist/mathml/nodes.d.ts +2 -0
  293. package/dist/mathml/nodes.js +32 -0
  294. package/dist/mathml/operators.cjs +189 -0
  295. package/dist/mathml/operators.d.cts +13 -0
  296. package/dist/mathml/operators.d.ts +13 -0
  297. package/dist/mathml/operators.js +188 -0
  298. package/dist/mathml/radical.cjs +46 -0
  299. package/dist/mathml/radical.d.cts +10 -0
  300. package/dist/mathml/radical.d.ts +10 -0
  301. package/dist/mathml/radical.js +45 -0
  302. package/dist/mathml/variant.cjs +1160 -0
  303. package/dist/mathml/variant.d.cts +7 -0
  304. package/dist/mathml/variant.d.ts +7 -0
  305. package/dist/mathml/variant.js +1157 -0
  306. package/dist/model/bytes.cjs +88 -0
  307. package/dist/model/bytes.d.cts +12 -0
  308. package/dist/model/bytes.d.ts +12 -0
  309. package/dist/model/bytes.js +80 -0
  310. package/dist/model/color.cjs +26 -0
  311. package/dist/model/color.d.cts +2 -0
  312. package/dist/model/color.d.ts +2 -0
  313. package/dist/model/color.js +2 -0
  314. package/dist/model/content.cjs +34 -0
  315. package/dist/model/content.d.cts +362 -0
  316. package/dist/model/content.d.ts +362 -0
  317. package/dist/model/content.js +32 -0
  318. package/dist/model/formula.cjs +0 -0
  319. package/dist/model/formula.d.cts +8 -0
  320. package/dist/model/formula.d.ts +8 -0
  321. package/dist/model/formula.js +0 -0
  322. package/dist/model/geometry.cjs +55 -0
  323. package/dist/model/geometry.d.cts +2 -0
  324. package/dist/model/geometry.d.ts +2 -0
  325. package/dist/model/geometry.js +12 -0
  326. package/dist/model/style.cjs +20 -0
  327. package/dist/model/style.d.cts +2 -0
  328. package/dist/model/style.d.ts +2 -0
  329. package/dist/model/style.js +2 -0
  330. package/dist/model/units.cjs +55 -0
  331. package/dist/model/units.d.cts +20 -0
  332. package/dist/model/units.d.ts +20 -0
  333. package/dist/model/units.js +38 -0
  334. package/dist/nodes-pArN9ilm.d.cts +27 -0
  335. package/dist/nodes-pArN9ilm.d.ts +27 -0
  336. package/dist/odb/csv.cjs +48 -0
  337. package/dist/odb/csv.d.cts +14 -0
  338. package/dist/odb/csv.d.ts +14 -0
  339. package/dist/odb/csv.js +45 -0
  340. package/dist/odb/read.cjs +87 -0
  341. package/dist/odb/read.d.cts +15 -0
  342. package/dist/odb/read.d.ts +15 -0
  343. package/dist/odb/read.js +85 -0
  344. package/dist/odb/spreadsheet.cjs +68 -0
  345. package/dist/odb/spreadsheet.d.cts +6 -0
  346. package/dist/odb/spreadsheet.d.ts +6 -0
  347. package/dist/odb/spreadsheet.js +67 -0
  348. package/dist/odf/formula/detect.cjs +29 -0
  349. package/dist/odf/formula/detect.d.cts +12 -0
  350. package/dist/odf/formula/detect.d.ts +12 -0
  351. package/dist/odf/formula/detect.js +28 -0
  352. package/dist/odf/formula/placeholder.cjs +37 -0
  353. package/dist/odf/formula/placeholder.d.cts +14 -0
  354. package/dist/odf/formula/placeholder.d.ts +14 -0
  355. package/dist/odf/formula/placeholder.js +36 -0
  356. package/dist/odf/formula/read.cjs +32 -0
  357. package/dist/odf/formula/read.d.cts +11 -0
  358. package/dist/odf/formula/read.d.ts +11 -0
  359. package/dist/odf/formula/read.js +30 -0
  360. package/dist/odf/odg/read.cjs +15 -0
  361. package/dist/odf/odg/read.d.cts +6 -0
  362. package/dist/odf/odg/read.d.ts +6 -0
  363. package/dist/odf/odg/read.js +14 -0
  364. package/dist/odf/odp/read.cjs +45 -0
  365. package/dist/odf/odp/read.d.cts +11 -0
  366. package/dist/odf/odp/read.d.ts +11 -0
  367. package/dist/odf/odp/read.js +44 -0
  368. package/dist/odf/ods/read.cjs +15 -0
  369. package/dist/odf/ods/read.d.cts +6 -0
  370. package/dist/odf/ods/read.d.ts +6 -0
  371. package/dist/odf/ods/read.js +14 -0
  372. package/dist/odf/odt/read.cjs +43 -0
  373. package/dist/odf/odt/read.d.cts +11 -0
  374. package/dist/odf/odt/read.d.ts +11 -0
  375. package/dist/odf/odt/read.js +42 -0
  376. package/dist/odf-package/manifest.cjs +62 -0
  377. package/dist/odf-package/manifest.d.cts +2 -0
  378. package/dist/odf-package/manifest.d.ts +2 -0
  379. package/dist/odf-package/manifest.js +2 -0
  380. package/dist/odf-package/media.cjs +34 -0
  381. package/dist/odf-package/media.d.cts +8 -0
  382. package/dist/odf-package/media.d.ts +8 -0
  383. package/dist/odf-package/media.js +34 -0
  384. package/dist/ooxml/docx/read.cjs +15 -0
  385. package/dist/ooxml/docx/read.d.cts +6 -0
  386. package/dist/ooxml/docx/read.d.ts +6 -0
  387. package/dist/ooxml/docx/read.js +14 -0
  388. package/dist/ooxml/pptx/read.cjs +15 -0
  389. package/dist/ooxml/pptx/read.d.cts +6 -0
  390. package/dist/ooxml/pptx/read.d.ts +6 -0
  391. package/dist/ooxml/pptx/read.js +14 -0
  392. package/dist/opc/content-types.cjs +47 -0
  393. package/dist/opc/content-types.d.cts +7 -0
  394. package/dist/opc/content-types.d.ts +7 -0
  395. package/dist/opc/content-types.js +44 -0
  396. package/dist/opc/media.cjs +45 -0
  397. package/dist/opc/media.d.cts +10 -0
  398. package/dist/opc/media.d.ts +10 -0
  399. package/dist/opc/media.js +44 -0
  400. package/dist/opc/paths.cjs +28 -0
  401. package/dist/opc/paths.d.cts +5 -0
  402. package/dist/opc/paths.d.ts +5 -0
  403. package/dist/opc/paths.js +26 -0
  404. package/dist/opc/rels.cjs +47 -0
  405. package/dist/opc/rels.d.cts +10 -0
  406. package/dist/opc/rels.d.ts +10 -0
  407. package/dist/opc/rels.js +46 -0
  408. package/dist/paragraph-BXbXKPy3.d.cts +30 -0
  409. package/dist/paragraph-CoUi_88j.d.ts +30 -0
  410. package/dist/ports/abort.cjs +7 -0
  411. package/dist/ports/abort.d.cts +4 -0
  412. package/dist/ports/abort.d.ts +4 -0
  413. package/dist/ports/abort.js +6 -0
  414. package/dist/ports/clock.cjs +9 -0
  415. package/dist/ports/clock.d.cts +8 -0
  416. package/dist/ports/clock.d.ts +8 -0
  417. package/dist/ports/clock.js +7 -0
  418. package/dist/reader-DP0Mbaj4.d.cts +41 -0
  419. package/dist/reader-DP0Mbaj4.d.ts +41 -0
  420. package/dist/run-B3GNScJH.d.cts +38 -0
  421. package/dist/run-CJfh8rv3.d.ts +38 -0
  422. package/dist/run-D2rTWHbt.d.ts +38 -0
  423. package/dist/run-F8JN7Vy4.d.cts +38 -0
  424. package/dist/schema-Acco3Ezi.d.cts +22 -0
  425. package/dist/schema-VkAA6pF5.d.ts +22 -0
  426. package/dist/shape-BUfjw5eZ.d.cts +35 -0
  427. package/dist/shape-BfN3m52m.d.ts +30 -0
  428. package/dist/shape-CN2ycxOo.d.cts +30 -0
  429. package/dist/shape-CTkl6kt8.d.ts +35 -0
  430. package/dist/style-DkamR3aY.d.cts +2 -0
  431. package/dist/style-DkamR3aY.d.ts +2 -0
  432. package/dist/vector-ClohqsOe.d.cts +76 -0
  433. package/dist/vector-ClohqsOe.d.ts +76 -0
  434. package/dist/xml/edit.cjs +65 -0
  435. package/dist/xml/edit.d.cts +12 -0
  436. package/dist/xml/edit.d.ts +12 -0
  437. package/dist/xml/edit.js +57 -0
  438. package/dist/xml/entities.cjs +12 -0
  439. package/dist/xml/entities.d.cts +5 -0
  440. package/dist/xml/entities.d.ts +5 -0
  441. package/dist/xml/entities.js +10 -0
  442. package/dist/xml/fragment.cjs +22 -0
  443. package/dist/xml/fragment.d.cts +6 -0
  444. package/dist/xml/fragment.d.ts +6 -0
  445. package/dist/xml/fragment.js +20 -0
  446. package/dist/xml/odf-text.cjs +53 -0
  447. package/dist/xml/odf-text.d.cts +6 -0
  448. package/dist/xml/odf-text.d.ts +6 -0
  449. package/dist/xml/odf-text.js +51 -0
  450. package/dist/xml/query.cjs +33 -0
  451. package/dist/xml/query.d.cts +12 -0
  452. package/dist/xml/query.d.ts +12 -0
  453. package/dist/xml/query.js +29 -0
  454. package/package.json +9 -1
@@ -0,0 +1,809 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ require("../model/content.cjs");
3
+ const require_model_geometry = require("../model/geometry.cjs");
4
+ const require_ports_abort = require("../ports/abort.cjs");
5
+ let pdf_codec = require("pdf-codec");
6
+ //#region src/layout/reconstruct.ts
7
+ const ZERO_MARGINS = {
8
+ topPt: 0,
9
+ rightPt: 0,
10
+ bottomPt: 0,
11
+ leftPt: 0
12
+ };
13
+ const LINE_BASELINE_TOLERANCE_FACTOR = .5;
14
+ function clusterIntoLines(items) {
15
+ const sorted = [...items].sort((a, b) => b.yPt - a.yPt || a.xPt - b.xPt);
16
+ const working = [];
17
+ for (const item of sorted) {
18
+ const tolerance = LINE_BASELINE_TOLERANCE_FACTOR * item.sizePt;
19
+ const line = working.find((l) => Math.abs(l.baselineY - item.yPt) <= tolerance);
20
+ if (line === void 0) working.push({
21
+ items: [item],
22
+ baselineY: item.yPt
23
+ });
24
+ else line.items.push(item);
25
+ }
26
+ for (const line of working) line.items.sort((a, b) => a.xPt - b.xPt);
27
+ working.sort((a, b) => b.baselineY - a.baselineY);
28
+ return working;
29
+ }
30
+ function textItemVerticalExtent(item) {
31
+ const { standardName } = (0, pdf_codec.resolveStandardFont)(item.font.family, item.font.weight === "bold", item.font.style === "italic");
32
+ const metrics = pdf_codec.STANDARD_METRICS[standardName];
33
+ return {
34
+ ascentPt: metrics.ascender / 1e3 * item.sizePt,
35
+ descentPt: Math.abs(metrics.descender) / 1e3 * item.sizePt
36
+ };
37
+ }
38
+ function textItemToContentRun(item) {
39
+ return {
40
+ text: item.text,
41
+ bold: item.font.weight === "bold" ? true : void 0,
42
+ italic: item.font.style === "italic" ? true : void 0,
43
+ fontFamily: item.font.family,
44
+ sizePt: item.sizePt,
45
+ color: item.color
46
+ };
47
+ }
48
+ const MIN_WORD_GAP_PT = .5;
49
+ function pushRunsForLine(runs, line) {
50
+ line.items.forEach((item, itemIndex) => {
51
+ if (itemIndex > 0) {
52
+ const prevItem = line.items[itemIndex - 1];
53
+ const gap = item.xPt - (prevItem.xPt + (prevItem.widthPt ?? 0));
54
+ if (gap > LARGE_GAP_EM_MULTIPLIER * item.sizePt) runs.push({ text: " " });
55
+ else if (gap > MIN_WORD_GAP_PT) runs[runs.length - 1].text += " ";
56
+ }
57
+ runs.push(textItemToContentRun(item));
58
+ });
59
+ }
60
+ function bucketCounts(values, bucketSize) {
61
+ const counts = /* @__PURE__ */ new Map();
62
+ for (const v of values) {
63
+ const bucket = Math.round(v / bucketSize) * bucketSize;
64
+ counts.set(bucket, (counts.get(bucket) ?? 0) + 1);
65
+ }
66
+ return counts;
67
+ }
68
+ function modeOf(values, bucketSize) {
69
+ if (values.length === 0) return 0;
70
+ const counts = bucketCounts(values, bucketSize);
71
+ let bestBucket = values[0];
72
+ let bestCount = 0;
73
+ for (const [bucket, count] of counts) if (count > bestCount) {
74
+ bestBucket = bucket;
75
+ bestCount = count;
76
+ }
77
+ return bestBucket;
78
+ }
79
+ function modalLineGap(gaps) {
80
+ const counts = bucketCounts(gaps, .5);
81
+ let bestBucket = gaps[0];
82
+ let bestCount = 0;
83
+ for (const [bucket, count] of counts) if (count > bestCount) {
84
+ bestBucket = bucket;
85
+ bestCount = count;
86
+ }
87
+ return bestCount > 1 ? bestBucket : Math.min(...gaps);
88
+ }
89
+ const LARGE_GAP_EM_MULTIPLIER = 2;
90
+ const PARAGRAPH_GAP_MULTIPLIER = 1.25;
91
+ const NOMINAL_LINE_SPACING_RATIO = 1.2;
92
+ const MIN_LINES_FOR_GAP_MODE = 3;
93
+ function estimateModalLineSpacing(lines) {
94
+ if (lines.length < MIN_LINES_FOR_GAP_MODE) return modeOf(lines.map((l) => l.items[0].sizePt), .5) * NOMINAL_LINE_SPACING_RATIO;
95
+ const gaps = [];
96
+ for (let i = 1; i < lines.length; i++) gaps.push(lines[i - 1].baselineY - lines[i].baselineY);
97
+ return modalLineGap(gaps);
98
+ }
99
+ function reconstructWordprocessing(doc, options) {
100
+ const signal = options?.signal;
101
+ const sections = [];
102
+ let currentGroup = [];
103
+ for (const page of doc.pages) {
104
+ require_ports_abort.throwIfAborted(signal);
105
+ if (currentGroup.length > 0 && !samePageSize(currentGroup[0], page)) {
106
+ sections.push(buildSection(currentGroup, doc.images));
107
+ currentGroup = [];
108
+ }
109
+ currentGroup.push(page);
110
+ }
111
+ if (currentGroup.length > 0) sections.push(buildSection(currentGroup, doc.images));
112
+ return {
113
+ kind: "wordprocessing",
114
+ formatVersion: 1,
115
+ metadata: doc.metadata,
116
+ sections
117
+ };
118
+ }
119
+ function samePageSize(a, b) {
120
+ return a.widthPt === b.widthPt && a.heightPt === b.heightPt;
121
+ }
122
+ function buildSection(pages, images) {
123
+ const blocks = [];
124
+ pages.forEach((page, i) => {
125
+ if (i > 0) blocks.push({ kind: "pageBreak" });
126
+ blocks.push(...reconstructPageBlocks(page, images));
127
+ });
128
+ return {
129
+ pageSize: {
130
+ widthPt: pages[0].widthPt,
131
+ heightPt: pages[0].heightPt
132
+ },
133
+ margins: ZERO_MARGINS,
134
+ blocks
135
+ };
136
+ }
137
+ function reconstructPageBlocks(page, images) {
138
+ const textItems = page.items.filter((i) => i.kind === "text");
139
+ const imageItems = page.items.filter((i) => i.kind === "image");
140
+ const paragraphs = clusterIntoParagraphs(clusterIntoLines(textItems));
141
+ const positioned = [];
142
+ for (const paragraph of paragraphs) positioned.push({
143
+ yPt: paragraph.lines[0].baselineY,
144
+ block: paragraphToContentParagraph(paragraph)
145
+ });
146
+ for (const img of imageItems) {
147
+ const asset = images[img.imageId];
148
+ if (asset !== void 0) positioned.push({
149
+ yPt: img.yPt,
150
+ block: {
151
+ kind: "image",
152
+ format: asset.format,
153
+ base64: asset.base64,
154
+ widthPt: img.widthPt,
155
+ heightPt: img.heightPt
156
+ }
157
+ });
158
+ }
159
+ positioned.sort((a, b) => b.yPt - a.yPt);
160
+ return positioned.map((p) => p.block);
161
+ }
162
+ function clusterIntoParagraphs(lines) {
163
+ if (lines.length === 0) return [];
164
+ const modalSpacing = estimateModalLineSpacing(lines);
165
+ const dominantLeftX = modeOf(lines.map((l) => l.items[0].xPt), 1);
166
+ const paragraphs = [{ lines: [lines[0]] }];
167
+ for (let i = 1; i < lines.length; i++) {
168
+ const prev = lines[i - 1];
169
+ const next = lines[i];
170
+ if (startsNewParagraph(prev, next, modalSpacing, dominantLeftX)) paragraphs.push({ lines: [next] });
171
+ else paragraphs[paragraphs.length - 1].lines.push(next);
172
+ }
173
+ return paragraphs;
174
+ }
175
+ function startsNewParagraph(prev, next, modalSpacing, dominantLeftX) {
176
+ if (prev.baselineY - next.baselineY > PARAGRAPH_GAP_MULTIPLIER * modalSpacing) return true;
177
+ const nextLeft = next.items[0].xPt;
178
+ const prevLeft = prev.items[0].xPt;
179
+ const emPt = next.items[0].sizePt;
180
+ const nextIndented = Math.abs(nextLeft - dominantLeftX) > emPt;
181
+ const prevAtMargin = Math.abs(prevLeft - dominantLeftX) <= emPt;
182
+ return nextIndented && prevAtMargin;
183
+ }
184
+ const LEFT_ALIGN_TOLERANCE_PT = 2;
185
+ function paragraphToContentParagraph(paragraph) {
186
+ const dominantLeftX = modeOf(paragraph.lines.map((l) => l.items[0].xPt), 1);
187
+ const alignment = paragraph.lines.every((l) => Math.abs(l.items[0].xPt - dominantLeftX) <= LEFT_ALIGN_TOLERANCE_PT) ? "left" : void 0;
188
+ const runs = [];
189
+ paragraph.lines.forEach((line, lineIndex) => {
190
+ if (lineIndex > 0) {
191
+ const lastRun = runs[runs.length - 1];
192
+ if (lastRun !== void 0) lastRun.text += " ";
193
+ }
194
+ pushRunsForLine(runs, line);
195
+ });
196
+ return {
197
+ kind: "paragraph",
198
+ runs,
199
+ alignment
200
+ };
201
+ }
202
+ function reconstructPresentation(doc, options) {
203
+ const signal = options?.signal;
204
+ const slides = doc.pages.map((page) => {
205
+ require_ports_abort.throwIfAborted(signal);
206
+ return reconstructSlide(page, doc.images);
207
+ });
208
+ return {
209
+ kind: "presentation",
210
+ formatVersion: 1,
211
+ metadata: doc.metadata,
212
+ slides
213
+ };
214
+ }
215
+ function reconstructSlide(page, images) {
216
+ const textItems = page.items.filter((i) => i.kind === "text");
217
+ const imageItems = page.items.filter((i) => i.kind === "image");
218
+ const textShapes = clusterIntoBlocks(clusterIntoLines(textItems)).map((block) => blockToShape(block, page.heightPt));
219
+ const imageShapes = [];
220
+ for (const img of imageItems) {
221
+ const shape = imageToShape(img, page.heightPt, images);
222
+ if (shape !== void 0) imageShapes.push(shape);
223
+ }
224
+ return {
225
+ size: {
226
+ widthPt: page.widthPt,
227
+ heightPt: page.heightPt
228
+ },
229
+ shapes: [...imageShapes, ...textShapes],
230
+ notes: page.notes ?? ""
231
+ };
232
+ }
233
+ function splitLineByLargeGaps(line) {
234
+ const segments = [];
235
+ let current = [];
236
+ line.items.forEach((item, i) => {
237
+ if (i > 0) {
238
+ const prev = line.items[i - 1];
239
+ if (item.xPt - (prev.xPt + (prev.widthPt ?? 0)) > LARGE_GAP_EM_MULTIPLIER * item.sizePt) {
240
+ segments.push({
241
+ items: current,
242
+ baselineY: line.baselineY
243
+ });
244
+ current = [];
245
+ }
246
+ }
247
+ current.push(item);
248
+ });
249
+ if (current.length > 0) segments.push({
250
+ items: current,
251
+ baselineY: line.baselineY
252
+ });
253
+ return segments;
254
+ }
255
+ const FONT_SIZE_CLOSE_TOLERANCE_PT = 1;
256
+ const FONT_SIZE_CLOSE_TOLERANCE_RATIO = .15;
257
+ function fontSizesClose(a, b) {
258
+ return Math.abs(a - b) <= FONT_SIZE_CLOSE_TOLERANCE_PT || Math.abs(a - b) / Math.max(a, b) <= FONT_SIZE_CLOSE_TOLERANCE_RATIO;
259
+ }
260
+ function clusterIntoBlocks(pageLines) {
261
+ const segments = pageLines.flatMap(splitLineByLargeGaps);
262
+ const blocks = [];
263
+ for (const segment of segments) {
264
+ const leftX = segment.items[0].xPt;
265
+ const sizePt = segment.items[0].sizePt;
266
+ const matched = blocks.find((block) => {
267
+ const lastLine = block.lines[block.lines.length - 1];
268
+ const lastLeftX = lastLine.items[0].xPt;
269
+ const lastSizePt = lastLine.items[0].sizePt;
270
+ const gap = lastLine.baselineY - segment.baselineY;
271
+ if (gap <= 0) return false;
272
+ return Math.abs(leftX - lastLeftX) <= LEFT_ALIGN_TOLERANCE_PT && fontSizesClose(sizePt, lastSizePt) && gap <= PARAGRAPH_GAP_MULTIPLIER * lastSizePt;
273
+ });
274
+ if (matched !== void 0) matched.lines.push(segment);
275
+ else blocks.push({ lines: [segment] });
276
+ }
277
+ return blocks;
278
+ }
279
+ function computeBlockFrame(block, slideHeightPt) {
280
+ let minX = Number.POSITIVE_INFINITY;
281
+ let maxX = Number.NEGATIVE_INFINITY;
282
+ let minY = Number.POSITIVE_INFINITY;
283
+ let maxY = Number.NEGATIVE_INFINITY;
284
+ for (const line of block.lines) for (const item of line.items) {
285
+ const { ascentPt, descentPt } = textItemVerticalExtent(item);
286
+ minX = Math.min(minX, item.xPt);
287
+ maxX = Math.max(maxX, item.xPt + (item.widthPt ?? 0));
288
+ minY = Math.min(minY, item.yPt - descentPt);
289
+ maxY = Math.max(maxY, item.yPt + ascentPt);
290
+ }
291
+ return require_model_geometry.flipY({
292
+ xPt: minX,
293
+ yPt: minY,
294
+ widthPt: maxX - minX,
295
+ heightPt: maxY - minY
296
+ }, slideHeightPt);
297
+ }
298
+ function lineToParagraph(line) {
299
+ const runs = [];
300
+ pushRunsForLine(runs, line);
301
+ return {
302
+ kind: "paragraph",
303
+ runs
304
+ };
305
+ }
306
+ function blockToShape(block, slideHeightPt) {
307
+ return {
308
+ frame: computeBlockFrame(block, slideHeightPt),
309
+ insetLeftPt: 0,
310
+ insetTopPt: 0,
311
+ insetRightPt: 0,
312
+ insetBottomPt: 0,
313
+ blocks: block.lines.map(lineToParagraph)
314
+ };
315
+ }
316
+ function imageToShape(img, slideHeightPt, images) {
317
+ const asset = images[img.imageId];
318
+ if (asset === void 0) return;
319
+ return {
320
+ frame: require_model_geometry.flipY({
321
+ xPt: img.xPt,
322
+ yPt: img.yPt,
323
+ widthPt: img.widthPt,
324
+ heightPt: img.heightPt
325
+ }, slideHeightPt),
326
+ rotationDeg: img.rotationDeg !== void 0 ? -img.rotationDeg : void 0,
327
+ insetLeftPt: 0,
328
+ insetTopPt: 0,
329
+ insetRightPt: 0,
330
+ insetBottomPt: 0,
331
+ blocks: [{
332
+ kind: "image",
333
+ format: asset.format,
334
+ base64: asset.base64,
335
+ widthPt: img.widthPt,
336
+ heightPt: img.heightPt
337
+ }]
338
+ };
339
+ }
340
+ function reconstructDrawing(doc, options) {
341
+ const signal = options?.signal;
342
+ const pages = doc.pages.map((page) => {
343
+ require_ports_abort.throwIfAborted(signal);
344
+ return reconstructDrawPage(page, doc.images);
345
+ });
346
+ return {
347
+ kind: "drawing",
348
+ formatVersion: 1,
349
+ metadata: doc.metadata,
350
+ pages
351
+ };
352
+ }
353
+ function reconstructDrawPage(page, images) {
354
+ const vectors = [];
355
+ const shapes = [];
356
+ for (const item of page.items) if (item.kind === "rect") vectors.push(layoutRectToVector(item, page.heightPt));
357
+ else if (item.kind === "ellipse") vectors.push(layoutEllipseToVector(item, page.heightPt));
358
+ else if (item.kind === "line") vectors.push(layoutLineToVector(item, page.heightPt));
359
+ else if (item.kind === "path") vectors.push(layoutPathToVector(item, page.heightPt));
360
+ else if (item.kind === "text") shapes.push(layoutTextToShape(item, page.heightPt));
361
+ else if (item.kind === "image") {
362
+ const shape = imageToShape(item, page.heightPt, images);
363
+ if (shape !== void 0) shapes.push(shape);
364
+ }
365
+ return {
366
+ size: {
367
+ widthPt: page.widthPt,
368
+ heightPt: page.heightPt
369
+ },
370
+ shapes,
371
+ vectors
372
+ };
373
+ }
374
+ function layoutRectToVector(item, pageHeightPt) {
375
+ return {
376
+ kind: "rect",
377
+ frame: require_model_geometry.flipY({
378
+ xPt: item.xPt,
379
+ yPt: item.yPt,
380
+ widthPt: item.widthPt,
381
+ heightPt: item.heightPt
382
+ }, pageHeightPt),
383
+ fill: item.fill,
384
+ stroke: item.stroke,
385
+ sourcePath: item.sourcePath
386
+ };
387
+ }
388
+ function layoutEllipseToVector(item, pageHeightPt) {
389
+ return {
390
+ kind: "ellipse",
391
+ frame: require_model_geometry.flipY({
392
+ xPt: item.xPt,
393
+ yPt: item.yPt,
394
+ widthPt: item.widthPt,
395
+ heightPt: item.heightPt
396
+ }, pageHeightPt),
397
+ fill: item.fill,
398
+ stroke: item.stroke,
399
+ sourcePath: item.sourcePath
400
+ };
401
+ }
402
+ function layoutLineToVector(item, pageHeightPt) {
403
+ return {
404
+ kind: "line",
405
+ from: {
406
+ xPt: item.x1Pt,
407
+ yPt: pageHeightPt - item.y1Pt
408
+ },
409
+ to: {
410
+ xPt: item.x2Pt,
411
+ yPt: pageHeightPt - item.y2Pt
412
+ },
413
+ stroke: {
414
+ color: item.color,
415
+ widthPt: item.widthPt
416
+ },
417
+ sourcePath: item.sourcePath
418
+ };
419
+ }
420
+ function collectPathPoints(subpaths) {
421
+ const points = [];
422
+ for (const subpath of subpaths) {
423
+ points.push({
424
+ xPt: subpath.startXPt,
425
+ yPt: subpath.startYPt
426
+ });
427
+ for (const segment of subpath.segments) {
428
+ if (segment.kind === "cubic") {
429
+ points.push({
430
+ xPt: segment.c1xPt,
431
+ yPt: segment.c1yPt
432
+ });
433
+ points.push({
434
+ xPt: segment.c2xPt,
435
+ yPt: segment.c2yPt
436
+ });
437
+ }
438
+ points.push({
439
+ xPt: segment.xPt,
440
+ yPt: segment.yPt
441
+ });
442
+ }
443
+ }
444
+ return points;
445
+ }
446
+ function pathBoundingFrame(points, pageHeightPt) {
447
+ if (points.length === 0) return {
448
+ xPt: 0,
449
+ yPt: 0,
450
+ widthPt: 0,
451
+ heightPt: 0
452
+ };
453
+ let minX = Number.POSITIVE_INFINITY;
454
+ let maxX = Number.NEGATIVE_INFINITY;
455
+ let minYDown = Number.POSITIVE_INFINITY;
456
+ let maxYDown = Number.NEGATIVE_INFINITY;
457
+ for (const point of points) {
458
+ const yDown = pageHeightPt - point.yPt;
459
+ minX = Math.min(minX, point.xPt);
460
+ maxX = Math.max(maxX, point.xPt);
461
+ minYDown = Math.min(minYDown, yDown);
462
+ maxYDown = Math.max(maxYDown, yDown);
463
+ }
464
+ return {
465
+ xPt: minX,
466
+ yPt: minYDown,
467
+ widthPt: maxX - minX,
468
+ heightPt: maxYDown - minYDown
469
+ };
470
+ }
471
+ function localizePathPoint(frame, point, pageHeightPt) {
472
+ return {
473
+ xPt: point.xPt - frame.xPt,
474
+ yPt: pageHeightPt - frame.yPt - point.yPt
475
+ };
476
+ }
477
+ function layoutPathToVector(item, pageHeightPt) {
478
+ const frame = pathBoundingFrame(collectPathPoints(item.subpaths), pageHeightPt);
479
+ return {
480
+ kind: "path",
481
+ frame,
482
+ subpaths: item.subpaths.map((subpath) => ({
483
+ start: localizePathPoint(frame, {
484
+ xPt: subpath.startXPt,
485
+ yPt: subpath.startYPt
486
+ }, pageHeightPt),
487
+ closed: subpath.closed,
488
+ segments: subpath.segments.map((segment) => {
489
+ if (segment.kind === "line") return {
490
+ kind: "line",
491
+ to: localizePathPoint(frame, {
492
+ xPt: segment.xPt,
493
+ yPt: segment.yPt
494
+ }, pageHeightPt)
495
+ };
496
+ return {
497
+ kind: "cubic",
498
+ control1: localizePathPoint(frame, {
499
+ xPt: segment.c1xPt,
500
+ yPt: segment.c1yPt
501
+ }, pageHeightPt),
502
+ control2: localizePathPoint(frame, {
503
+ xPt: segment.c2xPt,
504
+ yPt: segment.c2yPt
505
+ }, pageHeightPt),
506
+ to: localizePathPoint(frame, {
507
+ xPt: segment.xPt,
508
+ yPt: segment.yPt
509
+ }, pageHeightPt)
510
+ };
511
+ })
512
+ })),
513
+ fill: item.fill,
514
+ fillRule: item.fillRule,
515
+ stroke: item.stroke,
516
+ sourcePath: item.sourcePath
517
+ };
518
+ }
519
+ function layoutTextToShape(item, pageHeightPt) {
520
+ return {
521
+ frame: computeBlockFrame({ lines: [{
522
+ items: [item],
523
+ baselineY: item.yPt
524
+ }] }, pageHeightPt),
525
+ rotationDeg: item.rotationDeg !== void 0 ? -item.rotationDeg : void 0,
526
+ insetLeftPt: 0,
527
+ insetTopPt: 0,
528
+ insetRightPt: 0,
529
+ insetBottomPt: 0,
530
+ blocks: [{
531
+ kind: "paragraph",
532
+ runs: [textItemToContentRun(item)]
533
+ }]
534
+ };
535
+ }
536
+ function extractLineCandidates(items) {
537
+ const segments = [];
538
+ for (const item of items) {
539
+ if (item.kind === "line") {
540
+ segments.push({
541
+ x1Pt: item.x1Pt,
542
+ y1Pt: item.y1Pt,
543
+ x2Pt: item.x2Pt,
544
+ y2Pt: item.y2Pt
545
+ });
546
+ continue;
547
+ }
548
+ if (item.kind === "path" && item.stroke !== void 0 && item.subpaths.length === 1) {
549
+ const subpath = item.subpaths[0];
550
+ if (subpath.segments.length === 1 && subpath.segments[0].kind === "line") {
551
+ const segment = subpath.segments[0];
552
+ segments.push({
553
+ x1Pt: subpath.startXPt,
554
+ y1Pt: subpath.startYPt,
555
+ x2Pt: segment.xPt,
556
+ y2Pt: segment.yPt
557
+ });
558
+ }
559
+ }
560
+ }
561
+ return segments;
562
+ }
563
+ const AXIS_ALIGNMENT_TOLERANCE_PT = .5;
564
+ const MIN_GRIDLINE_LENGTH_PT = 4;
565
+ function classifyAxisLine(seg) {
566
+ const dx = Math.abs(seg.x2Pt - seg.x1Pt);
567
+ const dy = Math.abs(seg.y2Pt - seg.y1Pt);
568
+ if (dy <= AXIS_ALIGNMENT_TOLERANCE_PT && dx >= MIN_GRIDLINE_LENGTH_PT) return {
569
+ axis: "horizontal",
570
+ position: (seg.y1Pt + seg.y2Pt) / 2,
571
+ spanPt: dx
572
+ };
573
+ if (dx <= AXIS_ALIGNMENT_TOLERANCE_PT && dy >= MIN_GRIDLINE_LENGTH_PT) return {
574
+ axis: "vertical",
575
+ position: (seg.x1Pt + seg.x2Pt) / 2,
576
+ spanPt: dy
577
+ };
578
+ }
579
+ const POSITION_DEDUPE_TOLERANCE_PT = .5;
580
+ function dedupeAxisLines(lines, descending) {
581
+ const sorted = [...lines].sort((a, b) => descending ? b.position - a.position : a.position - b.position);
582
+ const result = [];
583
+ for (const candidate of sorted) {
584
+ const last = result[result.length - 1];
585
+ if (last !== void 0 && Math.abs(candidate.position - last.position) <= POSITION_DEDUPE_TOLERANCE_PT) last.spanPt = Math.max(last.spanPt, candidate.spanPt);
586
+ else result.push({
587
+ position: candidate.position,
588
+ spanPt: candidate.spanPt
589
+ });
590
+ }
591
+ return result;
592
+ }
593
+ const MIN_GRIDLINE_COUNT_PER_AXIS = 3;
594
+ const GRID_SPAN_CONSISTENCY_RATIO = .9;
595
+ function isRegularLattice(lines) {
596
+ if (lines.length < MIN_GRIDLINE_COUNT_PER_AXIS) return false;
597
+ const maxSpanPt = Math.max(...lines.map((l) => l.spanPt));
598
+ return lines.filter((l) => l.spanPt >= maxSpanPt * GRID_SPAN_CONSISTENCY_RATIO).length >= MIN_GRIDLINE_COUNT_PER_AXIS;
599
+ }
600
+ function detectGridLattice(items) {
601
+ const horizontal = [];
602
+ const vertical = [];
603
+ for (const seg of extractLineCandidates(items)) {
604
+ const classified = classifyAxisLine(seg);
605
+ if (classified === void 0) continue;
606
+ (classified.axis === "horizontal" ? horizontal : vertical).push(classified);
607
+ }
608
+ const rowBoundaries = dedupeAxisLines(horizontal, true);
609
+ const columnBoundaries = dedupeAxisLines(vertical, false);
610
+ if (!isRegularLattice(rowBoundaries) || !isRegularLattice(columnBoundaries)) return;
611
+ return {
612
+ rowBoundariesDescPt: rowBoundaries.map((l) => l.position),
613
+ columnBoundariesAscPt: columnBoundaries.map((l) => l.position)
614
+ };
615
+ }
616
+ const OUTER_EDGE_TOLERANCE_PT = 3;
617
+ function findRowIndex(rowBoundariesDescPt, yPt) {
618
+ const lastIndex = rowBoundariesDescPt.length - 1;
619
+ if (yPt > rowBoundariesDescPt[0] + OUTER_EDGE_TOLERANCE_PT || yPt < rowBoundariesDescPt[lastIndex] - OUTER_EDGE_TOLERANCE_PT) return;
620
+ for (let i = 0; i < lastIndex; i++) if (yPt > rowBoundariesDescPt[i + 1]) return i;
621
+ return lastIndex - 1;
622
+ }
623
+ function findColumnIndex(columnBoundariesAscPt, xPt) {
624
+ const lastIndex = columnBoundariesAscPt.length - 1;
625
+ if (xPt < columnBoundariesAscPt[0] - OUTER_EDGE_TOLERANCE_PT || xPt > columnBoundariesAscPt[lastIndex] + OUTER_EDGE_TOLERANCE_PT) return;
626
+ for (let j = 0; j < lastIndex; j++) if (xPt < columnBoundariesAscPt[j + 1]) return j;
627
+ return lastIndex - 1;
628
+ }
629
+ function joinCellText(items) {
630
+ const sorted = [...items].sort((a, b) => a.xPt - b.xPt);
631
+ let text = "";
632
+ sorted.forEach((item, i) => {
633
+ if (i > 0) {
634
+ const prev = sorted[i - 1];
635
+ if (item.xPt - (prev.xPt + (prev.widthPt ?? 0)) > MIN_WORD_GAP_PT) text += " ";
636
+ }
637
+ text += item.text;
638
+ });
639
+ return text;
640
+ }
641
+ function groupKey(row, column) {
642
+ return `${row},${column}`;
643
+ }
644
+ function addToGroup(groups, row, column, item) {
645
+ const key = groupKey(row, column);
646
+ const existing = groups.get(key);
647
+ if (existing === void 0) groups.set(key, [item]);
648
+ else existing.push(item);
649
+ }
650
+ function buildCellsFromGroups(groups) {
651
+ const cells = [];
652
+ for (const [key, items] of groups) {
653
+ const displayText = joinCellText(items);
654
+ if (displayText.length === 0) continue;
655
+ const [rowPart, columnPart] = key.split(",");
656
+ cells.push({
657
+ row: Number(rowPart),
658
+ column: Number(columnPart),
659
+ value: {
660
+ kind: "string",
661
+ value: displayText
662
+ },
663
+ displayText
664
+ });
665
+ }
666
+ cells.sort((a, b) => a.row - b.row || a.column - b.column);
667
+ return cells;
668
+ }
669
+ function buildGridFromLattice(textItems, lattice) {
670
+ const groups = /* @__PURE__ */ new Map();
671
+ for (const item of textItems) {
672
+ const row = findRowIndex(lattice.rowBoundariesDescPt, item.yPt);
673
+ const column = findColumnIndex(lattice.columnBoundariesAscPt, item.xPt);
674
+ if (row === void 0 || column === void 0) continue;
675
+ addToGroup(groups, row, column, item);
676
+ }
677
+ const columns = [];
678
+ for (let j = 0; j < lattice.columnBoundariesAscPt.length - 1; j++) columns.push({
679
+ index: j,
680
+ widthPt: lattice.columnBoundariesAscPt[j + 1] - lattice.columnBoundariesAscPt[j]
681
+ });
682
+ const rows = [];
683
+ for (let i = 0; i < lattice.rowBoundariesDescPt.length - 1; i++) rows.push({
684
+ index: i,
685
+ heightPt: lattice.rowBoundariesDescPt[i] - lattice.rowBoundariesDescPt[i + 1]
686
+ });
687
+ return {
688
+ cells: buildCellsFromGroups(groups),
689
+ columns,
690
+ rows,
691
+ gridlines: true
692
+ };
693
+ }
694
+ const COLUMN_ALIGNMENT_TOLERANCE_PT = 3;
695
+ const MIN_COLUMN_RECURRENCE = 2;
696
+ function detectColumnPositions(segmentsByLine) {
697
+ const allXs = segmentsByLine.flatMap((segments) => segments.map((segment) => segment.items[0].xPt));
698
+ if (allXs.length === 0) return [];
699
+ const counts = bucketCounts(allXs, COLUMN_ALIGNMENT_TOLERANCE_PT);
700
+ const recurring = [...counts.entries()].filter(([, count]) => count >= MIN_COLUMN_RECURRENCE).map(([bucket]) => bucket);
701
+ const positions = recurring.length > 0 ? recurring : [...counts.keys()];
702
+ positions.sort((a, b) => a - b);
703
+ return positions;
704
+ }
705
+ function nearestColumnIndex(positions, xPt) {
706
+ let bestIndex = 0;
707
+ let bestDistancePt = Number.POSITIVE_INFINITY;
708
+ positions.forEach((position, index) => {
709
+ const distancePt = Math.abs(position - xPt);
710
+ if (distancePt < bestDistancePt) {
711
+ bestDistancePt = distancePt;
712
+ bestIndex = index;
713
+ }
714
+ });
715
+ return bestIndex;
716
+ }
717
+ const DEFAULT_COLUMN_WIDTH_FALLBACK_PT = 40;
718
+ function lastColumnWidthPt(groups, columnIndex, anchorXPt) {
719
+ let maxWidthPt = 0;
720
+ for (const [key, items] of groups) {
721
+ const [, columnPart] = key.split(",");
722
+ if (Number(columnPart) !== columnIndex) continue;
723
+ for (const item of items) maxWidthPt = Math.max(maxWidthPt, item.xPt + (item.widthPt ?? 0) - anchorXPt);
724
+ }
725
+ return maxWidthPt > 0 ? maxWidthPt : DEFAULT_COLUMN_WIDTH_FALLBACK_PT;
726
+ }
727
+ function buildGridFromTextClustering(textItems) {
728
+ const lines = clusterIntoLines(textItems);
729
+ if (lines.length === 0) return {
730
+ cells: [],
731
+ columns: [],
732
+ rows: [],
733
+ gridlines: false
734
+ };
735
+ const segmentsByLine = lines.map((l) => splitLineByLargeGaps(l));
736
+ const columnPositions = detectColumnPositions(segmentsByLine);
737
+ const groups = /* @__PURE__ */ new Map();
738
+ segmentsByLine.forEach((segments, rowIndex) => {
739
+ for (const segment of segments) {
740
+ const key = groupKey(rowIndex, nearestColumnIndex(columnPositions, segment.items[0].xPt));
741
+ const existing = groups.get(key);
742
+ if (existing === void 0) groups.set(key, [...segment.items]);
743
+ else existing.push(...segment.items);
744
+ }
745
+ });
746
+ const nominalRowHeightPt = estimateModalLineSpacing(lines);
747
+ const rows = lines.map((line, i) => {
748
+ const nextBaselineY = lines[i + 1]?.baselineY;
749
+ const heightPt = nextBaselineY !== void 0 ? line.baselineY - nextBaselineY : nominalRowHeightPt;
750
+ return {
751
+ index: i,
752
+ heightPt: heightPt > 0 ? heightPt : nominalRowHeightPt
753
+ };
754
+ });
755
+ const columns = columnPositions.map((position, j) => {
756
+ const nextPosition = columnPositions[j + 1];
757
+ return {
758
+ index: j,
759
+ widthPt: nextPosition !== void 0 ? nextPosition - position : lastColumnWidthPt(groups, j, position)
760
+ };
761
+ });
762
+ return {
763
+ cells: buildCellsFromGroups(groups),
764
+ columns,
765
+ rows,
766
+ gridlines: false
767
+ };
768
+ }
769
+ function reconstructSheet(page, pageIndex) {
770
+ const textItems = page.items.filter((i) => i.kind === "text");
771
+ const lattice = detectGridLattice(page.items);
772
+ const grid = lattice !== void 0 ? buildGridFromLattice(textItems, lattice) : buildGridFromTextClustering(textItems);
773
+ const printSettings = {
774
+ pageSize: {
775
+ widthPt: page.widthPt,
776
+ heightPt: page.heightPt
777
+ },
778
+ margins: ZERO_MARGINS,
779
+ gridlines: grid.gridlines,
780
+ headers: false,
781
+ pageOrder: "downThenOver"
782
+ };
783
+ return {
784
+ name: `Sheet${pageIndex + 1}`,
785
+ cells: grid.cells,
786
+ columns: grid.columns,
787
+ rows: grid.rows,
788
+ images: [],
789
+ printSettings
790
+ };
791
+ }
792
+ function reconstructSpreadsheet(doc, options) {
793
+ const signal = options?.signal;
794
+ const sheets = doc.pages.map((page, index) => {
795
+ require_ports_abort.throwIfAborted(signal);
796
+ return reconstructSheet(page, index);
797
+ });
798
+ return {
799
+ kind: "spreadsheet",
800
+ formatVersion: 1,
801
+ metadata: doc.metadata,
802
+ sheets
803
+ };
804
+ }
805
+ //#endregion
806
+ exports.reconstructDrawing = reconstructDrawing;
807
+ exports.reconstructPresentation = reconstructPresentation;
808
+ exports.reconstructSpreadsheet = reconstructSpreadsheet;
809
+ exports.reconstructWordprocessing = reconstructWordprocessing;