@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
package/dist/index.d.ts CHANGED
@@ -1,18 +1,107 @@
1
- export { setLicenseKey, clearLicenseKey, getLicenseKey, isLicenseKeySet, hasValidLicense, assertEnterpriseLicensed, nudgeEnterprise, checkLicenseKey, isLicenseExpired, getLicenseExpiry, type LicenseInfo, type LicenseStatus, } from './license.js';
1
+ export { setLicenseKey, clearLicenseKey, getLicenseKey, isLicenseKeySet, hasValidLicense, assertEnterpriseLicensed, nudgeEnterprise, checkLicenseKey, isLicenseExpired, getLicenseExpiry, licenseCovers, getLicenseEdition, nudgeEnterpriseFor, editionCovers, type LicenseInfo, type LicenseStatus, type LicenseEdition, type LicensedProduct, } from './license.js';
2
2
  export { parseLicenseExpiry } from './license-core.js';
3
3
  export { exportGrid, copyExportToClipboard, type ExportFormat, type ExportOptions, type ExportColumn, type ExportCellStyle, type ExportStyles, type ExportHeaderFooterLine, type ExportSheet, type ExportRowSource, type ExportProgress, type ExportResult, type ClipboardFormat, type ClipboardExportOptions, } from './export.js';
4
4
  export { default as SvExportMenu } from './SvExportMenu.svelte';
5
- export { buildPdfDocDefinition, type PdfExportOptions, type PdfPageSize } from './export-pdf.js';
5
+ export { buildPdfDocDefinition, resolvePdfCharts, resolvePdfVfs, registerPdfFonts, type PdfExportOptions, type PdfPageSize, type PdfChart, type PdfKpi, type PdfChartImage, type PdfVirtualFileSystem, type PdfMakeLike } from './export-pdf.js';
6
6
  export { printGrid, type PrintOptions } from './print.js';
7
7
  export { importData, readImportMatrix, mapImportMatrix, mapImportMatrixAsync, autoMapColumns, inferImportColumnTypes, type ImportFormat, type ImportFieldType, type ImportOptions, type ImportResult, type ImportProgress, type ImportColumnMap, type ImportColumnTypes, type ImportGridColumn, type ImportRowError, type ImportValidator, } from './import.js';
8
8
  export { default as SvImportDialog } from './SvImportDialog.svelte';
9
9
  export { installEnterprise, type EnterpriseGridApi, type EnterpriseAIApi, type EnterprisePivotApi } from './install.js';
10
10
  export { enableSchedulerView, SvGridScheduler } from './scheduler.js';
11
11
  export { enableBoardView, SvGridBoard } from './board.js';
12
+ export * from './gantt/index.js';
12
13
  export { enableSelectionBar, SvGridSelectionBar } from './selection-bar.js';
13
14
  export { applyBulkEdit, bulkEditableFields, bulkEditInitialValues, coerceBulkValue, type BulkEditField, type BulkEditResult } from './bulk-edit.js';
14
15
  export { default as SvGridBulkEditDrawer } from './SvGridBulkEditDrawer.svelte';
15
16
  export { enablePivot } from './pivot-enable.js';
