ooxml-core 1.8.4 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. package/dist/PptxHandler-AT7FVG5Q.mjs +2 -0
  2. package/dist/{PptxHandler-BL4B7CZO.mjs → PptxHandler-EX4WBIQQ.mjs} +2 -2
  3. package/dist/PptxHandler-VFSCECPL.cjs +11 -0
  4. package/dist/automation/index.cjs +6652 -4002
  5. package/dist/automation/index.mjs +6652 -4002
  6. package/dist/chunk-AT66SA5M.cjs +44423 -0
  7. package/dist/{chunk-TTPZITQN.mjs → chunk-FIELY5PI.mjs} +1 -1
  8. package/dist/{chunk-ZAP5WLEN.mjs → chunk-IGOA57LE.mjs} +1 -1
  9. package/dist/chunk-LCS3J3QI.mjs +87604 -0
  10. package/dist/{chunk-NIHPA63A.mjs → chunk-M76PHYRR.mjs} +54 -37
  11. package/dist/chunk-OB277ZGE.mjs +44107 -0
  12. package/dist/{chunk-GAGSCAR3.mjs → chunk-OXHMZS7B.mjs} +552 -178
  13. package/dist/chunk-SWF7KVL5.cjs +87610 -0
  14. package/dist/{chunk-Z7IQR4S4.mjs → chunk-WSO4T2LJ.mjs} +246 -21
  15. package/dist/docx/block-parser.d.ts.map +1 -1
  16. package/dist/docx/cell-blocks.d.ts +4 -0
  17. package/dist/docx/cell-blocks.d.ts.map +1 -0
  18. package/dist/docx/document-paragraphs.d.ts.map +1 -1
  19. package/dist/docx/document-parts.d.ts +2 -0
  20. package/dist/docx/document-parts.d.ts.map +1 -1
  21. package/dist/docx/embedded.cjs +189 -20
  22. package/dist/docx/embedded.mjs +189 -20
  23. package/dist/docx/index.cjs +219 -24
  24. package/dist/docx/index.mjs +219 -24
  25. package/dist/docx/layout/adapt-table.d.ts.map +1 -1
  26. package/dist/docx/layout/adapter.d.ts.map +1 -1
  27. package/dist/docx/layout/flow-paragraph.d.ts +5 -0
  28. package/dist/docx/layout/flow-paragraph.d.ts.map +1 -1
  29. package/dist/docx/layout/flow-table.d.ts +2 -1
  30. package/dist/docx/layout/flow-table.d.ts.map +1 -1
  31. package/dist/docx/layout/footnote-columns.d.ts +22 -0
  32. package/dist/docx/layout/footnote-columns.d.ts.map +1 -0
  33. package/dist/docx/layout/footnote-flow.d.ts +27 -0
  34. package/dist/docx/layout/footnote-flow.d.ts.map +1 -0
  35. package/dist/docx/layout/footnote-split.d.ts +7 -0
  36. package/dist/docx/layout/footnote-split.d.ts.map +1 -0
  37. package/dist/docx/layout/index.cjs +1099 -92
  38. package/dist/docx/layout/index.mjs +1099 -92
  39. package/dist/docx/layout/input.d.ts +17 -1
  40. package/dist/docx/layout/input.d.ts.map +1 -1
  41. package/dist/docx/layout/legacy-footnote-flow.d.ts +18 -0
  42. package/dist/docx/layout/legacy-footnote-flow.d.ts.map +1 -0
  43. package/dist/docx/layout/line-metrics.d.ts.map +1 -1
  44. package/dist/docx/layout/page-cursor.d.ts +13 -8
  45. package/dist/docx/layout/page-cursor.d.ts.map +1 -1
  46. package/dist/docx/layout/page-flow.d.ts.map +1 -1
  47. package/dist/docx/layout/paragraph-layout.d.ts.map +1 -1
  48. package/dist/docx/layout/paragraph-tokens.d.ts +2 -0
  49. package/dist/docx/layout/paragraph-tokens.d.ts.map +1 -1
  50. package/dist/docx/layout/reference-footnotes.d.ts +7 -0
  51. package/dist/docx/layout/reference-footnotes.d.ts.map +1 -0
  52. package/dist/docx/layout/result.d.ts +31 -0
  53. package/dist/docx/layout/result.d.ts.map +1 -1
  54. package/dist/docx/layout/section-flow.d.ts +2 -0
  55. package/dist/docx/layout/section-flow.d.ts.map +1 -1
  56. package/dist/docx/layout/table-cell-layout.d.ts +11 -0
  57. package/dist/docx/layout/table-cell-layout.d.ts.map +1 -0
  58. package/dist/docx/layout/table-footnotes.d.ts +27 -0
  59. package/dist/docx/layout/table-footnotes.d.ts.map +1 -0
  60. package/dist/docx/layout/table-layout.d.ts +10 -4
  61. package/dist/docx/layout/table-layout.d.ts.map +1 -1
  62. package/dist/docx/load/index.cjs +194 -25
  63. package/dist/docx/load/index.mjs +194 -25
  64. package/dist/docx/model-run.d.ts +2 -0
  65. package/dist/docx/model-run.d.ts.map +1 -1
  66. package/dist/docx/model.d.ts +7 -0
  67. package/dist/docx/model.d.ts.map +1 -1
  68. package/dist/docx/notes.d.ts +5 -0
  69. package/dist/docx/notes.d.ts.map +1 -1
  70. package/dist/docx/parse-table.d.ts.map +1 -1
  71. package/dist/docx/parse.d.ts.map +1 -1
  72. package/dist/docx/save.d.ts.map +1 -1
  73. package/dist/docx/section-model.d.ts +2 -0
  74. package/dist/docx/section-model.d.ts.map +1 -1
  75. package/dist/docx/sections.d.ts.map +1 -1
  76. package/dist/docx/settings.d.ts +2 -0
  77. package/dist/docx/settings.d.ts.map +1 -1
  78. package/dist/docx/table-model.d.ts +3 -1
  79. package/dist/docx/table-model.d.ts.map +1 -1
  80. package/dist/docx/ui/index.cjs +55 -0
  81. package/dist/docx/ui/index.d.ts +1 -0
  82. package/dist/docx/ui/index.d.ts.map +1 -1
  83. package/dist/docx/ui/index.mjs +55 -1
  84. package/dist/docx/ui/table-structure-guard.d.ts +4 -0
  85. package/dist/docx/ui/table-structure-guard.d.ts.map +1 -0
  86. package/dist/docx/write-footnote-columns.d.ts +3 -0
  87. package/dist/docx/write-footnote-columns.d.ts.map +1 -0
  88. package/dist/docx/write-notes.d.ts.map +1 -1
  89. package/dist/docx/write-run.d.ts.map +1 -1
  90. package/dist/docx/write-sections.d.ts.map +1 -1
  91. package/dist/index.cjs +8 -5
  92. package/dist/index.mjs +8 -5
  93. package/dist/opc/clone-part-graph.d.ts +4 -0
  94. package/dist/opc/clone-part-graph.d.ts.map +1 -1
  95. package/dist/opc/index.cjs +8 -5
  96. package/dist/opc/index.mjs +8 -5
  97. package/dist/pptx/automation/index.cjs +621 -207
  98. package/dist/pptx/automation/index.d.ts +3 -3
  99. package/dist/pptx/automation/index.mjs +5 -5
  100. package/dist/pptx/chunks/{index-Cn-GzYGp.d.ts → index-B4cnSPNz.d.ts} +33 -4
  101. package/dist/pptx/chunks/index-B4cnSPNz.d.ts.map +1 -0
  102. package/dist/pptx/chunks/{index-CKIUurnd.d.ts → index-BZh-IMkN.d.ts} +14 -9
  103. package/dist/pptx/chunks/{index-CKIUurnd.d.ts.map → index-BZh-IMkN.d.ts.map} +1 -1
  104. package/dist/pptx/chunks/{text-operations-BHfAm5K9.d.ts → text-operations-BLodkuXE.d.ts} +29 -12
  105. package/dist/pptx/chunks/text-operations-BLodkuXE.d.ts.map +1 -0
  106. package/dist/pptx/cli/index.cjs +622 -213
  107. package/dist/pptx/cli/index.d.ts +1 -1
  108. package/dist/pptx/cli/index.mjs +4 -4
  109. package/dist/pptx/converter/index.cjs +53 -36
  110. package/dist/pptx/converter/index.d.ts +1 -1
  111. package/dist/pptx/converter/index.mjs +2 -2
  112. package/dist/pptx/editor/render/find-replace.cjs +416 -45
  113. package/dist/pptx/editor/render/find-replace.d.ts +35 -4
  114. package/dist/pptx/editor/render/find-replace.d.ts.map +1 -1
  115. package/dist/pptx/editor/render/find-replace.mjs +416 -46
  116. package/dist/pptx/editor/render/slide-operations.cjs +87 -0
  117. package/dist/pptx/editor/render/slide-operations.d.ts +17 -1
  118. package/dist/pptx/editor/render/slide-operations.d.ts.map +1 -1
  119. package/dist/pptx/editor/render/slide-operations.mjs +83 -1
  120. package/dist/pptx/editor/render/slide-search.cjs +6 -10
  121. package/dist/pptx/editor/render/slide-search.d.ts +1 -1
  122. package/dist/pptx/editor/render/slide-search.mjs +6 -10
  123. package/dist/pptx/editor/render/template-editing.d.ts +1 -1
  124. package/dist/pptx/editor/render/template-editing.d.ts.map +1 -1
  125. package/dist/pptx/index.cjs +889 -237
  126. package/dist/pptx/index.d.ts +4 -4
  127. package/dist/pptx/index.mjs +5 -5
  128. package/dist/teams/index.cjs +593 -34
  129. package/dist/teams/index.mjs +593 -34
  130. package/dist/visio/accessibility.d.ts +10 -0
  131. package/dist/visio/accessibility.d.ts.map +1 -0
  132. package/dist/visio/cell-formula.d.ts +2 -0
  133. package/dist/visio/cell-formula.d.ts.map +1 -1
  134. package/dist/visio/connector-curve-aligned.d.ts +5 -0
  135. package/dist/visio/connector-curve-aligned.d.ts.map +1 -0
  136. package/dist/visio/connector-curve-spans.d.ts +14 -0
  137. package/dist/visio/connector-curve-spans.d.ts.map +1 -0
  138. package/dist/visio/connector-jumps.d.ts +5 -0
  139. package/dist/visio/connector-jumps.d.ts.map +1 -0
  140. package/dist/visio/connector-route-walk.d.ts +2 -1
  141. package/dist/visio/connector-route-walk.d.ts.map +1 -1
  142. package/dist/visio/edit-alt-text-scope.d.ts +5 -0
  143. package/dist/visio/edit-alt-text-scope.d.ts.map +1 -0
  144. package/dist/visio/edit-alt-text.d.ts +3 -0
  145. package/dist/visio/edit-alt-text.d.ts.map +1 -0
  146. package/dist/visio/edit-commands.d.ts +7 -2
  147. package/dist/visio/edit-commands.d.ts.map +1 -1
  148. package/dist/visio/edit-formatting-commands.d.ts +5 -0
  149. package/dist/visio/edit-formatting-commands.d.ts.map +1 -1
  150. package/dist/visio/edit-formatting-paint.d.ts.map +1 -1
  151. package/dist/visio/edit-formatting-scope.d.ts.map +1 -1
  152. package/dist/visio/edit-line-jump-cache.d.ts +4 -0
  153. package/dist/visio/edit-line-jump-cache.d.ts.map +1 -0
  154. package/dist/visio/edit-master-index.d.ts.map +1 -1
  155. package/dist/visio/edit-metadata-commands.d.ts +10 -2
  156. package/dist/visio/edit-metadata-commands.d.ts.map +1 -1
  157. package/dist/visio/edit-metadata.d.ts +3 -1
  158. package/dist/visio/edit-metadata.d.ts.map +1 -1
  159. package/dist/visio/edit-page-alt-text.d.ts +4 -0
  160. package/dist/visio/edit-page-alt-text.d.ts.map +1 -0
  161. package/dist/visio/edit-page-layout.d.ts.map +1 -1
  162. package/dist/visio/edit-page-rename.d.ts.map +1 -1
  163. package/dist/visio/edit-page-setup-commands.d.ts +7 -1
  164. package/dist/visio/edit-page-setup-commands.d.ts.map +1 -1
  165. package/dist/visio/edit-page-size.d.ts.map +1 -1
  166. package/dist/visio/edit-pages.d.ts.map +1 -1
  167. package/dist/visio/edit-recalculate-index.d.ts.map +1 -1
  168. package/dist/visio/edit-scope.d.ts.map +1 -1
  169. package/dist/visio/edit-shape-create.d.ts.map +1 -1
  170. package/dist/visio/edit-stencil-connector-write.d.ts.map +1 -1
  171. package/dist/visio/edit-style-admission.d.ts.map +1 -1
  172. package/dist/visio/edit-text.d.ts.map +1 -1
  173. package/dist/visio/edit.d.ts +1 -1
  174. package/dist/visio/edit.d.ts.map +1 -1
  175. package/dist/visio/index.cjs +1091 -233
  176. package/dist/visio/index.d.ts +2 -1
  177. package/dist/visio/index.d.ts.map +1 -1
  178. package/dist/visio/index.mjs +1091 -234
  179. package/dist/visio/line-jumps.d.ts +1 -5
  180. package/dist/visio/line-jumps.d.ts.map +1 -1
  181. package/dist/visio/model.d.ts +13 -0
  182. package/dist/visio/model.d.ts.map +1 -1
  183. package/dist/visio/page-layout.d.ts +11 -2
  184. package/dist/visio/page-layout.d.ts.map +1 -1
  185. package/dist/visio/parser.d.ts.map +1 -1
  186. package/dist/visio/shape-metadata.d.ts +6 -0
  187. package/dist/visio/shape-metadata.d.ts.map +1 -1
  188. package/dist/visio/shapes.d.ts.map +1 -1
  189. package/dist/visio/text-field-case.d.ts +2 -0
  190. package/dist/visio/text-field-case.d.ts.map +1 -0
  191. package/dist/visio/text-field-display.d.ts.map +1 -1
  192. package/dist/visio/text-field-numeric.d.ts +4 -0
  193. package/dist/visio/text-field-numeric.d.ts.map +1 -0
  194. package/dist/visio/ui/connector-preview.d.ts +1 -1
  195. package/dist/visio/ui/connector-preview.d.ts.map +1 -1
  196. package/dist/visio/ui/data-graphic-rules.d.ts +2 -0
  197. package/dist/visio/ui/data-graphic-rules.d.ts.map +1 -1
  198. package/dist/visio/ui/data-graphics.d.ts +3 -2
  199. package/dist/visio/ui/data-graphics.d.ts.map +1 -1
  200. package/dist/visio/ui/edit-commands.d.ts.map +1 -1
  201. package/dist/visio/ui/index.cjs +16898 -15855
  202. package/dist/visio/ui/index.mjs +16898 -15856
  203. package/dist/visio/ui/scene-details.d.ts.map +1 -1
  204. package/dist/visio/ui/scene-validation.d.ts.map +1 -1
  205. package/dist/visio/ui/snapshot-scene.d.ts +2 -1
  206. package/dist/visio/ui/snapshot-scene.d.ts.map +1 -1
  207. package/dist/visio/xml-attribute-whitespace.d.ts +5 -0
  208. package/dist/visio/xml-attribute-whitespace.d.ts.map +1 -0
  209. package/dist/xlsx/edit/index.d.ts +1 -0
  210. package/dist/xlsx/edit/index.d.ts.map +1 -1
  211. package/dist/xlsx/edit/insert-guard.d.ts.map +1 -1
  212. package/dist/xlsx/edit/merge.d.ts.map +1 -1
  213. package/dist/xlsx/edit/page-breaks.d.ts +5 -0
  214. package/dist/xlsx/edit/page-breaks.d.ts.map +1 -0
  215. package/dist/xlsx/edit/pivots.d.ts +8 -0
  216. package/dist/xlsx/edit/pivots.d.ts.map +1 -0
  217. package/dist/xlsx/edit/print-titles.d.ts +7 -0
  218. package/dist/xlsx/edit/print-titles.d.ts.map +1 -0
  219. package/dist/xlsx/edit/session.d.ts.map +1 -1
  220. package/dist/xlsx/edit/sheets.d.ts.map +1 -1
  221. package/dist/xlsx/edit/shift-formulas.d.ts.map +1 -1
  222. package/dist/xlsx/edit/shift-sheet.d.ts.map +1 -1
  223. package/dist/xlsx/edit/sparkline-ranges.d.ts +11 -0
  224. package/dist/xlsx/edit/sparkline-ranges.d.ts.map +1 -0
  225. package/dist/xlsx/edit/sparkline-xml.d.ts +13 -0
  226. package/dist/xlsx/edit/sparkline-xml.d.ts.map +1 -0
  227. package/dist/xlsx/edit/sparklines.d.ts +16 -0
  228. package/dist/xlsx/edit/sparklines.d.ts.map +1 -0
  229. package/dist/xlsx/edit/table-edits.d.ts.map +1 -1
  230. package/dist/xlsx/edit/tables.d.ts.map +1 -1
  231. package/dist/xlsx/edit/types.d.ts +22 -1
  232. package/dist/xlsx/edit/types.d.ts.map +1 -1
  233. package/dist/xlsx/formula/functions/text-regex.d.ts.map +1 -1
  234. package/dist/xlsx/index.cjs +3159 -1164
  235. package/dist/xlsx/index.d.ts +1 -0
  236. package/dist/xlsx/index.d.ts.map +1 -1
  237. package/dist/xlsx/index.mjs +3140 -1165
  238. package/dist/xlsx/layout/cell-view.d.ts +2 -0
  239. package/dist/xlsx/layout/cell-view.d.ts.map +1 -1
  240. package/dist/xlsx/layout/header-footer.d.ts +58 -0
  241. package/dist/xlsx/layout/header-footer.d.ts.map +1 -0
  242. package/dist/xlsx/layout/index.d.ts +5 -0
  243. package/dist/xlsx/layout/index.d.ts.map +1 -1
  244. package/dist/xlsx/layout/print-breaks.d.ts +11 -0
  245. package/dist/xlsx/layout/print-breaks.d.ts.map +1 -0
  246. package/dist/xlsx/layout/print-layout.d.ts +34 -0
  247. package/dist/xlsx/layout/print-layout.d.ts.map +1 -0
  248. package/dist/xlsx/layout/print-merges.d.ts +18 -0
  249. package/dist/xlsx/layout/print-merges.d.ts.map +1 -0
  250. package/dist/xlsx/layout/print-repeat.d.ts +12 -0
  251. package/dist/xlsx/layout/print-repeat.d.ts.map +1 -0
  252. package/dist/xlsx/layout/print-titles.d.ts +20 -0
  253. package/dist/xlsx/layout/print-titles.d.ts.map +1 -0
  254. package/dist/xlsx/layout/sparkline-data.d.ts.map +1 -1
  255. package/dist/xlsx/layout/sparkline-view.d.ts.map +1 -1
  256. package/dist/xlsx/load/index.cjs +7784 -6976
  257. package/dist/xlsx/load/index.mjs +7784 -6976
  258. package/dist/xlsx/model-pivots.d.ts +46 -0
  259. package/dist/xlsx/model-pivots.d.ts.map +1 -0
  260. package/dist/xlsx/model.d.ts +5 -0
  261. package/dist/xlsx/model.d.ts.map +1 -1
  262. package/dist/xlsx/pivot/admission.d.ts +5 -0
  263. package/dist/xlsx/pivot/admission.d.ts.map +1 -0
  264. package/dist/xlsx/pivot/aggregate.d.ts +19 -0
  265. package/dist/xlsx/pivot/aggregate.d.ts.map +1 -0
  266. package/dist/xlsx/pivot/cache-xml.d.ts +9 -0
  267. package/dist/xlsx/pivot/cache-xml.d.ts.map +1 -0
  268. package/dist/xlsx/pivot/data.d.ts +12 -0
  269. package/dist/xlsx/pivot/data.d.ts.map +1 -0
  270. package/dist/xlsx/pivot/hierarchy.d.ts +7 -0
  271. package/dist/xlsx/pivot/hierarchy.d.ts.map +1 -0
  272. package/dist/xlsx/pivot/index.d.ts +3 -0
  273. package/dist/xlsx/pivot/index.d.ts.map +1 -0
  274. package/dist/xlsx/pivot/read.d.ts +5 -0
  275. package/dist/xlsx/pivot/read.d.ts.map +1 -0
  276. package/dist/xlsx/pivot/table-xml.d.ts +5 -0
  277. package/dist/xlsx/pivot/table-xml.d.ts.map +1 -0
  278. package/dist/xlsx/pivot/write.d.ts +11 -0
  279. package/dist/xlsx/pivot/write.d.ts.map +1 -0
  280. package/dist/xlsx/read/load.d.ts.map +1 -1
  281. package/dist/xlsx/read/sheet-props.d.ts.map +1 -1
  282. package/dist/xlsx/ui/commands/i18n/index.d.ts.map +1 -1
  283. package/dist/xlsx/ui/commands/i18n/navigation.d.ts.map +1 -1
  284. package/dist/xlsx/ui/commands/i18n/pivots.d.ts +3 -0
  285. package/dist/xlsx/ui/commands/i18n/pivots.d.ts.map +1 -0
  286. package/dist/xlsx/ui/commands/i18n/print-layout.d.ts +3 -0
  287. package/dist/xlsx/ui/commands/i18n/print-layout.d.ts.map +1 -0
  288. package/dist/xlsx/ui/commands/i18n/sparklines.d.ts +3 -0
  289. package/dist/xlsx/ui/commands/i18n/sparklines.d.ts.map +1 -0
  290. package/dist/xlsx/ui/commands/i18n/tools.d.ts.map +1 -1
  291. package/dist/xlsx/ui/commands/page-breaks.d.ts +3 -0
  292. package/dist/xlsx/ui/commands/page-breaks.d.ts.map +1 -0
  293. package/dist/xlsx/ui/index.cjs +2001 -288
  294. package/dist/xlsx/ui/index.d.ts +1 -0
  295. package/dist/xlsx/ui/index.d.ts.map +1 -1
  296. package/dist/xlsx/ui/index.mjs +2001 -289
  297. package/dist/xlsx/write/page-setup.d.ts.map +1 -1
  298. package/dist/xlsx/write/save.d.ts.map +1 -1
  299. package/dist/xlsx/write/sheet-parts.d.ts +1 -0
  300. package/dist/xlsx/write/sheet-parts.d.ts.map +1 -1
  301. package/dist/xlsx/write/workbook-part.d.ts +1 -1
  302. package/dist/xlsx/write/workbook-part.d.ts.map +1 -1
  303. package/dist/xlsx/write/worksheet.d.ts.map +1 -1
  304. package/package.json +1 -1
  305. package/dist/pptx/chunks/index-Cn-GzYGp.d.ts.map +0 -1
  306. package/dist/pptx/chunks/text-operations-BHfAm5K9.d.ts.map +0 -1
