ooxml-core 1.20.0 → 1.22.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 (422) hide show
  1. package/README.md +35 -0
  2. package/dist/{PptxHandler-TEKISCJO.cjs → PptxHandler-DNSXWTQV.cjs} +3 -3
  3. package/dist/{PptxHandler-FYD7IYXT.mjs → PptxHandler-FSKKPZZC.mjs} +3 -3
  4. package/dist/PptxHandler-H7MEWJJJ.mjs +4 -0
  5. package/dist/{PresentationBuilder-IMB4DVRN.mjs → PresentationBuilder-7TSENZTX.mjs} +2 -2
  6. package/dist/{PresentationBuilder-NCKASKXU.cjs → PresentationBuilder-A5NI35VN.cjs} +5 -5
  7. package/dist/{PresentationBuilder-EYI6Z2JP.mjs → PresentationBuilder-RIJWQSEU.mjs} +3 -3
  8. package/dist/automation/docx-forms.d.ts +26 -0
  9. package/dist/automation/docx-forms.d.ts.map +1 -0
  10. package/dist/automation/index.cjs +39159 -14352
  11. package/dist/automation/index.d.ts +5 -0
  12. package/dist/automation/index.d.ts.map +1 -1
  13. package/dist/automation/index.mjs +39145 -14353
  14. package/dist/automation/node.cjs +37 -0
  15. package/dist/automation/node.d.ts +32 -1
  16. package/dist/automation/node.d.ts.map +1 -1
  17. package/dist/automation/node.mjs +36 -1
  18. package/dist/automation/proposal.d.ts +25 -0
  19. package/dist/automation/proposal.d.ts.map +1 -0
  20. package/dist/automation/tools/define.d.ts +27 -0
  21. package/dist/automation/tools/define.d.ts.map +1 -0
  22. package/dist/automation/tools/docx-tools.d.ts +4 -0
  23. package/dist/automation/tools/docx-tools.d.ts.map +1 -0
  24. package/dist/automation/tools/index.d.ts +16 -0
  25. package/dist/automation/tools/index.d.ts.map +1 -0
  26. package/dist/automation/tools/types.d.ts +52 -0
  27. package/dist/automation/tools/types.d.ts.map +1 -0
  28. package/dist/automation/tools/visio-tools.d.ts +4 -0
  29. package/dist/automation/tools/visio-tools.d.ts.map +1 -0
  30. package/dist/automation/tools/xlsx-tools.d.ts +8 -0
  31. package/dist/automation/tools/xlsx-tools.d.ts.map +1 -0
  32. package/dist/automation/xlsx-edits.d.ts +88 -0
  33. package/dist/automation/xlsx-edits.d.ts.map +1 -0
  34. package/dist/automation/xlsx-proposal.d.ts +34 -0
  35. package/dist/automation/xlsx-proposal.d.ts.map +1 -0
  36. package/dist/automation/xlsx.d.ts +10 -5
  37. package/dist/automation/xlsx.d.ts.map +1 -1
  38. package/dist/chart/axis-range.d.ts.map +1 -1
  39. package/dist/chart/bubble-radius.d.ts +0 -5
  40. package/dist/chart/bubble-radius.d.ts.map +1 -1
  41. package/dist/chart/extent.d.ts +9 -0
  42. package/dist/chart/extent.d.ts.map +1 -0
  43. package/dist/chart/histogram-binning.d.ts.map +1 -1
  44. package/dist/chart/index.cjs +56 -18
  45. package/dist/chart/index.mjs +56 -18
  46. package/dist/chart/render/chart-svg-cartesian.d.ts.map +1 -1
  47. package/dist/chart/render/chart-svg-legend.d.ts.map +1 -1
  48. package/dist/chart/render/chart-view-ex.d.ts.map +1 -1
  49. package/dist/chart/render/chart-view.d.ts.map +1 -1
  50. package/dist/chart/trendline-fit.d.ts.map +1 -1
  51. package/dist/{chunk-3IENHIFD.cjs → chunk-4LZIUJI3.cjs} +52 -12
  52. package/dist/{chunk-LEV2SVMK.mjs → chunk-4QPOJCJG.mjs} +45 -8
  53. package/dist/{chunk-CC5UNZOO.mjs → chunk-6IIMI5RS.mjs} +52 -12
  54. package/dist/{chunk-MN27HKHM.mjs → chunk-BA7Z6ATM.mjs} +5 -5
  55. package/dist/{chunk-LVM3IZJ2.mjs → chunk-DLFMCZZT.mjs} +1 -1
  56. package/dist/{chunk-M4XLF4R7.mjs → chunk-GBKBR4CX.mjs} +20 -8
  57. package/dist/{chunk-NXKATFM5.cjs → chunk-HL3FBJ6X.cjs} +1065 -1016
  58. package/dist/{chunk-WXY5EDGT.mjs → chunk-LF5E5ZOH.mjs} +51 -2
  59. package/dist/chunk-MHNETXQB.mjs +1 -0
  60. package/dist/{chunk-MNXKRXFB.mjs → chunk-Q5PKBQXH.mjs} +52 -3
  61. package/dist/{chunk-GQYQQ3GA.mjs → chunk-VQF6HQEE.mjs} +1 -1
  62. package/dist/collab/embedding.d.ts +108 -0
  63. package/dist/collab/embedding.d.ts.map +1 -0
  64. package/dist/collab/index.cjs +423 -293
  65. package/dist/collab/index.d.ts +2 -0
  66. package/dist/collab/index.d.ts.map +1 -1
  67. package/dist/collab/index.mjs +415 -294
  68. package/dist/collab/webrtc-provider.d.ts +21 -0
  69. package/dist/collab/webrtc-provider.d.ts.map +1 -0
  70. package/dist/color/theme-palette.d.ts +5 -1
  71. package/dist/color/theme-palette.d.ts.map +1 -1
  72. package/dist/crypto/index.cjs +27 -2
  73. package/dist/crypto/index.mjs +27 -2
  74. package/dist/diagram/index.cjs +31 -3
  75. package/dist/diagram/index.mjs +31 -3
  76. package/dist/docx/block-parser.d.ts.map +1 -1
  77. package/dist/docx/cell-blocks.d.ts +7 -1
  78. package/dist/docx/cell-blocks.d.ts.map +1 -1
  79. package/dist/docx/content-control-edit.d.ts +14 -0
  80. package/dist/docx/content-control-edit.d.ts.map +1 -1
  81. package/dist/docx/content-control-model.d.ts +8 -0
  82. package/dist/docx/content-control-model.d.ts.map +1 -1
  83. package/dist/docx/content-control-values.d.ts +20 -0
  84. package/dist/docx/content-control-values.d.ts.map +1 -0
  85. package/dist/docx/content-control.d.ts +7 -1
  86. package/dist/docx/content-control.d.ts.map +1 -1
  87. package/dist/docx/element-order.d.ts +10 -5
  88. package/dist/docx/element-order.d.ts.map +1 -1
  89. package/dist/docx/embedded.cjs +3861 -1379
  90. package/dist/docx/embedded.mjs +3861 -1379
  91. package/dist/docx/field-instruction.d.ts +22 -0
  92. package/dist/docx/field-instruction.d.ts.map +1 -0
  93. package/dist/docx/form-field-model.d.ts +48 -0
  94. package/dist/docx/form-field-model.d.ts.map +1 -0
  95. package/dist/docx/form-fields.d.ts +31 -0
  96. package/dist/docx/form-fields.d.ts.map +1 -0
  97. package/dist/docx/form-fill-fields.d.ts +61 -0
  98. package/dist/docx/form-fill-fields.d.ts.map +1 -0
  99. package/dist/docx/form-fill-labels.d.ts +8 -0
  100. package/dist/docx/form-fill-labels.d.ts.map +1 -0
  101. package/dist/docx/form-fill-sites.d.ts +59 -0
  102. package/dist/docx/form-fill-sites.d.ts.map +1 -0
  103. package/dist/docx/form-fill-values.d.ts +28 -0
  104. package/dist/docx/form-fill-values.d.ts.map +1 -0
  105. package/dist/docx/form-fill-write.d.ts +26 -0
  106. package/dist/docx/form-fill-write.d.ts.map +1 -0
  107. package/dist/docx/glossary.d.ts +15 -0
  108. package/dist/docx/glossary.d.ts.map +1 -0
  109. package/dist/docx/index.cjs +5929 -3153
  110. package/dist/docx/index.d.ts +7 -0
  111. package/dist/docx/index.d.ts.map +1 -1
  112. package/dist/docx/index.mjs +5913 -3154
  113. package/dist/docx/inline-annotations.d.ts +21 -0
  114. package/dist/docx/inline-annotations.d.ts.map +1 -0
  115. package/dist/docx/inline-container-markers.d.ts +14 -0
  116. package/dist/docx/inline-container-markers.d.ts.map +1 -0
  117. package/dist/docx/inline-containers.d.ts +54 -0
  118. package/dist/docx/inline-containers.d.ts.map +1 -0
  119. package/dist/docx/inline-form-field-bookmarks.d.ts +15 -0
  120. package/dist/docx/inline-form-field-bookmarks.d.ts.map +1 -0
  121. package/dist/docx/inline-marker-positions.d.ts +15 -0
  122. package/dist/docx/inline-marker-positions.d.ts.map +1 -0
  123. package/dist/docx/inline-markers.d.ts +63 -0
  124. package/dist/docx/inline-markers.d.ts.map +1 -0
  125. package/dist/docx/inline-slots.d.ts +24 -0
  126. package/dist/docx/inline-slots.d.ts.map +1 -0
  127. package/dist/docx/layout/adapter.d.ts.map +1 -1
  128. package/dist/docx/layout/index.cjs +1176 -563
  129. package/dist/docx/layout/index.d.ts +2 -1
  130. package/dist/docx/layout/index.d.ts.map +1 -1
  131. package/dist/docx/layout/index.mjs +1175 -564
  132. package/dist/docx/layout/input.d.ts +5 -1
  133. package/dist/docx/layout/input.d.ts.map +1 -1
  134. package/dist/docx/layout/page-style-refs.d.ts +21 -0
  135. package/dist/docx/layout/page-style-refs.d.ts.map +1 -0
  136. package/dist/docx/layout/paragraph-fragments.d.ts.map +1 -1
  137. package/dist/docx/layout/result.d.ts +1 -0
  138. package/dist/docx/layout/result.d.ts.map +1 -1
  139. package/dist/docx/layout/tab-stops.d.ts +8 -1
  140. package/dist/docx/layout/tab-stops.d.ts.map +1 -1
  141. package/dist/docx/load/index.cjs +3969 -1487
  142. package/dist/docx/load/index.mjs +3969 -1487
  143. package/dist/docx/model-run.d.ts +24 -2
  144. package/dist/docx/model-run.d.ts.map +1 -1
  145. package/dist/docx/model.d.ts +5 -0
  146. package/dist/docx/model.d.ts.map +1 -1
  147. package/dist/docx/numbering-format.d.ts.map +1 -1
  148. package/dist/docx/parse-warnings.d.ts.map +1 -1
  149. package/dist/docx/parse.d.ts.map +1 -1
  150. package/dist/docx/run-segmentation.d.ts +11 -0
  151. package/dist/docx/run-segmentation.d.ts.map +1 -0
  152. package/dist/docx/save.d.ts.map +1 -1
  153. package/dist/docx/section-model.d.ts +5 -0
  154. package/dist/docx/section-model.d.ts.map +1 -1
  155. package/dist/docx/sections.d.ts +4 -2
  156. package/dist/docx/sections.d.ts.map +1 -1
  157. package/dist/docx/settings.d.ts +9 -0
  158. package/dist/docx/settings.d.ts.map +1 -1
  159. package/dist/docx/special-characters.d.ts +34 -0
  160. package/dist/docx/special-characters.d.ts.map +1 -0
  161. package/dist/docx/style-ref-fields.d.ts +40 -0
  162. package/dist/docx/style-ref-fields.d.ts.map +1 -0
  163. package/dist/docx/style-ref.d.ts +85 -0
  164. package/dist/docx/style-ref.d.ts.map +1 -0
  165. package/dist/docx/table-model.d.ts +2 -2
  166. package/dist/docx/table-model.d.ts.map +1 -1
  167. package/dist/docx/ui/break-note-schema.d.ts.map +1 -1
  168. package/dist/docx/ui/content-control-commands.d.ts +20 -8
  169. package/dist/docx/ui/content-control-commands.d.ts.map +1 -1
  170. package/dist/docx/ui/content-control-guard.d.ts +4 -1
  171. package/dist/docx/ui/content-control-guard.d.ts.map +1 -1
  172. package/dist/docx/ui/content-control-paste.d.ts +23 -0
  173. package/dist/docx/ui/content-control-paste.d.ts.map +1 -0
  174. package/dist/docx/ui/content-control-rows.d.ts +15 -0
  175. package/dist/docx/ui/content-control-rows.d.ts.map +1 -0
  176. package/dist/docx/ui/content-control-sources.d.ts +12 -0
  177. package/dist/docx/ui/content-control-sources.d.ts.map +1 -0
  178. package/dist/docx/ui/content-control-spans.d.ts +29 -6
  179. package/dist/docx/ui/content-control-spans.d.ts.map +1 -1
  180. package/dist/docx/ui/content-control-temporary.d.ts +10 -0
  181. package/dist/docx/ui/content-control-temporary.d.ts.map +1 -0
  182. package/dist/docx/ui/form-field-commands.d.ts +41 -0
  183. package/dist/docx/ui/form-field-commands.d.ts.map +1 -0
  184. package/dist/docx/ui/form-field-guard.d.ts +24 -0
  185. package/dist/docx/ui/form-field-guard.d.ts.map +1 -0
  186. package/dist/docx/ui/form-text-blank.d.ts +18 -0
  187. package/dist/docx/ui/form-text-blank.d.ts.map +1 -0
  188. package/dist/docx/ui/index.cjs +9276 -7132
  189. package/dist/docx/ui/index.d.ts +5 -0
  190. package/dist/docx/ui/index.d.ts.map +1 -1
  191. package/dist/docx/ui/index.mjs +9259 -7137
  192. package/dist/docx/ui/positional-tab-input.d.ts +7 -0
  193. package/dist/docx/ui/positional-tab-input.d.ts.map +1 -0
  194. package/dist/docx/ui/run-compare.d.ts.map +1 -1
  195. package/dist/docx/ui/run-extra-mark.d.ts +1 -1
  196. package/dist/docx/ui/run-extra-mark.d.ts.map +1 -1
  197. package/dist/docx/ui/schema-marks.d.ts +1 -1
  198. package/dist/docx/ui/schema-marks.d.ts.map +1 -1
  199. package/dist/docx/ui/symbol-font.d.ts +4 -0
  200. package/dist/docx/ui/symbol-font.d.ts.map +1 -0
  201. package/dist/docx/ui/yjs-collaboration.d.ts +12 -1
  202. package/dist/docx/ui/yjs-collaboration.d.ts.map +1 -1
  203. package/dist/docx/write-block-placement.d.ts +7 -0
  204. package/dist/docx/write-block-placement.d.ts.map +1 -1
  205. package/dist/docx/write-content-control.d.ts +6 -0
  206. package/dist/docx/write-content-control.d.ts.map +1 -1
  207. package/dist/docx/write-header-footer.d.ts +6 -2
  208. package/dist/docx/write-header-footer.d.ts.map +1 -1
  209. package/dist/docx/write-inline.d.ts +12 -16
  210. package/dist/docx/write-inline.d.ts.map +1 -1
  211. package/dist/docx/write-paragraph.d.ts.map +1 -1
  212. package/dist/docx/write-revisions.d.ts.map +1 -1
  213. package/dist/docx/write-run.d.ts.map +1 -1
  214. package/dist/docx/write-section-properties.d.ts +5 -0
  215. package/dist/docx/write-section-properties.d.ts.map +1 -0
  216. package/dist/docx/write-sections.d.ts.map +1 -1
  217. package/dist/docx/write-table-controls.d.ts +15 -0
  218. package/dist/docx/write-table-controls.d.ts.map +1 -0
  219. package/dist/docx/write-table-properties.d.ts.map +1 -1
  220. package/dist/docx/write-table.d.ts.map +1 -1
  221. package/dist/docx/write.d.ts.map +1 -1
  222. package/dist/docx/xml.d.ts +6 -0
  223. package/dist/docx/xml.d.ts.map +1 -1
  224. package/dist/drawingml/index.cjs +31 -3
  225. package/dist/drawingml/index.mjs +31 -3
  226. package/dist/index.cjs +77 -26
  227. package/dist/index.mjs +77 -26
  228. package/dist/math/index.cjs +27 -2
  229. package/dist/math/index.mjs +27 -2
  230. package/dist/opc/index.cjs +51 -11
  231. package/dist/opc/index.mjs +51 -11
  232. package/dist/opc/zip-folders.d.ts +11 -0
  233. package/dist/opc/zip-folders.d.ts.map +1 -0
  234. package/dist/opc/zip-limits.d.ts +9 -0
  235. package/dist/opc/zip-limits.d.ts.map +1 -1
  236. package/dist/pptx/automation/index.cjs +28818 -7388
  237. package/dist/pptx/automation/index.d.ts +93 -3
  238. package/dist/pptx/automation/index.d.ts.map +1 -1
  239. package/dist/pptx/automation/index.mjs +740 -63
  240. package/dist/pptx/automation/schemas/chart-formatting-schemas.d.ts +1 -1
  241. package/dist/pptx/automation/schemas/chart-schemas.d.ts +1 -1
  242. package/dist/pptx/automation/schemas/chart-user-shape-schemas.d.ts +1 -1
  243. package/dist/pptx/automation/schemas/element-schemas.d.ts +1 -1
  244. package/dist/pptx/automation/schemas/export-schemas.d.ts +1 -1
  245. package/dist/pptx/automation/schemas/geometry-schemas.d.ts +1 -1
  246. package/dist/pptx/automation/schemas/hyperlink-schemas.d.ts +1 -1
  247. package/dist/pptx/automation/schemas/index.mjs +1 -0
  248. package/dist/pptx/automation/schemas/json-schemas.d.ts +1 -1
  249. package/dist/pptx/automation/schemas/layout-schemas.d.ts +1 -1
  250. package/dist/pptx/automation/schemas/lock-schemas.d.ts +1 -1
  251. package/dist/pptx/automation/schemas/metadata-schemas.d.ts +1 -1
  252. package/dist/pptx/automation/schemas/ole-schemas.d.ts +1 -1
  253. package/dist/pptx/automation/schemas/presentation-schemas.d.ts +1 -1
  254. package/dist/pptx/automation/schemas/section-schemas.d.ts +1 -1
  255. package/dist/pptx/automation/schemas/slide-schemas.d.ts +1 -1
  256. package/dist/pptx/automation/schemas/smartart-schemas.d.ts +1 -1
  257. package/dist/pptx/automation/schemas/table-style-schemas.d.ts +1 -1
  258. package/dist/pptx/automation/schemas/template-schemas.d.ts +1 -1
  259. package/dist/pptx/automation/schemas/theme-schemas.d.ts +1 -1
  260. package/dist/pptx/automation/schemas/validation-schemas.d.ts +1 -1
  261. package/dist/pptx/chunks/{index-CgFX0T7b.d.ts → index-CPhsd7Df.d.ts} +9 -1
  262. package/dist/pptx/chunks/{index-CgFX0T7b.d.ts.map → index-CPhsd7Df.d.ts.map} +1 -1
  263. package/dist/pptx/chunks/{index-qwVYoFn6.d.ts → index-Q5mM8kIR.d.ts} +2 -2
  264. package/dist/pptx/chunks/{index-qwVYoFn6.d.ts.map → index-Q5mM8kIR.d.ts.map} +1 -1
  265. package/dist/pptx/chunks/{schemas-CWr181Wx.d.ts → schemas-fuDGetRe.d.ts} +2 -2
  266. package/dist/pptx/chunks/{schemas-CWr181Wx.d.ts.map → schemas-fuDGetRe.d.ts.map} +1 -1
  267. package/dist/pptx/cli/index.cjs +116 -17
  268. package/dist/pptx/cli/index.mjs +5 -5
  269. package/dist/pptx/converter/index.cjs +12 -3
  270. package/dist/pptx/converter/index.d.ts +1 -1
  271. package/dist/pptx/converter/index.mjs +3 -3
  272. package/dist/pptx/editor/render/find-replace.cjs +14 -14
  273. package/dist/pptx/editor/render/find-replace.d.ts +1 -1
  274. package/dist/pptx/editor/render/find-replace.mjs +1 -1
  275. package/dist/pptx/editor/render/slide-operations.cjs +8 -8
  276. package/dist/pptx/editor/render/slide-operations.mjs +2 -2
  277. package/dist/pptx/index.cjs +116 -17
  278. package/dist/pptx/index.d.ts +2 -2
  279. package/dist/pptx/index.mjs +6 -6
  280. package/dist/pptx/signature-node/index.cjs +20 -8
  281. package/dist/pptx/signature-node/index.mjs +2 -2
  282. package/dist/teams/index.cjs +105 -70
  283. package/dist/teams/index.mjs +105 -70
  284. package/dist/text/text-diff.d.ts +15 -0
  285. package/dist/text/text-diff.d.ts.map +1 -0
  286. package/dist/visio/collab/bind.d.ts +44 -0
  287. package/dist/visio/collab/bind.d.ts.map +1 -0
  288. package/dist/visio/collab/compose.d.ts +15 -0
  289. package/dist/visio/collab/compose.d.ts.map +1 -0
  290. package/dist/visio/collab/index.cjs +1194 -0
  291. package/dist/visio/collab/index.d.ts +8 -0
  292. package/dist/visio/collab/index.d.ts.map +1 -0
  293. package/dist/visio/collab/index.mjs +1152 -0
  294. package/dist/visio/collab/keys.d.ts +22 -0
  295. package/dist/visio/collab/keys.d.ts.map +1 -0
  296. package/dist/visio/collab/order.d.ts +11 -0
  297. package/dist/visio/collab/order.d.ts.map +1 -0
  298. package/dist/visio/collab/package.d.ts +37 -0
  299. package/dist/visio/collab/package.d.ts.map +1 -0
  300. package/dist/visio/collab/read.d.ts +41 -0
  301. package/dist/visio/collab/read.d.ts.map +1 -0
  302. package/dist/visio/collab/scan.d.ts +28 -0
  303. package/dist/visio/collab/scan.d.ts.map +1 -0
  304. package/dist/visio/collab/schema.d.ts +70 -0
  305. package/dist/visio/collab/schema.d.ts.map +1 -0
  306. package/dist/visio/collab/snapshot.d.ts +61 -0
  307. package/dist/visio/collab/snapshot.d.ts.map +1 -0
  308. package/dist/visio/collab/write.d.ts +20 -0
  309. package/dist/visio/collab/write.d.ts.map +1 -0
  310. package/dist/visio/index.cjs +159 -39
  311. package/dist/visio/index.mjs +159 -39
  312. package/dist/visio/ui/collab-options.d.ts +24 -0
  313. package/dist/visio/ui/collab-options.d.ts.map +1 -0
  314. package/dist/visio/ui/collab-presence.d.ts +31 -0
  315. package/dist/visio/ui/collab-presence.d.ts.map +1 -0
  316. package/dist/visio/ui/contract.d.ts +9 -3
  317. package/dist/visio/ui/contract.d.ts.map +1 -1
  318. package/dist/visio/ui/document-history.d.ts +3 -1
  319. package/dist/visio/ui/document-history.d.ts.map +1 -1
  320. package/dist/visio/ui/index.cjs +284 -95
  321. package/dist/visio/ui/index.d.ts +2 -0
  322. package/dist/visio/ui/index.d.ts.map +1 -1
  323. package/dist/visio/ui/index.mjs +278 -95
  324. package/dist/xlsx/collab/index.cjs +8 -3
  325. package/dist/xlsx/collab/index.mjs +8 -3
  326. package/dist/xlsx/compare/cells.d.ts +22 -0
  327. package/dist/xlsx/compare/cells.d.ts.map +1 -0
  328. package/dist/xlsx/compare/compare.d.ts +12 -0
  329. package/dist/xlsx/compare/compare.d.ts.map +1 -0
  330. package/dist/xlsx/compare/conditional.d.ts +7 -0
  331. package/dist/xlsx/compare/conditional.d.ts.map +1 -0
  332. package/dist/xlsx/compare/format-key.d.ts +34 -0
  333. package/dist/xlsx/compare/format-key.d.ts.map +1 -0
  334. package/dist/xlsx/compare/group.d.ts +8 -0
  335. package/dist/xlsx/compare/group.d.ts.map +1 -0
  336. package/dist/xlsx/compare/index.d.ts +5 -0
  337. package/dist/xlsx/compare/index.d.ts.map +1 -0
  338. package/dist/xlsx/compare/rich-text.d.ts +7 -0
  339. package/dist/xlsx/compare/rich-text.d.ts.map +1 -0
  340. package/dist/xlsx/compare/sheets.d.ts +22 -0
  341. package/dist/xlsx/compare/sheets.d.ts.map +1 -0
  342. package/dist/xlsx/compare/structure.d.ts +11 -0
  343. package/dist/xlsx/compare/structure.d.ts.map +1 -0
  344. package/dist/xlsx/compare/text.d.ts +8 -0
  345. package/dist/xlsx/compare/text.d.ts.map +1 -0
  346. package/dist/xlsx/compare/types.d.ts +173 -0
  347. package/dist/xlsx/compare/types.d.ts.map +1 -0
  348. package/dist/xlsx/edit/cell-values.d.ts.map +1 -1
  349. package/dist/xlsx/edit/clipboard-html.d.ts.map +1 -1
  350. package/dist/xlsx/edit/clipboard-text.d.ts.map +1 -1
  351. package/dist/xlsx/edit/clipboard.d.ts.map +1 -1
  352. package/dist/xlsx/edit/clone-cell.d.ts +9 -0
  353. package/dist/xlsx/edit/clone-cell.d.ts.map +1 -0
  354. package/dist/xlsx/edit/history.d.ts +8 -3
  355. package/dist/xlsx/edit/history.d.ts.map +1 -1
  356. package/dist/xlsx/edit/timelines.d.ts.map +1 -1
  357. package/dist/xlsx/formula/change-areas.d.ts +9 -0
  358. package/dist/xlsx/formula/change-areas.d.ts.map +1 -0
  359. package/dist/xlsx/formula/engine-prepare.d.ts +8 -0
  360. package/dist/xlsx/formula/engine-prepare.d.ts.map +1 -1
  361. package/dist/xlsx/formula/engine.d.ts.map +1 -1
  362. package/dist/xlsx/formula/spill.d.ts +5 -1
  363. package/dist/xlsx/formula/spill.d.ts.map +1 -1
  364. package/dist/xlsx/index.cjs +2461 -1192
  365. package/dist/xlsx/index.d.ts +1 -0
  366. package/dist/xlsx/index.d.ts.map +1 -1
  367. package/dist/xlsx/index.mjs +2454 -1193
  368. package/dist/xlsx/layout/cell-view.d.ts.map +1 -1
  369. package/dist/xlsx/layout/navigate.d.ts.map +1 -1
  370. package/dist/xlsx/layout/style-view.d.ts +5 -0
  371. package/dist/xlsx/layout/style-view.d.ts.map +1 -1
  372. package/dist/xlsx/load/csv-dates.d.ts +22 -0
  373. package/dist/xlsx/load/csv-dates.d.ts.map +1 -0
  374. package/dist/xlsx/load/csv-import.d.ts +64 -0
  375. package/dist/xlsx/load/csv-import.d.ts.map +1 -0
  376. package/dist/xlsx/load/csv-separators.d.ts +13 -0
  377. package/dist/xlsx/load/csv-separators.d.ts.map +1 -0
  378. package/dist/xlsx/load/csv-traits.d.ts +20 -0
  379. package/dist/xlsx/load/csv-traits.d.ts.map +1 -0
  380. package/dist/xlsx/load/csv.d.ts +8 -4
  381. package/dist/xlsx/load/csv.d.ts.map +1 -1
  382. package/dist/xlsx/load/detect.d.ts +13 -0
  383. package/dist/xlsx/load/detect.d.ts.map +1 -1
  384. package/dist/xlsx/load/errors.d.ts +1 -0
  385. package/dist/xlsx/load/errors.d.ts.map +1 -1
  386. package/dist/xlsx/load/index.cjs +537 -91
  387. package/dist/xlsx/load/index.d.ts +3 -1
  388. package/dist/xlsx/load/index.d.ts.map +1 -1
  389. package/dist/xlsx/load/index.mjs +536 -92
  390. package/dist/xlsx/numfmt/input-date.d.ts +2 -0
  391. package/dist/xlsx/numfmt/input-date.d.ts.map +1 -1
  392. package/dist/xlsx/pivot/cache-xml.d.ts.map +1 -1
  393. package/dist/xlsx/pivot/groups.d.ts.map +1 -1
  394. package/dist/xlsx/read/index.d.ts +2 -1
  395. package/dist/xlsx/read/index.d.ts.map +1 -1
  396. package/dist/xlsx/read/limits.d.ts +50 -0
  397. package/dist/xlsx/read/limits.d.ts.map +1 -0
  398. package/dist/xlsx/read/load.d.ts +11 -1
  399. package/dist/xlsx/read/load.d.ts.map +1 -1
  400. package/dist/xlsx/read/package.d.ts +5 -23
  401. package/dist/xlsx/read/package.d.ts.map +1 -1
  402. package/dist/xlsx/read/shared-strings.d.ts +2 -2
  403. package/dist/xlsx/read/shared-strings.d.ts.map +1 -1
  404. package/dist/xlsx/read/worksheet.d.ts +2 -0
  405. package/dist/xlsx/read/worksheet.d.ts.map +1 -1
  406. package/dist/xlsx/stable-key.d.ts +3 -0
  407. package/dist/xlsx/stable-key.d.ts.map +1 -0
  408. package/dist/xlsx/styles.d.ts.map +1 -1
  409. package/dist/xlsx/ui/index.cjs +662 -372
  410. package/dist/xlsx/ui/index.mjs +662 -372
  411. package/dist/xlsx/ui/locales/de/shell.d.ts.map +1 -1
  412. package/dist/xlsx/ui/locales/en/shell.d.ts.map +1 -1
  413. package/dist/xlsx/ui/locales/es/shell.d.ts.map +1 -1
  414. package/dist/xlsx/ui/locales/fr/shell.d.ts.map +1 -1
  415. package/dist/xlsx/ui/locales/zh-CN/shell.d.ts.map +1 -1
  416. package/dist/xlsx/write/sheet-props.d.ts.map +1 -1
  417. package/dist/xml/index.cjs +32 -3
  418. package/dist/xml/index.mjs +32 -4
  419. package/dist/xml/xml.d.ts +11 -1
  420. package/dist/xml/xml.d.ts.map +1 -1
  421. package/package.json +6 -1
  422. package/dist/PptxHandler-SITN3K3F.mjs +0 -4
