ooxml-core 1.24.3 → 1.25.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 (439) hide show
  1. package/dist/PptxHandler-AN42B3JR.mjs +4 -0
  2. package/dist/{PptxHandler-2YPMMGOJ.cjs → PptxHandler-O25PF53M.cjs} +3 -3
  3. package/dist/{PptxHandler-WQPEYOSS.mjs → PptxHandler-UTNNU6PO.mjs} +3 -3
  4. package/dist/{PresentationBuilder-F5U4KEGH.cjs → PresentationBuilder-A4XU72IV.cjs} +5 -5
  5. package/dist/{PresentationBuilder-PS5S52M3.mjs → PresentationBuilder-GTXNYSRI.mjs} +2 -2
  6. package/dist/{PresentationBuilder-FGWHIJV7.mjs → PresentationBuilder-TNMO5MPC.mjs} +3 -3
  7. package/dist/automation/index.cjs +10181 -6066
  8. package/dist/automation/index.mjs +10181 -6066
  9. package/dist/chart/data-sheet.d.ts +86 -0
  10. package/dist/chart/data-sheet.d.ts.map +1 -0
  11. package/dist/chart/edit/axes.d.ts +49 -0
  12. package/dist/chart/edit/axes.d.ts.map +1 -0
  13. package/dist/chart/edit/chartex-data.d.ts +15 -0
  14. package/dist/chart/edit/chartex-data.d.ts.map +1 -0
  15. package/dist/chart/edit/chartex.d.ts +61 -0
  16. package/dist/chart/edit/chartex.d.ts.map +1 -0
  17. package/dist/chart/edit/data-sheet.d.ts +10 -0
  18. package/dist/chart/edit/data-sheet.d.ts.map +1 -0
  19. package/dist/chart/edit/draft.d.ts +27 -0
  20. package/dist/chart/edit/draft.d.ts.map +1 -0
  21. package/dist/chart/edit/fill.d.ts +47 -0
  22. package/dist/chart/edit/fill.d.ts.map +1 -0
  23. package/dist/chart/edit/gradient.d.ts +44 -0
  24. package/dist/chart/edit/gradient.d.ts.map +1 -0
  25. package/dist/chart/edit/group-options.d.ts +14 -0
  26. package/dist/chart/edit/group-options.d.ts.map +1 -0
  27. package/dist/chart/edit/index.d.ts +23 -0
  28. package/dist/chart/edit/index.d.ts.map +1 -0
  29. package/dist/chart/edit/intent.d.ts +72 -0
  30. package/dist/chart/edit/intent.d.ts.map +1 -0
  31. package/dist/chart/edit/legend-labels.d.ts +34 -0
  32. package/dist/chart/edit/legend-labels.d.ts.map +1 -0
  33. package/dist/chart/edit/new-chart.d.ts +14 -0
  34. package/dist/chart/edit/new-chart.d.ts.map +1 -0
  35. package/dist/chart/edit/paint.d.ts +20 -0
  36. package/dist/chart/edit/paint.d.ts.map +1 -0
  37. package/dist/chart/edit/quick-layout.d.ts +16 -0
  38. package/dist/chart/edit/quick-layout.d.ts.map +1 -0
  39. package/dist/chart/edit/series-data.d.ts +8 -0
  40. package/dist/chart/edit/series-data.d.ts.map +1 -0
  41. package/dist/chart/edit/series.d.ts +57 -0
  42. package/dist/chart/edit/series.d.ts.map +1 -0
  43. package/dist/chart/edit/style.d.ts +18 -0
  44. package/dist/chart/edit/style.d.ts.map +1 -0
  45. package/dist/chart/edit/target-paint.d.ts +19 -0
  46. package/dist/chart/edit/target-paint.d.ts.map +1 -0
  47. package/dist/chart/edit/target.d.ts +31 -0
  48. package/dist/chart/edit/target.d.ts.map +1 -0
  49. package/dist/chart/edit/title.d.ts +24 -0
  50. package/dist/chart/edit/title.d.ts.map +1 -0
  51. package/dist/chart/edit/type-axes.d.ts +14 -0
  52. package/dist/chart/edit/type-axes.d.ts.map +1 -0
  53. package/dist/chart/edit/type-schema.d.ts +15 -0
  54. package/dist/chart/edit/type-schema.d.ts.map +1 -0
  55. package/dist/chart/edit/type.d.ts +16 -0
  56. package/dist/chart/edit/type.d.ts.map +1 -0
  57. package/dist/chart/ex/index.d.ts +4 -0
  58. package/dist/chart/ex/index.d.ts.map +1 -0
  59. package/dist/chart/ex/model.d.ts +291 -0
  60. package/dist/chart/ex/model.d.ts.map +1 -0
  61. package/dist/chart/ex/parse-axis.d.ts +6 -0
  62. package/dist/chart/ex/parse-axis.d.ts.map +1 -0
  63. package/dist/chart/ex/parse-series.d.ts +6 -0
  64. package/dist/chart/ex/parse-series.d.ts.map +1 -0
  65. package/dist/chart/ex/parse-text.d.ts +14 -0
  66. package/dist/chart/ex/parse-text.d.ts.map +1 -0
  67. package/dist/chart/ex/parse-util.d.ts +36 -0
  68. package/dist/chart/ex/parse-util.d.ts.map +1 -0
  69. package/dist/chart/ex/parse.d.ts +10 -0
  70. package/dist/chart/ex/parse.d.ts.map +1 -0
  71. package/dist/chart/ex/write-series.d.ts +13 -0
  72. package/dist/chart/ex/write-series.d.ts.map +1 -0
  73. package/dist/chart/ex/write-util.d.ts +23 -0
  74. package/dist/chart/ex/write-util.d.ts.map +1 -0
  75. package/dist/chart/ex/write.d.ts +24 -0
  76. package/dist/chart/ex/write.d.ts.map +1 -0
  77. package/dist/chart/index.cjs +7258 -3107
  78. package/dist/chart/index.d.ts +8 -0
  79. package/dist/chart/index.d.ts.map +1 -1
  80. package/dist/chart/index.mjs +7117 -3110
  81. package/dist/chart/keep-source.d.ts +11 -0
  82. package/dist/chart/keep-source.d.ts.map +1 -0
  83. package/dist/chart/keep-unmodelled.d.ts +6 -0
  84. package/dist/chart/keep-unmodelled.d.ts.map +1 -0
  85. package/dist/chart/model-series.d.ts +6 -0
  86. package/dist/chart/model-series.d.ts.map +1 -1
  87. package/dist/chart/model.d.ts +14 -0
  88. package/dist/chart/model.d.ts.map +1 -1
  89. package/dist/chart/parse-plot.d.ts.map +1 -1
  90. package/dist/chart/parse-series.d.ts +1 -1
  91. package/dist/chart/parse-series.d.ts.map +1 -1
  92. package/dist/chart/parse-util.d.ts +2 -0
  93. package/dist/chart/parse-util.d.ts.map +1 -1
  94. package/dist/chart/quick-layouts.d.ts +41 -0
  95. package/dist/chart/quick-layouts.d.ts.map +1 -0
  96. package/dist/chart/render/summary-from-chartex.d.ts +3 -0
  97. package/dist/chart/render/summary-from-chartex.d.ts.map +1 -1
  98. package/dist/chart/style-presets.d.ts +20 -0
  99. package/dist/chart/style-presets.d.ts.map +1 -0
  100. package/dist/chart/workbook/cellref.d.ts +53 -0
  101. package/dist/chart/workbook/cellref.d.ts.map +1 -0
  102. package/dist/chart/workbook/create.d.ts +6 -0
  103. package/dist/chart/workbook/create.d.ts.map +1 -0
  104. package/dist/chart/workbook/index.d.ts +10 -0
  105. package/dist/chart/workbook/index.d.ts.map +1 -0
  106. package/dist/chart/workbook/layout.d.ts +35 -0
  107. package/dist/chart/workbook/layout.d.ts.map +1 -0
  108. package/dist/chart/workbook/package-save.d.ts +48 -0
  109. package/dist/chart/workbook/package-save.d.ts.map +1 -0
  110. package/dist/chart/workbook/sheet-cells.d.ts +31 -0
  111. package/dist/chart/workbook/sheet-cells.d.ts.map +1 -0
  112. package/dist/chart/workbook/space-writes.d.ts +5 -0
  113. package/dist/chart/workbook/space-writes.d.ts.map +1 -0
  114. package/dist/chart/workbook/tables.d.ts +20 -0
  115. package/dist/chart/workbook/tables.d.ts.map +1 -0
  116. package/dist/chart/workbook/validation.d.ts +12 -0
  117. package/dist/chart/workbook/validation.d.ts.map +1 -0
  118. package/dist/chart/workbook/writer.d.ts +55 -0
  119. package/dist/chart/workbook/writer.d.ts.map +1 -0
  120. package/dist/chart/write-axes.d.ts.map +1 -1
  121. package/dist/chart/write-plot.d.ts.map +1 -1
  122. package/dist/chart/write-series.d.ts.map +1 -1
  123. package/dist/chart/write-shape.d.ts +2 -0
  124. package/dist/chart/write-shape.d.ts.map +1 -1
  125. package/dist/{chunk-HKCSJAQD.mjs → chunk-4IYYW3CX.mjs} +5 -5
  126. package/dist/{chunk-O6ISWI34.mjs → chunk-6DHZZD5R.mjs} +1102 -1024
  127. package/dist/{chunk-GBKBR4CX.mjs → chunk-E2PYQQQV.mjs} +1 -1
  128. package/dist/{chunk-5SE4FGS4.cjs → chunk-JE3DVWAJ.cjs} +4989 -2863
  129. package/dist/{chunk-2AFO3HNI.mjs → chunk-NBSJDA3B.mjs} +2235 -2095
  130. package/dist/{chunk-K2XWOVLV.mjs → chunk-QXWRJDVE.mjs} +4075 -1949
  131. package/dist/{chunk-QCZX6K67.cjs → chunk-S5TGOEQX.cjs} +1107 -1028
  132. package/dist/{chunk-4IFENOU7.mjs → chunk-VHGMYNWM.mjs} +1 -1
  133. package/dist/{chunk-RF2YPEKI.mjs → chunk-X7IIABZ6.mjs} +3976 -1833
  134. package/dist/{chunk-OJWKGDJF.mjs → chunk-YWTKOZMT.mjs} +1 -1
  135. package/dist/diagram/approximate.d.ts +19 -0
  136. package/dist/diagram/approximate.d.ts.map +1 -0
  137. package/dist/diagram/builtin/catalog.d.ts +3 -0
  138. package/dist/diagram/builtin/catalog.d.ts.map +1 -0
  139. package/dist/diagram/builtin/data.d.ts +3 -0
  140. package/dist/diagram/builtin/data.d.ts.map +1 -0
  141. package/dist/diagram/builtin/definitions.d.ts +7 -0
  142. package/dist/diagram/builtin/definitions.d.ts.map +1 -0
  143. package/dist/diagram/builtin/index.cjs +1348 -0
  144. package/dist/diagram/builtin/index.d.ts +3 -0
  145. package/dist/diagram/builtin/index.d.ts.map +1 -0
  146. package/dist/diagram/builtin/index.mjs +1337 -0
  147. package/dist/diagram/builtin/layouts.d.ts +15 -0
  148. package/dist/diagram/builtin/layouts.d.ts.map +1 -0
  149. package/dist/diagram/builtin/types.d.ts +13 -0
  150. package/dist/diagram/builtin/types.d.ts.map +1 -0
  151. package/dist/diagram/catalogue.d.ts +51 -0
  152. package/dist/diagram/catalogue.d.ts.map +1 -0
  153. package/dist/diagram/data-model.d.ts.map +1 -1
  154. package/dist/diagram/drawing-from-views.d.ts +11 -0
  155. package/dist/diagram/drawing-from-views.d.ts.map +1 -0
  156. package/dist/diagram/drawing-resolve.d.ts +34 -0
  157. package/dist/diagram/drawing-resolve.d.ts.map +1 -0
  158. package/dist/diagram/drawing-view.d.ts +104 -0
  159. package/dist/diagram/drawing-view.d.ts.map +1 -0
  160. package/dist/diagram/drawing.d.ts.map +1 -1
  161. package/dist/diagram/edit/design-commands.d.ts +27 -0
  162. package/dist/diagram/edit/design-commands.d.ts.map +1 -0
  163. package/dist/diagram/edit/index.d.ts +15 -0
  164. package/dist/diagram/edit/index.d.ts.map +1 -0
  165. package/dist/diagram/edit/node-edit.d.ts +66 -0
  166. package/dist/diagram/edit/node-edit.d.ts.map +1 -0
  167. package/dist/diagram/edit/node-ops.d.ts +71 -0
  168. package/dist/diagram/edit/node-ops.d.ts.map +1 -0
  169. package/dist/diagram/edit/node-order.d.ts +28 -0
  170. package/dist/diagram/edit/node-order.d.ts.map +1 -0
  171. package/dist/diagram/edit/node-style.d.ts +42 -0
  172. package/dist/diagram/edit/node-style.d.ts.map +1 -0
  173. package/dist/diagram/edit/node-tree.d.ts +10 -0
  174. package/dist/diagram/edit/node-tree.d.ts.map +1 -0
  175. package/dist/diagram/edit/outline.d.ts +11 -0
  176. package/dist/diagram/edit/outline.d.ts.map +1 -0
  177. package/dist/diagram/edit/reflow-category.d.ts +18 -0
  178. package/dist/diagram/edit/reflow-category.d.ts.map +1 -0
  179. package/dist/diagram/edit/reflow-directional.d.ts +53 -0
  180. package/dist/diagram/edit/reflow-directional.d.ts.map +1 -0
  181. package/dist/diagram/edit/reflow-geometric.d.ts +59 -0
  182. package/dist/diagram/edit/reflow-geometric.d.ts.map +1 -0
  183. package/dist/diagram/edit/reflow-stacked.d.ts +32 -0
  184. package/dist/diagram/edit/reflow-stacked.d.ts.map +1 -0
  185. package/dist/diagram/edit/reflow.d.ts +48 -0
  186. package/dist/diagram/edit/reflow.d.ts.map +1 -0
  187. package/dist/diagram/edit/shape-match.d.ts +34 -0
  188. package/dist/diagram/edit/shape-match.d.ts.map +1 -0
  189. package/dist/diagram/edit/types.d.ts +31 -0
  190. package/dist/diagram/edit/types.d.ts.map +1 -0
  191. package/dist/diagram/index.cjs +3934 -910
  192. package/dist/diagram/index.d.ts +9 -0
  193. package/dist/diagram/index.d.ts.map +1 -1
  194. package/dist/diagram/index.mjs +3860 -912
  195. package/dist/diagram/model/node.d.ts +10 -0
  196. package/dist/diagram/model/node.d.ts.map +1 -1
  197. package/dist/diagram/relationships.d.ts +8 -0
  198. package/dist/diagram/relationships.d.ts.map +1 -1
  199. package/dist/diagram/strings/de.d.ts +3 -0
  200. package/dist/diagram/strings/de.d.ts.map +1 -0
  201. package/dist/diagram/strings/en.d.ts +74 -0
  202. package/dist/diagram/strings/en.d.ts.map +1 -0
  203. package/dist/diagram/strings/es.d.ts +3 -0
  204. package/dist/diagram/strings/es.d.ts.map +1 -0
  205. package/dist/diagram/strings/fr.d.ts +3 -0
  206. package/dist/diagram/strings/fr.d.ts.map +1 -0
  207. package/dist/diagram/strings/index.d.ts +11 -0
  208. package/dist/diagram/strings/index.d.ts.map +1 -0
  209. package/dist/diagram/strings/zh-CN.d.ts +3 -0
  210. package/dist/diagram/strings/zh-CN.d.ts.map +1 -0
  211. package/dist/diagram/text/index.d.ts +5 -0
  212. package/dist/diagram/text/index.d.ts.map +1 -0
  213. package/dist/diagram/text/node-text-neutral.d.ts +29 -0
  214. package/dist/diagram/text/node-text-neutral.d.ts.map +1 -0
  215. package/dist/diagram/text/node-text-paragraphs.d.ts +6 -0
  216. package/dist/diagram/text/node-text-paragraphs.d.ts.map +1 -0
  217. package/dist/diagram/text/node-text-projection.d.ts +48 -0
  218. package/dist/diagram/text/node-text-projection.d.ts.map +1 -0
  219. package/dist/diagram/text/node-text-reconciliation.d.ts +4 -0
  220. package/dist/diagram/text/node-text-reconciliation.d.ts.map +1 -0
  221. package/dist/diagram/types.d.ts +12 -0
  222. package/dist/diagram/types.d.ts.map +1 -1
  223. package/dist/diagram/write/data-edit.d.ts +30 -0
  224. package/dist/diagram/write/data-edit.d.ts.map +1 -0
  225. package/dist/diagram/write/data.d.ts +62 -0
  226. package/dist/diagram/write/data.d.ts.map +1 -0
  227. package/dist/diagram/write/index.d.ts +4 -0
  228. package/dist/diagram/write/index.d.ts.map +1 -0
  229. package/dist/diagram/write/inserted.d.ts +14 -0
  230. package/dist/diagram/write/inserted.d.ts.map +1 -0
  231. package/dist/docx/chart-edit.d.ts +33 -0
  232. package/dist/docx/chart-edit.d.ts.map +1 -0
  233. package/dist/docx/chart-save.d.ts +14 -0
  234. package/dist/docx/chart-save.d.ts.map +1 -0
  235. package/dist/docx/chart.d.ts +5 -3
  236. package/dist/docx/chart.d.ts.map +1 -1
  237. package/dist/docx/diagram-edit.d.ts +50 -0
  238. package/dist/docx/diagram-edit.d.ts.map +1 -0
  239. package/dist/docx/diagram-nodes.d.ts +2 -0
  240. package/dist/docx/diagram-nodes.d.ts.map +1 -0
  241. package/dist/docx/diagram-save.d.ts +12 -0
  242. package/dist/docx/diagram-save.d.ts.map +1 -0
  243. package/dist/docx/diagram.d.ts +17 -9
  244. package/dist/docx/diagram.d.ts.map +1 -1
  245. package/dist/docx/embedded.cjs +5191 -2423
  246. package/dist/docx/embedded.mjs +5191 -2423
  247. package/dist/docx/index.cjs +10063 -6083
  248. package/dist/docx/index.d.ts +4 -1
  249. package/dist/docx/index.d.ts.map +1 -1
  250. package/dist/docx/index.mjs +10049 -6084
  251. package/dist/docx/load/index.cjs +5840 -3072
  252. package/dist/docx/load/index.mjs +5840 -3072
  253. package/dist/docx/parse.d.ts.map +1 -1
  254. package/dist/docx/part-relationships.d.ts.map +1 -1
  255. package/dist/docx/relationship-allocator.d.ts +19 -0
  256. package/dist/docx/relationship-allocator.d.ts.map +1 -1
  257. package/dist/docx/save.d.ts.map +1 -1
  258. package/dist/docx/ui/chart-commands.d.ts +19 -0
  259. package/dist/docx/ui/chart-commands.d.ts.map +1 -0
  260. package/dist/docx/ui/index.cjs +1482 -655
  261. package/dist/docx/ui/index.d.ts +2 -0
  262. package/dist/docx/ui/index.d.ts.map +1 -1
  263. package/dist/docx/ui/index.mjs +1479 -656
  264. package/dist/docx/ui/ribbon-action-ids.d.ts +1 -1
  265. package/dist/docx/ui/ribbon-action-ids.d.ts.map +1 -1
  266. package/dist/docx/ui/smartart-approximate.d.ts +5 -0
  267. package/dist/docx/ui/smartart-approximate.d.ts.map +1 -0
  268. package/dist/docx/write-chart-drawing.d.ts +12 -0
  269. package/dist/docx/write-chart-drawing.d.ts.map +1 -0
  270. package/dist/docx/write-diagram-drawing.d.ts +13 -0
  271. package/dist/docx/write-diagram-drawing.d.ts.map +1 -0
  272. package/dist/docx/write-drawing-patch.d.ts +8 -0
  273. package/dist/docx/write-drawing-patch.d.ts.map +1 -0
  274. package/dist/docx/write-drawing.d.ts.map +1 -1
  275. package/dist/drawingml/index.cjs +863 -0
  276. package/dist/drawingml/index.d.ts +7 -0
  277. package/dist/drawingml/index.d.ts.map +1 -1
  278. package/dist/drawingml/index.mjs +840 -1
  279. package/dist/drawingml/read-paragraph-properties.d.ts +8 -0
  280. package/dist/drawingml/read-paragraph-properties.d.ts.map +1 -0
  281. package/dist/drawingml/read-run-properties.d.ts +15 -0
  282. package/dist/drawingml/read-run-properties.d.ts.map +1 -0
  283. package/dist/drawingml/read-text-body.d.ts +13 -0
  284. package/dist/drawingml/read-text-body.d.ts.map +1 -0
  285. package/dist/drawingml/text-model.d.ts +210 -0
  286. package/dist/drawingml/text-model.d.ts.map +1 -0
  287. package/dist/drawingml/write-paragraph-properties.d.ts +12 -0
  288. package/dist/drawingml/write-paragraph-properties.d.ts.map +1 -0
  289. package/dist/drawingml/write-run-properties.d.ts +11 -0
  290. package/dist/drawingml/write-run-properties.d.ts.map +1 -0
  291. package/dist/drawingml/write-text-body.d.ts +18 -0
  292. package/dist/drawingml/write-text-body.d.ts.map +1 -0
  293. package/dist/drawingml/write-text-xml.d.ts +26 -0
  294. package/dist/drawingml/write-text-xml.d.ts.map +1 -0
  295. package/dist/index.cjs +10068 -2908
  296. package/dist/index.mjs +10068 -2908
  297. package/dist/pptx/automation/index.cjs +6845 -3885
  298. package/dist/pptx/automation/index.d.ts +5 -5
  299. package/dist/pptx/automation/index.mjs +6 -6
  300. package/dist/pptx/chunks/{elements-iUzpAeqR.d.ts → elements-DhW764aK.d.ts} +23 -14
  301. package/dist/pptx/chunks/elements-DhW764aK.d.ts.map +1 -0
  302. package/dist/pptx/chunks/{index-C3xhAMSa.d.ts → index-CX0RM1fF.d.ts} +4 -4
  303. package/dist/pptx/chunks/{index-C3xhAMSa.d.ts.map → index-CX0RM1fF.d.ts.map} +1 -1
  304. package/dist/pptx/chunks/{index-nKQ4s7FA.d.ts → index-CgjEEpfK.d.ts} +18 -9
  305. package/dist/pptx/chunks/index-CgjEEpfK.d.ts.map +1 -0
  306. package/dist/pptx/chunks/{index-4FmgJajb.d.ts → index-DCbp5fOs.d.ts} +100 -95
  307. package/dist/pptx/chunks/index-DCbp5fOs.d.ts.map +1 -0
  308. package/dist/pptx/chunks/{smart-art-ENMMEbmW.d.ts → smart-art-BEEl0l8X.d.ts} +514 -306
  309. package/dist/pptx/chunks/smart-art-BEEl0l8X.d.ts.map +1 -0
  310. package/dist/pptx/chunks/{text-operations-CfLVZ7DK.d.ts → text-operations-CjalmJIi.d.ts} +2 -2
  311. package/dist/pptx/chunks/{text-operations-CfLVZ7DK.d.ts.map → text-operations-CjalmJIi.d.ts.map} +1 -1
  312. package/dist/pptx/cli/index.cjs +6330 -3372
  313. package/dist/pptx/cli/index.d.ts +1 -1
  314. package/dist/pptx/cli/index.mjs +5 -5
  315. package/dist/pptx/converter/index.cjs +107 -75
  316. package/dist/pptx/converter/index.d.ts +1 -1
  317. package/dist/pptx/converter/index.mjs +3 -3
  318. package/dist/pptx/editor/render/editor-history.cjs +3 -1
  319. package/dist/pptx/editor/render/editor-history.d.ts +9 -1
  320. package/dist/pptx/editor/render/editor-history.d.ts.map +1 -1
  321. package/dist/pptx/editor/render/editor-history.mjs +3 -2
  322. package/dist/pptx/editor/render/find-replace.cjs +14 -14
  323. package/dist/pptx/editor/render/find-replace.d.ts +2 -2
  324. package/dist/pptx/editor/render/find-replace.mjs +1 -1
  325. package/dist/pptx/editor/render/slide-operations.cjs +8 -8
  326. package/dist/pptx/editor/render/slide-operations.mjs +2 -2
  327. package/dist/pptx/editor/render/text-runs-style-patch.d.ts +1 -1
  328. package/dist/pptx/editor/render/text-style-scope.d.ts +1 -1
  329. package/dist/pptx/index.cjs +7750 -4725
  330. package/dist/pptx/index.d.ts +7 -7
  331. package/dist/pptx/index.mjs +6 -6
  332. package/dist/pptx/node/index.d.ts +1 -1
  333. package/dist/pptx/signature-node/index.mjs +2 -2
  334. package/dist/pptx/smartart-layouts/index.cjs +26 -23
  335. package/dist/pptx/smartart-layouts/index.d.ts +7 -5
  336. package/dist/pptx/smartart-layouts/index.d.ts.map +1 -1
  337. package/dist/pptx/smartart-layouts/index.mjs +26 -23
  338. package/dist/teams/index.cjs +20165 -18388
  339. package/dist/teams/index.mjs +20165 -18388
  340. package/dist/text/index.cjs +106 -0
  341. package/dist/text/index.d.ts +2 -0
  342. package/dist/text/index.d.ts.map +1 -1
  343. package/dist/text/index.mjs +103 -1
  344. package/dist/text/locale-number.d.ts +15 -0
  345. package/dist/text/locale-number.d.ts.map +1 -0
  346. package/dist/text/tsv.d.ts +8 -0
  347. package/dist/text/tsv.d.ts.map +1 -0
  348. package/dist/visio/index.cjs +3574 -1953
  349. package/dist/visio/index.mjs +3574 -1953
  350. package/dist/visio/ui/index.cjs +3562 -1941
  351. package/dist/visio/ui/index.mjs +3562 -1941
  352. package/dist/xlsx/edit/chart-colors.d.ts +2 -2
  353. package/dist/xlsx/edit/chart-colors.d.ts.map +1 -1
  354. package/dist/xlsx/edit/chart-design.d.ts +11 -0
  355. package/dist/xlsx/edit/chart-design.d.ts.map +1 -0
  356. package/dist/xlsx/edit/chart-element-fill.d.ts.map +1 -1
  357. package/dist/xlsx/edit/chart-series-fill.d.ts.map +1 -1
  358. package/dist/xlsx/edit/chart-series-gradient.d.ts +6 -34
  359. package/dist/xlsx/edit/chart-series-gradient.d.ts.map +1 -1
  360. package/dist/xlsx/edit/chart-series-transparency.d.ts.map +1 -1
  361. package/dist/xlsx/edit/chart-space-patch.d.ts +13 -0
  362. package/dist/xlsx/edit/chart-space-patch.d.ts.map +1 -0
  363. package/dist/xlsx/edit/chart-space-series.d.ts +14 -0
  364. package/dist/xlsx/edit/chart-space-series.d.ts.map +1 -0
  365. package/dist/xlsx/edit/charts.d.ts +22 -6
  366. package/dist/xlsx/edit/charts.d.ts.map +1 -1
  367. package/dist/xlsx/edit/clipboard-text.d.ts +2 -7
  368. package/dist/xlsx/edit/clipboard-text.d.ts.map +1 -1
  369. package/dist/xlsx/edit/index.d.ts +3 -1
  370. package/dist/xlsx/edit/index.d.ts.map +1 -1
  371. package/dist/xlsx/edit/session.d.ts.map +1 -1
  372. package/dist/xlsx/edit/shift-formulas.d.ts.map +1 -1
  373. package/dist/xlsx/edit/smart-art.d.ts +32 -0
  374. package/dist/xlsx/edit/smart-art.d.ts.map +1 -0
  375. package/dist/xlsx/edit/types.d.ts +12 -1
  376. package/dist/xlsx/edit/types.d.ts.map +1 -1
  377. package/dist/xlsx/embedded-chart-space.d.ts +19 -0
  378. package/dist/xlsx/embedded-chart-space.d.ts.map +1 -0
  379. package/dist/xlsx/index.cjs +6457 -3105
  380. package/dist/xlsx/index.d.ts +1 -0
  381. package/dist/xlsx/index.d.ts.map +1 -1
  382. package/dist/xlsx/index.mjs +6451 -3106
  383. package/dist/xlsx/load/index.cjs +5732 -3843
  384. package/dist/xlsx/load/index.mjs +5732 -3843
  385. package/dist/xlsx/model.d.ts +71 -15
  386. package/dist/xlsx/model.d.ts.map +1 -1
  387. package/dist/xlsx/read/chart.d.ts +10 -0
  388. package/dist/xlsx/read/chart.d.ts.map +1 -1
  389. package/dist/xlsx/read/drawing.d.ts.map +1 -1
  390. package/dist/xlsx/read/smart-art.d.ts.map +1 -1
  391. package/dist/xlsx/smart-art-notices.d.ts +6 -0
  392. package/dist/xlsx/smart-art-notices.d.ts.map +1 -0
  393. package/dist/xlsx/ui/commands/contextual.d.ts +6 -1
  394. package/dist/xlsx/ui/commands/contextual.d.ts.map +1 -1
  395. package/dist/xlsx/ui/commands/i18n/chart-series.d.ts.map +1 -1
  396. package/dist/xlsx/ui/commands/i18n/core-features.d.ts.map +1 -1
  397. package/dist/xlsx/ui/commands/i18n/index.d.ts.map +1 -1
  398. package/dist/xlsx/ui/commands/i18n/ribbon-tabs.d.ts.map +1 -1
  399. package/dist/xlsx/ui/commands/i18n/smartart.d.ts +3 -0
  400. package/dist/xlsx/ui/commands/i18n/smartart.d.ts.map +1 -0
  401. package/dist/xlsx/ui/commands/icons.d.ts.map +1 -1
  402. package/dist/xlsx/ui/index.cjs +6664 -2907
  403. package/dist/xlsx/ui/index.mjs +6663 -2907
  404. package/dist/xlsx/ui/locales/de/index.d.ts.map +1 -1
  405. package/dist/xlsx/ui/locales/de/smartart.d.ts +2 -0
  406. package/dist/xlsx/ui/locales/de/smartart.d.ts.map +1 -0
  407. package/dist/xlsx/ui/locales/en/index.d.ts.map +1 -1
  408. package/dist/xlsx/ui/locales/en/smartart.d.ts +2 -0
  409. package/dist/xlsx/ui/locales/en/smartart.d.ts.map +1 -0
  410. package/dist/xlsx/ui/locales/es/index.d.ts.map +1 -1
  411. package/dist/xlsx/ui/locales/es/smartart.d.ts +2 -0
  412. package/dist/xlsx/ui/locales/es/smartart.d.ts.map +1 -0
  413. package/dist/xlsx/ui/locales/fr/index.d.ts.map +1 -1
  414. package/dist/xlsx/ui/locales/fr/smartart.d.ts +2 -0
  415. package/dist/xlsx/ui/locales/fr/smartart.d.ts.map +1 -0
  416. package/dist/xlsx/ui/locales/zh-CN/index.d.ts.map +1 -1
  417. package/dist/xlsx/ui/locales/zh-CN/smartart.d.ts +2 -0
  418. package/dist/xlsx/ui/locales/zh-CN/smartart.d.ts.map +1 -0
  419. package/dist/xlsx/write/chart-cache.d.ts.map +1 -1
  420. package/dist/xlsx/write/chart-colors.d.ts +1 -8
  421. package/dist/xlsx/write/chart-colors.d.ts.map +1 -1
  422. package/dist/xlsx/write/chart-space.d.ts +8 -0
  423. package/dist/xlsx/write/chart-space.d.ts.map +1 -1
  424. package/dist/xlsx/write/chart-title.d.ts +2 -2
  425. package/dist/xlsx/write/chart-title.d.ts.map +1 -1
  426. package/dist/xlsx/write/chart.d.ts +4 -3
  427. package/dist/xlsx/write/chart.d.ts.map +1 -1
  428. package/dist/xlsx/write/drawing.d.ts +10 -3
  429. package/dist/xlsx/write/drawing.d.ts.map +1 -1
  430. package/dist/xlsx/write/smart-art.d.ts +17 -0
  431. package/dist/xlsx/write/smart-art.d.ts.map +1 -0
  432. package/package.json +6 -1
  433. package/dist/PptxHandler-VXK5EY7J.mjs +0 -4
  434. package/dist/pptx/chunks/elements-iUzpAeqR.d.ts.map +0 -1
  435. package/dist/pptx/chunks/index-4FmgJajb.d.ts.map +0 -1
  436. package/dist/pptx/chunks/index-nKQ4s7FA.d.ts.map +0 -1
  437. package/dist/pptx/chunks/smart-art-ENMMEbmW.d.ts.map +0 -1
  438. package/dist/xlsx/write/chart-patch.d.ts +0 -9
  439. package/dist/xlsx/write/chart-patch.d.ts.map +0 -1
