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
@@ -653,107 +653,6 @@ var Emitter = class {
653
653
  }
654
654
  };
655
655
 
656
- // collab/external-provider.ts
657
- function adaptYjsProvider(provider) {
658
- const events = new Emitter();
659
- let destroyed = false;
660
- let status = provider.wsconnected || provider.connected ? "connected" : provider.wsconnecting ? "connecting" : "disconnected";
661
- let synced = Boolean(provider.synced);
662
- const subscriptions = [];
663
- const listen = (name, handler) => {
664
- const wrapped = handler;
665
- provider.on(name, wrapped);
666
- subscriptions.push([name, wrapped]);
667
- };
668
- const setStatus = (next) => {
669
- if (destroyed || next === status) return;
670
- status = next;
671
- events.emit("status", next);
672
- };
673
- const setSynced = (next) => {
674
- if (destroyed || next === synced) return;
675
- synced = next;
676
- events.emit("synced", next);
677
- };
678
- listen("status", (payload) => {
679
- if (typeof payload.connected === "boolean") {
680
- if (!payload.connected) setSynced(false);
681
- return setStatus(payload.connected ? "connected" : "disconnected");
682
- }
683
- if (payload.status === "connected" || payload.status === "connecting")
684
- setStatus(payload.status);
685
- else if (payload.status === "disconnected") {
686
- setSynced(false);
687
- setStatus("disconnected");
688
- }
689
- });
690
- const onSync = (value) => setSynced(typeof value === "boolean" ? value : value.synced === true);
691
- listen("sync", onSync);
692
- listen("synced", onSync);
693
- listen("connection-error", (cause) => {
694
- if (destroyed) return;
695
- setStatus("error");
696
- events.emit("error", cause instanceof Error ? cause : new Error("Provider connection error"));
697
- });
698
- return {
699
- get status() {
700
- return status;
701
- },
702
- get synced() {
703
- return synced;
704
- },
705
- connect: () => {
706
- if (destroyed || status === "connected" || status === "connecting") return;
707
- setStatus("connecting");
708
- provider.connect?.();
709
- },
710
- disconnect: () => {
711
- if (destroyed) return;
712
- provider.disconnect?.();
713
- setSynced(false);
714
- setStatus("disconnected");
715
- },
716
- destroy: () => {
717
- if (destroyed) return;
718
- setSynced(false);
719
- setStatus("disconnected");
720
- destroyed = true;
721
- for (const [name, handler] of subscriptions) provider.off?.(name, handler);
722
- subscriptions.length = 0;
723
- events.clear();
724
- provider.destroy?.();
725
- },
726
- on: (event, listener) => events.on(event, listener)
727
- };
728
- }
729
- function observeExternalSession(session, onSnapshot) {
730
- let active = true;
731
- let subscribing = true;
732
- let previous;
733
- let unsubscribe;
734
- const notify = () => {
735
- if (!active || subscribing) return;
736
- const snapshot = session.getSnapshot();
737
- if (previous?.status === snapshot.status && previous.synced === snapshot.synced) return;
738
- previous = { status: snapshot.status, synced: snapshot.synced };
739
- onSnapshot(previous);
740
- };
741
- const dispose = () => {
742
- if (!active) return;
743
- active = false;
744
- unsubscribe?.();
745
- };
746
- try {
747
- unsubscribe = session.subscribe(notify);
748
- subscribing = false;
749
- notify();
750
- } catch (error) {
751
- dispose();
752
- throw error;
753
- }
754
- return dispose;
755
- }
756
-
757
656
  // collab/lifecycle.ts
758
657
  var COLLAB_LEAVE_MESSAGE = "ooxml-core:collab-leave";
759
658
  var DEPARTURE_CHANNEL = "ooxml-core:collab-departures";
@@ -836,183 +735,10 @@ function createDepartureChannel(roomId, awareness, factory, channelName = DEPART
836
735
  };
837
736
  }
838
737
 