@@ -1,41 +1,379 @@
1
1
  'use strict';
2
2
 
3
- var pptx = require('ooxml-core/pptx');
3
+ var chunkAT66SA5M_cjs = require('../../../chunk-AT66SA5M.cjs');
4
+ var chunkCPKNMQLX_cjs = require('../../../chunk-CPKNMQLX.cjs');
5
+ require('../../../chunk-7IUNOWFJ.cjs');
6
+ require('../../../chunk-Y6665UXH.cjs');
7
+ require('../../../chunk-RGLJ6BCK.cjs');
8
+ require('../../../chunk-R6Z5C4DA.cjs');
9
+ require('../../../chunk-AT2NLO2F.cjs');
10
+ require('../../../chunk-57KYGHFF.cjs');
11
+ require('../../../chunk-V33BRBWQ.cjs');
12
+
13
+ // pptx/editor/render/chart-find-source-guards.ts
14
+ function chartSourceReferenceCounts(slides) {
15
+ const counts = /* @__PURE__ */ new Map();
16
+ function visit(elements) {
17
+ for (const element of elements) {
18
+ if (element.type === "group") visit(element.children);
19
+ else if (element.type === "chart" && element.chartData?.chartPartPath) {
20
+ const part = element.chartData.chartPartPath;
21
+ counts.set(part, (counts.get(part) ?? 0) + 1);
22
+ }
23
+ }
24
+ }
25
+ for (const slide of slides) visit(slide.elements);
26
+ return counts;
27
+ }
28
+ function findMatchChartSource(slides, match) {
29
+ let element = slides[match.slideIndex]?.elements.find((item) => item.id === match.elementId);
30
+ for (const index of match.elementPath ?? []) {
31
+ element = element?.type === "group" ? element.children[index] : void 0;
32
+ }
33
+ return element?.type === "chart" ? element.chartData?.chartPartPath : void 0;
34
+ }
35
+
36
+ // pptx/editor/render/chart-label-editability.ts
37
+ var LITERAL_CATEGORY_TYPES = /* @__PURE__ */ new Set([
38
+ "bar",
39
+ "line",
40
+ "pie",
41
+ "ofPie",
42
+ "doughnut",
43
+ "area",
44
+ "radar",
45
+ "bar3D",
46
+ "line3D",
47
+ "pie3D",
48
+ "area3D",
49
+ "surface"
50
+ ]);
51
+ function chartLabelsAreEditable(element) {
52
+ const data = element.chartData;
53
+ if (!data) return false;
54
+ if (data.dataLabelTextEditable !== void 0) {
55
+ const shape = data.dataLabelSourceShape;
56
+ return data.dataLabelTextEditable && (!shape || shape.categoryCount === data.categories.length && shape.seriesValueCounts.length === data.series.length && shape.seriesValueCounts.every(
57
+ (count, index) => count === data.series[index]?.values.length
58
+ ));
59
+ }
60
+ return !element.rawXml && !data.chartPartPath && !data.externalData && !data.categoryLevels && !data.dateCategories && LITERAL_CATEGORY_TYPES.has(data.chartType) && data.categories.length > 0 && data.series.length > 0 && data.series.every(
61
+ (series) => series.values.length === data.categories.length && series.values.every(Number.isFinite)
62
+ );
63
+ }
64
+
65
+ // pptx/editor/render/find-text-targets.ts
66
+ function* smartArtNodes(nodes) {
67
+ for (const node of nodes) {
68
+ yield node;
69
+ if (node.children) yield* smartArtNodes(node.children);
70
+ }
71
+ }
72
+ function textRuns(cell) {
73
+ return cell.textRuns?.length ? cell.textRuns : [{ text: cell.text }];
74
+ }
75
+ function* findTextTargets(element, elementId = element.id, path = [], includeChartTitles = true, includeChartData = false) {
76
+ const location = { elementId, ...path.length ? { elementPath: path } : {} };
77
+ if (element.type === "group") {
78
+ for (const [index, child] of element.children.entries())
79
+ yield* findTextTargets(
80
+ child,
81
+ elementId,
82
+ [...path, index],
83
+ includeChartTitles,
84
+ includeChartData
85
+ );
86
+ } else if (chunkAT66SA5M_cjs.hasTextProperties(element)) {
87
+ const runs = element.textSegments?.length ? element.textSegments : element.text ? [{ text: element.text, style: element.textStyle ?? {} }] : [];
88
+ yield { ...location, runs };
89
+ } else if (element.type === "table" && element.tableData) {
90
+ for (const [rowIndex, row] of element.tableData.rows.entries())
91
+ for (const [colIndex, cell] of row.cells.entries())
92
+ yield { ...location, tableCell: { rowIndex, colIndex }, runs: textRuns(cell) };
93
+ } else if (element.type === "smartArt" && element.smartArtData) {
94
+ for (const node of smartArtNodes(element.smartArtData.nodes))
95
+ yield { ...location, smartArtNodeId: node.id, runs: [{ text: node.text }] };
96
+ } else if (element.type === "chart" && element.chartData) {
97
+ const chart = element.chartData;
98
+ if (includeChartTitles && chart.style?.hasTitle !== false) {
99
+ const runs = chart.titleRuns?.length ? chart.titleRuns : chart.title ? [{ text: chart.title }] : [];
100
+ yield { ...location, chartTitle: true, readOnly: chart.titleTextEditable === false, runs };
101
+ }
102
+ if (includeChartData) {
103
+ const readOnly = !chartLabelsAreEditable(element);
104
+ for (const [chartSeriesIndex, series] of chart.series.entries())
105
+ yield { ...location, chartSeriesIndex, readOnly, runs: [{ text: series.name }] };
106
+ for (const [chartCategoryIndex, text] of chart.categories.entries())
107
+ yield { ...location, chartCategoryIndex, readOnly, runs: [{ text }] };
108
+ }
109
+ }
110
+ }
111
+ function isFindBreak(run) {
112
+ return Boolean(run.isParagraphBreak || run.isLineBreak || run.text === "\n");
113
+ }
114
+ function replaceFindRuns(runs, startIndex, startOffset, length, replacement) {
115
+ const first = runs[startIndex];
116
+ if (!first || isFindBreak(first) || startOffset < 0 || startOffset >= first.text.length || length <= 0)
117
+ return void 0;
118
+ const next = [...runs];
119
+ let remaining = length;
120
+ for (let index = startIndex; index < runs.length && remaining > 0; index++) {
121
+ const run = runs[index];
122
+ if (isFindBreak(run)) return void 0;
123
+ const offset = index === startIndex ? startOffset : 0;
124
+ const removed = Math.min(remaining, run.text.length - offset);
125
+ next[index] = {
126
+ ...run,
127
+ text: run.text.slice(0, offset) + (index === startIndex ? replacement : "") + run.text.slice(offset + removed)
128
+ };
129
+ remaining -= removed;
130
+ }
131
+ return remaining === 0 ? next : void 0;
132
+ }
133
+ function* findSlideTextTargets(slide, includeNotes = false, includeChartTitles = true, includeChartData = false) {
134
+ for (const element of slide.elements)
135
+ yield* findTextTargets(element, element.id, [], includeChartTitles, includeChartData);
136
+ if (includeNotes && slide.notes) {
137
+ const runs = slide.notesSegments?.length && slide.notesSegments.map((run) => run.text).join("") === slide.notes ? slide.notesSegments : [{ text: slide.notes, style: {} }];
138
+ yield { elementId: "", notes: true, runs };
139
+ }
140
+ }
141
+
142
+ // pptx/editor/render/find-replace-target.ts
143
+ function patchTableXml(element, rowIndex, colIndex, original, runs) {
144
+ if (!element.rawXml) return void 0;
145
+ const rawXml = structuredClone(element.rawXml);
146
+ const table = chunkAT66SA5M_cjs.getTblFromRawXml(rawXml);
147
+ const row = chunkAT66SA5M_cjs.ensureArray(table?.["a:tr"])[rowIndex];
148
+ const cell = chunkAT66SA5M_cjs.ensureArray(row?.["a:tc"])[colIndex];
149
+ const paragraphs = chunkAT66SA5M_cjs.ensureArray(
150
+ cell?.["a:txBody"]?.["a:p"]
151
+ );
152
+ let paragraphIndex = 0, runIndex = 0, fieldIndex = 0;
153
+ for (let index = 0; index < original.length; index++) {
154
+ const previous = original[index];
155
+ if (previous.isParagraphBreak) {
156
+ paragraphIndex++;
157
+ runIndex = 0;
158
+ fieldIndex = 0;
159
+ continue;
160
+ }
161
+ if (previous.isLineBreak) continue;
162
+ const paragraph = paragraphs[paragraphIndex];
163
+ const key = previous.isField ? "a:fld" : "a:r";
164
+ const xmlRun = chunkAT66SA5M_cjs.ensureArray(paragraph?.[key])[previous.isField ? fieldIndex++ : runIndex++];
165
+ if (!xmlRun) return void 0;
166
+ if (previous.text !== runs[index].text) xmlRun["a:t"] = runs[index].text;
167
+ }
168
+ return rawXml;
169
+ }
170
+ function updateNode(nodes, nodeId, text) {
171
+ return nodes.map((node) => {
172
+ if (node.id === nodeId) {
173
+ const originalParagraphs = node.paragraphs ?? (node.runs?.length ? [{ items: node.runs.map((run) => ({ kind: "run", run })) }] : void 0);
174
+ const paragraphs = originalParagraphs ? chunkAT66SA5M_cjs.reconcileSmartArtTextParagraphs(originalParagraphs, text) : void 0;
175
+ return { ...node, text, ...paragraphs ? { paragraphs } : {} };
176
+ }
177
+ if (!node.children) return node;
178
+ const children = updateNode(node.children, nodeId, text);
179
+ return children.every((child, index) => child === node.children[index]) ? node : { ...node, children };
180
+ });
181
+ }
182
+ function replaceLeaf(element, match, replacement) {
183
+ if ((match.chartSeriesIndex !== void 0 || match.chartCategoryIndex !== void 0) && element.type === "chart" && element.chartData) {
184
+ const data = element.chartData;
185
+ if (!chartLabelsAreEditable(element))
186
+ throw new Error("Chart labels require editing in PowerPoint or their source workbook");
187
+ const text = match.chartSeriesIndex !== void 0 ? data.series[match.chartSeriesIndex]?.name : data.categories[match.chartCategoryIndex];
188
+ if (text === void 0) return element;
189
+ const next = replaceFindRuns(
190
+ [{ text }],
191
+ match.segmentIndex,
192
+ match.startOffset,
193
+ match.length,
194
+ replacement
195
+ );
196
+ if (!next) return element;
197
+ return {
198
+ ...element,
199
+ chartData: {
200
+ ...data,
201
+ dataLabelTextOnly: true,
202
+ ...match.chartSeriesIndex !== void 0 ? {
203
+ series: data.series.map(
204
+ (series, index) => index === match.chartSeriesIndex ? { ...series, name: next[0].text } : series
205
+ )
206
+ } : {
207
+ categories: data.categories.map(
208
+ (category, index) => index === match.chartCategoryIndex ? next[0].text : category
209
+ )
210
+ }
211
+ }
212
+ };
213
+ }
214
+ if (match.chartTitle && element.type === "chart" && element.chartData) {
215
+ const data = element.chartData;
216
+ if (data.titleTextEditable === false)
217
+ throw new Error("This chart title requires editing in PowerPoint or its source workbook");
218
+ const runs = data.titleRuns?.length ? data.titleRuns : [{ text: data.title ?? "" }];
219
+ const next = replaceFindRuns(
220
+ runs,
221
+ match.segmentIndex,
222
+ match.startOffset,
223
+ match.length,
224
+ replacement
225
+ );
226
+ if (!next) return element;
227
+ return {
228
+ ...element,
229
+ chartData: {
230
+ ...data,
231
+ title: next[0]?.text ?? "",
232
+ titleRuns: next,
233
+ titleTextOnly: true,
234
+ titleTextOnlyStyles: data.titleTextOnlyStyles ?? runs.map(({ text: _text, ...style }) => style),
235
+ style: { ...data.style, hasTitle: next.some((run) => run.text.length > 0) }
236
+ }
237
+ };
238
+ }
239
+ if (match.tableCell && element.type === "table" && element.tableData) {
240
+ const { rowIndex, colIndex } = match.tableCell;
241
+ const row = element.tableData.rows[rowIndex], cell = row?.cells[colIndex];
242
+ if (!cell) return element;
243
+ const original2 = cell.textRuns?.length ? cell.textRuns : [{ text: cell.text }];
244
+ const runs = replaceFindRuns(
245
+ original2,
246
+ match.segmentIndex,
247
+ match.startOffset,
248
+ match.length,
249
+ replacement
250
+ );
251
+ if (!runs) return element;
252
+ let text = runs.map((run) => run.isParagraphBreak ? "\n" : run.isLineBreak ? "" : run.text).join("");
253
+ let rawXml = cell.textRuns?.length ? patchTableXml(element, rowIndex, colIndex, original2, runs) : chunkAT66SA5M_cjs.updateCellTextInRawXml(element, rowIndex, colIndex, text);
254
+ if (rawXml) {
255
+ const table = chunkAT66SA5M_cjs.getTblFromRawXml(rawXml);
256
+ const xmlRow = chunkAT66SA5M_cjs.ensureArray(table?.["a:tr"])[rowIndex];
257
+ const xmlCell = chunkAT66SA5M_cjs.ensureArray(xmlRow?.["a:tc"])[colIndex];
258
+ text = chunkAT66SA5M_cjs.flattenCellTxBodyText(
259
+ xmlCell?.["a:txBody"],
260
+ (value) => chunkAT66SA5M_cjs.ensureArray(value)
261
+ );
262
+ }
263
+ const rows = [...element.tableData.rows], cells = [...row.cells];
264
+ cells[colIndex] = { ...cell, text, ...cell.textRuns ? { textRuns: runs } : {} };
265
+ rows[rowIndex] = { ...row, cells };
266
+ return { ...element, tableData: { ...element.tableData, rows }, ...rawXml ? { rawXml } : {} };
267
+ }
268
+ if (match.smartArtNodeId && element.type === "smartArt" && element.smartArtData) {
269
+ const data = element.smartArtData;
270
+ const nodes = [...smartArtNodes(data.nodes)], node = nodes.find((candidate) => candidate.id === match.smartArtNodeId);
271
+ if (!node || match.startOffset < 0 || match.startOffset + match.length > node.text.length)
272
+ return element;
273
+ const text = node.text.slice(0, match.startOffset) + replacement + node.text.slice(match.startOffset + match.length);
274
+ const next = chunkAT66SA5M_cjs.updateSmartArtNodeText({ ...data, nodes }, node.id, text);
275
+ const drawingShapes = next.drawingShapes?.map((shape, index) => {
276
+ if (shape === data.drawingShapes?.[index] || !shape.textSegments) return shape;
277
+ return {
278
+ ...shape,
279
+ textSegments: chunkCPKNMQLX_cjs.remapTextToSegments(text, shape.textSegments, { fontSize: shape.fontSize })
280
+ };
281
+ });
282
+ return {
283
+ ...element,
284
+ smartArtData: { ...next, drawingShapes, nodes: updateNode(data.nodes, node.id, text) }
285
+ };
286
+ }
287
+ if (!chunkAT66SA5M_cjs.hasTextProperties(element)) return element;
288
+ const original = element.textSegments?.length ? element.textSegments : element.text ? [{ text: element.text, style: element.textStyle ?? {} }] : [];
289
+ const segments = replaceFindRuns(
290
+ original,
291
+ match.segmentIndex,
292
+ match.startOffset,
293
+ match.length,
294
+ replacement
295
+ );
296
+ if (!segments) return element;
297
+ return {
298
+ ...element,
299
+ textSegments: segments,
300
+ text: segments.map((run) => isFindBreak(run) ? "\n" : run.text).join("")
301
+ };
302
+ }
303
+ function replaceFindTarget(element, match, replacement, path = match.elementPath ?? []) {
304
+ if (!path.length) return replaceLeaf(element, match, replacement);
305
+ if (element.type !== "group") return element;
306
+ const index = path[0], child = element.children[index];
307
+ if (!child) return element;
308
+ const next = replaceFindTarget(child, match, replacement, path.slice(1));
309
+ if (next === child) return element;
310
+ const children = [...element.children];
311
+ children[index] = next;
312
+ return { ...element, children };
313
+ }
4
314
 