@@ -74,6 +74,19 @@ var DEFAULT_XML_LIMITS = {
74
74
  maxDepth: 512,
75
75
  maxNodes: 5e6
76
76
  };
77
+ var XmlLimitError = class extends Error {
78
+ code = "xml-limit";
79
+ /** The limit that was exceeded. */
80
+ limit;
81
+ /** Its value: the largest depth or element count allowed. */
82
+ maximum;
83
+ constructor(message, limit3, maximum) {
84
+ super(message);
85
+ this.name = "XmlLimitError";
86
+ this.limit = limit3;
87
+ this.maximum = maximum;
88
+ }
89
+ };
77
90
  var TAG_RE = /<(\/?)([^\s\/><]+)(?:\s+[^\s=\/><]+\s*=\s*(?:"[^"<]*"|'[^'<]*'))*\s*(\/?)>/y;
78
91
  var MARKUP_SKIPS = [
79
92
  ["<!--", "-->"],
@@ -107,11 +120,22 @@ function checkXmlLimits(xml, label, limits = {}) {
107
120
  continue;
108
121
  }
109
122
  nodes++;
110
- if (nodes > maxNodes) throw new Error(`${label} XML exceeds the limit of ${maxNodes} elements`);
123
+ if (nodes > maxNodes)
124
+ throw new XmlLimitError(
125
+ `${label} XML exceeds the limit of ${maxNodes} elements`,
126
+ "maxNodes",
127
+ maxNodes
128
+ );
111
129
  if (!selfClosing && ++depth > maxDepth)
112
- throw new Error(`${label} XML exceeds the nesting depth limit of ${maxDepth}`);
130
+ throw new XmlLimitError(
131
+ `${label} XML exceeds the nesting depth limit of ${maxDepth}`,
132
+ "maxDepth",
133
+ maxDepth
134
+ );
113
135
  }
114
136
  }
