ooxml-core 1.8.3 → 1.9.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 (308) hide show
  1. package/dist/PptxHandler-AT7FVG5Q.mjs +2 -0
  2. package/dist/{PptxHandler-BL4B7CZO.mjs → PptxHandler-EX4WBIQQ.mjs} +2 -2
  3. package/dist/PptxHandler-VFSCECPL.cjs +11 -0
  4. package/dist/automation/index.cjs +7380 -4682
  5. package/dist/automation/index.mjs +7380 -4682
  6. package/dist/chunk-AT66SA5M.cjs +44423 -0
  7. package/dist/{chunk-TTPZITQN.mjs → chunk-FIELY5PI.mjs} +1 -1
  8. package/dist/{chunk-ZAP5WLEN.mjs → chunk-IGOA57LE.mjs} +1 -1
  9. package/dist/chunk-LCS3J3QI.mjs +87604 -0
  10. package/dist/{chunk-NIHPA63A.mjs → chunk-M76PHYRR.mjs} +54 -37
  11. package/dist/chunk-OB277ZGE.mjs +44107 -0
  12. package/dist/{chunk-GAGSCAR3.mjs → chunk-OXHMZS7B.mjs} +552 -178
  13. package/dist/chunk-SWF7KVL5.cjs +87610 -0
  14. package/dist/{chunk-Z7IQR4S4.mjs → chunk-WSO4T2LJ.mjs} +246 -21
  15. package/dist/docx/block-parser.d.ts.map +1 -1
  16. package/dist/docx/cell-blocks.d.ts +4 -0
  17. package/dist/docx/cell-blocks.d.ts.map +1 -0
  18. package/dist/docx/document-paragraphs.d.ts.map +1 -1
  19. package/dist/docx/document-parts.d.ts +2 -0
  20. package/dist/docx/document-parts.d.ts.map +1 -1
  21. package/dist/docx/embedded.cjs +189 -20
  22. package/dist/docx/embedded.mjs +189 -20
  23. package/dist/docx/index.cjs +219 -24
  24. package/dist/docx/index.mjs +219 -24
  25. package/dist/docx/layout/adapt-table.d.ts.map +1 -1
  26. package/dist/docx/layout/adapter.d.ts.map +1 -1
  27. package/dist/docx/layout/flow-paragraph.d.ts +5 -0
  28. package/dist/docx/layout/flow-paragraph.d.ts.map +1 -1
  29. package/dist/docx/layout/flow-table.d.ts +2 -1
  30. package/dist/docx/layout/flow-table.d.ts.map +1 -1
  31. package/dist/docx/layout/footnote-columns.d.ts +22 -0
  32. package/dist/docx/layout/footnote-columns.d.ts.map +1 -0
  33. package/dist/docx/layout/footnote-flow.d.ts +27 -0
  34. package/dist/docx/layout/footnote-flow.d.ts.map +1 -0
  35. package/dist/docx/layout/footnote-split.d.ts +7 -0
  36. package/dist/docx/layout/footnote-split.d.ts.map +1 -0
  37. package/dist/docx/layout/index.cjs +1099 -92
  38. package/dist/docx/layout/index.mjs +1099 -92
  39. package/dist/docx/layout/input.d.ts +17 -1
  40. package/dist/docx/layout/input.d.ts.map +1 -1
  41. package/dist/docx/layout/legacy-footnote-flow.d.ts +18 -0
  42. package/dist/docx/layout/legacy-footnote-flow.d.ts.map +1 -0
  43. package/dist/docx/layout/line-metrics.d.ts.map +1 -1
  44. package/dist/docx/layout/page-cursor.d.ts +13 -8
  45. package/dist/docx/layout/page-cursor.d.ts.map +1 -1
  46. package/dist/docx/layout/page-flow.d.ts.map +1 -1
  47. package/dist/docx/layout/paragraph-layout.d.ts.map +1 -1
  48. package/dist/docx/layout/paragraph-tokens.d.ts +2 -0
  49. package/dist/docx/layout/paragraph-tokens.d.ts.map +1 -1
  50. package/dist/docx/layout/reference-footnotes.d.ts +7 -0
  51. package/dist/docx/layout/reference-footnotes.d.ts.map +1 -0
  52. package/dist/docx/layout/result.d.ts +31 -0
  53. package/dist/docx/layout/result.d.ts.map +1 -1
  54. package/dist/docx/layout/section-flow.d.ts +2 -0
  55. package/dist/docx/layout/section-flow.d.ts.map +1 -1
  56. package/dist/docx/layout/table-cell-layout.d.ts +11 -0
  57. package/dist/docx/layout/table-cell-layout.d.ts.map +1 -0
  58. package/dist/docx/layout/table-footnotes.d.ts +27 -0
  59. package/dist/docx/layout/table-footnotes.d.ts.map +1 -0
  60. package/dist/docx/layout/table-layout.d.ts +10 -4
  61. package/dist/docx/layout/table-layout.d.ts.map +1 -1
  62. package/dist/docx/load/index.cjs +194 -25
  63. package/dist/docx/load/index.mjs +194 -25
  64. package/dist/docx/model-run.d.ts +2 -0
  65. package/dist/docx/model-run.d.ts.map +1 -1
  66. package/dist/docx/model.d.ts +7 -0
  67. package/dist/docx/model.d.ts.map +1 -1
  68. package/dist/docx/notes.d.ts +5 -0
  69. package/dist/docx/notes.d.ts.map +1 -1
  70. package/dist/docx/parse-table.d.ts.map +1 -1
  71. package/dist/docx/parse.d.ts.map +1 -1
  72. package/dist/docx/save.d.ts.map +1 -1
  73. package/dist/docx/section-model.d.ts +2 -0
  74. package/dist/docx/section-model.d.ts.map +1 -1
  75. package/dist/docx/sections.d.ts.map +1 -1
  76. package/dist/docx/settings.d.ts +2 -0
  77. package/dist/docx/settings.d.ts.map +1 -1
  78. package/dist/docx/table-model.d.ts +3 -1
  79. package/dist/docx/table-model.d.ts.map +1 -1
  80. package/dist/docx/ui/index.cjs +55 -0
  81. package/dist/docx/ui/index.d.ts +1 -0
  82. package/dist/docx/ui/index.d.ts.map +1 -1
  83. package/dist/docx/ui/index.mjs +55 -1
  84. package/dist/docx/ui/table-structure-guard.d.ts +4 -0
  85. package/dist/docx/ui/table-structure-guard.d.ts.map +1 -0
  86. package/dist/docx/write-footnote-columns.d.ts +3 -0
  87. package/dist/docx/write-footnote-columns.d.ts.map +1 -0
  88. package/dist/docx/write-notes.d.ts.map +1 -1
  89. package/dist/docx/write-run.d.ts.map +1 -1
  90. package/dist/docx/write-sections.d.ts.map +1 -1
  91. package/dist/index.cjs +8 -5
  92. package/dist/index.mjs +8 -5
  93. package/dist/opc/clone-part-graph.d.ts +4 -0
  94. package/dist/opc/clone-part-graph.d.ts.map +1 -1
  95. package/dist/opc/index.cjs +8 -5
  96. package/dist/opc/index.mjs +8 -5
  97. package/dist/pptx/automation/index.cjs +621 -207
  98. package/dist/pptx/automation/index.d.ts +3 -3
  99. package/dist/pptx/automation/index.mjs +5 -5
  100. package/dist/pptx/chunks/{index-Cn-GzYGp.d.ts → index-B4cnSPNz.d.ts} +33 -4
  101. package/dist/pptx/chunks/index-B4cnSPNz.d.ts.map +1 -0
  102. package/dist/pptx/chunks/{index-CKIUurnd.d.ts → index-BZh-IMkN.d.ts} +14 -9
  103. package/dist/pptx/chunks/{index-CKIUurnd.d.ts.map → index-BZh-IMkN.d.ts.map} +1 -1
  104. package/dist/pptx/chunks/{text-operations-BHfAm5K9.d.ts → text-operations-BLodkuXE.d.ts} +29 -12
  105. package/dist/pptx/chunks/text-operations-BLodkuXE.d.ts.map +1 -0
  106. package/dist/pptx/cli/index.cjs +622 -213
  107. package/dist/pptx/cli/index.d.ts +1 -1
  108. package/dist/pptx/cli/index.mjs +4 -4
  109. package/dist/pptx/converter/index.cjs +53 -36
  110. package/dist/pptx/converter/index.d.ts +1 -1
  111. package/dist/pptx/converter/index.mjs +2 -2
  112. package/dist/pptx/editor/render/find-replace.cjs +416 -45
  113. package/dist/pptx/editor/render/find-replace.d.ts +35 -4
  114. package/dist/pptx/editor/render/find-replace.d.ts.map +1 -1
  115. package/dist/pptx/editor/render/find-replace.mjs +416 -46
  116. package/dist/pptx/editor/render/slide-operations.cjs +87 -0
  117. package/dist/pptx/editor/render/slide-operations.d.ts +17 -1
  118. package/dist/pptx/editor/render/slide-operations.d.ts.map +1 -1
  119. package/dist/pptx/editor/render/slide-operations.mjs +83 -1
  120. package/dist/pptx/editor/render/slide-search.cjs +6 -10
  121. package/dist/pptx/editor/render/slide-search.d.ts +1 -1
  122. package/dist/pptx/editor/render/slide-search.mjs +6 -10
  123. package/dist/pptx/editor/render/template-editing.d.ts +1 -1
  124. package/dist/pptx/editor/render/template-editing.d.ts.map +1 -1
  125. package/dist/pptx/index.cjs +889 -237
  126. package/dist/pptx/index.d.ts +4 -4
  127. package/dist/pptx/index.mjs +5 -5
  128. package/dist/teams/index.cjs +672 -37
  129. package/dist/teams/index.mjs +672 -37
  130. package/dist/visio/accessibility.d.ts +10 -0
  131. package/dist/visio/accessibility.d.ts.map +1 -0
  132. package/dist/visio/cell-formula.d.ts +2 -0
  133. package/dist/visio/cell-formula.d.ts.map +1 -1
  134. package/dist/visio/connector-curve-aligned.d.ts +5 -0
  135. package/dist/visio/connector-curve-aligned.d.ts.map +1 -0
  136. package/dist/visio/connector-curve-spans.d.ts +14 -0
  137. package/dist/visio/connector-curve-spans.d.ts.map +1 -0
  138. package/dist/visio/connector-jumps.d.ts +5 -0
  139. package/dist/visio/connector-jumps.d.ts.map +1 -0
  140. package/dist/visio/connector-route-walk.d.ts +2 -1
  141. package/dist/visio/connector-route-walk.d.ts.map +1 -1
  142. package/dist/visio/edit-alt-text-scope.d.ts +5 -0
  143. package/dist/visio/edit-alt-text-scope.d.ts.map +1 -0
  144. package/dist/visio/edit-alt-text.d.ts +3 -0
  145. package/dist/visio/edit-alt-text.d.ts.map +1 -0
  146. package/dist/visio/edit-commands.d.ts +7 -2
  147. package/dist/visio/edit-commands.d.ts.map +1 -1
  148. package/dist/visio/edit-formatting-commands.d.ts +5 -0
  149. package/dist/visio/edit-formatting-commands.d.ts.map +1 -1
  150. package/dist/visio/edit-formatting-paint.d.ts.map +1 -1
  151. package/dist/visio/edit-formatting-scope.d.ts.map +1 -1
  152. package/dist/visio/edit-line-jump-cache.d.ts +4 -0
  153. package/dist/visio/edit-line-jump-cache.d.ts.map +1 -0
  154. package/dist/visio/edit-master-index.d.ts.map +1 -1
  155. package/dist/visio/edit-metadata-commands.d.ts +10 -2
  156. package/dist/visio/edit-metadata-commands.d.ts.map +1 -1
  157. package/dist/visio/edit-metadata.d.ts +3 -1
  158. package/dist/visio/edit-metadata.d.ts.map +1 -1
  159. package/dist/visio/edit-page-alt-text.d.ts +4 -0
  160. package/dist/visio/edit-page-alt-text.d.ts.map +1 -0
  161. package/dist/visio/edit-page-layout.d.ts.map +1 -1
  162. package/dist/visio/edit-page-rename.d.ts.map +1 -1
  163. package/dist/visio/edit-page-setup-commands.d.ts +7 -1
  164. package/dist/visio/edit-page-setup-commands.d.ts.map +1 -1
  165. package/dist/visio/edit-page-size.d.ts.map +1 -1
  166. package/dist/visio/edit-pages.d.ts.map +1 -1
  167. package/dist/visio/edit-recalculate-index.d.ts.map +1 -1
  168. package/dist/visio/edit-scope.d.ts.map +1 -1
  169. package/dist/visio/edit-shape-create.d.ts.map +1 -1
  170. package/dist/visio/edit-stencil-connector-write.d.ts.map +1 -1
  171. package/dist/visio/edit-style-admission.d.ts.map +1 -1
  172. package/dist/visio/edit-text.d.ts.map +1 -1
  173. package/dist/visio/edit.d.ts +1 -1
  174. package/dist/visio/edit.d.ts.map +1 -1
  175. package/dist/visio/index.cjs +1091 -233
  176. package/dist/visio/index.d.ts +2 -1
  177. package/dist/visio/index.d.ts.map +1 -1
  178. package/dist/visio/index.mjs +1091 -234
  179. package/dist/visio/line-jumps.d.ts +1 -5
  180. package/dist/visio/line-jumps.d.ts.map +1 -1
  181. package/dist/visio/model.d.ts +13 -0
  182. package/dist/visio/model.d.ts.map +1 -1
  183. package/dist/visio/page-layout.d.ts +11 -2
  184. package/dist/visio/page-layout.d.ts.map +1 -1
  185. package/dist/visio/parser.d.ts.map +1 -1
  186. package/dist/visio/shape-metadata.d.ts +6 -0
  187. package/dist/visio/shape-metadata.d.ts.map +1 -1
  188. package/dist/visio/shapes.d.ts.map +1 -1
  189. package/dist/visio/text-field-case.d.ts +2 -0
  190. package/dist/visio/text-field-case.d.ts.map +1 -0
  191. package/dist/visio/text-field-display.d.ts.map +1 -1
  192. package/dist/visio/text-field-numeric.d.ts +4 -0
  193. package/dist/visio/text-field-numeric.d.ts.map +1 -0
  194. package/dist/visio/ui/connector-preview.d.ts +1 -1
  195. package/dist/visio/ui/connector-preview.d.ts.map +1 -1
  196. package/dist/visio/ui/data-graphic-rules.d.ts +2 -0
  197. package/dist/visio/ui/data-graphic-rules.d.ts.map +1 -1
  198. package/dist/visio/ui/data-graphics.d.ts +3 -2
  199. package/dist/visio/ui/data-graphics.d.ts.map +1 -1
  200. package/dist/visio/ui/edit-commands.d.ts.map +1 -1
  201. package/dist/visio/ui/index.cjs +16898 -15855
  202. package/dist/visio/ui/index.mjs +16898 -15856
  203. package/dist/visio/ui/scene-details.d.ts.map +1 -1
  204. package/dist/visio/ui/scene-validation.d.ts.map +1 -1
  205. package/dist/visio/ui/snapshot-scene.d.ts +2 -1
  206. package/dist/visio/ui/snapshot-scene.d.ts.map +1 -1
  207. package/dist/visio/xml-attribute-whitespace.d.ts +5 -0
  208. package/dist/visio/xml-attribute-whitespace.d.ts.map +1 -0
  209. package/dist/xlsx/edit/index.d.ts +1 -0
  210. package/dist/xlsx/edit/index.d.ts.map +1 -1
  211. package/dist/xlsx/edit/insert-guard.d.ts.map +1 -1
  212. package/dist/xlsx/edit/merge.d.ts.map +1 -1
  213. package/dist/xlsx/edit/page-breaks.d.ts +5 -0
  214. package/dist/xlsx/edit/page-breaks.d.ts.map +1 -0
  215. package/dist/xlsx/edit/pivots.d.ts +8 -0
  216. package/dist/xlsx/edit/pivots.d.ts.map +1 -0
  217. package/dist/xlsx/edit/print-titles.d.ts +7 -0
  218. package/dist/xlsx/edit/print-titles.d.ts.map +1 -0
  219. package/dist/xlsx/edit/session.d.ts.map +1 -1
  220. package/dist/xlsx/edit/sheets.d.ts.map +1 -1
  221. package/dist/xlsx/edit/shift-formulas.d.ts.map +1 -1
  222. package/dist/xlsx/edit/shift-sheet.d.ts.map +1 -1
  223. package/dist/xlsx/edit/sparkline-ranges.d.ts +11 -0
  224. package/dist/xlsx/edit/sparkline-ranges.d.ts.map +1 -0
  225. package/dist/xlsx/edit/sparkline-xml.d.ts +13 -0
  226. package/dist/xlsx/edit/sparkline-xml.d.ts.map +1 -0
  227. package/dist/xlsx/edit/sparklines.d.ts +16 -0
  228. package/dist/xlsx/edit/sparklines.d.ts.map +1 -0
  229. package/dist/xlsx/edit/table-edits.d.ts.map +1 -1
  230. package/dist/xlsx/edit/tables.d.ts.map +1 -1
  231. package/dist/xlsx/edit/types.d.ts +22 -1
  232. package/dist/xlsx/edit/types.d.ts.map +1 -1
  233. package/dist/xlsx/formula/functions/text-regex.d.ts.map +1 -1
  234. package/dist/xlsx/index.cjs +3415 -1374
  235. package/dist/xlsx/index.d.ts +1 -0
  236. package/dist/xlsx/index.d.ts.map +1 -1
  237. package/dist/xlsx/index.mjs +3396 -1375
  238. package/dist/xlsx/layout/cell-view.d.ts +2 -0
  239. package/dist/xlsx/layout/cell-view.d.ts.map +1 -1
  240. package/dist/xlsx/layout/header-footer.d.ts +58 -0
  241. package/dist/xlsx/layout/header-footer.d.ts.map +1 -0
  242. package/dist/xlsx/layout/index.d.ts +5 -0
  243. package/dist/xlsx/layout/index.d.ts.map +1 -1
  244. package/dist/xlsx/layout/print-breaks.d.ts +11 -0
  245. package/dist/xlsx/layout/print-breaks.d.ts.map +1 -0
  246. package/dist/xlsx/layout/print-layout.d.ts +34 -0
  247. package/dist/xlsx/layout/print-layout.d.ts.map +1 -0
  248. package/dist/xlsx/layout/print-merges.d.ts +18 -0
  249. package/dist/xlsx/layout/print-merges.d.ts.map +1 -0
  250. package/dist/xlsx/layout/print-repeat.d.ts +12 -0
  251. package/dist/xlsx/layout/print-repeat.d.ts.map +1 -0
  252. package/dist/xlsx/layout/print-titles.d.ts +20 -0
  253. package/dist/xlsx/layout/print-titles.d.ts.map +1 -0
  254. package/dist/xlsx/layout/sparkline-data.d.ts.map +1 -1
  255. package/dist/xlsx/layout/sparkline-view.d.ts.map +1 -1
  256. package/dist/xlsx/load/index.cjs +7831 -6961
  257. package/dist/xlsx/load/index.mjs +7831 -6961
  258. package/dist/xlsx/model-pivots.d.ts +46 -0
  259. package/dist/xlsx/model-pivots.d.ts.map +1 -0
  260. package/dist/xlsx/model.d.ts +5 -0
  261. package/dist/xlsx/model.d.ts.map +1 -1
  262. package/dist/xlsx/pivot/admission.d.ts +5 -0
  263. package/dist/xlsx/pivot/admission.d.ts.map +1 -0
  264. package/dist/xlsx/pivot/aggregate.d.ts +19 -0
  265. package/dist/xlsx/pivot/aggregate.d.ts.map +1 -0
  266. package/dist/xlsx/pivot/cache-xml.d.ts +9 -0
  267. package/dist/xlsx/pivot/cache-xml.d.ts.map +1 -0
  268. package/dist/xlsx/pivot/data.d.ts +12 -0
  269. package/dist/xlsx/pivot/data.d.ts.map +1 -0
  270. package/dist/xlsx/pivot/hierarchy.d.ts +7 -0
  271. package/dist/xlsx/pivot/hierarchy.d.ts.map +1 -0
  272. package/dist/xlsx/pivot/index.d.ts +3 -0
  273. package/dist/xlsx/pivot/index.d.ts.map +1 -0
  274. package/dist/xlsx/pivot/read.d.ts +5 -0
  275. package/dist/xlsx/pivot/read.d.ts.map +1 -0
  276. package/dist/xlsx/pivot/table-xml.d.ts +5 -0
  277. package/dist/xlsx/pivot/table-xml.d.ts.map +1 -0
  278. package/dist/xlsx/pivot/write.d.ts +11 -0
  279. package/dist/xlsx/pivot/write.d.ts.map +1 -0
  280. package/dist/xlsx/read/load.d.ts.map +1 -1
  281. package/dist/xlsx/read/sheet-props.d.ts.map +1 -1
  282. package/dist/xlsx/ui/commands/i18n/index.d.ts.map +1 -1
  283. package/dist/xlsx/ui/commands/i18n/navigation.d.ts.map +1 -1
  284. package/dist/xlsx/ui/commands/i18n/pivots.d.ts +3 -0
  285. package/dist/xlsx/ui/commands/i18n/pivots.d.ts.map +1 -0
  286. package/dist/xlsx/ui/commands/i18n/print-layout.d.ts +3 -0
  287. package/dist/xlsx/ui/commands/i18n/print-layout.d.ts.map +1 -0
  288. package/dist/xlsx/ui/commands/i18n/sparklines.d.ts +3 -0
  289. package/dist/xlsx/ui/commands/i18n/sparklines.d.ts.map +1 -0
  290. package/dist/xlsx/ui/commands/i18n/tools.d.ts.map +1 -1
  291. package/dist/xlsx/ui/commands/page-breaks.d.ts +3 -0
  292. package/dist/xlsx/ui/commands/page-breaks.d.ts.map +1 -0
  293. package/dist/xlsx/ui/index.cjs +2451 -737
  294. package/dist/xlsx/ui/index.d.ts +1 -0
  295. package/dist/xlsx/ui/index.d.ts.map +1 -1
  296. package/dist/xlsx/ui/index.mjs +2451 -738
  297. package/dist/xlsx/write/chart-cache.d.ts +8 -0
  298. package/dist/xlsx/write/chart-cache.d.ts.map +1 -0
  299. package/dist/xlsx/write/page-setup.d.ts.map +1 -1
  300. package/dist/xlsx/write/save.d.ts.map +1 -1
  301. package/dist/xlsx/write/sheet-parts.d.ts +1 -0
  302. package/dist/xlsx/write/sheet-parts.d.ts.map +1 -1
  303. package/dist/xlsx/write/workbook-part.d.ts +1 -1
  304. package/dist/xlsx/write/workbook-part.d.ts.map +1 -1
  305. package/dist/xlsx/write/worksheet.d.ts.map +1 -1
  306. package/package.json +1 -1
  307. package/dist/pptx/chunks/index-Cn-GzYGp.d.ts.map +0 -1
  308. package/dist/pptx/chunks/text-operations-BHfAm5K9.d.ts.map +0 -1
