@stll/folio-core 0.0.1-placeholder.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (683) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE.md +29 -0
  3. package/README.md +41 -0
  4. package/dist/_virtual/_rolldown/runtime.js +13 -0
  5. package/dist/ai-edits/apply.d.ts +35 -0
  6. package/dist/ai-edits/apply.js +683 -0
  7. package/dist/ai-edits/clean-text.d.ts +28 -0
  8. package/dist/ai-edits/clean-text.js +23 -0
  9. package/dist/ai-edits/headless.d.ts +225 -0
  10. package/dist/ai-edits/headless.js +513 -0
  11. package/dist/ai-edits/index.d.ts +6 -0
  12. package/dist/ai-edits/index.js +5 -0
  13. package/dist/ai-edits/inline-emphasis.d.ts +38 -0
  14. package/dist/ai-edits/inline-emphasis.js +78 -0
  15. package/dist/ai-edits/snapshot.d.ts +9 -0
  16. package/dist/ai-edits/snapshot.js +195 -0
  17. package/dist/ai-edits/types.d.ts +156 -0
  18. package/dist/ai-edits/types.js +0 -0
  19. package/dist/ai-edits/word-diff.d.ts +20 -0
  20. package/dist/ai-edits/word-diff.js +77 -0
  21. package/dist/ai-suggestions/apply.d.ts +17 -0
  22. package/dist/ai-suggestions/apply.js +64 -0
  23. package/dist/ai-suggestions/conflict.d.ts +22 -0
  24. package/dist/ai-suggestions/conflict.js +67 -0
  25. package/dist/ai-suggestions/text-positions.d.ts +21 -0
  26. package/dist/ai-suggestions/text-positions.js +48 -0
  27. package/dist/ai-suggestions/types.d.ts +199 -0
  28. package/dist/ai-suggestions/types.js +59 -0
  29. package/dist/content-controls/errors.d.ts +52 -0
  30. package/dist/content-controls/errors.js +36 -0
  31. package/dist/content-controls/findContentControls.d.ts +55 -0
  32. package/dist/content-controls/findContentControls.js +75 -0
  33. package/dist/content-controls/index.d.ts +4 -0
  34. package/dist/content-controls/index.js +4 -0
  35. package/dist/content-controls/mutateContentControls.d.ts +51 -0
  36. package/dist/content-controls/mutateContentControls.js +377 -0
  37. package/dist/controller/folioEditor.d.ts +21 -0
  38. package/dist/controller/folioEditor.js +29 -0
  39. package/dist/controller/folioEditorEvents.d.ts +23 -0
  40. package/dist/controller/folioEditorEvents.js +24 -0
  41. package/dist/controller/hiddenEditorApi.d.ts +35 -0
  42. package/dist/controller/hiddenEditorApi.js +112 -0
  43. package/dist/controller/hiddenEditorManager.d.ts +93 -0
  44. package/dist/controller/hiddenEditorManager.js +308 -0
  45. package/dist/controller/layoutPipeline.d.ts +63 -0
  46. package/dist/controller/layoutPipeline.js +406 -0
  47. package/dist/controller/layoutScheduler.d.ts +41 -0
  48. package/dist/controller/layoutScheduler.js +59 -0
  49. package/dist/controller/layoutSession.d.ts +24 -0
  50. package/dist/controller/layoutSession.js +13 -0
  51. package/dist/docx/blockContentParser.d.ts +13 -0
  52. package/dist/docx/blockContentParser.js +289 -0
  53. package/dist/docx/bookmarkParser.d.ts +178 -0
  54. package/dist/docx/bookmarkParser.js +246 -0
  55. package/dist/docx/bookmarkPlacement.d.ts +10 -0
  56. package/dist/docx/bookmarkPlacement.js +50 -0
  57. package/dist/docx/bulletMarkers.d.ts +4 -0
  58. package/dist/docx/bulletMarkers.js +42 -0
  59. package/dist/docx/commentParser.d.ts +34 -0
  60. package/dist/docx/commentParser.js +127 -0
  61. package/dist/docx/commentReferenceNormalization.d.ts +25 -0
  62. package/dist/docx/commentReferenceNormalization.js +97 -0
  63. package/dist/docx/commentReplyMarkers.d.ts +20 -0
  64. package/dist/docx/commentReplyMarkers.js +123 -0
  65. package/dist/docx/compatibility.d.ts +12 -0
  66. package/dist/docx/compatibility.js +77 -0
  67. package/dist/docx/documentParser.d.ts +65 -0
  68. package/dist/docx/documentParser.js +209 -0
  69. package/dist/docx/drawingUtils.d.ts +56 -0
  70. package/dist/docx/drawingUtils.js +305 -0
  71. package/dist/docx/fieldParser.d.ts +228 -0
  72. package/dist/docx/fieldParser.js +559 -0
  73. package/dist/docx/footnoteParser.d.ts +109 -0
  74. package/dist/docx/footnoteParser.js +270 -0
  75. package/dist/docx/headerFooterParser.d.ts +119 -0
  76. package/dist/docx/headerFooterParser.js +266 -0
  77. package/dist/docx/headerFooterRefParser.d.ts +22 -0
  78. package/dist/docx/headerFooterRefParser.js +52 -0
  79. package/dist/docx/headerFooterReferenceNormalization.d.ts +19 -0
  80. package/dist/docx/headerFooterReferenceNormalization.js +64 -0
  81. package/dist/docx/hyperlinkParser.d.ts +108 -0
  82. package/dist/docx/hyperlinkParser.js +230 -0
  83. package/dist/docx/imageParser.d.ts +93 -0
  84. package/dist/docx/imageParser.js +522 -0
  85. package/dist/docx/mathToMathml.d.ts +15 -0
  86. package/dist/docx/mathToMathml.js +357 -0
  87. package/dist/docx/modelValidation.d.ts +13 -0
  88. package/dist/docx/modelValidation.js +21 -0
  89. package/dist/docx/normalizeBaseDirection.d.ts +12 -0
  90. package/dist/docx/normalizeBaseDirection.js +81 -0
  91. package/dist/docx/notePropertiesParser.d.ts +16 -0
  92. package/dist/docx/notePropertiesParser.js +99 -0
  93. package/dist/docx/numberingParser.d.ts +86 -0
  94. package/dist/docx/numberingParser.js +735 -0
  95. package/dist/docx/numberingReferenceNormalization.d.ts +25 -0
  96. package/dist/docx/numberingReferenceNormalization.js +22 -0
  97. package/dist/docx/paragraphParser.d.ts +86 -0
  98. package/dist/docx/paragraphParser.js +1132 -0
  99. package/dist/docx/paragraphTraversal.d.ts +19 -0
  100. package/dist/docx/paragraphTraversal.js +76 -0
  101. package/dist/docx/parser.d.ts +67 -0
  102. package/dist/docx/parser.js +391 -0
  103. package/dist/docx/parserEnums.d.ts +45 -0
  104. package/dist/docx/parserEnums.js +70 -0
  105. package/dist/docx/relsParser.d.ts +160 -0
  106. package/dist/docx/relsParser.js +235 -0
  107. package/dist/docx/replyToComment.d.ts +29 -0
  108. package/dist/docx/replyToComment.js +73 -0
  109. package/dist/docx/rezip.d.ts +166 -0
  110. package/dist/docx/rezip.js +1194 -0
  111. package/dist/docx/runConsolidator.d.ts +57 -0
  112. package/dist/docx/runConsolidator.js +224 -0
  113. package/dist/docx/runParser.d.ts +78 -0
  114. package/dist/docx/runParser.js +661 -0
  115. package/dist/docx/sdtProperties.d.ts +15 -0
  116. package/dist/docx/sdtProperties.js +290 -0
  117. package/dist/docx/sdtPropertiesPatch.d.ts +16 -0
  118. package/dist/docx/sdtPropertiesPatch.js +144 -0
  119. package/dist/docx/sectionParser.d.ts +95 -0
  120. package/dist/docx/sectionParser.js +534 -0
  121. package/dist/docx/selectiveSave.d.ts +25 -0
  122. package/dist/docx/selectiveSave.js +247 -0
  123. package/dist/docx/selectiveSaveFlags.d.ts +33 -0
  124. package/dist/docx/selectiveSaveFlags.js +11 -0
  125. package/dist/docx/selectiveSaveTripwire.d.ts +33 -0
  126. package/dist/docx/selectiveSaveTripwire.js +79 -0
  127. package/dist/docx/selectiveXmlPatch.d.ts +103 -0
  128. package/dist/docx/selectiveXmlPatch.js +493 -0
  129. package/dist/docx/serializer/blockSdtSerializer.d.ts +6 -0
  130. package/dist/docx/serializer/blockSdtSerializer.js +88 -0
  131. package/dist/docx/serializer/borderSerializer.d.ts +25 -0
  132. package/dist/docx/serializer/borderSerializer.js +44 -0
  133. package/dist/docx/serializer/commentSerializer.d.ts +31 -0
  134. package/dist/docx/serializer/commentSerializer.js +184 -0
  135. package/dist/docx/serializer/documentSerializer.d.ts +65 -0
  136. package/dist/docx/serializer/documentSerializer.js +199 -0
  137. package/dist/docx/serializer/headerFooterSerializer.d.ts +12 -0
  138. package/dist/docx/serializer/headerFooterSerializer.js +84 -0
  139. package/dist/docx/serializer/noteSerializer.d.ts +19 -0
  140. package/dist/docx/serializer/noteSerializer.js +70 -0
  141. package/dist/docx/serializer/numberingSerializer.d.ts +12 -0
  142. package/dist/docx/serializer/numberingSerializer.js +93 -0
  143. package/dist/docx/serializer/paragraphSerializer.d.ts +48 -0
  144. package/dist/docx/serializer/paragraphSerializer.js +559 -0
  145. package/dist/docx/serializer/runSerializer.d.ts +56 -0
  146. package/dist/docx/serializer/runSerializer.js +621 -0
  147. package/dist/docx/serializer/sectionPropertiesSerializer.d.ts +6 -0
  148. package/dist/docx/serializer/sectionPropertiesSerializer.js +187 -0
  149. package/dist/docx/serializer/tableSerializer.d.ts +79 -0
  150. package/dist/docx/serializer/tableSerializer.js +422 -0
  151. package/dist/docx/serializer/xmlUtils.d.ts +20 -0
  152. package/dist/docx/serializer/xmlUtils.js +25 -0
  153. package/dist/docx/settingsParser.d.ts +8 -0
  154. package/dist/docx/settingsParser.js +36 -0
  155. package/dist/docx/shapeParser.d.ts +20 -0
  156. package/dist/docx/shapeParser.js +272 -0
  157. package/dist/docx/styleParser.d.ts +50 -0
  158. package/dist/docx/styleParser.js +905 -0
  159. package/dist/docx/tableParser.d.ts +202 -0
  160. package/dist/docx/tableParser.js +811 -0
  161. package/dist/docx/textBoxParser.d.ts +117 -0
  162. package/dist/docx/textBoxParser.js +262 -0
  163. package/dist/docx/themeParser.d.ts +77 -0
  164. package/dist/docx/themeParser.js +330 -0
  165. package/dist/docx/trackedMoveRangeNormalization.d.ts +22 -0
  166. package/dist/docx/trackedMoveRangeNormalization.js +100 -0
  167. package/dist/docx/unzip.d.ts +118 -0
  168. package/dist/docx/unzip.js +383 -0
  169. package/dist/docx/vmlImageParser.d.ts +16 -0
  170. package/dist/docx/vmlImageParser.js +100 -0
  171. package/dist/docx/watermarkParser.d.ts +45 -0
  172. package/dist/docx/watermarkParser.js +348 -0
  173. package/dist/docx/wrapTypes.d.ts +29 -0
  174. package/dist/docx/wrapTypes.js +48 -0
  175. package/dist/docx/xmlParser.d.ts +297 -0
  176. package/dist/docx/xmlParser.js +527 -0
  177. package/dist/fields/bookmarkPages.d.ts +13 -0
  178. package/dist/fields/bookmarkPages.js +66 -0
  179. package/dist/fields/bookmarkText.d.ts +16 -0
  180. package/dist/fields/bookmarkText.js +61 -0
  181. package/dist/fields/evaluateField.d.ts +23 -0
  182. package/dist/fields/evaluateField.js +77 -0
  183. package/dist/fields/fieldContext.d.ts +21 -0
  184. package/dist/fields/fieldContext.js +0 -0
  185. package/dist/fields/resolveFieldValues.d.ts +44 -0
  186. package/dist/fields/resolveFieldValues.js +204 -0
  187. package/dist/fields/sectionPageCounts.d.ts +11 -0
  188. package/dist/fields/sectionPageCounts.js +16 -0
  189. package/dist/fields/seqValues.d.ts +14 -0
  190. package/dist/fields/seqValues.js +36 -0
  191. package/dist/fonts/embeddedFontTable.d.ts +42 -0
  192. package/dist/fonts/embeddedFontTable.js +80 -0
  193. package/dist/fonts/embeddedFonts.d.ts +46 -0
  194. package/dist/fonts/embeddedFonts.js +112 -0
  195. package/dist/fonts/fontDeobfuscation.d.ts +30 -0
  196. package/dist/fonts/fontDeobfuscation.js +57 -0
  197. package/dist/index.d.ts +28 -0
  198. package/dist/index.js +23 -0
  199. package/dist/layout-bridge/convert/footnoteLayout.d.ts +57 -0
  200. package/dist/layout-bridge/convert/footnoteLayout.js +316 -0
  201. package/dist/layout-bridge/convert/headerFooterLayout.d.ts +74 -0
  202. package/dist/layout-bridge/convert/headerFooterLayout.js +432 -0
  203. package/dist/layout-bridge/convert/templatePreviewFlow.d.ts +36 -0
  204. package/dist/layout-bridge/convert/templatePreviewFlow.js +176 -0
  205. package/dist/layout-bridge/convert/toFlowBlocks.d.ts +65 -0
  206. package/dist/layout-bridge/convert/toFlowBlocks.js +1309 -0
  207. package/dist/layout-bridge/convert/wrapEditorViewAsSurface.d.ts +17 -0
  208. package/dist/layout-bridge/convert/wrapEditorViewAsSurface.js +36 -0
  209. package/dist/layout-bridge/dom/clickToPositionDom.d.ts +66 -0
  210. package/dist/layout-bridge/dom/clickToPositionDom.js +304 -0
  211. package/dist/layout-bridge/dom/findBodyPmSpans.d.ts +7 -0
  212. package/dist/layout-bridge/dom/findBodyPmSpans.js +17 -0
  213. package/dist/layout-bridge/dom/findHfPmSpans.d.ts +62 -0
  214. package/dist/layout-bridge/dom/findHfPmSpans.js +197 -0
  215. package/dist/layout-bridge/engine/clickToPosition.d.ts +66 -0
  216. package/dist/layout-bridge/engine/clickToPosition.js +403 -0
  217. package/dist/layout-bridge/engine/hitTest.d.ts +135 -0
  218. package/dist/layout-bridge/engine/hitTest.js +375 -0
  219. package/dist/layout-bridge/engine/measuring/index.d.ts +10 -0
  220. package/dist/layout-bridge/engine/measuring/index.js +9 -0
  221. package/dist/layout-bridge/engine/selectionRects.d.ts +59 -0
  222. package/dist/layout-bridge/engine/selectionRects.js +485 -0
  223. package/dist/layout-bridge/engine/tableWidthUtils.d.ts +7 -0
  224. package/dist/layout-bridge/engine/tableWidthUtils.js +25 -0
  225. package/dist/layout-engine/index.d.ts +44 -0
  226. package/dist/layout-engine/index.js +691 -0
  227. package/dist/layout-engine/keep-together.d.ts +43 -0
  228. package/dist/layout-engine/keep-together.js +98 -0
  229. package/dist/layout-engine/layoutInstrumentation.d.ts +50 -0
  230. package/dist/layout-engine/layoutInstrumentation.js +43 -0
  231. package/dist/layout-engine/lineFlow.d.ts +8 -0
  232. package/dist/layout-engine/lineFlow.js +17 -0
  233. package/dist/layout-engine/measure/cache.d.ts +93 -0
  234. package/dist/layout-engine/measure/cache.js +245 -0
  235. package/dist/layout-engine/measure/clampFloatingWrapMargins.d.ts +20 -0
  236. package/dist/layout-engine/measure/clampFloatingWrapMargins.js +29 -0
  237. package/dist/layout-engine/measure/featureFlags.d.ts +44 -0
  238. package/dist/layout-engine/measure/featureFlags.js +19 -0
  239. package/dist/layout-engine/measure/floatingZones.d.ts +89 -0
  240. package/dist/layout-engine/measure/floatingZones.js +152 -0
  241. package/dist/layout-engine/measure/font-metrics.worker.d.ts +17 -0
  242. package/dist/layout-engine/measure/font-metrics.worker.js +104 -0
  243. package/dist/layout-engine/measure/index.d.ts +9 -0
  244. package/dist/layout-engine/measure/index.js +8 -0
  245. package/dist/layout-engine/measure/listMarkerWidth.d.ts +40 -0
  246. package/dist/layout-engine/measure/listMarkerWidth.js +76 -0
  247. package/dist/layout-engine/measure/measureBlocks.d.ts +25 -0
  248. package/dist/layout-engine/measure/measureBlocks.js +450 -0
  249. package/dist/layout-engine/measure/measureContainer.d.ts +24 -0
  250. package/dist/layout-engine/measure/measureContainer.js +280 -0
  251. package/dist/layout-engine/measure/measureHelpers.d.ts +82 -0
  252. package/dist/layout-engine/measure/measureHelpers.js +156 -0
  253. package/dist/layout-engine/measure/measureParagraph.d.ts +61 -0
  254. package/dist/layout-engine/measure/measureParagraph.js +724 -0
  255. package/dist/layout-engine/measure/measureProvider.d.ts +23 -0
  256. package/dist/layout-engine/measure/measureProvider.js +35 -0
  257. package/dist/layout-engine/measure/measureTypes.d.ts +61 -0
  258. package/dist/layout-engine/measure/measureTypes.js +0 -0
  259. package/dist/layout-engine/measure/measureWorker.d.ts +54 -0
  260. package/dist/layout-engine/measure/measureWorker.js +249 -0
  261. package/dist/layout-engine/measure/measureWorkerProtocol.d.ts +88 -0
  262. package/dist/layout-engine/measure/measureWorkerProtocol.js +20 -0
  263. package/dist/layout-engine/measure/tableCellFloating.d.ts +26 -0
  264. package/dist/layout-engine/measure/tableCellFloating.js +99 -0
  265. package/dist/layout-engine/paginator.d.ts +84 -0
  266. package/dist/layout-engine/paginator.js +348 -0
  267. package/dist/layout-engine/paragraphFragmentRange.d.ts +9 -0
  268. package/dist/layout-engine/paragraphFragmentRange.js +40 -0
  269. package/dist/layout-engine/section-breaks.d.ts +78 -0
  270. package/dist/layout-engine/section-breaks.js +182 -0
  271. package/dist/layout-engine/tableRowBreak.d.ts +23 -0
  272. package/dist/layout-engine/tableRowBreak.js +147 -0
  273. package/dist/layout-engine/textBoxFlow.d.ts +50 -0
  274. package/dist/layout-engine/textBoxFlow.js +160 -0
  275. package/dist/layout-engine/types.d.ts +1031 -0
  276. package/dist/layout-engine/types.js +100 -0
  277. package/dist/layout-painter/documentColors.d.ts +4 -0
  278. package/dist/layout-painter/documentColors.js +40 -0
  279. package/dist/layout-painter/index.d.ts +110 -0
  280. package/dist/layout-painter/index.js +182 -0
  281. package/dist/layout-painter/registry/modules/image.d.ts +6 -0
  282. package/dist/layout-painter/registry/modules/image.js +17 -0
  283. package/dist/layout-painter/registry/modules/paragraph.d.ts +6 -0
  284. package/dist/layout-painter/registry/modules/paragraph.js +18 -0
  285. package/dist/layout-painter/registry/modules/table.d.ts +6 -0
  286. package/dist/layout-painter/registry/modules/table.js +16 -0
  287. package/dist/layout-painter/registry/modules/textBox.d.ts +6 -0
  288. package/dist/layout-painter/registry/modules/textBox.js +13 -0
  289. package/dist/layout-painter/registry/modules.d.ts +6 -0
  290. package/dist/layout-painter/registry/modules.js +26 -0
  291. package/dist/layout-painter/registry/registry.d.ts +24 -0
  292. package/dist/layout-painter/registry/registry.js +53 -0
  293. package/dist/layout-painter/registry/types.d.ts +61 -0
  294. package/dist/layout-painter/registry/types.js +0 -0
  295. package/dist/layout-painter/renderFragment.d.ts +32 -0
  296. package/dist/layout-painter/renderFragment.js +114 -0
  297. package/dist/layout-painter/renderImage.d.ts +88 -0
  298. package/dist/layout-painter/renderImage.js +130 -0
  299. package/dist/layout-painter/renderPage.d.ts +264 -0
  300. package/dist/layout-painter/renderPage.js +1795 -0
  301. package/dist/layout-painter/renderParagraph.d.ts +93 -0
  302. package/dist/layout-painter/renderParagraph.js +1300 -0
  303. package/dist/layout-painter/renderTable.d.ts +36 -0
  304. package/dist/layout-painter/renderTable.js +432 -0
  305. package/dist/layout-painter/renderTextBox.d.ts +22 -0
  306. package/dist/layout-painter/renderTextBox.js +67 -0
  307. package/dist/layout-painter/renderUtils.d.ts +42 -0
  308. package/dist/layout-painter/renderUtils.js +30 -0
  309. package/dist/layout-painter/renderWatermark.d.ts +16 -0
  310. package/dist/layout-painter/renderWatermark.js +61 -0
  311. package/dist/layout-painter/sdtBoundary.d.ts +6 -0
  312. package/dist/layout-painter/sdtBoundary.js +28 -0
  313. package/dist/managers/ContextMenuManager.d.ts +28 -0
  314. package/dist/managers/ContextMenuManager.js +48 -0
  315. package/dist/managers/DocumentLoaderManager.d.ts +47 -0
  316. package/dist/managers/DocumentLoaderManager.js +69 -0
  317. package/dist/managers/EditorModeManager.d.ts +28 -0
  318. package/dist/managers/EditorModeManager.js +50 -0
  319. package/dist/managers/ErrorManager.d.ts +26 -0
  320. package/dist/managers/ErrorManager.js +85 -0
  321. package/dist/managers/FindReplaceManager.d.ts +54 -0
  322. package/dist/managers/FindReplaceManager.js +104 -0
  323. package/dist/managers/HistoryManager.d.ts +92 -0
  324. package/dist/managers/HistoryManager.js +193 -0
  325. package/dist/managers/Subscribable.d.ts +34 -0
  326. package/dist/managers/Subscribable.js +46 -0
  327. package/dist/managers/TableSelectionManager.d.ts +74 -0
  328. package/dist/managers/TableSelectionManager.js +225 -0
  329. package/dist/managers/editorShortcuts.d.ts +42 -0
  330. package/dist/managers/editorShortcuts.js +60 -0
  331. package/dist/managers/types.d.ts +41 -0
  332. package/dist/managers/types.js +0 -0
  333. package/dist/markdown/annotations.d.ts +14 -0
  334. package/dist/markdown/annotations.js +42 -0
  335. package/dist/markdown/escape.d.ts +36 -0
  336. package/dist/markdown/escape.js +59 -0
  337. package/dist/markdown/fromMarkdown.d.ts +11 -0
  338. package/dist/markdown/fromMarkdown.js +223 -0
  339. package/dist/markdown/headings.d.ts +13 -0
  340. package/dist/markdown/headings.js +20 -0
  341. package/dist/markdown/images.d.ts +13 -0
  342. package/dist/markdown/images.js +63 -0
  343. package/dist/markdown/index.d.ts +18 -0
  344. package/dist/markdown/index.js +33 -0
  345. package/dist/markdown/internals.d.ts +15 -0
  346. package/dist/markdown/internals.js +35 -0
  347. package/dist/markdown/renderBlock.d.ts +7 -0
  348. package/dist/markdown/renderBlock.js +68 -0
  349. package/dist/markdown/renderParagraph.d.ts +11 -0
  350. package/dist/markdown/renderParagraph.js +64 -0
  351. package/dist/markdown/renderRuns.d.ts +11 -0
  352. package/dist/markdown/renderRuns.js +265 -0
  353. package/dist/markdown/renderTable.d.ts +8 -0
  354. package/dist/markdown/renderTable.js +229 -0
  355. package/dist/markdown/trailers.d.ts +13 -0
  356. package/dist/markdown/trailers.js +54 -0
  357. package/dist/markdown/types.d.ts +118 -0
  358. package/dist/markdown/types.js +0 -0
  359. package/dist/model.d.ts +13 -0
  360. package/dist/model.js +4 -0
  361. package/dist/paged-layout/LayoutSelectionGate.d.ts +80 -0
  362. package/dist/paged-layout/LayoutSelectionGate.js +131 -0
  363. package/dist/paged-layout/headerFooterMargins.d.ts +73 -0
  364. package/dist/paged-layout/headerFooterMargins.js +120 -0
  365. package/dist/paged-layout/hiddenEditorScroll.d.ts +4 -0
  366. package/dist/paged-layout/hiddenEditorScroll.js +4 -0
  367. package/dist/paged-layout/incrementalMeasure.d.ts +33 -0
  368. package/dist/paged-layout/incrementalMeasure.js +56 -0
  369. package/dist/paged-layout/rangeProjection.d.ts +51 -0
  370. package/dist/paged-layout/rangeProjection.js +153 -0
  371. package/dist/paged-layout/readOnlyEditAttempt.d.ts +5 -0
  372. package/dist/paged-layout/readOnlyEditAttempt.js +22 -0
  373. package/dist/paged-layout/scrollNavigation.d.ts +23 -0
  374. package/dist/paged-layout/scrollNavigation.js +31 -0
  375. package/dist/paged-layout/scrollPageInfo.d.ts +41 -0
  376. package/dist/paged-layout/scrollPageInfo.js +34 -0
  377. package/dist/paged-layout/scrollToPmPosition.d.ts +17 -0
  378. package/dist/paged-layout/scrollToPmPosition.js +95 -0
  379. package/dist/paged-layout/sectionBlockWidths.d.ts +35 -0
  380. package/dist/paged-layout/sectionBlockWidths.js +52 -0
  381. package/dist/paged-layout/sectionGeometry.d.ts +21 -0
  382. package/dist/paged-layout/sectionGeometry.js +36 -0
  383. package/dist/paged-layout/selectionViewportRect.d.ts +29 -0
  384. package/dist/paged-layout/selectionViewportRect.js +55 -0
  385. package/dist/paged-layout/tableColumnResize.d.ts +19 -0
  386. package/dist/paged-layout/tableColumnResize.js +28 -0
  387. package/dist/paged-layout/tableInsertButtonGeometry.d.ts +15 -0
  388. package/dist/paged-layout/tableInsertButtonGeometry.js +15 -0
  389. package/dist/paged-layout/transactionDirtyRange.d.ts +7 -0
  390. package/dist/paged-layout/transactionDirtyRange.js +27 -0
  391. package/dist/paged-layout/zoomScrollAnchor.d.ts +40 -0
  392. package/dist/paged-layout/zoomScrollAnchor.js +25 -0
  393. package/dist/prosemirror/attrs/index.d.ts +80 -0
  394. package/dist/prosemirror/attrs/index.js +1218 -0
  395. package/dist/prosemirror/autospacingBase.d.ts +11 -0
  396. package/dist/prosemirror/autospacingBase.js +16 -0
  397. package/dist/prosemirror/commands/comments.d.ts +93 -0
  398. package/dist/prosemirror/commands/comments.js +435 -0
  399. package/dist/prosemirror/commands/contentControls.d.ts +45 -0
  400. package/dist/prosemirror/commands/contentControls.js +294 -0
  401. package/dist/prosemirror/commands/contentControlsBlockFill.d.ts +15 -0
  402. package/dist/prosemirror/commands/contentControlsBlockFill.js +19 -0
  403. package/dist/prosemirror/commands/formatPainter.d.ts +31 -0
  404. package/dist/prosemirror/commands/formatPainter.js +130 -0
  405. package/dist/prosemirror/commands/formatting.d.ts +32 -0
  406. package/dist/prosemirror/commands/formatting.js +45 -0
  407. package/dist/prosemirror/commands/hyperlink.d.ts +31 -0
  408. package/dist/prosemirror/commands/hyperlink.js +79 -0
  409. package/dist/prosemirror/commands/image.d.ts +59 -0
  410. package/dist/prosemirror/commands/image.js +219 -0
  411. package/dist/prosemirror/commands/index.d.ts +13 -0
  412. package/dist/prosemirror/commands/index.js +13 -0
  413. package/dist/prosemirror/commands/pageBreak.d.ts +10 -0
  414. package/dist/prosemirror/commands/pageBreak.js +47 -0
  415. package/dist/prosemirror/commands/paragraph.d.ts +39 -0
  416. package/dist/prosemirror/commands/paragraph.js +64 -0
  417. package/dist/prosemirror/commands/pastePlainText.d.ts +39 -0
  418. package/dist/prosemirror/commands/pastePlainText.js +67 -0
  419. package/dist/prosemirror/commands/table.d.ts +83 -0
  420. package/dist/prosemirror/commands/table.js +105 -0
  421. package/dist/prosemirror/conversion/fromProseDoc.d.ts +27 -0
  422. package/dist/prosemirror/conversion/fromProseDoc.js +1550 -0
  423. package/dist/prosemirror/conversion/index.d.ts +4 -0
  424. package/dist/prosemirror/conversion/index.js +4 -0
  425. package/dist/prosemirror/conversion/runShadingMark.d.ts +16 -0
  426. package/dist/prosemirror/conversion/runShadingMark.js +39 -0
  427. package/dist/prosemirror/conversion/toProseDoc.d.ts +39 -0
  428. package/dist/prosemirror/conversion/toProseDoc.js +1404 -0
  429. package/dist/prosemirror/extensions/ExtensionManager.d.ts +43 -0
  430. package/dist/prosemirror/extensions/ExtensionManager.js +86 -0
  431. package/dist/prosemirror/extensions/StarterKit.d.ts +16 -0
  432. package/dist/prosemirror/extensions/StarterKit.js +132 -0
  433. package/dist/prosemirror/extensions/core/DocExtension.d.ts +9 -0
  434. package/dist/prosemirror/extensions/core/DocExtension.js +12 -0
  435. package/dist/prosemirror/extensions/core/HistoryExtension.d.ts +13 -0
  436. package/dist/prosemirror/extensions/core/HistoryExtension.js +28 -0
  437. package/dist/prosemirror/extensions/core/ParagraphExtension.d.ts +25 -0
  438. package/dist/prosemirror/extensions/core/ParagraphExtension.js +619 -0
  439. package/dist/prosemirror/extensions/core/TextExtension.d.ts +9 -0
  440. package/dist/prosemirror/extensions/core/TextExtension.js +12 -0
  441. package/dist/prosemirror/extensions/create.d.ts +17 -0
  442. package/dist/prosemirror/extensions/create.js +129 -0
  443. package/dist/prosemirror/extensions/features/AutoBidiDetectionExtension.d.ts +23 -0
  444. package/dist/prosemirror/extensions/features/AutoBidiDetectionExtension.js +106 -0
  445. package/dist/prosemirror/extensions/features/BaseKeymapExtension.d.ts +8 -0
  446. package/dist/prosemirror/extensions/features/BaseKeymapExtension.js +172 -0
  447. package/dist/prosemirror/extensions/features/BidiShortcutExtension.d.ts +16 -0
  448. package/dist/prosemirror/extensions/features/BidiShortcutExtension.js +38 -0
  449. package/dist/prosemirror/extensions/features/ContentControlWidgetsExtension.d.ts +16 -0
  450. package/dist/prosemirror/extensions/features/ContentControlWidgetsExtension.js +21 -0
  451. package/dist/prosemirror/extensions/features/DropCursorExtension.d.ts +12 -0
  452. package/dist/prosemirror/extensions/features/DropCursorExtension.js +20 -0
  453. package/dist/prosemirror/extensions/features/EmptyParagraphFormatExtension.d.ts +8 -0
  454. package/dist/prosemirror/extensions/features/EmptyParagraphFormatExtension.js +44 -0
  455. package/dist/prosemirror/extensions/features/GapCursorExtension.d.ts +19 -0
  456. package/dist/prosemirror/extensions/features/GapCursorExtension.js +24 -0
  457. package/dist/prosemirror/extensions/features/ImageDragExtension.d.ts +15 -0
  458. package/dist/prosemirror/extensions/features/ImageDragExtension.js +66 -0
  459. package/dist/prosemirror/extensions/features/ImagePasteExtension.d.ts +12 -0
  460. package/dist/prosemirror/extensions/features/ImagePasteExtension.js +91 -0
  461. package/dist/prosemirror/extensions/features/ListExtension.d.ts +14 -0
  462. package/dist/prosemirror/extensions/features/ListExtension.js +340 -0
  463. package/dist/prosemirror/extensions/features/ParaIdAllocatorExtension.d.ts +9 -0
  464. package/dist/prosemirror/extensions/features/ParaIdAllocatorExtension.js +60 -0
  465. package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.d.ts +35 -0
  466. package/dist/prosemirror/extensions/features/ParagraphChangeTrackerExtension.js +188 -0
  467. package/dist/prosemirror/extensions/features/PasteCleanupExtension.d.ts +20 -0
  468. package/dist/prosemirror/extensions/features/PasteCleanupExtension.js +34 -0
  469. package/dist/prosemirror/extensions/features/PasteStyleInlinerExtension.d.ts +20 -0
  470. package/dist/prosemirror/extensions/features/PasteStyleInlinerExtension.js +145 -0
  471. package/dist/prosemirror/extensions/features/SelectionTrackerExtension.d.ts +10 -0
  472. package/dist/prosemirror/extensions/features/SelectionTrackerExtension.js +17 -0
  473. package/dist/prosemirror/extensions/features/bidiShortcutController.d.ts +31 -0
  474. package/dist/prosemirror/extensions/features/bidiShortcutController.js +27 -0
  475. package/dist/prosemirror/extensions/features/pasteCleanup.d.ts +31 -0
  476. package/dist/prosemirror/extensions/features/pasteCleanup.js +159 -0
  477. package/dist/prosemirror/extensions/marks/AllCapsExtension.d.ts +9 -0
  478. package/dist/prosemirror/extensions/marks/AllCapsExtension.js +24 -0
  479. package/dist/prosemirror/extensions/marks/BoldExtension.d.ts +9 -0
  480. package/dist/prosemirror/extensions/marks/BoldExtension.js +41 -0
  481. package/dist/prosemirror/extensions/marks/CharacterSpacingExtension.d.ts +14 -0
  482. package/dist/prosemirror/extensions/marks/CharacterSpacingExtension.js +64 -0
  483. package/dist/prosemirror/extensions/marks/CharacterStyleExtension.d.ts +23 -0
  484. package/dist/prosemirror/extensions/marks/CharacterStyleExtension.js +47 -0
  485. package/dist/prosemirror/extensions/marks/CommentExtension.d.ts +12 -0
  486. package/dist/prosemirror/extensions/marks/CommentExtension.js +38 -0
  487. package/dist/prosemirror/extensions/marks/FontFamilyExtension.d.ts +9 -0
  488. package/dist/prosemirror/extensions/marks/FontFamilyExtension.js +55 -0
  489. package/dist/prosemirror/extensions/marks/FontSizeExtension.d.ts +9 -0
  490. package/dist/prosemirror/extensions/marks/FontSizeExtension.js +47 -0
  491. package/dist/prosemirror/extensions/marks/FootnoteRefExtension.d.ts +11 -0
  492. package/dist/prosemirror/extensions/marks/FootnoteRefExtension.js +92 -0
  493. package/dist/prosemirror/extensions/marks/HiddenTextExtension.d.ts +23 -0
  494. package/dist/prosemirror/extensions/marks/HiddenTextExtension.js +35 -0
  495. package/dist/prosemirror/extensions/marks/HighlightExtension.d.ts +10 -0
  496. package/dist/prosemirror/extensions/marks/HighlightExtension.js +115 -0
  497. package/dist/prosemirror/extensions/marks/HyperlinkExtension.d.ts +13 -0
  498. package/dist/prosemirror/extensions/marks/HyperlinkExtension.js +146 -0
  499. package/dist/prosemirror/extensions/marks/ItalicExtension.d.ts +9 -0
  500. package/dist/prosemirror/extensions/marks/ItalicExtension.js +34 -0
  501. package/dist/prosemirror/extensions/marks/RtlExtension.d.ts +6 -0
  502. package/dist/prosemirror/extensions/marks/RtlExtension.js +21 -0
  503. package/dist/prosemirror/extensions/marks/RunFormattingOverrideExtension.d.ts +11 -0
  504. package/dist/prosemirror/extensions/marks/RunFormattingOverrideExtension.js +75 -0
  505. package/dist/prosemirror/extensions/marks/RunShadingExtension.d.ts +6 -0
  506. package/dist/prosemirror/extensions/marks/RunShadingExtension.js +38 -0
  507. package/dist/prosemirror/extensions/marks/SmallCapsExtension.d.ts +9 -0
  508. package/dist/prosemirror/extensions/marks/SmallCapsExtension.js +24 -0
  509. package/dist/prosemirror/extensions/marks/StrikeExtension.d.ts +9 -0
  510. package/dist/prosemirror/extensions/marks/StrikeExtension.js +33 -0
  511. package/dist/prosemirror/extensions/marks/SubscriptExtension.d.ts +9 -0
  512. package/dist/prosemirror/extensions/marks/SubscriptExtension.js +25 -0
  513. package/dist/prosemirror/extensions/marks/SuperscriptExtension.d.ts +9 -0
  514. package/dist/prosemirror/extensions/marks/SuperscriptExtension.js +25 -0
  515. package/dist/prosemirror/extensions/marks/TextColorExtension.d.ts +9 -0
  516. package/dist/prosemirror/extensions/marks/TextColorExtension.js +50 -0
  517. package/dist/prosemirror/extensions/marks/TextEffectExtension.d.ts +6 -0
  518. package/dist/prosemirror/extensions/marks/TextEffectExtension.js +35 -0
  519. package/dist/prosemirror/extensions/marks/TextEffectsExtensions.d.ts +31 -0
  520. package/dist/prosemirror/extensions/marks/TextEffectsExtensions.js +134 -0
  521. package/dist/prosemirror/extensions/marks/TrackedChangeExtensions.d.ts +22 -0
  522. package/dist/prosemirror/extensions/marks/TrackedChangeExtensions.js +113 -0
  523. package/dist/prosemirror/extensions/marks/UnderlineExtension.d.ts +9 -0
  524. package/dist/prosemirror/extensions/marks/UnderlineExtension.js +60 -0
  525. package/dist/prosemirror/extensions/marks/markUtils.d.ts +34 -0
  526. package/dist/prosemirror/extensions/marks/markUtils.js +233 -0
  527. package/dist/prosemirror/extensions/nodes/BlockSdtExtension.d.ts +22 -0
  528. package/dist/prosemirror/extensions/nodes/BlockSdtExtension.js +122 -0
  529. package/dist/prosemirror/extensions/nodes/FieldExtension.d.ts +12 -0
  530. package/dist/prosemirror/extensions/nodes/FieldExtension.js +87 -0
  531. package/dist/prosemirror/extensions/nodes/HardBreakExtension.d.ts +9 -0
  532. package/dist/prosemirror/extensions/nodes/HardBreakExtension.js +38 -0
  533. package/dist/prosemirror/extensions/nodes/HorizontalRuleExtension.d.ts +9 -0
  534. package/dist/prosemirror/extensions/nodes/HorizontalRuleExtension.js +18 -0
  535. package/dist/prosemirror/extensions/nodes/ImageExtension.d.ts +9 -0
  536. package/dist/prosemirror/extensions/nodes/ImageExtension.js +132 -0
  537. package/dist/prosemirror/extensions/nodes/MathExtension.d.ts +13 -0
  538. package/dist/prosemirror/extensions/nodes/MathExtension.js +56 -0
  539. package/dist/prosemirror/extensions/nodes/PageBreakExtension.d.ts +9 -0
  540. package/dist/prosemirror/extensions/nodes/PageBreakExtension.js +20 -0
  541. package/dist/prosemirror/extensions/nodes/SdtExtension.d.ts +12 -0
  542. package/dist/prosemirror/extensions/nodes/SdtExtension.js +107 -0
  543. package/dist/prosemirror/extensions/nodes/ShapeExtension.d.ts +30 -0
  544. package/dist/prosemirror/extensions/nodes/ShapeExtension.js +502 -0
  545. package/dist/prosemirror/extensions/nodes/TabExtension.d.ts +9 -0
  546. package/dist/prosemirror/extensions/nodes/TabExtension.js +27 -0
  547. package/dist/prosemirror/extensions/nodes/TableExtension.d.ts +34 -0
  548. package/dist/prosemirror/extensions/nodes/TableExtension.js +1972 -0
  549. package/dist/prosemirror/extensions/nodes/TextBoxExtension.d.ts +34 -0
  550. package/dist/prosemirror/extensions/nodes/TextBoxExtension.js +150 -0
  551. package/dist/prosemirror/extensions/types.d.ts +101 -0
  552. package/dist/prosemirror/extensions/types.js +10 -0
  553. package/dist/prosemirror/findReplaceSelection.d.ts +23 -0
  554. package/dist/prosemirror/findReplaceSelection.js +86 -0
  555. package/dist/prosemirror/index.d.ts +25 -0
  556. package/dist/prosemirror/index.js +23 -0
  557. package/dist/prosemirror/insertOperations.d.ts +12 -0
  558. package/dist/prosemirror/insertOperations.js +19 -0
  559. package/dist/prosemirror/paragraphDirection.d.ts +42 -0
  560. package/dist/prosemirror/paragraphDirection.js +33 -0
  561. package/dist/prosemirror/plugins/aiCitationDecorations.d.ts +40 -0
  562. package/dist/prosemirror/plugins/aiCitationDecorations.js +90 -0
  563. package/dist/prosemirror/plugins/aiSuggestionDecorations.d.ts +42 -0
  564. package/dist/prosemirror/plugins/aiSuggestionDecorations.js +135 -0
  565. package/dist/prosemirror/plugins/anonymizationDecorations.d.ts +60 -0
  566. package/dist/prosemirror/plugins/anonymizationDecorations.js +120 -0
  567. package/dist/prosemirror/plugins/autocompleteSuggestion.d.ts +123 -0
  568. package/dist/prosemirror/plugins/autocompleteSuggestion.js +283 -0
  569. package/dist/prosemirror/plugins/contentControlWidgets.d.ts +56 -0
  570. package/dist/prosemirror/plugins/contentControlWidgets.js +192 -0
  571. package/dist/prosemirror/plugins/createDocScanPlugin.d.ts +37 -0
  572. package/dist/prosemirror/plugins/createDocScanPlugin.js +55 -0
  573. package/dist/prosemirror/plugins/documentStyles.d.ts +18 -0
  574. package/dist/prosemirror/plugins/documentStyles.js +46 -0
  575. package/dist/prosemirror/plugins/index.d.ts +3 -0
  576. package/dist/prosemirror/plugins/index.js +3 -0
  577. package/dist/prosemirror/plugins/pmTextScan.d.ts +19 -0
  578. package/dist/prosemirror/plugins/pmTextScan.js +39 -0
  579. package/dist/prosemirror/plugins/selectionTracker.d.ts +43 -0
  580. package/dist/prosemirror/plugins/selectionTracker.js +179 -0
  581. package/dist/prosemirror/plugins/suggestionMode.d.ts +70 -0
  582. package/dist/prosemirror/plugins/suggestionMode.js +489 -0
  583. package/dist/prosemirror/plugins/templateDirectives.d.ts +25 -0
  584. package/dist/prosemirror/plugins/templateDirectives.js +67 -0
  585. package/dist/prosemirror/plugins/templatePreviewValues.d.ts +49 -0
  586. package/dist/prosemirror/plugins/templatePreviewValues.js +117 -0
  587. package/dist/prosemirror/plugins/templateSlashMenu.d.ts +57 -0
  588. package/dist/prosemirror/plugins/templateSlashMenu.js +184 -0
  589. package/dist/prosemirror/schema/index.d.ts +15 -0
  590. package/dist/prosemirror/schema/index.js +20 -0
  591. package/dist/prosemirror/schema/marks.d.ts +118 -0
  592. package/dist/prosemirror/schema/marks.js +0 -0
  593. package/dist/prosemirror/schema/nodes.d.ts +389 -0
  594. package/dist/prosemirror/schema/nodes.js +0 -0
  595. package/dist/prosemirror/selectionState.d.ts +23 -0
  596. package/dist/prosemirror/selectionState.js +111 -0
  597. package/dist/prosemirror/styles/index.d.ts +2 -0
  598. package/dist/prosemirror/styles/index.js +2 -0
  599. package/dist/prosemirror/styles/resolvedStyleAttrs.d.ts +32 -0
  600. package/dist/prosemirror/styles/resolvedStyleAttrs.js +108 -0
  601. package/dist/prosemirror/styles/styleResolver.d.ts +94 -0
  602. package/dist/prosemirror/styles/styleResolver.js +200 -0
  603. package/dist/prosemirror/utils/findParagraphByParaId.d.ts +26 -0
  604. package/dist/prosemirror/utils/findParagraphByParaId.js +37 -0
  605. package/dist/prosemirror/utils/tabCalculator.d.ts +110 -0
  606. package/dist/prosemirror/utils/tabCalculator.js +137 -0
  607. package/dist/prosemirror/validation.d.ts +20 -0
  608. package/dist/prosemirror/validation.js +177 -0
  609. package/dist/server.d.ts +7 -0
  610. package/dist/server.js +6 -0
  611. package/dist/style-engine/index.d.ts +3 -0
  612. package/dist/style-engine/index.js +2 -0
  613. package/dist/style-engine/styleEngine.d.ts +67 -0
  614. package/dist/style-engine/styleEngine.js +70 -0
  615. package/dist/types/block-id.d.ts +58 -0
  616. package/dist/types/block-id.js +61 -0
  617. package/dist/types/colors.d.ts +2 -0
  618. package/dist/types/colors.js +0 -0
  619. package/dist/types/content.d.ts +2 -0
  620. package/dist/types/content.js +0 -0
  621. package/dist/types/document.d.ts +7 -0
  622. package/dist/types/document.js +0 -0
  623. package/dist/types/documentEnumValues.d.ts +89 -0
  624. package/dist/types/documentEnumValues.js +693 -0
  625. package/dist/types/formatting.d.ts +2 -0
  626. package/dist/types/formatting.js +0 -0
  627. package/dist/types/index.d.ts +107 -0
  628. package/dist/types/index.js +0 -0
  629. package/dist/utils/authorColors.d.ts +16 -0
  630. package/dist/utils/authorColors.js +30 -0
  631. package/dist/utils/baseDirection.d.ts +23 -0
  632. package/dist/utils/baseDirection.js +34 -0
  633. package/dist/utils/clipboard.d.ts +126 -0
  634. package/dist/utils/clipboard.js +622 -0
  635. package/dist/utils/colorResolver.d.ts +158 -0
  636. package/dist/utils/colorResolver.js +557 -0
  637. package/dist/utils/createDocument.d.ts +50 -0
  638. package/dist/utils/createDocument.js +262 -0
  639. package/dist/utils/documentLoaderBehavior.d.ts +22 -0
  640. package/dist/utils/documentLoaderBehavior.js +14 -0
  641. package/dist/utils/docxInput.d.ts +22 -0
  642. package/dist/utils/docxInput.js +16 -0
  643. package/dist/utils/domGuards.d.ts +59 -0
  644. package/dist/utils/domGuards.js +82 -0
  645. package/dist/utils/fontFamilyMerge.d.ts +7 -0
  646. package/dist/utils/fontFamilyMerge.js +31 -0
  647. package/dist/utils/fontLoader.d.ts +50 -0
  648. package/dist/utils/fontLoader.js +177 -0
  649. package/dist/utils/fontResolver.d.ts +61 -0
  650. package/dist/utils/fontResolver.js +651 -0
  651. package/dist/utils/fontWeights.d.ts +4 -0
  652. package/dist/utils/fontWeights.js +4 -0
  653. package/dist/utils/formatToStyle.d.ts +103 -0
  654. package/dist/utils/formatToStyle.js +289 -0
  655. package/dist/utils/headerFooter.d.ts +74 -0
  656. package/dist/utils/headerFooter.js +257 -0
  657. package/dist/utils/headingCollector.d.ts +22 -0
  658. package/dist/utils/headingCollector.js +36 -0
  659. package/dist/utils/hexId.d.ts +33 -0
  660. package/dist/utils/hexId.js +37 -0
  661. package/dist/utils/imageValidation.d.ts +5 -0
  662. package/dist/utils/imageValidation.js +31 -0
  663. package/dist/utils/paragraphFormattingMerge.d.ts +14 -0
  664. package/dist/utils/paragraphFormattingMerge.js +68 -0
  665. package/dist/utils/replaceText.d.ts +17 -0
  666. package/dist/utils/replaceText.js +161 -0
  667. package/dist/utils/rotationBoundingBox.d.ts +12 -0
  668. package/dist/utils/rotationBoundingBox.js +36 -0
  669. package/dist/utils/scriptSegments.d.ts +36 -0
  670. package/dist/utils/scriptSegments.js +52 -0
  671. package/dist/utils/tableOperations.d.ts +87 -0
  672. package/dist/utils/tableOperations.js +259 -0
  673. package/dist/utils/textFormattingMerge.d.ts +6 -0
  674. package/dist/utils/textFormattingMerge.js +31 -0
  675. package/dist/utils/tiffConverter.d.ts +18 -0
  676. package/dist/utils/tiffConverter.js +83 -0
  677. package/dist/utils/units.d.ts +99 -0
  678. package/dist/utils/units.js +139 -0
  679. package/dist/utils/urlSecurity.d.ts +7 -0
  680. package/dist/utils/urlSecurity.js +65 -0
  681. package/dist/watermark/index.d.ts +39 -0
  682. package/dist/watermark/index.js +149 -0
  683. package/package.json +122 -2
