@svgrid/enterprise 3.0.1 → 3.0.3

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 (445) hide show
  1. package/LICENSE +94 -24
  2. package/README.md +36 -4
  3. package/dist/SvAdvancedFilter.svelte +1 -1
  4. package/dist/SvAlertsManager.svelte +2 -1
  5. package/dist/SvBoard.svelte +2 -1
  6. package/dist/SvExportMenu.svelte +4 -1
  7. package/dist/SvExportMenu.svelte.d.ts +0 -13
  8. package/dist/SvExpressionEditor.svelte +3 -3
  9. package/dist/SvFormulaBar.svelte +680 -0
  10. package/dist/SvFormulaBar.svelte.d.ts +69 -0
  11. package/dist/SvGridAlerts.svelte +49 -9
  12. package/dist/SvGridBoard.svelte +13 -8
  13. package/dist/SvGridBulkEditDrawer.svelte +26 -2
  14. package/dist/SvGridEditPanel.svelte +3 -0
  15. package/dist/SvGridScheduler.svelte +69 -40
  16. package/dist/SvGridSelectionBar.svelte +10 -3
  17. package/dist/SvPivotDesigner.svelte +263 -54
  18. package/dist/SvPivotDesigner.svelte.d.ts +27 -20
  19. package/dist/SvRibbonIcon.svelte +46 -0
  20. package/dist/SvRibbonIcon.svelte.d.ts +17 -0
  21. package/dist/SvSchemaChart.svelte +4 -2
  22. package/dist/SvSheet.svelte +7914 -0
  23. package/dist/SvSheet.svelte.d.ts +215 -0
  24. package/dist/SvSheetChartSetup.svelte +151 -0
  25. package/dist/SvSheetChartSetup.svelte.d.ts +18 -0
  26. package/dist/SvSheetComment.svelte +283 -0
  27. package/dist/SvSheetComment.svelte.d.ts +22 -0
  28. package/dist/SvSheetConditionalFormat.svelte +159 -0
  29. package/dist/SvSheetConditionalFormat.svelte.d.ts +14 -0
  30. package/dist/SvSheetDataValidation.svelte +273 -0
  31. package/dist/SvSheetDataValidation.svelte.d.ts +14 -0
  32. package/dist/SvSheetEditRanges.svelte +217 -0
  33. package/dist/SvSheetEditRanges.svelte.d.ts +15 -0
  34. package/dist/SvSheetErrors.svelte +125 -0
  35. package/dist/SvSheetErrors.svelte.d.ts +20 -0
  36. package/dist/SvSheetEvaluate.svelte +133 -0
  37. package/dist/SvSheetEvaluate.svelte.d.ts +15 -0
  38. package/dist/SvSheetFilterMenu.svelte +320 -0
  39. package/dist/SvSheetFilterMenu.svelte.d.ts +22 -0
  40. package/dist/SvSheetFindReplace.svelte +132 -0
  41. package/dist/SvSheetFindReplace.svelte.d.ts +10 -0
  42. package/dist/SvSheetFormatCells.svelte +465 -0
  43. package/dist/SvSheetFormatCells.svelte.d.ts +17 -0
  44. package/dist/SvSheetGoalSeek.svelte +145 -0
  45. package/dist/SvSheetGoalSeek.svelte.d.ts +12 -0
  46. package/dist/SvSheetInsertFunction.svelte +149 -0
  47. package/dist/SvSheetInsertFunction.svelte.d.ts +8 -0
  48. package/dist/SvSheetIteration.svelte +81 -0
  49. package/dist/SvSheetIteration.svelte.d.ts +10 -0
  50. package/dist/SvSheetLink.svelte +99 -0
  51. package/dist/SvSheetLink.svelte.d.ts +17 -0
  52. package/dist/SvSheetListPicker.svelte +91 -0
  53. package/dist/SvSheetListPicker.svelte.d.ts +10 -0
  54. package/dist/SvSheetManageRules.svelte +187 -0
  55. package/dist/SvSheetManageRules.svelte.d.ts +16 -0
  56. package/dist/SvSheetNameManager.svelte +227 -0
  57. package/dist/SvSheetNameManager.svelte.d.ts +11 -0
  58. package/dist/SvSheetPageSetup.svelte +159 -0
  59. package/dist/SvSheetPageSetup.svelte.d.ts +13 -0
  60. package/dist/SvSheetPasteSpecial.svelte +107 -0
  61. package/dist/SvSheetPasteSpecial.svelte.d.ts +12 -0
  62. package/dist/SvSheetPivot.svelte +220 -0
  63. package/dist/SvSheetPivot.svelte.d.ts +21 -0
  64. package/dist/SvSheetProtectSheet.svelte +81 -0
  65. package/dist/SvSheetProtectSheet.svelte.d.ts +11 -0
  66. package/dist/SvSheetRemoveDuplicates.svelte +152 -0
  67. package/dist/SvSheetRemoveDuplicates.svelte.d.ts +12 -0
  68. package/dist/SvSheetRibbon.svelte +1254 -0
  69. package/dist/SvSheetRibbon.svelte.d.ts +34 -0
  70. package/dist/SvSheetSizeDialog.svelte +60 -0
  71. package/dist/SvSheetSizeDialog.svelte.d.ts +11 -0
  72. package/dist/SvSheetSort.svelte +218 -0
  73. package/dist/SvSheetSort.svelte.d.ts +28 -0
  74. package/dist/SvSheetSparklines.svelte +135 -0
  75. package/dist/SvSheetSparklines.svelte.d.ts +14 -0
  76. package/dist/SvSheetTable.svelte +160 -0
  77. package/dist/SvSheetTable.svelte.d.ts +24 -0
  78. package/dist/SvSheetTabs.svelte +571 -0
  79. package/dist/SvSheetTabs.svelte.d.ts +50 -0
  80. package/dist/SvSheetTabs.test-harness.svelte.d.ts +17 -0
  81. package/dist/SvSheetTabs.test-harness.svelte.js +22 -0
  82. package/dist/SvSheetTextToColumns.svelte +172 -0
  83. package/dist/SvSheetTextToColumns.svelte.d.ts +13 -0
  84. package/dist/SvSheetValidationAlert.svelte +85 -0
  85. package/dist/SvSheetValidationAlert.svelte.d.ts +15 -0
  86. package/dist/advanced-filter-enable.js +1 -1
  87. package/dist/alerts/alert-engine.d.ts +6 -0
  88. package/dist/alerts/alert-engine.js +21 -4
  89. package/dist/alerts/alert-formats.js +2 -0
  90. package/dist/alerts/alert-types.d.ts +1 -1
  91. package/dist/alerts.d.ts +1 -1
  92. package/dist/alerts.js +2 -2
  93. package/dist/board.js +2 -2
  94. package/dist/bulk-edit.d.ts +3 -1
  95. package/dist/bulk-edit.js +1 -1
  96. package/dist/cdn/svgrid-enterprise.svelte-external.js +43538 -6539
  97. package/dist/designer/assets/GridMenus-8gTNssgV.js +8 -0
  98. package/dist/designer/assets/SvChartMenu-BDoeqGz6.js +1 -0
  99. package/dist/designer/assets/SvChartMenu-BYO9cYdy.css +1 -0
  100. package/dist/designer/assets/SvDateRangeInput-BBRzrQeg.js +1 -0
  101. package/dist/designer/assets/SvDateTimePicker-DCPg7WGN.js +1 -0
  102. package/dist/designer/assets/SvGridCellEditor-DMoWJjEI.js +4 -0
  103. package/dist/designer/assets/SvGridChart-BgLuPO7I.css +1 -0
  104. package/dist/designer/assets/SvGridChart-Cy1ATrWh.js +3 -0
  105. package/dist/designer/assets/SvGridChartBuilder-08YWWeqY.css +1 -0
  106. package/dist/designer/assets/SvGridChartBuilder-eQ3mn0L9.js +1 -0
  107. package/dist/designer/assets/SvGridChartPanel-4Pc8y5yO.css +1 -0
  108. package/dist/designer/assets/SvGridChartPanel-CATdVc9X.js +4 -0
  109. package/dist/designer/assets/{SvGridChartView-DUc-1RUf.css → SvGridChartView-7msfnWZT.css} +1 -1
  110. package/dist/designer/assets/SvGridChartView-CmsZtCED.js +1 -0
  111. package/dist/designer/assets/SvGridDropdown-Cjz0H-fI.js +1 -0
  112. package/dist/designer/assets/SvListBox-BDS66lmZ.js +110 -0
  113. package/dist/designer/assets/SvMenuList-DJ47ba1h.css +1 -0
  114. package/dist/designer/assets/SvMenuList-Dgq2D5VN.js +1 -0
  115. package/dist/designer/assets/SvTabs-2mHC6oaz.js +1 -0
  116. package/dist/designer/assets/SvTabs-DKmwb5p1.css +1 -0
  117. package/dist/designer/assets/cell-formatting-BbubJTVz.js +1 -0
  118. package/dist/designer/assets/chart-Cn7MnNqA.js +1 -0
  119. package/dist/designer/assets/chart-export-B6bkQ3X8.js +11 -0
  120. package/dist/designer/assets/chart-export-pdf-BbA28-gt.js +11 -0
  121. package/dist/designer/assets/chart-panel-messages-Dz7PTIqT.js +1 -0
  122. package/dist/designer/assets/chart-summary-BD1qYB2R.js +1 -0
  123. package/dist/designer/assets/chart-trend-B8xr5LuD.js +1 -0
  124. package/dist/designer/assets/chart-validate-BMqM-qkF.js +1 -0
  125. package/dist/designer/assets/column-resize-BYDzR1Ve.js +1 -0
  126. package/dist/designer/assets/date-format-B8JbEtIG.js +1 -0
  127. package/dist/designer/assets/date-format-DKS-z0xS.css +1 -0
  128. package/dist/designer/assets/{dismissable-BO547MH9.js → dismissable-ChWRPkoa.js} +1 -1
  129. package/dist/designer/assets/editor-contract-Bpoa7A5g.js +1 -0
  130. package/dist/designer/assets/{export-format-D-eP4b2l.js → export-format-DGckmgKr.js} +1 -1
  131. package/dist/designer/assets/focus-trap-V2-6Fy9I.js +1 -0
  132. package/dist/designer/assets/{index-C_a9Cj8Y.js → index-D5bVbuzI.js} +318 -315
  133. package/dist/designer/assets/index-_JVFxt02.css +1 -0
  134. package/dist/designer/assets/list-option-BP_dWS66.js +1 -0
  135. package/dist/designer/assets/row-resize-BInFWCpr.js +1 -0
  136. package/dist/designer/assets/server-block-cache-CXJKkJpy.js +1 -0
  137. package/dist/designer/assets/src-CITpcm6b.js +1 -0
  138. package/dist/designer/assets/src-DUQ4xE3x.js +58 -0
  139. package/dist/designer/assets/validate-C3B8QKsM.js +1 -0
  140. package/dist/designer/index.html +29 -19
  141. package/dist/export-pdf.d.ts +164 -0
  142. package/dist/export-pdf.js +346 -15
  143. package/dist/export.js +25 -10
  144. package/dist/gantt/SvGridGantt.svelte +2890 -0
  145. package/dist/gantt/SvGridGantt.svelte.d.ts +30 -0
  146. package/dist/gantt/gantt-config.d.ts +73 -0
  147. package/dist/gantt/gantt-config.js +1 -0
  148. package/dist/gantt/gantt-critical-path.d.ts +67 -0
  149. package/dist/gantt/gantt-critical-path.js +207 -0
  150. package/dist/gantt/gantt-model.d.ts +257 -0
  151. package/dist/gantt/gantt-model.js +651 -0
  152. package/dist/gantt/gantt-resources.d.ts +59 -0
  153. package/dist/gantt/gantt-resources.js +71 -0
  154. package/dist/gantt/gantt.d.ts +7 -0
  155. package/dist/gantt/gantt.js +36 -0
  156. package/dist/gantt/index.d.ts +15 -0
  157. package/dist/gantt/index.js +22 -0
  158. package/dist/gantt/timeline-arrows.d.ts +102 -0
  159. package/dist/gantt/timeline-arrows.js +181 -0
  160. package/dist/import.d.ts +2 -2
  161. package/dist/import.js +1 -1
  162. package/dist/index.d.ts +93 -3
  163. package/dist/index.js +107 -3
  164. package/dist/install.js +13 -1
  165. package/dist/license-core.d.ts +17 -1
  166. package/dist/license-core.js +16 -5
  167. package/dist/license.d.ts +18 -2
  168. package/dist/license.js +71 -6
  169. package/dist/node/studio.js +203 -9
  170. package/dist/pivot-chart.d.ts +25 -1
  171. package/dist/pivot-chart.js +25 -69
  172. package/dist/pivot-enable.js +2 -2
  173. package/dist/scheduler-dependencies.d.ts +35 -0
  174. package/dist/scheduler-dependencies.js +36 -1
  175. package/dist/scheduler.js +2 -2
  176. package/dist/selection-bar.js +2 -2
  177. package/dist/server/SvGroupCell.svelte +213 -0
  178. package/dist/server/SvGroupCell.svelte.d.ts +62 -0
  179. package/dist/server/SvRowGroupPanel.svelte +322 -0
  180. package/dist/server/SvRowGroupPanel.svelte.d.ts +37 -0
  181. package/dist/server/enable.d.ts +17 -0
  182. package/dist/server/enable.js +49 -0
  183. package/dist/server/index.d.ts +22 -0
  184. package/dist/server/index.js +24 -0
  185. package/dist/server/messages.d.ts +45 -0
  186. package/dist/server/messages.js +35 -0
  187. package/dist/server/server-group-model.d.ts +104 -0
  188. package/dist/server/server-group-model.js +272 -0
  189. package/dist/server/server-pivot.d.ts +46 -0
  190. package/dist/server/server-pivot.js +57 -0
  191. package/dist/server/server-row-model.d.ts +547 -0
  192. package/dist/server/server-row-model.js +1551 -0
  193. package/dist/server/server-selection.d.ts +99 -0
  194. package/dist/server/server-selection.js +215 -0
  195. package/dist/server/svgrid-adapter.d.ts +155 -0
  196. package/dist/server/svgrid-adapter.js +202 -0
  197. package/dist/sheet/address.d.ts +43 -0
  198. package/dist/sheet/address.js +81 -0
  199. package/dist/sheet/ast.d.ts +138 -0
  200. package/dist/sheet/ast.js +70 -0
  201. package/dist/sheet/auto-filter.d.ts +120 -0
  202. package/dist/sheet/auto-filter.js +295 -0
  203. package/dist/sheet/autocomplete.d.ts +51 -0
  204. package/dist/sheet/autocomplete.js +248 -0
  205. package/dist/sheet/cell-images.d.ts +39 -0
  206. package/dist/sheet/cell-images.js +90 -0
  207. package/dist/sheet/cell-types.d.ts +58 -0
  208. package/dist/sheet/cell-types.js +96 -0
  209. package/dist/sheet/coerce.d.ts +71 -0
  210. package/dist/sheet/coerce.js +289 -0
  211. package/dist/sheet/commands.d.ts +89 -0
  212. package/dist/sheet/commands.js +230 -0
  213. package/dist/sheet/comments.d.ts +63 -0
  214. package/dist/sheet/comments.js +131 -0
  215. package/dist/sheet/conditional-formats.d.ts +167 -0
  216. package/dist/sheet/conditional-formats.js +341 -0
  217. package/dist/sheet/csv.d.ts +32 -0
  218. package/dist/sheet/csv.js +158 -0
  219. package/dist/sheet/culture.d.ts +87 -0
  220. package/dist/sheet/culture.js +247 -0
  221. package/dist/sheet/delta.d.ts +102 -0
  222. package/dist/sheet/delta.js +203 -0
  223. package/dist/sheet/deps.d.ts +104 -0
  224. package/dist/sheet/deps.js +274 -0
  225. package/dist/sheet/document.d.ts +252 -0
  226. package/dist/sheet/document.js +465 -0
  227. package/dist/sheet/edit-keys.d.ts +14 -0
  228. package/dist/sheet/edit-keys.js +40 -0
  229. package/dist/sheet/engine.d.ts +67 -0
  230. package/dist/sheet/engine.js +19 -0
  231. package/dist/sheet/entry.d.ts +35 -0
  232. package/dist/sheet/entry.js +226 -0
  233. package/dist/sheet/error-check.d.ts +49 -0
  234. package/dist/sheet/error-check.js +83 -0
  235. package/dist/sheet/evaluate-steps.d.ts +48 -0
  236. package/dist/sheet/evaluate-steps.js +196 -0
  237. package/dist/sheet/evaluate.d.ts +128 -0
  238. package/dist/sheet/evaluate.js +1049 -0
  239. package/dist/sheet/filter-files.d.ts +37 -0
  240. package/dist/sheet/filter-files.js +465 -0
  241. package/dist/sheet/find-replace.d.ts +62 -0
  242. package/dist/sheet/find-replace.js +152 -0
  243. package/dist/sheet/format-store.d.ts +114 -0
  244. package/dist/sheet/format-store.js +243 -0
  245. package/dist/sheet/freeze.d.ts +54 -0
  246. package/dist/sheet/freeze.js +58 -0
  247. package/dist/sheet/from-rows.d.ts +14 -0
  248. package/dist/sheet/from-rows.js +50 -0
  249. package/dist/sheet/function-catalog.d.ts +10 -0
  250. package/dist/sheet/function-catalog.js +385 -0
  251. package/dist/sheet/functions.d.ts +28 -0
  252. package/dist/sheet/functions.js +634 -0
  253. package/dist/sheet/goal-seek.d.ts +73 -0
  254. package/dist/sheet/goal-seek.js +153 -0
  255. package/dist/sheet/index.d.ts +80 -0
  256. package/dist/sheet/index.js +80 -0
  257. package/dist/sheet/links.d.ts +57 -0
  258. package/dist/sheet/links.js +174 -0
  259. package/dist/sheet/merges.d.ts +71 -0
  260. package/dist/sheet/merges.js +137 -0
  261. package/dist/sheet/messages.d.ts +778 -0
  262. package/dist/sheet/messages.js +806 -0
  263. package/dist/sheet/names.d.ts +31 -0
  264. package/dist/sheet/names.js +87 -0
  265. package/dist/sheet/navigate.d.ts +52 -0
  266. package/dist/sheet/navigate.js +135 -0
  267. package/dist/sheet/number-format.d.ts +110 -0
  268. package/dist/sheet/number-format.js +905 -0
  269. package/dist/sheet/objects.d.ts +106 -0
  270. package/dist/sheet/objects.js +149 -0
  271. package/dist/sheet/ods-document.d.ts +44 -0
  272. package/dist/sheet/ods-document.js +1275 -0
  273. package/dist/sheet/open-file.d.ts +26 -0
  274. package/dist/sheet/open-file.js +56 -0
  275. package/dist/sheet/outline.d.ts +82 -0
  276. package/dist/sheet/outline.js +228 -0
  277. package/dist/sheet/packs/array.d.ts +16 -0
  278. package/dist/sheet/packs/array.js +172 -0
  279. package/dist/sheet/packs/database.d.ts +42 -0
  280. package/dist/sheet/packs/database.js +142 -0
  281. package/dist/sheet/packs/engineering.d.ts +2 -0
  282. package/dist/sheet/packs/engineering.js +296 -0
  283. package/dist/sheet/packs/financial.d.ts +5 -0
  284. package/dist/sheet/packs/financial.js +220 -0
  285. package/dist/sheet/packs/math-stats.d.ts +2 -0
  286. package/dist/sheet/packs/math-stats.js +372 -0
  287. package/dist/sheet/packs/special.d.ts +44 -0
  288. package/dist/sheet/packs/special.js +187 -0
  289. package/dist/sheet/packs/stats-dist.d.ts +2 -0
  290. package/dist/sheet/packs/stats-dist.js +785 -0
  291. package/dist/sheet/packs/text-date.d.ts +2 -0
  292. package/dist/sheet/packs/text-date.js +332 -0
  293. package/dist/sheet/packs/trig.d.ts +2 -0
  294. package/dist/sheet/packs/trig.js +73 -0
  295. package/dist/sheet/page-setup.d.ts +73 -0
  296. package/dist/sheet/page-setup.js +73 -0
  297. package/dist/sheet/palette.d.ts +19 -0
  298. package/dist/sheet/palette.js +84 -0
  299. package/dist/sheet/parse.d.ts +13 -0
  300. package/dist/sheet/parse.js +140 -0
  301. package/dist/sheet/paste-special.d.ts +186 -0
  302. package/dist/sheet/paste-special.js +601 -0
  303. package/dist/sheet/pivot-range.d.ts +160 -0
  304. package/dist/sheet/pivot-range.js +333 -0
  305. package/dist/sheet/presence.d.ts +73 -0
  306. package/dist/sheet/presence.js +79 -0
  307. package/dist/sheet/print.d.ts +104 -0
  308. package/dist/sheet/print.js +169 -0
  309. package/dist/sheet/protection.d.ts +75 -0
  310. package/dist/sheet/protection.js +101 -0
  311. package/dist/sheet/rects.d.ts +45 -0
  312. package/dist/sheet/rects.js +112 -0
  313. package/dist/sheet/refs.d.ts +130 -0
  314. package/dist/sheet/refs.js +413 -0
  315. package/dist/sheet/ribbon-icons.d.ts +31 -0
  316. package/dist/sheet/ribbon-icons.js +536 -0
  317. package/dist/sheet/ribbon.d.ts +173 -0
  318. package/dist/sheet/ribbon.js +1054 -0
  319. package/dist/sheet/sheet-kinds.d.ts +74 -0
  320. package/dist/sheet/sheet-kinds.js +91 -0
  321. package/dist/sheet/shortcuts.d.ts +174 -0
  322. package/dist/sheet/shortcuts.js +674 -0
  323. package/dist/sheet/sort.d.ts +51 -0
  324. package/dist/sheet/sort.js +107 -0
  325. package/dist/sheet/sparklines.d.ts +111 -0
  326. package/dist/sheet/sparklines.js +204 -0
  327. package/dist/sheet/structure.d.ts +87 -0
  328. package/dist/sheet/structure.js +166 -0
  329. package/dist/sheet/table-styles.d.ts +74 -0
  330. package/dist/sheet/table-styles.js +152 -0
  331. package/dist/sheet/tables.d.ts +89 -0
  332. package/dist/sheet/tables.js +178 -0
  333. package/dist/sheet/tokenize.d.ts +71 -0
  334. package/dist/sheet/tokenize.js +355 -0
  335. package/dist/sheet/transforms.d.ts +76 -0
  336. package/dist/sheet/transforms.js +154 -0
  337. package/dist/sheet/validation.d.ts +108 -0
  338. package/dist/sheet/validation.js +278 -0
  339. package/dist/sheet/workbook.d.ts +217 -0
  340. package/dist/sheet/workbook.js +1120 -0
  341. package/dist/sheet/xls-cfb.d.ts +32 -0
  342. package/dist/sheet/xls-cfb.js +290 -0
  343. package/dist/sheet/xls-document.d.ts +10 -0
  344. package/dist/sheet/xls-document.js +1243 -0
  345. package/dist/sheet/xls-formula.d.ts +40 -0
  346. package/dist/sheet/xls-formula.js +569 -0
  347. package/dist/sheet/xlsx-document.d.ts +108 -0
  348. package/dist/sheet/xlsx-document.js +1849 -0
  349. package/dist/sheet/xlsx-drawing.d.ts +99 -0
  350. package/dist/sheet/xlsx-drawing.js +420 -0
  351. package/dist/sheet-enable.d.ts +6 -0
  352. package/dist/sheet-enable.js +45 -0
  353. package/dist/sheet-text.d.ts +7 -0
  354. package/dist/sheet-text.js +29 -0
  355. package/dist/sources/auth-supabase.js +2 -2
  356. package/dist/sources/realtime-supabase.js +2 -2
  357. package/dist/sources/rest.d.ts +6 -2
  358. package/dist/sources/rest.js +42 -7
  359. package/dist/sources/supabase.d.ts +10 -1
  360. package/dist/sources/supabase.js +73 -40
  361. package/dist/studio/emit-project.js +14 -1
  362. package/dist/studio/index.js +1 -1
  363. package/dist/studio/project.d.ts +11 -2
  364. package/dist/studio/project.js +5 -2
  365. package/dist/studio/ui-components.generated.js +170 -3
  366. package/dist/sveltekit/in-memory.d.ts +2 -2
  367. package/dist/sveltekit/in-memory.js +125 -4
  368. package/dist/sveltekit/index.d.ts +1 -1
  369. package/dist/sveltekit/index.js +1 -1
  370. package/dist/sveltekit/query-plan.d.ts +50 -4
  371. package/dist/sveltekit/query-plan.js +25 -3
  372. package/dist/sveltekit/sql-source.d.ts +6 -0
  373. package/dist/sveltekit/sql-source.js +34 -6
  374. package/dist/sveltekit/sql.d.ts +31 -0
  375. package/dist/sveltekit/sql.js +135 -25
  376. package/dist/sveltekit/transport.d.ts +10 -2
  377. package/dist/sveltekit/transport.js +30 -6
  378. package/dist/upgrade-prompt.d.ts +1 -1
  379. package/dist/version.d.ts +1 -1
  380. package/dist/version.js +1 -1
  381. package/dist/watermark.js +35 -2
  382. package/dist/wc/GridMenus-By9vPuq0.js +1088 -0
  383. package/dist/wc/SvChartMenu-CQNrQGT2.js +308 -0
  384. package/dist/wc/SvDateRangeInput-DR6m7bSM.js +199 -0
  385. package/dist/wc/SvDateTimePicker-D-vRnaMo.js +771 -0
  386. package/dist/wc/SvField-B_kurx_P.js +149 -0
  387. package/dist/wc/SvGrid.helpers-BdVDtjUm.js +135 -0
  388. package/dist/wc/SvGridCellEditor-Bnf1Kr5C.js +560 -0
  389. package/dist/wc/SvGridChart-BqUJh2pG.js +3572 -0
  390. package/dist/wc/SvGridChartBuilder-CGycC5cn.js +988 -0
  391. package/dist/wc/SvGridChartPanel-CRnizsHD.js +1746 -0
  392. package/dist/wc/SvGridChartView-D1pa_xMy.js +47 -0
  393. package/dist/wc/SvGridDropdown-45WsObLL.js +259 -0
  394. package/dist/wc/SvModal-DrfOYYyX.js +189 -0
  395. package/dist/wc/cell-formatting-CBfgahv1.js +86 -0
  396. package/dist/wc/chart-6OXlybVT.js +4341 -0
  397. package/dist/wc/chart-export-CeSADGfi.js +135 -0
  398. package/dist/wc/chart-export-pdf-BGko7MER.js +104 -0
  399. package/dist/wc/chart-summary-2m3ia1-n.js +137 -0
  400. package/dist/wc/chart-trend-CQOQtTMl.js +50 -0
  401. package/dist/wc/chart-validate-CD6ptiwg.js +180 -0
  402. package/dist/wc/client-DQIzjDBG.js +3064 -0
  403. package/dist/wc/column-resize-DUPgynvc.js +101 -0
  404. package/dist/wc/date-format-DS-z_h9v.js +1130 -0
  405. package/dist/wc/dismissable-CQ6XFXsk.js +45 -0
  406. package/dist/wc/editor-contract-peBDxir_.js +22 -0
  407. package/dist/wc/editor-registry-DxGKqcvx.js +24 -0
  408. package/dist/wc/focus-trap-Dbb2tJxb.js +65 -0
  409. package/dist/wc/list-option-DrRyivWp.js +82 -0
  410. package/dist/wc/popover-WsGlvtQv.js +69 -0
  411. package/dist/wc/positioning-BiKLfu1E.js +112 -0
  412. package/dist/wc/react.d.ts +41 -0
  413. package/dist/wc/react.js +90 -0
  414. package/dist/wc/rolldown-runtime-Dy4uBu1J.js +11 -0
  415. package/dist/wc/row-drag-touch-CycRR65n.js +93 -0
  416. package/dist/wc/row-resize-limG_N1z.js +111 -0
  417. package/dist/wc/sv-sheet-element.d.ts +97 -0
  418. package/dist/wc/sv-sheet-element.js +44213 -0
  419. package/dist/wc/svelte-virtualizer.svelte-CXtQy2TQ.js +530 -0
  420. package/dist/wc/validate-BqDthkNr.js +88 -0
  421. package/dist/wc/vue.d.ts +31 -0
  422. package/dist/wc/vue.js +75 -0
  423. package/package.json +36 -6
  424. package/dist/designer/assets/GridMenus-B1JtIN21.js +0 -8
  425. package/dist/designer/assets/SvDateRangeInput-CjO7nn_x.js +0 -1
  426. package/dist/designer/assets/SvDateTimePicker-ByBD_ov6.js +0 -1
  427. package/dist/designer/assets/SvField-YDLipR6O.css +0 -1
  428. package/dist/designer/assets/SvField-cj1PFNgZ.js +0 -1
  429. package/dist/designer/assets/SvGridCellEditor-0W1L2hJ1.js +0 -2
  430. package/dist/designer/assets/SvGridChart-DBOR4xcz.js +0 -2
  431. package/dist/designer/assets/SvGridChart-fkMWeh1J.css +0 -1
  432. package/dist/designer/assets/SvGridChartPanel-symrhNnR.js +0 -11
  433. package/dist/designer/assets/SvGridChartView-BmRxq6mU.js +0 -1
  434. package/dist/designer/assets/SvGridDropdown-Bb3HH2Aj.js +0 -1
  435. package/dist/designer/assets/SvListBox-1oUF6Iav.js +0 -110
  436. package/dist/designer/assets/cell-formatting-wr5wm7US.js +0 -1
  437. package/dist/designer/assets/chart-DXFganU8.js +0 -1
  438. package/dist/designer/assets/column-resize-C_inr5zT.js +0 -1
  439. package/dist/designer/assets/date-format-DGagAqRc.css +0 -1
  440. package/dist/designer/assets/date-format-onlYDsrY.js +0 -1
  441. package/dist/designer/assets/easing-zaypKrr0.js +0 -3
  442. package/dist/designer/assets/index-k2stW6L8.css +0 -1
  443. package/dist/designer/assets/row-resize-B0FWHcNr.js +0 -1
  444. package/dist/designer/assets/src-D9p27OGC.js +0 -58
  445. package/dist/designer/assets/validate-h-aslRV9.js +0 -1
