@svgrid/grid 2.0.1 → 2.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 (85) hide show
  1. package/dist/FlexRender.svelte +96 -96
  2. package/dist/GridFooter.svelte +178 -178
  3. package/dist/SvGrid.css +2377 -2376
  4. package/dist/SvGrid.svelte +2764 -2764
  5. package/dist/SvGridBoard.svelte +2281 -2281
  6. package/dist/SvGridDropdown.svelte +666 -666
  7. package/dist/cdn/svgrid.js +3 -3
  8. package/dist/cdn/svgrid.svelte-external.js +3 -3
  9. package/dist/themes/index.d.ts +45 -0
  10. package/dist/themes/index.js +132 -0
  11. package/package.json +92 -85
  12. package/src/FlexRender.svelte +96 -96
  13. package/src/GridFooter.svelte +178 -178
  14. package/src/SvGrid.controller.svelte.ts +2553 -2553
  15. package/src/SvGrid.css +2377 -2376
  16. package/src/SvGrid.svelte +2764 -2764
  17. package/src/SvGrid.types.ts +944 -944
  18. package/src/SvGridBoard.svelte +2281 -2281
  19. package/src/SvGridDropdown.svelte +666 -666
  20. package/src/a11y.contract.test.ts +49 -49
  21. package/src/a11y.test.ts +59 -59
  22. package/src/a11y.ts +61 -61
  23. package/src/build-api.ts +798 -798
  24. package/src/cell-formatting.ts +169 -169
  25. package/src/cell-render.ts +469 -469
  26. package/src/collaboration.test.ts +104 -104
  27. package/src/collaboration.ts +167 -167
  28. package/src/core.performance.test.ts +30 -30
  29. package/src/core.ts +1111 -1111
  30. package/src/createGrid.svelte.ts +42 -42
  31. package/src/createGrid.test.ts +10 -10
  32. package/src/createGridState.svelte.ts +17 -17
  33. package/src/editing.test.ts +859 -859
  34. package/src/editing.ts +675 -675
  35. package/src/export-data-api.test.ts +126 -126
  36. package/src/export-format.test.ts +107 -107
  37. package/src/export-format.ts +598 -598
  38. package/src/flex-render.ts +3 -3
  39. package/src/index.ts +463 -463
  40. package/src/keyboard.test.ts +59 -59
  41. package/src/keyboard.ts +97 -97
  42. package/src/menus.ts +582 -582
  43. package/src/merge-objects.ts +48 -48
  44. package/src/render-component.ts +28 -28
  45. package/src/selection.test.ts +754 -754
  46. package/src/selection.ts +600 -600
  47. package/src/server-data-source.test.ts +289 -289
  48. package/src/server-data-source.ts +413 -413
  49. package/src/sparkline.test.ts +68 -68
  50. package/src/sparkline.ts +169 -169
  51. package/src/spreadsheet.test.ts +489 -489
  52. package/src/spreadsheet.ts +304 -304
  53. package/src/static-functions.ts +11 -11
  54. package/src/subscribe.ts +38 -38
  55. package/src/svgrid-wrapper.types.ts +439 -439
  56. package/src/svgrid.behavior.test.ts +706 -706
  57. package/src/svgrid.features.test.ts +157 -157
  58. package/src/svgrid.new-features.wrapper.test.ts +251 -251
  59. package/src/svgrid.wrapper.test.ts +40 -40
  60. package/src/themes/index.ts +159 -0
  61. package/src/virtualization/column-virtualizer.test.ts +27 -27
  62. package/src/virtualization/column-virtualizer.ts +30 -30
  63. package/src/virtualization/svelte-virtualizer.svelte.ts +26 -26
  64. package/src/virtualization/types.ts +30 -30
  65. package/src/virtualization/virtualizer.test.ts +47 -47
  66. package/src/virtualization/virtualizer.ts +296 -296
  67. package/themes/ag-alpine.css +59 -0
  68. package/themes/antd.css +59 -0
  69. package/themes/atlassian.css +59 -0
  70. package/themes/bootstrap.css +59 -0
  71. package/themes/carbon.css +59 -0
  72. package/themes/catppuccin.css +59 -0
  73. package/themes/dracula.css +59 -0
  74. package/themes/excel.css +59 -0
  75. package/themes/fluent.css +59 -0
  76. package/themes/github.css +59 -0
  77. package/themes/linear.css +59 -0
  78. package/themes/material.css +59 -0
  79. package/themes/nord.css +59 -0
  80. package/themes/notion.css +59 -0
  81. package/themes/salesforce.css +59 -0
  82. package/themes/sap.css +59 -0
  83. package/themes/shadcn.css +59 -0
  84. package/themes/tailwind.css +59 -0
  85. package/themes/vercel.css +59 -0