17
+ export { enableSheet } from './sheet-enable.js';
18
+ export { createTableRegistry, isValidTableName, resolveTableRange, columnIndexOf, rowCountOf, type TableRegion, type TableRegistry, type TableRange, type TableSpecifier, } from './sheet/tables.js';
19
+ export { TABLE_STYLES, DEFAULT_TABLE_STYLE, NO_TABLE_STYLE, findTableStyle, tableStyleColours, tableStyleLabel, type TableStyle, type TableStyleTone, type TableStyleColours, } from './sheet/table-styles.js';
20
+ export { goalSeek, goalSeekCell, type GoalSeekOptions, type GoalSeekResult, type GoalSeekSheet, type CellAddress as GoalSeekCellAddress, } from './sheet/goal-seek.js';
21
+ export { evaluationSteps, printNode, printValue, type EvaluationStep, } from './sheet/evaluate-steps.js';
22
+ export { checkSheet, describeFinding, ERROR_MEANINGS, type ErrorFinding, type ErrorFindingKind, type SheetReader, } from './sheet/error-check.js';
23
+ export { imageCall, isDrawableImageSource, type ImageCall } from './sheet/cell-images.js';
24
+ export { livePresence, presenceOnSheet, presenceAnchor, presenceColour, presenceInitials, PRESENCE_COLOURS, type SheetPresence, } from './sheet/presence.js';
25
+ export { default as SvSheetTabs } from './SvSheetTabs.svelte';
26
+ export { createWorkbook, isValidSheetName, cleanIteration, DEFAULT_ITERATION, type Workbook, type SheetData, type WorkbookOptions, type IterationSettings, } from './sheet/workbook.js';
27
+ export { setWorkbook, getWorkbook } from './sheet/shortcuts.js';
28
+ export { createSheetDocument, type SheetDocument, type SheetDocumentInit, type SheetState, type SheetStateEntry, type PerSheetState, type SheetChangeReason, } from './sheet/document.js';
29
+ export { shiftRect, shiftRects, subtractRect, rectContains, rectsIntersect, remapNotes, lineShift, type NotesMap } from './sheet/rects.js';
30
+ export { isLocked, cellLocked, inEditRange, rectsHaveLocked, rectsMixLocked, PROTECTED_MESSAGE, PROTECTION_PERMISSIONS, defaultProtection, copyProtection, newEditRangeId, parseRangeText, rangeText, type ProtectionAllow, type ProtectionPermission, type EditRange, type SheetProtection, } from './sheet/protection.js';
31
+ export { commentAt, withComment, withThread, threadAt, threadOf, threadText, notesOf, isThreaded, listComments, nextComment, type CommentEntry, type CommentThread, type CommentValue, type CommentsMap, } from './sheet/comments.js';
32
+ export { ruleAt, rulesIn, checkEntry, listChoices, shiftValidation, removeValidation, describeRule, dateValue, validationId, DEFAULT_ALERT_MESSAGE, OPERATOR_LABELS, type ValidationRule, type ValidationAllow, type ValidationOperator, type ValidationContext, type ValidationVerdict, type ValidationSpec, } from './sheet/validation.js';
33
+ export { ruleStats, evaluateCf, shiftCf, removeCf, cfIn, describeCf, scaleColor, iconIndex, hasStyle, cfId, CF_PRESET_STYLES, COLOR_SCALES, DATA_BAR_COLOR, DATA_BAR_NEGATIVE_COLOR, type CfRule, type CfRuleBody, type CfStyledRule, type CfBody, type CfPreset, type CfStyle, type CfStats, type CfResult, type CfContext, type CfOperator, type CfTextMatch, type CfIconSet, type CfScaleColors, type CfKind, } from './sheet/conditional-formats.js';
34
+ export { mergePlan, unmergePlan, mergeDropsValues, mergesIn, mergeAt as sheetMergeAt, isCoveredCell, selectionMerged, toGridMerges, sortBlockedByMerges, reorderMerges, normalRect, type MergeKind, type MergePlan, } from './sheet/merges.js';
35
+ export { distinctValues, hiddenRowsFor, passesFilter, isFiltering, withColumnFilter, valuesFilter, shiftAutoFilter, describeFilter, type AutoFilterState, type ColumnFilter, type FilterCondition, type FilterValue, } from './sheet/auto-filter.js';
36
+ export { splitText, textToColumns, guessDelimiter, findDuplicates, removeDuplicates, type SplitOptions, type DuplicateOptions, type DuplicateReport, } from './sheet/transforms.js';
37
+ export { insertRows, deleteRows, insertColumns, deleteColumns, axisForSelection, setStructureTarget, getStructureTarget, rewriteFormulas, type StructureTarget, } from './sheet/structure.js';
38
+ export { findAll, findNext, replaceOne, replaceAll, replaceInText, cellMatches, setFindTarget, getFindTarget, type FindOptions, type FindHit, type FindTarget, } from './sheet/find-replace.js';
39
+ export { splitFrozenRows, frozenColumnIds, applyFreeze, freezeAtActiveCell, freezeTopRow, freezeFirstColumn, unfreeze, type FreezeState, type FreezeSplit, } from './sheet/freeze.js';
40
+ export { buildClipboardPayload, parseClipboard, parseClipboardText, parseClipboardHtml, readClipboardOrigin, anchorForeignFormulas, resolvePasteCell, planPaste, msoNumberFormat, numFmtFromMso, isR1C1, r1c1ToA1, type PasteSpecialOptions, type PasteWhat, type PasteOperation, type ClipboardCell, type ClipboardGrid, type PasteResolution, } from './sheet/paste-special.js';
41
+ export { setFindReplaceHandler, setPasteSpecialHandler, setRibbonActionHandler, nudgeFontSize, type RibbonKeyAction } from './sheet/shortcuts.js';
42
+ export { default as SvFormulaBar } from './SvFormulaBar.svelte';
43
+ export { default as SvSheet } from './SvSheet.svelte';
44
+ export { default as SvSheetRibbon } from './SvSheetRibbon.svelte';
45
+ export { default as SvSheetFindReplace } from './SvSheetFindReplace.svelte';
46
+ export { default as SvSheetPasteSpecial } from './SvSheetPasteSpecial.svelte';
47
+ export { default as SvSheetFormatCells } from './SvSheetFormatCells.svelte';
48
+ export { default as SvSheetInsertFunction } from './SvSheetInsertFunction.svelte';
49
+ export { default as SvSheetSizeDialog } from './SvSheetSizeDialog.svelte';
50
+ export { default as SvSheetComment } from './SvSheetComment.svelte';
51
+ export { default as SvSheetDataValidation } from './SvSheetDataValidation.svelte';
52
+ export { default as SvSheetValidationAlert } from './SvSheetValidationAlert.svelte';
53
+ export { default as SvSheetListPicker } from './SvSheetListPicker.svelte';
54
+ export { default as SvSheetConditionalFormat } from './SvSheetConditionalFormat.svelte';
55
+ export { default as SvSheetManageRules } from './SvSheetManageRules.svelte';
56
+ export { default as SvSheetFilterMenu } from './SvSheetFilterMenu.svelte';
57
+ export { default as SvSheetNameManager } from './SvSheetNameManager.svelte';
58
+ export { default as SvSheetGoalSeek } from './SvSheetGoalSeek.svelte';
59
+ export { default as SvSheetTextToColumns } from './SvSheetTextToColumns.svelte';
60
+ export { default as SvSheetRemoveDuplicates } from './SvSheetRemoveDuplicates.svelte';
61
+ export { default as SvSheetSort } from './SvSheetSort.svelte';
62
+ export { sortOrder, guessHeaderRow, type SortKey, type SortDirection } from './sheet/sort.js';
63
+ export { documentToXlsxParts, documentFromXlsxParts, documentToXlsx, documentFromXlsx } from './sheet/xlsx-document.js';
64
+ export { csvText, csvRows, guessCsvSeparator, sheetStateFromCsv } from './sheet/csv.js';
65
+ export { sheetStateFromOds, documentFromOds, documentToOds, documentToOdsParts, formulaFromOdf, formulaToOdf } from './sheet/ods-document.js';
66
+ export { sheetStateFromXls, documentFromXls, documentToXls, isXlsFile } from './sheet/xls-document.js';
67
+ export { formulaFromRpn, rpnFromFormula } from './sheet/xls-formula.js';
68
+ export { documentFromFile, readSpreadsheetFile, type OpenedFile } from './sheet/open-file.js';
69
+ export { defaultPageSetup, copyPageSetup, marginPresetOf, shiftPageSetup, marginsCss, MARGIN_PRESETS, PAPER_SIZES, type PageSetup, type PageMargins, type PageOrientation, type PaperSize, type MarginPreset, } from './sheet/page-setup.js';
70
+ export { sheetPrintHtml, printAreas, type SheetPrintInput, type SheetPrintCell } from './sheet/print.js';
71
+ export { sheetCellsFromRows, cellTextOf, type SheetField, type SheetFromRowsOptions } from './sheet/from-rows.js';
72
+ export { builtinEngine, type SheetEngine, type SheetEngineHost, type SheetEngineCell, type SheetEngineResult } from './sheet/engine.js';
73
+ export { chartSpecOf, chartFromRange, shiftObject, shiftObjects, objectAt, copyObject, objectId, SHEET_CHART_TYPES, type SheetObject, type SheetChartObject, type SheetImageObject, type ObjectAnchor, type SheetChartType, } from './sheet/objects.js';
74
+ export { sparklineSeries, sparklineAt, sparklineScale, sparklinesFromRange, clearSparklines, shiftSparkline, shiftSparklines, copySparkline, sparklineId, isColumnLocation, SPARKLINE_TYPES, type SparklineGroup, type SheetSparklineType, } from './sheet/sparklines.js';
75
+ export { pivotFields, pivotFieldValues, pivotRecords, filteredRecords, pivotBlock, pivotLayout, pivotDrill, pivotFromRange, pivotWrittenRect, flattenPivotColumns, ALL_VALUES, shiftPivot, shiftPivots, copyPivot, pivotId, SHEET_PIVOT_AGGS, type SheetPivot, type SheetPivotValue, type SheetPivotAgg, type SheetPivotFilter, type PivotLayout as SheetPivotLayout, type PivotDrill, } from './sheet/pivot-range.js';
76
+ export { createDeltaStream, applySheetDelta, partsOfReasons, type SheetDelta, type SheetDeltaStream, type SheetDeltaOptions, type SheetCellWrite, } from './sheet/delta.js';
77
+ export { linkAt, setLink, removeLink, listLinks, shiftLinks, copyLinks, parseLinkTarget, isSafeLinkTarget, linkTitle, type SheetLink, type LinksMap, type LinkTarget, } from './sheet/links.js';
78
+ export { functionCatalog, FUNCTION_GROUPS, type FunctionInfo, type FunctionGroup } from './sheet/function-catalog.js';
79
+ export { parseEntry, completeEntry, type ParsedEntry } from './sheet/entry.js';
80
+ export { cycleReference, type TextEdit } from './sheet/edit-keys.js';
81
+ export { RIBBON_TABS, ribbonItems, withDecimals, applyBorders, type RibbonTab, type RibbonGroup, type RibbonItem, type RibbonOption, type RibbonItemKind, type RibbonActionId, type BorderPreset, } from './sheet/ribbon.js';
82
+ export { RIBBON_ICONS, RIBBON_ICON_NAMES, type RibbonIconName, type IconPath } from './sheet/ribbon-icons.js';
83
+ export { THEME_COLOURS, STANDARD_COLOURS, ALL_COLOURS, tint, type PaletteColour } from './sheet/palette.js';
84
+ export { defaultSheetMessages, defaultSheetTextMessages, defaultDialogMessages, ribbonMessageDefaults, resolveSheetMessages, formatMessage, type SheetMessages, type SheetTextMessages, type SheetDialogMessages, type SheetLocalization, } from './sheet/messages.js';
85
+ export { provideSheetText, useSheetText, type SheetText } from './sheet-text.js';
86
+ export { default as SvRibbonIcon } from './SvRibbonIcon.svelte';
87
+ export { move, selectRegion, selectLine, applyFormat, toggleFormat, preset, autoSum, structural, switchSheet, gridOf, } from './sheet/shortcuts.js';
88
+ export { compileNumberFormat, formatWithPattern, FORMAT_PRESETS, FORMAT_CATEGORY_PATTERNS, SPECIAL_FORMATS, formatCategory, accountingPattern, accountingParts, type CompiledFormat, type FormatPresetName, type SpecialFormatName, } from './sheet/number-format.js';
89
+ export { createFormatStore, entryToStyle, borderShadows, type SheetFormatStore, type CellFormatEntry, type CellAddressLookup, } from './sheet/format-store.js';
90
+ export { createNames, isValidName, type SheetNames, type DefinedName, } from './sheet/names.js';
91
+ export { suggestFunctions, applySuggestion, signatureAt, partialAt, SIGNATURES, type FunctionSuggestion, } from './sheet/autocomplete.js';
92
+ export { setFormatTarget, getFormatTarget, setFormatDialogHandler, type SheetFormatTarget, } from './sheet/shortcuts.js';
93
+ export { parseFormula, parse as parseFormulaTokens } from './sheet/parse.js';
94
+ export { tokenize as tokenizeFormula, type Token as FormulaToken } from './sheet/tokenize.js';
95
+ export { evaluate as evaluateFormula, formatValue as formatCellValue, type EvalContext as SheetEvalContext, } from './sheet/evaluate.js';
96
+ export { ARRAY_FUNCTIONS, type ArrayFunction, type Grid as SpillGrid } from './sheet/packs/array.js';
97
+ export { FUNCTIONS as SHEET_FUNCTIONS, withCustomFunctions, type SheetFunction, type FnArgs as SheetFnArgs, } from './sheet/functions.js';
98
+ export { translateFormula, fixupReferences, renameSheetReferences, formatFormula, referenceSpans, REFERENCE_COLOURS, type StructuralEdit, type EditScope, type ReferenceSpan, } from './sheet/refs.js';
99
+ export { createDependencyGraph as createSheetDependencyGraph, precedentsOf, cellKey, parseCellKey, type DependencyGraph as SheetDependencyGraph, type CellKey, } from './sheet/deps.js';
100
+ export { parseA1, formatA1, colToLetters, lettersToCol, type CellRef, } from './sheet/address.js';
101
+ export { isError as isFormulaError, type CellValue as SheetCellValue, type SheetError, type Node as FormulaNode, } from './sheet/ast.js';
102
+ export { SHEET_BINDINGS, handleSheetKey, type SheetBinding, type SheetCommand, } from './sheet/shortcuts.js';
103
+ export { edgeOfRegion, currentRegion, isBlankValue, type Direction as SheetDirection, } from './sheet/navigate.js';
104
+ export { fillDown, fillRight, fillSelection, stampDate, stampNow, copyFromAbove, copyValueFromAbove, guessSumRange, looksNumeric, setFillTranslator, type FillTranslator, } from './sheet/commands.js';
16
105
  export { enableAdvancedFilter } from './advanced-filter-enable.js';
