@svgrid/grid 1.1.1 → 1.2.1
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/SvGrid.controller.svelte.js +17 -6
- package/dist/SvGrid.css +2012 -2012
- package/dist/SvGrid.svelte +2571 -2346
- package/dist/SvGridDropdown.svelte +7 -3
- package/dist/build-api.js +2 -2
- package/dist/cdn/svgrid.js +13504 -0
- package/dist/cdn/svgrid.svelte-external.js +11188 -0
- package/dist/cell-values.d.ts +1 -1
- package/dist/cell-values.js +7 -7
- package/dist/column-types.js +1 -1
- package/dist/core.d.ts +1 -1
- package/dist/core.js +2 -2
- package/dist/summaries.js +4 -4
- package/package.json +12 -2
- package/src/FlexRender.svelte +96 -96
- package/src/SvGrid.controller.svelte.ts +2363 -2352
- package/src/SvGrid.css +2012 -2012
- package/src/SvGrid.svelte +2571 -2346
- package/src/SvGrid.types.ts +537 -537
- package/src/SvGridDropdown.svelte +7 -3
- package/src/a11y.contract.test.ts +49 -49
- package/src/a11y.test.ts +59 -59
- package/src/a11y.ts +59 -59
- package/src/build-api.ts +683 -683
- package/src/cell-formatting.ts +169 -169
- package/src/cell-values.ts +4 -4
- package/src/column-types.ts +1 -1
- package/src/core.performance.test.ts +30 -30
- package/src/core.ts +1077 -1077
- 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 +669 -669
- package/src/flex-render.ts +3 -3
- package/src/index.ts +208 -208
- package/src/keyboard.test.ts +59 -59
- package/src/keyboard.ts +97 -97
- package/src/merge-objects.ts +48 -48
- package/src/render-component.ts +28 -28
- package/src/spreadsheet.test.ts +489 -489
- package/src/spreadsheet.ts +304 -304
- 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 -412
- package/src/svgrid.features.test.ts +157 -157
- 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/dist/SvGrid.helpers.test.d.ts +0 -1
- package/dist/SvGrid.helpers.test.js +0 -298
- package/dist/SvGridChart.test.d.ts +0 -1
- package/dist/SvGridChart.test.js +0 -62
- package/dist/a11y.contract.test.d.ts +0 -1
- package/dist/a11y.contract.test.js +0 -39
- package/dist/a11y.test.d.ts +0 -1
- package/dist/a11y.test.js +0 -44
- package/dist/aligned-grids.test.d.ts +0 -1
- package/dist/aligned-grids.test.js +0 -75
- package/dist/build-api.coverage.test.d.ts +0 -20
- package/dist/build-api.coverage.test.js +0 -505
- package/dist/cell-formatting.test.d.ts +0 -1
- package/dist/cell-formatting.test.js +0 -234
- package/dist/cell-render.test.d.ts +0 -1
- package/dist/cell-render.test.js +0 -338
- package/dist/chart-export.test.d.ts +0 -1
- package/dist/chart-export.test.js +0 -302
- package/dist/chart.coverage.test.d.ts +0 -1
- package/dist/chart.coverage.test.js +0 -748
- package/dist/chart.test.d.ts +0 -1
- package/dist/chart.test.js +0 -289
- package/dist/clipboard.test.d.ts +0 -1
- package/dist/clipboard.test.js +0 -700
- package/dist/collaboration.coverage.test.d.ts +0 -1
- package/dist/collaboration.coverage.test.js +0 -200
- package/dist/collaboration.test.d.ts +0 -1
- package/dist/collaboration.test.js +0 -65
- package/dist/column-groups.test.d.ts +0 -1
- package/dist/column-groups.test.js +0 -56
- package/dist/column-types.test.d.ts +0 -1
- package/dist/column-types.test.js +0 -62
- package/dist/columns.test.d.ts +0 -1
- package/dist/columns.test.js +0 -625
- package/dist/conditional-formatting.test.d.ts +0 -1
- package/dist/conditional-formatting.test.js +0 -87
- package/dist/core.coverage.test.d.ts +0 -1
- package/dist/core.coverage.test.js +0 -186
- package/dist/core.performance.test.d.ts +0 -1
- package/dist/core.performance.test.js +0 -29
- package/dist/createGrid.test.d.ts +0 -1
- package/dist/createGrid.test.js +0 -9
- package/dist/editing.test.d.ts +0 -1
- package/dist/editing.test.js +0 -732
- package/dist/editors/cell-editors.coverage.test.d.ts +0 -1
- package/dist/editors/cell-editors.coverage.test.js +0 -139
- package/dist/editors/cell-editors.test.d.ts +0 -1
- package/dist/editors/cell-editors.test.js +0 -75
- package/dist/facet-buckets.test.d.ts +0 -1
- package/dist/facet-buckets.test.js +0 -296
- package/dist/fill-patterns.test.d.ts +0 -1
- package/dist/fill-patterns.test.js +0 -81
- package/dist/filter-operators.test.d.ts +0 -1
- package/dist/filter-operators.test.js +0 -135
- package/dist/filtering/excel-filters.test.d.ts +0 -1
- package/dist/filtering/excel-filters.test.js +0 -116
- package/dist/filtering/locale-filter.test.d.ts +0 -13
- package/dist/filtering/locale-filter.test.js +0 -189
- package/dist/flex-render.test.d.ts +0 -1
- package/dist/flex-render.test.js +0 -142
- package/dist/group-aggregate.test.d.ts +0 -1
- package/dist/group-aggregate.test.js +0 -32
- package/dist/hyperformula-adapter.test.d.ts +0 -1
- package/dist/hyperformula-adapter.test.js +0 -205
- package/dist/keyboard-handlers.coverage.test.d.ts +0 -1
- package/dist/keyboard-handlers.coverage.test.js +0 -495
- package/dist/keyboard.test.d.ts +0 -1
- package/dist/keyboard.test.js +0 -27
- package/dist/menus.test.d.ts +0 -1
- package/dist/menus.test.js +0 -560
- package/dist/named-views.coverage.test.d.ts +0 -1
- package/dist/named-views.coverage.test.js +0 -180
- package/dist/named-views.test.d.ts +0 -1
- package/dist/named-views.test.js +0 -57
- package/dist/new-features.test.d.ts +0 -1
- package/dist/new-features.test.js +0 -183
- package/dist/render-component.test.d.ts +0 -1
- package/dist/render-component.test.js +0 -41
- package/dist/row-drag.test.d.ts +0 -1
- package/dist/row-drag.test.js +0 -142
- package/dist/row-resize.test.d.ts +0 -1
- package/dist/row-resize.test.js +0 -329
- package/dist/scroll-sync.test.d.ts +0 -1
- package/dist/scroll-sync.test.js +0 -290
- package/dist/selection.multi-range.test.d.ts +0 -1
- package/dist/selection.multi-range.test.js +0 -55
- package/dist/selection.test.d.ts +0 -1
- package/dist/selection.test.js +0 -647
- package/dist/server-data-source.coverage.test.d.ts +0 -1
- package/dist/server-data-source.coverage.test.js +0 -154
- package/dist/server-data-source.test.d.ts +0 -1
- package/dist/server-data-source.test.js +0 -81
- package/dist/sparkline.test.d.ts +0 -1
- package/dist/sparkline.test.js +0 -52
- package/dist/spreadsheet.test.d.ts +0 -1
- package/dist/spreadsheet.test.js +0 -446
- package/dist/subscribe.test.d.ts +0 -1
- package/dist/subscribe.test.js +0 -93
- package/dist/svgrid.api-extensions.test.d.ts +0 -14
- package/dist/svgrid.api-extensions.test.js +0 -334
- package/dist/svgrid.api.test.d.ts +0 -15
- package/dist/svgrid.api.test.js +0 -169
- package/dist/svgrid.behavior.test.d.ts +0 -15
- package/dist/svgrid.behavior.test.js +0 -625
- package/dist/svgrid.column-reorder.test.d.ts +0 -15
- package/dist/svgrid.column-reorder.test.js +0 -224
- package/dist/svgrid.comments-autocomplete.test.d.ts +0 -1
- package/dist/svgrid.comments-autocomplete.test.js +0 -96
- package/dist/svgrid.context-menu.test.d.ts +0 -1
- package/dist/svgrid.context-menu.test.js +0 -102
- package/dist/svgrid.features.test.d.ts +0 -1
- package/dist/svgrid.features.test.js +0 -129
- package/dist/svgrid.interaction.test.d.ts +0 -9
- package/dist/svgrid.interaction.test.js +0 -349
- package/dist/svgrid.locale-filtering.test.d.ts +0 -15
- package/dist/svgrid.locale-filtering.test.js +0 -261
- package/dist/svgrid.new-features.wrapper.test.d.ts +0 -1
- package/dist/svgrid.new-features.wrapper.test.js +0 -194
- package/dist/svgrid.row-pinning.test.d.ts +0 -14
- package/dist/svgrid.row-pinning.test.js +0 -250
- package/dist/svgrid.set-filter.test.d.ts +0 -17
- package/dist/svgrid.set-filter.test.js +0 -268
- package/dist/svgrid.wrapper.test.d.ts +0 -1
- package/dist/svgrid.wrapper.test.js +0 -59
- package/dist/test-setup.d.ts +0 -1
- package/dist/test-setup.js +0 -35
- package/dist/transaction.test.d.ts +0 -1
- package/dist/transaction.test.js +0 -89
- package/dist/virtualization/column-virtualizer.test.d.ts +0 -1
- package/dist/virtualization/column-virtualizer.test.js +0 -25
- package/dist/virtualization/scroll-scaling.test.d.ts +0 -1
- package/dist/virtualization/scroll-scaling.test.js +0 -127
- package/dist/virtualization/virtualizer.test.d.ts +0 -1
- package/dist/virtualization/virtualizer.test.js +0 -41
package/dist/cell-values.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export declare function getColumnAlign<TData extends RowData>(column: Column<TDa
|
|
|
20
20
|
/**
|
|
21
21
|
* Read a cell value from a PINNED row. Pinned rows aren't bound to a
|
|
22
22
|
* TanStack Row<TData>, so we resolve the value directly off the raw
|
|
23
|
-
* TData via `
|
|
23
|
+
* TData via `fieldFn` or `field`. Mirrors `getColumnBaseValue`'s
|
|
24
24
|
* lookup path minus the Row indirection.
|
|
25
25
|
*/
|
|
26
26
|
export declare function getPinnedCellValue<TData extends RowData>(rowData: TData, column: Column<TData>): unknown;
|
package/dist/cell-values.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { formatNumericWithConfig } from "./cell-formatting";
|
|
2
2
|
export function getColumnBaseValue(row, column) {
|
|
3
3
|
const def = column.columnDef;
|
|
4
|
-
if (def.
|
|
5
|
-
return def.
|
|
4
|
+
if (def.fieldFn)
|
|
5
|
+
return def.fieldFn(row.original);
|
|
6
6
|
if (def.field)
|
|
7
7
|
return row.original[def.field];
|
|
8
8
|
return row.getCellValueByColumnId(column.id);
|
|
@@ -64,13 +64,13 @@ export function getColumnAlign(column) {
|
|
|
64
64
|
/**
|
|
65
65
|
* Read a cell value from a PINNED row. Pinned rows aren't bound to a
|
|
66
66
|
* TanStack Row<TData>, so we resolve the value directly off the raw
|
|
67
|
-
* TData via `
|
|
67
|
+
* TData via `fieldFn` or `field`. Mirrors `getColumnBaseValue`'s
|
|
68
68
|
* lookup path minus the Row indirection.
|
|
69
69
|
*/
|
|
70
70
|
export function getPinnedCellValue(rowData, column) {
|
|
71
71
|
const def = column.columnDef;
|
|
72
|
-
if (def.
|
|
73
|
-
return def.
|
|
72
|
+
if (def.fieldFn)
|
|
73
|
+
return def.fieldFn(rowData);
|
|
74
74
|
const field = def.field;
|
|
75
75
|
if (!field)
|
|
76
76
|
return undefined;
|
|
@@ -78,8 +78,8 @@ export function getPinnedCellValue(rowData, column) {
|
|
|
78
78
|
}
|
|
79
79
|
export function getColumnAccessorValue(rowData, column) {
|
|
80
80
|
const def = column.columnDef;
|
|
81
|
-
if (def.
|
|
82
|
-
return def.
|
|
81
|
+
if (def.fieldFn)
|
|
82
|
+
return def.fieldFn(rowData);
|
|
83
83
|
if (def.field)
|
|
84
84
|
return rowData[def.field];
|
|
85
85
|
return undefined;
|
package/dist/column-types.js
CHANGED
|
@@ -47,7 +47,7 @@ export function resolveColumnTypes(columns, sampleRow, infer) {
|
|
|
47
47
|
let dt = col.cellDataType;
|
|
48
48
|
if (!dt && infer && !hasExplicitEditor && sampleRow != null) {
|
|
49
49
|
const field = col.field;
|
|
50
|
-
const raw = col.
|
|
50
|
+
const raw = col.fieldFn?.(sampleRow) ??
|
|
51
51
|
(typeof field === "string" ? sampleRow[field] : undefined);
|
|
52
52
|
dt = inferCellDataType(raw);
|
|
53
53
|
}
|
package/dist/core.d.ts
CHANGED
|
@@ -129,7 +129,7 @@ export declare function applyGroupAggregate<TData extends RowData>(agg: GroupAgg
|
|
|
129
129
|
export type ColumnDef<TFeatures extends TableFeatures, TData extends RowData> = {
|
|
130
130
|
id?: string;
|
|
131
131
|
field?: keyof TData & string;
|
|
132
|
-
|
|
132
|
+
fieldFn?: (row: TData) => unknown;
|
|
133
133
|
header?: ColumnDefTemplate<HeaderContext<TData>>;
|
|
134
134
|
footer?: ColumnDefTemplate<HeaderContext<TData>>;
|
|
135
135
|
cell?: ColumnDefTemplate<CellContext<TData>>;
|
package/dist/core.js
CHANGED
|
@@ -454,8 +454,8 @@ export function createSvGridCore(options) {
|
|
|
454
454
|
const values = new Array(columnCount);
|
|
455
455
|
for (let i = 0; i < columnCount; i++) {
|
|
456
456
|
const column = columns[i];
|
|
457
|
-
if (column.columnDef.
|
|
458
|
-
values[i] = column.columnDef.
|
|
457
|
+
if (column.columnDef.fieldFn) {
|
|
458
|
+
values[i] = column.columnDef.fieldFn(original);
|
|
459
459
|
}
|
|
460
460
|
else if (column.columnDef.field) {
|
|
461
461
|
values[i] = original[column.columnDef.field];
|
package/dist/summaries.js
CHANGED
|
@@ -13,7 +13,7 @@ export function createSummaries(ctx) {
|
|
|
13
13
|
* trap for every cell otherwise - 5M no-op trap calls on a
|
|
14
14
|
* 100k x 50 grid. Skipping it when the map is empty is the single
|
|
15
15
|
* biggest win here.
|
|
16
|
-
* 2. The column's accessor (`
|
|
16
|
+
* 2. The column's accessor (`fieldFn` / `field`) is resolved once
|
|
17
17
|
* per column, not re-read off `columnDef` for every cell.
|
|
18
18
|
*/
|
|
19
19
|
function computeSummaries(rows, columns) {
|
|
@@ -22,7 +22,7 @@ export function createSummaries(ctx) {
|
|
|
22
22
|
const hasEdits = Object.keys(ctx.editedCellValues).length > 0;
|
|
23
23
|
for (const column of columns) {
|
|
24
24
|
const def = column.columnDef;
|
|
25
|
-
const
|
|
25
|
+
const fieldFn = def.fieldFn;
|
|
26
26
|
const field = def.field;
|
|
27
27
|
const columnId = column.id;
|
|
28
28
|
let numericSum = 0;
|
|
@@ -30,8 +30,8 @@ export function createSummaries(ctx) {
|
|
|
30
30
|
for (let i = 0; i < rowCount; i += 1) {
|
|
31
31
|
const row = rows[i];
|
|
32
32
|
let value;
|
|
33
|
-
const base =
|
|
34
|
-
?
|
|
33
|
+
const base = fieldFn
|
|
34
|
+
? fieldFn(row.original)
|
|
35
35
|
: field
|
|
36
36
|
? row.original[field]
|
|
37
37
|
: row.getCellValueByColumnId(columnId);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@svgrid/grid",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "SvGrid - a headless-first, Svelte 5-native data grid engine and render component.",
|
|
5
5
|
"author": "jQWidgets <boikom@jqwidgets.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -21,12 +21,22 @@
|
|
|
21
21
|
"types": "dist/index.d.ts",
|
|
22
22
|
"module": "dist/index.js",
|
|
23
23
|
"svelte": "./dist/index.js",
|
|
24
|
+
"unpkg": "./dist/cdn/svgrid.js",
|
|
25
|
+
"jsdelivr": "./dist/cdn/svgrid.js",
|
|
24
26
|
"exports": {
|
|
25
27
|
".": {
|
|
26
28
|
"types": "./dist/index.d.ts",
|
|
27
29
|
"svelte": "./dist/index.js",
|
|
28
30
|
"import": "./dist/index.js"
|
|
29
31
|
},
|
|
32
|
+
"./cdn": {
|
|
33
|
+
"import": "./dist/cdn/svgrid.js",
|
|
34
|
+
"default": "./dist/cdn/svgrid.js"
|
|
35
|
+
},
|
|
36
|
+
"./cdn/svelte-external": {
|
|
37
|
+
"import": "./dist/cdn/svgrid.svelte-external.js",
|
|
38
|
+
"default": "./dist/cdn/svgrid.svelte-external.js"
|
|
39
|
+
},
|
|
30
40
|
"./static-functions": {
|
|
31
41
|
"types": "./dist/static-functions.d.ts",
|
|
32
42
|
"svelte": "./dist/static-functions.js",
|
|
@@ -52,7 +62,7 @@
|
|
|
52
62
|
"test:types": "svelte-check --tsconfig ./tsconfig.json",
|
|
53
63
|
"test:lib": "vitest run --coverage",
|
|
54
64
|
"test:build": "publint --strict",
|
|
55
|
-
"build": "svelte-package --input ./src --output ./dist"
|
|
65
|
+
"build": "svelte-package --input ./src --output ./dist && node ../../tools/strip-dist-tests.mjs ./dist && node ./scripts/build-cdn.mjs"
|
|
56
66
|
},
|
|
57
67
|
"devDependencies": {
|
|
58
68
|
"@sveltejs/package": "^2.5.7",
|
package/src/FlexRender.svelte
CHANGED
|
@@ -1,96 +1,96 @@
|
|
|
1
|
-
<script
|
|
2
|
-
lang="ts"
|
|
3
|
-
generics="TData extends RowData"
|
|
4
|
-
>
|
|
5
|
-
import { isFunction } from './core'
|
|
6
|
-
import {
|
|
7
|
-
RenderComponentConfig,
|
|
8
|
-
RenderSnippetConfig,
|
|
9
|
-
} from './render-component'
|
|
10
|
-
import type {
|
|
11
|
-
Cell,
|
|
12
|
-
CellContext,
|
|
13
|
-
ColumnDefTemplate,
|
|
14
|
-
Header,
|
|
15
|
-
HeaderContext,
|
|
16
|
-
RowData,
|
|
17
|
-
} from './core'
|
|
18
|
-
|
|
19
|
-
type Props =
|
|
20
|
-
| {
|
|
21
|
-
content?: ColumnDefTemplate<
|
|
22
|
-
| HeaderContext<TData>
|
|
23
|
-
| CellContext<TData>
|
|
24
|
-
>
|
|
25
|
-
context:
|
|
26
|
-
| HeaderContext<TData>
|
|
27
|
-
| CellContext<TData>
|
|
28
|
-
cell?: never
|
|
29
|
-
header?: never
|
|
30
|
-
footer?: never
|
|
31
|
-
}
|
|
32
|
-
| {
|
|
33
|
-
cell: Cell<TData>
|
|
34
|
-
content?: never
|
|
35
|
-
context?: never
|
|
36
|
-
header?: never
|
|
37
|
-
footer?: never
|
|
38
|
-
}
|
|
39
|
-
| {
|
|
40
|
-
header: Header<TData>
|
|
41
|
-
content?: never
|
|
42
|
-
context?: never
|
|
43
|
-
cell?: never
|
|
44
|
-
footer?: never
|
|
45
|
-
}
|
|
46
|
-
| {
|
|
47
|
-
footer: Header<TData>
|
|
48
|
-
content?: never
|
|
49
|
-
context?: never
|
|
50
|
-
cell?: never
|
|
51
|
-
header?: never
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
let props: Props = $props()
|
|
55
|
-
|
|
56
|
-
const resolved = $derived.by(() => {
|
|
57
|
-
if ('cell' in props && props.cell) {
|
|
58
|
-
return {
|
|
59
|
-
content: props.cell.column.columnDef.cell,
|
|
60
|
-
context: props.cell.getContext(),
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
if ('header' in props && props.header) {
|
|
64
|
-
return {
|
|
65
|
-
content: props.header.column.columnDef.header,
|
|
66
|
-
context: props.header.getContext(),
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
if ('footer' in props && props.footer) {
|
|
70
|
-
return {
|
|
71
|
-
content: props.footer.column.columnDef.footer,
|
|
72
|
-
context: props.footer.getContext(),
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return {
|
|
76
|
-
content: props.content,
|
|
77
|
-
context: props.context,
|
|
78
|
-
}
|
|
79
|
-
})
|
|
80
|
-
|
|
81
|
-
const result = $derived(
|
|
82
|
-
isFunction(resolved.content)
|
|
83
|
-
? resolved.content(resolved.context as any)
|
|
84
|
-
: undefined,
|
|
85
|
-
)
|
|
86
|
-
</script>
|
|
87
|
-
|
|
88
|
-
{#if typeof resolved.content === 'string'}
|
|
89
|
-
{resolved.content}
|
|
90
|
-
{:else if result instanceof RenderComponentConfig}
|
|
91
|
-
<result.component {...result.props} />
|
|
92
|
-
{:else if result instanceof RenderSnippetConfig}
|
|
93
|
-
{@render result.snippet(result.params)}
|
|
94
|
-
{:else if result !== undefined}
|
|
95
|
-
{result}
|
|
96
|
-
{/if}
|
|
1
|
+
<script
|
|
2
|
+
lang="ts"
|
|
3
|
+
generics="TData extends RowData"
|
|
4
|
+
>
|
|
5
|
+
import { isFunction } from './core'
|
|
6
|
+
import {
|
|
7
|
+
RenderComponentConfig,
|
|
8
|
+
RenderSnippetConfig,
|
|
9
|
+
} from './render-component'
|
|
10
|
+
import type {
|
|
11
|
+
Cell,
|
|
12
|
+
CellContext,
|
|
13
|
+
ColumnDefTemplate,
|
|
14
|
+
Header,
|
|
15
|
+
HeaderContext,
|
|
16
|
+
RowData,
|
|
17
|
+
} from './core'
|
|
18
|
+
|
|
19
|
+
type Props =
|
|
20
|
+
| {
|
|
21
|
+
content?: ColumnDefTemplate<
|
|
22
|
+
| HeaderContext<TData>
|
|
23
|
+
| CellContext<TData>
|
|
24
|
+
>
|
|
25
|
+
context:
|
|
26
|
+
| HeaderContext<TData>
|
|
27
|
+
| CellContext<TData>
|
|
28
|
+
cell?: never
|
|
29
|
+
header?: never
|
|
30
|
+
footer?: never
|
|
31
|
+
}
|
|
32
|
+
| {
|
|
33
|
+
cell: Cell<TData>
|
|
34
|
+
content?: never
|
|
35
|
+
context?: never
|
|
36
|
+
header?: never
|
|
37
|
+
footer?: never
|
|
38
|
+
}
|
|
39
|
+
| {
|
|
40
|
+
header: Header<TData>
|
|
41
|
+
content?: never
|
|
42
|
+
context?: never
|
|
43
|
+
cell?: never
|
|
44
|
+
footer?: never
|
|
45
|
+
}
|
|
46
|
+
| {
|
|
47
|
+
footer: Header<TData>
|
|
48
|
+
content?: never
|
|
49
|
+
context?: never
|
|
50
|
+
cell?: never
|
|
51
|
+
header?: never
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
let props: Props = $props()
|
|
55
|
+
|
|
56
|
+
const resolved = $derived.by(() => {
|
|
57
|
+
if ('cell' in props && props.cell) {
|
|
58
|
+
return {
|
|
59
|
+
content: props.cell.column.columnDef.cell,
|
|
60
|
+
context: props.cell.getContext(),
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if ('header' in props && props.header) {
|
|
64
|
+
return {
|
|
65
|
+
content: props.header.column.columnDef.header,
|
|
66
|
+
context: props.header.getContext(),
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if ('footer' in props && props.footer) {
|
|
70
|
+
return {
|
|
71
|
+
content: props.footer.column.columnDef.footer,
|
|
72
|
+
context: props.footer.getContext(),
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
content: props.content,
|
|
77
|
+
context: props.context,
|
|
78
|
+
}
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
const result = $derived(
|
|
82
|
+
isFunction(resolved.content)
|
|
83
|
+
? resolved.content(resolved.context as any)
|
|
84
|
+
: undefined,
|
|
85
|
+
)
|
|
86
|
+
</script>
|
|
87
|
+
|
|
88
|
+
{#if typeof resolved.content === 'string'}
|
|
89
|
+
{resolved.content}
|
|
90
|
+
{:else if result instanceof RenderComponentConfig}
|
|
91
|
+
<result.component {...result.props} />
|
|
92
|
+
{:else if result instanceof RenderSnippetConfig}
|
|
93
|
+
{@render result.snippet(result.params)}
|
|
94
|
+
{:else if result !== undefined}
|
|
95
|
+
{result}
|
|
96
|
+
{/if}
|