package/src/subscribe.ts CHANGED
@@ -1,38 +1,38 @@
1
- import type { RowData, SvGrid, TableFeatures } from './core'
2
-
3
- const shallowCompare = (a: unknown, b: unknown) => {
4
- if (Object.is(a, b)) return true
5
- if (!a || !b || typeof a !== 'object' || typeof b !== 'object') return false
6
- const aObj = a as Record<string, unknown>
7
- const bObj = b as Record<string, unknown>
8
- const aKeys = Object.keys(aObj)
9
- const bKeys = Object.keys(bObj)
10
- if (aKeys.length !== bKeys.length) return false
11
- return aKeys.every((key) => Object.is(aObj[key], bObj[key]))
12
- }
13
-
14
- /**
15
- * Fine-grained subscription to `table.store` using `useSelector` with shallow
16
- * comparison. Call from `<script>` so the selector is contextually typed.
17
- */
18
- export function subscribeGrid<
19
- TFeatures extends TableFeatures,
20
- TData extends RowData,
21
- TSelected,
22
- >(
23
- grid: SvGrid<TData>,
24
- selector: (state: Record<string, any>) => TSelected,
25
- ) {
26
- let current = selector(grid.store.state)
27
- grid.store.subscribe(() => {
28
- const next = selector(grid.store.state)
29
- if (!shallowCompare(current, next)) current = next
30
- })
31
- return {
32
- get current() {
33
- return current
34
- },
35
- }
36
- }
37
-
38
- export const subscribeSvGrid = subscribeGrid
1
+ import type { RowData, SvGrid, TableFeatures } from './core'
2
+
3
+ const shallowCompare = (a: unknown, b: unknown) => {
4
+ if (Object.is(a, b)) return true
5
+ if (!a || !b || typeof a !== 'object' || typeof b !== 'object') return false
6
+ const aObj = a as Record<string, unknown>
7
+ const bObj = b as Record<string, unknown>
8
+ const aKeys = Object.keys(aObj)
9
+ const bKeys = Object.keys(bObj)
10
+ if (aKeys.length !== bKeys.length) return false
11
+ return aKeys.every((key) => Object.is(aObj[key], bObj[key]))
12
+ }
13
+
14
+ /**
15
+ * Fine-grained subscription to `table.store` using `useSelector` with shallow
16
+ * comparison. Call from `<script>` so the selector is contextually typed.
17
+ */
18
+ export function subscribeGrid<
19
+ TFeatures extends TableFeatures,
20
+ TData extends RowData,
21
+ TSelected,
22
+ >(
23
+ grid: SvGrid<TData>,
24
+ selector: (state: Record<string, any>) => TSelected,
25
+ ) {
26
+ let current = selector(grid.store.state)
27
+ grid.store.subscribe(() => {
28
+ const next = selector(grid.store.state)
29
+ if (!shallowCompare(current, next)) current = next
30
+ })
31
+ return {
32
+ get current() {
33
+ return current
34
+ },
35
+ }
36
+ }
37
+
38
+ export const subscribeSvGrid = subscribeGrid