17
106
  export { default as SvAdvancedFilter } from './SvAdvancedFilter.svelte';
18
107
  export { exprColumnsFromGrid, type ExprColumnsOptions, } from './advanced-filter/expr-columns-from-grid.js';
@@ -33,7 +122,8 @@ export { dismissUnlicensedNudge } from './watermark.js';
33
122
  export { showUpgradePrompt, dismissUpgradePrompt, type EnterpriseFeatureLabel, } from './upgrade-prompt.js';
34
123
  export { createPivotModel, pivotAggregators, filterCollapsedPivotRows, type PivotAggregator, type PivotAggregatorId, type PivotConfig, type PivotResult, type PivotRow, type PivotRowKind, type PivotValueConfig, } from './pivot.js';
35
124
  export { titleCase, resolveIdField, schemaToColumns, schemaToFormFields, isFieldHidden, validateField, applyComputed, validateEntity, type EntitySchema, type EntityField, type EntityFieldType, type EntityHooks, type FormFieldDescriptor, type FormLayout, type FormSection, type StudioEditorType, type StandardSchemaV1, type StandardSchemaResult, type ValidationOp, type ValidationRuleSpec, } from './schema.js';
36
- export { planQuery, coerce, createInMemoryDataSource, createKitDataSource, createKitHandlers, createSqlDataSource, planToSql, type QueryPlan, type PlanPredicate, type PlanOp, type KitDataSourceOptions, type KitHandlerOptions, type KitScope, type KitHandlers, type KitMessage, type SqlDialect, type SqlPlan, type SqlExecutor, type SqlDataSourceConfig, type WritableDataSource, } from './sveltekit/index.js';
125
+ export { planQuery, coerce, createInMemoryDataSource, createKitDataSource, createKitHandlers, createSqlDataSource, planToSql, BUILTIN_AGGREGATORS, type QueryPlan, type PlanPredicate, type PlanOp, type PlanAggregate, type PlanOptions, type KitDataSourceOptions, type KitHandlerOptions, type KitScope, type KitHandlers, type KitMessage, type SqlDialect, type SqlPlan, type SqlExecutor, type SqlDataSourceConfig, type WritableDataSource, } from './sveltekit/index.js';
126
+ export { createServerRowModel, serverRowModelRows, serverRowModelNav, serverGroupText, defaultServerGroupMessages, resolveServerGroupMessages, type ServerGroupMessages, GRAND_TOTAL_ROW_ID, GROUP_TOTAL_ROW_ID_PREFIX, type ServerRowModel, type ServerRowModelOptions, type ServerRowModelState, type ServerRowModelGridRow, type ServerRowModelDisplayRow, type ServerLevelParams, type ServerLevelState, type RefreshOptions, type ServerTransaction, type ServerTransactionResult, type ServerTransactionStatus, type ServerRowModelPaginationOptions, type ServerRowModelPagination, createServerSelectionModel, buildPivotResultColumns, type PivotResultColumnOptions, adaptCallbackDatasource, toCallbackDatasource, fromCallbackRequest, toCallbackRequest, fromCallbackFilterModel, toCallbackFilterModel, fromCallbackSelectionState, toCallbackSelectionState, isCallbackSelectionState, type CallbackSelectionState, type CallbackGroupSelectionState, type SelectionStateMapping, type CallbackServerRequest, type CallbackColumnFilter, type CallbackGetRowsParams, type CallbackDatasource, type ServerSelectionModel, type ServerSelectionModelOptions, type ServerSelectionState, type ServerGroupSelectionNode, type ServerSelectionGroupMode, createServerGroupModel, serverGroupRows, serverGroupNav, enableServerRowModel, SvGroupCell, SvRowGroupPanel, type ServerGroupController, type ServerGroupControllerOptions, type ServerGroupState, type ServerGroupGridRow, } from './server/index.js';
37
127
  export { createSupabaseDataSource, createRestDataSource, offsetLimitAdapter, dummyJsonAdapter, jsonServerAdapter, introspectSupabaseTable, listSupabaseTables, createSupabaseRealtime, createRelationLookup, createSupabaseAuth, aggregateRows, chartFieldsFromSchema, normalizeFilters, buildEntitySchema, pickLabelField, linkRelationLabels, type SupabaseDataSourceConfig, type SupabaseClientLike, type RestDataSourceConfig, type RestAdapter, type OffsetLimitOptions, type IntrospectSupabaseOptions, type IntrospectedColumn, type ColumnReference, type NormalizedFilter, type NormalizedPredicate, type SupabaseRealtimeConfig, type SupabaseRealtimeClientLike, type SupabaseRealtimeHandle, type RealtimeChannelLike, type RealtimeChange, type RelationLookup, type RelationLookupConfig, type RelationOption, type SupabaseAuthConfig, type SupabaseAuthController, type SupabaseAuthClientLike, type AuthState, type AuthUser, withEntityRules, withRelationLabels, reduceValue, kpiSeries, sparklinePoints, seriesDelta, formatKpiValue, dashboardFromSchema, type AggregateReduce, type AggregateRequest, type AggregateBucket, type AggregateSource, type DashboardSpec, type DashboardWidget, type KpiWidget, type ChartWidget, type RelationLabelConfig, } from './sources/index.js';