5
315
  // pptx/editor/render/find-replace.ts
316
+ function findReplacementAvailability(matches, index) {
317
+ const hasReadOnly = matches.some((match) => match.readOnly);
318
+ return {
319
+ current: Boolean(matches[index] && !matches[index].readOnly),
320
+ all: matches.length > 0 && !hasReadOnly,
321
+ hasReadOnly
322
+ };
323
+ }
6
324
  function findInSlides(slides, query, opts = {}) {
7
325
  if (!query) {
8
326
  return [];
9
327
  }
10
- const matchCase = opts.matchCase ?? false;
11
- const normalised = matchCase ? query : query.toLowerCase();
328
+ const escaped = query.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
329
+ const pattern = new RegExp(`(?=(${escaped}))`, opts.matchCase ? "gu" : "giu");
12
330
  const results = [];
331
+ const chartSources = chartSourceReferenceCounts(slides);
13
332
  for (let slideIndex = 0; slideIndex < slides.length; slideIndex++) {
14
333
  const slide = slides[slideIndex];
15
- for (const element of slide.elements) {
16
- if (!pptx.hasTextProperties(element)) {
17
- continue;
334
+ for (const { runs, ...target } of findSlideTextTargets(
335
+ slide,
336
+ opts.includeNotes,
337
+ opts.includeChartTitles,
338
+ opts.includeChartData
339
+ )) {
340
+ if (target.chartTitle || target.chartSeriesIndex !== void 0 || target.chartCategoryIndex !== void 0) {
341
+ const source = findMatchChartSource(slides, { ...target, slideIndex });
342
+ if (source && (chartSources.get(source) ?? 0) > 1) target.readOnly = true;
18
343
  }
19
- const segments = element.textSegments ?? [];
20
- for (let segIndex = 0; segIndex < segments.length; segIndex++) {
21
- const raw = segments[segIndex].text ?? "";
22
- const haystack = matchCase ? raw : raw.toLowerCase();
23
- let offset = 0;
24
- while (offset < haystack.length) {
25
- const pos = haystack.indexOf(normalised, offset);
26
- if (pos === -1) {
27
- break;
28
- }
29
- results.push({
30
- slideIndex,
31
- elementId: element.id,
32
- segmentIndex: segIndex,
33
- startOffset: pos,
34
- length: query.length
35
- });
36
- offset = pos + 1;
344
+ let text = "", totalOffset = 0, regionOffset = 0;
345
+ let positions = [];
346
+ const flush = () => {
347
+ for (const match of text.matchAll(pattern)) {
348
+ const pos = match.index;
349
+ const run = positions.find(
350
+ (position) => pos >= position.offset && pos < position.offset + position.length
351
+ );
352
+ if (run)
353
+ results.push({
354
+ ...target,
355
+ slideIndex,
356
+ segmentIndex: run.index,
357
+ startOffset: pos - run.offset,
358
+ length: match[1].length,
359
+ textOffset: regionOffset + pos
360
+ });
37
361
  }
362
+ text = "";
363
+ positions = [];
364
+ };
365
+ for (const [index, run] of runs.entries()) {
366
+ if (isFindBreak(run)) {
367
+ flush();
368
+ totalOffset++;
369
+ regionOffset = totalOffset;
370
+ continue;
371
+ }
372
+ positions.push({ index, offset: text.length, length: run.text.length });
373
+ text += run.text;
374
+ totalOffset += run.text.length;
38
375
  }
376
+ flush();
39
377
  }
40
378
  }
41
379
  return results;
@@ -44,9 +382,33 @@ function applyFindReplacements(slides, toReplace, replacement) {
44
382
  if (toReplace.length === 0) {
45
383
  return { slides, replacements: 0 };
46
384
  }
385
+ if (toReplace.some((match) => match.readOnly))
386
+ throw new Error(
387
+ "Linked or complex chart text must be edited in PowerPoint or their source workbook"
388
+ );
389
+ const chartSources = chartSourceReferenceCounts(slides);
390
+ if (toReplace.some((match) => {
391
+ if (!match.chartTitle && match.chartSeriesIndex === void 0 && match.chartCategoryIndex === void 0)
392
+ return false;
393
+ const source = findMatchChartSource(slides, match);
394
+ return source && (chartSources.get(source) ?? 0) > 1;
395
+ }))
396
+ throw new Error(
397
+ "Text in a shared chart part requires editing in PowerPoint or its source workbook"
398
+ );
47
399
  const grouped = /* @__PURE__ */ new Map();
48
400
  for (const match of toReplace) {
49
- const key = `${match.slideIndex}::${match.elementId}::${match.segmentIndex}`;
401
+ const key = JSON.stringify([
402
+ match.slideIndex,
403
+ match.elementId,
404
+ match.elementPath,
405
+ match.tableCell,
406
+ match.smartArtNodeId,
407
+ match.notes,
408
+ match.chartTitle,
409
+ match.chartSeriesIndex,
410
+ match.chartCategoryIndex
411
+ ]);
50
412
  let bucket = grouped.get(key);
51
413
  if (!bucket) {
52
414
  bucket = [];
@@ -57,37 +419,45 @@ function applyFindReplacements(slides, toReplace, replacement) {
57
419
  const nextSlides = slides.slice();
58
420
  let totalReplacements = 0;
59
421
  for (const [, matches] of grouped) {
60
- const sorted = matches.slice().sort((a, b) => b.startOffset - a.startOffset);
422
+ const sorted = matches.slice().sort((a, b) => b.segmentIndex - a.segmentIndex || b.startOffset - a.startOffset);
423
+ let lastOffset = Infinity;
61
424
  for (const match of sorted) {
62
425
  const slide = nextSlides[match.slideIndex];
63
426
  if (!slide) {
64
427
  continue;
65
428
  }
429
+ if (match.notes) {
430
+ if (match.textOffset !== void 0 && match.textOffset + match.length > lastOffset)
431
+ continue;
432
+ const runs = slide.notesSegments?.length && slide.notesSegments.map((run) => run.text).join("") === slide.notes ? slide.notesSegments : [{ text: slide.notes ?? "", style: {} }];
433
+ const updated2 = replaceFindRuns(
434
+ runs,
435
+ match.segmentIndex,
436
+ match.startOffset,
437
+ match.length,
438
+ replacement
439
+ );
440
+ if (!updated2) continue;
441
+ nextSlides[match.slideIndex] = {
442
+ ...slide,
443
+ notes: updated2.map((run) => run.text).join(""),
444
+ notesSegments: updated2
445
+ };
446
+ if (match.textOffset !== void 0) lastOffset = match.textOffset;
447
+ totalReplacements++;
448
+ continue;
449
+ }
66
450
  const elIdx = slide.elements.findIndex((e) => e.id === match.elementId);
67
451
  if (elIdx === -1) {
68
452
  continue;
69
453
  }
454
+ if (match.textOffset !== void 0 && match.textOffset + match.length > lastOffset) continue;
70
455
  const element = slide.elements[elIdx];
71
- if (!pptx.hasTextProperties(element)) {
72
- continue;
73
- }
74
- const segments = element.textSegments ?? [];
75
- const seg = segments[match.segmentIndex];
76
- if (!seg) {
77
- continue;
78
- }
79
- const before = seg.text.slice(0, match.startOffset);
80
- const after = seg.text.slice(match.startOffset + match.length);
81
- const newSegText = before + replacement + after;
82
- const nextSegments = segments.slice();
83
- nextSegments[match.segmentIndex] = { ...seg, text: newSegText };
84
- const nextText = nextSegments.map((s) => s.text).join("");
456
+ const updated = replaceFindTarget(element, match, replacement);
457
+ if (updated === element) continue;
458
+ if (match.textOffset !== void 0) lastOffset = match.textOffset;
85
459
  const nextElements = slide.elements.slice();
86
- nextElements[elIdx] = {
87
- ...element,
88
- text: nextText,
89
- textSegments: nextSegments
90
- };
460
+ nextElements[elIdx] = updated;
91
461
  nextSlides[match.slideIndex] = { ...slide, elements: nextElements };
92
462
  totalReplacements++;
93
463
  }
@@ -108,5 +478,6 @@ function replaceInSlides(slides, query, replacement, opts = {}) {
108
478
 
109
479
  exports.applyFindReplacements = applyFindReplacements;
110
480
  exports.findInSlides = findInSlides;
481
+ exports.findReplacementAvailability = findReplacementAvailability;
111
482
  exports.replaceInSlides = replaceInSlides;
112
483
  exports.replaceMatch = replaceMatch;
@@ -1,4 +1,5 @@
1
- import { PptxSlide } from "ooxml-core/pptx";
1
+ import { C as PptxSlide } from "../../chunks/text-operations-BLodkuXE.js";
2
+ import "../../chunks/index-B4cnSPNz.js";
2
3
  //#region pptx/editor/render/find-replace.d.ts
3
4
  /** Identifies a single match of the find query at segment-level precision. */
4
5
  export interface FindResult {
@@ -12,11 +13,36 @@ export interface FindResult {
12
13
  startOffset: number;
13
14
  /** Number of characters matched (equals `query.length`). */
14
15
  length: number;
16
+ /** Child indexes inside the selected top-level group, when the match is nested. */
17
+ elementPath?: number[];
18
+ /** Table-cell coordinates, when the match belongs to a table. */
19
+ tableCell?: {
20
+ rowIndex: number;
21
+ colIndex: number;
22
+ };
23
+ /** Data-model node id, when the match belongs to SmartArt. */
24
+ smartArtNodeId?: string;
25
+ /** Offset within this object's run stream, used to resolve overlapping replacements. */
26
+ textOffset?: number;
27
+ /** Speaker-note body match, rather than a canvas element. */
28
+ notes?: boolean;
29
+ /** Match in the chart title rather than the shape's own text. */
30
+ chartTitle?: boolean;
31
+ chartSeriesIndex?: number;
32
+ chartCategoryIndex?: number;
33
+ /** Linked or complex chart text is searchable but requires source editing. */
34
+ readOnly?: boolean;
15
35
  }
16
36
  /** Options passed to search and replace helpers. */
17
37
  export interface FindOptions {
18
38
  /** When `true`, the search is case-sensitive. Defaults to `false`. */
19
39
  matchCase?: boolean;
40
+ /** Search speaker notes as well as editable slide text. */
41
+ includeNotes?: boolean;
42
+ /** Include chart titles. Enabled by default; disable to replace only ordinary slide text. */
43
+ includeChartTitles?: boolean;
44
+ /** Opt-in search of series names and category labels, with transactional source editing. */
45
+ includeChartData?: boolean;
20
46
  }
21
47
  /** Result returned by {@link replaceInSlides} and {@link replaceMatch}. */
22
48
  export interface ReplaceResult {
@@ -25,12 +51,17 @@ export interface ReplaceResult {
25
51
  /** Number of text replacements actually applied. */
26
52
  replacements: number;
27
53
  }
54
+ /** Shared replacement gating for searchable text whose source is not safely editable. */
55
+ export declare function findReplacementAvailability(matches: readonly Pick<FindResult, 'readOnly'>[], index: number): {
56
+ current: boolean;
57
+ all: boolean;
58
+ hasReadOnly: boolean;
59
+ };
28
60
  /**
29
61
  * Search all slides for occurrences of `query` at segment-level precision.
30
62
  *
31
- * - Only elements that pass `hasTextProperties` (text / shape / connector) are
32
- * searched; tables, smartArt, and groups are skipped (they have no
33
- * `textSegments`).
63
+ * - Searches shape text, table cells and SmartArt nodes, including nested groups.
64
+ * - Formatting boundaries do not split a match; explicit paragraph/line markers do.
34
65
  * - Overlapping matches are counted (search advances by 1 character after each
35
66
  * hit, not by `query.length`).
36
67
  * - Returns an empty array when `query` is empty.
@@ -1 +1 @@
1
- {"version":3,"file":"find-replace.d.ts","names":[],"sources":["../../../../pptx/editor/render/find-replace.ts"],"mappings":";;;iBAeiB;;EAEhB;;EAEA;;EAEA;;EAEA;;EAEA;;;iBAIgB;;EAEhB;;;iBAIgB;;EAEhB,iBAAiB;;EAEjB;;;;;;;;;;;;wBAiBe,aACf,iBAAiB,aACjB,eACA,OAAM,cACJ;;;;;;;;;;wBAmDa,sBACf,iBAAiB,aACjB,oBAAoB,cACpB,sBACE;;;;;;;;;wBAiFa,aACf,iBAAiB,aACjB,qBAAqB,cACrB,oBACA,sBACE;;;;;;;wBAca,gBACf,iBAAiB,aACjB,eACA,qBACA,OAAM,cACJ"}
1
+ {"version":3,"file":"find-replace.d.ts","names":[],"sources":["../../../../pptx/editor/render/find-replace.ts"],"mappings":";;;;iBAiBiB;;EAEhB;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;IAAc;IAAkB;;;EAEhC;;EAEA;;EAEA;;EAEA;EACA;EACA;;EAEA;;;iBAIgB;;EAEhB;;EAEA;;EAEA;;EAEA;;;iBAIgB;;EAEhB,iBAAiB;;EAEjB;;;wBAIe,4BACf,kBAAkB,KAAK,2BACvB;;;;;;;;;;;;;;wBAuBe,aACf,iBAAiB,aACjB,eACA,OAAM,cACJ;;;;;;;;;;wBA4Ea,sBACf,iBAAiB,aACjB,oBAAoB,cACpB,sBACE;;;;;;;;;wBAuHa,aACf,iBAAiB,aACjB,qBAAqB,cACrB,oBACA,sBACE;;;;;;;wBAca,gBACf,iBAAiB,aACjB,eACA,qBACA,OAAM,cACJ"}