@svgrid/enterprise 3.0.2 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (364) 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 +94 -20
  10. package/dist/SvFormulaBar.svelte.d.ts +7 -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 +198 -40
  18. package/dist/SvPivotDesigner.svelte.d.ts +27 -20
  19. package/dist/SvSheet.svelte +4043 -243
  20. package/dist/SvSheet.svelte.d.ts +76 -3
  21. package/dist/SvSheetChartSetup.svelte +151 -0
  22. package/dist/SvSheetChartSetup.svelte.d.ts +18 -0
  23. package/dist/SvSheetComment.svelte +216 -31
  24. package/dist/SvSheetComment.svelte.d.ts +11 -11
  25. package/dist/SvSheetConditionalFormat.svelte +28 -31
  26. package/dist/SvSheetDataValidation.svelte +66 -42
  27. package/dist/SvSheetEditRanges.svelte +217 -0
  28. package/dist/SvSheetEditRanges.svelte.d.ts +15 -0
  29. package/dist/SvSheetErrors.svelte +125 -0
  30. package/dist/SvSheetErrors.svelte.d.ts +20 -0
  31. package/dist/SvSheetEvaluate.svelte +133 -0
  32. package/dist/SvSheetEvaluate.svelte.d.ts +15 -0
  33. package/dist/SvSheetFilterMenu.svelte +137 -34
  34. package/dist/SvSheetFilterMenu.svelte.d.ts +5 -0
  35. package/dist/SvSheetFindReplace.svelte +19 -19
  36. package/dist/SvSheetFormatCells.svelte +125 -81
  37. package/dist/SvSheetGoalSeek.svelte +17 -16
  38. package/dist/SvSheetInsertFunction.svelte +15 -13
  39. package/dist/SvSheetIteration.svelte +81 -0
  40. package/dist/SvSheetIteration.svelte.d.ts +10 -0
  41. package/dist/SvSheetLink.svelte +99 -0
  42. package/dist/SvSheetLink.svelte.d.ts +17 -0
  43. package/dist/SvSheetListPicker.svelte +4 -2
  44. package/dist/SvSheetListPicker.svelte.d.ts +0 -6
  45. package/dist/SvSheetManageRules.svelte +20 -18
  46. package/dist/SvSheetNameManager.svelte +17 -15
  47. package/dist/SvSheetPageSetup.svelte +159 -0
  48. package/dist/SvSheetPageSetup.svelte.d.ts +13 -0
  49. package/dist/SvSheetPasteSpecial.svelte +22 -20
  50. package/dist/SvSheetPivot.svelte +220 -0
  51. package/dist/SvSheetPivot.svelte.d.ts +21 -0
  52. package/dist/SvSheetProtectSheet.svelte +81 -0
  53. package/dist/SvSheetProtectSheet.svelte.d.ts +11 -0
  54. package/dist/SvSheetRemoveDuplicates.svelte +13 -10
  55. package/dist/SvSheetRibbon.svelte +104 -51
  56. package/dist/SvSheetSizeDialog.svelte +4 -2
  57. package/dist/SvSheetSort.svelte +218 -0
  58. package/dist/SvSheetSort.svelte.d.ts +28 -0
  59. package/dist/SvSheetSparklines.svelte +135 -0
  60. package/dist/SvSheetSparklines.svelte.d.ts +14 -0
  61. package/dist/SvSheetTable.svelte +160 -0
  62. package/dist/SvSheetTable.svelte.d.ts +24 -0
  63. package/dist/SvSheetTabs.svelte +161 -31
  64. package/dist/SvSheetTabs.svelte.d.ts +22 -8
  65. package/dist/SvSheetTextToColumns.svelte +20 -20
  66. package/dist/SvSheetValidationAlert.svelte +8 -6
  67. package/dist/advanced-filter-enable.js +1 -1
  68. package/dist/alerts/alert-engine.d.ts +6 -0
  69. package/dist/alerts/alert-engine.js +21 -4
  70. package/dist/alerts/alert-formats.js +2 -0
  71. package/dist/alerts/alert-types.d.ts +1 -1
  72. package/dist/alerts.d.ts +1 -1
  73. package/dist/alerts.js +2 -2
  74. package/dist/board.js +2 -2
  75. package/dist/bulk-edit.d.ts +3 -1
  76. package/dist/bulk-edit.js +1 -1
  77. package/dist/cdn/svgrid-enterprise.svelte-external.js +39827 -16429
  78. package/dist/designer/assets/GridMenus-8gTNssgV.js +8 -0
  79. package/dist/designer/assets/{SvChartMenu-D9hEeHar.js → SvChartMenu-BDoeqGz6.js} +1 -1
  80. package/dist/designer/assets/{SvDateTimePicker-DARvKUL2.js → SvDateTimePicker-DCPg7WGN.js} +1 -1
  81. package/dist/designer/assets/SvGridCellEditor-DMoWJjEI.js +4 -0
  82. package/dist/designer/assets/{SvGridChart-B8j1SSy3.js → SvGridChart-Cy1ATrWh.js} +2 -2
  83. package/dist/designer/assets/SvGridChartBuilder-eQ3mn0L9.js +1 -0
  84. package/dist/designer/assets/{SvGridChartPanel-pT6ITc2P.js → SvGridChartPanel-CATdVc9X.js} +3 -3
  85. package/dist/designer/assets/{SvGridChartView-bg281UA1.js → SvGridChartView-CmsZtCED.js} +1 -1
  86. package/dist/designer/assets/SvGridDropdown-Cjz0H-fI.js +1 -0
  87. package/dist/designer/assets/{SvTabs-UFCMTHXS.js → SvTabs-2mHC6oaz.js} +1 -1
  88. package/dist/designer/assets/cell-formatting-BbubJTVz.js +1 -0
  89. package/dist/designer/assets/{chart-cIPUsbM5.js → chart-Cn7MnNqA.js} +1 -1
  90. package/dist/designer/assets/{chart-panel-messages-DtTxpBUU.js → chart-panel-messages-Dz7PTIqT.js} +1 -1
  91. package/dist/designer/assets/{chart-summary-Czu_5epb.js → chart-summary-BD1qYB2R.js} +1 -1
  92. package/dist/designer/assets/{chart-trend-D5I5VEe8.js → chart-trend-B8xr5LuD.js} +1 -1
  93. package/dist/designer/assets/{dismissable-BO547MH9.js → dismissable-ChWRPkoa.js} +1 -1
  94. package/dist/designer/assets/{export-format-D-eP4b2l.js → export-format-DGckmgKr.js} +1 -1
  95. package/dist/designer/assets/{focus-trap-CAreAhlU.js → focus-trap-V2-6Fy9I.js} +1 -1
  96. package/dist/designer/assets/{index-DwU7CAMm.js → index-BSjv6Qec.js} +317 -315
  97. package/dist/designer/assets/index-_JVFxt02.css +1 -0
  98. package/dist/designer/assets/row-resize-BInFWCpr.js +1 -0
  99. package/dist/designer/assets/server-block-cache-CXJKkJpy.js +1 -0
  100. package/dist/designer/assets/src-DUQ4xE3x.js +58 -0
  101. package/dist/designer/assets/validate-C3B8QKsM.js +1 -0
  102. package/dist/designer/index.html +17 -16
  103. package/dist/export-pdf.d.ts +75 -0
  104. package/dist/export-pdf.js +216 -15
  105. package/dist/export.js +10 -2
  106. package/dist/gantt/SvGridGantt.svelte +2890 -0
  107. package/dist/gantt/SvGridGantt.svelte.d.ts +30 -0
  108. package/dist/gantt/gantt-config.d.ts +73 -0
  109. package/dist/gantt/gantt-config.js +1 -0
  110. package/dist/gantt/gantt-critical-path.d.ts +67 -0
  111. package/dist/gantt/gantt-critical-path.js +207 -0
  112. package/dist/gantt/gantt-model.d.ts +257 -0
  113. package/dist/gantt/gantt-model.js +651 -0
  114. package/dist/gantt/gantt-resources.d.ts +59 -0
  115. package/dist/gantt/gantt-resources.js +71 -0
  116. package/dist/gantt/gantt.d.ts +7 -0
  117. package/dist/gantt/gantt.js +36 -0
  118. package/dist/gantt/index.d.ts +15 -0
  119. package/dist/gantt/index.js +22 -0
  120. package/dist/gantt/timeline-arrows.d.ts +102 -0
  121. package/dist/gantt/timeline-arrows.js +181 -0
  122. package/dist/import.d.ts +2 -2
  123. package/dist/import.js +1 -1
  124. package/dist/index.d.ts +34 -7
  125. package/dist/index.js +44 -7
  126. package/dist/install.js +8 -1
  127. package/dist/license-core.d.ts +17 -1
  128. package/dist/license-core.js +16 -5
  129. package/dist/license.d.ts +18 -2
  130. package/dist/license.js +71 -6
  131. package/dist/node/studio.js +140 -8
  132. package/dist/pivot-enable.js +2 -2
  133. package/dist/scheduler-dependencies.d.ts +35 -0
  134. package/dist/scheduler-dependencies.js +36 -1
  135. package/dist/scheduler.js +2 -2
  136. package/dist/selection-bar.js +2 -2
  137. package/dist/server/SvGroupCell.svelte +213 -0
  138. package/dist/server/SvGroupCell.svelte.d.ts +62 -0
  139. package/dist/server/SvRowGroupPanel.svelte +322 -0
  140. package/dist/server/SvRowGroupPanel.svelte.d.ts +37 -0
  141. package/dist/server/enable.d.ts +17 -0
  142. package/dist/server/enable.js +49 -0
  143. package/dist/server/index.d.ts +22 -0
  144. package/dist/server/index.js +24 -0
  145. package/dist/server/messages.d.ts +45 -0
  146. package/dist/server/messages.js +35 -0
  147. package/dist/server/server-group-model.d.ts +104 -0
  148. package/dist/server/server-group-model.js +272 -0
  149. package/dist/server/server-pivot.d.ts +46 -0
  150. package/dist/server/server-pivot.js +57 -0
  151. package/dist/server/server-row-model.d.ts +547 -0
  152. package/dist/server/server-row-model.js +1551 -0
  153. package/dist/server/server-selection.d.ts +99 -0
  154. package/dist/server/server-selection.js +215 -0
  155. package/dist/server/svgrid-adapter.d.ts +155 -0
  156. package/dist/server/svgrid-adapter.js +202 -0
  157. package/dist/sheet/ast.d.ts +45 -1
  158. package/dist/sheet/ast.js +14 -0
  159. package/dist/sheet/auto-filter.d.ts +58 -4
  160. package/dist/sheet/auto-filter.js +159 -11
  161. package/dist/sheet/autocomplete.d.ts +9 -0
  162. package/dist/sheet/autocomplete.js +90 -4
  163. package/dist/sheet/cell-images.d.ts +39 -0
  164. package/dist/sheet/cell-images.js +90 -0
  165. package/dist/sheet/cell-types.d.ts +58 -0
  166. package/dist/sheet/cell-types.js +96 -0
  167. package/dist/sheet/coerce.d.ts +40 -0
  168. package/dist/sheet/coerce.js +170 -3
  169. package/dist/sheet/comments.d.ts +43 -9
  170. package/dist/sheet/comments.js +85 -27
  171. package/dist/sheet/conditional-formats.d.ts +29 -6
  172. package/dist/sheet/conditional-formats.js +37 -12
  173. package/dist/sheet/csv.d.ts +32 -0
  174. package/dist/sheet/csv.js +158 -0
  175. package/dist/sheet/culture.d.ts +87 -0
  176. package/dist/sheet/culture.js +247 -0
  177. package/dist/sheet/delta.d.ts +102 -0
  178. package/dist/sheet/delta.js +203 -0
  179. package/dist/sheet/deps.d.ts +45 -1
  180. package/dist/sheet/deps.js +77 -2
  181. package/dist/sheet/document.d.ts +106 -4
  182. package/dist/sheet/document.js +204 -3
  183. package/dist/sheet/engine.d.ts +67 -0
  184. package/dist/sheet/engine.js +19 -0
  185. package/dist/sheet/entry.d.ts +8 -4
  186. package/dist/sheet/entry.js +171 -21
  187. package/dist/sheet/error-check.d.ts +49 -0
  188. package/dist/sheet/error-check.js +83 -0
  189. package/dist/sheet/evaluate-steps.d.ts +48 -0
  190. package/dist/sheet/evaluate-steps.js +196 -0
  191. package/dist/sheet/evaluate.d.ts +67 -0
  192. package/dist/sheet/evaluate.js +725 -13
  193. package/dist/sheet/filter-files.d.ts +37 -0
  194. package/dist/sheet/filter-files.js +465 -0
  195. package/dist/sheet/format-store.d.ts +15 -0
  196. package/dist/sheet/format-store.js +11 -1
  197. package/dist/sheet/from-rows.d.ts +14 -0
  198. package/dist/sheet/from-rows.js +50 -0
  199. package/dist/sheet/function-catalog.d.ts +1 -1
  200. package/dist/sheet/function-catalog.js +296 -5
  201. package/dist/sheet/functions.js +363 -91
  202. package/dist/sheet/index.d.ts +35 -8
  203. package/dist/sheet/index.js +35 -8
  204. package/dist/sheet/links.d.ts +57 -0
  205. package/dist/sheet/links.js +174 -0
  206. package/dist/sheet/messages.d.ts +778 -0
  207. package/dist/sheet/messages.js +806 -0
  208. package/dist/sheet/number-format.d.ts +52 -5
  209. package/dist/sheet/number-format.js +465 -68
  210. package/dist/sheet/objects.d.ts +106 -0
  211. package/dist/sheet/objects.js +149 -0
  212. package/dist/sheet/ods-document.d.ts +44 -0
  213. package/dist/sheet/ods-document.js +1275 -0
  214. package/dist/sheet/open-file.d.ts +26 -0
  215. package/dist/sheet/open-file.js +56 -0
  216. package/dist/sheet/outline.d.ts +82 -0
  217. package/dist/sheet/outline.js +228 -0
  218. package/dist/sheet/packs/array.d.ts +16 -0
  219. package/dist/sheet/packs/array.js +172 -0
  220. package/dist/sheet/packs/database.d.ts +42 -0
  221. package/dist/sheet/packs/database.js +142 -0
  222. package/dist/sheet/packs/engineering.d.ts +2 -0
  223. package/dist/sheet/packs/engineering.js +296 -0
  224. package/dist/sheet/packs/financial.d.ts +5 -0
  225. package/dist/sheet/packs/financial.js +220 -0
  226. package/dist/sheet/packs/math-stats.d.ts +2 -0
  227. package/dist/sheet/packs/math-stats.js +372 -0
  228. package/dist/sheet/packs/special.d.ts +44 -0
  229. package/dist/sheet/packs/special.js +187 -0
  230. package/dist/sheet/packs/stats-dist.d.ts +2 -0
  231. package/dist/sheet/packs/stats-dist.js +785 -0
  232. package/dist/sheet/packs/text-date.d.ts +2 -0
  233. package/dist/sheet/packs/text-date.js +332 -0
  234. package/dist/sheet/packs/trig.d.ts +2 -0
  235. package/dist/sheet/packs/trig.js +73 -0
  236. package/dist/sheet/page-setup.d.ts +73 -0
  237. package/dist/sheet/page-setup.js +73 -0
  238. package/dist/sheet/parse.js +42 -10
  239. package/dist/sheet/paste-special.d.ts +22 -0
  240. package/dist/sheet/paste-special.js +14 -5
  241. package/dist/sheet/pivot-range.d.ts +160 -0
  242. package/dist/sheet/pivot-range.js +333 -0
  243. package/dist/sheet/presence.d.ts +73 -0
  244. package/dist/sheet/presence.js +79 -0
  245. package/dist/sheet/print.d.ts +104 -0
  246. package/dist/sheet/print.js +169 -0
  247. package/dist/sheet/protection.d.ts +55 -1
  248. package/dist/sheet/protection.js +55 -2
  249. package/dist/sheet/rects.d.ts +1 -1
  250. package/dist/sheet/refs.d.ts +48 -0
  251. package/dist/sheet/refs.js +155 -8
  252. package/dist/sheet/ribbon-icons.d.ts +1 -1
  253. package/dist/sheet/ribbon-icons.js +186 -0
  254. package/dist/sheet/ribbon.d.ts +1 -1
  255. package/dist/sheet/ribbon.js +324 -23
  256. package/dist/sheet/sheet-kinds.d.ts +74 -0
  257. package/dist/sheet/sheet-kinds.js +91 -0
  258. package/dist/sheet/shortcuts.d.ts +13 -3
  259. package/dist/sheet/shortcuts.js +63 -12
  260. package/dist/sheet/sort.d.ts +51 -0
  261. package/dist/sheet/sort.js +107 -0
  262. package/dist/sheet/sparklines.d.ts +111 -0
  263. package/dist/sheet/sparklines.js +204 -0
  264. package/dist/sheet/table-styles.d.ts +74 -0
  265. package/dist/sheet/table-styles.js +152 -0
  266. package/dist/sheet/tables.d.ts +19 -0
  267. package/dist/sheet/tables.js +31 -0
  268. package/dist/sheet/tokenize.d.ts +18 -1
  269. package/dist/sheet/tokenize.js +60 -9
  270. package/dist/sheet/validation.d.ts +16 -0
  271. package/dist/sheet/validation.js +37 -0
  272. package/dist/sheet/workbook.d.ts +148 -3
  273. package/dist/sheet/workbook.js +742 -31
  274. package/dist/sheet/xls-cfb.d.ts +32 -0
  275. package/dist/sheet/xls-cfb.js +290 -0
  276. package/dist/sheet/xls-document.d.ts +10 -0
  277. package/dist/sheet/xls-document.js +1243 -0
  278. package/dist/sheet/xls-formula.d.ts +40 -0
  279. package/dist/sheet/xls-formula.js +569 -0
  280. package/dist/sheet/xlsx-document.d.ts +108 -0
  281. package/dist/sheet/xlsx-document.js +1849 -0
  282. package/dist/sheet/xlsx-drawing.d.ts +99 -0
  283. package/dist/sheet/xlsx-drawing.js +420 -0
  284. package/dist/sheet-enable.js +6 -7
  285. package/dist/sheet-text.d.ts +7 -0
  286. package/dist/sheet-text.js +29 -0
  287. package/dist/sources/auth-supabase.js +2 -2
  288. package/dist/sources/realtime-supabase.js +2 -2
  289. package/dist/sources/rest.d.ts +6 -2
  290. package/dist/sources/rest.js +42 -7
  291. package/dist/sources/supabase.d.ts +10 -1
  292. package/dist/sources/supabase.js +73 -40
  293. package/dist/studio/emit-project.js +14 -1
  294. package/dist/studio/index.js +1 -1
  295. package/dist/studio/project.d.ts +11 -2
  296. package/dist/studio/project.js +5 -2
  297. package/dist/studio/ui-components.generated.js +107 -2
  298. package/dist/sveltekit/in-memory.d.ts +2 -2
  299. package/dist/sveltekit/in-memory.js +125 -4
  300. package/dist/sveltekit/index.d.ts +1 -1
  301. package/dist/sveltekit/index.js +1 -1
  302. package/dist/sveltekit/query-plan.d.ts +50 -4
  303. package/dist/sveltekit/query-plan.js +25 -3
  304. package/dist/sveltekit/sql-source.d.ts +6 -0
  305. package/dist/sveltekit/sql-source.js +34 -6
  306. package/dist/sveltekit/sql.d.ts +31 -0
  307. package/dist/sveltekit/sql.js +135 -25
  308. package/dist/sveltekit/transport.d.ts +10 -2
  309. package/dist/sveltekit/transport.js +30 -6
  310. package/dist/upgrade-prompt.d.ts +1 -1
  311. package/dist/version.d.ts +1 -1
  312. package/dist/version.js +1 -1
  313. package/dist/watermark.js +35 -2
  314. package/dist/wc/GridMenus-By9vPuq0.js +1088 -0
  315. package/dist/wc/SvChartMenu-CQNrQGT2.js +308 -0
  316. package/dist/wc/SvDateRangeInput-DR6m7bSM.js +199 -0
  317. package/dist/wc/SvDateTimePicker-D-vRnaMo.js +771 -0
  318. package/dist/wc/SvField-B_kurx_P.js +149 -0
  319. package/dist/wc/SvGrid.helpers-BdVDtjUm.js +135 -0
  320. package/dist/wc/SvGridCellEditor-Bnf1Kr5C.js +560 -0
  321. package/dist/wc/SvGridChart-BqUJh2pG.js +3572 -0
  322. package/dist/wc/SvGridChartBuilder-CGycC5cn.js +988 -0
  323. package/dist/wc/SvGridChartPanel-CRnizsHD.js +1746 -0
  324. package/dist/wc/SvGridChartView-D1pa_xMy.js +47 -0
  325. package/dist/wc/SvGridDropdown-45WsObLL.js +259 -0
  326. package/dist/wc/SvModal-DrfOYYyX.js +189 -0
  327. package/dist/wc/cell-formatting-CBfgahv1.js +86 -0
  328. package/dist/wc/chart-6OXlybVT.js +4341 -0
  329. package/dist/wc/chart-export-CeSADGfi.js +135 -0
  330. package/dist/wc/chart-export-pdf-BGko7MER.js +104 -0
  331. package/dist/wc/chart-summary-2m3ia1-n.js +137 -0
  332. package/dist/wc/chart-trend-CQOQtTMl.js +50 -0
  333. package/dist/wc/chart-validate-CD6ptiwg.js +180 -0
  334. package/dist/wc/client-DQIzjDBG.js +3064 -0
  335. package/dist/wc/column-resize-DUPgynvc.js +101 -0
  336. package/dist/wc/date-format-DS-z_h9v.js +1130 -0
  337. package/dist/wc/dismissable-CQ6XFXsk.js +45 -0
  338. package/dist/wc/editor-contract-peBDxir_.js +22 -0
  339. package/dist/wc/editor-registry-DxGKqcvx.js +24 -0
  340. package/dist/wc/focus-trap-Dbb2tJxb.js +65 -0
  341. package/dist/wc/list-option-DrRyivWp.js +82 -0
  342. package/dist/wc/popover-WsGlvtQv.js +69 -0
  343. package/dist/wc/positioning-BiKLfu1E.js +112 -0
  344. package/dist/wc/react.d.ts +41 -0
  345. package/dist/wc/react.js +90 -0
  346. package/dist/wc/rolldown-runtime-Dy4uBu1J.js +11 -0
  347. package/dist/wc/row-drag-touch-CycRR65n.js +93 -0
  348. package/dist/wc/row-resize-limG_N1z.js +111 -0
  349. package/dist/wc/sv-sheet-element.d.ts +97 -0
  350. package/dist/wc/sv-sheet-element.js +44213 -0
  351. package/dist/wc/svelte-virtualizer.svelte-CXtQy2TQ.js +530 -0
  352. package/dist/wc/validate-BqDthkNr.js +88 -0
  353. package/dist/wc/vue.d.ts +31 -0
  354. package/dist/wc/vue.js +75 -0
  355. package/package.json +30 -5
  356. package/dist/designer/assets/GridMenus-BlsvL_aU.js +0 -8
  357. package/dist/designer/assets/SvGridCellEditor-C7uQXYds.js +0 -4
  358. package/dist/designer/assets/SvGridChartBuilder-kvyIU_Rl.js +0 -1
  359. package/dist/designer/assets/SvGridDropdown-Bb3HH2Aj.js +0 -1
  360. package/dist/designer/assets/cell-formatting-wr5wm7US.js +0 -1
  361. package/dist/designer/assets/index-CMFgAoVV.css +0 -1
  362. package/dist/designer/assets/row-resize-DLktcqUK.js +0 -1
  363. package/dist/designer/assets/src-EdI3Xqds.js +0 -58
  364. package/dist/designer/assets/validate-h-aslRV9.js +0 -1