@@ -0,0 +1,274 @@
1
+ /**
2
+ * Dependency graph, so a recalc costs what the edit actually affects.
3
+ *
4
+ * The demo engines call `computeSheet`, which resolves every cell on every
5
+ * keystroke. On a small budget sheet nobody notices; on demo 211's 360-row
6
+ * amortisation schedule, typing one digit in an input cell walks every cell in
7
+ * the sheet and re-parses every formula among them.
8
+ *
9
+ * This tracks which cells each formula reads, inverts that into "who reads
10
+ * me", and walks forward from an edit in topological order.
11
+ *
12
+ * Cycles are reported rather than thrown. A cycle is a normal thing to type on
13
+ * the way to something correct, and every cell in one shows #CYCLE! while the
14
+ * rest of the sheet keeps working.
15
+ */
16
+ import { visit } from './ast.js';
17
+ /**
18
+ * Cells are keyed "row col sheet", in that order deliberately.
19
+ *
20
+ * Row and column are numbers and contain no separator, so the first two fields
21
+ * are unambiguous and EVERYTHING after the second space is the sheet name.
22
+ * Putting the sheet first would let a name like `Price list` collide with a
23
+ * different cell, and a ':' or '!' separator has the same problem the moment
24
+ * someone names a sheet after a range.
25
+ */
26
+ export function cellKey(sheet, row, col) {
27
+ return `${row} ${col} ${sheet ?? ''}`;
28
+ }
29
+ export function parseCellKey(key) {
30
+ const firstGap = key.indexOf(' ');
31
+ const secondGap = key.indexOf(' ', firstGap + 1);
32
+ const sheet = key.slice(secondGap + 1);
33
+ return {
34
+ sheet: sheet === '' ? null : sheet,
35
+ row: Number(key.slice(0, firstGap)),
36
+ col: Number(key.slice(firstGap + 1, secondGap)),
37
+ };
38
+ }
39
+ /**
40
+ * Every cell a formula reads. A range contributes each cell inside it, which
41
+ * is why `lastRow` is needed: a whole-column reference has no upper bound of
42
+ * its own.
43
+ */
44
+ export function precedentsOf(ast, self, lastRow,
45
+ /**
46
+ * The reference behind a defined name. Without it a formula that reads
47
+ * `=Subtotal*Tax` records no precedents at all, so editing the cell behind
48
+ * `Tax` leaves the formula showing its old value until something else
49
+ * forces a recalculation.
50
+ */
51
+ resolveName,
52
+ /**
53
+ * The rectangle behind a structured reference (`Orders[Amount]`,
54
+ * `[@Qty]`). Without it a formula over a table records no precedents, so
55
+ * editing a cell in the table leaves every total reading it stale until
56
+ * something forces a full recalculation.
57
+ */
58
+ resolveTable,
59
+ /**
60
+ * The rectangle a spilled-range operator (`A1#`) currently covers. The
61
+ * anchor cell is always recorded regardless, so a formula reading `A1#`
62
+ * recalculates whenever the array is re-typed and picks up the new extent;
63
+ * the covered cells are added on top so a change anywhere in the spill
64
+ * reaches it too.
65
+ */
66
+ resolveSpill,
67
+ /** The sheets a 3D reference spans, so it recalculates when the cell on any
68
+ * of them changes. */
69
+ resolveSheets, depth = 0) {
70
+ const out = [];
71
+ visit(ast, (n) => {
72
+ if (n.k === 'name') {
73
+ // A name defined as another name is followed; a circular chain is cut
74
+ // after a few hops rather than recursing forever.
75
+ const target = depth < 8 ? resolveName?.(n.name) : null;
76
+ if (target)
77
+ out.push(...precedentsOf(target, self, lastRow, resolveName, resolveTable, resolveSpill, resolveSheets, depth + 1));
78
+ return;
79
+ }
80
+ if (n.k === 'ref3d') {
81
+ const sheets = resolveSheets?.(n.sheetFrom, n.sheetTo);
82
+ if (!sheets)
83
+ return;
84
+ const r1 = Math.min(n.from.row ?? 0, n.to.row ?? 0);
85
+ const r2 = Math.max(n.from.row ?? 0, n.to.row ?? 0);
86
+ const c1 = Math.min(n.from.col, n.to.col);
87
+ const c2 = Math.max(n.from.col, n.to.col);
88
+ for (const s of sheets) {
89
+ for (let r = r1; r <= r2; r += 1) {
90
+ for (let c = c1; c <= c2; c += 1)
91
+ out.push(cellKey(s, r, c));
92
+ }
93
+ }
94
+ return;
95
+ }
96
+ if (n.k === 'spill') {
97
+ // The anchor always: retyping the array changes the anchor cell, so
98
+ // this makes the reader recalculate and re-derive the extent below.
99
+ out.push(cellKey(n.ref.sheet ?? self.sheet, n.ref.row ?? 0, n.ref.col));
100
+ const rect = resolveSpill?.(n);
101
+ if (rect) {
102
+ for (let r = rect.r1; r <= rect.r2; r += 1) {
103
+ for (let c = rect.c1; c <= rect.c2; c += 1)
104
+ out.push(cellKey(rect.sheet ?? self.sheet, r, c));
105
+ }
106
+ }
107
+ return;
108
+ }
109
+ if (n.k === 'table') {
110
+ const rect = resolveTable?.(n);
111
+ if (!rect)
112
+ return;
113
+ for (let r = rect.firstRow; r <= rect.lastRow; r += 1) {
114
+ for (let c = rect.firstCol; c <= rect.lastCol; c += 1)
115
+ out.push(cellKey(rect.sheet, r, c));
116
+ }
117
+ return;
118
+ }
119
+ if (n.k === 'ref' && n.ref.row !== null) {
120
+ out.push(cellKey(n.ref.sheet ?? self.sheet, n.ref.row, n.ref.col));
121
+ return;
122
+ }
123
+ if (n.k === 'range') {
124
+ const sheet = n.from.sheet ?? n.to.sheet ?? self.sheet;
125
+ const r1 = Math.min(n.from.row ?? 0, n.to.row ?? n.from.row ?? 0);
126
+ const r2 = n.to.row === null || n.from.row === null
127
+ ? lastRow(sheet)
128
+ : Math.max(n.from.row, n.to.row);
129
+ const c1 = Math.min(n.from.col, n.to.col);
130
+ const c2 = Math.max(n.from.col, n.to.col);
131
+ for (let r = r1; r <= r2; r += 1) {
132
+ for (let c = c1; c <= c2; c += 1)
133
+ out.push(cellKey(sheet, r, c));
134
+ }
135
+ }
136
+ });
137
+ return out;
138
+ }
139
+ /**
140
+ * Functions whose result can change without any precedent changing: a
141
+ * reference built from text, a range built from arithmetic, the clock, a
142
+ * random number. A cell holding one is recomputed on every edit, as Excel
143
+ * recomputes its volatile cells, rather than trusting the graph.
144
+ */
145
+ export const VOLATILE_FUNCTIONS = new Set(['INDIRECT', 'OFFSET', 'RAND', 'RANDBETWEEN', 'NOW', 'TODAY']);
146
+ export function isVolatile(ast) {
147
+ let found = false;
148
+ visit(ast, (n) => {
149
+ if (n.k === 'fn' && VOLATILE_FUNCTIONS.has(n.name))
150
+ found = true;
151
+ });
152
+ return found;
153
+ }
154
+ export function createDependencyGraph() {
155
+ /** cell -> what it reads. */
156
+ const precedents = new Map();
157
+ /** cell -> who reads it. The index that makes dirtyFrom cheap. */
158
+ const dependents = new Map();
159
+ function unlink(cell) {
160
+ const old = precedents.get(cell);
161
+ if (!old)
162
+ return;
163
+ for (const p of old) {
164
+ const set = dependents.get(p);
165
+ if (!set)
166
+ continue;
167
+ set.delete(cell);
168
+ if (set.size === 0)
169
+ dependents.delete(p);
170
+ }
171
+ precedents.delete(cell);
172
+ }
173
+ return {
174
+ setPrecedents(cell, next) {
175
+ unlink(cell);
176
+ if (!next || next.length === 0)
177
+ return;
178
+ // A self-reference is a cycle of one; it is kept so `cycles()` sees it.
179
+ const set = new Set(next);
180
+ precedents.set(cell, set);
181
+ for (const p of set) {
182
+ let back = dependents.get(p);
183
+ if (!back) {
184
+ back = new Set();
185
+ dependents.set(p, back);
186
+ }
187
+ back.add(cell);
188
+ }
189
+ },
190
+ dirtyFrom(changed) {
191
+ // Collect everything reachable downstream, then order it so a cell only
192
+ // recomputes once its own inputs have. Kahn's algorithm over that
193
+ // subgraph, not over the whole sheet.
194
+ const affected = new Set();
195
+ const stack = [...changed];
196
+ while (stack.length) {
197
+ const cur = stack.pop();
198
+ for (const d of dependents.get(cur) ?? []) {
199
+ if (affected.has(d))
200
+ continue;
201
+ affected.add(d);
202
+ stack.push(d);
203
+ }
204
+ }
205
+ if (affected.size === 0)
206
+ return [];
207
+ const indegree = new Map();
208
+ for (const cell of affected) {
209
+ let n = 0;
210
+ for (const p of precedents.get(cell) ?? [])
211
+ if (affected.has(p))
212
+ n += 1;
213
+ indegree.set(cell, n);
214
+ }
215
+ const ready = [...affected].filter((c) => (indegree.get(c) ?? 0) === 0);
216
+ const order = [];
217
+ const placed = new Set();
218
+ while (ready.length) {
219
+ const cur = ready.shift();
220
+ order.push(cur);
221
+ placed.add(cur);
222
+ for (const d of dependents.get(cur) ?? []) {
223
+ if (!affected.has(d))
224
+ continue;
225
+ const n = (indegree.get(d) ?? 0) - 1;
226
+ indegree.set(d, n);
227
+ if (n === 0)
228
+ ready.push(d);
229
+ }
230
+ }
231
+ // Anything left never reached indegree zero, so it sits in a cycle.
232
+ // Append it rather than dropping it: those cells still need evaluating
233
+ // so they can report #CYCLE! instead of keeping a stale value.
234
+ for (const cell of affected)
235
+ if (!placed.has(cell))
236
+ order.push(cell);
237
+ return order;
238
+ },
239
+ cycles() {
240
+ // A cell is in a cycle when it can reach itself through its precedents.
241
+ const out = [];
242
+ for (const start of precedents.keys()) {
243
+ const seen = new Set();
244
+ const stack = [...(precedents.get(start) ?? [])];
245
+ let found = false;
246
+ while (stack.length) {
247
+ const cur = stack.pop();
248
+ if (cur === start) {
249
+ found = true;
250
+ break;
251
+ }
252
+ if (seen.has(cur))
253
+ continue;
254
+ seen.add(cur);
255
+ for (const p of precedents.get(cur) ?? [])
256
+ stack.push(p);
257
+ }
258
+ if (found)
259
+ out.push(start);
260
+ }
261
+ return out;
262
+ },
263
+ precedentsOf(cell) {
264
+ return [...(precedents.get(cell) ?? [])];
265
+ },
266
+ dependentsOf(cell) {
267
+ return [...(dependents.get(cell) ?? [])];
268
+ },
269
+ clear() {
270
+ precedents.clear();
271
+ dependents.clear();
272
+ },
273
+ };
274
+ }
@@ -0,0 +1,252 @@
1
+ /**
2
+ * The sheet document: the workbook plus everything a sheet keeps beside its
3
+ * cells, per sheet, in one model.
4
+ *
5
+ * The shell used to keep five Maps (format stores, column widths, row
6
+ * heights, hidden lines, frozen panes), each keyed by sheet name, each
7
+ * swapped on a sheet switch and each moved by hand on an insert or delete.
8
+ * Comments, validation rules, conditional formats, protection and merges
9
+ * would have made it ten. The document holds all of it, moves all of it in
10
+ * one `shift()` when rows or columns are inserted or deleted, saves and
11
+ * restores all of it through one `getState()` / `setState()` pair, and tells
12
+ * a listener once per tick what changed. `SvSheet` is a view over it: it
13
+ * puts the active sheet's sizes and hidden lines on the grid and writes
14
+ * them back here whenever they change, so the document is always the
15
+ * truth and the grid a rendering of it.
16
+ *
17
+ * Nothing in here touches the DOM, so a document can be built, edited,
18
+ * saved and restored in Node, in a test, or on a server.
19
+ */
20
+ import { type Workbook, type SheetData } from './workbook.js';
21
+ import { type SheetFormatStore, type CellFormatEntry } from './format-store.js';
22
+ import type { FreezeState } from './freeze.js';
23
+ import type { StructuralEdit } from './refs.js';
24
+ import { type Rect } from './rects.js';
25
+ import type { CommentsMap } from './comments.js';
26
+ import { type SheetProtection } from './protection.js';
27
+ import { type PageSetup } from './page-setup.js';
28
+ import { type SheetObject } from './objects.js';
29
+ import { type SparklineGroup } from './sparklines.js';
30
+ import { type SheetPivot } from './pivot-range.js';
31
+ import { type LinksMap } from './links.js';
32
+ import { type ValidationRule } from './validation.js';
33
+ import { type CfRule } from './conditional-formats.js';
34
+ import { type AutoFilterState } from './auto-filter.js';
35
+ import { type CellTypeRegion } from './cell-types.js';
36
+ import { type GridSheetSpec, type SheetKind } from './sheet-kinds.js';
37
+ import { type OutlineState } from './outline.js';
38
+ /** Why the document changed. A listener gets every reason since its last call. */
39
+ export type SheetChangeReason = {
40
+ kind: 'cells';
41
+ } | {
42
+ kind: 'formats';
43
+ } | {
44
+ kind: 'sizes';
45
+ } | {
46
+ kind: 'hidden';
47
+ } | {
48
+ kind: 'freeze';
49
+ } | {
50
+ kind: 'sheets';
51
+ } | {
52
+ kind: 'comments';
53
+ } | {
54
+ kind: 'validation';
55
+ } | {
56
+ kind: 'conditional-formats';
57
+ } | {
58
+ kind: 'protection';
59
+ } | {
60
+ kind: 'page-setup';
61
+ } | {
62
+ kind: 'objects';
63
+ } | {
64
+ kind: 'sparklines';
65
+ } | {
66
+ kind: 'pivots';
67
+ } | {
68
+ kind: 'links';
69
+ } | {
70
+ kind: 'tables';
71
+ }
72
+ /**
73
+ * The workbook's own parts rather than a sheet's: its defined names and
74
+ * its calculation settings. They belong to no sheet, so nothing keyed by
75
+ * sheet can carry them, and a listener that mirrors a document elsewhere
76
+ * has to hear about them separately.
77
+ */
78
+ | {
79
+ kind: 'workbook';
80
+ } | {
81
+ kind: 'merges';
82
+ } | {
83
+ kind: 'filter';
84
+ } | {
85
+ kind: 'structure';
86
+ sheet: string;
87
+ edit: StructuralEdit;
88
+ } | {
89
+ kind: 'restore';
90
+ };
91
+ /** What one sheet keeps beside its cells. Live objects, not a snapshot. */
92
+ export type PerSheetState = {
93
+ formats: SheetFormatStore;
94
+ /** Column widths in px by letter; a letter absent here reads the default. */
95
+ widths: Record<string, number>;
96
+ /** Row heights in px by row index; a row absent here reads the default. */
97
+ heights: Map<number, number>;
98
+ hidden: {
99
+ rows: Set<number>;
100
+ cols: Set<number>;
101
+ };
102
+ /** Data > Group: the outline level of each row and column, and which
103
+ * summary lines are collapsed. Lines a collapsed group hides are kept
104
+ * apart from `hidden`, so expanding a group does not un-hide a row the
105
+ * user hid by hand. */
106
+ outline: {
107
+ rows: OutlineState;
108
+ cols: OutlineState;
109
+ };
110
+ freeze: FreezeState;
111
+ /** Cell comments keyed like the grid's `notes`: `r4` -> `B` -> a note's text or a thread. */
112
+ notes: CommentsMap;
113
+ protected: boolean;
114
+ /** What stays allowed while protected, and the ranges that take an edit anyway. */
115
+ protection: SheetProtection;
116
+ /** Page Layout: orientation, paper, margins, print area, title rows, gridlines, headings, scale. */
117
+ pageSetup: PageSetup;
118
+ /** Charts and pictures anchored over the cells, back to front. */
119
+ objects: SheetObject[];
120
+ sparklines: SparklineGroup[];
121
+ pivots: SheetPivot[];
122
+ /** Hyperlinks by cell, keyed like the comments: `r4` -> `B` -> the link. */
123
+ links: LinksMap;
124
+ /** Excel's Hide Sheet: the tab is not shown and the shortcuts skip it. */
125
+ sheetHidden: boolean;
126
+ /**
127
+ * What this tab is: a cell grid, or a table bound to records.
128
+ *
129
+ * A `grid` sheet keeps its records in `grid` and projects them into the
130
+ * workbook's cells, so a formula on any other sheet reads it the way it
131
+ * reads a cell sheet. See `sheet-kinds.ts`.
132
+ */
133
+ kind: SheetKind;
134
+ /** The records and columns of a `grid` sheet; absent on a cell sheet. */
135
+ grid?: GridSheetSpec;
136
+ merges: Rect[];
137
+ /** Data validation rules, in order; the last one covering a cell applies. */
138
+ validation: ValidationRule[];
139
+ /** Conditional formatting rules, in priority order: the first one decides. */
140
+ conditionalFormats: CfRule[];
141
+ /** Cells drawn as a control rather than as text: a checkbox, a button,
142
+ * a radio group. The cell's value stays the truth. */
143
+ cellTypes: CellTypeRegion[];
144
+ /** Excel's AutoFilter over a region, or null when the arrows are off. */
145
+ autoFilter: AutoFilterState | null;
146
+ /** The rows the AutoFilter hides right now; worked out, never saved. */
147
+ filterHidden: Set<number>;
148
+ };
149
+ /** One sheet's part of a saved document. JSON-safe. */
150
+ export type SheetStateEntry = {
151
+ formats: Record<string, CellFormatEntry>;
152
+ columnWidths: Record<string, number>;
153
+ rowHeights: Array<[row: number, px: number]>;
154
+ hidden: {
155
+ rows: number[];
156
+ cols: number[];
157
+ };
158
+ /** Absent in documents saved before outlining existed. */
159
+ outline?: {
160
+ rows: OutlineState;
161
+ cols: OutlineState;
162
+ };
163
+ freeze: FreezeState;
164
+ /** `r4` -> `B` -> a note's text, or a thread with its author, replies and state. */
165
+ comments: CommentsMap;
166
+ protected: boolean;
167
+ /** Absent in documents saved before the allow list and edit ranges existed. */
168
+ protection?: SheetProtection;
169
+ /** Absent in documents saved before Page Layout existed. */
170
+ pageSetup?: PageSetup;
171
+ /** Absent in documents saved before objects existed. */
172
+ objects?: SheetObject[];
173
+ /** Absent in documents saved before sparklines existed. */
174
+ sparklines?: SparklineGroup[];
175
+ /** Absent in documents saved before pivots existed. */
176
+ pivots?: SheetPivot[];
177
+ /** Absent in documents saved before hyperlinks existed. */
178
+ links?: LinksMap;
179
+ /** Absent in documents saved before hidden sheets existed. */
180
+ sheetHidden?: boolean;
181
+ /** Absent in documents saved before sheet kinds existed; reads as 'cells'. */
182
+ kind?: SheetKind;
183
+ grid?: GridSheetSpec;
184
+ merges: Array<[number, number, number, number]>;
185
+ validation: ValidationRule[];
186
+ conditionalFormats: CfRule[];
187
+ /** Absent in documents saved before cell types existed. */
188
+ cellTypes?: CellTypeRegion[];
189
+ autoFilter: AutoFilterState | null;
190
+ };
191
+ /**
192
+ * A saved document. `workbook` is the raw text of every cell (formulas as
193
+ * typed), the sheet order, the active sheet and the defined names; `sheets`
194
+ * is keyed by the sheet's spelled name.
195
+ */
196
+ export type SheetState = {
197
+ version: 1;
198
+ workbook: ReturnType<Workbook['serialize']>;
199
+ sheets: Record<string, SheetStateEntry>;
200
+ };
201
+ export type SheetDocument = {
202
+ readonly workbook: Workbook;
203
+ /** The sheet's state, created on first use. Names compare case-insensitively. */
204
+ get(name: string): PerSheetState;
205
+ has(name: string): boolean;
206
+ rename(from: string, to: string): void;
207
+ remove(name: string): void;
208
+ /**
209
+ * Excel's Move or Copy > Create a copy: a new sheet after `from` with
210
+ * its cells and everything this document keeps beside them, named `to`
211
+ * or "Name (2)". Returns the new name, or null when it could not.
212
+ */
213
+ duplicate(from: string, to?: string): string | null;
214
+ /** The sheets that have state, in no particular order. */
215
+ names(): string[];
216
+ /**
217
+ * Move every position-keyed part of a sheet for an insert or delete:
218
+ * formats, heights, hidden lines, comments, merges. The workbook's own
219
+ * cells and formulas move through `workbook.applyStructuralEdit`; the
220
+ * shell calls both.
221
+ */
222
+ shift(name: string, edit: StructuralEdit): void;
223
+ getState(): SheetState;
224
+ /**
225
+ * Put a saved document back. The workbook is edited in place (sheets
226
+ * added, removed and reordered to match, cells written where they differ,
227
+ * names and the active sheet set), so the workbook a consumer holds stays
228
+ * the same object.
229
+ */
230
+ setState(state: SheetState): void;
231
+ /** Hear about changes, once per tick with every reason since the last call. */
232
+ subscribe(listener: (reasons: ReadonlyArray<SheetChangeReason>) => void): () => void;
233
+ /**
234
+ * Put back only the parts `entry` names, leaving the rest of the sheet as
235
+ * it is: what a delta from another user applies, and what a host that
236
+ * wants to set one feature calls. Reports the change, so the shell
237
+ * repaints; wrap it in `mute` where it should not.
238
+ */
239
+ patch(name: string, entry: Partial<SheetStateEntry>): void;
240
+ /** Record a change. Coalesced per microtask; silent while muted. */
241
+ changed(reason: SheetChangeReason): void;
242
+ /** Run `fn` without reporting changes: restores and mount-time seeding. */
243
+ mute<T>(fn: () => T): T;
244
+ };
245
+ export type SheetDocumentInit = {
246
+ /** An existing workbook to wrap. Created from `sheets` or `state` when absent. */
247
+ workbook?: Workbook;
248
+ sheets?: ReadonlyArray<SheetData>;
249
+ /** A saved document to start from; wins over `sheets`. */
250
+ state?: SheetState;
251
+ };
252
+ export declare function createSheetDocument(init?: SheetDocumentInit): SheetDocument;