38
128
  export { buildInitialValues, controlKind, editMode, evalValidationRules, fieldState, sectionVisible, hasFieldConditions, rowId, stripHiddenValues, toSubmitValues, validateAll, visibleFormFields, type EditMode, type ControlKind, type FieldState, } from './edit-panel.js';
39
129
  export { default as SvGridEditPanel } from './SvGridEditPanel.svelte';
package/dist/index.js CHANGED
@@ -1,11 +1,14 @@
1
1
  export { setLicenseKey, clearLicenseKey, getLicenseKey, isLicenseKeySet, hasValidLicense, assertEnterpriseLicensed, nudgeEnterprise, checkLicenseKey,
2
2
  // Trial expiry. The built-in card already appears on its own once a trial
3
3
  // lapses; these are for hosts that would rather render their own banner.
4
- isLicenseExpired, getLicenseExpiry, } from './license.js';
4
+ isLicenseExpired, getLicenseExpiry,
5
+ // Editions. `licenseCovers` is the one most apps want: hide a Suite-only
6
+ // entry point rather than let it nudge.
7
+ licenseCovers, getLicenseEdition, nudgeEnterpriseFor, editionCovers, } from './license.js';
5
8
  export { parseLicenseExpiry } from './license-core.js';
6
9
  export { exportGrid, copyExportToClipboard, } from './export.js';
7
10
  export { default as SvExportMenu } from './SvExportMenu.svelte';
8
- export { buildPdfDocDefinition } from './export-pdf.js';
11
+ export { buildPdfDocDefinition, resolvePdfCharts, resolvePdfVfs, registerPdfFonts } from './export-pdf.js';
9
12
  export { printGrid } from './print.js';
10
13
  export { importData, readImportMatrix, mapImportMatrix, mapImportMatrixAsync, autoMapColumns, inferImportColumnTypes, } from './import.js';
11
14
  export { default as SvImportDialog } from './SvImportDialog.svelte';
@@ -17,6 +20,12 @@ export { enableSchedulerView, SvGridScheduler } from './scheduler.js';
17
20
  // Kanban board view (Pro). `enableBoardView()` registers the renderer so
18
21
  // `<SvGrid board={...}>` shows lanes of cards. Config types live in @svgrid/grid.
19
22
  export { enableBoardView, SvGridBoard } from './board.js';
23
+ // Gantt view (Pro). `enableGanttView()` registers the renderer so
24
+ // `<SvGrid gantt={...}>` shows a task table beside a time chart. The `gantt`
25
+ // prop and its config types live in @svgrid/grid; the layout model, the
26
+ // planning helpers and the renderer are here. Also its own entry point,
27
+ // `@svgrid/enterprise/gantt`.
28
+ export * from './gantt/index.js';
20
29
  // Bulk-action bar over the row selection (Pro). `enableSelectionBar()` registers
21
30
  // the renderer so `<SvGrid selectionBar={...}>` floats a bar over the grid while
22
31
  // rows are selected. The prop + its config types live in @svgrid/grid.
@@ -28,6 +37,98 @@ export { default as SvGridBulkEditDrawer } from './SvGridBulkEditDrawer.svelte';
28
37
  // In-grid pivot mode (Pro). `enablePivot()` registers the pivot engine so
29
38
  // `<SvGrid pivot={...}>` renders a pivot table in place of the flat table.
30
39
  export { enablePivot } from './pivot-enable.js';