137
+ var CRLF_DECLARATION = /^<\?xml[^>]*\?>\r\n/;
138
+ var crlfDeclarations = /* @__PURE__ */ new WeakSet();
115
139
  function parseXml(xml, options2 = {}) {
116
140
  const label = options2.label ?? "OOXML";
117
141
  if (/<!DOCTYPE|<!ENTITY/i.test(xml))
@@ -133,9 +157,13 @@ function parseXml(xml, options2 = {}) {
133
157
  }
134
158
  if (parseError || !parsed.documentElement)
135
159
  throw new Error(`Invalid ${label} XML: ${parseError || "missing root element"}`);
160
+ if (CRLF_DECLARATION.test(xml)) crlfDeclarations.add(parsed);
136
161
  return parsed;
137
162
  }
138
- var buildXml = (node3) => new XMLSerializer().serializeToString(node3);
163
+ var buildXml = (node3) => {
164
+ const xml = new XMLSerializer().serializeToString(node3);
165
+ return crlfDeclarations.has(node3) ? xml.replace(/^(<\?xml[^>]*\?>)\n/, "$1\r\n") : xml;
166
+ };
139
167
  var isElement = (node3) => node3.nodeType === 1;
140
168
  var elements = (parent) => Array.from(parent.childNodes).filter(isElement);