839
- // collab/memory-transport.ts
840
- function createMemoryHub(options = {}) {
841
- const rooms = /* @__PURE__ */ new Map();
842
- let nextId = 0;
843
- const deliver = (task) => {
844
- if (options.async) queueMicrotask(task);
845
- else task();
846
- };
847
- return {
848
- size: (roomId) => rooms.get(roomId)?.size ?? 0,
849
- createTransport(roomId) {
850
- const id = nextId++;
851
- let endpoint = null;
852
- const peers = () => {
853
- let room = rooms.get(roomId);
854
- if (!room) rooms.set(roomId, room = /* @__PURE__ */ new Set());
855
- return room;
856
- };
857
- return {
858
- get connected() {
859
- return endpoint !== null;
860
- },
861
- connect(handlers) {
862
- if (endpoint) peers().delete(endpoint);
863
- const self = { id, handlers };
864
- const others = [...peers()];
865
- peers().add(self);
866
- endpoint = self;
867
- deliver(() => {
868
- if (endpoint !== self) return;
869
- handlers.open();
870
- for (const other of others) other.handlers.peer?.();
871
- });
872
- },
873
- send(data) {
874
- const self = endpoint;
875
- if (!self || options.filter && !options.filter(data, id)) return;
876
- for (const other of [...peers()])
877
- if (other !== self) deliver(() => other.handlers.message(data.slice()));
878
- },
879
- disconnect() {
880
- const self = endpoint;
881
- if (!self) return;
882
- endpoint = null;
883
- peers().delete(self);
884
- self.handlers.close("disconnected");
885
- }
886
- };
887
- }
888
- };
889
- }
890
-
891
- // collab/package-adapter.ts
892
- var DEFAULT_MAX_PACKAGE_BYTES = 32 * 1024 * 1024;
893
- function packageAdapter(options = {}) {
894
- const name = options.name ?? "package";
895
- const maxBytes = options.maxBytes ?? DEFAULT_MAX_PACKAGE_BYTES;
896
- const map = (doc) => doc.getMap(name);
897
- const check = (bytes) => {
898
- if (!(bytes instanceof Uint8Array)) throw new Error("The shared package is not binary data.");
899
- if (bytes.byteLength > maxBytes)
900
- throw new Error(`The shared package exceeds ${Math.round(maxBytes / 1024 / 1024)} MiB.`);
901
- return bytes;
902
- };
903
- return {
904
- isEmpty: (doc) => !(map(doc).get("bytes") instanceof Uint8Array),
905
- read: (doc) => {
906
- const shared = map(doc);
907
- const revision = shared.get("revision");
908
- return {
909
- bytes: check(shared.get("bytes")).slice(),
910
- revision: typeof revision === "number" && Number.isSafeInteger(revision) ? revision : 0
911
- };
912
- },
913
- write: (doc, model, origin) => {
914
- const bytes = check(model.bytes);
915
- doc.transact(() => {
916
- const shared = map(doc);
917
- const current = shared.get("revision");
918
- const revision = Math.max(model.revision, typeof current === "number" ? current : 0) + 1;
919
- shared.set("bytes", bytes.slice());
920
- shared.set("revision", revision);
921
- }, origin);
922
- },
923
- observe: (doc, onChange) => {
924
- const shared = map(doc);
925
- const handler = (event) => {
926
- if (event.keysChanged.has("bytes")) onChange(event.transaction.origin);
927
- };
928
- shared.observe(handler);
929
- return () => shared.unobserve(handler);
930
- }
931
- };
932
- }
933
-
934
- // collab/ordering.ts
935
- function classifyVersion(messageVersion, currentVersion) {
936
- if (!isNonNegativeSafeInteger(messageVersion) || !isNonNegativeSafeInteger(currentVersion))
937
- return "invalid";
938
- if (messageVersion < currentVersion) return "stale";
939
- return messageVersion > currentVersion ? "out-of-order" : "apply";
940
- }
941
- var BoundedMap = class {
942
- constructor(limit) {
943
- this.limit = limit;
944
- if (!Number.isSafeInteger(limit) || limit < 1) throw new Error("limit must be positive");
945
- }
946
- limit;
947
- entries = /* @__PURE__ */ new Map();
948
- get size() {
949
- return this.entries.size;
950
- }
951
- get(key) {
952
- return this.entries.get(key);
953
- }
954
- has(key) {
955
- return this.entries.has(key);
956
- }
957
- set(key, value) {
958
- this.entries.delete(key);
959
- this.entries.set(key, value);
960
- if (this.entries.size > this.limit) {
961
- const oldest = this.entries.keys().next();
962
- if (!oldest.done) this.entries.delete(oldest.value);
963
- }
964
- }
965
- delete(key) {
966
- return this.entries.delete(key);
967
- }
968
- clear() {
969
- this.entries.clear();
970
- }
971
- };
972
- var IdempotencyCache = class {
973
- seen;
974
- constructor(limit = 5e3) {
975
- this.seen = new BoundedMap(limit);
976
- }
977
- check(clientId, messageId, fingerprint) {
978
- const prior = this.seen.get(`${clientId}\0${messageId}`);
979
- if (!prior) return { status: "fresh" };
980
- return prior.fingerprint === fingerprint ? { status: "duplicate", value: prior.value } : { status: "reused" };
981
- }
982
- remember(clientId, messageId, fingerprint, value) {
983
- this.seen.set(`${clientId}\0${messageId}`, { fingerprint, value });
984
- }
985
- };
986
- var SequenceTracker = class {
987
- last;
988
- constructor(limit = 200) {
989
- this.last = new BoundedMap(limit);
990
- }
991
- /** Classify without recording; call {@link commit} once the message was actually applied. */
992
- classify(peerId, sequence, fingerprint) {
993
- if (!isNonNegativeSafeInteger(sequence) || sequence < 1) return "invalid";
994
- const previous = this.last.get(peerId);
995
- if (!previous || sequence > previous.sequence) return "apply";
996
- if (sequence < previous.sequence) return "stale";
997
- return previous.fingerprint === fingerprint ? "duplicate" : "invalid";
998
- }
999
- commit(peerId, sequence, fingerprint) {
1000
- this.last.set(peerId, { sequence, fingerprint });
1001
- }
1002
- forget(peerId) {
1003
- this.last.delete(peerId);
1004
- }
1005
- };
1006
- function freezeDeep(value) {
1007
- if (value && typeof value === "object" && !Object.isFrozen(value)) {
1008
- for (const child of Object.values(value)) freezeDeep(child);
1009
- Object.freeze(value);
1010
- }
1011
- return value;
1012
- }
1013
-
1014
738
  // collab/provider.ts