@@ -5507,6 +5507,10 @@ function createRun(doc, run, base, old, allocator) {
5507
5507
  node.appendChild(code);
5508
5508
  return node;
5509
5509
  }
5510
+ if (run.noteSeparator) {
5511
+ node.appendChild(makeW(doc, run.noteSeparator));
5512
+ return node;
5513
+ }
5510
5514
  if (run.noteMark) {
5511
5515
  node.appendChild(makeW(doc, run.noteMark === "footnote" ? "footnoteRef" : "endnoteRef"));
5512
5516
  return node;
@@ -5973,6 +5977,7 @@ function documentBlockLists(model) {
5973
5977
  (slots) => Object.values(slots ?? {}).flatMap((content) => content ? [content.blocks] : [])
5974
5978
  )
5975
5979
  ),
5980
+ ...Object.values(model.footnoteSeparators ?? {}).map((note) => note.blocks),
5976
5981
  ...[...model.footnotes ?? [], ...model.endnotes ?? []].map((note) => note.blocks)
5977
5982
  ];
5978
5983
  }
@@ -8012,6 +8017,55 @@ var DirtyState = class {
8012
8017
  this.changed(dirty);
8013
8018
  }
8014
8019
  };
8020
+ function tableStructureGuardPlugin() {
8021
+ const cache = /* @__PURE__ */ new WeakMap();
8022
+ const tables = (node) => {
8023
+ const prior = cache.get(node);
8024
+ if (prior) return prior;
8025
+ const result = /* @__PURE__ */ new Map();
8026
+ if (node.type.name === "table") result.set(String(node.attrs.id), node);
8027
+ else if (!node.isTextblock && !node.isLeaf)
8028
+ node.forEach((child) => {
8029
+ for (const [id, table] of tables(child)) result.set(id, table);
8030
+ });
8031
+ cache.set(node, result);
8032
+ return result;
8033
+ };
8034
+ const sameStructure = (before, after) => {
8035
+ if (before.childCount !== after.childCount) return false;
8036
+ for (let rowIndex = 0; rowIndex < before.childCount; rowIndex++) {
8037
+ const row = before.child(rowIndex), next = after.child(rowIndex);
8038
+ if (row.childCount !== next.childCount) return false;
8039
+ for (let cellIndex = 0; cellIndex < row.childCount; cellIndex++) {
8040
+ const cell = row.child(cellIndex), target = next.child(cellIndex);
8041
+ if (cell.type !== target.type || cell.childCount !== target.childCount) return false;
8042
+ for (const attr2 of ["sourceCellKey", "colspan", "rowspan", "widthTwips"])
8043
+ if (cell.attrs[attr2] !== target.attrs[attr2]) return false;
8044
+ for (let i = 0; i < cell.childCount; i++) {
8045
+ const child = cell.child(i), other = target.child(i);
8046
+ if (child.type !== other.type) return false;
8047
+ if (child.type.name === "paragraph") {
8048
+ if (child.attrs.id !== other.attrs.id) return false;
8049
+ } else if (!child.eq(other)) return false;
8050
+ }
8051
+ }
8052
+ }
8053
+ return true;
8054
+ };
8055
+ return new prosemirrorState.Plugin({
8056
+ filterTransaction(transaction, state) {
8057
+ if (!transaction.docChanged) return true;
8058
+ const after = tables(transaction.doc);
8059
+ for (const [id, before] of tables(state.doc)) {
8060
+ if (before.attrs.structureEditable !== false) continue;
8061
+ const target = after.get(id);
8062
+ if (target && target !== before && (target.attrs.structureEditable !== false || !sameStructure(before, target)))
8063
+ return false;
8064
+ }
8065
+ return true;
8066
+ }
8067
+ });
8068
+ }
8015
8069
  var SectionPartsStep = class _SectionPartsStep extends prosemirrorTransform.DocAttrStep {
8016
8070
  constructor(value) {
8017
8071
  super("sectionParts", value);
@@ -10600,6 +10654,7 @@ exports.setReviewRecordingPreferences = setReviewRecordingPreferences;
10600
10654
  exports.svgMarkupSpec = svgMarkupSpec;
10601
10655
  exports.swatchColor = swatchColor;
10602
10656
  exports.tableCellStyle = tableCellStyle;
10657
+ exports.tableStructureGuardPlugin = tableStructureGuardPlugin;
10603
10658
  exports.tableStyle = tableStyle;
10604
10659
  exports.themeDrawing = themeDrawing;
10605
10660
  exports.themeToCssVars = themeToCssVars;
@@ -14,6 +14,7 @@ export * from './yjs-presence.js';
14
14
  export * from './defined.js';
15
15
  export * from './dirty-state.js';
16
16
  export * from './field-guard.js';
17
+ export * from './table-structure-guard.js';
17
18
  export * from './field-results.js';
18
19
  export * from './header-footer-history.js';
19
20
  export * from './hard-break-command.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../docx/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACvE,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../docx/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACvE,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -5485,6 +5485,10 @@ function createRun(doc, run, base, old, allocator) {
5485
5485
  node.appendChild(code);
5486
5486
  return node;
5487
5487
  }
5488
+ if (run.noteSeparator) {
5489
+ node.appendChild(makeW(doc, run.noteSeparator));
5490
+ return node;
5491
+ }
5488
5492
  if (run.noteMark) {
5489
5493
  node.appendChild(makeW(doc, run.noteMark === "footnote" ? "footnoteRef" : "endnoteRef"));
5490
5494
  return node;
@@ -5951,6 +5955,7 @@ function documentBlockLists(model) {
5951
5955
  (slots) => Object.values(slots ?? {}).flatMap((content) => content ? [content.blocks] : [])
5952
5956
  )
5953
5957
  ),
5958
+ ...Object.values(model.footnoteSeparators ?? {}).map((note) => note.blocks),
5954
5959
  ...[...model.footnotes ?? [], ...model.endnotes ?? []].map((note) => note.blocks)
5955
5960
  ];