@@ -0,0 +1,383 @@
1
+ import JSZip from "jszip";
2
+ //#region src/docx/unzip.ts
3
+ /**
4
+ * DOCX Unzipper
5
+ *
6
+ * Extracts all files from a DOCX ZIP archive and organizes them
7
+ * into a structured format for further processing.
8
+ *
9
+ * A DOCX file is a ZIP archive containing:
10
+ * - [Content_Types].xml - Content type declarations
11
+ * - word/document.xml - Main document content
12
+ * - word/styles.xml - Style definitions
13
+ * - word/theme/theme1.xml - Theme colors and fonts
14
+ * - word/numbering.xml - List/numbering definitions
15
+ * - word/fontTable.xml - Font declarations
16
+ * - word/settings.xml - Document settings
17
+ * - word/webSettings.xml - Web settings
18
+ * - word/header*.xml - Header content
19
+ * - word/footer*.xml - Footer content
20
+ * - word/footnotes.xml - Footnotes
21
+ * - word/endnotes.xml - Endnotes
22
+ * - word/media/* - Embedded images and media
23
+ * - word/_rels/document.xml.rels - Relationships
24
+ * - _rels/.rels - Package relationships
25
+ * - docProps/core.xml - Core properties
26
+ * - docProps/app.xml - Application properties
27
+ */
28
+ var DocxSecurityError = class extends Error {
29
+ constructor(message) {
30
+ super(message);
31
+ this.name = "DocxSecurityError";
32
+ }
33
+ };
34
+ const DEFAULT_ALLOWED_MEDIA_MIME_TYPES = /* @__PURE__ */ new Set([
35
+ "image/png",
36
+ "image/jpeg",
37
+ "image/gif",
38
+ "image/bmp",
39
+ "image/tiff",
40
+ "image/webp"
41
+ ]);
42
+ const PRESERVABLE_MEDIA_MIME_TYPES = /* @__PURE__ */ new Set([
43
+ ...DEFAULT_ALLOWED_MEDIA_MIME_TYPES,
44
+ "image/svg+xml",
45
+ "image/x-wmf",
46
+ "image/x-emf"
47
+ ]);
48
+ const MEBIBYTE = 1024 * 1024;
49
+ const DEFAULT_UNZIP_LIMITS = {
50
+ maxInputBytes: 50 * MEBIBYTE,
51
+ maxFiles: 5e3,
52
+ maxXmlBytes: 128 * MEBIBYTE,
53
+ maxMediaBytes: 25 * MEBIBYTE,
54
+ maxFontBytes: 10 * MEBIBYTE,
55
+ maxTotalUncompressedBytes: 250 * MEBIBYTE,
56
+ allowedMediaMimeTypes: DEFAULT_ALLOWED_MEDIA_MIME_TYPES
57
+ };
58
+ const ZIP_END_OF_CENTRAL_DIRECTORY_SIGNATURE = 101010256;
59
+ const ZIP_CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE = 33639248;
60
+ const ZIP_END_OF_CENTRAL_DIRECTORY_SIZE = 22;
61
+ const ZIP_END_OF_CENTRAL_DIRECTORY_WITH_COUNTS_SIZE = 12;
62
+ const ZIP_CENTRAL_DIRECTORY_FILE_HEADER_SIZE = 46;
63
+ /**
64
+ * Extract all content from a DOCX file
65
+ *
66
+ * @param buffer - DOCX file as ArrayBuffer
67
+ * @returns Promise resolving to extracted content
68
+ */
69
+ async function unzipDocx(buffer, options = {}) {
70
+ const limits = createUnzipLimits(options);
71
+ if (buffer.byteLength > limits.maxInputBytes) throw new DocxSecurityError("DOCX file exceeds the maximum allowed size");
72
+ const loaded = await loadDocxZip(buffer, limits.maxFiles);
73
+ if (loaded.buffer.byteLength > limits.maxInputBytes) throw new DocxSecurityError("DOCX file exceeds the maximum allowed size");
74
+ const { zip } = loaded;
75
+ const entries = Object.entries(zip.files).filter(([, file]) => !file.dir);
76
+ if (entries.length > limits.maxFiles) throw new DocxSecurityError("DOCX file contains too many entries");
77
+ const content = {
78
+ documentXml: null,
79
+ stylesXml: null,
80
+ themeXml: null,
81
+ numberingXml: null,
82
+ fontTableXml: null,
83
+ settingsXml: null,
84
+ webSettingsXml: null,
85
+ headers: /* @__PURE__ */ new Map(),
86
+ footers: /* @__PURE__ */ new Map(),
87
+ footnotesXml: null,
88
+ endnotesXml: null,
89
+ commentsXml: null,
90
+ commentsExtensibleXml: null,
91
+ commentsExtendedXml: null,
92
+ documentRels: null,
93
+ packageRels: null,
94
+ contentTypesXml: null,
95
+ corePropsXml: null,
96
+ appPropsXml: null,
97
+ customPropsXml: null,
98
+ media: /* @__PURE__ */ new Map(),
99
+ fonts: /* @__PURE__ */ new Map(),
100
+ allXml: /* @__PURE__ */ new Map(),
101
+ originalZip: zip,
102
+ originalBuffer: loaded.buffer,
103
+ warnings: []
104
+ };
105
+ let totalUncompressedBytes = 0;
106
+ for (const [path, file] of entries) {
107
+ if (!isSafeDocxPath(path)) throw new DocxSecurityError("DOCX file contains an unsafe entry path");
108
+ if (!isPreservableDocxEntry(path)) continue;
109
+ const lowerPath = path.toLowerCase();
110
+ const declaredSize = getEntryUncompressedSize(file);
111
+ if (declaredSize !== null) {
112
+ totalUncompressedBytes += declaredSize;
113
+ if (totalUncompressedBytes > limits.maxTotalUncompressedBytes) throw new DocxSecurityError("DOCX file expands beyond the maximum allowed size");
114
+ }
115
+ if (lowerPath.endsWith(".xml") || lowerPath.endsWith(".rels")) {
116
+ assertEntrySize(path, declaredSize, limits.maxXmlBytes);
117
+ const xmlContent = await file.async("text");
118
+ assertExtractedSize(path, xmlContent.length, limits.maxXmlBytes);
119
+ content.allXml.set(path, xmlContent);
120
+ if (lowerPath === "word/document.xml") content.documentXml = xmlContent;
121
+ else if (lowerPath === "word/styles.xml") content.stylesXml = xmlContent;
122
+ else if (lowerPath === "word/theme/theme1.xml") content.themeXml = xmlContent;
123
+ else if (lowerPath === "word/numbering.xml") content.numberingXml = xmlContent;
124
+ else if (lowerPath === "word/fonttable.xml") content.fontTableXml = xmlContent;
125
+ else if (lowerPath === "word/settings.xml") content.settingsXml = xmlContent;
126
+ else if (lowerPath === "word/websettings.xml") content.webSettingsXml = xmlContent;
127
+ else if (lowerPath === "word/footnotes.xml") content.footnotesXml = xmlContent;
128
+ else if (lowerPath === "word/endnotes.xml") content.endnotesXml = xmlContent;
129
+ else if (lowerPath === "word/comments.xml") content.commentsXml = xmlContent;
130
+ else if (lowerPath === "word/commentsextensible.xml") content.commentsExtensibleXml = xmlContent;
131
+ else if (lowerPath === "word/commentsextended.xml") content.commentsExtendedXml = xmlContent;
132
+ else if (lowerPath === "word/_rels/document.xml.rels") content.documentRels = xmlContent;
133
+ else if (lowerPath === "_rels/.rels") content.packageRels = xmlContent;
134
+ else if (lowerPath === "[content_types].xml") content.contentTypesXml = xmlContent;
135
+ else if (lowerPath === "docprops/core.xml") content.corePropsXml = xmlContent;
136
+ else if (lowerPath === "docprops/app.xml") content.appPropsXml = xmlContent;
137
+ else if (lowerPath === "docprops/custom.xml") content.customPropsXml = xmlContent;
138
+ else if (/^word\/header[^/]*\.xml$/u.test(lowerPath)) {
139
+ const filename = path.split("/").pop() || path;
140
+ content.headers.set(filename, xmlContent);
141
+ } else if (/^word\/footer[^/]*\.xml$/u.test(lowerPath)) {
142
+ const filename = path.split("/").pop() || path;
143
+ content.footers.set(filename, xmlContent);
144
+ }
145
+ } else if (lowerPath.startsWith("word/media/")) {
146
+ const mimeType = getMediaMimeType(path);
147
+ if (!limits.allowedMediaMimeTypes.has(mimeType)) continue;
148
+ if (isEntryTooLarge(declaredSize, limits.maxMediaBytes)) {
149
+ content.warnings.push(`Skipped oversized media file: ${path}; original entry preserved for round-trip.`);
150
+ continue;
151
+ }
152
+ const binaryContent = await file.async("arraybuffer");
153
+ if (binaryContent.byteLength > limits.maxMediaBytes) {
154
+ content.warnings.push(`Skipped oversized media file: ${path}; original entry preserved for round-trip.`);
155
+ continue;
156
+ }
157
+ if (!isMediaContentAllowed(binaryContent, mimeType)) continue;
158
+ content.media.set(path, binaryContent);
159
+ } else if (lowerPath.startsWith("word/fonts/")) {
160
+ if (isEntryTooLarge(declaredSize, limits.maxFontBytes)) continue;
161
+ const binaryContent = await file.async("arraybuffer");
162
+ if (binaryContent.byteLength > limits.maxFontBytes) continue;
163
+ content.fonts.set(path, binaryContent);
164
+ }
165
+ }
166
+ return content;
167
+ }
168
+ async function loadDocxZip(buffer, maxFiles) {
169
+ try {
170
+ return {
171
+ zip: await JSZip.loadAsync(buffer),
172
+ buffer
173
+ };
174
+ } catch (error) {
175
+ const repairedBuffer = repairTruncatedEndOfCentralDirectory(buffer, maxFiles);
176
+ if (!repairedBuffer) throw error;
177
+ try {
178
+ return {
179
+ zip: await JSZip.loadAsync(repairedBuffer),
180
+ buffer: repairedBuffer
181
+ };
182
+ } catch {
183
+ throw error;
184
+ }
185
+ }
186
+ }
187
+ function repairTruncatedEndOfCentralDirectory(buffer, maxFiles) {
188
+ const bytes = new Uint8Array(buffer);
189
+ const view = new DataView(buffer);
190
+ const eocdOffset = findLastSignature(view, bytes.byteLength, ZIP_END_OF_CENTRAL_DIRECTORY_SIGNATURE);
191
+ if (eocdOffset === -1) return null;
192
+ const eocdBytes = bytes.byteLength - eocdOffset;
193
+ if (eocdBytes >= ZIP_END_OF_CENTRAL_DIRECTORY_SIZE || eocdBytes < ZIP_END_OF_CENTRAL_DIRECTORY_WITH_COUNTS_SIZE) return null;
194
+ const diskNumber = view.getUint16(eocdOffset + 4, true);
195
+ const centralDirectoryDisk = view.getUint16(eocdOffset + 6, true);
196
+ const diskEntryCount = view.getUint16(eocdOffset + 8, true);
197
+ const totalEntryCount = view.getUint16(eocdOffset + 10, true);
198
+ if (diskNumber !== 0 || centralDirectoryDisk !== 0 || diskEntryCount !== totalEntryCount || totalEntryCount > maxFiles) return null;
199
+ const centralDirectory = findCentralDirectory(view, eocdOffset, totalEntryCount);
200
+ if (!centralDirectory) return null;
201
+ const repaired = new Uint8Array(eocdOffset + ZIP_END_OF_CENTRAL_DIRECTORY_SIZE);
202
+ repaired.set(bytes.subarray(0, eocdOffset));
203
+ const repairedView = new DataView(repaired.buffer);
204
+ repairedView.setUint32(eocdOffset, ZIP_END_OF_CENTRAL_DIRECTORY_SIGNATURE, true);
205
+ repairedView.setUint16(eocdOffset + 4, 0, true);
206
+ repairedView.setUint16(eocdOffset + 6, 0, true);
207
+ repairedView.setUint16(eocdOffset + 8, totalEntryCount, true);
208
+ repairedView.setUint16(eocdOffset + 10, totalEntryCount, true);
209
+ repairedView.setUint32(eocdOffset + 12, centralDirectory.size, true);
210
+ repairedView.setUint32(eocdOffset + 16, centralDirectory.offset, true);
211
+ repairedView.setUint16(eocdOffset + 20, 0, true);
212
+ return repaired.buffer;
213
+ }
214
+ function findCentralDirectory(view, eocdOffset, entryCount) {
215
+ for (let offset = 0; offset <= eocdOffset - ZIP_CENTRAL_DIRECTORY_FILE_HEADER_SIZE; offset += 1) {
216
+ if (view.getUint32(offset, true) !== ZIP_CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE) continue;
217
+ const parsed = parseCentralDirectoryAt(view, offset, eocdOffset, entryCount);
218
+ if (parsed) return parsed;
219
+ }
220
+ return null;
221
+ }
222
+ function parseCentralDirectoryAt(view, startOffset, eocdOffset, entryCount) {
223
+ let offset = startOffset;
224
+ for (let index = 0; index < entryCount; index += 1) {
225
+ if (offset + ZIP_CENTRAL_DIRECTORY_FILE_HEADER_SIZE > eocdOffset || view.getUint32(offset, true) !== ZIP_CENTRAL_DIRECTORY_FILE_HEADER_SIGNATURE) return null;
226
+ const filenameLength = view.getUint16(offset + 28, true);
227
+ const extraLength = view.getUint16(offset + 30, true);
228
+ const commentLength = view.getUint16(offset + 32, true);
229
+ offset += ZIP_CENTRAL_DIRECTORY_FILE_HEADER_SIZE + filenameLength + extraLength + commentLength;
230
+ }
231
+ if (offset !== eocdOffset) return null;
232
+ return {
233
+ offset: startOffset,
234
+ size: eocdOffset - startOffset
235
+ };
236
+ }
237
+ function findLastSignature(view, byteLength, signature) {
238
+ for (let offset = byteLength - ZIP_END_OF_CENTRAL_DIRECTORY_WITH_COUNTS_SIZE; offset >= 0; offset -= 1) if (view.getUint32(offset, true) === signature) return offset;
239
+ return -1;
240
+ }
241
+ function createUnzipLimits(options) {
242
+ return {
243
+ ...DEFAULT_UNZIP_LIMITS,
244
+ ...options,
245
+ allowedMediaMimeTypes: options.allowedMediaMimeTypes ? new Set(options.allowedMediaMimeTypes) : DEFAULT_UNZIP_LIMITS.allowedMediaMimeTypes
246
+ };
247
+ }
248
+ function isSafeDocxPath(path) {
249
+ if (!path || path.startsWith("/") || path.includes("\\")) return false;
250
+ return !path.split("/").some((part) => part === "..");
251
+ }
252
+ function isPreservableDocxEntry(path) {
253
+ if (!isSafeDocxPath(path)) return false;
254
+ const lowerPath = path.toLowerCase();
255
+ if (lowerPath.startsWith("word/media/")) return PRESERVABLE_MEDIA_MIME_TYPES.has(getMediaMimeType(path));
256
+ if (lowerPath.startsWith("word/fonts/")) return true;
257
+ if (!(lowerPath.endsWith(".xml") || lowerPath.endsWith(".rels"))) return false;
258
+ return lowerPath === "[content_types].xml" || lowerPath.startsWith("_rels/") || lowerPath.startsWith("docprops/") || lowerPath.startsWith("word/") || lowerPath.startsWith("customxml/");
259
+ }
260
+ function getEntryUncompressedSize(file) {
261
+ const metadata = file._data;
262
+ return typeof metadata?.uncompressedSize === "number" ? metadata.uncompressedSize : null;
263
+ }
264
+ function assertEntrySize(path, declaredSize, maxBytes) {
265
+ if (isEntryTooLarge(declaredSize, maxBytes)) throw new DocxSecurityError(`DOCX entry exceeds maximum size: ${path}`);
266
+ }
267
+ function isEntryTooLarge(declaredSize, maxBytes) {
268
+ return declaredSize !== null && declaredSize > maxBytes;
269
+ }
270
+ function assertExtractedSize(path, byteLength, maxBytes) {
271
+ if (byteLength > maxBytes) throw new DocxSecurityError(`DOCX entry exceeds maximum size: ${path}`);
272
+ }
273
+ function isMediaContentAllowed(data, mimeType) {
274
+ const bytes = new Uint8Array(data);
275
+ switch (mimeType) {
276
+ case "image/png": return bytes[0] === 137 && bytes[1] === 80 && bytes[2] === 78 && bytes[3] === 71;
277
+ case "image/jpeg": return bytes[0] === 255 && bytes[1] === 216;
278
+ case "image/gif": return bytes[0] === 71 && bytes[1] === 73 && bytes[2] === 70 && bytes[3] === 56;
279
+ case "image/bmp": return bytes[0] === 66 && bytes[1] === 77;
280
+ case "image/webp": return bytes[0] === 82 && bytes[1] === 73 && bytes[2] === 70 && bytes[3] === 70 && bytes[8] === 87 && bytes[9] === 69 && bytes[10] === 66 && bytes[11] === 80;
281
+ case "image/tiff": return bytes[0] === 73 && bytes[1] === 73 || bytes[0] === 77 && bytes[1] === 77;
282
+ default: return false;
283
+ }
284
+ }
285
+ /**
286
+ * Get a list of all files in the DOCX
287
+ *
288
+ * @param content - Extracted DOCX content
289
+ * @returns Array of file paths
290
+ */
291
+ function getFileList(content) {
292
+ const files = [];
293
+ for (const path of Object.keys(content.originalZip.files)) if (!content.originalZip.files[path]?.dir && isPreservableDocxEntry(path)) files.push(path);
294
+ return files.toSorted();
295
+ }
296
+ /**
297
+ * Get the MIME type for a media file based on extension
298
+ *
299
+ * @param path - File path
300
+ * @returns MIME type string
301
+ */
302
+ function getMediaMimeType(path) {
303
+ switch (path.toLowerCase().split(".").pop()) {
304
+ case "png": return "image/png";
305
+ case "jpg":
306
+ case "jpeg": return "image/jpeg";
307
+ case "gif": return "image/gif";
308
+ case "bmp": return "image/bmp";
309
+ case "tif":
310
+ case "tiff": return "image/tiff";
311
+ case "wmf": return "image/x-wmf";
312
+ case "emf": return "image/x-emf";
313
+ case "svg": return "image/svg+xml";
314
+ case "webp": return "image/webp";
315
+ default: return "application/octet-stream";
316
+ }
317
+ }
318
+ /**
319
+ * Convert media file to data URL
320
+ *
321
+ * @param data - Binary data
322
+ * @param mimeType - MIME type
323
+ * @returns Data URL string
324
+ */
325
+ function mediaToDataUrl(data, mimeType) {
326
+ const bytes = new Uint8Array(data);
327
+ const chunks = [];
328
+ const chunkSize = 32768;
329
+ for (let offset = 0; offset < bytes.length; offset += chunkSize) {
330
+ const chunk = bytes.subarray(offset, offset + chunkSize);
331
+ chunks.push(String.fromCodePoint(...chunk));
332
+ }
333
+ return `data:${mimeType};base64,${btoa(chunks.join(""))}`;
334
+ }
335
+ /**
336
+ * Extract a specific file from the original ZIP
337
+ *
338
+ * @param content - Extracted DOCX content
339
+ * @param path - File path within the ZIP
340
+ * @returns File content as string or ArrayBuffer, or null if not found
341
+ */
342
+ function extractFile(content, path) {
343
+ const file = content.originalZip.file(path);
344
+ if (!file || !isPreservableDocxEntry(path)) return Promise.resolve(null);
345
+ const lowerPath = path.toLowerCase();
346
+ if (lowerPath.endsWith(".xml") || lowerPath.endsWith(".rels")) return file.async("text");
347
+ return file.async("arraybuffer");
348
+ }
349
+ /**
350
+ * Check if a file exists in the DOCX
351
+ *
352
+ * @param content - Extracted DOCX content
353
+ * @param path - File path to check
354
+ * @returns true if file exists
355
+ */
356
+ function hasFile(content, path) {
357
+ return content.originalZip.file(path) !== null;
358
+ }
359
+ /**
360
+ * Get summary of DOCX content
361
+ *
362
+ * @param content - Extracted DOCX content
363
+ * @returns Object with file counts and presence flags
364
+ */
365
+ function getContentSummary(content) {
366
+ return {
367
+ hasDocument: content.documentXml !== null,
368
+ hasStyles: content.stylesXml !== null,
369
+ hasTheme: content.themeXml !== null,
370
+ hasNumbering: content.numberingXml !== null,
371
+ hasFontTable: content.fontTableXml !== null,
372
+ hasFootnotes: content.footnotesXml !== null,
373
+ hasEndnotes: content.endnotesXml !== null,
374
+ hasComments: content.commentsXml !== null,
375
+ headerCount: content.headers.size,
376
+ footerCount: content.footers.size,
377
+ mediaCount: content.media.size,
378
+ fontCount: content.fonts.size,
379
+ totalFiles: Object.keys(content.originalZip.files).filter((p) => !content.originalZip.files[p]?.dir).length
380
+ };
381
+ }
382
+ //#endregion
383
+ export { DocxSecurityError, extractFile, getContentSummary, getFileList, getMediaMimeType, hasFile, isPreservableDocxEntry, mediaToDataUrl, unzipDocx };
@@ -0,0 +1,16 @@
1
+ import { document_d_exports } from "../types/document.js";
2
+ import { XmlElement } from "./xmlParser.js";
3
+
4
+ //#region src/docx/vmlImageParser.d.ts
5
+ /**
6
+ * Parse a `w:pict` element into an inline image, or null when it carries no
7
+ * ordinary VML picture (no resolvable `<v:imagedata>`, or a watermark shape).
8
+ *
9
+ * `rootXmlns` carries the source document/header namespace declarations. They
10
+ * are injected onto the captured VML so the raw replay stays self-contained
11
+ * when the producer bound WordprocessingML / relationship / VML namespaces to
12
+ * non-canonical prefixes the serializer's root does not declare.
13
+ */
14
+ declare function parseVmlImageContent(pictElement: XmlElement, rels: document_d_exports.RelationshipMap | null, media: Map<string, document_d_exports.MediaFile> | null, rootXmlns?: Record<string, string>): document_d_exports.DrawingContent | null;
15
+ //#endregion
16
+ export { parseVmlImageContent };
@@ -0,0 +1,100 @@
1
+ import { cloneWithXmlnsDeclarations, elementToXml, findAllDeep, findChild, getAttribute } from "./xmlParser.js";
2
+ import { pixelsToEmu } from "../utils/units.js";
3
+ import { resolveImageData } from "./imageParser.js";
4
+ import { isWatermarkShape } from "./watermarkParser.js";
5
+ //#region src/docx/vmlImageParser.ts
6
+ /**
7
+ * Convert a CSS length (pt/in/px/cm/mm/pc, default px) to pixels. Units are
8
+ * matched case-insensitively (`2IN`, `2Pt` are valid VML). The numeric part
9
+ * must be a single well-formed decimal, so malformed input like `1.2.3` is
10
+ * rejected rather than truncated to `1.2`.
11
+ */
12
+ function cssLengthToPx(raw) {
13
+ if (!raw) return;
14
+ const match = /^(?<amount>-?(?:\d+(?:\.\d+)?|\.\d+))\s*(?<unit>pt|in|px|cm|mm|pc)?$/iu.exec(raw.trim());
15
+ const amountText = match?.groups?.["amount"];
16
+ if (amountText === void 0) return;
17
+ const value = Number.parseFloat(amountText);
18
+ if (Number.isNaN(value)) return;
19
+ switch (match?.groups?.["unit"]?.toLowerCase()) {
20
+ case "pt": return value / 72 * 96;
21
+ case "in": return value * 96;
22
+ case "cm": return value / 2.54 * 96;
23
+ case "mm": return value / 25.4 * 96;
24
+ case "pc": return value / 6 * 96;
25
+ case "px":
26
+ case void 0: return value;
27
+ default: return;
28
+ }
29
+ }
30
+ /** Read a `style="k1:v1;k2:v2"` attribute into a lowercased key/value record. */
31
+ function parseStyleAttr(style) {
32
+ const out = {};
33
+ if (!style) return out;
34
+ for (const decl of style.split(";")) {
35
+ const colon = decl.indexOf(":");
36
+ if (colon < 0) continue;
37
+ const key = decl.slice(0, colon).trim().toLowerCase();
38
+ const value = decl.slice(colon + 1).trim();
39
+ if (key) out[key] = value;
40
+ }
41
+ return out;
42
+ }
43
+ /**
44
+ * Read the relationship id off a `v:imagedata` element. Word writes `r:id`;
45
+ * some legacy / third-party generators use `r:embed` or the office-namespace
46
+ * `o:relid` instead, so fall back through those before the bare `id`.
47
+ */
48
+ function readImageDataRId(imagedata) {
49
+ return getAttribute(imagedata, "r", "id") ?? getAttribute(imagedata, "r", "embed") ?? getAttribute(imagedata, "o", "relid") ?? getAttribute(imagedata, null, "id") ?? "";
50
+ }
51
+ /**
52
+ * Parse a `w:pict` element into an inline image, or null when it carries no
53
+ * ordinary VML picture (no resolvable `<v:imagedata>`, or a watermark shape).
54
+ *
55
+ * `rootXmlns` carries the source document/header namespace declarations. They
56
+ * are injected onto the captured VML so the raw replay stays self-contained
57
+ * when the producer bound WordprocessingML / relationship / VML namespaces to
58
+ * non-canonical prefixes the serializer's root does not declare.
59
+ */
60
+ function parseVmlImageContent(pictElement, rels, media, rootXmlns = {}) {
61
+ const shapes = [
62
+ ...findAllDeep(pictElement, "v", "shape"),
63
+ ...findAllDeep(pictElement, "v", "rect"),
64
+ ...findAllDeep(pictElement, "v", "roundrect"),
65
+ ...findAllDeep(pictElement, "v", "oval")
66
+ ];
67
+ for (const shape of shapes) {
68
+ const imagedata = findChild(shape, "v", "imagedata");
69
+ if (!imagedata) continue;
70
+ const rId = readImageDataRId(imagedata);
71
+ if (!rId) continue;
72
+ if (isWatermarkShape(shape)) continue;
73
+ const { src, mimeType, filename } = resolveImageData(rId, rels ?? void 0, media ?? void 0);
74
+ const shapeStyle = parseStyleAttr(getAttribute(shape, null, "style"));
75
+ const widthPx = cssLengthToPx(shapeStyle["width"]);
76
+ const heightPx = cssLengthToPx(shapeStyle["height"]);
77
+ const image = {
78
+ type: "image",
79
+ rId,
80
+ size: {
81
+ width: widthPx != null ? pixelsToEmu(widthPx) : 0,
82
+ height: heightPx != null ? pixelsToEmu(heightPx) : 0
83
+ },
84
+ wrap: { type: "inline" }
85
+ };
86
+ if (src) image.src = src;
87
+ if (mimeType) image.mimeType = mimeType;
88
+ if (filename) image.filename = filename;
89
+ const title = getAttribute(imagedata, "o", "title");
90
+ if (title) image.title = title;
91
+ return {
92
+ type: "drawing",
93
+ image,
94
+ rawXml: elementToXml(cloneWithXmlnsDeclarations(pictElement, rootXmlns))
95
+ };
96
+ }
97
+ return null;
98
+ }
99
+ //#endregion
100
+ export { parseVmlImageContent };
@@ -0,0 +1,45 @@
1
+ import { document_d_exports } from "../types/document.js";
2
+ import { XmlElement } from "./xmlParser.js";
3
+
4
+ //#region src/docx/watermarkParser.d.ts
5
+ /**
6
+ * Result of walking a header for its watermark. Carries the modeled
7
+ * `Watermark`, the verbatim XML of the paragraph that hosts the
8
+ * watermark shape (replayed on serialize so an untouched DOCX
9
+ * round-trips byte-exact), and a reference to that hosting paragraph
10
+ * so the regular body parser can skip it.
11
+ */
12
+ type ParsedWatermark = {
13
+ watermark: document_d_exports.Watermark;
14
+ rawParagraphXml: string;
15
+ hostingParagraph: XmlElement;
16
+ /**
17
+ * Index where the watermark paragraph sat among block-level siblings
18
+ * (`w:p` / `w:tbl`) in the source header. After the host paragraph is
19
+ * filtered out of `content`, the serializer inserts the watermark
20
+ * back at this index so a header that originally placed the
21
+ * watermark after visible text rounds-trips with the same flow.
22
+ */
23
+ blockIndex: number;
24
+ };
25
+ /**
26
+ * Whether a VML `<v:shape>` is a watermark rather than ordinary inline
27
+ * imagery. Text watermarks use the WordArt shapetype; picture watermarks
28
+ * carry a `WordPictureWatermark…` id. The VML image parser uses this to
29
+ * leave watermark shapes to this module, so a header watermark is not also
30
+ * rendered as an inline picture.
31
+ */
32
+ declare function isWatermarkShape(shape: XmlElement): boolean;
33
+ /**
34
+ * Walk a parsed `<w:hdr>` element and return the watermark it carries,
35
+ * or `undefined` when none is present. Scans every candidate shape /
36
+ * anchor in the header so a non-watermark shape (e.g. a logo image)
37
+ * earlier in document order does not shadow the real watermark.
38
+ *
39
+ * Returns the modeled `Watermark`, the verbatim XML of the hosting
40
+ * paragraph (so the serializer can replay it byte-exact), and a
41
+ * reference to that paragraph so the regular body parser can skip it.
42
+ */
43
+ declare function parseWatermark(header: XmlElement): ParsedWatermark | undefined;
44
+ //#endregion
45
+ export { ParsedWatermark, isWatermarkShape, parseWatermark };