@@ -3043,6 +3043,182 @@ function openNestedZip(bytes) {
3043
3043
  return openZip(bytes, { label: "Embedded", createError });
3044
3044
  }
3045
3045
 
3046
+ // xml/namespaces.ts
3047
+ var NS = {
3048
+ /** WordprocessingML main. */
3049
+ w: "http://schemas.openxmlformats.org/wordprocessingml/2006/main",
3050
+ /** PresentationML main. */
3051
+ p: "http://schemas.openxmlformats.org/presentationml/2006/main",
3052
+ /** SpreadsheetML main. */
3053
+ x: "http://schemas.openxmlformats.org/spreadsheetml/2006/main",
3054
+ /** DrawingML main. */
3055
+ a: "http://schemas.openxmlformats.org/drawingml/2006/main",
3056
+ /** DrawingML chart. */
3057
+ c: "http://schemas.openxmlformats.org/drawingml/2006/chart",
3058
+ /** Office 2016 extended charts (waterfall, histogram, funnel...; `cx:chartSpace`). */
3059
+ cx: "http://schemas.microsoft.com/office/drawing/2014/chartex",
3060
+ /** Office 2010 chart extensions, including built-in modern chart styles. */
3061
+ c14: "http://schemas.microsoft.com/office/drawing/2007/8/2/chart",
3062
+ /** DrawingML diagram (SmartArt) main. */
3063
+ dgm: "http://schemas.openxmlformats.org/drawingml/2006/diagram",
3064
+ /** Office 2007+ diagram drawing (`dsp`). */
3065
+ dsp: "http://schemas.microsoft.com/office/drawing/2008/diagram",
3066
+ /** DrawingML Word drawing (`wp:inline`, `wp:anchor`). */
3067
+ wp: "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing",
3068
+ /** DrawingML picture. */
3069
+ pic: "http://schemas.openxmlformats.org/drawingml/2006/picture",
3070
+ /** Word 2010 shapes (`wps`). */
3071
+ wps: "http://schemas.microsoft.com/office/word/2010/wordprocessingShape",
3072
+ /** Relationships (`r:id`, `r:embed`). */
3073
+ r: "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
3074
+ /** Markup compatibility (`mc:AlternateContent`). */
3075
+ mc: "http://schemas.openxmlformats.org/markup-compatibility/2006",
3076
+ /** OPC relationships part. */
3077
+ rels: "http://schemas.openxmlformats.org/package/2006/relationships",
3078
+ /** OPC content types part. */
3079
+ contentTypes: "http://schemas.openxmlformats.org/package/2006/content-types",
3080
+ /** Office Math. */
3081
+ m: "http://schemas.openxmlformats.org/officeDocument/2006/math",
3082
+ /** Core properties. */
3083
+ cp: "http://schemas.openxmlformats.org/package/2006/metadata/core-properties",
3084
+ /** Dublin Core elements. */
3085
+ dc: "http://purl.org/dc/elements/1.1/",
3086
+ /** Legacy VML. */
3087
+ v: "urn:schemas-microsoft-com:vml",
3088
+ /** Office VML extensions. */
3089
+ o: "urn:schemas-microsoft-com:office:office",
3090
+ /** Word VML extensions. */
3091
+ w10: "urn:schemas-microsoft-com:office:word",
3092
+ /** SpreadsheetML drawing (`xdr:wsDr`, cell anchors). */
3093
+ xdr: "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing",
3094
+ /** SpreadsheetML 2009 extensions (`x14:conditionalFormatting`, `x14:dataBar`). */
3095
+ x14: "http://schemas.microsoft.com/office/spreadsheetml/2009/9/main",
3096
+ /** SpreadsheetML 2009 attribute extensions (`x14ac:dyDescent`). */
3097
+ x14ac: "http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac",
3098
+ /** SpreadsheetML revision ids (`xr:uid`). */
3099
+ xr: "http://schemas.microsoft.com/office/spreadsheetml/2014/revision",
3100
+ /** Excel threaded comments and persons. */
3101
+ tc: "http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments",
3102
+ /** Legacy VML Excel client data (`x:ClientData`). */
3103
+ xv: "urn:schemas-microsoft-com:office:excel",
3104
+ /** Extended (app) properties. */
3105
+ extendedProperties: "http://schemas.openxmlformats.org/officeDocument/2006/extended-properties",
3106
+ /** Dublin Core terms (`dcterms:created`). */
3107
+ dcterms: "http://purl.org/dc/terms/",
3108
+ /** Custom document properties (`docProps/custom.xml`). */
3109
+ customProperties: "http://schemas.openxmlformats.org/officeDocument/2006/custom-properties",
3110
+ /** Document property variant types (`vt:lpwstr`, `vt:vector`). */
3111
+ vt: "http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes",
3112
+ /** XML itself (`xml:space`). */
3113
+ xml: "http://www.w3.org/XML/1998/namespace"
3114
+ };
3115
+ var DEFAULT_XML_LIMITS = {
3116
+ maxDepth: 512,
3117
+ maxNodes: 5e6
3118
+ };
3119
+ var XmlLimitError = class extends Error {
3120
+ code = "xml-limit";
3121
+ /** The limit that was exceeded. */
3122
+ limit;
3123
+ /** Its value: the largest depth or element count allowed. */
3124
+ maximum;
3125
+ constructor(message, limit, maximum) {
3126
+ super(message);
3127
+ this.name = "XmlLimitError";
3128
+ this.limit = limit;
3129
+ this.maximum = maximum;
3130
+ }
3131
+ };
3132
+ var TAG_RE = /<(\/?)([^\s\/><]+)(?:\s+[^\s=\/><]+\s*=\s*(?:"[^"<]*"|'[^'<]*'))*\s*(\/?)>/y;
3133
+ var MARKUP_SKIPS = [
3134
+ ["<!--", "-->"],
3135
+ ["<![CDATA[", "]]>"],
3136
+ ["<?", "?>"]
3137
+ ];
3138
+ function checkXmlLimits(xml, label, limits = {}) {
3139
+ const maxDepth2 = limits.maxDepth ?? DEFAULT_XML_LIMITS.maxDepth;
3140
+ const maxNodes = limits.maxNodes ?? DEFAULT_XML_LIMITS.maxNodes;
3141
+ let depth = 0;
3142
+ let nodes = 0;
3143
+ let at2 = xml.indexOf("<");
3144
+ while (at2 !== -1) {
3145
+ const skip = MARKUP_SKIPS.find(([open]) => xml.startsWith(open, at2));
3146
+ if (skip) {
3147
+ const end = xml.indexOf(skip[1], at2 + skip[0].length);
3148
+ if (end === -1) return;
3149
+ at2 = xml.indexOf("<", end + skip[1].length);
3150
+ continue;
3151
+ }
3152
+ TAG_RE.lastIndex = at2;
3153
+ const match = TAG_RE.exec(xml);
3154
+ if (!match) {
3155
+ at2 = xml.indexOf("<", at2 + 1);
3156
+ continue;
3157
+ }
3158
+ const [, closing, , selfClosing] = match;
3159
+ at2 = xml.indexOf("<", at2 + match[0].length);
3160
+ if (closing) {
3161
+ depth--;
3162
+ continue;
3163
+ }
3164
+ nodes++;
3165
+ if (nodes > maxNodes)
3166
+ throw new XmlLimitError(
3167
+ `${label} XML exceeds the limit of ${maxNodes} elements`,
3168
+ "maxNodes",
3169
+ maxNodes
3170
+ );
3171
+ if (!selfClosing && ++depth > maxDepth2)
3172
+ throw new XmlLimitError(
3173
+ `${label} XML exceeds the nesting depth limit of ${maxDepth2}`,
3174
+ "maxDepth",
3175
+ maxDepth2
3176
+ );
3177
+ }
3178
+ }
3179
+ var CRLF_DECLARATION = /^<\?xml[^>]*\?>\r\n/;
3180
+ var crlfDeclarations = /* @__PURE__ */ new WeakSet();
3181
+ function parseXml(xml, options = {}) {
3182
+ const label = options.label ?? "OOXML";
3183
+ if (/<!DOCTYPE|<!ENTITY/i.test(xml))
3184
+ throw new Error(`${label} XML with DTD or entity declarations is not supported`);
3185
+ checkXmlLimits(xml, label, options.limits);
3186
+ let parseError = "";
3187
+ let parsed;
3188
+ try {
3189
+ parsed = new xmldom.DOMParser({
3190
+ onError: (level2, message) => {
3191
+ if (level2 !== "warning") parseError = message;
3192
+ }
3193
+ }).parseFromString(xml, "application/xml");
3194
+ } catch (error) {
3195
+ throw new Error(
3196
+ `Invalid ${label} XML: ${error instanceof Error ? error.message : String(error)}`,
3197
+ { cause: error }
3198
+ );
3199
+ }
3200
+ if (parseError || !parsed.documentElement)
3201
+ throw new Error(`Invalid ${label} XML: ${parseError || "missing root element"}`);
3202
+ if (CRLF_DECLARATION.test(xml)) crlfDeclarations.add(parsed);
3203
+ return parsed;
3204
+ }
3205
+ var buildXml = (node) => {
3206
+ const xml = new xmldom.XMLSerializer().serializeToString(node);
3207
+ return crlfDeclarations.has(node) ? xml.replace(/^(<\?xml[^>]*\?>)\n/, "$1\r\n") : xml;
3208
+ };
3209
+ var isElement = (node) => node.nodeType === 1;
3210
+ var elements = (parent) => Array.from(parent.childNodes).filter(isElement);
3211
+ function named(element, local, ns, lenient = true) {
3212
+ if (!element || element.localName !== local) return false;
3213
+ return element.namespaceURI === ns || lenient && !element.namespaceURI;
3214
+ }
3215
+ var children2 = (parent, local, ns, lenient = true) => elements(parent).filter((element) => named(element, local, ns, lenient));
3216
+ var first = (parent, local, ns, lenient = true) => parent ? children2(parent, local, ns, lenient)[0] : void 0;
3217
+ function attr(element, local, ns, prefix) {
3218
+ return element?.getAttributeNS(ns, local) ?? element?.getAttribute(`${prefix}:${local}`) ?? void 0;
3219
+ }
3220
+ var relAttr = (element, local) => attr(element, local, NS.r, "r");
3221
+
3046
3222
  // pptx/core/utils/xml-access.ts
3047
3223
  var ATTR_PREFIX = "@_";
3048
3224
  var TEXT_KEY = "#text";
@@ -18225,415 +18401,8 @@ function getContentNodes(nodes) {
18225
18401
  return nodes.filter((n) => n.text.length > 0);
18226
18402
  }
18227
18403
 
18228
- // pptx/core/geometry/custom-geometry-command-order.ts
18229
- var ORDER_SUFFIX = "#pptx-order-";
18230
- var commandOrder = /* @__PURE__ */ new WeakMap();
18231
- var PATH_COMMANDS = /* @__PURE__ */ new Set(["moveTo", "lnTo", "arcTo", "quadBezTo", "cubicBezTo", "close"]);
18232
- function localName4(name) {
18233
- const colon = name.indexOf(":");
18234
- return colon >= 0 ? name.slice(colon + 1) : name;
18235
- }
18236
- function childByLocalName(node, name) {
18237
- if (!node) {
18238
- return void 0;
18239
- }
18240
- const key = Object.keys(node).find((candidate) => localName4(candidate) === name);
18241
- return key ? node[key] : void 0;
18242
- }
18243
- function collectParsedPaths(root) {
18244
- const paths = [];
18245
- const stack = [root];
18246
- while (stack.length > 0) {
18247
- const current = stack.pop();
18248
- if (!current || typeof current !== "object") {
18249
- continue;
18250
- }
18251
- if (Array.isArray(current)) {
18252
- for (let index = current.length - 1; index >= 0; index--) {
18253
- stack.push(current[index]);
18254
- }
18255
- continue;
18256
- }
18257
- const node = current;
18258
- for (const [key, value] of Object.entries(node).reverse()) {
18259
- if (localName4(key) === "custGeom") {
18260
- const pathList = childByLocalName(value, "pathLst");
18261
- const rawPaths = childByLocalName(pathList, "path");
18262
- paths.push(
18263
- ...Array.isArray(rawPaths) ? rawPaths : rawPaths ? [rawPaths] : []
18264
- );
18265
- } else {
18266
- stack.push(value);
18267
- }
18268
- }
18269
- }
18270
- return paths;
18271
- }
18272
- function extractSourceOrders(xml) {
18273
- const orders = [];
18274
- const custGeomPattern = /<([A-Za-z_][\w.-]*:)?custGeom\b[^>]*>([\s\S]*?)<\/\1custGeom\s*>/gu;
18275
- for (const geometryMatch of xml.matchAll(custGeomPattern)) {
18276
- const geometryXml = geometryMatch[2];
18277
- const pathPattern = /<([A-Za-z_][\w.-]*:)?path\b[^>]*>([\s\S]*?)<\/\1path\s*>/gu;
18278
- for (const pathMatch of geometryXml.matchAll(pathPattern)) {
18279
- const order = [
18280
- ...pathMatch[2].matchAll(/<\/?([A-Za-z_][\w.-]*:)?([A-Za-z][\w.-]*)\b[^>]*>/gu)
18281
- ].filter((match) => match[0][1] !== "/" && PATH_COMMANDS.has(match[2])).map((match) => match[2]);
18282
- orders.push(order);
18283
- }
18284
- }
18285
- return orders;
18286
- }
18287
- function ensureArrayLocal(value) {
18288
- return Array.isArray(value) ? value : value === void 0 ? [] : [value];
18289
- }
18290
- function countsSignature(counts) {
18291
- return [...counts.entries()].sort((a, b) => a[0] < b[0] ? -1 : 1).map(([name, count]) => `${name}:${count}`).join(",");
18292
- }
18293
- function pathSignature(path) {
18294
- const counts = /* @__PURE__ */ new Map();
18295
- for (const key of Object.keys(path)) {
18296
- const name = localName4(key);
18297
- if (!PATH_COMMANDS.has(name)) {
18298
- continue;
18299
- }
18300
- counts.set(name, (counts.get(name) ?? 0) + ensureArrayLocal(path[key]).length);
18301
- }
18302
- return countsSignature(counts);
18303
- }
18304
- function orderSignature(order) {
18305
- const counts = /* @__PURE__ */ new Map();
18306
- for (const name of order) {
18307
- counts.set(name, (counts.get(name) ?? 0) + 1);
18308
- }
18309
- return countsSignature(counts);
18310
- }
18311
- function annotateCustomGeometryCommandOrder(xml, parsed) {
18312
- const orders = extractSourceOrders(xml);
18313
- if (orders.length === 0) {
18314
- return;
18315
- }
18316
- const paths = collectParsedPaths(parsed);
18317
- const ordersBySignature = /* @__PURE__ */ new Map();
18318
- for (const order of orders) {
18319
- const signature = orderSignature(order);
18320
- const bucket = ordersBySignature.get(signature);
18321
- if (bucket) {
18322
- bucket.push(order);
18323
- } else {
18324
- ordersBySignature.set(signature, [order]);
18325
- }
18326
- }
18327
- for (const path of paths) {
18328
- const bucket = ordersBySignature.get(pathSignature(path));
18329
- const order = bucket?.shift();
18330
- if (order) {
18331
- commandOrder.set(path, order);
18332
- }
18333
- }
18334
- }
18335
- function orderedPathCommandEntries(path, ensureArray8) {
18336
- const commandItems = (key) => {
18337
- const value = path[key];
18338
- const items = ensureArray8(value);
18339
- return items.length === 0 && localName4(key) === "close" && value !== void 0 ? [value] : items;
18340
- };
18341
- const order = commandOrder.get(path);
18342
- if (!order) {
18343
- return Object.keys(path).flatMap(
18344
- (key) => key.startsWith("@_") ? [] : commandItems(key).map((item) => [key, item])
18345
- );
18346
- }
18347
- const consumed = /* @__PURE__ */ new Map();
18348
- return order.flatMap((name) => {
18349
- const key = Object.keys(path).find((candidate) => localName4(candidate) === name);
18350
- if (!key) {
18351
- return [];
18352
- }
18353
- const items = commandItems(key);
18354
- const index = consumed.get(key) ?? 0;
18355
- consumed.set(key, index + 1);
18356
- return index < items.length ? [[key, items[index]]] : [];
18357
- });
18358
- }
18359
- function inheritCustomGeometryCommandOrder(target, ...sources) {
18360
- let targetSignature;
18361
- for (const source of sources) {
18362
- if (!source) {
18363
- continue;
18364
- }
18365
- const order = commandOrder.get(source);
18366
- if (!order) {
18367
- continue;
18368
- }
18369
- targetSignature ??= pathSignature(target);
18370
- if (orderSignature(order) === targetSignature) {
18371
- commandOrder.set(target, [...order]);
18372
- return;
18373
- }
18374
- }
18375
- }
18376
- function pathListPaths(pathLst) {
18377
- if (!pathLst || typeof pathLst !== "object") {
18378
- return [];
18379
- }
18380
- return ensureArrayLocal(childByLocalName(pathLst, "path")).filter(
18381
- (path) => Boolean(path) && typeof path === "object"
18382
- );
18383
- }
18384
- function readPathListCommandOrder(pathLst) {
18385
- const orders = pathListPaths(pathLst).map((path) => [...commandOrder.get(path) ?? []]);
18386
- return orders.some((order) => order.length > 0) ? orders : void 0;
18387
- }
18388
- function restorePathListCommandOrder(pathLst, orders) {
18389
- if (!orders || orders.length === 0) {
18390
- return;
18391
- }
18392
- pathListPaths(pathLst).forEach((path, index) => {
18393
- const order = orders[index];
18394
- if (!order || order.length === 0 || commandOrder.has(path)) {
18395
- return;
18396
- }
18397
- if (orderSignature([...order]) === pathSignature(path)) {
18398
- commandOrder.set(path, [...order]);
18399
- }
18400
- });
18401
- }
18402
- function orderedXmlKey(baseName, order) {
18403
- return `${baseName}${ORDER_SUFFIX}${order}`;
18404
- }
18405
- function stripXmlOrderSuffix(tagName) {
18406
- const index = tagName.indexOf(ORDER_SUFFIX);
18407
- return index >= 0 ? tagName.slice(0, index) : tagName;
18408
- }
18409
- function stripXmlOrderMarkers(xml) {
18410
- return xml.replace(/#pptx-order-\d+/gu, "");
18411
- }
18412
-
18413
- // pptx/core/core/runtime/smartart-text-order.ts
18414
- var childOrder = /* @__PURE__ */ new WeakMap();
18415
- function localName5(name) {
18416
- const colon = name.indexOf(":");
18417
- return colon >= 0 ? name.slice(colon + 1) : name;
18418
- }
18419
- function isXmlObject2(value) {
18420
- return Boolean(value && typeof value === "object" && !Array.isArray(value));
18421
- }
18422
- function collectParsedParagraphs(root) {
18423
- const paragraphs = [];
18424
- const stack = [root];
18425
- while (stack.length > 0) {
18426
- const current = stack.pop();
18427
- if (!current || typeof current !== "object") {
18428
- continue;
18429
- }
18430
- if (Array.isArray(current)) {
18431
- for (let index = current.length - 1; index >= 0; index--) {
18432
- stack.push(current[index]);
18433
- }
18434
- continue;
18435
- }
18436
- const node = current;
18437
- for (const [key, value] of Object.entries(node).reverse()) {
18438
- if ((localName5(key) === "t" || localName5(key) === "txBody") && value && typeof value === "object") {
18439
- for (const [childKey2, childValue] of Object.entries(value)) {
18440
- if (localName5(childKey2) !== "p") {
18441
- continue;
18442
- }
18443
- paragraphs.push(
18444
- ...(Array.isArray(childValue) ? childValue : [childValue]).filter(isXmlObject2)
18445
- );
18446
- }
18447
- } else {
18448
- stack.push(value);
18449
- }
18450
- }
18451
- }
18452
- return paragraphs;
18453
- }
18454
- function directChildOrder(xml) {
18455
- const order = [];
18456
- let depth = 0;
18457
- for (const match of xml.matchAll(/<(\/)?([A-Za-z_][\w.-]*:)?([A-Za-z][\w.-]*)\b[^>]*>/gu)) {
18458
- const closing = Boolean(match[1]);
18459
- const selfClosing = /\/\s*>$/u.test(match[0]);
18460
- if (closing) {
18461
- depth = Math.max(0, depth - 1);
18462
- continue;
18463
- }
18464
- if (depth === 0) {
18465
- order.push(match[3]);
18466
- }
18467
- if (!selfClosing) {
18468
- depth++;
18469
- }
18470
- }
18471
- return order;
18472
- }
18473
- function extractElementOrders(xml, elementName) {
18474
- const orders = [];
18475
- const pattern = new RegExp(
18476
- `<([A-Za-z_][\\w.-]*:)?${elementName}(?=[\\s/>])[^>]*>([\\s\\S]*?)<\\/\\1${elementName}\\s*>`,
18477
- "gu"
18478
- );
18479
- for (const match of xml.matchAll(pattern)) {
18480
- orders.push(directChildOrder(match[2]));
18481
- }
18482
- return orders;
18483
- }
18484
- function directChildrenByLocalName(paragraphs, name) {
18485
- return paragraphs.flatMap(
18486
- (paragraph) => Object.entries(paragraph).flatMap(([key, value]) => {
18487
- if (localName5(key) !== name) {
18488
- return [];
18489
- }
18490
- const values = Array.isArray(value) ? value : [value];
18491
- return values.filter(isXmlObject2);
18492
- })
18493
- );
18494
- }
18495
- function annotateSmartArtTextOrder(xml, parsed) {
18496
- const paragraphs = collectParsedParagraphs(parsed);
18497
- const orders = extractElementOrders(xml, "p");
18498
- for (let index = 0; index < Math.min(orders.length, paragraphs.length); index++) {
18499
- childOrder.set(paragraphs[index], orders[index]);
18500
- }
18501
- for (const name of ["r", "fld", "br"]) {
18502
- const nodes = directChildrenByLocalName(paragraphs, name);
18503
- const nodeOrders = extractElementOrders(xml, name);
18504
- for (let index = 0; index < Math.min(nodeOrders.length, nodes.length); index++) {
18505
- childOrder.set(nodes[index], nodeOrders[index]);
18506
- }
18507
- }
18508
- }
18509
- function smartArtChildOrder(node) {
18510
- return childOrder.get(node)?.slice();
18511
- }
18512
- function orderedSmartArtTextEntries(paragraph) {
18513
- const keysByName = /* @__PURE__ */ new Map();
18514
- for (const key of Object.keys(paragraph)) {
18515
- if (!key.startsWith("@_")) {
18516
- keysByName.set(localName5(key), key);
18517
- }
18518
- }
18519
- const itemsFor = (key) => {
18520
- const value = paragraph[key];
18521
- return Array.isArray(value) ? value : value === void 0 ? [] : [value];
18522
- };
18523
- const order = childOrder.get(paragraph);
18524
- if (!order) {
18525
- return [...keysByName.values()].flatMap(
18526
- (key) => itemsFor(key).map((item) => [key, item])
18527
- );
18528
- }
18529
- const consumed = /* @__PURE__ */ new Map();
18530
- return order.flatMap((name) => {
18531
- const key = keysByName.get(name);
18532
- if (!key) {
18533
- return [];
18534
- }
18535
- const index = consumed.get(key) ?? 0;
18536
- consumed.set(key, index + 1);
18537
- const item = itemsFor(key)[index];
18538
- return item === void 0 ? [] : [[key, item]];
18539
- });
18540
- }
18541
-
18542
- // pptx/core/core/runtime/smartart-text-paragraphs.ts
18543
- function localName6(name) {
18544
- const colon = name.indexOf(":");
18545
- return colon >= 0 ? name.slice(colon + 1) : name;
18546
- }
18547
- function keyFor(node, name) {
18548
- return Object.keys(node).find((key) => localName6(key) === name);
18549
- }
18550
- function child3(node, name) {
18551
- const key = keyFor(node, name);
18552
- const value = key ? node[key] : void 0;
18553
- if (key && (value === "" || value === void 0)) {
18554
- return {};
18555
- }
18556
- return value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
18557
- }
18558
- function clone(value) {
18559
- return JSON.parse(JSON.stringify(value));
18560
- }
18561
- function directText(node) {
18562
- const key = keyFor(node, "t");
18563
- const value = key ? node[key] : void 0;
18564
- return value === void 0 || value === null ? "" : String(value);
18565
- }
18566
- function parseItem(key, rawValue) {
18567
- const name = localName6(key);
18568
- if (!["r", "br", "fld", "tab"].includes(name)) {
18569
- return { kind: "raw", name: key, value: clone(rawValue) };
18570
- }
18571
- const raw = rawValue && typeof rawValue === "object" && !Array.isArray(rawValue) ? rawValue : {};
18572
- if (name === "r") {
18573
- const run = {
18574
- text: directText(raw),
18575
- rawXml: clone(raw),
18576
- childOrder: smartArtChildOrder(raw)
18577
- };
18578
- const rPr = child3(raw, "rPr");
18579
- if (rPr) {
18580
- run.rPr = clone(rPr);
18581
- }
18582
- return { kind: "run", run };
18583
- }
18584
- if (name === "br") {
18585
- const rPr = child3(raw, "rPr");
18586
- return {
18587
- kind: "break",
18588
- ...rPr ? { rPr: clone(rPr) } : {},
18589
- rawXml: clone(raw),
18590
- childOrder: smartArtChildOrder(raw)
18591
- };
18592
- }
18593
- if (name === "fld") {
18594
- const rPr = child3(raw, "rPr");
18595
- const pPr = child3(raw, "pPr");
18596
- return {
18597
- kind: "field",
18598
- ...raw["@_id"] ? { id: String(raw["@_id"]) } : {},
18599
- ...raw["@_type"] ? { fieldType: String(raw["@_type"]) } : {},
18600
- text: directText(raw),
18601
- ...rPr ? { rPr: clone(rPr) } : {},
18602
- ...pPr ? { pPr: clone(pPr) } : {},
18603
- rawXml: clone(raw),
18604
- childOrder: smartArtChildOrder(raw)
18605
- };
18606
- }
18607
- if (name === "tab") {
18608
- return { kind: "tab", rawXml: clone(raw), childOrder: smartArtChildOrder(raw) };
18609
- }
18610
- return { kind: "raw", name: key, value: clone(rawValue) };
18611
- }
18612
- function parseSmartArtTextParagraphs(point2) {
18613
- const body = child3(point2, "t");
18614
- if (!body) {
18615
- return void 0;
18616
- }
18617
- const pKey = keyFor(body, "p");
18618
- const raw = pKey ? body[pKey] : void 0;
18619
- const paragraphNodes = Array.isArray(raw) ? raw : raw ? [raw] : [];
18620
- if (paragraphNodes.length === 0) {
18621
- return void 0;
18622
- }
18623
- return paragraphNodes.map((paragraph) => {
18624
- const pPr = child3(paragraph, "pPr");
18625
- const endParaRPr = child3(paragraph, "endParaRPr");
18626
- return {
18627
- ...pPr ? { pPr: clone(pPr) } : {},
18628
- items: orderedSmartArtTextEntries(paragraph).flatMap(
18629
- ([key, item]) => ["pPr", "endParaRPr"].includes(localName6(key)) ? [] : [parseItem(key, item)]
18630
- ),
18631
- ...endParaRPr ? { endParaRPr: clone(endParaRPr) } : {},
18632
- rawXml: clone(paragraph)
18633
- };
18634
- });
18635
- }
18636
- function smartArtParagraphsText(paragraphs) {
18404
+ // diagram/text/node-text-paragraphs.ts
18405
+ function diagramParagraphsText(paragraphs) {
18637
18406
  return paragraphs.map(
18638
18407
  (paragraph) => paragraph.items.map((item) => {
18639
18408
  if (item.kind === "run") {
@@ -18649,129 +18418,13 @@ function smartArtParagraphsText(paragraphs) {
18649
18418
  }).join("")
18650
18419
  ).join("\n");
18651
18420
  }
18652
- function firstParagraphRuns(paragraphs) {
18421
+ function firstDiagramParagraphRuns(paragraphs) {
18653
18422
  const runs = paragraphs?.[0]?.items.flatMap((item) => item.kind === "run" ? [item.run] : []);
18654
18423
  return runs && runs.length > 0 ? runs : void 0;
18655
18424
  }
18656
- function objectWithAttributes(raw) {
18657
- return Object.fromEntries(
18658
- Object.entries(raw ?? {}).filter(([key]) => key.startsWith("@_"))
18659
- );
18660
- }
18661
- function appendChild(target, name, value, order) {
18662
- const seen = Object.keys(target).some((key) => key === name || key.startsWith(`${name}#`));
18663
- target[seen ? orderedXmlKey(name, order) : name] = value;
18664
- }
18665
- function buildOrderedContainer(raw, order, replacements) {
18666
- const xml = objectWithAttributes(raw);
18667
- const keys = /* @__PURE__ */ new Map();
18668
- for (const key of Object.keys(raw ?? {})) {
18669
- if (!key.startsWith("@_")) {
18670
- keys.set(localName6(key), key);
18671
- }
18672
- }
18673
- const values = (name) => {
18674
- const key = keys.get(name);
18675
- const value = key ? raw?.[key] : void 0;
18676
- return Array.isArray(value) ? value : value === void 0 ? [] : [value];
18677
- };
18678
- const derivedOrder = order ?? [...keys.keys()].flatMap((name) => values(name).map(() => name));
18679
- const replacementMap = new Map(
18680
- replacements.map(([name, value]) => [localName6(name), [name, value]])
18681
- );
18682
- const emittedReplacements = /* @__PURE__ */ new Set();
18683
- const consumed = /* @__PURE__ */ new Map();
18684
- let outputOrder = 0;
18685
- for (const name of derivedOrder) {
18686
- const replacement = replacementMap.get(name);
18687
- if (replacement && !emittedReplacements.has(name)) {
18688
- appendChild(xml, replacement[0], replacement[1], outputOrder++);
18689
- emittedReplacements.add(name);
18690
- continue;
18691
- }
18692
- const index = consumed.get(name) ?? 0;
18693
- const value = values(name)[index];
18694
- consumed.set(name, index + 1);
18695
- const key = keys.get(name);
18696
- if (key && value !== void 0) {
18697
- appendChild(xml, key, clone(value), outputOrder++);
18698
- }
18699
- }
18700
- for (const [name, value] of replacements) {
18701
- if (!emittedReplacements.has(localName6(name))) {
18702
- appendChild(xml, name, value, outputOrder++);
18703
- }
18704
- }
18705
- return xml;
18706
- }
18707
- function buildItem(item) {
18708
- if (item.kind === "run") {
18709
- return [
18710
- "a:r",
18711
- buildOrderedContainer(item.run.rawXml, item.run.childOrder, [
18712
- ["a:rPr", item.run.rPr ?? { "@_lang": "en-US" }],
18713
- ["a:t", item.run.text]
18714
- ])
18715
- ];
18716
- }
18717
- if (item.kind === "break") {
18718
- return [
18719
- "a:br",
18720
- buildOrderedContainer(
18721
- item.rawXml,
18722
- item.childOrder,
18723
- item.rPr ? [["a:rPr", item.rPr]] : []
18724
- )
18725
- ];
18726
- }
18727
- if (item.kind === "field") {
18728
- const replacements = [];
18729
- if (item.rPr) {
18730
- replacements.push(["a:rPr", item.rPr]);
18731
- }
18732
- if (item.pPr) {
18733
- replacements.push(["a:pPr", item.pPr]);
18734
- }
18735
- replacements.push(["a:t", item.text]);
18736
- const xml = buildOrderedContainer(
18737
- item.rawXml,
18738
- item.childOrder,
18739
- replacements
18740
- );
18741
- if (item.id) {
18742
- xml["@_id"] = item.id;
18743
- }
18744
- if (item.fieldType) {
18745
- xml["@_type"] = item.fieldType;
18746
- }
18747
- return ["a:fld", xml];
18748
- }
18749
- if (item.kind === "tab") {
18750
- return [
18751
- "a:tab",
18752
- buildOrderedContainer(item.rawXml, item.childOrder, [])
18753
- ];
18754
- }
18755
- return [item.name, clone(item.value)];
18756
- }
18757
- function buildSmartArtTextParagraph(paragraph) {
18758
- const xml = objectWithAttributes(paragraph.rawXml);
18759
- if (paragraph.pPr) {
18760
- xml["a:pPr"] = paragraph.pPr;
18761
- }
18762
- let order = 0;
18763
- for (const item of paragraph.items) {
18764
- const [name, value] = buildItem(item);
18765
- appendChild(xml, name, value, order++);
18766
- }
18767
- if (paragraph.endParaRPr) {
18768
- xml["a:endParaRPr"] = paragraph.endParaRPr;
18769
- }
18770
- return xml;
18771
- }
18772
18425
 
18773
- // pptx/core/core/runtime/smartart-text-reconciliation.ts
18774
- function clone2(value) {
18426
+ // diagram/text/node-text-reconciliation.ts
18427
+ function clone(value) {
18775
18428
  return JSON.parse(JSON.stringify(value));
18776
18429
  }
18777
18430
  function itemText(item) {
@@ -18920,7 +18573,10 @@ function removeRange(paragraphs, start, end) {
18920
18573
  const right = paragraphs[atom.paragraph + 1];
18921
18574
  if (left && right) {
18922
18575
  left.items.push(...right.items);
18923
- left.endParaRPr = right.endParaRPr ?? left.endParaRPr;
18576
+ const end2 = right.endParaRPr ?? left.endParaRPr;
18577
+ if (end2) left.endParaRPr = end2;
18578
+ const endProperties = right.endProperties ?? left.endProperties;
18579
+ if (endProperties) left.endProperties = endProperties;
18924
18580
  paragraphs.splice(atom.paragraph + 1, 1);
18925
18581
  }
18926
18582
  }
@@ -18928,7 +18584,7 @@ function removeRange(paragraphs, start, end) {
18928
18584
  }
18929
18585
  function textTemplate(paragraph) {
18930
18586
  const existing = paragraph.items.find((item) => itemText(item) !== void 0);
18931
- return existing ? clone2(existing) : { kind: "run", run: { text: "" } };
18587
+ return existing ? clone(existing) : { kind: "run", run: { text: "" } };
18932
18588
  }
18933
18589
  function insertAt(paragraphs, offset, value) {
18934
18590
  const location = atoms(paragraphs)[offset - 1];
@@ -18942,7 +18598,7 @@ function insertAt(paragraphs, offset, value) {
18942
18598
  const item = paragraph.items[itemIndex];
18943
18599
  const text2 = item ? itemText(item) : void 0;
18944
18600
  if (item && text2 !== void 0 && textOffset > 0 && textOffset < text2.length) {
18945
- splitRight = clone2(item);
18601
+ splitRight = clone(item);
18946
18602
  setItemText(item, text2.slice(0, textOffset));
18947
18603
  setItemText(splitRight, text2.slice(textOffset));
18948
18604
  paragraph.items.splice(itemIndex + 1, 0, splitRight);
@@ -18958,7 +18614,7 @@ function insertAt(paragraphs, offset, value) {
18958
18614
  }
18959
18615
  } else if (part === "\n") {
18960
18616
  const rightItems = paragraph.items.splice(itemIndex + 1);
18961
- const next = clone2(paragraph);
18617
+ const next = clone(paragraph);
18962
18618
  next.items = rightItems;
18963
18619
  paragraphs.splice(paragraphIndex + 1, 0, next);
18964
18620
  paragraphIndex++;
@@ -18978,9 +18634,12 @@ function insertAt(paragraphs, offset, value) {
18978
18634
  }
18979
18635
  }
18980
18636
  }
18981
- function reconcileSmartArtTextParagraphs(paragraphs, desired) {
18982
- const result = clone2(paragraphs);
18983
- const before = smartArtParagraphsText(result);
18637
+ function reconcileDiagramTextParagraphs(paragraphs, desired) {
18638
+ return reconcile(paragraphs, desired);
18639
+ }
18640
+ function reconcile(paragraphs, desired) {
18641
+ const result = clone(paragraphs);
18642
+ const before = diagramParagraphsText(result);
18984
18643
  if (before === desired) {
18985
18644
  return result;
18986
18645
  }
@@ -18994,6 +18653,73 @@ function reconcileSmartArtTextParagraphs(paragraphs, desired) {
18994
18653
  return result.length > 0 ? result : [{ items: [] }];
18995
18654
  }
18996
18655
 
18656
+ // diagram/text/node-text-projection.ts
18657
+ function paragraphMetadata(styler, paragraph, paragraphIndex, bulletEnabled) {
18658
+ const level2 = styler.paragraphLevel(paragraph);
18659
+ const explicitBullet = styler.explicitBullet(paragraph, paragraphIndex);
18660
+ const bulletInfo = explicitBullet ?? (bulletEnabled && level2 >= 1 ? styler.autoBullet() : void 0);
18661
+ return {
18662
+ ...bulletInfo ? { bulletInfo } : {},
18663
+ paragraphLevel: level2,
18664
+ ...paragraph.endParaRPr ? { endParaRunProperties: paragraph.endParaRPr } : {}
18665
+ };
18666
+ }
18667
+ function projectDiagramNodeText(node, styler, fallbackStyle, options = {}) {
18668
+ if (!node.paragraphs?.length) {
18669
+ return [{ text: node.text, style: fallbackStyle }];
18670
+ }
18671
+ const paragraphs = reconcileDiagramTextParagraphs(node.paragraphs, node.text);
18672
+ const segments = [];
18673
+ for (let paragraphIndex = 0; paragraphIndex < paragraphs.length; paragraphIndex++) {
18674
+ const paragraph = paragraphs[paragraphIndex];
18675
+ const pStyle = styler.paragraphStyle(paragraph, fallbackStyle);
18676
+ const metadata = paragraphMetadata(
18677
+ styler,
18678
+ paragraph,
18679
+ paragraphIndex,
18680
+ options.bulletEnabled ?? false
18681
+ );
18682
+ let first2 = true;
18683
+ const push2 = (segment) => {
18684
+ segments.push(first2 ? { ...segment, ...metadata } : segment);
18685
+ first2 = false;
18686
+ };
18687
+ for (const item of paragraph.items) {
18688
+ if (item.kind === "run") {
18689
+ push2({ text: item.run.text, style: styler.runStyle(item.run, pStyle) });
18690
+ } else if (item.kind === "field") {
18691
+ push2({
18692
+ text: item.text,
18693
+ style: styler.runStyle(item, pStyle),
18694
+ fieldType: item.fieldType,
18695
+ fieldGuid: item.id,
18696
+ fieldParagraphPropertiesXml: item.pPr
18697
+ });
18698
+ } else if (item.kind === "break") {
18699
+ push2({
18700
+ text: "\n",
18701
+ style: styler.runStyle(item, pStyle),
18702
+ isLineBreak: true,
18703
+ breakRunProperties: item.rPr
18704
+ });
18705
+ } else if (item.kind === "tab") {
18706
+ push2({ text: " ", style: pStyle });
18707
+ }
18708
+ }
18709
+ if (first2) {
18710
+ push2({ text: "", style: styler.endParagraphStyle(paragraph, pStyle) });
18711
+ }
18712
+ if (paragraphIndex < paragraphs.length - 1) {
18713
+ segments.push({
18714
+ text: "",
18715
+ style: styler.endParagraphStyle(paragraph, pStyle),
18716
+ isParagraphBreak: true
18717
+ });
18718
+ }
18719
+ }
18720
+ return segments;
18721
+ }
18722
+
18997
18723
  // pptx/core/utils/tab-stops.ts
18998
18724
  var EMU_PER_PX2 = 9525;
18999
18725
  function parseTabStops(pPr) {
@@ -19456,7 +19182,7 @@ function parseRunSolidFillColorXml(rPr) {
19456
19182
  }
19457
19183
 
19458
19184
  // pptx/core/utils/smartart-node-text-projection.ts
19459
- function child4(node, name) {
19185
+ function child3(node, name) {
19460
19186
  if (!node) {
19461
19187
  return void 0;
19462
19188
  }
@@ -19467,7 +19193,7 @@ function child4(node, name) {
19467
19193
  function runStyle(rPr, fallback) {
19468
19194
  const xml = rPr;
19469
19195
  const color = parseRunSolidFillColor(xml);
19470
- const extLst = child4(rPr, "extLst");
19196
+ const extLst = child3(rPr, "extLst");
19471
19197
  return {
19472
19198
  ...fallback,
19473
19199
  ...parseRunPropertyAttributes(xml),
@@ -19490,7 +19216,7 @@ function paragraphStyle(paragraph, fallback) {
19490
19216
  const align = parseAlignmentAttr(pPr?.["@_algn"]);
19491
19217
  const rtl = parseParagraphRtl(pPr);
19492
19218
  const tabStops = parseTabStops(pPr);
19493
- const extLst = child4(paragraph.pPr, "extLst");
19219
+ const extLst = child3(paragraph.pPr, "extLst");
19494
19220
  return {
19495
19221
  ...fallback,
19496
19222
  ...align ? { align } : {},
@@ -19498,78 +19224,25 @@ function paragraphStyle(paragraph, fallback) {
19498
19224
  ...parseParagraphExtraAttributes(pPr),
19499
19225
  ...rtl !== void 0 ? { rtl } : {},
19500
19226
  ...tabStops ? { tabStops } : {},
19501
- ...parseParagraphSpacingPx(child4(paragraph.pPr, "spcBef")) !== void 0 ? { paragraphSpacingBefore: parseParagraphSpacingPx(child4(paragraph.pPr, "spcBef")) } : {},
19502
- ...parseParagraphSpacingPx(child4(paragraph.pPr, "spcAft")) !== void 0 ? { paragraphSpacingAfter: parseParagraphSpacingPx(child4(paragraph.pPr, "spcAft")) } : {},
19503
- ...parseLineSpacingMultiplier(child4(paragraph.pPr, "lnSpc")) !== void 0 ? { lineSpacing: parseLineSpacingMultiplier(child4(paragraph.pPr, "lnSpc")) } : {},
19504
- ...parseLineSpacingExactPt(child4(paragraph.pPr, "lnSpc")) !== void 0 ? { lineSpacingExactPt: parseLineSpacingExactPt(child4(paragraph.pPr, "lnSpc")) } : {},
19227
+ ...parseParagraphSpacingPx(child3(paragraph.pPr, "spcBef")) !== void 0 ? { paragraphSpacingBefore: parseParagraphSpacingPx(child3(paragraph.pPr, "spcBef")) } : {},
19228
+ ...parseParagraphSpacingPx(child3(paragraph.pPr, "spcAft")) !== void 0 ? { paragraphSpacingAfter: parseParagraphSpacingPx(child3(paragraph.pPr, "spcAft")) } : {},
19229
+ ...parseLineSpacingMultiplier(child3(paragraph.pPr, "lnSpc")) !== void 0 ? { lineSpacing: parseLineSpacingMultiplier(child3(paragraph.pPr, "lnSpc")) } : {},
19230
+ ...parseLineSpacingExactPt(child3(paragraph.pPr, "lnSpc")) !== void 0 ? { lineSpacingExactPt: parseLineSpacingExactPt(child3(paragraph.pPr, "lnSpc")) } : {},
19505
19231
  ...extLst ? { paragraphPropertiesExtLstXml: extLst } : {},
19506
- ...child4(paragraph.pPr, "defRPr") ? { paragraphDefaultRunPropertiesXml: child4(paragraph.pPr, "defRPr") } : {}
19232
+ ...child3(paragraph.pPr, "defRPr") ? { paragraphDefaultRunPropertiesXml: child3(paragraph.pPr, "defRPr") } : {}
19507
19233
  };
19508
19234
  }
19509
19235
  var AUTO_BULLET_CHAR = "\u2022";
19510
- function paragraphMetadata(paragraph, paragraphIndex, bulletEnabled) {
19511
- const pPr = paragraph.pPr;
19512
- const level2 = parseParagraphLevel(pPr);
19513
- const explicitBullet = parseBulletInfo(pPr, paragraphIndex) ?? void 0;
19514
- const bulletInfo = explicitBullet ?? (bulletEnabled && (level2 ?? 0) >= 1 ? { char: AUTO_BULLET_CHAR } : void 0);
19515
- return {
19516
- ...bulletInfo ? { bulletInfo } : {},
19517
- paragraphLevel: level2,
19518
- ...paragraph.endParaRPr ? { endParaRunProperties: paragraph.endParaRPr } : {}
19519
- };
19520
- }
19236
+ var PPTX_TEXT_STYLER = {
19237
+ paragraphStyle,
19238
+ runStyle: (item, pStyle) => resolvedRunStyle(item.rPr, item.style, pStyle),
19239
+ endParagraphStyle: (paragraph, pStyle) => ({ ...pStyle, ...paragraph.endParaStyle }),
19240
+ paragraphLevel: (paragraph) => parseParagraphLevel(paragraph.pPr),
19241
+ explicitBullet: (paragraph, index) => parseBulletInfo(paragraph.pPr, index) ?? void 0,
19242
+ autoBullet: () => ({ char: AUTO_BULLET_CHAR })
19243
+ };
19521
19244
  function projectSmartArtNodeText(node, fallbackStyle = {}, options = {}) {
19522
- if (!node.paragraphs?.length) {
19523
- return [{ text: node.text, style: fallbackStyle }];
19524
- }
19525
- const paragraphs = reconcileSmartArtTextParagraphs(node.paragraphs, node.text);
19526
- const segments = [];
19527
- for (let paragraphIndex = 0; paragraphIndex < paragraphs.length; paragraphIndex++) {
19528
- const paragraph = paragraphs[paragraphIndex];
19529
- const pStyle = paragraphStyle(paragraph, fallbackStyle);
19530
- const metadata = paragraphMetadata(paragraph, paragraphIndex, options.bulletEnabled ?? false);
19531
- let first2 = true;
19532
- const push2 = (segment) => {
19533
- segments.push(first2 ? { ...segment, ...metadata } : segment);
19534
- first2 = false;
19535
- };
19536
- for (const item of paragraph.items) {
19537
- if (item.kind === "run") {
19538
- push2({
19539
- text: item.run.text,
19540
- style: resolvedRunStyle(item.run.rPr, item.run.style, pStyle)
19541
- });
19542
- } else if (item.kind === "field") {
19543
- push2({
19544
- text: item.text,
19545
- style: resolvedRunStyle(item.rPr, item.style, pStyle),
19546
- fieldType: item.fieldType,
19547
- fieldGuid: item.id,
19548
- fieldParagraphPropertiesXml: item.pPr
19549
- });
19550
- } else if (item.kind === "break") {
19551
- push2({
19552
- text: "\n",
19553
- style: resolvedRunStyle(item.rPr, item.style, pStyle),
19554
- isLineBreak: true,
19555
- breakRunProperties: item.rPr
19556
- });
19557
- } else if (item.kind === "tab") {
19558
- push2({ text: " ", style: pStyle });
19559
- }
19560
- }
19561
- if (first2) {
19562
- push2({ text: "", style: { ...pStyle, ...paragraph.endParaStyle } });
19563
- }
19564
- if (paragraphIndex < paragraphs.length - 1) {
19565
- segments.push({
19566
- text: "",
19567
- style: { ...pStyle, ...paragraph.endParaStyle },
19568
- isParagraphBreak: true
19569
- });
19570
- }
19571
- }
19572
- return segments;
19245
+ return projectDiagramNodeText(node, PPTX_TEXT_STYLER, fallbackStyle, options);
19573
19246
  }
19574
19247
 
19575
19248
  // diagram/layout/smartart-interpreter-fold-text.ts
@@ -27477,7 +27150,7 @@ function interpretSmartArtLayout(view, input) {
27477
27150
 
27478
27151
  // pptx/core/utils/smartart-ordered-xml-adapter.ts
27479
27152
  var converted = /* @__PURE__ */ new WeakMap();
27480
- var localName7 = (key) => key.slice(key.indexOf(":") + 1);
27153
+ var localName4 = (key) => key.slice(key.indexOf(":") + 1);
27481
27154
  function convert(value, name) {
27482
27155
  let byName = converted.get(value);
27483
27156
  const cached = byName?.get(name);
@@ -27489,14 +27162,14 @@ function convert(value, name) {
27489
27162
  if (key.startsWith("@_")) {
27490
27163
  const attribute3 = key.slice(2);
27491
27164
  if (attribute3 !== "xmlns" && !attribute3.startsWith("xmlns:") && entry != null) {
27492
- element.attrs[localName7(attribute3)] = String(entry);
27165
+ element.attrs[localName4(attribute3)] = String(entry);
27493
27166
  }
27494
27167
  continue;
27495
27168
  }
27496
27169
  if (key.startsWith("#") || key.startsWith("?")) {
27497
27170
  continue;
27498
27171
  }
27499
- const childName = localName7(key);
27172
+ const childName = localName4(key);
27500
27173
  for (const child16 of Array.isArray(entry) ? entry : [entry]) {
27501
27174
  element.children.push(
27502
27175
  child16 && typeof child16 === "object" ? convert(child16, childName) : { name: childName, attrs: {}, children: [] }
@@ -29018,6 +28691,176 @@ function ruleAttributes(value) {
29018
28691
  return [...targetAttributes(value), ["max", text(value.max)]];
29019
28692
  }
29020
28693
 
28694
+ // diagram/edit/shape-match.ts
28695
+ function findDiagramShapeIndex(shapes, nodes, nodeId) {
28696
+ for (let i2 = 0; i2 < shapes.length; i2++) {
28697
+ const id = shapes[i2].id;
28698
+ if (id.startsWith("reflow-") && id.endsWith(`-${nodeId}`)) {
28699
+ return i2;
28700
+ }
28701
+ }
28702
+ if (shapes.length === nodes.length) {
28703
+ const nodeIdx = nodes.findIndex((n) => n.id === nodeId);
28704
+ if (nodeIdx >= 0) {
28705
+ return nodeIdx;
28706
+ }
28707
+ }
28708
+ const node = nodes.find((n) => n.id === nodeId);
28709
+ if (node?.text) {
28710
+ const text2 = node.text.trim();
28711
+ const matches = [];
28712
+ for (let i2 = 0; i2 < shapes.length; i2++) {
28713
+ if (shapes[i2].text?.trim() === text2) {
28714
+ matches.push(i2);
28715
+ }
28716
+ }
28717
+ if (matches.length === 1) {
28718
+ return matches[0];
28719
+ }
28720
+ }
28721
+ return -1;
28722
+ }
28723
+ function patchDiagramShape(shapes, nodes, nodeId, patch) {
28724
+ if (!shapes || shapes.length === 0) {
28725
+ return shapes;
28726
+ }
28727
+ const idx = findDiagramShapeIndex(shapes, nodes, nodeId);
28728
+ if (idx < 0) {
28729
+ return [];
28730
+ }
28731
+ const updated = [...shapes];
28732
+ updated[idx] = patch(updated[idx]);
28733
+ return updated;
28734
+ }
28735
+
28736
+ // crypto/uuid.ts
28737
+ function randomBytes(length) {
28738
+ const cryptoObj = globalThis.crypto;
28739
+ if (cryptoObj?.getRandomValues) return cryptoObj.getRandomValues(new Uint8Array(length));
28740
+ const bytes = new Uint8Array(length);
28741
+ for (let i2 = 0; i2 < length; i2++) bytes[i2] = Math.floor(Math.random() * 256);
28742
+ return bytes;
28743
+ }
28744
+ function randomHex(length) {
28745
+ return Array.from(randomBytes(Math.ceil(length / 2)), (b) => b.toString(16).padStart(2, "0")).join("").slice(0, length);
28746
+ }
28747
+ function createOfficeGuid() {
28748
+ const variantNibble = (8 + (randomBytes(1)[0] ?? 0) % 4).toString(16);
28749
+ const uuid = globalThis.crypto?.randomUUID?.() ?? `${randomHex(8)}-${randomHex(4)}-4${randomHex(3)}-${variantNibble}${randomHex(3)}-${randomHex(12)}`;
28750
+ return `{${uuid.toUpperCase()}}`;
28751
+ }
28752
+
28753
+ // diagram/edit/node-ops.ts
28754
+ function setDiagramNodeText(data, nodeId, newText) {
28755
+ const nodes = data.nodes.map((n) => n.id === nodeId ? { ...n, text: newText } : n);
28756
+ return {
28757
+ ...data,
28758
+ nodes,
28759
+ drawingDirty: true,
28760
+ drawingShapes: patchDiagramShape(data.drawingShapes, data.nodes, nodeId, (shape) => ({
28761
+ ...shape,
28762
+ text: newText
28763
+ }))
28764
+ };
28765
+ }
28766
+
28767
+ // diagram/write/data.ts
28768
+ var DIAGRAM_XML_PROLOG = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
28769
+ var DIAGRAM_DATA_XMLNS = 'xmlns:dgm="http://schemas.openxmlformats.org/drawingml/2006/diagram" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"';
28770
+ function escapeDiagramXml(value) {
28771
+ return value.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll('"', "&quot;").replaceAll("'", "&apos;");
28772
+ }
28773
+ function diagramAvLstXml(adjustments) {
28774
+ const entries = Object.entries(adjustments ?? {}).filter(([, v]) => Number.isFinite(v));
28775
+ if (entries.length === 0) {
28776
+ return "<a:avLst/>";
28777
+ }
28778
+ const gds = entries.map(([name, v]) => `<a:gd name="${escapeDiagramXml(name)}" fmla="val ${Math.round(v)}"/>`).join("");
28779
+ return `<a:avLst>${gds}</a:avLst>`;
28780
+ }
28781
+ var GUID_MODEL_ID = /^\{[0-9A-Fa-f]{8}(?:-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12}\}$/u;
28782
+ var EMPTY_TEXT_BODY = '<dgm:t><a:bodyPr/><a:lstStyle/><a:p><a:endParaRPr lang="en-US"/></a:p></dgm:t>';
28783
+ function contentTextBody(text2) {
28784
+ if (!text2) {
28785
+ return EMPTY_TEXT_BODY;
28786
+ }
28787
+ return `<dgm:t><a:bodyPr/><a:lstStyle/><a:p><a:r><a:rPr lang="en-US"/><a:t>${escapeDiagramXml(text2)}</a:t></a:r></a:p></dgm:t>`;
28788
+ }
28789
+ function contentPointXml(guid, node) {
28790
+ const prSet = node.text ? "<dgm:prSet/>" : '<dgm:prSet phldrT="[Text]" phldr="1"/>';
28791
+ const typeAttr = node.nodeType === "asst" ? ' type="asst"' : "";
28792
+ return `<dgm:pt modelId="${guid}"${typeAttr}>${prSet}<dgm:spPr/>${contentTextBody(node.text ?? "")}</dgm:pt>`;
28793
+ }
28794
+ function transPointXml(guid, type, cxnGuid) {
28795
+ return `<dgm:pt modelId="${guid}" type="${type}" cxnId="${cxnGuid}"><dgm:prSet/><dgm:spPr/>${EMPTY_TEXT_BODY}</dgm:pt>`;
28796
+ }
28797
+ function docPointXml(docGuid, ids) {
28798
+ return `<dgm:pt modelId="${docGuid}" type="doc"><dgm:prSet loTypeId="${escapeDiagramXml(ids.layoutUniqueId)}" loCatId="${escapeDiagramXml(ids.layoutCategory)}" qsTypeId="${escapeDiagramXml(ids.quickStyleUniqueId)}" qsCatId="simple" csTypeId="${escapeDiagramXml(ids.colorsUniqueId)}" csCatId="${escapeDiagramXml(ids.colorsCategory)}"/><dgm:spPr/>${EMPTY_TEXT_BODY}</dgm:pt>`;
28799
+ }
28800
+ function buildDiagramNodeGuidMap(nodes, createModelId = createOfficeGuid) {
28801
+ const guidByNodeId = /* @__PURE__ */ new Map();
28802
+ for (const node of nodes) {
28803
+ if (node.id && !guidByNodeId.has(node.id)) {
28804
+ guidByNodeId.set(node.id, GUID_MODEL_ID.test(node.id) ? node.id : createModelId());
28805
+ }
28806
+ }
28807
+ return guidByNodeId;
28808
+ }
28809
+ function buildDiagramPresentationGuidMap(nodes, createModelId = createOfficeGuid) {
28810
+ const guidByNodeId = /* @__PURE__ */ new Map();
28811
+ for (const node of nodes) {
28812
+ if (node.id && !guidByNodeId.has(node.id)) {
28813
+ guidByNodeId.set(node.id, createModelId());
28814
+ }
28815
+ }
28816
+ return guidByNodeId;
28817
+ }
28818
+ var DSP_DATA_MODEL_EXT_URI = "http://schemas.microsoft.com/office/drawing/2008/diagram";
28819
+ function writeFabricatedDiagramData(data, ids, options = {}) {
28820
+ const createModelId = options.createModelId ?? createOfficeGuid;
28821
+ const docGuid = createModelId();
28822
+ const guidByNodeId = options.guidByNodeId ?? buildDiagramNodeGuidMap(data.nodes, createModelId);
28823
+ const presentationGuidByNodeId = options.presentationGuidByNodeId ?? buildDiagramPresentationGuidMap(data.nodes, createModelId);
28824
+ const points = [docPointXml(docGuid, ids)];
28825
+ const connections = [];
28826
+ const nextSrcOrd = /* @__PURE__ */ new Map();
28827
+ for (const node of data.nodes) {
28828
+ const guid = node.id ? guidByNodeId.get(node.id) : void 0;
28829
+ if (!guid) {
28830
+ continue;
28831
+ }
28832
+ const parentGuid = node.parentId && guidByNodeId.get(node.parentId) || docGuid;
28833
+ const srcOrd = nextSrcOrd.get(parentGuid) ?? 0;
28834
+ nextSrcOrd.set(parentGuid, srcOrd + 1);
28835
+ const cxnGuid = createModelId();
28836
+ const parTransGuid = createModelId();
28837
+ const sibTransGuid = createModelId();
28838
+ points.push(contentPointXml(guid, node));
28839
+ points.push(transPointXml(parTransGuid, "parTrans", cxnGuid));
28840
+ points.push(transPointXml(sibTransGuid, "sibTrans", cxnGuid));
28841
+ connections.push(
28842
+ `<dgm:cxn modelId="${cxnGuid}" srcId="${parentGuid}" destId="${guid}" srcOrd="${srcOrd}" destOrd="0" parTransId="${parTransGuid}" sibTransId="${sibTransGuid}"/>`
28843
+ );
28844
+ const presentationGuid = node.id ? presentationGuidByNodeId.get(node.id) : void 0;
28845
+ if (presentationGuid) {
28846
+ points.push(
28847
+ `<dgm:pt modelId="${presentationGuid}" type="pres"><dgm:prSet presAssocID="${guid}" presName="node" presStyleLbl="node1" presStyleIdx="${srcOrd}" presStyleCnt="${data.nodes.length}"/><dgm:spPr/></dgm:pt>`
28848
+ );
28849
+ connections.push(
28850
+ `<dgm:cxn modelId="${createModelId()}" type="presOf" srcId="${guid}" destId="${presentationGuid}" srcOrd="0" destOrd="0" presId="${escapeDiagramXml(ids.layoutUniqueId)}"/>`
28851
+ );
28852
+ }
28853
+ }
28854
+ return `${DIAGRAM_XML_PROLOG}\r
28855
+ <dgm:dataModel ${DIAGRAM_DATA_XMLNS}><dgm:ptLst>${points.join("")}</dgm:ptLst><dgm:cxnLst>${connections.join("")}</dgm:cxnLst><dgm:bg/><dgm:whole/>${dataModelExtXml(options.drawingRelId)}</dgm:dataModel>`;
28856
+ }
28857
+ function dataModelExtXml(drawingRelId) {
28858
+ if (!drawingRelId) {
28859
+ return "";
28860
+ }
28861
+ return `<dgm:extLst><a:ext uri="${DSP_DATA_MODEL_EXT_URI}"><dsp:dataModelExt xmlns:dsp="${DSP_DATA_MODEL_EXT_URI}" relId="${escapeDiagramXml(drawingRelId)}" minVer="http://schemas.openxmlformats.org/drawingml/2006/diagram"/></a:ext></dgm:extLst>`;
28862
+ }
28863
+
29021
28864
  // diagram/attributes.ts
29022
28865
  var optionalString2 = (value) => {
29023
28866
  const text2 = (value ?? "").trim();
@@ -29063,182 +28906,6 @@ function parseRelationshipIdAttributes(get) {
29063
28906
  return result;
29064
28907
  }
29065
28908
 
29066
- // xml/namespaces.ts
29067
- var NS = {
29068
- /** WordprocessingML main. */
29069
- w: "http://schemas.openxmlformats.org/wordprocessingml/2006/main",
29070
- /** PresentationML main. */
29071
- p: "http://schemas.openxmlformats.org/presentationml/2006/main",
29072
- /** SpreadsheetML main. */
29073
- x: "http://schemas.openxmlformats.org/spreadsheetml/2006/main",
29074
- /** DrawingML main. */
29075
- a: "http://schemas.openxmlformats.org/drawingml/2006/main",
29076
- /** DrawingML chart. */
29077
- c: "http://schemas.openxmlformats.org/drawingml/2006/chart",
29078
- /** Office 2016 extended charts (waterfall, histogram, funnel...; `cx:chartSpace`). */
29079
- cx: "http://schemas.microsoft.com/office/drawing/2014/chartex",
29080
- /** Office 2010 chart extensions, including built-in modern chart styles. */
29081
- c14: "http://schemas.microsoft.com/office/drawing/2007/8/2/chart",
29082
- /** DrawingML diagram (SmartArt) main. */
29083
- dgm: "http://schemas.openxmlformats.org/drawingml/2006/diagram",
29084
- /** Office 2007+ diagram drawing (`dsp`). */
29085
- dsp: "http://schemas.microsoft.com/office/drawing/2008/diagram",
29086
- /** DrawingML Word drawing (`wp:inline`, `wp:anchor`). */
29087
- wp: "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing",
29088
- /** DrawingML picture. */
29089
- pic: "http://schemas.openxmlformats.org/drawingml/2006/picture",
29090
- /** Word 2010 shapes (`wps`). */
29091
- wps: "http://schemas.microsoft.com/office/word/2010/wordprocessingShape",
29092
- /** Relationships (`r:id`, `r:embed`). */
29093
- r: "http://schemas.openxmlformats.org/officeDocument/2006/relationships",
29094
- /** Markup compatibility (`mc:AlternateContent`). */
29095
- mc: "http://schemas.openxmlformats.org/markup-compatibility/2006",
29096
- /** OPC relationships part. */
29097
- rels: "http://schemas.openxmlformats.org/package/2006/relationships",
29098
- /** OPC content types part. */
29099
- contentTypes: "http://schemas.openxmlformats.org/package/2006/content-types",
29100
- /** Office Math. */
29101
- m: "http://schemas.openxmlformats.org/officeDocument/2006/math",
29102
- /** Core properties. */
29103
- cp: "http://schemas.openxmlformats.org/package/2006/metadata/core-properties",
29104
- /** Dublin Core elements. */
29105
- dc: "http://purl.org/dc/elements/1.1/",
29106
- /** Legacy VML. */
29107
- v: "urn:schemas-microsoft-com:vml",
29108
- /** Office VML extensions. */
29109
- o: "urn:schemas-microsoft-com:office:office",
29110
- /** Word VML extensions. */
29111
- w10: "urn:schemas-microsoft-com:office:word",
29112
- /** SpreadsheetML drawing (`xdr:wsDr`, cell anchors). */
29113
- xdr: "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing",
29114
- /** SpreadsheetML 2009 extensions (`x14:conditionalFormatting`, `x14:dataBar`). */
29115
- x14: "http://schemas.microsoft.com/office/spreadsheetml/2009/9/main",
29116
- /** SpreadsheetML 2009 attribute extensions (`x14ac:dyDescent`). */
29117
- x14ac: "http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac",
29118
- /** SpreadsheetML revision ids (`xr:uid`). */
29119
- xr: "http://schemas.microsoft.com/office/spreadsheetml/2014/revision",
29120
- /** Excel threaded comments and persons. */
29121
- tc: "http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments",
29122
- /** Legacy VML Excel client data (`x:ClientData`). */
29123
- xv: "urn:schemas-microsoft-com:office:excel",
29124
- /** Extended (app) properties. */
29125
- extendedProperties: "http://schemas.openxmlformats.org/officeDocument/2006/extended-properties",
29126
- /** Dublin Core terms (`dcterms:created`). */
29127
- dcterms: "http://purl.org/dc/terms/",
29128
- /** Custom document properties (`docProps/custom.xml`). */
29129
- customProperties: "http://schemas.openxmlformats.org/officeDocument/2006/custom-properties",
29130
- /** Document property variant types (`vt:lpwstr`, `vt:vector`). */
29131
- vt: "http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes",
29132
- /** XML itself (`xml:space`). */
29133
- xml: "http://www.w3.org/XML/1998/namespace"
29134
- };
29135
- var DEFAULT_XML_LIMITS = {
29136
- maxDepth: 512,
29137
- maxNodes: 5e6
29138
- };
29139
- var XmlLimitError = class extends Error {
29140
- code = "xml-limit";
29141
- /** The limit that was exceeded. */
29142
- limit;
29143
- /** Its value: the largest depth or element count allowed. */
29144
- maximum;
29145
- constructor(message, limit, maximum) {
29146
- super(message);
29147
- this.name = "XmlLimitError";
29148
- this.limit = limit;
29149
- this.maximum = maximum;
29150
- }
29151
- };
29152
- var TAG_RE = /<(\/?)([^\s\/><]+)(?:\s+[^\s=\/><]+\s*=\s*(?:"[^"<]*"|'[^'<]*'))*\s*(\/?)>/y;
29153
- var MARKUP_SKIPS = [
29154
- ["<!--", "-->"],
29155
- ["<![CDATA[", "]]>"],
29156
- ["<?", "?>"]
29157
- ];
29158
- function checkXmlLimits(xml, label, limits = {}) {
29159
- const maxDepth2 = limits.maxDepth ?? DEFAULT_XML_LIMITS.maxDepth;
29160
- const maxNodes = limits.maxNodes ?? DEFAULT_XML_LIMITS.maxNodes;
29161
- let depth = 0;
29162
- let nodes = 0;
29163
- let at2 = xml.indexOf("<");
29164
- while (at2 !== -1) {
29165
- const skip = MARKUP_SKIPS.find(([open]) => xml.startsWith(open, at2));
29166
- if (skip) {
29167
- const end = xml.indexOf(skip[1], at2 + skip[0].length);
29168
- if (end === -1) return;
29169
- at2 = xml.indexOf("<", end + skip[1].length);
29170
- continue;
29171
- }
29172
- TAG_RE.lastIndex = at2;
29173
- const match = TAG_RE.exec(xml);
29174
- if (!match) {
29175
- at2 = xml.indexOf("<", at2 + 1);
29176
- continue;
29177
- }
29178
- const [, closing, , selfClosing] = match;
29179
- at2 = xml.indexOf("<", at2 + match[0].length);
29180
- if (closing) {
29181
- depth--;
29182
- continue;
29183
- }
29184
- nodes++;
29185
- if (nodes > maxNodes)
29186
- throw new XmlLimitError(
29187
- `${label} XML exceeds the limit of ${maxNodes} elements`,
29188
- "maxNodes",
29189
- maxNodes
29190
- );
29191
- if (!selfClosing && ++depth > maxDepth2)
29192
- throw new XmlLimitError(
29193
- `${label} XML exceeds the nesting depth limit of ${maxDepth2}`,
29194
- "maxDepth",
29195
- maxDepth2
29196
- );
29197
- }
29198
- }
29199
- var CRLF_DECLARATION = /^<\?xml[^>]*\?>\r\n/;
29200
- var crlfDeclarations = /* @__PURE__ */ new WeakSet();
29201
- function parseXml(xml, options = {}) {
29202
- const label = options.label ?? "OOXML";
29203
- if (/<!DOCTYPE|<!ENTITY/i.test(xml))
29204
- throw new Error(`${label} XML with DTD or entity declarations is not supported`);
29205
- checkXmlLimits(xml, label, options.limits);
29206
- let parseError = "";
29207
- let parsed;
29208
- try {
29209
- parsed = new xmldom.DOMParser({
29210
- onError: (level2, message) => {
29211
- if (level2 !== "warning") parseError = message;
29212
- }
29213
- }).parseFromString(xml, "application/xml");
29214
- } catch (error) {
29215
- throw new Error(
29216
- `Invalid ${label} XML: ${error instanceof Error ? error.message : String(error)}`,
29217
- { cause: error }
29218
- );
29219
- }
29220
- if (parseError || !parsed.documentElement)
29221
- throw new Error(`Invalid ${label} XML: ${parseError || "missing root element"}`);
29222
- if (CRLF_DECLARATION.test(xml)) crlfDeclarations.add(parsed);
29223
- return parsed;
29224
- }
29225
- var buildXml = (node) => {
29226
- const xml = new xmldom.XMLSerializer().serializeToString(node);
29227
- return crlfDeclarations.has(node) ? xml.replace(/^(<\?xml[^>]*\?>)\n/, "$1\r\n") : xml;
29228
- };
29229
- var isElement = (node) => node.nodeType === 1;
29230
- var elements = (parent) => Array.from(parent.childNodes).filter(isElement);
29231
- function named(element, local, ns, lenient = true) {
29232
- if (!element || element.localName !== local) return false;
29233
- return element.namespaceURI === ns || lenient && !element.namespaceURI;
29234
- }
29235
- var children2 = (parent, local, ns, lenient = true) => elements(parent).filter((element) => named(element, local, ns, lenient));
29236
- var first = (parent, local, ns, lenient = true) => parent ? children2(parent, local, ns, lenient)[0] : void 0;
29237
- function attr(element, local, ns, prefix) {
29238
- return element?.getAttributeNS(ns, local) ?? element?.getAttribute(`${prefix}:${local}`) ?? void 0;
29239
- }
29240
- var relAttr = (element, local) => attr(element, local, NS.r, "r");
29241
-
29242
28909
  // opc/signature/detection.ts
29243
28910
  var SIGNATURE_PART_PREFIX = "_xmlsignatures/";
29244
28911
  var SIGNATURE_PREFIX = SIGNATURE_PART_PREFIX;
@@ -29346,7 +29013,7 @@ function applySmartArtConnectionAttributes(xml, connection, fallbackModelId) {
29346
29013
  }
29347
29014
 
29348
29015
  // pptx/core/utils/smartart-node-style-role.ts
29349
- function child5(node, name, localName14) {
29016
+ function child4(node, name, localName14) {
29350
29017
  if (!node) {
29351
29018
  return void 0;
29352
29019
  }
@@ -29355,7 +29022,7 @@ function child5(node, name, localName14) {
29355
29022
  return Array.isArray(value) ? value[0] : value;
29356
29023
  }
29357
29024
  function presPointRole(pt, localName14) {
29358
- const prSet = child5(pt, "prSet", localName14);
29025
+ const prSet = child4(pt, "prSet", localName14);
29359
29026
  const styleRole = String(prSet?.["@_presStyleLbl"] ?? "").trim();
29360
29027
  if (!styleRole) {
29361
29028
  return void 0;
@@ -29425,7 +29092,7 @@ function resolveSmartArtNodeCoherent3DOff(points, connections, localName14) {
29425
29092
  if (!presPoint) {
29426
29093
  continue;
29427
29094
  }
29428
- const prSet = child5(presPoint, "prSet", localName14);
29095
+ const prSet = child4(presPoint, "prSet", localName14);
29429
29096
  const raw = String(prSet?.["@_coherent3DOff"] ?? "").trim().toLowerCase();
29430
29097
  if (raw === "1" || raw === "true") {
29431
29098
  nodeIds.add(connection.sourceId);
@@ -29435,7 +29102,7 @@ function resolveSmartArtNodeCoherent3DOff(points, connections, localName14) {
29435
29102
  }
29436
29103
 
29437
29104
  // pptx/core/utils/smartart-effect-intensity.ts
29438
- function child6(node, name, localName14) {
29105
+ function child5(node, name, localName14) {
29439
29106
  if (!node) {
29440
29107
  return void 0;
29441
29108
  }
@@ -29444,13 +29111,13 @@ function child6(node, name, localName14) {
29444
29111
  return Array.isArray(value) ? value[0] : value;
29445
29112
  }
29446
29113
  function refIndex(styleLbl, refName, localName14) {
29447
- const style = child6(styleLbl, "style", localName14);
29448
- const ref = child6(style, refName, localName14);
29114
+ const style = child5(styleLbl, "style", localName14);
29115
+ const ref = child5(style, refName, localName14);
29449
29116
  const parsed = Number.parseInt(String(ref?.["@_idx"] ?? ""), 10);
29450
29117
  return Number.isFinite(parsed) ? parsed : void 0;
29451
29118
  }
29452
29119
  function hasBevelGeometry(styleLbl, localName14) {
29453
- const sp3d = child6(styleLbl, "sp3d", localName14);
29120
+ const sp3d = child5(styleLbl, "sp3d", localName14);
29454
29121
  if (!sp3d) {
29455
29122
  return false;
29456
29123
  }
@@ -29689,52 +29356,7 @@ function detectFontFormat(data) {
29689
29356
 
29690
29357
  // pptx/core/utils/smartart-editing-node-ops.ts
29691
29358
  function updateSmartArtNodeText(data, nodeId, newText) {
29692
- const nodes = data.nodes.map((n) => n.id === nodeId ? { ...n, text: newText } : n);
29693
- return {
29694
- ...data,
29695
- nodes,
29696
- drawingDirty: true,
29697
- drawingShapes: patchDrawingShapeText(data.drawingShapes, data.nodes, nodeId, newText)
29698
- };
29699
- }
29700
- function patchDrawingShapeText(shapes, nodes, nodeId, newText) {
29701
- if (!shapes || shapes.length === 0) {
29702
- return shapes;
29703
- }
29704
- const idx = findDrawingShapeIndex(shapes, nodes, nodeId);
29705
- if (idx < 0) {
29706
- return [];
29707
- }
29708
- const updated = [...shapes];
29709
- updated[idx] = { ...updated[idx], text: newText };
29710
- return updated;
29711
- }
29712
- function findDrawingShapeIndex(shapes, nodes, nodeId) {
29713
- for (let i2 = 0; i2 < shapes.length; i2++) {
29714
- if (shapes[i2].id.startsWith("reflow-") && shapes[i2].id.endsWith(`-${nodeId}`)) {
29715
- return i2;
29716
- }
29717
- }
29718
- if (shapes.length === nodes.length) {
29719
- const nodeIdx = nodes.findIndex((n) => n.id === nodeId);
29720
- if (nodeIdx >= 0) {
29721
- return nodeIdx;
29722
- }
29723
- }
29724
- const node = nodes.find((n) => n.id === nodeId);
29725
- if (node?.text) {
29726
- const text2 = node.text.trim();
29727
- const matches = [];
29728
- for (let i2 = 0; i2 < shapes.length; i2++) {
29729
- if (shapes[i2].text?.trim() === text2) {
29730
- matches.push(i2);
29731
- }
29732
- }
29733
- if (matches.length === 1) {
29734
- return matches[0];
29735
- }
29736
- }
29737
- return -1;
29359
+ return setDiagramNodeText(data, nodeId, newText);
29738
29360
  }
29739
29361
 
29740
29362
  // pptx/core/utils/theme-override-utils.ts
@@ -29818,23 +29440,6 @@ var EncryptedFileError = class extends Error {
29818
29440
  }
29819
29441
  };
29820
29442
 
29821
- // crypto/uuid.ts
29822
- function randomBytes(length) {
29823
- const cryptoObj = globalThis.crypto;
29824
- if (cryptoObj?.getRandomValues) return cryptoObj.getRandomValues(new Uint8Array(length));
29825
- const bytes = new Uint8Array(length);
29826
- for (let i2 = 0; i2 < length; i2++) bytes[i2] = Math.floor(Math.random() * 256);
29827
- return bytes;
29828
- }
29829
- function randomHex(length) {
29830
- return Array.from(randomBytes(Math.ceil(length / 2)), (b) => b.toString(16).padStart(2, "0")).join("").slice(0, length);
29831
- }
29832
- function createOfficeGuid() {
29833
- const variantNibble = (8 + (randomBytes(1)[0] ?? 0) % 4).toString(16);
29834
- const uuid = globalThis.crypto?.randomUUID?.() ?? `${randomHex(8)}-${randomHex(4)}-4${randomHex(3)}-${variantNibble}${randomHex(3)}-${randomHex(12)}`;
29835
- return `{${uuid.toUpperCase()}}`;
29836
- }
29837
-
29838
29443
  // ../../node_modules/.bun/@christophervr+ole2@0.13.0/node_modules/@christophervr/ole2/dist/utils/ooxml-crypto-primitives.js
29839
29444
  function getSubtle() {
29840
29445
  if (typeof globalThis.crypto !== "undefined" && globalThis.crypto.subtle) {
@@ -32469,7 +32074,7 @@ function readChartManualLayoutValues(value) {
32469
32074
  }
32470
32075
 
32471
32076
  // pptx/core/utils/chart-layout.ts
32472
- var child7 = (node, name, localName14) => {
32077
+ var child6 = (node, name, localName14) => {
32473
32078
  if (!node) {
32474
32079
  return void 0;
32475
32080
  }
@@ -32477,12 +32082,12 @@ var child7 = (node, name, localName14) => {
32477
32082
  return key ? node[key] : void 0;
32478
32083
  };
32479
32084
  function parseChartManualLayout(parent, localName14) {
32480
- const manual = child7(child7(parent, "layout", localName14), "manualLayout", localName14);
32085
+ const manual = child6(child6(parent, "layout", localName14), "manualLayout", localName14);
32481
32086
  if (!manual) {
32482
32087
  return void 0;
32483
32088
  }
32484
- const result = readChartManualLayoutValues((name) => child7(manual, name, localName14)?.["@_val"]) ?? {};
32485
- const ext = child7(manual, "extLst", localName14);
32089
+ const result = readChartManualLayoutValues((name) => child6(manual, name, localName14)?.["@_val"]) ?? {};
32090
+ const ext = child6(manual, "extLst", localName14);
32486
32091
  if (ext !== void 0) {
32487
32092
  result.ext = ext;
32488
32093
  }
@@ -32498,9 +32103,9 @@ function parseChartLayouts(chartRoot, localName14) {
32498
32103
  return void 0;
32499
32104
  }
32500
32105
  const layouts = {
32501
- title: parseChartManualLayout(child7(chartRoot, "title", localName14), localName14),
32502
- plotArea: parseChartManualLayout(child7(chartRoot, "plotArea", localName14), localName14),
32503
- legend: parseChartManualLayout(child7(chartRoot, "legend", localName14), localName14)
32106
+ title: parseChartManualLayout(child6(chartRoot, "title", localName14), localName14),
32107
+ plotArea: parseChartManualLayout(child6(chartRoot, "plotArea", localName14), localName14),
32108
+ legend: parseChartManualLayout(child6(chartRoot, "legend", localName14), localName14)
32504
32109
  };
32505
32110
  for (const key of Object.keys(layouts)) {
32506
32111
  if (layouts[key] === void 0) {
@@ -32578,9 +32183,9 @@ function applyChartManualLayout(parent, layout, localName14) {
32578
32183
  replaceKeyAt(parent, "c:layout", { "c:manualLayout": manual }, layoutIndex(parent, localName14));
32579
32184
  }
32580
32185
  function applyChartLayouts(chartRoot, layouts, localName14) {
32581
- applyChartManualLayout(child7(chartRoot, "title", localName14), layouts.title, localName14);
32582
- applyChartManualLayout(child7(chartRoot, "plotArea", localName14), layouts.plotArea, localName14);
32583
- applyChartManualLayout(child7(chartRoot, "legend", localName14), layouts.legend, localName14);
32186
+ applyChartManualLayout(child6(chartRoot, "title", localName14), layouts.title, localName14);
32187
+ applyChartManualLayout(child6(chartRoot, "plotArea", localName14), layouts.plotArea, localName14);
32188
+ applyChartManualLayout(child6(chartRoot, "legend", localName14), layouts.legend, localName14);
32584
32189
  }
32585
32190
 
32586
32191
  // pptx/core/utils/chart-trendline-label.ts
@@ -34472,7 +34077,7 @@ var LABEL_OFFSET_RANGE = { name: "labelOffset", min: 0, max: 1e3 };
34472
34077
  function findKey8(node, name, localName14) {
34473
34078
  return Object.keys(node).find((key) => localName14(key) === name);
34474
34079
  }
34475
- function child8(node, name, localName14) {
34080
+ function child7(node, name, localName14) {
34476
34081
  const key = findKey8(node, name, localName14);
34477
34082
  const value = key ? node[key] : void 0;
34478
34083
  return value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
@@ -34500,32 +34105,32 @@ function parseChartAxisLabelFormatting(node, axisType, localName14) {
34500
34105
  ["majorTickMark", "majorTickMark"],
34501
34106
  ["minorTickMark", "minorTickMark"]
34502
34107
  ]) {
34503
- const value = String(child8(node, name, localName14)?.["@_val"] ?? "");
34108
+ const value = String(child7(node, name, localName14)?.["@_val"] ?? "");
34504
34109
  if (TICK_MARKS.has(value)) {
34505
34110
  result[property] = value;
34506
34111
  }
34507
34112
  }
34508
- const tickLabelPosition = String(child8(node, "tickLblPos", localName14)?.["@_val"] ?? "");
34113
+ const tickLabelPosition = String(child7(node, "tickLblPos", localName14)?.["@_val"] ?? "");
34509
34114
  if (TICK_LABEL_POSITIONS.has(tickLabelPosition)) {
34510
34115
  result.tickLblPos = tickLabelPosition;
34511
34116
  }
34512
- const crosses = String(child8(node, "crosses", localName14)?.["@_val"] ?? "");
34117
+ const crosses = String(child7(node, "crosses", localName14)?.["@_val"] ?? "");
34513
34118
  if (CROSSING_MODES.has(crosses)) {
34514
34119
  result.crosses = crosses;
34515
34120
  }
34516
- const crossesAt = Number.parseFloat(String(child8(node, "crossesAt", localName14)?.["@_val"] ?? ""));
34121
+ const crossesAt = Number.parseFloat(String(child7(node, "crossesAt", localName14)?.["@_val"] ?? ""));
34517
34122
  if (Number.isFinite(crossesAt)) {
34518
34123
  result.crossesAt = crossesAt;
34519
34124
  }
34520
34125
  if (axisType === "valAx") {
34521
- const crossBetween = String(child8(node, "crossBetween", localName14)?.["@_val"] ?? "");
34126
+ const crossBetween = String(child7(node, "crossBetween", localName14)?.["@_val"] ?? "");
34522
34127
  if (CROSS_BETWEEN_MODES.has(crossBetween)) {
34523
34128
  result.crossBetween = crossBetween;
34524
34129
  }
34525
34130
  }
34526
34131
  if (axisType === "catAx" || axisType === "dateAx") {
34527
- result.auto = parseBoolean(child8(node, "auto", localName14));
34528
- const rawOffset = child8(node, "lblOffset", localName14)?.["@_val"];
34132
+ result.auto = parseBoolean(child7(node, "auto", localName14));
34133
+ const rawOffset = child7(node, "lblOffset", localName14)?.["@_val"];
34529
34134
  if (rawOffset !== void 0) {
34530
34135
  const offset = Number.parseFloat(String(rawOffset).replace(/%$/u, ""));
34531
34136
  if (Number.isFinite(offset) && offset >= 0 && offset <= 1e3) {
@@ -34534,15 +34139,15 @@ function parseChartAxisLabelFormatting(node, axisType, localName14) {
34534
34139
  }
34535
34140
  }
34536
34141
  if (axisType === "catAx" || axisType === "serAx") {
34537
- result.tickLabelSkip = parsePositiveInteger(child8(node, "tickLblSkip", localName14));
34538
- result.tickMarkSkip = parsePositiveInteger(child8(node, "tickMarkSkip", localName14));
34142
+ result.tickLabelSkip = parsePositiveInteger(child7(node, "tickLblSkip", localName14));
34143
+ result.tickMarkSkip = parsePositiveInteger(child7(node, "tickMarkSkip", localName14));
34539
34144
  }
34540
34145
  if (axisType === "catAx") {
34541
- const alignment = String(child8(node, "lblAlgn", localName14)?.["@_val"] ?? "");
34146
+ const alignment = String(child7(node, "lblAlgn", localName14)?.["@_val"] ?? "");
34542
34147
  if (LABEL_ALIGNMENTS.has(alignment)) {
34543
34148
  result.labelAlignment = alignment;
34544
34149
  }
34545
- result.noMultiLevelLabels = parseBoolean(child8(node, "noMultiLvlLbl", localName14));
34150
+ result.noMultiLevelLabels = parseBoolean(child7(node, "noMultiLvlLbl", localName14));
34546
34151
  }
34547
34152
  return Object.fromEntries(Object.entries(result).filter(([, value]) => value !== void 0));
34548
34153
  }
@@ -35068,12 +34673,27 @@ function parseTxPrFont(txPrNode, xmlLookup, colorParser, target, resolveTypeface
35068
34673
  target.fontColor = fontColor;
35069
34674
  }
35070
34675
  }
34676
+ var CX_AXIS_UNITS = {
34677
+ hundreds: 100,
34678
+ thousands: 1e3,
34679
+ tenThousands: 1e4,
34680
+ hundredThousands: 1e5,
34681
+ millions: 1e6,
34682
+ tenMillions: 1e7,
34683
+ hundredMillions: 1e8,
34684
+ billions: 1e9,
34685
+ trillions: 1e12
34686
+ };
34687
+ function cxUnitDivisor(raw) {
34688
+ const text2 = String(raw ?? "").trim();
34689
+ return CX_AXIS_UNITS[text2] ?? Number.parseFloat(text2);
34690
+ }
35071
34691
  function parseCxUnits(axisNode, xmlLookup, colorParser, target, resolveTypeface) {
35072
34692
  const unitsNode = xmlLookup.getChildByLocalName(axisNode, "units");
35073
34693
  if (!unitsNode) {
35074
34694
  return;
35075
34695
  }
35076
- const unit = Number.parseFloat(String(unitsNode["@_unit"] ?? ""));
34696
+ const unit = cxUnitDivisor(unitsNode["@_unit"]);
35077
34697
  if (!Number.isFinite(unit) || unit <= 0) {
35078
34698
  return;
35079
34699
  }
@@ -35100,7 +34720,7 @@ function parseCxUnits(axisNode, xmlLookup, colorParser, target, resolveTypeface)
35100
34720
  }
35101
34721
  }
35102
34722
  function parseSingleCxAxis(axisNode, xmlLookup, colorParser, resolveTypeface) {
35103
- const isCategory = xmlLookup.getChildByLocalName(axisNode, "catScaling") !== void 0;
34723
+ const isCategory = hasLocalName(axisNode, "catScaling");
35104
34724
  const axisType = isCategory ? "catAx" : "valAx";
35105
34725
  const result = { axisType };
35106
34726
  const id = safeInt4(axisNode["@_id"]);
@@ -35142,7 +34762,7 @@ function parseSingleCxAxis(axisNode, xmlLookup, colorParser, resolveTypeface) {
35142
34762
  colorParser
35143
34763
  );
35144
34764
  }
35145
- if (xmlLookup.getChildByLocalName(axisNode, "tickLabels") === void 0) {
34765
+ if (!hasLocalName(axisNode, "tickLabels")) {
35146
34766
  result.tickLblPos = "none";
35147
34767
  }
35148
34768
  const spPr = parseShapeProps(
@@ -35221,18 +34841,23 @@ function cxNumberFormat(node, xmlLookup) {
35221
34841
  const formatCode = String(numFmt?.["@_formatCode"] ?? "").trim();
35222
34842
  return formatCode.length > 0 ? formatCode : void 0;
35223
34843
  }
34844
+ var isTrue = (value) => value === "1" || value === "true";
34845
+ function readVisibility(node) {
34846
+ if (!node) {
34847
+ return void 0;
34848
+ }
34849
+ return {
34850
+ showVal: isTrue(node["@_value"]),
34851
+ showCatName: isTrue(node["@_categoryName"]),
34852
+ showSerName: isTrue(node["@_seriesName"])
34853
+ };
34854
+ }
35224
34855
  function parseCxDataLabels(ser, xmlLookup, colorParser, resolveTypeface) {
35225
34856
  const dlNode = xmlLookup.getChildByLocalName(ser, "dataLabels");
35226
34857
  if (!dlNode) {
35227
34858
  return void 0;
35228
34859
  }
35229
- const visibility = {};
35230
- const visNode = xmlLookup.getChildByLocalName(dlNode, "visibility");
35231
- if (visNode) {
35232
- visibility.showVal = visNode["@_value"] === "1" || visNode["@_value"] === "true";
35233
- visibility.showCatName = visNode["@_categoryName"] === "1" || visNode["@_categoryName"] === "true";
35234
- visibility.showSerName = visNode["@_seriesName"] === "1" || visNode["@_seriesName"] === "true";
35235
- }
34860
+ const visibility = readVisibility(xmlLookup.getChildByLocalName(dlNode, "visibility")) ?? {};
35236
34861
  const options = {};
35237
34862
  const groupPos = cxPosition(dlNode["@_pos"]);
35238
34863
  if (groupPos) {
@@ -35257,11 +34882,13 @@ function parseCxDataLabels(ser, xmlLookup, colorParser, resolveTypeface) {
35257
34882
  const dlItems = xmlLookup.getChildrenArrayByLocalName(dlNode, "dataLabel");
35258
34883
  for (const dlItem of dlItems) {
35259
34884
  const idx = Number.parseInt(String(dlItem["@_idx"] || "0"), 10);
34885
+ const own = readVisibility(xmlLookup.getChildByLocalName(dlItem, "visibility"));
34886
+ const shown = own ?? visibility;
35260
34887
  const label = {
35261
34888
  idx,
35262
- showVal: visibility.showVal,
35263
- showCatName: visibility.showCatName,
35264
- showSerName: visibility.showSerName
34889
+ showVal: shown.showVal,
34890
+ showCatName: shown.showCatName,
34891
+ showSerName: shown.showSerName
35265
34892
  };
35266
34893
  const itemPos = cxPosition(dlItem["@_pos"]);
35267
34894
  if (itemPos) {
@@ -35314,7 +34941,7 @@ function parseCxHistogramOptions(series, xmlLookup) {
35314
34941
  }
35315
34942
  const layoutPr = xmlLookup.getChildByLocalName(series, "layoutPr");
35316
34943
  const binning = xmlLookup.getChildByLocalName(layoutPr, "binning");
35317
- const aggregation = xmlLookup.getChildByLocalName(layoutPr, "aggregation");
34944
+ const aggregation = layoutPr && hasLocalName(layoutPr, "aggregation") ? true : void 0;
35318
34945
  const rawBinSize = binningValue(binning, "binSize", xmlLookup);
35319
34946
  const rawBinCount = binningValue(binning, "binCount", xmlLookup);
35320
34947
  const binSize = Number.parseFloat(String(rawBinSize ?? ""));
@@ -35327,7 +34954,7 @@ function parseCxHistogramOptions(series, xmlLookup) {
35327
34954
  ...intervalClosed === "l" || intervalClosed === "r" ? { intervalClosed } : {},
35328
34955
  ...binning?.["@_underflow"] !== void 0 ? { underflow: parseDoubleOrAutomatic(binning["@_underflow"]) } : {},
35329
34956
  ...binning?.["@_overflow"] !== void 0 ? { overflow: parseDoubleOrAutomatic(binning["@_overflow"]) } : {},
35330
- ...aggregation !== void 0 ? { aggregateByCategory: true } : {}
34957
+ ...aggregation ? { aggregateByCategory: true } : {}
35331
34958
  };
35332
34959
  }
35333
34960
 
@@ -37589,7 +37216,7 @@ function ensureArray3(val) {
37589
37216
 
37590
37217
  // pptx/core/utils/model3d-scene-parser.ts
37591
37218
  var ANGLE_UNIT = 6e4;
37592
- function child9(node, ...names) {
37219
+ function child8(node, ...names) {
37593
37220
  if (!node) {
37594
37221
  return void 0;
37595
37222
  }
@@ -37620,7 +37247,7 @@ function num2(node, attr3) {
37620
37247
  return Number.isFinite(value) ? value : void 0;
37621
37248
  }
37622
37249
  function am(node, name) {
37623
- return child9(node, `am3d:${name}`, name);
37250
+ return child8(node, `am3d:${name}`, name);
37624
37251
  }
37625
37252
  function vec(node, keys) {
37626
37253
  if (!node) {
@@ -37644,12 +37271,12 @@ function ratio(node) {
37644
37271
  }
37645
37272
  function colour2(node) {
37646
37273
  const clr = am(node, "clr");
37647
- const srgb = child9(clr, "a:srgbClr");
37274
+ const srgb = child8(clr, "a:srgbClr");
37648
37275
  const val = srgb?.["@_val"];
37649
37276
  if (typeof val === "string" && /^[0-9a-f]{6}$/iu.test(val)) {
37650
37277
  return `#${val.toLowerCase()}`;
37651
37278
  }
37652
- const scrgb = child9(clr, "a:scrgbClr");
37279
+ const scrgb = child8(clr, "a:scrgbClr");
37653
37280
  if (scrgb) {
37654
37281
  const chan = (a) => {
37655
37282
  const pct = Math.min(1e5, Math.max(0, num2(scrgb, a) ?? 0)) / 1e5;
@@ -38494,8 +38121,8 @@ var BEFORE_KINSOKU = /* @__PURE__ */ new Set([
38494
38121
  "photoAlbum",
38495
38122
  "custDataLst"
38496
38123
  ]);
38497
- var localName8 = (key) => key.replace(/^@_/u, "").replace(/^.*:/u, "");
38498
- var findKey9 = (node, name) => Object.keys(node).find((key) => localName8(key) === name);
38124
+ var localName5 = (key) => key.replace(/^@_/u, "").replace(/^.*:/u, "");
38125
+ var findKey9 = (node, name) => Object.keys(node).find((key) => localName5(key) === name);
38499
38126
  function parseKinsoku(presentationXml) {
38500
38127
  if (!presentationXml) {
38501
38128
  return void 0;
@@ -38534,7 +38161,7 @@ function insertKinsoku(root, key, value) {
38534
38161
  const result = {};
38535
38162
  let inserted = false;
38536
38163
  for (const [childKey2, childValue] of Object.entries(root)) {
38537
- const name = localName8(childKey2);
38164
+ const name = localName5(childKey2);
38538
38165
  if (name === "kinsoku") {
38539
38166
  continue;
38540
38167
  }
@@ -39518,7 +39145,7 @@ function wrapFormatSchemeXml(fmtSchemeXml) {
39518
39145
  function keyOf2(node, name, localName14) {
39519
39146
  return Object.keys(node).find((key) => localName14(key) === name);
39520
39147
  }
39521
- function child10(node, name, localName14) {
39148
+ function child9(node, name, localName14) {
39522
39149
  const key = keyOf2(node, name, localName14);
39523
39150
  const value = key ? node[key] : void 0;
39524
39151
  return value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
@@ -39547,8 +39174,8 @@ function parseRule2(node, localName14) {
39547
39174
  return parseRuleAttributes(reader(node, localName14), cloneXmlObject(node));
39548
39175
  }
39549
39176
  function parseSmartArtConstraintRules(node, localName14) {
39550
- const constraintList = child10(node, "constrLst", localName14);
39551
- const ruleList = child10(node, "ruleLst", localName14);
39177
+ const constraintList = child9(node, "constrLst", localName14);
39178
+ const ruleList = child9(node, "ruleLst", localName14);
39552
39179
  return {
39553
39180
  constraints: constraintList ? children4(constraintList, "constr", localName14).map(
39554
39181
  (item) => parseConstraint2(item, localName14)
@@ -39583,7 +39210,7 @@ function applySmartArtConstraintRules(node, value, localName14) {
39583
39210
  continue;
39584
39211
  }
39585
39212
  const listKey = keyOf2(node, listName, localName14) ?? `dgm:${listName}`;
39586
- const list2 = child10(node, listName, localName14) ?? {};
39213
+ const list2 = child9(node, listName, localName14) ?? {};
39587
39214
  const oldItems = children4(list2, itemName, localName14);
39588
39215
  const itemKey = keyOf2(list2, itemName, localName14) ?? `${itemPrefix(listKey)}${itemName}`;
39589
39216
  for (const key of Object.keys(list2)) {
@@ -39606,7 +39233,7 @@ function applySmartArtConstraintRules(node, value, localName14) {
39606
39233
  }
39607
39234
 
39608
39235
  // pptx/core/utils/smartart-layout-algorithm.ts
39609
- function child11(node, name, localName14) {
39236
+ function child10(node, name, localName14) {
39610
39237
  const key = Object.keys(node).find((candidate) => localName14(candidate) === name);
39611
39238
  const value = key ? node[key] : void 0;
39612
39239
  return Array.isArray(value) ? value[0] : value;
@@ -39624,7 +39251,7 @@ function optionalString3(value) {
39624
39251
  return result.length > 0 ? result : void 0;
39625
39252
  }
39626
39253
  function parseSmartArtLayoutAlgorithm(node, localName14) {
39627
- const algorithm = child11(node, "alg", localName14);
39254
+ const algorithm = child10(node, "alg", localName14);
39628
39255
  const type = algorithm ? optionalString3(algorithm["@_type"]) : void 0;
39629
39256
  if (!algorithm || !type) {
39630
39257
  return void 0;
@@ -40168,7 +39795,7 @@ function nestedLayoutNodes(node, localName14) {
40168
39795
  }
40169
39796
 
40170
39797
  // pptx/core/utils/smartart-layout-node-shape.ts
40171
- function child12(node, name, localName14) {
39798
+ function child11(node, name, localName14) {
40172
39799
  if (!node) {
40173
39800
  return void 0;
40174
39801
  }
@@ -40199,7 +39826,7 @@ function parseSmartArtLkTxEntry(shapeEl) {
40199
39826
  return raw === "1" || raw === "true";
40200
39827
  }
40201
39828
  function parseAdjustments(shapeEl, localName14) {
40202
- const adjLst = child12(shapeEl, "adjLst", localName14);
39829
+ const adjLst = child11(shapeEl, "adjLst", localName14);
40203
39830
  const adjustments = children9(adjLst, "adj", localName14).map((adj) => {
40204
39831
  const index = Number.parseInt(String(adj["@_idx"] ?? ""), 10);
40205
39832
  const value = Number.parseFloat(String(adj["@_val"] ?? ""));
@@ -40242,7 +39869,7 @@ function nestedShapes(node, localName14) {
40242
39869
  return found;
40243
39870
  }
40244
39871
  function parseSmartArtLayoutNodeShape(node, localName14) {
40245
- const shapeEl = child12(node, "shape", localName14) ?? nestedShapes(node, localName14)[0];
39872
+ const shapeEl = child11(node, "shape", localName14) ?? nestedShapes(node, localName14)[0];
40246
39873
  if (!shapeEl) {
40247
39874
  return void 0;
40248
39875
  }
@@ -40296,7 +39923,7 @@ function applySmartArtLayoutNodeShape(target, value, localName14) {
40296
39923
  }
40297
39924
 
40298
39925
  // pptx/core/utils/smartart-layout-definition.ts
40299
- function child13(node, name, localName14) {
39926
+ function child12(node, name, localName14) {
40300
39927
  if (!node) {
40301
39928
  return void 0;
40302
39929
  }
@@ -40367,11 +39994,11 @@ function parseNode(node, localName14) {
40367
39994
  };
40368
39995
  }
40369
39996
  function parseSmartArtLayoutDefinition(layoutDef, localName14) {
40370
- const root = child13(layoutDef, "layoutNode", localName14);
39997
+ const root = child12(layoutDef, "layoutNode", localName14);
40371
39998
  if (!layoutDef || !root) {
40372
39999
  return void 0;
40373
40000
  }
40374
- const catList = child13(layoutDef, "catLst", localName14);
40001
+ const catList = child12(layoutDef, "catLst", localName14);
40375
40002
  const categories = children10(catList, "cat", localName14).map((entry) => {
40376
40003
  const type = optionalString5(entry["@_type"]);
40377
40004
  const priority = Number(entry["@_pri"]);
@@ -40460,7 +40087,7 @@ function applySmartArtLayoutDefinition(target, value, localName14) {
40460
40087
  if (validateSmartArtLayoutDefinition(value).length > 0) {
40461
40088
  return false;
40462
40089
  }
40463
- const root = child13(target, "layoutNode", localName14);
40090
+ const root = child12(target, "layoutNode", localName14);
40464
40091
  if (!root) {
40465
40092
  return false;
40466
40093
  }
@@ -40470,7 +40097,7 @@ function applySmartArtLayoutDefinition(target, value, localName14) {
40470
40097
  applyLocalized(target, "title", value.titles, localName14);
40471
40098
  applyLocalized(target, "desc", value.descriptions, localName14);
40472
40099
  if (value.categories !== void 0) {
40473
- const list2 = child13(target, "catLst", localName14);
40100
+ const list2 = child12(target, "catLst", localName14);
40474
40101
  if (list2) {
40475
40102
  const key = Object.keys(list2).find((candidate) => localName14(candidate) === "cat") ?? "dgm:cat";
40476
40103
  const existing = children10(list2, "cat", localName14);
@@ -40500,7 +40127,7 @@ function children11(node, name, localName14) {
40500
40127
  }
40501
40128
  return value && typeof value === "object" ? [value] : [];
40502
40129
  }
40503
- function child14(node, name, localName14) {
40130
+ function child13(node, name, localName14) {
40504
40131
  return children11(node, name, localName14)[0];
40505
40132
  }
40506
40133
  function parseText(node, name, localName14) {
@@ -40511,7 +40138,7 @@ function parseText(node, name, localName14) {
40511
40138
  return values.length > 0 ? values : void 0;
40512
40139
  }
40513
40140
  function parseSmartArtDefinitionMetadata(node, localName14) {
40514
- const categoryList = child14(node, "catLst", localName14);
40141
+ const categoryList = child13(node, "catLst", localName14);
40515
40142
  const categories = children11(categoryList, "cat", localName14).map((item) => ({
40516
40143
  type: String(item["@_type"] ?? ""),
40517
40144
  priority: Number(item["@_pri"] ?? 0)
@@ -40531,14 +40158,14 @@ function parseSmartArtQuickStyleLabels(node, localName14) {
40531
40158
  return labels.length > 0 ? labels : void 0;
40532
40159
  }
40533
40160
  function parseSmartArtStyleLabelRefs(styleLbl, localName14) {
40534
- const style = child14(styleLbl, "style", localName14);
40161
+ const style = child13(styleLbl, "style", localName14);
40535
40162
  if (!style) {
40536
40163
  return void 0;
40537
40164
  }
40538
- const lnRef = child14(style, "lnRef", localName14);
40539
- const fillRef = child14(style, "fillRef", localName14);
40540
- const effectRef = child14(style, "effectRef", localName14);
40541
- const fontRef = child14(style, "fontRef", localName14);
40165
+ const lnRef = child13(style, "lnRef", localName14);
40166
+ const fillRef = child13(style, "fillRef", localName14);
40167
+ const effectRef = child13(style, "effectRef", localName14);
40168
+ const fontRef = child13(style, "fontRef", localName14);
40542
40169
  if (!lnRef && !fillRef && !effectRef && !fontRef) {
40543
40170
  return void 0;
40544
40171
  }
@@ -40550,7 +40177,7 @@ function parseSmartArtStyleLabelRefs(styleLbl, localName14) {
40550
40177
  };
40551
40178
  }
40552
40179
  function parseColorList(node, name, localName14) {
40553
- const list2 = child14(node, name, localName14);
40180
+ const list2 = child13(node, name, localName14);
40554
40181
  if (!list2) {
40555
40182
  return void 0;
40556
40183
  }
@@ -40576,6 +40203,191 @@ function parseSmartArtColorStyleLabels(node, localName14) {
40576
40203
  var COLOR_METHODS2 = /* @__PURE__ */ new Set(["span", "cycle", "repeat"]);
40577
40204
  var HUE_DIRECTIONS2 = /* @__PURE__ */ new Set(["cw", "ccw"]);
40578
40205
 
40206
+ // pptx/core/geometry/custom-geometry-command-order.ts
40207
+ var ORDER_SUFFIX = "#pptx-order-";
40208
+ var commandOrder = /* @__PURE__ */ new WeakMap();
40209
+ var PATH_COMMANDS = /* @__PURE__ */ new Set(["moveTo", "lnTo", "arcTo", "quadBezTo", "cubicBezTo", "close"]);
40210
+ function localName6(name) {
40211
+ const colon = name.indexOf(":");
40212
+ return colon >= 0 ? name.slice(colon + 1) : name;
40213
+ }
40214
+ function childByLocalName(node, name) {
40215
+ if (!node) {
40216
+ return void 0;
40217
+ }
40218
+ const key = Object.keys(node).find((candidate) => localName6(candidate) === name);
40219
+ return key ? node[key] : void 0;
40220
+ }
40221
+ function collectParsedPaths(root) {
40222
+ const paths = [];
40223
+ const stack = [root];
40224
+ while (stack.length > 0) {
40225
+ const current = stack.pop();
40226
+ if (!current || typeof current !== "object") {
40227
+ continue;
40228
+ }
40229
+ if (Array.isArray(current)) {
40230
+ for (let index = current.length - 1; index >= 0; index--) {
40231
+ stack.push(current[index]);
40232
+ }
40233
+ continue;
40234
+ }
40235
+ const node = current;
40236
+ for (const [key, value] of Object.entries(node).reverse()) {
40237
+ if (localName6(key) === "custGeom") {
40238
+ const pathList = childByLocalName(value, "pathLst");
40239
+ const rawPaths = childByLocalName(pathList, "path");
40240
+ paths.push(
40241
+ ...Array.isArray(rawPaths) ? rawPaths : rawPaths ? [rawPaths] : []
40242
+ );
40243
+ } else {
40244
+ stack.push(value);
40245
+ }
40246
+ }
40247
+ }
40248
+ return paths;
40249
+ }
40250
+ function extractSourceOrders(xml) {
40251
+ const orders = [];
40252
+ const custGeomPattern = /<([A-Za-z_][\w.-]*:)?custGeom\b[^>]*>([\s\S]*?)<\/\1custGeom\s*>/gu;
40253
+ for (const geometryMatch of xml.matchAll(custGeomPattern)) {
40254
+ const geometryXml = geometryMatch[2];
40255
+ const pathPattern = /<([A-Za-z_][\w.-]*:)?path\b[^>]*>([\s\S]*?)<\/\1path\s*>/gu;
40256
+ for (const pathMatch of geometryXml.matchAll(pathPattern)) {
40257
+ const order = [
40258
+ ...pathMatch[2].matchAll(/<\/?([A-Za-z_][\w.-]*:)?([A-Za-z][\w.-]*)\b[^>]*>/gu)
40259
+ ].filter((match) => match[0][1] !== "/" && PATH_COMMANDS.has(match[2])).map((match) => match[2]);
40260
+ orders.push(order);
40261
+ }
40262
+ }
40263
+ return orders;
40264
+ }
40265
+ function ensureArrayLocal(value) {
40266
+ return Array.isArray(value) ? value : value === void 0 ? [] : [value];
40267
+ }
40268
+ function countsSignature(counts) {
40269
+ return [...counts.entries()].sort((a, b) => a[0] < b[0] ? -1 : 1).map(([name, count]) => `${name}:${count}`).join(",");
40270
+ }
40271
+ function pathSignature(path) {
40272
+ const counts = /* @__PURE__ */ new Map();
40273
+ for (const key of Object.keys(path)) {
40274
+ const name = localName6(key);
40275
+ if (!PATH_COMMANDS.has(name)) {
40276
+ continue;
40277
+ }
40278
+ counts.set(name, (counts.get(name) ?? 0) + ensureArrayLocal(path[key]).length);
40279
+ }
40280
+ return countsSignature(counts);
40281
+ }
40282
+ function orderSignature(order) {
40283
+ const counts = /* @__PURE__ */ new Map();
40284
+ for (const name of order) {
40285
+ counts.set(name, (counts.get(name) ?? 0) + 1);
40286
+ }
40287
+ return countsSignature(counts);
40288
+ }
40289
+ function annotateCustomGeometryCommandOrder(xml, parsed) {
40290
+ const orders = extractSourceOrders(xml);
40291
+ if (orders.length === 0) {
40292
+ return;
40293
+ }
40294
+ const paths = collectParsedPaths(parsed);
40295
+ const ordersBySignature = /* @__PURE__ */ new Map();
40296
+ for (const order of orders) {
40297
+ const signature = orderSignature(order);
40298
+ const bucket = ordersBySignature.get(signature);
40299
+ if (bucket) {
40300
+ bucket.push(order);
40301
+ } else {
40302
+ ordersBySignature.set(signature, [order]);
40303
+ }
40304
+ }
40305
+ for (const path of paths) {
40306
+ const bucket = ordersBySignature.get(pathSignature(path));
40307
+ const order = bucket?.shift();
40308
+ if (order) {
40309
+ commandOrder.set(path, order);
40310
+ }
40311
+ }
40312
+ }
40313
+ function orderedPathCommandEntries(path, ensureArray8) {
40314
+ const commandItems = (key) => {
40315
+ const value = path[key];
40316
+ const items = ensureArray8(value);
40317
+ return items.length === 0 && localName6(key) === "close" && value !== void 0 ? [value] : items;
40318
+ };
40319
+ const order = commandOrder.get(path);
40320
+ if (!order) {
40321
+ return Object.keys(path).flatMap(
40322
+ (key) => key.startsWith("@_") ? [] : commandItems(key).map((item) => [key, item])
40323
+ );
40324
+ }
40325
+ const consumed = /* @__PURE__ */ new Map();
40326
+ return order.flatMap((name) => {
40327
+ const key = Object.keys(path).find((candidate) => localName6(candidate) === name);
40328
+ if (!key) {
40329
+ return [];
40330
+ }
40331
+ const items = commandItems(key);
40332
+ const index = consumed.get(key) ?? 0;
40333
+ consumed.set(key, index + 1);
40334
+ return index < items.length ? [[key, items[index]]] : [];
40335
+ });
40336
+ }
40337
+ function inheritCustomGeometryCommandOrder(target, ...sources) {
40338
+ let targetSignature;
40339
+ for (const source of sources) {
40340
+ if (!source) {
40341
+ continue;
40342
+ }
40343
+ const order = commandOrder.get(source);
40344
+ if (!order) {
40345
+ continue;
40346
+ }
40347
+ targetSignature ??= pathSignature(target);
40348
+ if (orderSignature(order) === targetSignature) {
40349
+ commandOrder.set(target, [...order]);
40350
+ return;
40351
+ }
40352
+ }
40353
+ }
40354
+ function pathListPaths(pathLst) {
40355
+ if (!pathLst || typeof pathLst !== "object") {
40356
+ return [];
40357
+ }
40358
+ return ensureArrayLocal(childByLocalName(pathLst, "path")).filter(
40359
+ (path) => Boolean(path) && typeof path === "object"
40360
+ );
40361
+ }
40362
+ function readPathListCommandOrder(pathLst) {
40363
+ const orders = pathListPaths(pathLst).map((path) => [...commandOrder.get(path) ?? []]);
40364
+ return orders.some((order) => order.length > 0) ? orders : void 0;
40365
+ }
40366
+ function restorePathListCommandOrder(pathLst, orders) {
40367
+ if (!orders || orders.length === 0) {
40368
+ return;
40369
+ }
40370
+ pathListPaths(pathLst).forEach((path, index) => {
40371
+ const order = orders[index];
40372
+ if (!order || order.length === 0 || commandOrder.has(path)) {
40373
+ return;
40374
+ }
40375
+ if (orderSignature([...order]) === pathSignature(path)) {
40376
+ commandOrder.set(path, [...order]);
40377
+ }
40378
+ });
40379
+ }
40380
+ function orderedXmlKey(baseName, order) {
40381
+ return `${baseName}${ORDER_SUFFIX}${order}`;
40382
+ }
40383
+ function stripXmlOrderSuffix(tagName) {
40384
+ const index = tagName.indexOf(ORDER_SUFFIX);
40385
+ return index >= 0 ? tagName.slice(0, index) : tagName;
40386
+ }
40387
+ function stripXmlOrderMarkers(xml) {
40388
+ return xml.replace(/#pptx-order-\d+/gu, "");
40389
+ }
40390
+
40579
40391
  // pptx/core/geometry/custom-geometry.ts
40580
40392
  function svgToCustomGeometryPaths(pathData, width, height) {
40581
40393
  const segments = [];
@@ -40981,11 +40793,11 @@ function serializeEffectDagContainerNode(container2) {
40981
40793
  xml["@_name"] = container2.name;
40982
40794
  }
40983
40795
  for (const child16 of container2.children) {
40984
- appendChild2(xml, child16);
40796
+ appendChild(xml, child16);
40985
40797
  }
40986
40798
  return xml;
40987
40799
  }
40988
- function appendChild2(parent, child16) {
40800
+ function appendChild(parent, child16) {
40989
40801
  if (child16.kind === "cont") {
40990
40802
  push(parent, "a:cont", serializeEffectDagContainerNode(child16));
40991
40803
  } else if (child16.kind === "blend") {
@@ -41004,7 +40816,7 @@ function appendChild2(parent, child16) {
41004
40816
  } else if (child16.kind === "prstShdw") {
41005
40817
  push(parent, "a:prstShdw", serializeEffectDagPresetShadow(child16));
41006
40818
  } else {
41007
- push(parent, `a:${localName9(child16.tag)}`, child16.xml);
40819
+ push(parent, `a:${localName7(child16.tag)}`, child16.xml);
41008
40820
  }
41009
40821
  }
41010
40822
  function numericAttributes(source, names) {
@@ -41027,7 +40839,7 @@ function push(parent, key, value) {
41027
40839
  parent[key] = [previous, value];
41028
40840
  }
41029
40841
  }
41030
- function localName9(name) {
40842
+ function localName7(name) {
41031
40843
  return name.includes(":") ? name.slice(name.indexOf(":") + 1) : name;
41032
40844
  }
41033
40845
 
@@ -41092,7 +40904,7 @@ function parseChild(tag, value) {
41092
40904
  if (value === null || value === void 0) {
41093
40905
  return void 0;
41094
40906
  }
41095
- const localTag = localName10(tag);
40907
+ const localTag = localName8(tag);
41096
40908
  if (localTag === "cont") {
41097
40909
  return parseEffectDagContainer(value);
41098
40910
  }
@@ -41205,26 +41017,26 @@ function ensureArray6(value) {
41205
41017
  }
41206
41018
  return Array.isArray(value) ? value : [value];
41207
41019
  }
41208
- function localName10(name) {
41020
+ function localName8(name) {
41209
41021
  return name.includes(":") ? name.slice(name.indexOf(":") + 1) : name;
41210
41022
  }
41211
41023
  function childByLocalName2(xml, name) {
41212
41024
  const match = Object.entries(xml).find(
41213
- ([key]) => !key.startsWith("@_") && localName10(key) === name
41025
+ ([key]) => !key.startsWith("@_") && localName8(key) === name
41214
41026
  );
41215
41027
  return match?.[1];
41216
41028
  }
41217
41029
 
41218
41030
  // pptx/core/core/builders/effect-list-roundtrip.ts
41219
41031
  var COLOR_NAMES = /* @__PURE__ */ new Set(["srgbClr", "schemeClr", "sysClr", "prstClr", "scrgbClr", "hslClr"]);
41220
- function localName11(key) {
41032
+ function localName9(key) {
41221
41033
  return key.split(":").at(-1) ?? key;
41222
41034
  }
41223
41035
  function effectChild(parent, name) {
41224
41036
  if (!parent) {
41225
41037
  return void 0;
41226
41038
  }
41227
- const key = Object.keys(parent).find((candidate) => localName11(candidate) === name);
41039
+ const key = Object.keys(parent).find((candidate) => localName9(candidate) === name);
41228
41040
  const value = key ? parent[key] : void 0;
41229
41041
  return value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
41230
41042
  }
@@ -41236,7 +41048,7 @@ function mergeEffectNode(original, generated, originalResolvedColor, currentColo
41236
41048
  }
41237
41049
  }
41238
41050
  for (const key of Object.keys(merged)) {
41239
- if (COLOR_NAMES.has(localName11(key))) {
41051
+ if (COLOR_NAMES.has(localName9(key))) {
41240
41052
  delete merged[key];
41241
41053
  }
41242
41054
  }
@@ -41259,7 +41071,7 @@ function createEffectList(style, spPr) {
41259
41071
  return { ...style.effectListXml ?? effectChild(spPr, "effectLst") ?? {} };
41260
41072
  }
41261
41073
  function setEffectChild(list2, name, value) {
41262
- const existing = Object.keys(list2).find((key) => localName11(key) === name);
41074
+ const existing = Object.keys(list2).find((key) => localName9(key) === name);
41263
41075
  if (existing) {
41264
41076
  delete list2[existing];
41265
41077
  }
@@ -41775,12 +41587,12 @@ function drawingShape3dXml(shape) {
41775
41587
  }
41776
41588
 
41777
41589
  // pptx/core/core/runtime/smartart-style-xml.ts
41778
- function localName12(key) {
41590
+ function localName10(key) {
41779
41591
  const idx = key.indexOf(":");
41780
41592
  return idx >= 0 ? key.slice(idx + 1) : key;
41781
41593
  }
41782
41594
  function findKey10(obj, local) {
41783
- return Object.keys(obj).find((k) => localName12(k) === local);
41595
+ return Object.keys(obj).find((k) => localName10(k) === local);
41784
41596
  }
41785
41597
  function ensureChild(obj, local, prefixedFallback) {
41786
41598
  const key = findKey10(obj, local) ?? prefixedFallback;
@@ -41870,6 +41682,357 @@ function applySmartArtNodeStyleToPoint(pt, style) {
41870
41682
  applyRunStyle(pt, style);
41871
41683
  }
41872
41684
 
41685
+ // pptx/core/core/runtime/smartart-text-order.ts
41686
+ var childOrder = /* @__PURE__ */ new WeakMap();
41687
+ function localName11(name) {
41688
+ const colon = name.indexOf(":");
41689
+ return colon >= 0 ? name.slice(colon + 1) : name;
41690
+ }
41691
+ function isXmlObject2(value) {
41692
+ return Boolean(value && typeof value === "object" && !Array.isArray(value));
41693
+ }
41694
+ function collectParsedParagraphs(root) {
41695
+ const paragraphs = [];
41696
+ const stack = [root];
41697
+ while (stack.length > 0) {
41698
+ const current = stack.pop();
41699
+ if (!current || typeof current !== "object") {
41700
+ continue;
41701
+ }
41702
+ if (Array.isArray(current)) {
41703
+ for (let index = current.length - 1; index >= 0; index--) {
41704
+ stack.push(current[index]);
41705
+ }
41706
+ continue;
41707
+ }
41708
+ const node = current;
41709
+ for (const [key, value] of Object.entries(node).reverse()) {
41710
+ if ((localName11(key) === "t" || localName11(key) === "txBody") && value && typeof value === "object") {
41711
+ for (const [childKey2, childValue] of Object.entries(value)) {
41712
+ if (localName11(childKey2) !== "p") {
41713
+ continue;
41714
+ }
41715
+ paragraphs.push(
41716
+ ...(Array.isArray(childValue) ? childValue : [childValue]).filter(isXmlObject2)
41717
+ );
41718
+ }
41719
+ } else {
41720
+ stack.push(value);
41721
+ }
41722
+ }
41723
+ }
41724
+ return paragraphs;
41725
+ }
41726
+ function directChildOrder(xml) {
41727
+ const order = [];
41728
+ let depth = 0;
41729
+ for (const match of xml.matchAll(/<(\/)?([A-Za-z_][\w.-]*:)?([A-Za-z][\w.-]*)\b[^>]*>/gu)) {
41730
+ const closing = Boolean(match[1]);
41731
+ const selfClosing = /\/\s*>$/u.test(match[0]);
41732
+ if (closing) {
41733
+ depth = Math.max(0, depth - 1);
41734
+ continue;
41735
+ }
41736
+ if (depth === 0) {
41737
+ order.push(match[3]);
41738
+ }
41739
+ if (!selfClosing) {
41740
+ depth++;
41741
+ }
41742
+ }
41743
+ return order;
41744
+ }
41745
+ function extractElementOrders(xml, elementName) {
41746
+ const orders = [];
41747
+ const pattern = new RegExp(
41748
+ `<([A-Za-z_][\\w.-]*:)?${elementName}(?=[\\s/>])[^>]*>([\\s\\S]*?)<\\/\\1${elementName}\\s*>`,
41749
+ "gu"
41750
+ );
41751
+ for (const match of xml.matchAll(pattern)) {
41752
+ orders.push(directChildOrder(match[2]));
41753
+ }
41754
+ return orders;
41755
+ }
41756
+ function directChildrenByLocalName(paragraphs, name) {
41757
+ return paragraphs.flatMap(
41758
+ (paragraph) => Object.entries(paragraph).flatMap(([key, value]) => {
41759
+ if (localName11(key) !== name) {
41760
+ return [];
41761
+ }
41762
+ const values = Array.isArray(value) ? value : [value];
41763
+ return values.filter(isXmlObject2);
41764
+ })
41765
+ );
41766
+ }
41767
+ function annotateSmartArtTextOrder(xml, parsed) {
41768
+ const paragraphs = collectParsedParagraphs(parsed);
41769
+ const orders = extractElementOrders(xml, "p");
41770
+ for (let index = 0; index < Math.min(orders.length, paragraphs.length); index++) {
41771
+ childOrder.set(paragraphs[index], orders[index]);
41772
+ }
41773
+ for (const name of ["r", "fld", "br"]) {
41774
+ const nodes = directChildrenByLocalName(paragraphs, name);
41775
+ const nodeOrders = extractElementOrders(xml, name);
41776
+ for (let index = 0; index < Math.min(nodeOrders.length, nodes.length); index++) {
41777
+ childOrder.set(nodes[index], nodeOrders[index]);
41778
+ }
41779
+ }
41780
+ }
41781
+ function smartArtChildOrder(node) {
41782
+ return childOrder.get(node)?.slice();
41783
+ }
41784
+ function orderedSmartArtTextEntries(paragraph) {
41785
+ const keysByName = /* @__PURE__ */ new Map();
41786
+ for (const key of Object.keys(paragraph)) {
41787
+ if (!key.startsWith("@_")) {
41788
+ keysByName.set(localName11(key), key);
41789
+ }
41790
+ }
41791
+ const itemsFor = (key) => {
41792
+ const value = paragraph[key];
41793
+ return Array.isArray(value) ? value : value === void 0 ? [] : [value];
41794
+ };
41795
+ const order = childOrder.get(paragraph);
41796
+ if (!order) {
41797
+ return [...keysByName.values()].flatMap(
41798
+ (key) => itemsFor(key).map((item) => [key, item])
41799
+ );
41800
+ }
41801
+ const consumed = /* @__PURE__ */ new Map();
41802
+ return order.flatMap((name) => {
41803
+ const key = keysByName.get(name);
41804
+ if (!key) {
41805
+ return [];
41806
+ }
41807
+ const index = consumed.get(key) ?? 0;
41808
+ consumed.set(key, index + 1);
41809
+ const item = itemsFor(key)[index];
41810
+ return item === void 0 ? [] : [[key, item]];
41811
+ });
41812
+ }
41813
+
41814
+ // pptx/core/core/runtime/smartart-text-paragraphs.ts
41815
+ function localName12(name) {
41816
+ const colon = name.indexOf(":");
41817
+ return colon >= 0 ? name.slice(colon + 1) : name;
41818
+ }
41819
+ function keyFor(node, name) {
41820
+ return Object.keys(node).find((key) => localName12(key) === name);
41821
+ }
41822
+ function child14(node, name) {
41823
+ const key = keyFor(node, name);
41824
+ const value = key ? node[key] : void 0;
41825
+ if (key && (value === "" || value === void 0)) {
41826
+ return {};
41827
+ }
41828
+ return value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
41829
+ }
41830
+ function clone2(value) {
41831
+ return JSON.parse(JSON.stringify(value));
41832
+ }
41833
+ function directText(node) {
41834
+ const key = keyFor(node, "t");
41835
+ const value = key ? node[key] : void 0;
41836
+ return value === void 0 || value === null ? "" : String(value);
41837
+ }
41838
+ function parseItem(key, rawValue) {
41839
+ const name = localName12(key);
41840
+ if (!["r", "br", "fld", "tab"].includes(name)) {
41841
+ return { kind: "raw", name: key, value: clone2(rawValue) };
41842
+ }
41843
+ const raw = rawValue && typeof rawValue === "object" && !Array.isArray(rawValue) ? rawValue : {};
41844
+ if (name === "r") {
41845
+ const run = {
41846
+ text: directText(raw),
41847
+ rawXml: clone2(raw),
41848
+ childOrder: smartArtChildOrder(raw)
41849
+ };
41850
+ const rPr = child14(raw, "rPr");
41851
+ if (rPr) {
41852
+ run.rPr = clone2(rPr);
41853
+ }
41854
+ return { kind: "run", run };
41855
+ }
41856
+ if (name === "br") {
41857
+ const rPr = child14(raw, "rPr");
41858
+ return {
41859
+ kind: "break",
41860
+ ...rPr ? { rPr: clone2(rPr) } : {},
41861
+ rawXml: clone2(raw),
41862
+ childOrder: smartArtChildOrder(raw)
41863
+ };
41864
+ }
41865
+ if (name === "fld") {
41866
+ const rPr = child14(raw, "rPr");
41867
+ const pPr = child14(raw, "pPr");
41868
+ return {
41869
+ kind: "field",
41870
+ ...raw["@_id"] ? { id: String(raw["@_id"]) } : {},
41871
+ ...raw["@_type"] ? { fieldType: String(raw["@_type"]) } : {},
41872
+ text: directText(raw),
41873
+ ...rPr ? { rPr: clone2(rPr) } : {},
41874
+ ...pPr ? { pPr: clone2(pPr) } : {},
41875
+ rawXml: clone2(raw),
41876
+ childOrder: smartArtChildOrder(raw)
41877
+ };
41878
+ }
41879
+ if (name === "tab") {
41880
+ return { kind: "tab", rawXml: clone2(raw), childOrder: smartArtChildOrder(raw) };
41881
+ }
41882
+ return { kind: "raw", name: key, value: clone2(rawValue) };
41883
+ }
41884
+ function parseSmartArtTextParagraphs(point2) {
41885
+ const body = child14(point2, "t");
41886
+ if (!body) {
41887
+ return void 0;
41888
+ }
41889
+ const pKey = keyFor(body, "p");
41890
+ const raw = pKey ? body[pKey] : void 0;
41891
+ const paragraphNodes = Array.isArray(raw) ? raw : raw ? [raw] : [];
41892
+ if (paragraphNodes.length === 0) {
41893
+ return void 0;
41894
+ }
41895
+ return paragraphNodes.map((paragraph) => {
41896
+ const pPr = child14(paragraph, "pPr");
41897
+ const endParaRPr = child14(paragraph, "endParaRPr");
41898
+ return {
41899
+ ...pPr ? { pPr: clone2(pPr) } : {},
41900
+ items: orderedSmartArtTextEntries(paragraph).flatMap(
41901
+ ([key, item]) => ["pPr", "endParaRPr"].includes(localName12(key)) ? [] : [parseItem(key, item)]
41902
+ ),
41903
+ ...endParaRPr ? { endParaRPr: clone2(endParaRPr) } : {},
41904
+ rawXml: clone2(paragraph)
41905
+ };
41906
+ });
41907
+ }
41908
+ function smartArtParagraphsText(paragraphs) {
41909
+ return diagramParagraphsText(paragraphs);
41910
+ }
41911
+ function firstParagraphRuns(paragraphs) {
41912
+ return firstDiagramParagraphRuns(paragraphs);
41913
+ }
41914
+ function objectWithAttributes(raw) {
41915
+ return Object.fromEntries(
41916
+ Object.entries(raw ?? {}).filter(([key]) => key.startsWith("@_"))
41917
+ );
41918
+ }
41919
+ function appendChild2(target, name, value, order) {
41920
+ const seen = Object.keys(target).some((key) => key === name || key.startsWith(`${name}#`));
41921
+ target[seen ? orderedXmlKey(name, order) : name] = value;
41922
+ }
41923
+ function buildOrderedContainer(raw, order, replacements) {
41924
+ const xml = objectWithAttributes(raw);
41925
+ const keys = /* @__PURE__ */ new Map();
41926
+ for (const key of Object.keys(raw ?? {})) {
41927
+ if (!key.startsWith("@_")) {
41928
+ keys.set(localName12(key), key);
41929
+ }
41930
+ }
41931
+ const values = (name) => {
41932
+ const key = keys.get(name);
41933
+ const value = key ? raw?.[key] : void 0;
41934
+ return Array.isArray(value) ? value : value === void 0 ? [] : [value];
41935
+ };
41936
+ const derivedOrder = order ?? [...keys.keys()].flatMap((name) => values(name).map(() => name));
41937
+ const replacementMap = new Map(
41938
+ replacements.map(([name, value]) => [localName12(name), [name, value]])
41939
+ );
41940
+ const emittedReplacements = /* @__PURE__ */ new Set();
41941
+ const consumed = /* @__PURE__ */ new Map();
41942
+ let outputOrder = 0;
41943
+ for (const name of derivedOrder) {
41944
+ const replacement = replacementMap.get(name);
41945
+ if (replacement && !emittedReplacements.has(name)) {
41946
+ appendChild2(xml, replacement[0], replacement[1], outputOrder++);
41947
+ emittedReplacements.add(name);
41948
+ continue;
41949
+ }
41950
+ const index = consumed.get(name) ?? 0;
41951
+ const value = values(name)[index];
41952
+ consumed.set(name, index + 1);
41953
+ const key = keys.get(name);
41954
+ if (key && value !== void 0) {
41955
+ appendChild2(xml, key, clone2(value), outputOrder++);
41956
+ }
41957
+ }
41958
+ for (const [name, value] of replacements) {
41959
+ if (!emittedReplacements.has(localName12(name))) {
41960
+ appendChild2(xml, name, value, outputOrder++);
41961
+ }
41962
+ }
41963
+ return xml;
41964
+ }
41965
+ function buildItem(item) {
41966
+ if (item.kind === "run") {
41967
+ return [
41968
+ "a:r",
41969
+ buildOrderedContainer(item.run.rawXml, item.run.childOrder, [
41970
+ ["a:rPr", item.run.rPr ?? { "@_lang": "en-US" }],
41971
+ ["a:t", item.run.text]
41972
+ ])
41973
+ ];
41974
+ }
41975
+ if (item.kind === "break") {
41976
+ return [
41977
+ "a:br",
41978
+ buildOrderedContainer(
41979
+ item.rawXml,
41980
+ item.childOrder,
41981
+ item.rPr ? [["a:rPr", item.rPr]] : []
41982
+ )
41983
+ ];
41984
+ }
41985
+ if (item.kind === "field") {
41986
+ const replacements = [];
41987
+ if (item.rPr) {
41988
+ replacements.push(["a:rPr", item.rPr]);
41989
+ }
41990
+ if (item.pPr) {
41991
+ replacements.push(["a:pPr", item.pPr]);
41992
+ }
41993
+ replacements.push(["a:t", item.text]);
41994
+ const xml = buildOrderedContainer(
41995
+ item.rawXml,
41996
+ item.childOrder,
41997
+ replacements
41998
+ );
41999
+ if (item.id) {
42000
+ xml["@_id"] = item.id;
42001
+ }
42002
+ if (item.fieldType) {
42003
+ xml["@_type"] = item.fieldType;
42004
+ }
42005
+ return ["a:fld", xml];
42006
+ }
42007
+ if (item.kind === "tab") {
42008
+ return [
42009
+ "a:tab",
42010
+ buildOrderedContainer(item.rawXml, item.childOrder, [])
42011
+ ];
42012
+ }
42013
+ return [item.name, clone2(item.value)];
42014
+ }
42015
+ function buildSmartArtTextParagraph(paragraph) {
42016
+ const xml = objectWithAttributes(paragraph.rawXml);
42017
+ if (paragraph.pPr) {
42018
+ xml["a:pPr"] = paragraph.pPr;
42019
+ }
42020
+ let order = 0;
42021
+ for (const item of paragraph.items) {
42022
+ const [name, value] = buildItem(item);
42023
+ appendChild2(xml, name, value, order++);
42024
+ }
42025
+ if (paragraph.endParaRPr) {
42026
+ xml["a:endParaRPr"] = paragraph.endParaRPr;
42027
+ }
42028
+ return xml;
42029
+ }
42030
+
42031
+ // pptx/core/core/runtime/smartart-text-reconciliation.ts
42032
+ function reconcileSmartArtTextParagraphs(paragraphs, desired) {
42033
+ return reconcileDiagramTextParagraphs(paragraphs, desired);
42034
+ }
42035
+
41873
42036
  // pptx/core/core/runtime/smartart-xml-builders.ts
41874
42037
  var NON_CONTENT_POINT_TYPES = /* @__PURE__ */ new Set([
41875
42038
  "doc",
@@ -42140,99 +42303,14 @@ function mergeSmartArtConnectionXml(existingCxns, connections) {
42140
42303
  }
42141
42304
 
42142
42305
  // pptx/core/core/runtime/smartart-fabrication-data.ts
42143
- var XML_PROLOG = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
42144
- var DGM_XMLNS = 'xmlns:dgm="http://schemas.openxmlformats.org/drawingml/2006/diagram" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"';
42145
- function xmlEscape(value) {
42146
- return value.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll('"', "&quot;").replaceAll("'", "&apos;");
42147
- }
42148
- function avLstXml(adjustments) {
42149
- const entries = Object.entries(adjustments ?? {}).filter(([, v]) => Number.isFinite(v));
42150
- if (entries.length === 0) {
42151
- return "<a:avLst/>";
42152
- }
42153
- const gds = entries.map(([name, v]) => `<a:gd name="${xmlEscape(name)}" fmla="val ${Math.round(v)}"/>`).join("");
42154
- return `<a:avLst>${gds}</a:avLst>`;
42155
- }
42156
- var GUID_MODEL_ID = /^\{[0-9A-Fa-f]{8}(?:-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12}\}$/u;
42157
- var EMPTY_TEXT_BODY = '<dgm:t><a:bodyPr/><a:lstStyle/><a:p><a:endParaRPr lang="en-US"/></a:p></dgm:t>';
42158
- function contentTextBody(text2) {
42159
- if (!text2) {
42160
- return EMPTY_TEXT_BODY;
42161
- }
42162
- return `<dgm:t><a:bodyPr/><a:lstStyle/><a:p><a:r><a:rPr lang="en-US"/><a:t>${xmlEscape(text2)}</a:t></a:r></a:p></dgm:t>`;
42163
- }
42164
- function contentPointXml(guid, node) {
42165
- const prSet = node.text ? "<dgm:prSet/>" : '<dgm:prSet phldrT="[Text]" phldr="1"/>';
42166
- const typeAttr = node.nodeType === "asst" ? ' type="asst"' : "";
42167
- return `<dgm:pt modelId="${guid}"${typeAttr}>${prSet}<dgm:spPr/>${contentTextBody(node.text ?? "")}</dgm:pt>`;
42168
- }
42169
- function transPointXml(guid, type, cxnGuid) {
42170
- return `<dgm:pt modelId="${guid}" type="${type}" cxnId="${cxnGuid}"><dgm:prSet/><dgm:spPr/>${EMPTY_TEXT_BODY}</dgm:pt>`;
42171
- }
42172
- function docPointXml(docGuid, ids) {
42173
- return `<dgm:pt modelId="${docGuid}" type="doc"><dgm:prSet loTypeId="${xmlEscape(ids.layoutUniqueId)}" loCatId="${xmlEscape(ids.layoutCategory)}" qsTypeId="${xmlEscape(ids.quickStyleUniqueId)}" qsCatId="simple" csTypeId="${xmlEscape(ids.colorsUniqueId)}" csCatId="${xmlEscape(ids.colorsCategory)}"/><dgm:spPr/>${EMPTY_TEXT_BODY}</dgm:pt>`;
42174
- }
42175
42306
  function buildNodeGuidMap(nodes) {
42176
- const guidByNodeId = /* @__PURE__ */ new Map();
42177
- for (const node of nodes) {
42178
- if (node.id && !guidByNodeId.has(node.id)) {
42179
- guidByNodeId.set(node.id, GUID_MODEL_ID.test(node.id) ? node.id : newSmartArtGuid());
42180
- }
42181
- }
42182
- return guidByNodeId;
42307
+ return buildDiagramNodeGuidMap(nodes, newSmartArtGuid);
42183
42308
  }
42184
42309
  function buildPresentationGuidMap(nodes) {
42185
- const guidByNodeId = /* @__PURE__ */ new Map();
42186
- for (const node of nodes) {
42187
- if (node.id && !guidByNodeId.has(node.id)) {
42188
- guidByNodeId.set(node.id, newSmartArtGuid());
42189
- }
42190
- }
42191
- return guidByNodeId;
42310
+ return buildDiagramPresentationGuidMap(nodes, newSmartArtGuid);
42192
42311
  }
42193
- var DSP_DATA_MODEL_EXT_URI = "http://schemas.microsoft.com/office/drawing/2008/diagram";
42194
42312
  function buildFabricatedDiagramDataXml(data, ids, options = {}) {
42195
- const docGuid = newSmartArtGuid();
42196
- const guidByNodeId = options.guidByNodeId ?? buildNodeGuidMap(data.nodes);
42197
- const presentationGuidByNodeId = options.presentationGuidByNodeId ?? buildPresentationGuidMap(data.nodes);
42198
- const points = [docPointXml(docGuid, ids)];
42199
- const connections = [];
42200
- const nextSrcOrd = /* @__PURE__ */ new Map();
42201
- for (const node of data.nodes) {
42202
- const guid = node.id ? guidByNodeId.get(node.id) : void 0;
42203
- if (!guid) {
42204
- continue;
42205
- }
42206
- const parentGuid = node.parentId && guidByNodeId.get(node.parentId) || docGuid;
42207
- const srcOrd = nextSrcOrd.get(parentGuid) ?? 0;
42208
- nextSrcOrd.set(parentGuid, srcOrd + 1);
42209
- const cxnGuid = newSmartArtGuid();
42210
- const parTransGuid = newSmartArtGuid();
42211
- const sibTransGuid = newSmartArtGuid();
42212
- points.push(contentPointXml(guid, node));
42213
- points.push(transPointXml(parTransGuid, "parTrans", cxnGuid));
42214
- points.push(transPointXml(sibTransGuid, "sibTrans", cxnGuid));
42215
- connections.push(
42216
- `<dgm:cxn modelId="${cxnGuid}" srcId="${parentGuid}" destId="${guid}" srcOrd="${srcOrd}" destOrd="0" parTransId="${parTransGuid}" sibTransId="${sibTransGuid}"/>`
42217
- );
42218
- const presentationGuid = node.id ? presentationGuidByNodeId.get(node.id) : void 0;
42219
- if (presentationGuid) {
42220
- points.push(
42221
- `<dgm:pt modelId="${presentationGuid}" type="pres"><dgm:prSet presAssocID="${guid}" presName="node" presStyleLbl="node1" presStyleIdx="${srcOrd}" presStyleCnt="${data.nodes.length}"/><dgm:spPr/></dgm:pt>`
42222
- );
42223
- connections.push(
42224
- `<dgm:cxn modelId="${newSmartArtGuid()}" type="presOf" srcId="${guid}" destId="${presentationGuid}" srcOrd="0" destOrd="0" presId="${xmlEscape(ids.layoutUniqueId)}"/>`
42225
- );
42226
- }
42227
- }
42228
- return `${XML_PROLOG}\r
42229
- <dgm:dataModel ${DGM_XMLNS}><dgm:ptLst>${points.join("")}</dgm:ptLst><dgm:cxnLst>${connections.join("")}</dgm:cxnLst><dgm:bg/><dgm:whole/>${dataModelExtXml(options.drawingRelId)}</dgm:dataModel>`;
42230
- }
42231
- function dataModelExtXml(drawingRelId) {
42232
- if (!drawingRelId) {
42233
- return "";
42234
- }
42235
- return `<dgm:extLst><a:ext uri="${DSP_DATA_MODEL_EXT_URI}"><dsp:dataModelExt xmlns:dsp="${DSP_DATA_MODEL_EXT_URI}" relId="${xmlEscape(drawingRelId)}" minVer="http://schemas.openxmlformats.org/drawingml/2006/diagram"/></a:ext></dgm:extLst>`;
42313
+ return writeFabricatedDiagramData(data, ids, { createModelId: newSmartArtGuid, ...options });
42236
42314
  }
42237
42315
 
42238
42316
  // pptx/core/utils/text-body-sp3d-writer.ts
@@ -42582,7 +42660,7 @@ function shapePropsXml(shape) {
42582
42660
  }
42583
42661
  )
42584
42662
  })
42585
- ) : `<a:prstGeom prst="${xmlEscape(prst)}">${avLstXml(shape.shapeAdjustments)}</a:prstGeom>`;
42663
+ ) : `<a:prstGeom prst="${escapeDiagramXml(prst)}">${diagramAvLstXml(shape.shapeAdjustments)}</a:prstGeom>`;
42586
42664
  const fillHex = normalizeHex4(shape.fillColor);
42587
42665
  const fillAlpha = shape.fillOpacity !== void 0 && shape.fillOpacity < 1 ? `<a:alpha val="${Math.round(Math.max(0, shape.fillOpacity) * 1e5)}"/>` : "";
42588
42666
  const fill = fillHex ? fillAlpha ? `<a:solidFill><a:srgbClr val="${fillHex}">${fillAlpha}</a:srgbClr></a:solidFill>` : `<a:solidFill><a:srgbClr val="${fillHex}"/></a:solidFill>` : "";
@@ -42606,7 +42684,7 @@ function buildFabricatedDrawingXml(shapes, nodes, presentationGuidByNodeId) {
42606
42684
  if (!body) {
42607
42685
  return void 0;
42608
42686
  }
42609
- return `${XML_PROLOG}\r
42687
+ return `${DIAGRAM_XML_PROLOG}\r
42610
42688
  <dsp:drawing ${DSP_XMLNS}><dsp:spTree><dsp:nvGrpSpPr><dsp:cNvPr id="0" name=""/><dsp:cNvGrpSpPr/></dsp:nvGrpSpPr><dsp:grpSpPr/>${body}</dsp:spTree></dsp:drawing>`;
42611
42689
  }
42612
42690
  function withStyleLabel(element) {
@@ -44643,9 +44721,10 @@ exports.DEFAULT_COLOR_MAP = DEFAULT_COLOR_MAP;
44643
44721
  exports.DEFAULT_FONT_ADVANCE_TABLE = DEFAULT_FONT_ADVANCE_TABLE;
44644
44722
  exports.DEFAULT_MAX_UNCOMPRESSED_BYTES = DEFAULT_MAX_UNCOMPRESSED_BYTES;
44645
44723
  exports.DEFAULT_ROW_HEIGHT_EMU = DEFAULT_ROW_HEIGHT_EMU;
44646
- exports.DGM_XMLNS = DGM_XMLNS;
44724
+ exports.DIAGRAM_DATA_XMLNS = DIAGRAM_DATA_XMLNS;
44647
44725
  exports.DIAGRAM_DRAWING_CONTENT_TYPE = DIAGRAM_DRAWING_CONTENT_TYPE;
44648
44726
  exports.DIAGRAM_DRAWING_REL_TYPE = DIAGRAM_DRAWING_REL_TYPE;
44727
+ exports.DIAGRAM_XML_PROLOG = DIAGRAM_XML_PROLOG;
44649
44728
  exports.DIGITAL_SIGNATURE_ORIGIN_REL_TYPE = DIGITAL_SIGNATURE_ORIGIN_REL_TYPE;
44650
44729
  exports.ENTRY_TYPE_ROOT = ENTRY_TYPE_ROOT;
44651
44730
  exports.EncryptedFileError = EncryptedFileError;
@@ -44669,7 +44748,6 @@ exports.STYLE_MATRIX_FILL_KEYS = STYLE_MATRIX_FILL_KEYS;
44669
44748
  exports.STYLE_MATRIX_LINE_KEYS = STYLE_MATRIX_LINE_KEYS;
44670
44749
  exports.TC_PR_BORDERS_ORDER = TC_PR_BORDERS_ORDER;
44671
44750
  exports.VML_SHAPE_TAGS = VML_SHAPE_TAGS;
44672
- exports.XML_PROLOG = XML_PROLOG;
44673
44751
  exports.ZipBombError = ZipBombError;
44674
44752
  exports.annotateCustomGeometryCommandOrder = annotateCustomGeometryCommandOrder;
44675
44753
  exports.annotateSmartArtTextOrder = annotateSmartArtTextOrder;
@@ -44697,6 +44775,7 @@ exports.applySeriesPictureOptionsToXml = applySeriesPictureOptionsToXml;
44697
44775
  exports.applySmartArtLayoutDefinition = applySmartArtLayoutDefinition;
44698
44776
  exports.applyTextBodySp3d = applyTextBodySp3d;
44699
44777
  exports.applyThemeToData = applyThemeToData;
44778
+ exports.attr = attr;
44700
44779
  exports.backgroundRefNode = backgroundRefNode;
44701
44780
  exports.backgroundStyleColorMap = backgroundStyleColorMap;
44702
44781
  exports.backgroundStylePreset = backgroundStylePreset;
@@ -44768,6 +44847,7 @@ exports.ensureArrayValue = ensureArrayValue;
44768
44847
  exports.ensureXmlChild = ensureXmlChild;
44769
44848
  exports.ensureXmlChildOrCreate = ensureXmlChildOrCreate;
44770
44849
  exports.ensureXmlChildren = ensureXmlChildren;
44850
+ exports.escapeDiagramXml = escapeDiagramXml;
44771
44851
  exports.estimateMediaDurationMs = estimateMediaDurationMs;
44772
44852
  exports.evaluateGuides = evaluateGuides;
44773
44853
  exports.extractColorChoiceXml = extractColorChoiceXml;
@@ -44787,6 +44867,7 @@ exports.generateFontGuid = generateFontGuid;
44787
44867
  exports.getSignaturePathsToStrip = getSignaturePathsToStrip;
44788
44868
  exports.getTblFromRawXml = getTblFromRawXml;
44789
44869
  exports.guardZip = guardZip;
44870
+ exports.hasLocalName = hasLocalName;
44790
44871
  exports.hash = hash;
44791
44872
  exports.hslToRgb = hslToRgb;
44792
44873
  exports.inferOleExtensionFromTarget = inferOleExtensionFromTarget;
@@ -44818,8 +44899,8 @@ exports.obfuscateFont = obfuscateFont;
44818
44899
  exports.oleBytesToDataUrl = oleBytesToDataUrl;
44819
44900
  exports.ooxmlArcToSvg = ooxmlArcToSvg;
44820
44901
  exports.ooxmlGradientAngleToCssDegrees = ooxmlGradientAngleToCssDegrees;
44821
- exports.openNestedZip = openNestedZip;
44822
44902
  exports.openPptxZip = openPptxZip;
44903
+ exports.openZip = openZip;
44823
44904
  exports.orderedPathCommandEntries = orderedPathCommandEntries;
44824
44905
  exports.orderedXmlKey = orderedXmlKey;
44825
44906
  exports.parseActiveXControlsFromSlide = parseActiveXControlsFromSlide;
@@ -44890,7 +44971,6 @@ exports.parseVmlElements = parseVmlElements;
44890
44971
  exports.parseXml = parseXml;
44891
44972
  exports.positiveFixedAngleAttribute = positiveFixedAngleAttribute;
44892
44973
  exports.pptxActionToElementAction = pptxActionToElementAction;
44893
- exports.preservesSpreadsheetXmlWhitespace = preservesSpreadsheetXmlWhitespace;
44894
44974
  exports.preservesXmlWhitespace = preservesXmlWhitespace;
44895
44975
  exports.prismFamilyFlags = prismFamilyFlags;
44896
44976
  exports.prismFamilyTypeForFlags = prismFamilyTypeForFlags;
@@ -44961,7 +45041,6 @@ exports.xmlAttr = xmlAttr;
44961
45041
  exports.xmlAttrNumber = xmlAttrNumber;
44962
45042
  exports.xmlChild = xmlChild;
44963
45043
  exports.xmlChildren = xmlChildren;
44964
- exports.xmlEscape = xmlEscape;
44965
45044
  exports.xmlHasChild = xmlHasChild;
44966
45045
  exports.xmlPath = xmlPath;
44967
45046
  exports.xmlText = xmlText;