40
+ export { enableSheet } from './sheet-enable.js';
41
+ export { createTableRegistry, isValidTableName, resolveTableRange, columnIndexOf, rowCountOf, } from './sheet/tables.js';
42
+ export { TABLE_STYLES, DEFAULT_TABLE_STYLE, NO_TABLE_STYLE, findTableStyle, tableStyleColours, tableStyleLabel, } from './sheet/table-styles.js';
43
+ export { goalSeek, goalSeekCell, } from './sheet/goal-seek.js';
44
+ export { evaluationSteps, printNode, printValue, } from './sheet/evaluate-steps.js';
45
+ export { checkSheet, describeFinding, ERROR_MEANINGS, } from './sheet/error-check.js';
46
+ export { imageCall, isDrawableImageSource } from './sheet/cell-images.js';
47
+ export { livePresence, presenceOnSheet, presenceAnchor, presenceColour, presenceInitials, PRESENCE_COLOURS, } from './sheet/presence.js';
48
+ export { default as SvSheetTabs } from './SvSheetTabs.svelte';
49
+ export { createWorkbook, isValidSheetName, cleanIteration, DEFAULT_ITERATION, } from './sheet/workbook.js';
50
+ export { setWorkbook, getWorkbook } from './sheet/shortcuts.js';
51
+ export { createSheetDocument, } from './sheet/document.js';
52
+ export { shiftRect, shiftRects, subtractRect, rectContains, rectsIntersect, remapNotes, lineShift } from './sheet/rects.js';
53
+ export { isLocked, cellLocked, inEditRange, rectsHaveLocked, rectsMixLocked, PROTECTED_MESSAGE, PROTECTION_PERMISSIONS, defaultProtection, copyProtection, newEditRangeId, parseRangeText, rangeText, } from './sheet/protection.js';
54
+ export { commentAt, withComment, withThread, threadAt, threadOf, threadText, notesOf, isThreaded, listComments, nextComment, } from './sheet/comments.js';
55
+ export { ruleAt, rulesIn, checkEntry, listChoices, shiftValidation, removeValidation, describeRule, dateValue, validationId, DEFAULT_ALERT_MESSAGE, OPERATOR_LABELS, } from './sheet/validation.js';
56
+ export { ruleStats, evaluateCf, shiftCf, removeCf, cfIn, describeCf, scaleColor, iconIndex, hasStyle, cfId, CF_PRESET_STYLES, COLOR_SCALES, DATA_BAR_COLOR, DATA_BAR_NEGATIVE_COLOR, } from './sheet/conditional-formats.js';
57
+ export { mergePlan, unmergePlan, mergeDropsValues, mergesIn, mergeAt as sheetMergeAt, isCoveredCell, selectionMerged, toGridMerges, sortBlockedByMerges, reorderMerges, normalRect, } from './sheet/merges.js';
58
+ export { distinctValues, hiddenRowsFor, passesFilter, isFiltering, withColumnFilter, valuesFilter, shiftAutoFilter, describeFilter, } from './sheet/auto-filter.js';
59
+ export { splitText, textToColumns, guessDelimiter, findDuplicates, removeDuplicates, } from './sheet/transforms.js';
60
+ export { insertRows, deleteRows, insertColumns, deleteColumns, axisForSelection, setStructureTarget, getStructureTarget, rewriteFormulas, } from './sheet/structure.js';
61
+ export { findAll, findNext, replaceOne, replaceAll, replaceInText, cellMatches, setFindTarget, getFindTarget, } from './sheet/find-replace.js';
62
+ export { splitFrozenRows, frozenColumnIds, applyFreeze, freezeAtActiveCell, freezeTopRow, freezeFirstColumn, unfreeze, } from './sheet/freeze.js';
63
+ export { buildClipboardPayload, parseClipboard, parseClipboardText, parseClipboardHtml, readClipboardOrigin, anchorForeignFormulas, resolvePasteCell, planPaste, msoNumberFormat, numFmtFromMso, isR1C1, r1c1ToA1, } from './sheet/paste-special.js';
64
+ export { setFindReplaceHandler, setPasteSpecialHandler, setRibbonActionHandler, nudgeFontSize } from './sheet/shortcuts.js';
65
+ export { default as SvFormulaBar } from './SvFormulaBar.svelte';
66
+ export { default as SvSheet } from './SvSheet.svelte';
67
+ export { default as SvSheetRibbon } from './SvSheetRibbon.svelte';
68
+ export { default as SvSheetFindReplace } from './SvSheetFindReplace.svelte';
69
+ export { default as SvSheetPasteSpecial } from './SvSheetPasteSpecial.svelte';
70
+ export { default as SvSheetFormatCells } from './SvSheetFormatCells.svelte';
71
+ export { default as SvSheetInsertFunction } from './SvSheetInsertFunction.svelte';
72
+ export { default as SvSheetSizeDialog } from './SvSheetSizeDialog.svelte';
73
+ export { default as SvSheetComment } from './SvSheetComment.svelte';
74
+ export { default as SvSheetDataValidation } from './SvSheetDataValidation.svelte';
75
+ export { default as SvSheetValidationAlert } from './SvSheetValidationAlert.svelte';
76
+ export { default as SvSheetListPicker } from './SvSheetListPicker.svelte';
77
+ export { default as SvSheetConditionalFormat } from './SvSheetConditionalFormat.svelte';
78
+ export { default as SvSheetManageRules } from './SvSheetManageRules.svelte';
79
+ export { default as SvSheetFilterMenu } from './SvSheetFilterMenu.svelte';
80
+ export { default as SvSheetNameManager } from './SvSheetNameManager.svelte';
81
+ export { default as SvSheetGoalSeek } from './SvSheetGoalSeek.svelte';
82
+ export { default as SvSheetTextToColumns } from './SvSheetTextToColumns.svelte';
83
+ export { default as SvSheetRemoveDuplicates } from './SvSheetRemoveDuplicates.svelte';
84
+ export { default as SvSheetSort } from './SvSheetSort.svelte';
85
+ export { sortOrder, guessHeaderRow } from './sheet/sort.js';
86
+ export { documentToXlsxParts, documentFromXlsxParts, documentToXlsx, documentFromXlsx } from './sheet/xlsx-document.js';
87
+ export { csvText, csvRows, guessCsvSeparator, sheetStateFromCsv } from './sheet/csv.js';
88
+ export { sheetStateFromOds, documentFromOds, documentToOds, documentToOdsParts, formulaFromOdf, formulaToOdf } from './sheet/ods-document.js';
89
+ export { sheetStateFromXls, documentFromXls, documentToXls, isXlsFile } from './sheet/xls-document.js';
90
+ export { formulaFromRpn, rpnFromFormula } from './sheet/xls-formula.js';
91
+ export { documentFromFile, readSpreadsheetFile } from './sheet/open-file.js';
92
+ export { defaultPageSetup, copyPageSetup, marginPresetOf, shiftPageSetup, marginsCss, MARGIN_PRESETS, PAPER_SIZES, } from './sheet/page-setup.js';
93
+ export { sheetPrintHtml, printAreas } from './sheet/print.js';
94
+ export { sheetCellsFromRows, cellTextOf } from './sheet/from-rows.js';
95
+ export { builtinEngine } from './sheet/engine.js';
96
+ export { chartSpecOf, chartFromRange, shiftObject, shiftObjects, objectAt, copyObject, objectId, SHEET_CHART_TYPES, } from './sheet/objects.js';
97
+ export { sparklineSeries, sparklineAt, sparklineScale, sparklinesFromRange, clearSparklines, shiftSparkline, shiftSparklines, copySparkline, sparklineId, isColumnLocation, SPARKLINE_TYPES, } from './sheet/sparklines.js';
98
+ export { pivotFields, pivotFieldValues, pivotRecords, filteredRecords, pivotBlock, pivotLayout, pivotDrill, pivotFromRange, pivotWrittenRect, flattenPivotColumns, ALL_VALUES, shiftPivot, shiftPivots, copyPivot, pivotId, SHEET_PIVOT_AGGS, } from './sheet/pivot-range.js';
99
+ export { createDeltaStream, applySheetDelta, partsOfReasons, } from './sheet/delta.js';
100
+ export { linkAt, setLink, removeLink, listLinks, shiftLinks, copyLinks, parseLinkTarget, isSafeLinkTarget, linkTitle, } from './sheet/links.js';
101
+ export { functionCatalog, FUNCTION_GROUPS } from './sheet/function-catalog.js';
102
+ export { parseEntry, completeEntry } from './sheet/entry.js';
103
+ export { cycleReference } from './sheet/edit-keys.js';
104
+ export { RIBBON_TABS, ribbonItems, withDecimals, applyBorders, } from './sheet/ribbon.js';
105
+ export { RIBBON_ICONS, RIBBON_ICON_NAMES } from './sheet/ribbon-icons.js';
106
+ export { THEME_COLOURS, STANDARD_COLOURS, ALL_COLOURS, tint } from './sheet/palette.js';
107
+ export { defaultSheetMessages, defaultSheetTextMessages, defaultDialogMessages, ribbonMessageDefaults, resolveSheetMessages, formatMessage, } from './sheet/messages.js';
108
+ export { provideSheetText, useSheetText } from './sheet-text.js';
109
+ export { default as SvRibbonIcon } from './SvRibbonIcon.svelte';
110
+ export { move, selectRegion, selectLine, applyFormat, toggleFormat, preset, autoSum, structural, switchSheet, gridOf, } from './sheet/shortcuts.js';
111
+ export { compileNumberFormat, formatWithPattern, FORMAT_PRESETS, FORMAT_CATEGORY_PATTERNS, SPECIAL_FORMATS, formatCategory, accountingPattern, accountingParts, } from './sheet/number-format.js';
112
+ export { createFormatStore, entryToStyle, borderShadows, } from './sheet/format-store.js';
113
+ export { createNames, isValidName, } from './sheet/names.js';
114
+ export { suggestFunctions, applySuggestion, signatureAt, partialAt, SIGNATURES, } from './sheet/autocomplete.js';
115
+ export { setFormatTarget, getFormatTarget, setFormatDialogHandler, } from './sheet/shortcuts.js';
116
+ // The formula engine. Names are Sheet-prefixed HERE because the barrel already
117
+ // exports a `DependencyGraph` (scheduler) and an `EvalContext` (the expression
118
+ // language), and two different things under one name in one namespace is worse
119
+ // than a prefix. The `@svgrid/enterprise/sheet` subpath exports them unprefixed.
120
+ export { parseFormula, parse as parseFormulaTokens } from './sheet/parse.js';
121
+ export { tokenize as tokenizeFormula } from './sheet/tokenize.js';
122
+ export { evaluate as evaluateFormula, formatValue as formatCellValue, } from './sheet/evaluate.js';
123
+ export { ARRAY_FUNCTIONS } from './sheet/packs/array.js';
124
+ export { FUNCTIONS as SHEET_FUNCTIONS, withCustomFunctions, } from './sheet/functions.js';
125
+ export { translateFormula, fixupReferences, renameSheetReferences, formatFormula, referenceSpans, REFERENCE_COLOURS, } from './sheet/refs.js';
126
+ export { createDependencyGraph as createSheetDependencyGraph, precedentsOf, cellKey, parseCellKey, } from './sheet/deps.js';
127
+ export { parseA1, formatA1, colToLetters, lettersToCol, } from './sheet/address.js';
128
+ export { isError as isFormulaError, } from './sheet/ast.js';
129
+ export { SHEET_BINDINGS, handleSheetKey, } from './sheet/shortcuts.js';
130
+ export { edgeOfRegion, currentRegion, isBlankValue, } from './sheet/navigate.js';
131
+ export { fillDown, fillRight, fillSelection, stampDate, stampNow, copyFromAbove, copyValueFromAbove, guessSumRange, looksNumeric, setFillTranslator, } from './sheet/commands.js';
31
132
  export { enableAdvancedFilter } from './advanced-filter-enable.js';