1015
739
  var CONNECTION_TIMEOUT_MS = 3e4;
740
+
741
+ // collab/session.ts
1016
742
  function createCollabSession(options) {
1017
743
  const roomId = validateRoomId(options.roomId);
1018
744
  const ownsDoc = !options.doc;
@@ -1290,37 +1016,149 @@ function createTransportProvider({ doc, awareness }, { transport, maxMessageByte
1290
1016
  get synced() {
1291
1017
  return synced;
1292
1018
  },
1293
- connect,
1294
- resync: () => {
1295
- if (destroyed || !open) return;
1296
- setSynced(false);
1297
- handshake();
1298
- sendUpdate(Y__namespace.encodeStateAsUpdate(doc));
1019
+ connect,
1020
+ resync: () => {
1021
+ if (destroyed || !open) return;
1022
+ setSynced(false);
1023
+ handshake();
1024
+ sendUpdate(Y__namespace.encodeStateAsUpdate(doc));
1025
+ },
1026
+ disconnect: () => {
1027
+ if (destroyed) return;
1028
+ const local = awareness.getLocalState();
1029
+ if (open && local !== null) awareness.setLocalState(null);
1030
+ transport.disconnect();
1031
+ open = false;
1032
+ if (local !== null) awareness.setLocalState(local);
1033
+ setSynced(false);
1034
+ dropRemotePeers();
1035
+ setStatus("disconnected");
1036
+ },
1037
+ destroy: () => {
1038
+ if (destroyed) return;
1039
+ if (open) awareness.setLocalState(null);
1040
+ destroyed = true;
1041
+ open = false;
1042
+ doc.off("update", onDocUpdate);
1043
+ awareness.off("update", onAwarenessUpdate);
1044
+ transport.disconnect();
1045
+ events.clear();
1046
+ },
1047
+ on: (event, listener) => events.on(event, listener)
1048
+ };
1049
+ }
1050
+
1051
+ // collab/external-provider.ts
1052
+ function adaptYjsProvider(provider) {
1053
+ const events = new Emitter();
1054
+ let destroyed = false;
1055
+ let status = provider.wsconnected || provider.connected ? "connected" : provider.wsconnecting ? "connecting" : "disconnected";
1056
+ let synced = Boolean(provider.synced);
1057
+ const subscriptions = [];
1058
+ const listen = (name, handler) => {
1059
+ const wrapped = handler;
1060
+ provider.on(name, wrapped);
1061
+ subscriptions.push([name, wrapped]);
1062
+ };
1063
+ const setStatus = (next) => {
1064
+ if (destroyed || next === status) return;
1065
+ status = next;
1066
+ events.emit("status", next);
1067
+ };
1068
+ const setSynced = (next) => {
1069
+ if (destroyed || next === synced) return;
1070
+ synced = next;
1071
+ events.emit("synced", next);
1072
+ };
1073
+ listen("status", (payload) => {
1074
+ if (typeof payload.connected === "boolean") {
1075
+ if (!payload.connected) setSynced(false);
1076
+ return setStatus(payload.connected ? "connected" : "disconnected");
1077
+ }
1078
+ if (payload.status === "connected" || payload.status === "connecting")
1079
+ setStatus(payload.status);
1080
+ else if (payload.status === "disconnected") {
1081
+ setSynced(false);
1082
+ setStatus("disconnected");
1083
+ }
1084
+ });
1085
+ const onSync = (value) => setSynced(typeof value === "boolean" ? value : value.synced === true);
1086
+ listen("sync", onSync);
1087
+ listen("synced", onSync);
1088
+ listen("connection-error", (cause) => {
1089
+ if (destroyed) return;
1090
+ setStatus("error");
1091
+ events.emit("error", cause instanceof Error ? cause : new Error("Provider connection error"));
1092
+ });
1093
+ return {
1094
+ get status() {
1095
+ return status;
1096
+ },
1097
+ get synced() {
1098
+ return synced;
1099
+ },
1100
+ connect: () => {
1101
+ if (destroyed || status === "connected" || status === "connecting") return;
1102
+ setStatus("connecting");
1103
+ provider.connect?.();
1299
1104
  },
1300
1105
  disconnect: () => {
1301
1106
  if (destroyed) return;
1302
- const local = awareness.getLocalState();
1303
- if (open && local !== null) awareness.setLocalState(null);
1304
- transport.disconnect();
1305
- open = false;
1306
- if (local !== null) awareness.setLocalState(local);
1107
+ provider.disconnect?.();
1307
1108
  setSynced(false);
1308
- dropRemotePeers();
1309
1109
  setStatus("disconnected");
1310
1110
  },
1311
1111
  destroy: () => {
1312
1112
  if (destroyed) return;
1313
- if (open) awareness.setLocalState(null);
1113
+ setSynced(false);
1114
+ setStatus("disconnected");
1314
1115
  destroyed = true;
1315
- open = false;
1316
- doc.off("update", onDocUpdate);
1317
- awareness.off("update", onAwarenessUpdate);
1318
- transport.disconnect();
1116
+ for (const [name, handler] of subscriptions) provider.off?.(name, handler);
1117
+ subscriptions.length = 0;
1319
1118
  events.clear();
1119
+ provider.destroy?.();
1320
1120
  },
1321
1121
  on: (event, listener) => events.on(event, listener)
1322
1122
  };
1323
1123
  }
1124
+ function observeExternalSession(session, onSnapshot) {
1125
+ let active = true;
1126
+ let subscribing = true;
1127
+ let previous;
1128
+ let unsubscribe;
1129
+ const notify = () => {
1130
+ if (!active || subscribing) return;
1131
+ const snapshot = session.getSnapshot();
1132
+ if (previous?.status === snapshot.status && previous.synced === snapshot.synced) return;
1133
+ previous = { status: snapshot.status, synced: snapshot.synced };
1134
+ onSnapshot(previous);
1135
+ };
1136
+ const dispose = () => {
1137
+ if (!active) return;
1138
+ active = false;
1139
+ unsubscribe?.();
1140
+ };
1141
+ try {
1142
+ unsubscribe = session.subscribe(notify);
1143
+ subscribing = false;
1144
+ notify();
1145
+ } catch (error) {
1146
+ dispose();
1147
+ throw error;
1148
+ }
1149
+ return dispose;
1150
+ }
1151
+
1152
+ // collab/webrtc-provider.ts
1153
+ function webrtcProvider(options) {
1154
+ return ({ doc, awareness, roomId }) => adaptYjsProvider(
1155
+ new options.WebrtcProvider(roomId, doc, {
1156
+ awareness,
1157
+ ...options.signaling ? { signaling: options.signaling } : {},
1158
+ ...options.password ? { password: options.password } : {}
1159
+ })
1160
+ );
1161
+ }
1324
1162
 
1325
1163
  // collab/websocket-transport.ts
1326
1164
  var OPEN = 1;
@@ -1402,8 +1240,293 @@ function trimTrailingSlashes(value) {
1402
1240
  return value.slice(0, end);
1403
1241
  }
1404
1242
 
1243
+ // collab/embedding.ts
1244
+ var COLLABORATION_CHANGE_EVENT = "collaboration-change";
1245
+ var COLLABORATION_OFF_STATE = Object.freeze({
1246
+ active: false,
1247
+ roomId: void 0,
1248
+ status: "off",
1249
+ synced: false,
1250
+ people: []
1251
+ });
1252
+ var INVALID_ROOM_MESSAGE = "Use 1 to 128 letters, digits, hyphens or underscores for the room name.";
1253
+ var NO_BROADCAST_MESSAGE = "This browser cannot share between windows; pass a server URL.";
1254
+ function openCollaborationSession(options, defaults) {
1255
+ if (options.session) return { session: options.session, owned: false };
1256
+ const roomId = options.roomId ?? "";
1257
+ if (!isValidRoomId(roomId)) throw new Error(INVALID_ROOM_MESSAGE);
1258
+ let provider = options.provider;
1259
+ if (!provider && options.webrtc) {
1260
+ const password = options.webrtc.password ?? options.authToken;
1261
+ provider = webrtcProvider({ ...options.webrtc, ...password ? { password } : {} });
1262
+ }
1263
+ if (!provider && options.serverUrl)
1264
+ provider = transportProvider({
1265
+ transport: createWebSocketTransport({
1266
+ url: withToken(roomUrl(options.serverUrl, roomId), options.authToken)
1267
+ })
1268
+ });
1269
+ if (!provider) {
1270
+ if (!canBroadcast()) throw new Error(NO_BROADCAST_MESSAGE);
1271
+ provider = transportProvider({
1272
+ transport: createBroadcastTransport({ roomId, prefix: defaults.broadcastPrefix })
1273
+ });
1274
+ }
1275
+ const user = options.user ?? {};
1276
+ const session = createCollabSession({
1277
+ roomId,
1278
+ provider,
1279
+ user: {
1280
+ name: user.name || defaults.defaultName,
1281
+ ...user.color ? { color: user.color } : {},
1282
+ ...user.avatar ? { avatar: user.avatar } : {},
1283
+ ...user.role ? { role: user.role } : {}
1284
+ },
1285
+ ...defaults.initialPresence ? { initialPresence: defaults.initialPresence } : {},
1286
+ ...defaults.sanitizePayload ? { sanitizePayload: defaults.sanitizePayload } : {},
1287
+ teardown: true
1288
+ });
1289
+ return { session, owned: true };
1290
+ }
1291
+ function withToken(url, token) {
1292
+ if (!token) return url;
1293
+ return `${url}${url.includes("?") ? "&" : "?"}token=${encodeURIComponent(token)}`;
1294
+ }
1295
+ function collaborationStateOf(session) {
1296
+ return {
1297
+ active: true,
1298
+ roomId: session.roomId,
1299
+ status: session.status,
1300
+ synced: session.synced,
1301
+ people: [
1302
+ {
1303
+ clientId: session.clientId,
1304
+ name: session.identity.userName,
1305
+ color: session.identity.userColor,
1306
+ self: true
1307
+ },
1308
+ ...session.peers().map((peer) => ({
1309
+ clientId: peer.clientId,
1310
+ name: peer.userName,
1311
+ color: peer.userColor,
1312
+ self: false
1313
+ }))
1314
+ ]
1315
+ };
1316
+ }
1317
+ function onCollaborationStateChange(session, listener) {
1318
+ const stops = [
1319
+ session.on("status", listener),
1320
+ session.on("synced", listener),
1321
+ session.on("peers", listener)
1322
+ ];
1323
+ return () => {
1324
+ for (const stop of stops) stop();
1325
+ };
1326
+ }
1327
+ function toExternalSession(session) {
1328
+ let snapshot = { status: session.status, synced: false };
1329
+ return {
1330
+ doc: session.doc,
1331
+ awareness: session.awareness,
1332
+ getSnapshot: () => {
1333
+ const status = session.status;
1334
+ const synced = session.synced || session.gate.isOpen();
1335
+ if (snapshot.status !== status || snapshot.synced !== synced) snapshot = { status, synced };
1336
+ return snapshot;
1337
+ },
1338
+ subscribe: (listener) => {
1339
+ const stops = [
1340
+ session.on("status", listener),
1341
+ session.on("synced", listener),
1342
+ session.on("ready", listener)
1343
+ ];
1344
+ return () => {
1345
+ for (const stop of stops) stop();
1346
+ };
1347
+ }
1348
+ };
1349
+ }
1350
+
1351
+ // collab/memory-transport.ts
1352
+ function createMemoryHub(options = {}) {
1353
+ const rooms = /* @__PURE__ */ new Map();
1354
+ let nextId = 0;
1355
+ const deliver = (task) => {
1356
+ if (options.async) queueMicrotask(task);
1357
+ else task();
1358
+ };
1359
+ return {
1360
+ size: (roomId) => rooms.get(roomId)?.size ?? 0,
1361
+ createTransport(roomId) {
1362
+ const id = nextId++;
1363
+ let endpoint = null;
1364
+ const peers = () => {
1365
+ let room = rooms.get(roomId);
1366
+ if (!room) rooms.set(roomId, room = /* @__PURE__ */ new Set());
1367
+ return room;
1368
+ };
1369
+ return {
1370
+ get connected() {
1371
+ return endpoint !== null;
1372
+ },
1373
+ connect(handlers) {
1374
+ if (endpoint) peers().delete(endpoint);
1375
+ const self = { id, handlers };
1376
+ const others = [...peers()];
1377
+ peers().add(self);
1378
+ endpoint = self;
1379
+ deliver(() => {
1380
+ if (endpoint !== self) return;
1381
+ handlers.open();
1382
+ for (const other of others) other.handlers.peer?.();
1383
+ });
1384
+ },
1385
+ send(data) {
1386
+ const self = endpoint;
1387
+ if (!self || options.filter && !options.filter(data, id)) return;
1388
+ for (const other of [...peers()])
1389
+ if (other !== self) deliver(() => other.handlers.message(data.slice()));
1390
+ },
1391
+ disconnect() {
1392
+ const self = endpoint;
1393
+ if (!self) return;
1394
+ endpoint = null;
1395
+ peers().delete(self);
1396
+ self.handlers.close("disconnected");
1397
+ }
1398
+ };
1399
+ }
1400
+ };
1401
+ }
1402
+
1403
+ // collab/package-adapter.ts
1404
+ var DEFAULT_MAX_PACKAGE_BYTES = 32 * 1024 * 1024;
1405
+ function packageAdapter(options = {}) {
1406
+ const name = options.name ?? "package";
1407
+ const maxBytes = options.maxBytes ?? DEFAULT_MAX_PACKAGE_BYTES;
1408
+ const map = (doc) => doc.getMap(name);
1409
+ const check = (bytes) => {
1410
+ if (!(bytes instanceof Uint8Array)) throw new Error("The shared package is not binary data.");
1411
+ if (bytes.byteLength > maxBytes)
1412
+ throw new Error(`The shared package exceeds ${Math.round(maxBytes / 1024 / 1024)} MiB.`);
1413
+ return bytes;
1414
+ };
1415
+ return {
1416
+ isEmpty: (doc) => !(map(doc).get("bytes") instanceof Uint8Array),
1417
+ read: (doc) => {
1418
+ const shared = map(doc);
1419
+ const revision = shared.get("revision");
1420
+ return {
1421
+ bytes: check(shared.get("bytes")).slice(),
1422
+ revision: typeof revision === "number" && Number.isSafeInteger(revision) ? revision : 0
1423
+ };
1424
+ },
1425
+ write: (doc, model, origin) => {
1426
+ const bytes = check(model.bytes);
1427
+ doc.transact(() => {
1428
+ const shared = map(doc);
1429
+ const current = shared.get("revision");
1430
+ const revision = Math.max(model.revision, typeof current === "number" ? current : 0) + 1;
1431
+ shared.set("bytes", bytes.slice());
1432
+ shared.set("revision", revision);
1433
+ }, origin);
1434
+ },
1435
+ observe: (doc, onChange) => {
1436
+ const shared = map(doc);
1437
+ const handler = (event) => {
1438
+ if (event.keysChanged.has("bytes")) onChange(event.transaction.origin);
1439
+ };
1440
+ shared.observe(handler);
1441
+ return () => shared.unobserve(handler);
1442
+ }
1443
+ };
1444
+ }
1445
+
1446
+ // collab/ordering.ts
1447
+ function classifyVersion(messageVersion, currentVersion) {
1448
+ if (!isNonNegativeSafeInteger(messageVersion) || !isNonNegativeSafeInteger(currentVersion))
1449
+ return "invalid";
1450
+ if (messageVersion < currentVersion) return "stale";
1451
+ return messageVersion > currentVersion ? "out-of-order" : "apply";
1452
+ }
1453
+ var BoundedMap = class {
1454
+ constructor(limit) {
1455
+ this.limit = limit;
1456
+ if (!Number.isSafeInteger(limit) || limit < 1) throw new Error("limit must be positive");
1457
+ }
1458
+ limit;
1459
+ entries = /* @__PURE__ */ new Map();
1460
+ get size() {
1461
+ return this.entries.size;
1462
+ }
1463
+ get(key) {
1464
+ return this.entries.get(key);
1465
+ }
1466
+ has(key) {
1467
+ return this.entries.has(key);
1468
+ }
1469
+ set(key, value) {
1470
+ this.entries.delete(key);
1471
+ this.entries.set(key, value);
1472
+ if (this.entries.size > this.limit) {
1473
+ const oldest = this.entries.keys().next();
1474
+ if (!oldest.done) this.entries.delete(oldest.value);
1475
+ }
1476
+ }
1477
+ delete(key) {
1478
+ return this.entries.delete(key);
1479
+ }
1480
+ clear() {
1481
+ this.entries.clear();
1482
+ }
1483
+ };
1484
+ var IdempotencyCache = class {
1485
+ seen;
1486
+ constructor(limit = 5e3) {
1487
+ this.seen = new BoundedMap(limit);
1488
+ }
1489
+ check(clientId, messageId, fingerprint) {
1490
+ const prior = this.seen.get(`${clientId}\0${messageId}`);
1491
+ if (!prior) return { status: "fresh" };
1492
+ return prior.fingerprint === fingerprint ? { status: "duplicate", value: prior.value } : { status: "reused" };
1493
+ }
1494
+ remember(clientId, messageId, fingerprint, value) {
1495
+ this.seen.set(`${clientId}\0${messageId}`, { fingerprint, value });
1496
+ }
1497
+ };
1498
+ var SequenceTracker = class {
1499
+ last;
1500
+ constructor(limit = 200) {
1501
+ this.last = new BoundedMap(limit);
1502
+ }
1503
+ /** Classify without recording; call {@link commit} once the message was actually applied. */
1504
+ classify(peerId, sequence, fingerprint) {
1505
+ if (!isNonNegativeSafeInteger(sequence) || sequence < 1) return "invalid";
1506
+ const previous = this.last.get(peerId);
1507
+ if (!previous || sequence > previous.sequence) return "apply";
1508
+ if (sequence < previous.sequence) return "stale";
1509
+ return previous.fingerprint === fingerprint ? "duplicate" : "invalid";
1510
+ }
1511
+ commit(peerId, sequence, fingerprint) {
1512
+ this.last.set(peerId, { sequence, fingerprint });
1513
+ }
1514
+ forget(peerId) {
1515
+ this.last.delete(peerId);
1516
+ }
1517
+ };
1518
+ function freezeDeep(value) {
1519
+ if (value && typeof value === "object" && !Object.isFrozen(value)) {
1520
+ for (const child of Object.values(value)) freezeDeep(child);
1521
+ Object.freeze(value);
1522
+ }
1523
+ return value;
1524
+ }
1525
+
1405
1526
  exports.BROADCAST_THROTTLE_MS = BROADCAST_THROTTLE_MS;
1406
1527
  exports.BoundedMap = BoundedMap;
1528
+ exports.COLLABORATION_CHANGE_EVENT = COLLABORATION_CHANGE_EVENT;
1529
+ exports.COLLABORATION_OFF_STATE = COLLABORATION_OFF_STATE;
1407
1530
  exports.COLLABORATION_ROLES = COLLABORATION_ROLES;
1408
1531
  exports.COLLAB_LEAVE_MESSAGE = COLLAB_LEAVE_MESSAGE;
1409
1532
  exports.CONNECTION_TIMEOUT_MS = CONNECTION_TIMEOUT_MS;
@@ -1413,6 +1536,7 @@ exports.DEFAULT_MAX_PACKAGE_BYTES = DEFAULT_MAX_PACKAGE_BYTES;
1413
1536
  exports.DEPARTURE_CHANNEL = DEPARTURE_CHANNEL;
1414
1537
  exports.Emitter = Emitter;
1415
1538
  exports.INITIAL_SYNC_GRACE_MS = INITIAL_SYNC_GRACE_MS;
1539
+ exports.INVALID_ROOM_MESSAGE = INVALID_ROOM_MESSAGE;
1416
1540
  exports.IdempotencyCache = IdempotencyCache;
1417
1541
  exports.LEGACY_PPTX_DEPARTURE_CHANNEL = LEGACY_PPTX_DEPARTURE_CHANNEL;
1418
1542
  exports.LEGACY_PPTX_LEAVE_MESSAGE = LEGACY_PPTX_LEAVE_MESSAGE;
@@ -1422,6 +1546,7 @@ exports.MAX_UPDATE_BYTES = MAX_UPDATE_BYTES;
1422
1546
  exports.MESSAGE_AWARENESS = MESSAGE_AWARENESS;
1423
1547
  exports.MESSAGE_QUERY_AWARENESS = MESSAGE_QUERY_AWARENESS;
1424
1548
  exports.MESSAGE_SYNC = MESSAGE_SYNC;
1549
+ exports.NO_BROADCAST_MESSAGE = NO_BROADCAST_MESSAGE;
1425
1550
  exports.PRESENCE_FIELD = PRESENCE_FIELD;
1426
1551
  exports.PRESENCE_HEARTBEAT_MS = PRESENCE_HEARTBEAT_MS;
1427
1552
  exports.STALE_PRESENCE_MS = STALE_PRESENCE_MS;
@@ -1438,6 +1563,7 @@ exports.canWrite = canWrite;
1438
1563
  exports.clampCoordinate = clampCoordinate;
1439
1564
  exports.classifyVersion = classifyVersion;
1440
1565
  exports.clearLocalAwareness = clearLocalAwareness;
1566
+ exports.collaborationStateOf = collaborationStateOf;
1441
1567
  exports.createAssetSync = createAssetSync;
1442
1568
  exports.createBroadcastTransport = createBroadcastTransport;
1443
1569
  exports.createClientId = createClientId;
@@ -1465,6 +1591,8 @@ exports.isValidId = isValidId;
1465
1591
  exports.isValidRoomId = isValidRoomId;
1466
1592
  exports.mergeUpdates = mergeUpdates2;
1467
1593
  exports.observeExternalSession = observeExternalSession;
1594
+ exports.onCollaborationStateChange = onCollaborationStateChange;
1595
+ exports.openCollaborationSession = openCollaborationSession;
1468
1596
  exports.packageAdapter = packageAdapter;
1469
1597
  exports.presenceToCursors = presenceToCursors;
1470
1598
  exports.randomToken = randomToken;
@@ -1483,7 +1611,9 @@ exports.shouldAutoFollowBroadcaster = shouldAutoFollowBroadcaster;
1483
1611
  exports.shouldRoomReplaceLoad = shouldRoomReplaceLoad;
1484
1612
  exports.stripHtmlTags = stripHtmlTags;
1485
1613
  exports.toBase64 = toBase64;
1614
+ exports.toExternalSession = toExternalSession;
1486
1615
  exports.transportProvider = transportProvider;
1487
1616
  exports.validateDisplayName = validateDisplayName;
1488
1617
  exports.validateRoomId = validateRoomId;
1489
1618
  exports.validateUpdate = validateUpdate;
1619
+ exports.webrtcProvider = webrtcProvider;