@@ -0,0 +1,28 @@
1
+ import type { Workbook } from './sheet/workbook.js';
2
+ import type { SortKey } from './sheet/sort.js';
3
+ type Block = {
4
+ top: number;
5
+ left: number;
6
+ bottom: number;
7
+ right: number;
8
+ };
9
+ type Props = {
10
+ open?: boolean;
11
+ workbook: Workbook;
12
+ /** The block to sort, and whether its first row looks like headers. */
13
+ block: Block;
14
+ headerGuess: boolean;
15
+ /** The column the dialog opens on: the active cell's. */
16
+ activeCol: number;
17
+ /**
18
+ * A cell's fill or font colour, for a level that sorts on one. Without
19
+ * it the Sort On list offers values only, since there would be no
20
+ * colours to offer.
21
+ */
22
+ colourAt?: (row: number, col: number, on: 'fill' | 'color') => string | null;
23
+ onApply: (keys: SortKey[], hasHeaders: boolean) => void;
24
+ onClose?: () => void;
25
+ };
26
+ declare const SvSheetSort: import("svelte").Component<Props, {}, "open">;
27
+ type SvSheetSort = ReturnType<typeof SvSheetSort>;
28
+ export default SvSheetSort;
@@ -0,0 +1,135 @@
1
+ <script lang="ts">
2
+ /**
3
+ * Excel's Create Sparklines dialog, and its Sparkline Design tab folded
4
+ * into the same box: the kind, the two ranges, the colours, one scale for
5
+ * the group or one each. Opened by Insert > Sparklines, and again by a
6
+ * double-click on a cell that holds one, which is how a group is edited.
7
+ */
8
+ import { SvModal } from '@svgrid/grid'
9
+ import { useSheetText } from './sheet-text'
10
+ import { parseRangeText, rangeText } from './sheet/protection'
11
+ import { SPARKLINE_TYPES, type SheetSparklineType, type SparklineGroup } from './sheet/sparklines'
12
+ import type { Rect } from './sheet/format-store'
13
+
14
+ type Props = {
15
+ open?: boolean
16
+ /** The group as it stands, new or being edited. */
17
+ group: SparklineGroup
18
+ /** True when the group is already on the sheet, which offers Delete. */
19
+ existing?: boolean
20
+ onApply: (group: SparklineGroup) => void
21
+ onDelete?: () => void
22
+ onClose?: () => void
23
+ }
24
+
25
+ let { open = $bindable(false), group, existing = false, onApply, onDelete, onClose }: Props = $props()
26
+ const t = useSheetText()
27
+
28
+ let type = $state<SheetSparklineType>('line')
29
+ let data = $state('')
30
+ let location = $state('')
31
+ let colour = $state('')
32
+ let negative = $state('')
33
+ let sameScale = $state(false)
34
+ let markers = $state(false)
35
+ let error = $state('')
36
+ let first = $state<HTMLSelectElement | null>(null)
37
+
38
+ $effect(() => {
39
+ if (!open) return
40
+ type = group.type
41
+ data = rangeText([group.data])
42
+ location = rangeText([group.location])
43
+ colour = group.color ?? ''
44
+ negative = group.negativeColor ?? ''
45
+ sameScale = Boolean(group.sameScale)
46
+ markers = Boolean(group.markers)
47
+ error = ''
48
+ queueMicrotask(() => first?.focus())
49
+ })
50
+
51
+ /** One rectangle, or null: these two fields take a range, not a list. */
52
+ function oneRect(text: string): Rect | null {
53
+ const rects = parseRangeText(text)
54
+ return rects && rects.length === 1 ? rects[0]! : null
55
+ }
56
+
57
+ /** The location has to hold one cell per line of the data. */
58
+ function shapesAgree(d: Rect, l: Rect): boolean {
59
+ const lines = l[2] - l[0] >= l[3] - l[1] ? d[2] - d[0] : d[3] - d[1]
60
+ const cells = Math.max(l[2] - l[0], l[3] - l[1])
61
+ return lines === cells
62
+ }
63
+
64
+ function ok() {
65
+ const d = oneRect(data)
66
+ const l = oneRect(location)
67
+ if (!d || !l) { error = t('sparklines.badRange'); return }
68
+ if (!shapesAgree(d, l)) { error = t('sparklines.mismatch'); return }
69
+ const next: SparklineGroup = { ...group, type, data: d, location: l, sameScale, markers }
70
+ if (colour.trim()) next.color = colour.trim()
71
+ else delete next.color
72
+ if (negative.trim()) next.negativeColor = negative.trim()
73
+ else delete next.negativeColor
74
+ open = false
75
+ onApply(next)
76
+ onClose?.()
77
+ }
78
+
79
+ function close() {
80
+ open = false
81
+ onClose?.()
82
+ }
83
+ </script>
84
+
85
+ <SvModal bind:open onClose={onClose} title={t('sparklines.title')} size="sm">
86
+ <form class="sv-sheet-dialog" onsubmit={(e) => { e.preventDefault(); ok() }}>
87
+ <label class="field">
88
+ <span>{t('sparklines.type')}</span>
89
+ <select bind:this={first} bind:value={type}>
90
+ {#each SPARKLINE_TYPES as kind (kind)}<option value={kind}>{t(`sparklines.type.${kind}`)}</option>{/each}
91
+ </select>
92
+ </label>
93
+ <label class="field">
94
+ <span>{t('sparklines.data')}</span>
95
+ <input type="text" bind:value={data} spellcheck="false" placeholder={t('sparklines.dataPlaceholder')} />
96
+ </label>
97
+ <label class="field">
98
+ <span>{t('sparklines.location')}</span>
99
+ <input type="text" bind:value={location} spellcheck="false" placeholder={t('sparklines.locationPlaceholder')} />
100
+ </label>
101
+ <label class="field">
102
+ <span>{t('sparklines.colour')}</span>
103
+ <input type="color" value={colour || '#107c41'} oninput={(e) => (colour = e.currentTarget.value)} />
104
+ </label>
105
+ {#if type !== 'line'}
106
+ <label class="field">
107
+ <span>{t('sparklines.negativeColour')}</span>
108
+ <input type="color" value={negative || '#c42b1c'} oninput={(e) => (negative = e.currentTarget.value)} />
109
+ </label>
110
+ {/if}
111
+ <div class="checks">
112
+ <label class="check"><input type="checkbox" bind:checked={sameScale} /> {t('sparklines.sameScale')}</label>
113
+ {#if type === 'line'}
114
+ <label class="check"><input type="checkbox" bind:checked={markers} /> {t('sparklines.markers')}</label>
115
+ {/if}
116
+ </div>
117
+ {#if error}<p class="error">{error}</p>{/if}
118
+ <p class="hint">{t('sparklines.hint')}</p>
119
+ </form>
120
+ {#snippet footer()}
121
+ <div class="sv-sheet-dialog-buttons">
122
+ {#if existing && onDelete}
123
+ <button type="button" class="btn" onclick={() => { open = false; onDelete?.() }}>{t('delete')}</button>
124
+ {/if}
125
+ <span class="spacer"></span>
126
+ <button type="button" class="btn primary" onclick={ok}>{t('ok')}</button>
127
+ <button type="button" class="btn" onclick={close}>{t('cancel')}</button>
128
+ </div>
129
+ {/snippet}
130
+ </SvModal>
131
+
132
+ <style>
133
+ .spacer { flex: 1; }
134
+ .error { margin: 4px 0 0; color: var(--sg-danger, #c42b1c); font-size: 12px; }
135
+ </style>
@@ -0,0 +1,14 @@
1
+ import { type SparklineGroup } from './sheet/sparklines.js';
2
+ type Props = {
3
+ open?: boolean;
4
+ /** The group as it stands, new or being edited. */
5
+ group: SparklineGroup;
6
+ /** True when the group is already on the sheet, which offers Delete. */
7
+ existing?: boolean;
8
+ onApply: (group: SparklineGroup) => void;
9
+ onDelete?: () => void;
10
+ onClose?: () => void;
11
+ };
12
+ declare const SvSheetSparklines: import("svelte").Component<Props, {}, "open">;
13
+ type SvSheetSparklines = ReturnType<typeof SvSheetSparklines>;
14
+ export default SvSheetSparklines;
@@ -0,0 +1,160 @@
1
+ <script lang="ts">
2
+ /**
3
+ * Excel's Create Table dialog: the cells, whether the first row is the
4
+ * header, the name the columns will be read by, and a totals row.
5
+ * Opened by Insert > Table or Ctrl+T, and again on a cell inside one,
6
+ * which is how a table is renamed or resized.
7
+ */
8
+ import { SvModal } from '@svgrid/grid'
9
+ import { useSheetText } from './sheet-text'
10
+ import { parseRangeText, rangeText } from './sheet/protection'
11
+ import { isValidTableName } from './sheet/tables'
12
+ import {
13
+ TABLE_STYLES, DEFAULT_TABLE_STYLE, NO_TABLE_STYLE,
14
+ tableStyleColours, tableStyleLabel,
15
+ } from './sheet/table-styles'
16
+ import type { Rect } from './sheet/format-store'
17
+
18
+ type Props = {
19
+ open?: boolean
20
+ /** The block the table covers, header row included. */
21
+ range: Rect
22
+ name: string
23
+ headers?: boolean
24
+ totals?: boolean
25
+ existing?: boolean
26
+ /** The look, by Excel's name for it, or `'None'`. */
27
+ style?: string
28
+ onApply: (table: { range: Rect; name: string; headers: boolean; totals: boolean; style: string }) => void
29
+ onRemove?: () => void
30
+ onClose?: () => void
31
+ }
32
+
33
+ let {
34
+ open = $bindable(false), range, name, headers = true, totals = false, existing = false,
35
+ style = DEFAULT_TABLE_STYLE, onApply, onRemove, onClose,
36
+ }: Props = $props()
37
+ const t = useSheetText()
38
+
39
+ let where = $state('')
40
+ let label = $state('')
41
+ let hasHeaders = $state(true)
42
+ let hasTotals = $state(false)
43
+ let look = $state(DEFAULT_TABLE_STYLE)
44
+ let error = $state('')
45
+ let first = $state<HTMLInputElement | null>(null)
46
+
47
+ $effect(() => {
48
+ if (!open) return
49
+ where = rangeText([range])
50
+ label = name
51
+ hasHeaders = headers
52
+ hasTotals = totals
53
+ look = style
54
+ error = ''
55
+ queueMicrotask(() => first?.focus())
56
+ })
57
+
58
+ function ok() {
59
+ const rects = parseRangeText(where)
60
+ const block = rects && rects.length === 1 ? rects[0]! : null
61
+ if (!block) { error = t('table.badRange'); return }
62
+ if (!isValidTableName(label.trim())) { error = t('table.badName'); return }
63
+ open = false
64
+ onApply({ range: block as Rect, name: label.trim(), headers: hasHeaders, totals: hasTotals, style: look })
65
+ onClose?.()
66
+ }
67
+
68
+ function close() {
69
+ open = false
70
+ onClose?.()
71
+ }
72
+ </script>
73
+
74
+ <!-- Opened from inside a table it edits that table, so it does not say
75
+ Create: the name, the range and the style are the ones it has. -->
76
+ <SvModal bind:open onClose={onClose} title={t(existing ? 'table.editTitle' : 'table.title')} size="sm">
77
+ <form class="sv-sheet-dialog" onsubmit={(e) => { e.preventDefault(); ok() }}>
78
+ <label class="field">
79
+ <span>{t('table.range')}</span>
80
+ <input type="text" bind:this={first} bind:value={where} spellcheck="false" placeholder={t('table.rangePlaceholder')} />
81
+ </label>
82
+ <label class="field">
83
+ <span>{t('table.name')}</span>
84
+ <input type="text" bind:value={label} spellcheck="false" placeholder={t('table.namePlaceholder')} />
85
+ </label>
86
+ <div class="checks">
87
+ <label class="check"><input type="checkbox" bind:checked={hasHeaders} /> {t('table.headers')}</label>
88
+ <label class="check"><input type="checkbox" bind:checked={hasTotals} /> {t('table.totals')}</label>
89
+ </div>
90
+ <fieldset class="styles">
91
+ <legend>{t('table.style')}</legend>
92
+ <div class="gallery" role="radiogroup" aria-label={t('table.style')}>
93
+ <button
94
+ type="button"
95
+ class="swatch none"
96
+ class:chosen={look === NO_TABLE_STYLE}
97
+ role="radio"
98
+ aria-checked={look === NO_TABLE_STYLE}
99
+ title={t('table.styleNone')}
100
+ aria-label={t('table.styleNone')}
101
+ onclick={() => { look = NO_TABLE_STYLE }}
102
+ ><span class="row head"></span><span class="row"></span><span class="row"></span></button>
103
+ {#each TABLE_STYLES as preset (preset.id)}
104
+ {@const colours = tableStyleColours(preset)}
105
+ <button
106
+ type="button"
107
+ class="swatch"
108
+ class:chosen={look === preset.id}
109
+ role="radio"
110
+ aria-checked={look === preset.id}
111
+ title={tableStyleLabel(preset)}
112
+ aria-label={tableStyleLabel(preset)}
113
+ onclick={() => { look = preset.id }}
114
+ >
115
+ <span class="row head" style={`background:${colours?.header}`}></span>
116
+ <span class="row" style={`background:${colours?.band}`}></span>
117
+ <span class="row"></span>
118
+ </button>
119
+ {/each}
120
+ </div>
121
+ </fieldset>
122
+ {#if error}<p class="error">{error}</p>{/if}
123
+ <p class="hint">{t('table.hint')}</p>
124
+ </form>
125
+ {#snippet footer()}
126
+ <div class="sv-sheet-dialog-buttons">
127
+ {#if existing && onRemove}
128
+ <button type="button" class="btn" onclick={() => { open = false; onRemove?.() }}>{t('delete')}</button>
129
+ {/if}
130
+ <span class="spacer"></span>
131
+ <button type="button" class="btn primary" onclick={ok}>{t('ok')}</button>
132
+ <button type="button" class="btn" onclick={close}>{t('cancel')}</button>
133
+ </div>
134
+ {/snippet}
135
+ </SvModal>
136
+
137
+ <style>
138
+ .spacer { flex: 1; }
139
+ /* The gallery: each swatch is a header band over two body rows, which is
140
+ the smallest drawing that still says what the style will look like. */
141
+ .styles { margin: 8px 0 0; padding: 0; border: 0; }
142
+ .styles legend { padding: 0 0 4px; color: var(--sg-muted, #64748b); font-size: 12px; }
143
+ .gallery { display: grid; grid-template-columns: repeat(6, 1fr); gap: 6px; }
144
+ .swatch {
145
+ display: flex;
146
+ flex-direction: column;
147
+ gap: 1px;
148
+ padding: 2px;
149
+ border: 1px solid var(--sg-border, #d4d4d8);
150
+ border-radius: 3px;
151
+ background: var(--sg-surface, #fff);
152
+ cursor: pointer;
153
+ }
154
+ .swatch .row { display: block; height: 5px; background: var(--sg-surface-2, #f1f5f9); }
155
+ .swatch .row.head { height: 7px; }
156
+ .swatch.none .row.head { background: var(--sg-border, #d4d4d8); }
157
+ .swatch.chosen { outline: 2px solid var(--sg-accent, #107c41); outline-offset: 1px; }
158
+ .swatch:focus-visible { outline: 2px solid var(--sg-accent, #107c41); outline-offset: 1px; }
159
+ .error { margin: 4px 0 0; color: var(--sg-danger, #c42b1c); font-size: 12px; }
160
+ </style>
@@ -0,0 +1,24 @@
1
+ import type { Rect } from './sheet/format-store.js';
2
+ type Props = {
3
+ open?: boolean;
4
+ /** The block the table covers, header row included. */
5
+ range: Rect;
6
+ name: string;
7
+ headers?: boolean;
8
+ totals?: boolean;
9
+ existing?: boolean;
10
+ /** The look, by Excel's name for it, or `'None'`. */
11
+ style?: string;
12
+ onApply: (table: {
13
+ range: Rect;
14
+ name: string;
15
+ headers: boolean;
16
+ totals: boolean;
17
+ style: string;
18
+ }) => void;
19
+ onRemove?: () => void;
20
+ onClose?: () => void;
21
+ };
22
+ declare const SvSheetTable: import("svelte").Component<Props, {}, "open">;
23
+ type SvSheetTable = ReturnType<typeof SvSheetTable>;
24
+ export default SvSheetTable;