32
133
  export { default as SvAdvancedFilter } from './SvAdvancedFilter.svelte';
33
134
  export { exprColumnsFromGrid, } from './advanced-filter/expr-columns-from-grid.js';
@@ -47,7 +148,10 @@ export { dismissUnlicensedNudge } from './watermark.js';
47
148
  export { showUpgradePrompt, dismissUpgradePrompt, } from './upgrade-prompt.js';
48
149
  export { createPivotModel, pivotAggregators, filterCollapsedPivotRows, } from './pivot.js';
49
150
  export { titleCase, resolveIdField, schemaToColumns, schemaToFormFields, isFieldHidden, validateField, applyComputed, validateEntity, } from './schema.js';
50
- export { planQuery, coerce, createInMemoryDataSource, createKitDataSource, createKitHandlers, createSqlDataSource, planToSql, } from './sveltekit/index.js';
151
+ export { planQuery, coerce, createInMemoryDataSource, createKitDataSource, createKitHandlers, createSqlDataSource, planToSql, BUILTIN_AGGREGATORS, } from './sveltekit/index.js';
152
+ // Server-Side Row Model: lazy server-side grouping and tree data over the
153
+ // free grid's datasource contract. Also available as '@svgrid/enterprise/server'.
154
+ export { createServerRowModel, serverRowModelRows, serverRowModelNav, serverGroupText, defaultServerGroupMessages, resolveServerGroupMessages, GRAND_TOTAL_ROW_ID, GROUP_TOTAL_ROW_ID_PREFIX, createServerSelectionModel, buildPivotResultColumns, adaptCallbackDatasource, toCallbackDatasource, fromCallbackRequest, toCallbackRequest, fromCallbackFilterModel, toCallbackFilterModel, fromCallbackSelectionState, toCallbackSelectionState, isCallbackSelectionState, createServerGroupModel, serverGroupRows, serverGroupNav, enableServerRowModel, SvGroupCell, SvRowGroupPanel, } from './server/index.js';
51
155
  export { createSupabaseDataSource, createRestDataSource, offsetLimitAdapter, dummyJsonAdapter, jsonServerAdapter, introspectSupabaseTable, listSupabaseTables, createSupabaseRealtime, createRelationLookup, createSupabaseAuth, aggregateRows, chartFieldsFromSchema, normalizeFilters, buildEntitySchema, pickLabelField, linkRelationLabels, withEntityRules, withRelationLabels, reduceValue, kpiSeries, sparklinePoints, seriesDelta, formatKpiValue, dashboardFromSchema, } from './sources/index.js';
52
156
  export { buildInitialValues, controlKind, editMode, evalValidationRules, fieldState, sectionVisible, hasFieldConditions, rowId, stripHiddenValues, toSubmitValues, validateAll, visibleFormFields, } from './edit-panel.js';
53
157
  export { default as SvGridEditPanel } from './SvGridEditPanel.svelte';