141
169
  function named(element2, local, ns, lenient = true) {
@@ -7684,9 +7712,9 @@ function createWorksheet(name3, sheetId5) {
7684
7712
  };
7685
7713
  }
7686
7714
 
7687
- // xlsx/styles.ts
7688
- function styleKey(style2) {
7689
- return JSON.stringify(sortKeys(style2));
7715
+ // xlsx/stable-key.ts
7716
+ function stableKey(value3) {
7717
+ return JSON.stringify(sortKeys(value3));
7690
7718
  }
7691
7719
  function sortKeys(value3) {
7692
7720
  if (Array.isArray(value3)) return value3.map(sortKeys);
@@ -7700,6 +7728,11 @@ function sortKeys(value3) {
7700
7728
  }
7701
7729
  return value3;
7702
7730
  }
7731
+
7732
+ // xlsx/styles.ts
7733
+ function styleKey(style2) {
7734
+ return stableKey(style2);
7735
+ }
7703
7736
  function styleAt(workbook, styleId) {
7704
7737
  const style2 = workbook.styles[styleId ?? 0] ?? workbook.styles[0];
7705
7738
  if (!style2) throw new Error("Workbook has no default cell style");
@@ -10306,10 +10339,13 @@ var DEFAULT_ZIP_LIMITS = {
10306
10339
  var ZipLimitError = class extends Error {
10307
10340
  code = "ZIP_BOMB";
10308
10341
  limit;
10342
+ /** The check that failed (absent when the error was built without one). */
10343
+ kind;
10309
10344
  constructor(message, details) {
10310
10345
  super(message);
10311
10346
  this.name = "ZipLimitError";
10312
10347
  this.limit = details.limit;
10348
+ this.kind = details.kind;
10313
10349
  }
10314
10350
  };
10315
10351
  var mib = (bytes) => Math.round(bytes / 1048576);
@@ -10332,7 +10368,7 @@ function resolveLimits(limits) {
10332
10368
  maxEntryBytes: limits.maxEntryBytes ?? DEFAULT_ZIP_LIMITS.maxEntryBytes,
10333
10369
  maxTotalBytes: limits.maxTotalBytes ?? DEFAULT_ZIP_LIMITS.maxTotalBytes,
10334
10370
  label: limits.label ?? "ZIP",
10335
- fail: (message, limit3) => create2 ? create2(message, { limit: limit3 }) : new ZipLimitError(message, { limit: limit3 })
10371
+ fail: (message, limit3, kind) => create2 ? create2(message, { limit: limit3, kind }) : new ZipLimitError(message, { limit: limit3, kind })
10336
10372
  };
10337
10373
  }
10338
10374
  function inflateEntryGuarded(entry3, alreadyRead, limits) {
@@ -10355,13 +10391,18 @@ function inflateEntryGuarded(entry3, alreadyRead, limits) {
10355
10391
  size3 += chunk.byteLength;
10356
10392
  if (size3 > declared || size3 > r.maxEntryBytes)
10357
10393
  return abort(
10358
- r.fail(`${r.label} part ${entry3.name} inflates past its declared size`, r.maxEntryBytes)
10394
+ r.fail(
10395
+ `${r.label} part ${entry3.name} inflates past its declared size`,
10396
+ r.maxEntryBytes,
10397
+ size3 > declared ? "declaredSize" : "maxEntryBytes"
10398
+ )
10359
10399
  );
10360
10400
  if (alreadyRead + size3 > r.maxTotalBytes)
10361
10401
  return abort(
10362
10402
  r.fail(
10363
10403
  `${r.label} package exceeds the ${mib(r.maxTotalBytes)} MiB uncompressed content limit`,
10364
- r.maxTotalBytes
10404
+ r.maxTotalBytes,
10405
+ "maxTotalBytes"
10365
10406
  )
10366
10407
  );
10367
10408
  chunks.push(chunk);
@@ -10394,26 +10435,29 @@ function guardZip(zip, limits = {}) {
10394
10435
  if (entries.length > r.maxEntries)
10395
10436
  throw r.fail(
10396
10437
  `${r.label} package exceeds the ${r.maxEntries.toLocaleString("en-US")} part limit`,
10397
- r.maxEntries
10438
+ r.maxEntries,
10439
+ "maxEntries"
10398
10440
  );
10399
10441
  let declared = 0;
10400
10442
  for (const entry3 of entries) {
10401
10443
  const original = entry3.unsafeOriginalName;
10402
10444
  if (!isSafePartName(entry3.name) || original !== void 0 && !isSafePartName(original))
10403
- throw r.fail(`${r.label} package has an unsafe part name`, r.maxEntries);
10445
+ throw r.fail(`${r.label} package has an unsafe part name`, r.maxEntries, "partName");
10404
10446
  if (entry3.dir) continue;
10405
10447
  const size3 = declaredEntrySize(entry3);
10406
10448
  if (size3 > r.maxEntryBytes)
10407
10449
  throw r.fail(
10408
10450
  `${r.label} part ${entry3.name} exceeds the uncompressed part size limit`,
10409
- r.maxEntryBytes
10451
+ r.maxEntryBytes,
10452
+ "maxEntryBytes"
10410
10453
  );
10411
10454
  declared += size3;
10412
10455
  }
10413
10456
  if (declared > r.maxTotalBytes)
10414
10457
  throw r.fail(
10415
10458
  `${r.label} package exceeds the ${mib(r.maxTotalBytes)} MiB uncompressed content limit`,
10416
- r.maxTotalBytes
10459
+ r.maxTotalBytes,
10460
+ "maxTotalBytes"
10417
10461
  );
10418
10462
  const produced = /* @__PURE__ */ new Map();
10419
10463
  let total = 0;
@@ -12282,10 +12326,69 @@ function mergeComments(legacy, threaded) {
12282
12326
  (a2, b) => a2.address.row - b.address.row || a2.address.col - b.address.col
12283
12327
  );
12284
12328
  }
12285
- var MAX_INPUT_BYTES = 50 * 1024 * 1024;
12286
- var MAX_PARTS = 1e4;
12287
- var MAX_UNCOMPRESSED_BYTES = 300 * 1024 * 1024;
12288
- var MAX_PART_BYTES = 200 * 1024 * 1024;
12329
+
12330
+ // xlsx/read/limits.ts
12331
+ var DEFAULT_XLSX_LOAD_LIMITS = {
12332
+ maxInputBytes: 50 * 1024 * 1024,
12333
+ maxParts: 1e4,
12334
+ maxPartBytes: 200 * 1024 * 1024,
12335
+ maxTotalBytes: 300 * 1024 * 1024,
12336
+ maxXmlElements: 5e6
12337
+ };
12338
+ var WorkbookTooLargeError = class extends Error {
12339
+ code = "workbook-too-large";
12340
+ /** The limit that was exceeded, as named in {@link XlsxLoadLimits}. */
12341
+ limit;
12342
+ /** The value of that limit when the load failed. */
12343
+ maximum;
12344
+ constructor(message, limit3, maximum, options2) {
12345
+ super(message, options2);
12346
+ this.name = "WorkbookTooLargeError";
12347
+ this.limit = limit3;
12348
+ this.maximum = maximum;
12349
+ }
12350
+ };
12351
+ function resolveLoadLimits(limits = {}) {
12352
+ const resolved = { ...DEFAULT_XLSX_LOAD_LIMITS };
12353
+ for (const name3 of Object.keys(resolved)) {
12354
+ const value3 = limits[name3];
12355
+ if (value3 === void 0) continue;
12356
+ if (!Number.isFinite(value3) || value3 <= 0)
12357
+ throw new RangeError(`limits.${name3} must be a positive finite number`);
12358
+ resolved[name3] = value3;
12359
+ }
12360
+ return resolved;
12361
+ }
12362
+ var ZIP_LIMIT_NAMES = {
12363
+ maxInputBytes: "maxInputBytes",
12364
+ maxEntries: "maxParts",
12365
+ maxEntryBytes: "maxPartBytes",
12366
+ maxTotalBytes: "maxTotalBytes"
12367
+ };
12368
+ function zipLimitsFor(limits) {
12369
+ return {
12370
+ maxInputBytes: limits.maxInputBytes,
12371
+ maxEntries: limits.maxParts,
12372
+ maxEntryBytes: limits.maxPartBytes,
12373
+ maxTotalBytes: limits.maxTotalBytes,
12374
+ label: "XLSX",
12375
+ createError: (message, { limit: limit3, kind }) => {
12376
+ const name3 = ZIP_LIMIT_NAMES[kind];
12377
+ return name3 ? new WorkbookTooLargeError(message, name3, limit3) : new ZipLimitError(message, { limit: limit3, kind });
12378
+ }
12379
+ };
12380
+ }
12381
+ function parseDataXml(xml, label, maxXmlElements = DEFAULT_XLSX_LOAD_LIMITS.maxXmlElements) {
12382
+ try {
12383
+ return parseXml(xml, { label, limits: { maxNodes: maxXmlElements } });
12384
+ } catch (error) {
12385
+ if (error instanceof XmlLimitError && error.limit === "maxNodes")
12386
+ throw new WorkbookTooLargeError(error.message, "maxXmlElements", error.maximum, {
12387
+ cause: error
12388
+ });
12389
+ throw error;
12390
+ }
12391
+ }
12289
12392
  var CONTENT_TYPES = {
12290
12393
  workbook: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml",
12291
12394
  workbookMacro: "application/vnd.ms-excel.sheet.macroEnabled.main+xml",
@@ -12356,16 +12459,15 @@ var SourceIndex = class {
12356
12459
  };
12357
12460
  var mib2 = (bytes) => Math.round(bytes / 1048576);
12358
12461
  async function readZipParts(input, limits = {}) {
12359
- const maxInput = limits.maxInputBytes ?? MAX_INPUT_BYTES;
12360
- const zipLimits = {
12361
- maxEntries: limits.maxParts ?? MAX_PARTS,
12362
- maxEntryBytes: limits.maxPartBytes ?? MAX_PART_BYTES,
12363
- maxTotalBytes: limits.maxTotalBytes ?? MAX_UNCOMPRESSED_BYTES,
12364
- label: "XLSX"
12365
- };
12462
+ const resolved = resolveLoadLimits(limits);
12463
+ const maxInput = resolved.maxInputBytes;
12366
12464
  const bytes = input instanceof Uint8Array ? input : new Uint8Array(input);
12367
12465
  if (bytes.byteLength > maxInput)
12368
- throw new Error(`XLSX package exceeds the ${mib2(maxInput)} MiB compressed input limit`);
12466
+ throw new WorkbookTooLargeError(
12467
+ `XLSX package exceeds the ${mib2(maxInput)} MiB compressed input limit`,
12468
+ "maxInputBytes",
12469
+ maxInput
12470
+ );
12369
12471
  let loaded;
12370
12472
  try {
12371
12473
  loaded = await JSZip.loadAsync(bytes);
@@ -12375,7 +12477,7 @@ async function readZipParts(input, limits = {}) {
12375
12477
  { cause: error }
12376
12478
  );
12377
12479
  }
12378
- const zip = guardZip(loaded, zipLimits);
12480
+ const zip = guardZip(loaded, zipLimitsFor(resolved));
12379
12481
  const parts = /* @__PURE__ */ new Map();
12380
12482
  for (const entry3 of Object.values(zip.files)) {
12381
12483
  if (entry3.dir) continue;
@@ -12582,9 +12684,9 @@ function parseRichString(element2, palette) {
12582
12684
  const text6 = parsed.map((run) => run.text).join("");
12583
12685
  return { text: text6, runs: parsed };
12584
12686
  }
12585
- function parseSharedStrings(xml, palette) {
12687
+ function parseSharedStrings(xml, palette, maxXmlElements) {
12586
12688
  if (!xml) return [];
12587
- const root2 = parseXml(xml, { label: "XLSX shared strings" }).documentElement;
12689
+ const root2 = parseDataXml(xml, "XLSX shared strings", maxXmlElements).documentElement;
12588
12690
  return xChildren(root2, "si").map((si) => parseRichString(si, palette));
12589
12691
  }
12590
12692
 
@@ -17418,7 +17520,11 @@ function parseWorksheet(ctx, partName, name3, sheetId5) {
17418
17520
  return sheet;
17419
17521
  }
17420
17522
  const split = splitSheetData(xml);
17421
- const root2 = parseXml(split?.xml ?? xml, { label: "XLSX worksheet" }).documentElement;
17523
+ const root2 = parseDataXml(
17524
+ split?.xml ?? xml,
17525
+ "XLSX worksheet",
17526
+ ctx.maxXmlElements
17527
+ ).documentElement;
17422
17528
  const byName = /* @__PURE__ */ new Map();
17423
17529
  const cfBlocks = [];
17424
17530
  for (const node3 of elements(root2)) {
@@ -17492,8 +17598,9 @@ function liftPrintAreas(workbook) {
17492
17598
  return false;
17493
17599
  });
17494
17600
  }
17495
- async function loadXlsx(input) {
17496
- const parts = await readZipParts(input);
17601
+ async function loadXlsx(input, options2 = {}) {
17602
+ const limits = resolveLoadLimits(options2.limits);
17603
+ const parts = await readZipParts(input, limits);
17497
17604
  const source = new SourceIndex(parts);
17498
17605
  const workbookPart = source.workbookPart();
17499
17606
  if (!workbookPart) throw new Error("XLSX package has no workbook part (xl/workbook.xml)");
@@ -17514,7 +17621,8 @@ async function loadXlsx(input) {
17514
17621
  source,
17515
17622
  sharedStrings: parseSharedStrings(
17516
17623
  stringsPart ? source.text(stringsPart) : void 0,
17517
- styles.palette
17624
+ styles.palette,
17625
+ limits.maxXmlElements
17518
17626
  ),
17519
17627
  xfMap: styles.xfMap,
17520
17628
  date1904: book.date1904,
@@ -17522,7 +17630,8 @@ async function loadXlsx(input) {
17522
17630
  dxfs: styles.dxfs,
17523
17631
  persons: parsePersons(personsPart ? source.text(personsPart) : void 0),
17524
17632
  dynamicCells: parseDynamicArrayMetadata(metadataPart ? source.text(metadataPart) : void 0),
17525
- warn
17633
+ warn,
17634
+ maxXmlElements: limits.maxXmlElements
17526
17635
  };
17527
17636
  const rels = source.rels(workbookPart);
17528
17637
  const sheets = book.sheets.map((entry3) => {
@@ -18005,14 +18114,24 @@ function formatAxisValue(value3, percent = false) {
18005
18114
  return `${v < 0 ? "-" : ""}${grouped}${frac ? `.${frac}` : ""}`;
18006
18115
  }
18007
18116
 
18117
+ // chart/extent.ts
18118
+ function extentOf(values) {
18119
+ let min = Infinity;
18120
+ let max = -Infinity;
18121
+ for (const value3 of values) {
18122
+ min = Math.min(min, value3);
18123
+ max = Math.max(max, value3);
18124
+ }
18125
+ return { min, max };
18126
+ }
18127
+
18008
18128
  // chart/axis-range.ts
18009
18129
  function computeLogValueRange(series, logBase) {
18010
18130
  const allValues = series.flatMap((item) => item.values).filter((value3) => value3 !== null && Number.isFinite(value3) && value3 > 0);
18011
18131
  if (allValues.length === 0) {
18012
18132
  return { min: 1, max: logBase, span: 1, logScale: true, logBase };
18013
18133
  }
18014
- const dataMin = Math.min(...allValues);
18015
- const dataMax = Math.max(...allValues);
18134
+ const { min: dataMin, max: dataMax } = extentOf(allValues);
18016
18135
  const logMin = Math.floor(Math.log(dataMin) / Math.log(logBase));
18017
18136
  const logMax = Math.ceil(Math.log(dataMax) / Math.log(logBase));
18018
18137
  const min = logBase ** logMin;
@@ -18740,8 +18859,7 @@ function computeHistogramBins(values, options2, format5 = String) {
18740
18859
  });
18741
18860
  }
18742
18861
  if (regular.length > 0) {
18743
- const min = Math.min(...regular.map((item) => item.value));
18744
- const max = Math.max(...regular.map((item) => item.value));
18862
+ const { min, max } = extentOf(regular.map((item) => item.value));
18745
18863
  const requestedSize = options2.binSize && options2.binSize > 0 ? options2.binSize : void 0;
18746
18864
  const requestedCount = options2.binCount && options2.binCount > 0 ? options2.binCount : void 0;
18747
18865
  const start = requestedSize ? Math.floor(min / requestedSize) * requestedSize : min;
@@ -18869,8 +18987,9 @@ function waterfallView(chart, model2, ctx) {
18869
18987
  colors: { increase: role(0), decrease: role(1), total: role(2) }
18870
18988
  };
18871
18989
  const ends = steps.flatMap((step2) => [step2.startValue, step2.endValue]);
18990
+ const range2 = extentOf(ends);
18872
18991
  model2.valueAxis = {
18873
- ...ends.length ? niceScale(Math.min(...ends), Math.max(...ends)) : niceScale(0, 1),
18992
+ ...ends.length ? niceScale(range2.min, range2.max) : niceScale(0, 1),
18874
18993
  percent: false
18875
18994
  };
18876
18995
  const labels = model2.categories;
@@ -18986,7 +19105,8 @@ function chartSummaryView(chart, theme2, options2 = {}) {
18986
19105
  s.xValues = s.values.map((_, k) => numeric5 ? toNumber(cats[k] ?? null) : k + 1);
18987
19106
  });
18988
19107
  const xs = series.flatMap((s) => s.xValues ?? []).filter((x) => x !== null);
18989
- model2.xAxis = xs.length ? niceScale(Math.min(...xs), Math.max(...xs)) : niceScale(0, 1);
19108
+ const range2 = extentOf(xs);
19109
+ model2.xAxis = xs.length ? niceScale(range2.min, range2.max) : niceScale(0, 1);
18990
19110
  }
18991
19111
  if (type === "stock") model2.stock = stockView(chart.stock, ctx);
18992
19112
  if (type === "bubble") bubbleView(chart, model2, ctx.evaluateRef);
@@ -0,0 +1,24 @@
1
+ import type { CollabSession, CollaborationOptions } from '../../collab/index.js';
2
+ import type { VisioPresence } from './collab-presence.js';
3
+ /** Write-back settings of {@link VisioCollaborationOptions}. */
4
+ export interface VisioWriteBackOptions {
5
+ /**
6
+ * Called with the saved VSDX bytes, debounced, after local and remote changes, only in the
7
+ * window whose `user.role` is `owner`. Returning is not a durable-storage acknowledgement: the
8
+ * viewer cannot tell whether the host stored the bytes, and a pending write-back is flushed
9
+ * once when the viewer leaves the room, not retried.
10
+ */
11
+ onWriteBack?: (bytes: Uint8Array) => void;
12
+ /** Quiet time after the last change before `onWriteBack` fires. Default 5000. */
13
+ writeBackDebounceMs?: number;
14
+ }
15
+ /**
16
+ * The options of `<visio-viewer>.collaboration`. A host-owned `session` should be created with
17
+ * `sanitizeVisioPresence` as its `sanitizePayload` (and `VISIO_INITIAL_PRESENCE` as
18
+ * `initialPresence`); a session made without them is accepted, but its peers carry no cursors or
19
+ * selections.
20
+ */
21
+ export type VisioCollaborationOptions = Omit<CollaborationOptions<VisioPresence>, 'session'> & VisioWriteBackOptions & {
22
+ session?: CollabSession<VisioPresence> | CollabSession;
23
+ };
24
+ //# sourceMappingURL=collab-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collab-options.d.ts","sourceRoot":"","sources":["../../../visio/ui/collab-options.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,gEAAgE;AAChE,MAAM,WAAW,qBAAqB;IACrC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,GAC3F,qBAAqB,GAAG;IACvB,OAAO,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;CACvD,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { VisioMatrix, VisioPage } from '../model.js';
2
+ /** The presence payload of one Visio collaborator. */
3
+ export interface VisioPresence {
4
+ /** Page id of the page being viewed; an empty string while no page is open. */
5
+ page: string;
6
+ /** Pointer in the page's SVG drawing units (inches, y down); absent while outside the page. */
7
+ x?: number | undefined;
8
+ y?: number | undefined;
9
+ /** Shape ids selected on that page (bounded). */
10
+ selection?: string[] | undefined;
11
+ }
12
+ export declare const VISIO_PRESENCE_MAX_SELECTION = 64;
13
+ export declare const VISIO_PRESENCE_MAX_ID = 128;
14
+ /** Drawing coordinates beyond this are corrupt, not a drawing (a Visio page is at most ~600 in). */
15
+ export declare const VISIO_PRESENCE_MAX_COORDINATE = 100000;
16
+ /**
17
+ * Validate a raw awareness `presence` entry. Returns `null` (hide the peer's location) when it
18
+ * names no usable page; wrong-typed pointer or selection fields are dropped, lists are bounded.
19
+ */
20
+ export declare function sanitizeVisioPresence(raw: Record<string, unknown>): VisioPresence | null;
21
+ /** The presence a window starts with, before it has a page or a pointer. */
22
+ export declare const VISIO_INITIAL_PRESENCE: VisioPresence;
23
+ /** A shape's frame in page drawing space: `transform` maps its local y-up box to the page. */
24
+ export interface VisioShapeFrame {
25
+ transform: VisioMatrix;
26
+ width: number;
27
+ height: number;
28
+ }
29
+ /** The frame of shape `id` on `page` (parents composed in), or undefined when it is not there. */
30
+ export declare function visioShapeFrame(page: VisioPage, id: string): VisioShapeFrame | undefined;
31
+ //# sourceMappingURL=collab-presence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collab-presence.d.ts","sourceRoot":"","sources":["../../../visio/ui/collab-presence.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAc,MAAM,UAAU,CAAC;AAEnE,sDAAsD;AACtD,MAAM,WAAW,aAAa;IAC7B,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,+FAA+F;IAC/F,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvB,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACjC;AAED,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAC/C,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,oGAAoG;AACpG,eAAO,MAAM,6BAA6B,SAAU,CAAC;AAUrD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,GAAG,IAAI,CAqBxF;AAED,4EAA4E;AAC5E,eAAO,MAAM,sBAAsB,EAAE,aAA2C,CAAC;AAEjF,8FAA8F;AAC9F,MAAM,WAAW,eAAe;IAC/B,SAAS,EAAE,WAAW,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAaD,kGAAkG;AAClG,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAkBxF"}
@@ -1,4 +1,6 @@
1
1
  import type { RibbonAddInCommandDetail, RibbonAddInTab } from '../../ribbon/index.js';
2
+ import type { CollaborationState } from '../../collab/index.js';
3
+ import type { VisioCollaborationOptions } from './collab-options.js';
2
4
  import type { VisioDocument } from '../index.js';
3
5
  export interface ViewerProperties {
4
6
  canEdit?: boolean;
@@ -8,6 +10,8 @@ export interface ViewerProperties {
8
10
  showToolbar: boolean;
9
11
  /** Tabs the host adds after Help, as an Office add-in does. */
10
12
  ribbonAddIns: readonly RibbonAddInTab[];
13
+ /** Shares the open drawing in a room while set; null leaves it (the shared embedding contract). */
14
+ collaboration: VisioCollaborationOptions | null;
11
15
  }
12
16
  /** A page-scoped shape identity. Omitted pageId means the currently displayed page. */
13
17
  export interface VisioShapeSelection {
@@ -20,7 +24,7 @@ export interface ViewerEvents {
20
24
  'document-change': {
21
25
  document: VisioDocument;
22
26
  dirty: boolean;
23
- kind: 'edit' | 'undo' | 'redo' | 'remote';
27
+ kind: 'edit' | 'undo' | 'redo' | 'remote' | 'save';
24
28
  };
25
29
  'document-error': Error;
26
30
  'page-change': number;
@@ -30,12 +34,14 @@ export interface ViewerEvents {
30
34
  'selection-change': readonly VisioShapeSelection[];
31
35
  /** A command of a host tab (`ribbonAddIns`) was chosen. */
32
36
  'office-ribbon-add-in': RibbonAddInCommandDetail;
37
+ /** Sharing started, stopped or its status, sync or people changed. */
38
+ 'collaboration-change': CollaborationState;
33
39
  }
34
40
  export type ViewerCallbacks = {
35
41
  [K in keyof ViewerEvents]?: (detail: ViewerEvents[K]) => void;
36
42
  };
37
- export declare const propertyKeys: readonly ["canEdit", "document", "pageIndex", "zoom", "showToolbar", "ribbonAddIns"];
38
- export declare const eventKeys: readonly ["document-load", "document-change", "document-error", "page-change", "zoom-change", "shape-select", "selection-change", "office-ribbon-add-in"];
43
+ export declare const propertyKeys: readonly ["canEdit", "document", "pageIndex", "zoom", "showToolbar", "ribbonAddIns", "collaboration"];
44
+ export declare const eventKeys: readonly ["document-load", "document-change", "document-error", "page-change", "zoom-change", "shape-select", "selection-change", "office-ribbon-add-in", "collaboration-change"];
39
45
  export type VsdxSource = ArrayBuffer | Uint8Array | Blob;
40
46
  export interface ViewerOptions extends Partial<ViewerProperties> {
41
47
  events?: ViewerCallbacks;
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../../visio/ui/contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,+DAA+D;IAC/D,YAAY,EAAE,SAAS,cAAc,EAAE,CAAC;CACxC;AACD,uFAAuF;AACvF,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACzB;AACD,MAAM,WAAW,YAAY;IAC5B,eAAe,EAAE,aAAa,CAAC;IAC/B,iBAAiB,EAAE;QAClB,QAAQ,EAAE,aAAa,CAAC;QACxB,KAAK,EAAE,OAAO,CAAC;QACf,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;KAC1C,CAAC;IACF,gBAAgB,EAAE,KAAK,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC3C,iFAAiF;IACjF,kBAAkB,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACnD,2DAA2D;IAC3D,sBAAsB,EAAE,wBAAwB,CAAC;CACjD;AACD,MAAM,MAAM,eAAe,GAAG;KAC5B,CAAC,IAAI,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI;CAC7D,CAAC;AACF,eAAO,MAAM,YAAY,sFAO+B,CAAC;AACzD,eAAO,MAAM,SAAS,2JAS8B,CAAC;AASrD,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC;AACzD,MAAM,WAAW,aAAc,SAAQ,OAAO,CAAC,gBAAgB,CAAC;IAC/D,MAAM,CAAC,EAAE,eAAe,CAAC;CACzB"}
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../../visio/ui/contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,+DAA+D;IAC/D,YAAY,EAAE,SAAS,cAAc,EAAE,CAAC;IACxC,mGAAmG;IACnG,aAAa,EAAE,yBAAyB,GAAG,IAAI,CAAC;CAChD;AACD,uFAAuF;AACvF,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACzB;AACD,MAAM,WAAW,YAAY;IAC5B,eAAe,EAAE,aAAa,CAAC;IAC/B,iBAAiB,EAAE;QAClB,QAAQ,EAAE,aAAa,CAAC;QACxB,KAAK,EAAE,OAAO,CAAC;QACf,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;KACnD,CAAC;IACF,gBAAgB,EAAE,KAAK,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC3C,iFAAiF;IACjF,kBAAkB,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACnD,2DAA2D;IAC3D,sBAAsB,EAAE,wBAAwB,CAAC;IACjD,sEAAsE;IACtE,sBAAsB,EAAE,kBAAkB,CAAC;CAC3C;AACD,MAAM,MAAM,eAAe,GAAG;KAC5B,CAAC,IAAI,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI;CAC7D,CAAC;AACF,eAAO,MAAM,YAAY,uGAQ+B,CAAC;AACzD,eAAO,MAAM,SAAS,mLAU8B,CAAC;AASrD,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC;AACzD,MAAM,WAAW,aAAc,SAAQ,OAAO,CAAC,gBAAgB,CAAC;IAC/D,MAAM,CAAC,EAAE,eAAe,CAAC;CACzB"}
@@ -32,8 +32,10 @@ export interface SourceSnapshot {
32
32
  /** Private controller-owned bytes; transient worker copies and models are separate from this budget. */
33
33
  export declare class DocumentHistory {
34
34
  #private;
35
- readonly original: SourceSnapshot;
36
35
  constructor(bytes: Uint8Array, maxEntries?: number);
36
+ get original(): SourceSnapshot;
37
+ /** Declare the current snapshot saved: it becomes the reference `dirty` is measured against. */
38
+ markClean(): void;
37
39
  get current(): SourceSnapshot;
38
40
  get undoTarget(): SourceSnapshot | undefined;
39
41
  get redoTarget(): SourceSnapshot | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"document-history.d.ts","sourceRoot":"","sources":["../../../visio/ui/document-history.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AACD,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,SAAS,cAAc,EAAE,CAAC;CACvC;AACD,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,SAAS,cAAc,EAAE,CAAC;CAChD;AACD,eAAO,MAAM,gBAAgB,EAAE,eAS7B,CAAC;AACH,eAAO,MAAM,mBAAmB;;;EAAgE,CAAC;AACjG,iGAAiG;AACjG,eAAO,MAAM,mBAAmB,YAAa,MAAM,KAAG,MAIpD,CAAC;AACH,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,SAAS,cAAc,EAAE,CAAC;CAChD;AACD,wGAAwG;AACxG,qBAAa,eAAe;;IAC3B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAKlC,YAAY,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM,EAIjD;IACD,IAAI,OAAO,IAAI,cAAc,CAE5B;IACD,IAAI,UAAU,IAAI,cAAc,GAAG,SAAS,CAE3C;IACD,IAAI,UAAU,IAAI,cAAc,GAAG,SAAS,CAE3C;IACD,IAAI,KAAK,IAAI,eAAe,CAU3B;IACD,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,cAAc,EAAE,GAAG,IAAI,CAWtE;IACD,iGAAiG;IACjG,IAAI,UAAU,CAAC,OAAO,EAAE,MAAM,EAU7B;IACD,IAAI,UAAU,IAAI,MAAM,CAEvB;IAeD,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAKjC;IACD,MAAM,IAAI,gBAAgB,CAMzB;CACD"}
1
+ {"version":3,"file":"document-history.d.ts","sourceRoot":"","sources":["../../../visio/ui/document-history.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AACD,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE,SAAS,cAAc,EAAE,CAAC;CACvC;AACD,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,SAAS,cAAc,EAAE,CAAC;CAChD;AACD,eAAO,MAAM,gBAAgB,EAAE,eAS7B,CAAC;AACH,eAAO,MAAM,mBAAmB;;;EAAgE,CAAC;AACjG,iGAAiG;AACjG,eAAO,MAAM,mBAAmB,YAAa,MAAM,KAAG,MAIpD,CAAC;AACH,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,SAAS,cAAc,EAAE,CAAC;CAChD;AACD,wGAAwG;AACxG,qBAAa,eAAe;;IAO3B,YAAY,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM,EAIjD;IACD,IAAI,QAAQ,IAAI,cAAc,CAE7B;IACD,gGAAgG;IAChG,SAAS,IAAI,IAAI,CAEhB;IACD,IAAI,OAAO,IAAI,cAAc,CAE5B;IACD,IAAI,UAAU,IAAI,cAAc,GAAG,SAAS,CAE3C;IACD,IAAI,UAAU,IAAI,cAAc,GAAG,SAAS,CAE3C;IACD,IAAI,KAAK,IAAI,eAAe,CAU3B;IACD,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,cAAc,EAAE,GAAG,IAAI,CAWtE;IACD,iGAAiG;IACjG,IAAI,UAAU,CAAC,OAAO,EAAE,MAAM,EAU7B;IACD,IAAI,UAAU,IAAI,MAAM,CAEvB;IAeD,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAKjC;IACD,MAAM,IAAI,gBAAgB,CAMzB;CACD"}