@svgrid/grid 1.1.0 → 1.1.2
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.
- package/dist/FlexRender.svelte +96 -96
- package/dist/GridMenus.svelte +205 -127
- package/dist/SvGrid.controller.svelte.d.ts +44 -1
- package/dist/SvGrid.controller.svelte.js +240 -44
- package/dist/SvGrid.css +325 -22
- package/dist/SvGrid.helpers.test.d.ts +1 -0
- package/dist/SvGrid.helpers.test.js +298 -0
- package/dist/SvGrid.svelte +729 -203
- package/dist/SvGrid.types.d.ts +91 -4
- package/dist/aligned-grids.d.ts +6 -0
- package/dist/aligned-grids.js +84 -0
- package/dist/aligned-grids.test.d.ts +1 -0
- package/dist/aligned-grids.test.js +75 -0
- package/dist/build-api.coverage.test.d.ts +20 -0
- package/dist/build-api.coverage.test.js +505 -0
- package/dist/build-api.js +61 -31
- package/dist/cell-render.test.d.ts +1 -0
- package/dist/cell-render.test.js +338 -0
- package/dist/cell-values.d.ts +1 -1
- package/dist/cell-values.js +7 -7
- package/dist/chart-export.test.d.ts +1 -0
- package/dist/chart-export.test.js +302 -0
- package/dist/chart.coverage.test.d.ts +1 -0
- package/dist/chart.coverage.test.js +748 -0
- package/dist/clipboard.js +88 -24
- package/dist/clipboard.test.d.ts +1 -0
- package/dist/clipboard.test.js +700 -0
- package/dist/collaboration.coverage.test.d.ts +1 -0
- package/dist/collaboration.coverage.test.js +200 -0
- package/dist/column-groups.d.ts +19 -0
- package/dist/column-groups.js +62 -0
- package/dist/column-groups.test.d.ts +1 -0
- package/dist/column-groups.test.js +56 -0
- package/dist/column-types.d.ts +10 -0
- package/dist/column-types.js +63 -0
- package/dist/column-types.test.d.ts +1 -0
- package/dist/column-types.test.js +62 -0
- package/dist/columns.test.d.ts +1 -0
- package/dist/columns.test.js +625 -0
- package/dist/core.d.ts +86 -1
- package/dist/core.js +2 -2
- package/dist/editing.d.ts +7 -0
- package/dist/editing.js +191 -5
- package/dist/editing.test.d.ts +1 -0
- package/dist/editing.test.js +732 -0
- package/dist/editors/cell-editors.coverage.test.d.ts +1 -0
- package/dist/editors/cell-editors.coverage.test.js +139 -0
- package/dist/facet-buckets.test.d.ts +1 -0
- package/dist/facet-buckets.test.js +296 -0
- package/dist/filter-operators.test.d.ts +1 -0
- package/dist/filter-operators.test.js +135 -0
- package/dist/hyperformula-adapter.test.d.ts +1 -0
- package/dist/hyperformula-adapter.test.js +205 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.js +4 -1
- package/dist/keyboard-handlers.coverage.test.d.ts +1 -0
- package/dist/keyboard-handlers.coverage.test.js +495 -0
- package/dist/keyboard-handlers.js +7 -2
- package/dist/menus.js +1 -0
- package/dist/menus.test.d.ts +1 -0
- package/dist/menus.test.js +560 -0
- package/dist/named-views.coverage.test.d.ts +1 -0
- package/dist/named-views.coverage.test.js +180 -0
- package/dist/row-drag.d.ts +49 -0
- package/dist/row-drag.js +221 -0
- package/dist/row-drag.test.d.ts +1 -0
- package/dist/row-drag.test.js +142 -0
- package/dist/row-resize.test.d.ts +1 -0
- package/dist/row-resize.test.js +329 -0
- package/dist/scroll-sync.js +3 -0
- package/dist/scroll-sync.test.d.ts +1 -0
- package/dist/scroll-sync.test.js +290 -0
- package/dist/selection.d.ts +7 -1
- package/dist/selection.js +76 -36
- package/dist/selection.multi-range.test.d.ts +1 -0
- package/dist/selection.multi-range.test.js +55 -0
- package/dist/selection.test.d.ts +1 -0
- package/dist/selection.test.js +647 -0
- package/dist/server-data-source.coverage.test.d.ts +1 -0
- package/dist/server-data-source.coverage.test.js +154 -0
- package/dist/spreadsheet.d.ts +30 -0
- package/dist/spreadsheet.js +48 -0
- package/dist/spreadsheet.test.d.ts +1 -0
- package/dist/spreadsheet.test.js +446 -0
- package/dist/summaries.js +4 -4
- package/dist/sv-grid-scrollbar.js +13 -1
- package/dist/svgrid-wrapper.types.d.ts +19 -0
- package/dist/svgrid.behavior.test.js +20 -0
- package/dist/svgrid.interaction.test.js +31 -0
- package/dist/svgrid.new-features.wrapper.test.js +34 -2
- package/dist/test-setup.js +9 -3
- package/dist/virtualization/scroll-scaling.d.ts +17 -0
- package/dist/virtualization/scroll-scaling.js +35 -0
- package/dist/virtualization/scroll-scaling.test.js +42 -1
- package/package.json +2 -1
- package/src/FlexRender.svelte +96 -96
- package/src/GridMenus.svelte +205 -127
- package/src/SvGrid.controller.svelte.ts +204 -36
- package/src/SvGrid.css +277 -12
- package/src/SvGrid.svelte +727 -205
- package/src/SvGrid.types.ts +85 -4
- package/src/a11y.contract.test.ts +49 -49
- package/src/a11y.test.ts +59 -59
- package/src/a11y.ts +59 -59
- package/src/aligned-grids.test.ts +80 -0
- package/src/aligned-grids.ts +87 -0
- package/src/build-api.ts +43 -23
- package/src/cell-formatting.ts +169 -169
- package/src/cell-values.ts +4 -4
- package/src/clipboard.test.ts +49 -0
- package/src/clipboard.ts +51 -23
- package/src/column-groups.test.ts +59 -0
- package/src/column-groups.ts +80 -0
- package/src/column-types.test.ts +68 -0
- package/src/column-types.ts +82 -0
- package/src/core.performance.test.ts +30 -30
- package/src/core.ts +1077 -999
- package/src/createGrid.svelte.ts +42 -42
- package/src/createGrid.test.ts +10 -10
- package/src/createGridState.svelte.ts +17 -17
- package/src/editing.ts +161 -5
- package/src/flex-render.ts +3 -3
- package/src/index.ts +208 -196
- package/src/keyboard.test.ts +59 -59
- package/src/keyboard.ts +97 -97
- package/src/menus.ts +1 -0
- package/src/merge-objects.ts +48 -48
- package/src/render-component.ts +28 -28
- package/src/row-drag.test.ts +168 -0
- package/src/row-drag.ts +255 -0
- package/src/scroll-sync.ts +2 -0
- package/src/selection.multi-range.test.ts +61 -0
- package/src/selection.ts +71 -37
- package/src/spreadsheet.test.ts +46 -2
- package/src/spreadsheet.ts +58 -0
- package/src/static-functions.ts +11 -11
- package/src/subscribe.ts +38 -38
- package/src/summaries.ts +4 -4
- package/src/svgrid-wrapper.types.ts +412 -393
- package/src/svgrid.features.test.ts +157 -157
- package/src/svgrid.new-features.wrapper.test.ts +2 -2
- package/src/svgrid.wrapper.test.ts +40 -40
- package/src/virtualization/column-virtualizer.test.ts +27 -27
- package/src/virtualization/column-virtualizer.ts +30 -30
- package/src/virtualization/svelte-virtualizer.svelte.ts +26 -26
- package/src/virtualization/types.ts +30 -30
- package/src/virtualization/virtualizer.test.ts +47 -47
- package/src/virtualization/virtualizer.ts +296 -296
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
|
package/src/summaries.ts
CHANGED
|
@@ -142,7 +142,7 @@ export function createSummaries<
|
|
|
142
142
|
* trap for every cell otherwise - 5M no-op trap calls on a
|
|
143
143
|
* 100k x 50 grid. Skipping it when the map is empty is the single
|
|
144
144
|
* biggest win here.
|
|
145
|
-
* 2. The column's accessor (`
|
|
145
|
+
* 2. The column's accessor (`fieldFn` / `field`) is resolved once
|
|
146
146
|
* per column, not re-read off `columnDef` for every cell.
|
|
147
147
|
*/
|
|
148
148
|
function computeSummaries(
|
|
@@ -154,7 +154,7 @@ export function createSummaries<
|
|
|
154
154
|
const hasEdits = Object.keys(ctx.editedCellValues).length > 0;
|
|
155
155
|
for (const column of columns) {
|
|
156
156
|
const def = column.columnDef;
|
|
157
|
-
const
|
|
157
|
+
const fieldFn = def.fieldFn;
|
|
158
158
|
const field = def.field;
|
|
159
159
|
const columnId = column.id;
|
|
160
160
|
let numericSum = 0;
|
|
@@ -162,8 +162,8 @@ export function createSummaries<
|
|
|
162
162
|
for (let i = 0; i < rowCount; i += 1) {
|
|
163
163
|
const row = rows[i]!;
|
|
164
164
|
let value: unknown;
|
|
165
|
-
const base =
|
|
166
|
-
?
|
|
165
|
+
const base = fieldFn
|
|
166
|
+
? fieldFn(row.original)
|
|
167
167
|
: field
|
|
168
168
|
? (row.original as Record<string, unknown>)[field]
|
|
169
169
|
: row.getCellValueByColumnId(columnId);
|