package/dist/install.js CHANGED
@@ -9,9 +9,12 @@ import { aiFilter, aiSmartFill, aiSummarize, aiClassify, aiExport, aiFindAnomali
9
9
  import { createPivotModel, } from './pivot.js';
10
10
  import { enableSchedulerView } from './scheduler.js';
11
11
  import { enableBoardView } from './board.js';
12
+ import { enableGanttView } from './gantt/gantt.js';
12
13
  import { enableSelectionBar } from './selection-bar.js';
13
14
  import { enableAdvancedFilter } from './advanced-filter-enable.js';
14
15
  import { enablePivot } from './pivot-enable.js';
16
+ import { enableSheet } from './sheet-enable.js';
17
+ import { enableServerRowModel } from './server/enable.js';
15
18
  /**
16
19
  * Augment a SvGridApi instance with Pro methods (`exportData`, `print`,
17
20
  * `ai.*`). Mutates and returns the same object so existing references
@@ -43,12 +46,21 @@ export function installEnterprise(api) {
43
46
  enableSchedulerView();
44
47
  // Register the Kanban board view (no-op without the `board` prop).
45
48
  enableBoardView();
49
+ // Register the Gantt view (no-op without the `gantt` prop).
50
+ enableGanttView();
46
51
  enableSelectionBar();
47
52
  // Register the export engine so built-in AI exports (aiExport) can write the
48
53
  // enterprise formats (xlsx / pdf / ...); free grids without it get the plan only.
49
54
  registerExportProvider(exportGrid);
50
55
  enablePivot();
51
56
  enableAdvancedFilter();
57
+ // Register the Excel keymap (Ctrl+Arrow, Ctrl+D, Ctrl+A and the rest). The
58
+ // grid interprets a key itself only when nothing claims it, so a free grid
59
+ // is unaffected.
60
+ enableSheet();
61
+ // Raise the unlicensed nudge for the server-side row model. No registry to fill -
62
+ // the model hands the grid ordinary rows - so this only nudges when unlicensed.
63
+ enableServerRowModel();
52
64
  pro.pivot = {
53
65
  build: (config) => createPivotModel(pro.getData(), config),
54
66
  buildFrom: (data, config) =>
@@ -57,7 +69,7 @@ export function installEnterprise(api) {
57
69
  // the caller-side generic enforces.
58
70
  createPivotModel(data, config),
59
71
  };
60
- // Surface the soft-gate state at install time so the watermark appears
72
+ // Surface the unlicensed state at install time so the watermark appears
61
73
  // alongside the grid, not just after the user clicks Export.
62
74
  if (!isLicenseKeySet())
63
75
  emitUnlicensedNudge();
@@ -1,16 +1,32 @@
1
1
  export declare const VALID_PREFIX = "SVENTERPRISE-";
2
+ /**
3
+ * What an order bought. `grid` is the enterprise grid on its own; `suite` adds
4
+ * the spreadsheet and the Studio. Keys issued before editions existed carry no
5
+ * edition segment and read as `suite`, so nothing an existing customer already
6
+ * ships changes when this lands.
7
+ */
8
+ export type LicenseEdition = 'grid' | 'suite';
9
+ /** The three things an edition can gate. */
10
+ export type LicensedProduct = 'grid' | 'spreadsheet' | 'studio';
11
+ /** Does `edition` cover `product`? Pure, and the only place the answer lives. */
12
+ export declare function editionCovers(edition: LicenseEdition, product: LicensedProduct): boolean;
2
13
  export type LicenseStatus = 'unset' | 'invalid' | 'revoked' | 'dev' | 'eval' | 'licensed';
3
14
  export type LicenseInfo = {
4
15
  status: LicenseStatus;
5
16
  /** True when the key permits use (dev / eval / licensed). */
6
17
  valid: boolean;
18
+ /**
19
+ * What the key covers. Always `suite` for dev and eval keys, so a trial sees
20
+ * everything, and for any key that names no edition.
21
+ */
22
+ edition: LicenseEdition;
7
23
  /** Expiry encoded in the key, when it carries one. Undefined otherwise. */
8
24
  expiresAt?: Date;
9
25
  /**
10
26
  * True once `expiresAt` has passed. Deliberately does NOT clear `valid`:
11
27
  * an expired trial keeps working and the callers nudge instead. Turning a
12
28
  * lapsed key into a hard stop would break a running app on a date boundary,
13
- * which is exactly what a soft gate exists to avoid.
29
+ * which is exactly what the evaluation model exists to avoid.
14
30
  */
15
31
  expired?: boolean;
16
32
  };
@@ -4,10 +4,14 @@
4
4
  // "what a valid key is," so the two contexts can never drift.
5
5
  //
6
6
  // This is deliberately NOT crypto (see license.ts). It classifies a key string;
7
- // callers decide what to do with the result. The Studio is soft-gate only:
7
+ // callers decide what to do with the result. The Studio never blocks:
8
8
  // unlicensed use still works, it just nudges.
9
9
  import { REVOKED_KEYS } from './revoked.js';
10
10
  export const VALID_PREFIX = 'SVENTERPRISE-';
11
+ /** Does `edition` cover `product`? Pure, and the only place the answer lives. */
12
+ export function editionCovers(edition, product) {
13
+ return edition === 'suite' || product === 'grid';
14
+ }
11
15
  /**
12
16
  * Pull the expiry out of a key.
13
17
  *
@@ -62,12 +66,15 @@ export function parseLicenseExpiry(key) {
62
66
  /** Classify a license key string. Pure and side-effect-free.
63
67
  * `now` is injectable so expiry behaviour is testable without faking clocks. */
64
68
  export function checkLicenseKey(key, now = new Date()) {
69
+ // An unusable key reports `suite` rather than a narrower edition on purpose:
70
+ // callers branch on `valid` first, and an edition on a rejected key would
71
+ // read as though something had been granted.
65
72
  if (key == null || key === '')
66
- return { status: 'unset', valid: false };
73
+ return { status: 'unset', valid: false, edition: 'suite' };
67
74
  if (!key.startsWith(VALID_PREFIX))
68
- return { status: 'invalid', valid: false };
75
+ return { status: 'invalid', valid: false, edition: 'suite' };
69
76
  if (REVOKED_KEYS.has(key))
70
- return { status: 'revoked', valid: false };
77
+ return { status: 'revoked', valid: false, edition: 'suite' };
71
78
  const expiresAt = parseLicenseExpiry(key) ?? undefined;
72
79
  // Left undefined rather than false when the key encodes no date, so callers
73
80
  // can tell "not expired" apart from "no expiry to check".
@@ -77,5 +84,9 @@ export function checkLicenseKey(key, now = new Date()) {
77
84
  : key.startsWith('SVENTERPRISE-EVAL')
78
85
  ? 'eval'
79
86
  : 'licensed';
80
- return { status, valid: true, expiresAt, expired };
87
+ // Only a paid key can be narrowed: a trial evaluates the whole product, and
88
+ // `SVENTERPRISE-GRID` is an edition marker rather than a kind, so it lands in
89
+ // the same segment DEV and EVAL use.
90
+ const edition = status === 'licensed' && key.startsWith(`${VALID_PREFIX}GRID-`) ? 'grid' : 'suite';
91
+ return { status, valid: true, edition, expiresAt, expired };
81
92
  }
package/dist/license.d.ts CHANGED
@@ -1,5 +1,6 @@
1
+ import { type LicenseInfo, type LicensedProduct } from './license-core.js';
1
2
  import { type EnterpriseFeatureLabel } from './upgrade-prompt.js';
2
- export { checkLicenseKey, type LicenseInfo, type LicenseStatus } from './license-core.js';
3
+ export { checkLicenseKey, editionCovers, type LicenseInfo, type LicenseStatus, type LicenseEdition, type LicensedProduct, } from './license-core.js';
3
4
  export { dismissUnlicensedNudge } from './watermark.js';
4
5
  export declare function setLicenseKey(key: string): void;
5
6
  export declare function clearLicenseKey(): void;
@@ -21,11 +22,26 @@ export declare function isLicenseExpired(): boolean;
21
22
  /** When the current key lapses, or null if it encodes no expiry. */
22
23
  export declare function getLicenseExpiry(): Date | null;
23
24
  /**
24
- * Soft-gate a Pro surface: if the current key isn't valid, nudge (watermark +
25
+ * Gate a Pro surface: if the current key isn't valid, nudge (watermark +
25
26
  * one-time console log + a moment-of-intent upgrade card naming `feature`) and
26
27
  * return. NEVER throws and NEVER blocks - the feature always runs. This is the
27
28
  * gate the Studio uses, and it's safe to call on the server (the nudges no-op
28
29
  * without a DOM). Idempotent/self-throttling, so call it freely at chokepoints.
29
30
  */
30
31
  export declare function nudgeEnterprise(feature?: EnterpriseFeatureLabel): void;
32
+ /**
33
+ * True when the current key covers `product`. Use it to hide a Suite-only entry
34
+ * point in your own UI instead of letting it nudge. An unlicensed app returns
35
+ * false for everything, which keeps "no key" and "wrong edition" on the same
36
+ * side of the branch for UI purposes.
37
+ */
38
+ export declare function licenseCovers(product: LicensedProduct): boolean;
39
+ /** The edition the current key names, or null when no usable key is set. */
40
+ export declare function getLicenseEdition(): LicenseInfo['edition'] | null;
41
+ /**
42
+ * Gate a surface that an edition can exclude. Same contract as
43
+ * {@link nudgeEnterprise} - never throws, never blocks, safe on the server -
44
+ * but it also nudges a valid key that simply does not reach this product.
45
+ */
46
+ export declare function nudgeEnterpriseFor(product: LicensedProduct, feature?: EnterpriseFeatureLabel): void;
31
47
  export declare function assertEnterpriseLicensed(feature?: EnterpriseFeatureLabel): void;
package/dist/license.js CHANGED
@@ -6,7 +6,7 @@
6
6
  //
7
7
  // currentKey state -> result
8
8
  // ────────────────────────────────────────────────────────────────────
9
- // null (no key set) -> soft-gate: watermark + console.log,
9
+ // null (no key set) -> evaluation: watermark + console.log,
10
10
  // feature still runs
11
11
  // does not start with "SVENTERPRISE-" -> throws (programmer error)
12
12
  // in REVOKED_KEYS -> throws (revoked / leaked / expired)
@@ -15,13 +15,18 @@
15
15
  // an EXPIRED dev/eval key -> still works, but stops looking
16
16
  // licensed: watermark + a one-time
17
17
  // console notice naming the expiry date
18
- // + the upgrade card. Stays a soft gate
18
+ // + the upgrade card. Never blocks,
19
19
  // so a trial ending cannot break a build.
20
20
  // any other "SVENTERPRISE-..." -> works silently (paid production)
21
- import { checkLicenseKey, VALID_PREFIX } from './license-core.js';
21
+ //
22
+ // Editions cut across that matrix. A paid key names GRID or SUITE (and a key
23
+ // issued before editions existed reads as SUITE). `nudgeEnterpriseFor` is the
24
+ // gate for a surface a GRID key does not reach: same never-blocks contract, with
25
+ // its own console notice saying which edition covers it.
26
+ import { checkLicenseKey, editionCovers, VALID_PREFIX, } from './license-core.js';
22
27
  import { emitUnlicensedNudge } from './watermark.js';
23
28
  import { showUpgradePrompt } from './upgrade-prompt.js';
24
- export { checkLicenseKey } from './license-core.js';
29
+ export { checkLicenseKey, editionCovers, } from './license-core.js';
25
30
  // The nudge the key silences, on the same subpath as the key: an app that only
26
31
  // wants to set its licence imports `@svgrid/enterprise/license` and never
27
32
  // pulls the component barrel (the package has no `sideEffects` flag, so a
@@ -30,6 +35,9 @@ export { dismissUnlicensedNudge } from './watermark.js';
30
35
  let currentKey = null;
31
36
  let noticedDev = false;
32
37
  let noticedExpired = false;
38
+ /** One notice per product, not per call site: reaching four Studio seams on a
39
+ * Grid key is one licensing fact, not four. */
40
+ const noticedEdition = new Set();
33
41
  /** One-time console notice for a trial that has run out. Separate from the
34
42
  * dev/eval notice: that one says "not for production", this one says the
35
43
  * evaluation is over and names the date, which is the actionable part. */
@@ -50,11 +58,13 @@ export function setLicenseKey(key) {
50
58
  currentKey = key;
51
59
  noticedDev = false;
52
60
  noticedExpired = false;
61
+ noticedEdition.clear();
53
62
  }
54
63
  export function clearLicenseKey() {
55
64
  currentKey = null;
56
65
  noticedDev = false;
57
66
  noticedExpired = false;
67
+ noticedEdition.clear();
58
68
  }
59
69
  export function getLicenseKey() {
60
70
  return currentKey;
@@ -84,7 +94,7 @@ export function getLicenseExpiry() {
84
94
  return checkLicenseKey(currentKey).expiresAt ?? null;
85
95
  }
86
96
  /**
87
- * Soft-gate a Pro surface: if the current key isn't valid, nudge (watermark +
97
+ * Gate a Pro surface: if the current key isn't valid, nudge (watermark +
88
98
  * one-time console log + a moment-of-intent upgrade card naming `feature`) and
89
99
  * return. NEVER throws and NEVER blocks - the feature always runs. This is the
90
100
  * gate the Studio uses, and it's safe to call on the server (the nudges no-op
@@ -105,11 +115,66 @@ export function nudgeEnterprise(feature) {
105
115
  noticeExpired(info);
106
116
  showUpgradePrompt(feature, { expired: lapsedTrial });
107
117
  }
118
+ /** Human name for a product, for the console notice. */
119
+ const PRODUCT_LABEL = {
120
+ grid: 'the enterprise grid',
121
+ spreadsheet: 'the spreadsheet',
122
+ studio: 'the Studio',
123
+ };
124
+ /** One-time console notice for a feature the current edition does not cover.
125
+ * Distinct from the unlicensed nudge: the key is real and paid, it just does
126
+ * not reach this far, so the actionable part is which edition to move to. */
127
+ function noticeEdition(product) {
128
+ if (noticedEdition.has(product))
129
+ return;
130
+ noticedEdition.add(product);
131
+ // eslint-disable-next-line no-console
132
+ console.info(`@svgrid/enterprise: your Grid license does not cover ${PRODUCT_LABEL[product]}. ` +
133
+ 'Everything still works, but the watermark and upgrade notice stay until the ' +
134
+ 'license is upgraded to Suite. Contact sales@jqwidgets.com or see ' +
135
+ 'https://svgrid.com/pricing');
136
+ }
137
+ /**
138
+ * True when the current key covers `product`. Use it to hide a Suite-only entry
139
+ * point in your own UI instead of letting it nudge. An unlicensed app returns
140
+ * false for everything, which keeps "no key" and "wrong edition" on the same
141
+ * side of the branch for UI purposes.
142
+ */
143
+ export function licenseCovers(product) {
144
+ const info = checkLicenseKey(currentKey);
145
+ return info.valid && editionCovers(info.edition, product);
146
+ }
147
+ /** The edition the current key names, or null when no usable key is set. */
148
+ export function getLicenseEdition() {
149
+ const info = checkLicenseKey(currentKey);
150
+ return info.valid ? info.edition : null;
151
+ }
152
+ /**
153
+ * Gate a surface that an edition can exclude. Same contract as
154
+ * {@link nudgeEnterprise} - never throws, never blocks, safe on the server -
155
+ * but it also nudges a valid key that simply does not reach this product.
156
+ */
157
+ export function nudgeEnterpriseFor(product, feature) {
158
+ const info = checkLicenseKey(currentKey);
159
+ const covered = info.valid && editionCovers(info.edition, product);
160
+ if (covered && !info.expired)
161
+ return;
162
+ // A key that is valid, unexpired and merely out of edition is a different
163
+ // message from an unlicensed or lapsed one, so it gets its own notice. The
164
+ // watermark and the card are the same either way.
165
+ const outOfEdition = info.valid && info.expired !== true && !covered;
166
+ emitUnlicensedNudge();
167
+ if (outOfEdition)
168
+ noticeEdition(product);
169
+ else if (info.valid && info.expired === true)
170
+ noticeExpired(info);
171
+ showUpgradePrompt(feature, { expired: info.valid && info.expired === true });
172
+ }
108
173
  export function assertEnterpriseLicensed(feature) {
109
174
  const info = checkLicenseKey(currentKey);
110
175
  switch (info.status) {
111
176
  case 'unset':
112
- // Soft-gate: the feature still runs, but the user gets a watermark +
177
+ // Evaluation: the feature still runs, but the user gets a watermark +
113
178
  // a one-time console.log nudge directing them to pricing, plus a
114
179
  // contextual moment-of-intent upgrade card naming the feature they
115
180
  // just reached for.