5956
5961
  }
@@ -7990,6 +7995,55 @@ var DirtyState = class {
7990
7995
  this.changed(dirty);
7991
7996
  }
7992
7997
  };
7998
+ function tableStructureGuardPlugin() {
7999
+ const cache = /* @__PURE__ */ new WeakMap();
8000
+ const tables = (node) => {
8001
+ const prior = cache.get(node);
8002
+ if (prior) return prior;
8003
+ const result = /* @__PURE__ */ new Map();
8004
+ if (node.type.name === "table") result.set(String(node.attrs.id), node);
8005
+ else if (!node.isTextblock && !node.isLeaf)
8006
+ node.forEach((child) => {
8007
+ for (const [id, table] of tables(child)) result.set(id, table);
8008
+ });
8009
+ cache.set(node, result);
8010
+ return result;
8011
+ };
8012
+ const sameStructure = (before, after) => {
8013
+ if (before.childCount !== after.childCount) return false;
8014
+ for (let rowIndex = 0; rowIndex < before.childCount; rowIndex++) {
8015
+ const row = before.child(rowIndex), next = after.child(rowIndex);
8016
+ if (row.childCount !== next.childCount) return false;
8017
+ for (let cellIndex = 0; cellIndex < row.childCount; cellIndex++) {
8018
+ const cell = row.child(cellIndex), target = next.child(cellIndex);
8019
+ if (cell.type !== target.type || cell.childCount !== target.childCount) return false;
8020
+ for (const attr2 of ["sourceCellKey", "colspan", "rowspan", "widthTwips"])
8021
+ if (cell.attrs[attr2] !== target.attrs[attr2]) return false;
8022
+ for (let i = 0; i < cell.childCount; i++) {
8023
+ const child = cell.child(i), other = target.child(i);
8024
+ if (child.type !== other.type) return false;
8025
+ if (child.type.name === "paragraph") {
8026
+ if (child.attrs.id !== other.attrs.id) return false;
8027
+ } else if (!child.eq(other)) return false;
8028
+ }
8029
+ }
8030
+ }
8031
+ return true;
8032
+ };
8033
+ return new Plugin({
8034
+ filterTransaction(transaction, state) {
8035
+ if (!transaction.docChanged) return true;
8036
+ const after = tables(transaction.doc);
8037
+ for (const [id, before] of tables(state.doc)) {
8038
+ if (before.attrs.structureEditable !== false) continue;
8039
+ const target = after.get(id);
8040
+ if (target && target !== before && (target.attrs.structureEditable !== false || !sameStructure(before, target)))
8041
+ return false;
8042
+ }
8043
+ return true;
8044
+ }
8045
+ });
8046
+ }
7993
8047
  var SectionPartsStep = class _SectionPartsStep extends DocAttrStep {
7994
8048
  constructor(value) {
7995
8049
  super("sectionParts", value);
@@ -10458,4 +10512,4 @@ function fitZoomPercent(mode, viewport, page) {
10458
10512
  return Math.max(10, Math.min(500, Math.floor(ratio * 100)));
10459
10513
  }
10460
10514
 
10461
- export { CollaborationAuthority, CollaborationClient, DirtyState, EDITOR_THEME_MODES, FIELD_RESULT_REPAIR_META, HEADER_FOOTER_INPUT, NotePartsStep, PAGE_GAP, PARAGRAPH_KEEP_KEYS, REMOTE_TRANSACTION_META, RIBBON_ACTION_IDS, RIBBON_ACTION_LABELS, SectionPartsStep, THEME_KEYS, WordYjsCollaboration, WordYjsComments, WordYjsMedia, acceptAllChanges, acceptChangeAtCursor, acceptRevisionRange, addComment, appendInlineNode, applyMarkFormatting, applyRunFormattingPatch, applyThemeColors, applyWordLink, authorColor, backstageFocus, chartNodeSpec, clearDirectRunFormatting, collectRevisionRanges, commentAnchors, commentHistoryAttributes, commentIdsAtSelection, commentIdsFromMarks, commentIdsFromNode, commentThreadsFromDoc, countWords, createCollaborationIdGenerator, createToggleFormat, cssBorderSide, darkTheme, deleteAroundMarkers, deleteComment, deleteFieldSelection, dispatchIsolatedCommand, expectDefined, explicitOffFields, extraRunFields, extraRunProperties, fieldGuardPlugin, fieldMarkerNodeSpec, fieldResultRanges, fieldsBalanced, fitZoomPercent, formattingRevision, freezeBatch, goToComment, goToNextChange, goToPreviousChange, hardBreakNodeSpec, hasAnyChange, hasChangeAtCursor, hasNoteRevisions, imageNodeSpec, inlineNodeRun, insertWordHardBreak, isNavigableHref, isRibbonActionId, isWordYjsRemoteTransaction, ligatureCss, ligatureStyle, lightTheme, linkFromMarks, linkMarkSpec, markSpecs, marksForRun, moveName, nodeChart, nodeNumbering, normalizeRibbonActions, normalizeThemeMode, notePartsJson, noteReferenceNodeSpec, pageBreakNodeSpec, paragraphAttrs, paragraphBoxCss, paragraphFormattingRevision, paragraphFromAttrs, parseBatch, parseBordersJson, placementClass, refreshWordYjsPresence, rejectAllChanges, rejectChangeAtCursor, rejectRevisionRange, removeCommentAnchor, removeCommentThread, removeWordLink, repairCollaborativeDocumentIds, repairCollaborativeParagraphIds, replaceAroundMarkers, replyToComment, resolveCellVisuals, resolveComment, resolveNoteRevisions, restoreNoteParts, restoreSectionParts, reviewMarks, ribbonActionIdForLabel, runPropertiesMark, runToInlineNodes, sameJson2 as sameJson, sameRuns, sectionPartsJson, setCommentThreads, setReviewRecordingPreferences, svgMarkupSpec, swatchColor, tableCellStyle, tableStyle, themeDrawing, themeToCssVars, toggleTrackChanges, toggleTrackFormatting, toggleTrackMoves, trackChangesPlugin, trackChangesPluginKey, updateCommentThreads, wordHighlightColors, wordLinkRangeAt, wordYjsPluginKey, wordYjsPresencePlugin, wordYjsRedo, wordYjsUndo };
10515
+ export { CollaborationAuthority, CollaborationClient, DirtyState, EDITOR_THEME_MODES, FIELD_RESULT_REPAIR_META, HEADER_FOOTER_INPUT, NotePartsStep, PAGE_GAP, PARAGRAPH_KEEP_KEYS, REMOTE_TRANSACTION_META, RIBBON_ACTION_IDS, RIBBON_ACTION_LABELS, SectionPartsStep, THEME_KEYS, WordYjsCollaboration, WordYjsComments, WordYjsMedia, acceptAllChanges, acceptChangeAtCursor, acceptRevisionRange, addComment, appendInlineNode, applyMarkFormatting, applyRunFormattingPatch, applyThemeColors, applyWordLink, authorColor, backstageFocus, chartNodeSpec, clearDirectRunFormatting, collectRevisionRanges, commentAnchors, commentHistoryAttributes, commentIdsAtSelection, commentIdsFromMarks, commentIdsFromNode, commentThreadsFromDoc, countWords, createCollaborationIdGenerator, createToggleFormat, cssBorderSide, darkTheme, deleteAroundMarkers, deleteComment, deleteFieldSelection, dispatchIsolatedCommand, expectDefined, explicitOffFields, extraRunFields, extraRunProperties, fieldGuardPlugin, fieldMarkerNodeSpec, fieldResultRanges, fieldsBalanced, fitZoomPercent, formattingRevision, freezeBatch, goToComment, goToNextChange, goToPreviousChange, hardBreakNodeSpec, hasAnyChange, hasChangeAtCursor, hasNoteRevisions, imageNodeSpec, inlineNodeRun, insertWordHardBreak, isNavigableHref, isRibbonActionId, isWordYjsRemoteTransaction, ligatureCss, ligatureStyle, lightTheme, linkFromMarks, linkMarkSpec, markSpecs, marksForRun, moveName, nodeChart, nodeNumbering, normalizeRibbonActions, normalizeThemeMode, notePartsJson, noteReferenceNodeSpec, pageBreakNodeSpec, paragraphAttrs, paragraphBoxCss, paragraphFormattingRevision, paragraphFromAttrs, parseBatch, parseBordersJson, placementClass, refreshWordYjsPresence, rejectAllChanges, rejectChangeAtCursor, rejectRevisionRange, removeCommentAnchor, removeCommentThread, removeWordLink, repairCollaborativeDocumentIds, repairCollaborativeParagraphIds, replaceAroundMarkers, replyToComment, resolveCellVisuals, resolveComment, resolveNoteRevisions, restoreNoteParts, restoreSectionParts, reviewMarks, ribbonActionIdForLabel, runPropertiesMark, runToInlineNodes, sameJson2 as sameJson, sameRuns, sectionPartsJson, setCommentThreads, setReviewRecordingPreferences, svgMarkupSpec, swatchColor, tableCellStyle, tableStructureGuardPlugin, tableStyle, themeDrawing, themeToCssVars, toggleTrackChanges, toggleTrackFormatting, toggleTrackMoves, trackChangesPlugin, trackChangesPluginKey, updateCommentThreads, wordHighlightColors, wordLinkRangeAt, wordYjsPluginKey, wordYjsPresencePlugin, wordYjsRedo, wordYjsUndo };
@@ -0,0 +1,4 @@
1
+ import { Plugin } from 'prosemirror-state';
2
+ /** Enforce the serializer's existing structure boundary before unsupported edits enter history. */
3
+ export declare function tableStructureGuardPlugin(): Plugin;
4
+ //# sourceMappingURL=table-structure-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-structure-guard.d.ts","sourceRoot":"","sources":["../../../docx/ui/table-structure-guard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,mGAAmG;AACnG,wBAAgB,yBAAyB,IAAI,MAAM,CAwDlD"}
@@ -0,0 +1,3 @@
1
+ import { type XmlDocument, type XmlElement } from './xml.js';
2
+ export declare function writeFootnoteColumns(doc: XmlDocument, section: XmlElement, value: number | undefined): void;
3
+ //# sourceMappingURL=write-footnote-columns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-footnote-columns.d.ts","sourceRoot":"","sources":["../../docx/write-footnote-columns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,OAAO,CAAC;AAgB7E,wBAAgB,oBAAoB,CACnC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,MAAM,GAAG,SAAS,GACvB,IAAI,CAkBN"}
@@ -1 +1 @@
1
- {"version":3,"file":"write-notes.d.ts","sourceRoot":"","sources":["../../docx/write-notes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAQ,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAErE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA+BpD,wBAAsB,cAAc,CACnC,GAAG,EAAE,KAAK,EACV,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,aAAa,EACnB,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACpD,QAAQ,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,IAAI,CAAC,CA0Cf"}
1
+ {"version":3,"file":"write-notes.d.ts","sourceRoot":"","sources":["../../docx/write-notes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAQ,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAErE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA+BpD,wBAAsB,cAAc,CACnC,GAAG,EAAE,KAAK,EACV,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,aAAa,EACnB,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACpD,QAAQ,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,IAAI,CAAC,CAmEf"}
@@ -1 +1 @@
1
- {"version":3,"file":"write-run.d.ts","sourceRoot":"","sources":["../../docx/write-run.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAA0B,KAAK,WAAW,EAAE,KAAK,UAAU,EAAW,MAAM,OAAO,CAAC;AAI3F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAYtE,oGAAoG;AACpG,wBAAgB,SAAS,CACxB,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,OAAO,GAAG,SAAS,GACxB,IAAI,CAMN;AAiND,wBAAgB,SAAS,CACxB,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,OAAO,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,GAAG,CAAC,EAAE,UAAU,EAChB,SAAS,CAAC,EAAE,qBAAqB,GAC/B,UAAU,CAmEZ"}
1
+ {"version":3,"file":"write-run.d.ts","sourceRoot":"","sources":["../../docx/write-run.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAA0B,KAAK,WAAW,EAAE,KAAK,UAAU,EAAW,MAAM,OAAO,CAAC;AAI3F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAYtE,oGAAoG;AACpG,wBAAgB,SAAS,CACxB,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,OAAO,GAAG,SAAS,GACxB,IAAI,CAMN;AAiND,wBAAgB,SAAS,CACxB,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,OAAO,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,GAAG,CAAC,EAAE,UAAU,EAChB,SAAS,CAAC,EAAE,qBAAqB,GAC/B,UAAU,CAuEZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"write-sections.d.ts","sourceRoot":"","sources":["../../docx/write-sections.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAqB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAI3E,OAAO,EAAmC,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,OAAO,CAAC;AAmO3F;;;GAGG;AACH,wBAAgB,iBAAiB,CAChC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,KAAK,EAAE,EACf,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,IAAI,EAAE,iBAAiB,EAAE;AACzB,mFAAmF;AACnF,UAAU,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa,GACjD,IAAI,CAsDN"}
1
+ {"version":3,"file":"write-sections.d.ts","sourceRoot":"","sources":["../../docx/write-sections.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAqB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAK3E,OAAO,EAAmC,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,OAAO,CAAC;AAsO3F;;;GAGG;AACH,wBAAgB,iBAAiB,CAChC,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,KAAK,EAAE,EACf,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,IAAI,EAAE,iBAAiB,EAAE;AACzB,mFAAmF;AACnF,UAAU,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa,GACjD,IAAI,CAsDN"}
package/dist/index.cjs CHANGED
@@ -29921,10 +29921,13 @@ function relativePartTarget(basePart, targetPart) {
29921
29921
  }
29922
29922
  async function clonePartGraph(options) {
29923
29923
  const { zip, sourcePart, targetPart, shouldClone } = options;
29924
- const copies = /* @__PURE__ */ new Map([[sourcePart, targetPart]]);
29925
- const types = parseContentTypes(await zip.file("[Content_Types].xml")?.async("string"));
29924
+ const sourceZip = options.sourceZip ?? zip;
29925
+ const copies = options.copies ?? /* @__PURE__ */ new Map();
29926
+ copies.set(sourcePart, targetPart);
29927
+ const types = parseContentTypes(await sourceZip.file("[Content_Types].xml")?.async("string"));
29926
29928
  const reserved = new Set(Object.keys(zip.files));
29927
29929
  reserved.add(targetPart);
29930
+ for (const target of copies.values()) reserved.add(target);
29928
29931
  const allocate = (source) => {
29929
29932
  const match = /^(?<stem>.*?)(?:\d+)?(?<extension>\.[^/.]+)$/u.exec(source);
29930
29933
  const stem = match?.groups?.stem ?? source;
@@ -29936,9 +29939,9 @@ async function clonePartGraph(options) {
29936
29939
  return path2;
29937
29940
  };
29938
29941
  const copyRelationships = async (source, destination) => {
29939
- const contentType = types.overrides.get(`/${source}`);
29942
+ const contentType = contentTypeForPart(types, source);
29940
29943
  if (contentType) await ensureContentTypeOverride(zip, destination, contentType);
29941
- const xml = await zip.file(relationshipsPartFor(source))?.async("string");
29944
+ const xml = await sourceZip.file(relationshipsPartFor(source))?.async("string");
29942
29945
  if (!xml) return;
29943
29946
  const relationships = parseRelationships(xml);
29944
29947
  for (const relationship2 of relationships.values()) {
@@ -29946,7 +29949,7 @@ async function clonePartGraph(options) {
29946
29949
  const originalTarget = resolvePartPath(source, relationship2.target);
29947
29950
  let newTarget = copies.get(originalTarget);
29948
29951
  if (!newTarget && shouldClone(relationship2, originalTarget)) {
29949
- const file = zip.file(originalTarget);
29952
+ const file = sourceZip.file(originalTarget);
29950
29953
  if (!file) throw new Error(`Cannot clone missing package part: ${originalTarget}`);
29951
29954
  newTarget = allocate(originalTarget);
29952
29955
  copies.set(originalTarget, newTarget);
package/dist/index.mjs CHANGED
@@ -29915,10 +29915,13 @@ function relativePartTarget(basePart, targetPart) {
29915
29915
  }
29916
29916
  async function clonePartGraph(options) {
29917
29917
  const { zip, sourcePart, targetPart, shouldClone } = options;
29918
- const copies = /* @__PURE__ */ new Map([[sourcePart, targetPart]]);
29919
- const types = parseContentTypes(await zip.file("[Content_Types].xml")?.async("string"));
29918
+ const sourceZip = options.sourceZip ?? zip;
29919
+ const copies = options.copies ?? /* @__PURE__ */ new Map();
29920
+ copies.set(sourcePart, targetPart);
29921
+ const types = parseContentTypes(await sourceZip.file("[Content_Types].xml")?.async("string"));
29920
29922
  const reserved = new Set(Object.keys(zip.files));
29921
29923
  reserved.add(targetPart);
29924
+ for (const target of copies.values()) reserved.add(target);
29922
29925
  const allocate = (source) => {
29923
29926
  const match = /^(?<stem>.*?)(?:\d+)?(?<extension>\.[^/.]+)$/u.exec(source);
29924
29927
  const stem = match?.groups?.stem ?? source;
@@ -29930,9 +29933,9 @@ async function clonePartGraph(options) {
29930
29933
  return path2;
29931
29934
  };
29932
29935
  const copyRelationships = async (source, destination) => {
29933
- const contentType = types.overrides.get(`/${source}`);
29936
+ const contentType = contentTypeForPart(types, source);
29934
29937
  if (contentType) await ensureContentTypeOverride(zip, destination, contentType);
29935
- const xml = await zip.file(relationshipsPartFor(source))?.async("string");
29938
+ const xml = await sourceZip.file(relationshipsPartFor(source))?.async("string");
29936
29939
  if (!xml) return;
29937
29940
  const relationships = parseRelationships(xml);
29938
29941
  for (const relationship2 of relationships.values()) {
@@ -29940,7 +29943,7 @@ async function clonePartGraph(options) {
29940
29943
  const originalTarget = resolvePartPath(source, relationship2.target);
29941
29944
  let newTarget = copies.get(originalTarget);
29942
29945
  if (!newTarget && shouldClone(relationship2, originalTarget)) {
29943
- const file = zip.file(originalTarget);
29946
+ const file = sourceZip.file(originalTarget);
29944
29947
  if (!file) throw new Error(`Cannot clone missing package part: ${originalTarget}`);
29945
29948
  newTarget = allocate(originalTarget);
29946
29949
  copies.set(originalTarget, newTarget);
@@ -4,6 +4,10 @@ import { type Relationship } from './relationships.js';
4
4
  export declare function relativePartTarget(basePart: string, targetPart: string): string;
5
5
  export interface ClonePartGraphOptions {
6
6
  zip: JSZip;
7
+ /** Separate source archive for cross-package imports. Defaults to zip. */
8
+ sourceZip?: JSZip;
9
+ /** Shared source-to-target map, optionally seeded with all imported roots. */
10
+ copies?: Map<string, string>;
7
11
  sourcePart: string;
8
12
  targetPart: string;
9
13
  /** Return false for shared infrastructure or references to other document parts. */
@@ -1 +1 @@
1
- {"version":3,"file":"clone-part-graph.d.ts","sourceRoot":"","sources":["../../opc/clone-part-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAKN,KAAK,YAAY,EACjB,MAAM,iBAAiB,CAAC;AAEzB,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAQ/E;AAED,MAAM,WAAW,qBAAqB;IACrC,GAAG,EAAE,KAAK,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;CACzE;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA2CjG"}
1
+ {"version":3,"file":"clone-part-graph.d.ts","sourceRoot":"","sources":["../../opc/clone-part-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAKN,KAAK,YAAY,EACjB,MAAM,iBAAiB,CAAC;AAEzB,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAQ/E;AAED,MAAM,WAAW,qBAAqB;IACrC,GAAG,EAAE,KAAK,CAAC;IACX,0EAA0E;IAC1E,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;CACzE;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA8CjG"}
@@ -312,10 +312,13 @@ function relativePartTarget(basePart, targetPart) {
312
312
  }
313
313
  async function clonePartGraph(options) {
314
314
  const { zip, sourcePart, targetPart, shouldClone } = options;
315
- const copies = /* @__PURE__ */ new Map([[sourcePart, targetPart]]);
316
- const types = parseContentTypes(await zip.file("[Content_Types].xml")?.async("string"));
315
+ const sourceZip = options.sourceZip ?? zip;
316
+ const copies = options.copies ?? /* @__PURE__ */ new Map();
317
+ copies.set(sourcePart, targetPart);
318
+ const types = parseContentTypes(await sourceZip.file("[Content_Types].xml")?.async("string"));
317
319
  const reserved = new Set(Object.keys(zip.files));
318
320
  reserved.add(targetPart);
321
+ for (const target of copies.values()) reserved.add(target);
319
322
  const allocate = (source) => {
320
323
  const match = /^(?<stem>.*?)(?:\d+)?(?<extension>\.[^/.]+)$/u.exec(source);
321
324
  const stem = match?.groups?.stem ?? source;
@@ -327,9 +330,9 @@ async function clonePartGraph(options) {
327
330
  return path;
328
331
  };
329
332
  const copyRelationships = async (source, destination) => {
330
- const contentType = types.overrides.get(`/${source}`);
333
+ const contentType = contentTypeForPart(types, source);
331
334
  if (contentType) await ensureContentTypeOverride(zip, destination, contentType);
332
- const xml = await zip.file(relationshipsPartFor(source))?.async("string");
335
+ const xml = await sourceZip.file(relationshipsPartFor(source))?.async("string");
333
336
  if (!xml) return;
334
337
  const relationships = parseRelationships(xml);
335
338
  for (const relationship of relationships.values()) {
@@ -337,7 +340,7 @@ async function clonePartGraph(options) {
337
340
  const originalTarget = resolvePartPath(source, relationship.target);
338
341
  let newTarget = copies.get(originalTarget);
339
342
  if (!newTarget && shouldClone(relationship, originalTarget)) {
340
- const file = zip.file(originalTarget);
343
+ const file = sourceZip.file(originalTarget);
341
344
  if (!file) throw new Error(`Cannot clone missing package part: ${originalTarget}`);
342
345
  newTarget = allocate(originalTarget);
343
346
  copies.set(originalTarget, newTarget);
@@ -306,10 +306,13 @@ function relativePartTarget(basePart, targetPart) {
306
306
  }
307
307
  async function clonePartGraph(options) {
308
308
  const { zip, sourcePart, targetPart, shouldClone } = options;
309
- const copies = /* @__PURE__ */ new Map([[sourcePart, targetPart]]);
310
- const types = parseContentTypes(await zip.file("[Content_Types].xml")?.async("string"));
309
+ const sourceZip = options.sourceZip ?? zip;
310
+ const copies = options.copies ?? /* @__PURE__ */ new Map();
311
+ copies.set(sourcePart, targetPart);
312
+ const types = parseContentTypes(await sourceZip.file("[Content_Types].xml")?.async("string"));
311
313
  const reserved = new Set(Object.keys(zip.files));
312
314
  reserved.add(targetPart);
315
+ for (const target of copies.values()) reserved.add(target);
313
316
  const allocate = (source) => {
314
317
  const match = /^(?<stem>.*?)(?:\d+)?(?<extension>\.[^/.]+)$/u.exec(source);
315
318
  const stem = match?.groups?.stem ?? source;
@@ -321,9 +324,9 @@ async function clonePartGraph(options) {
321
324
  return path;
322
325
  };
323
326
  const copyRelationships = async (source, destination) => {
324
- const contentType = types.overrides.get(`/${source}`);
327
+ const contentType = contentTypeForPart(types, source);
325
328
  if (contentType) await ensureContentTypeOverride(zip, destination, contentType);
326
- const xml = await zip.file(relationshipsPartFor(source))?.async("string");
329
+ const xml = await sourceZip.file(relationshipsPartFor(source))?.async("string");
327
330
  if (!xml) return;
328
331
  const relationships = parseRelationships(xml);
329
332
  for (const relationship of relationships.values()) {
@@ -331,7 +334,7 @@ async function clonePartGraph(options) {
331
334
  const originalTarget = resolvePartPath(source, relationship.target);
332
335
  let newTarget = copies.get(originalTarget);
333
336
  if (!newTarget && shouldClone(relationship, originalTarget)) {
334
- const file = zip.file(originalTarget);
337
+ const file = sourceZip.file(originalTarget);
335
338
  if (!file) throw new Error(`Cannot clone missing package part: ${originalTarget}`);
336
339
  newTarget = allocate(originalTarget);
337
340
  copies.set(originalTarget, newTarget);