@ishibashi0112/spreadsheet-grid 0.16.0 → 0.18.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.
- package/README.md +18 -6
- package/dist/CellEditorLayer.d.ts +3 -1
- package/dist/SpreadsheetGrid.d.ts +1 -1
- package/dist/hooks/useGridClipboardController.d.ts +3 -1
- package/dist/hooks/useGridEditController.d.ts +3 -1
- package/dist/hooks/useServerSideRowModel.d.ts +9 -1
- package/dist/index.cjs +8 -8
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2260 -2022
- package/dist/logic/clearCells.d.ts +9 -0
- package/dist/logic/serverSideCache.d.ts +1 -0
- package/dist/logic/serverSideEdits.d.ts +16 -0
- package/dist/model/gridTypes.d.ts +30 -0
- package/dist/style.css +1 -1
- package/dist/utils/clipboard.d.ts +2 -0
- package/dist/view/GridBodyLayer.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CellCoord, GridColumn, GridSelection } from '../model/gridTypes';
|
|
2
|
+
import type { ServerSideCellEditInput } from './serverSideEdits';
|
|
2
3
|
type ClearTarget = {
|
|
3
4
|
startRow: number;
|
|
4
5
|
endRow: number;
|
|
@@ -19,4 +20,12 @@ export declare const clearCellsInSelection: <T extends object>({ rows, resolveSo
|
|
|
19
20
|
nextRows: T[];
|
|
20
21
|
changed: boolean;
|
|
21
22
|
};
|
|
23
|
+
export declare const buildClearCellEdits: <T extends object>({ getRow, columns, selection, activeCell, viewRowCount, canWriteCell, }: {
|
|
24
|
+
getRow: (viewIndex: number) => T | undefined;
|
|
25
|
+
columns: GridColumn<T>[];
|
|
26
|
+
selection: GridSelection;
|
|
27
|
+
activeCell: CellCoord | null;
|
|
28
|
+
viewRowCount: number;
|
|
29
|
+
canWriteCell: (viewIndex: number, colIndex: number, row: T, column: GridColumn<T>) => boolean;
|
|
30
|
+
}) => ServerSideCellEditInput<T>[];
|
|
22
31
|
export {};
|
|
@@ -6,6 +6,7 @@ export type ServerSideRowCache<T> = {
|
|
|
6
6
|
getRow: (viewIndex: number) => T | undefined;
|
|
7
7
|
hasBlock: (blockIndex: number) => boolean;
|
|
8
8
|
setBlock: (blockIndex: number, rows: T[]) => void;
|
|
9
|
+
updateRow: (viewIndex: number, row: T) => boolean;
|
|
9
10
|
touchBlocks: (blockIndexes: number[]) => void;
|
|
10
11
|
clear: () => void;
|
|
11
12
|
loadedBlockIndexes: () => number[];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { GridColumn, GridRowKey, ServerSideRowUpdate } from '../model/gridTypes';
|
|
2
|
+
export type ServerSideCellEditInput<T> = {
|
|
3
|
+
viewIndex: number;
|
|
4
|
+
column: GridColumn<T>;
|
|
5
|
+
value: unknown;
|
|
6
|
+
};
|
|
7
|
+
export type ServerSidePendingEdits<T> = {
|
|
8
|
+
getRow: (viewIndex: number) => T | undefined;
|
|
9
|
+
beginWrite: (viewIndex: number, row: T) => number;
|
|
10
|
+
isLatestWrite: (viewIndex: number, writeId: number) => boolean;
|
|
11
|
+
settleWrite: (viewIndex: number, writeId: number) => void;
|
|
12
|
+
clear: () => void;
|
|
13
|
+
pendingCount: () => number;
|
|
14
|
+
};
|
|
15
|
+
export declare const createServerSidePendingEdits: <T>() => ServerSidePendingEdits<T>;
|
|
16
|
+
export declare const buildServerSideRowUpdates: <T>(edits: ServerSideCellEditInput<T>[], getBaseRow: (viewIndex: number) => T | undefined, getRowKey: (row: T, viewIndex: number) => GridRowKey) => ServerSideRowUpdate<T>[];
|
|
@@ -23,14 +23,36 @@ export type ServerSideGetRowsResult<T> = {
|
|
|
23
23
|
};
|
|
24
24
|
export type ServerSideDataSource<T> = {
|
|
25
25
|
getRows: (params: ServerSideGetRowsParams) => Promise<ServerSideGetRowsResult<T>>;
|
|
26
|
+
updateRows?: (params: ServerSideUpdateRowsParams<T>) => Promise<ServerSideUpdateRowsResult<T> | void>;
|
|
26
27
|
initialRowCount?: number;
|
|
27
28
|
blockSize?: number;
|
|
28
29
|
maxCachedBlocks?: number;
|
|
29
30
|
};
|
|
31
|
+
export type ServerSideCellChange = {
|
|
32
|
+
columnKey: string;
|
|
33
|
+
previousValue: unknown;
|
|
34
|
+
newValue: unknown;
|
|
35
|
+
};
|
|
36
|
+
export type ServerSideRowUpdate<T> = {
|
|
37
|
+
rowKey: GridRowKey;
|
|
38
|
+
rowIndex: number;
|
|
39
|
+
row: T;
|
|
40
|
+
previousRow: T;
|
|
41
|
+
changes: ServerSideCellChange[];
|
|
42
|
+
};
|
|
43
|
+
export type ServerSideUpdateRowsParams<T> = {
|
|
44
|
+
updates: ServerSideRowUpdate<T>[];
|
|
45
|
+
};
|
|
46
|
+
export type ServerSideUpdateRowsResult<T> = {
|
|
47
|
+
rows?: T[];
|
|
48
|
+
};
|
|
30
49
|
export type ServerSideLoadErrorParams = {
|
|
31
50
|
startIndex: number;
|
|
32
51
|
endIndex: number;
|
|
33
52
|
};
|
|
53
|
+
export type ServerSideWriteErrorParams<T> = {
|
|
54
|
+
updates: ServerSideRowUpdate<T>[];
|
|
55
|
+
};
|
|
34
56
|
export type CellCoord = {
|
|
35
57
|
row: number;
|
|
36
58
|
col: number;
|
|
@@ -121,6 +143,8 @@ export type ColumnFilterValue = SetColumnFilterValue | NumberColumnFilterValue |
|
|
|
121
143
|
export type CellRenderContext<T> = {
|
|
122
144
|
row: T;
|
|
123
145
|
rowIndex: number;
|
|
146
|
+
sourceRowIndex: number;
|
|
147
|
+
rowKey: GridRowKey;
|
|
124
148
|
colIndex: number;
|
|
125
149
|
value: unknown;
|
|
126
150
|
column: GridColumn<T>;
|
|
@@ -133,6 +157,8 @@ export type CellRenderContext<T> = {
|
|
|
133
157
|
export type CellStyleContext<T> = {
|
|
134
158
|
row: T;
|
|
135
159
|
rowIndex: number;
|
|
160
|
+
sourceRowIndex: number;
|
|
161
|
+
rowKey: GridRowKey;
|
|
136
162
|
colIndex: number;
|
|
137
163
|
value: unknown;
|
|
138
164
|
column: GridColumn<T>;
|
|
@@ -186,6 +212,8 @@ export type GridColumnEditor<T> = {
|
|
|
186
212
|
export type CellEditorContext<T> = {
|
|
187
213
|
row: T;
|
|
188
214
|
rowIndex: number;
|
|
215
|
+
sourceRowIndex: number;
|
|
216
|
+
rowKey: GridRowKey;
|
|
189
217
|
colIndex: number;
|
|
190
218
|
column: GridColumn<T>;
|
|
191
219
|
value: unknown;
|
|
@@ -486,6 +514,7 @@ export type SpreadsheetGridProps<T> = {
|
|
|
486
514
|
dataSource?: ServerSideDataSource<T>;
|
|
487
515
|
serverSideRefreshToken?: number;
|
|
488
516
|
onServerSideLoadError?: (error: unknown, params: ServerSideLoadErrorParams) => void;
|
|
517
|
+
onServerSideWriteError?: (error: unknown, params: ServerSideWriteErrorParams<T>) => void;
|
|
489
518
|
columns: GridColumn<T>[];
|
|
490
519
|
onRowsChange?: (nextRows: T[]) => void;
|
|
491
520
|
onColumnsChange?: (nextColumns: GridColumn<T>[]) => void;
|
|
@@ -520,6 +549,7 @@ export type SpreadsheetGridProps<T> = {
|
|
|
520
549
|
enableColumnResize?: boolean;
|
|
521
550
|
autoSizeColumns?: AutoSizeColumnsMode;
|
|
522
551
|
showCellOverflowTooltip?: boolean;
|
|
552
|
+
showValidationMarks?: boolean;
|
|
523
553
|
enableRowHover?: boolean;
|
|
524
554
|
enableColumnHeaderHover?: boolean;
|
|
525
555
|
enableColumnMenu?: boolean;
|
package/dist/style.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
:where(.ssg-root,.ssg-popover,.ssg-menu-panel,.ssg-filter-popover,.ssg-select-editor-popover,[data-grid-drag-ghost],.ssg-tooltip){--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ssg-accent:#3461c9;--ssg-accent-strong:#1d4ed8;--ssg-line:#f1f5f9;--ssg-line-strong:#e5e7eb;--ssg-divider:#d7dce3;--ssg-header-bg:#f8fafc;--ssg-row-hover-bg:#f1f5f9;--ssg-glyph:#94a3b8;--ssg-glyph-hover:#475569;--ssg-icon-hover-bg:#d6dee8;--ssg-icon-active-bg:#e3e9f5;--ssg-icon-active-bg-hover:#d4ddf0;--ssg-icon-active-border:#c7d3ea;--ssg-cell-bg:#fff;--ssg-cell-text:#0f172a;--ssg-readonly-bg:#f8fafc;--ssg-readonly-text:#64748b;--ssg-readonly-hover-bg:#eef2f7;--ssg-header-text:#334155;--ssg-header-hover-bg:#e2e8f0;--ssg-select-bg:#e3e9f5;--ssg-select-bg-hover:#ccd7ee;--ssg-row-selected-bg:#eff4ff;--ssg-checkbox-border:#94a3b8;--ssg-checkbox-bg:#fff;--ssg-checkbox-checked-bg:var(--ssg-accent);--ssg-checkbox-checked-mark:#fff;--ssg-checkbox-hover-border:var(--ssg-accent);--ssg-selection-fill:#3461c914;--ssg-radius:8px;--ssg-icon-btn-size:20px;--ssg-cell-pad-x:10px;--ssg-bar-pad-x:10px;--ssg-bar-pad-y:5px;--ssg-panel-bg:#fff;--ssg-panel-border:#cbd5e1;--ssg-panel-separator:#e2e8f0;--ssg-panel-text-strong:#1e293b;--ssg-panel-text:#334155;--ssg-panel-text-sub:#475569;--ssg-panel-text-muted:#64748b;--ssg-panel-text-faint:#94a3b8;--ssg-panel-text-disabled:#cbd5e1;--ssg-panel-hover-bg:#f1f5f9;--ssg-panel-hover-bg-subtle:#f8fafc;--ssg-panel-accent:#2563eb;--ssg-panel-accent-bg:#eff6ff;--ssg-panel-accent-text:var(--ssg-accent-strong);--ssg-panel-accent-contrast:#fff;--ssg-danger:#dc2626;--ssg-danger-bg:#fef2f2;--ssg-seg-track-bg:#f1f3f5;--ssg-seg-indicator-bg:#fff;--ssg-seg-indicator-shadow:0 1px 3px #0f172a2e;--ssg-root-shadow:0 4px 14px #0f172a0a;--ssg-panel-shadow:0 12px 28px #0f172a29;--ssg-popover-shadow:0 10px 24px #0f172a1f;--ssg-overlay-chip-shadow:0 6px 20px #0f172a2e;--ssg-pane-border:#cbd5e1;--ssg-pane-shadow-left:6px 0 8px -6px #0f172a59;--ssg-pane-shadow-right:-6px 0 8px -6px #0f172a59;--ssg-pill-bg:#0f172ad1;--ssg-pill-text:#f8fafc;--ssg-pill-shadow:0 6px 20px #0f172a40;--ssg-ghost-bg:#1e293b;--ssg-ghost-text:#f8fafc;--ssg-ghost-border:#ffffff1a;--ssg-ghost-shadow:0 8px 20px #02061757, 0 1px 2px #0206173d;--ssg-tooltip-bg:#1e293b;--ssg-tooltip-text:#f8fafc;--ssg-tooltip-shadow:0 4px 12px #02061740;--ssg-invalid:#ef4444;--ssg-invalid-bg:#ef444414;--ssg-drop-indicator:#0f172a;--ssg-glyph-faint:#cbd5e1;--ssg-skeleton-bar:#e2e8f0}:where(.ssg-root--density-compact){--ssg-cell-pad-x:6px;--ssg-bar-pad-x:8px;--ssg-bar-pad-y:3px;--ssg-icon-btn-size:18px}:where(.ssg-root--density-comfortable){--ssg-cell-pad-x:14px;--ssg-bar-pad-x:12px;--ssg-bar-pad-y:7px;--ssg-icon-btn-size:22px}:where(.ssg-root--density-compact) .ssg-body-cell{font-size:.85em}:where(.ssg-root--density-comfortable) .ssg-body-cell{font-size:1.1em}:where(.ssg-theme-dark){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ssg-accent:#4dabf7;--ssg-accent-strong:#74c0fc;--ssg-line:#212226;--ssg-line-strong:#2c2e33;--ssg-divider:#373a40;--ssg-header-bg:#25262b;--ssg-row-hover-bg:#25262b;--ssg-glyph:#909296;--ssg-glyph-hover:#c1c2c5;--ssg-glyph-faint:#5c5f66;--ssg-icon-hover-bg:#2c2e33;--ssg-icon-active-bg:#24344d;--ssg-icon-active-bg-hover:#2b3f5e;--ssg-icon-active-border:#3a5378;--ssg-cell-bg:#1a1b1e;--ssg-cell-text:#c1c2c5;--ssg-readonly-bg:#1f2023;--ssg-readonly-text:#909296;--ssg-readonly-hover-bg:#26272c;--ssg-header-text:#c1c2c5;--ssg-header-hover-bg:#2c2e33;--ssg-select-bg:#24344d;--ssg-select-bg-hover:#2b3f5e;--ssg-row-selected-bg:#1e2c44;--ssg-checkbox-border:#5c5f66;--ssg-checkbox-bg:#1a1b1e;--ssg-checkbox-checked-mark:#141517;--ssg-selection-fill:#4dabf721;--ssg-panel-bg:#25262b;--ssg-panel-border:#373a40;--ssg-panel-separator:#2c2e33;--ssg-panel-text-strong:#f1f3f5;--ssg-panel-text:#c1c2c5;--ssg-panel-text-sub:#a6a7ab;--ssg-panel-text-muted:#909296;--ssg-panel-text-faint:#5c5f66;--ssg-panel-text-disabled:#43464d;--ssg-panel-hover-bg:#2c2e33;--ssg-panel-hover-bg-subtle:#26272c;--ssg-panel-accent:#4dabf7;--ssg-panel-accent-bg:#1d3450;--ssg-panel-accent-contrast:#141517;--ssg-danger:#ff6b6b;--ssg-danger-bg:#3a2325;--ssg-seg-track-bg:#1e1f23;--ssg-seg-indicator-bg:#373a40;--ssg-seg-indicator-shadow:0 1px 3px #00000080;--ssg-root-shadow:0 4px 14px #0006;--ssg-panel-shadow:0 12px 28px #0000008c;--ssg-popover-shadow:0 10px 24px #00000080;--ssg-overlay-chip-shadow:0 6px 20px #00000073;--ssg-pane-border:#373a40;--ssg-pane-shadow-left:6px 0 8px -6px #0000008c;--ssg-pane-shadow-right:-6px 0 8px -6px #0000008c;--ssg-pill-bg:#373a40f2;--ssg-pill-text:#f1f3f5;--ssg-pill-shadow:0 6px 20px #00000073;--ssg-ghost-bg:#373a40;--ssg-ghost-text:#f1f3f5;--ssg-ghost-border:#ffffff1f;--ssg-ghost-shadow:0 8px 20px #00000080, 0 1px 2px #00000059;--ssg-tooltip-bg:#373a40;--ssg-tooltip-text:#f1f3f5;--ssg-tooltip-shadow:0 4px 12px #00000073;--ssg-invalid:#f87171;--ssg-invalid-bg:#f8717124;--ssg-drop-indicator:#c1c2c5;--ssg-skeleton-bar:#2c2e33}:where(.ssg-root,.ssg-popover,.ssg-menu-panel,.ssg-filter-popover,.ssg-tooltip),:where(.ssg-root,.ssg-popover,.ssg-menu-panel,.ssg-filter-popover,.ssg-tooltip) :where(*),:where(.ssg-root,.ssg-popover,.ssg-menu-panel,.ssg-filter-popover,.ssg-tooltip) :where(*):before,:where(.ssg-root,.ssg-popover,.ssg-menu-panel,.ssg-filter-popover,.ssg-tooltip) :where(*):after{box-sizing:border-box}.ssg-root{border:1px solid var(--ssg-divider);border-radius:var(--ssg-radius);background-color:var(--ssg-cell-bg);box-shadow:var(--ssg-root-shadow);overflow:hidden}.ssg-icon-btn{width:var(--ssg-icon-btn-size);height:var(--ssg-icon-btn-size);color:var(--ssg-glyph);cursor:pointer;background-color:#0000;border:1px solid #0000;border-radius:6px;flex:none;justify-content:center;align-items:center;padding:0;font-size:11px;line-height:1;transition:background-color .1s,color .1s;display:inline-flex}.ssg-icon-btn:hover{background-color:var(--ssg-icon-hover-bg);color:var(--ssg-glyph-hover)}.ssg-icon-btn--active{border-color:var(--ssg-icon-active-border);background-color:var(--ssg-icon-active-bg);color:var(--ssg-accent)}.ssg-icon-btn--active:hover{background-color:var(--ssg-icon-active-bg-hover);color:var(--ssg-accent)}.ssg-body-cell{box-sizing:border-box;padding:0 var(--ssg-cell-pad-x);border-right:1px solid var(--ssg-line);border-bottom:1px solid var(--ssg-line-strong);background-color:var(--ssg-cell-bg);color:var(--ssg-cell-text);white-space:nowrap;cursor:default;-webkit-user-select:none;user-select:none;outline:none;align-items:center;display:flex;position:absolute;top:0;overflow:hidden}.ssg-body-cell--autoheight{white-space:normal;word-break:break-word;align-items:flex-start;overflow:visible}.ssg-body-cell--align-center{text-align:center;justify-content:center}.ssg-body-cell--align-right{text-align:right;justify-content:flex-end}.ssg-body-cell--row-hovered{background-color:var(--ssg-row-hover-bg)}:where(.ssg-root--dim-readonly) .ssg-body-cell--readonly{background-color:var(--ssg-readonly-bg);color:var(--ssg-readonly-text)}:where(.ssg-root--dim-readonly) .ssg-body-cell--readonly.ssg-body-cell--row-hovered{background-color:var(--ssg-readonly-hover-bg)}.ssg-header-row{z-index:6;background-color:var(--ssg-header-bg);position:sticky;top:0}.ssg-header-cell{box-sizing:border-box;border-right:1px solid var(--ssg-line);border-bottom:1px solid var(--ssg-divider);background-color:var(--ssg-header-bg);color:var(--ssg-header-text);align-items:center;gap:4px;padding:0 6px;font-size:13px;font-weight:600;display:flex;position:absolute;top:0}.ssg-header-cell--hovered{background-color:var(--ssg-header-hover-bg)}.ssg-header-cell--selected{background-color:var(--ssg-select-bg)}.ssg-header-cell--selected.ssg-header-cell--hovered{background-color:var(--ssg-select-bg-hover)}.ssg-row-header-cell{z-index:5;justify-content:center;font-weight:500;left:0}.ssg-corner-cell{z-index:7;border-right:1px solid var(--ssg-line-strong);justify-content:center;padding:0;line-height:1;left:0}.ssg-row-checkbox{box-sizing:border-box;border:1.5px solid var(--ssg-checkbox-border);background-color:var(--ssg-checkbox-bg);border-radius:4px;width:16px;height:16px;transition:background-color .12s,border-color .12s;display:inline-block;position:relative}.ssg-row-checkbox[data-state=checked],.ssg-row-checkbox[data-state=indeterminate]{border-color:var(--ssg-checkbox-checked-bg);background-color:var(--ssg-checkbox-checked-bg)}.ssg-row-checkbox[data-state=checked]:after{content:"";border:solid var(--ssg-checkbox-checked-mark);border-width:0 2px 2px 0;width:6px;height:10px;position:absolute;top:1.5px;left:4.5px;transform:rotate(45deg)}.ssg-row-checkbox[data-state=indeterminate]:after{content:"";background-color:var(--ssg-checkbox-checked-mark);border-radius:1px;height:2px;position:absolute;top:6.5px;left:3px;right:3px}.ssg-row-checkbox[data-disabled=true]{opacity:.45}.ssg-row-header-cell--checkbox:hover .ssg-row-checkbox[data-state=unchecked],.ssg-corner-cell--checkbox:hover .ssg-row-checkbox[data-state=unchecked]{border-color:var(--ssg-checkbox-hover-border)}.ssg-active-cell-overlay{box-sizing:border-box;border:2px solid var(--ssg-accent);pointer-events:none;z-index:4}.ssg-selection-overlay{box-sizing:border-box;border:2px solid var(--ssg-accent);background-color:var(--ssg-selection-fill);pointer-events:none;z-index:2}.ssg-cell-editor{pointer-events:none;z-index:5}.ssg-cell-editor-input{box-sizing:border-box;border:2px solid var(--ssg-accent);width:100%;height:100%;padding:0 var(--ssg-cell-pad-x);color:var(--ssg-cell-text);background-color:var(--ssg-cell-bg);pointer-events:auto;outline:none;margin:0;font-size:16px}.ssg-cell-editor-input--select{cursor:default;caret-color:#0000}.ssg-select-editor-popover{box-sizing:border-box;overscroll-behavior:contain;border:1px solid var(--ssg-panel-border);background-color:var(--ssg-panel-bg);box-shadow:var(--ssg-popover-shadow);z-index:1000;border-radius:8px;padding:4px;position:fixed;overflow-y:auto}.ssg-select-editor-option{box-sizing:border-box;height:28px;color:var(--ssg-panel-text);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;border-radius:6px;padding:0 10px;font-size:13px;line-height:28px;overflow:hidden}.ssg-select-editor-option--highlighted{background-color:var(--ssg-panel-accent-bg);color:var(--ssg-panel-accent-text)}.ssg-select-editor-empty{height:28px;color:var(--ssg-panel-text-muted);padding:0 10px;font-size:12px;line-height:28px}.ssg-cell-checkbox{cursor:pointer;align-items:center;display:inline-flex}.ssg-cell-checkbox[aria-disabled=true]{cursor:default}.ssg-body-cell--invalid{background-color:var(--ssg-invalid-bg)}.ssg-body-cell--invalid:after{content:"";border-top:6px solid var(--ssg-invalid);pointer-events:none;border-left:6px solid #0000;position:absolute;top:0;right:0}.ssg-cell-editor-input--invalid{border-color:var(--ssg-invalid)}.ssg-cell-editor-error{white-space:nowrap;text-overflow:ellipsis;color:#fff;background-color:var(--ssg-invalid);max-width:280px;box-shadow:var(--ssg-popover-shadow);pointer-events:none;z-index:6;border-radius:6px;padding:4px 8px;font-size:12px;line-height:1.5;position:absolute;top:calc(100% + 4px);left:0;overflow:hidden}.ssg-cell-editor-error--above{top:auto;bottom:calc(100% + 4px)}.ssg-bar--top{border-bottom:1px solid var(--ssg-divider)}.ssg-bar--bottom{border-top:1px solid var(--ssg-divider)}.ssg-bar-container{padding:var(--ssg-bar-pad-y) var(--ssg-bar-pad-x);background-color:var(--ssg-header-bg);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px;display:flex}.ssg-bar-group{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.ssg-bar-leading{min-width:0;color:var(--ssg-header-text);flex:auto;font-size:12px}.ssg-bar-title{letter-spacing:.06em;text-transform:uppercase;color:var(--ssg-glyph);margin-right:2px;font-size:10px;font-weight:600}.ssg-bar-chip{color:var(--ssg-header-text);font-variant-numeric:tabular-nums;white-space:nowrap;background-color:#0000;border:none;border-radius:5px;align-items:center;padding:1px 6px;font-size:11.5px;display:inline-flex}.ssg-bar-chip--emphasis{background-color:var(--ssg-header-hover-bg);color:var(--ssg-header-text);font-weight:600}.ssg-bar-chip--action{font-family:inherit;line-height:inherit;cursor:pointer}.ssg-bar-chip--action:hover{background-color:var(--ssg-icon-active-bg);color:var(--ssg-accent-strong)}.ssg-bar-input{box-sizing:border-box;min-width:0;color:var(--ssg-cell-text);caret-color:var(--ssg-cell-text);-webkit-text-fill-color:var(--ssg-cell-text);background-color:#0000;border:none;outline:none;flex:auto;padding:6px 0;font-size:13px;line-height:1.4}.ssg-bar-input-group{box-sizing:border-box;border:1px solid var(--ssg-panel-border);background-color:var(--ssg-cell-bg);border-radius:6px;align-items:center;gap:6px;width:100%;max-width:380px;padding:0 8px;display:flex}.ssg-bar-input-group:focus-within{border-color:var(--ssg-accent)}.ssg-bar-container>.ssg-bar-input-group:only-child{flex:auto;max-width:480px}.ssg-bar-input-icon{color:var(--ssg-glyph);pointer-events:none;flex:none;justify-content:center;align-items:center;display:inline-flex}.ssg-bar-input-clear{width:18px;height:18px;color:var(--ssg-glyph);cursor:pointer;background-color:#0000;border:none;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.ssg-bar-input-clear:hover{background-color:var(--ssg-row-hover-bg);color:var(--ssg-glyph-hover)}.ssg-filter-chip-bar{padding:var(--ssg-bar-pad-y) var(--ssg-bar-pad-x);background-color:var(--ssg-header-bg);border-bottom:1px solid var(--ssg-divider);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.ssg-filter-chip{border:1px solid var(--ssg-icon-active-border);background-color:var(--ssg-icon-active-bg);border-radius:6px;align-items:center;display:inline-flex;overflow:hidden}.ssg-filter-chip--hidden{opacity:.75}.ssg-filter-chip-label{max-width:260px;color:var(--ssg-accent-strong);cursor:pointer;background-color:#0000;border:none;align-items:center;gap:5px;padding:2px 6px 2px 8px;font-size:11.5px;line-height:1.5;display:inline-flex}.ssg-filter-chip-label:disabled{cursor:default}.ssg-filter-chip-label:not(:disabled):hover{background-color:var(--ssg-icon-active-bg-hover)}.ssg-filter-chip-name{white-space:nowrap;font-weight:700}.ssg-filter-chip-summary{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.ssg-filter-chip-clear{width:18px;color:var(--ssg-accent-strong);cursor:pointer;background-color:#0000;border:none;justify-content:center;align-self:stretch;align-items:center;font-size:12px;line-height:1;display:flex}.ssg-filter-chip-clear:disabled{cursor:default;color:var(--ssg-glyph)}.ssg-filter-chip-clear:not(:disabled):hover{background-color:var(--ssg-icon-active-bg-hover)}.ssg-filter-chip-bar-clear-all{color:var(--ssg-glyph-hover);cursor:pointer;white-space:nowrap;background-color:#0000;border:none;border-radius:5px;padding:2px 6px;font-size:11.5px}.ssg-filter-chip-bar-clear-all:disabled{color:var(--ssg-glyph);cursor:default}.ssg-filter-chip-bar-clear-all:not(:disabled):hover{background-color:var(--ssg-header-hover-bg)}.ssg-popover{box-sizing:border-box;border:1px solid var(--ssg-panel-border);background-color:var(--ssg-panel-bg);box-shadow:var(--ssg-panel-shadow);z-index:1000;border-radius:12px;flex-direction:column;padding:12px;display:flex;position:fixed}.ssg-popover-header{border-bottom:1px solid var(--ssg-panel-separator);justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;padding-bottom:8px;display:flex}.ssg-popover-title{color:var(--ssg-panel-text-strong);-webkit-user-select:none;user-select:none;font-size:13px;font-weight:700}.ssg-popover-close{width:24px;height:24px;color:var(--ssg-panel-text-muted);cursor:pointer;background-color:#0000;border:none;border-radius:6px;justify-content:center;align-items:center;font-size:16px;line-height:1;display:flex}.ssg-popover-close:hover{background-color:var(--ssg-panel-hover-bg)}.ssg-popover-footer{border-top:1px solid var(--ssg-panel-separator);gap:8px;margin-top:8px;padding-top:8px;display:flex}.ssg-popover-header--draggable{cursor:grab;touch-action:none}.ssg-popover-header--draggable:active{cursor:grabbing}.ssg-toolpanel{max-height:420px}@keyframes ssg-toolpanel-flash{0%{box-shadow:0 0 0 3px var(--ssg-panel-accent-bg), 0 0 0 4px var(--ssg-panel-accent), var(--ssg-panel-shadow)}to{box-shadow:var(--ssg-panel-shadow)}}.ssg-toolpanel--flash{animation:.45s ease-out ssg-toolpanel-flash}@media (prefers-reduced-motion:reduce){.ssg-toolpanel--flash{animation:none}}.ssg-toolpanel-header{border-bottom:1px solid var(--ssg-panel-separator);align-items:center;gap:8px;margin-bottom:8px;padding-bottom:8px;display:flex}.ssg-toolpanel-seg{background-color:var(--ssg-seg-track-bg);border-radius:9px;flex:auto;min-width:0;padding:3px;display:flex;position:relative}.ssg-toolpanel-seg-indicator{width:calc((100% - 6px) / var(--ssg-seg-count));background-color:var(--ssg-seg-indicator-bg);box-shadow:var(--ssg-seg-indicator-shadow);transform:translateX(calc(var(--ssg-seg-index) * 100%));border-radius:7px;transition:transform .16s;position:absolute;top:3px;bottom:3px;left:3px}.ssg-toolpanel-seg-btn{z-index:1;min-width:0;color:var(--ssg-panel-text-muted);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:7px;flex:1 1 0;justify-content:center;align-items:center;gap:5px;padding:4px 6px;font-size:12.5px;font-weight:500;line-height:1.3;transition:color .12s;display:inline-flex;position:relative}.ssg-toolpanel-seg-btn:not(.ssg-toolpanel-seg-btn--active):hover{color:var(--ssg-panel-text-sub)}.ssg-toolpanel-seg-btn--active{color:var(--ssg-panel-text-strong);cursor:default;font-weight:600}.ssg-toolpanel-seg-badge{background-color:var(--ssg-panel-accent);min-width:16px;height:16px;color:var(--ssg-panel-accent-contrast);text-align:center;border-radius:8px;padding:0 4px;font-size:10px;font-weight:700;line-height:16px}.ssg-toolpanel-body{flex-direction:column;flex:auto;min-width:0;min-height:240px;display:flex}.ssg-sort-list{flex-direction:column;flex:1;gap:6px;min-height:0;margin:0 -4px;padding:0 4px;display:flex;overflow-y:auto}.ssg-sort-empty{color:var(--ssg-panel-text-faint);-webkit-user-select:none;user-select:none;padding:10px 4px;font-size:12px}.ssg-sort-level{opacity:1;border-top:2px solid #0000;align-items:center;gap:6px;display:flex}.ssg-sort-level--drop-before{border-top-color:var(--ssg-panel-accent)}.ssg-sort-level--dragging{opacity:.4}.ssg-sort-handle{cursor:grab;touch-action:none;border-radius:6px;flex:none;justify-content:center;align-items:center;width:16px;height:26px;display:flex}.ssg-sort-handle--dragging{cursor:grabbing}.ssg-sort-handle--disabled{cursor:default}.ssg-sort-handle:not(.ssg-sort-handle--disabled):hover{background-color:var(--ssg-panel-hover-bg)}.ssg-sort-badge{background-color:var(--ssg-panel-accent-bg);width:18px;height:18px;color:var(--ssg-panel-accent);-webkit-user-select:none;user-select:none;border-radius:9px;flex:none;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:flex}.ssg-sort-select{box-sizing:border-box;border:1px solid var(--ssg-panel-border);min-width:0;color:var(--ssg-panel-text);background-color:var(--ssg-panel-bg);cursor:pointer;border-radius:6px;flex:1;padding:5px 6px;font-size:13px}.ssg-sort-select:disabled{cursor:default}.ssg-sort-dir-group{flex:none;display:flex}.ssg-sort-dir-btn{box-sizing:border-box;border:1px solid var(--ssg-panel-border);background-color:var(--ssg-panel-bg);color:var(--ssg-panel-text-sub);cursor:pointer;flex:none;padding:4px 9px;font-size:12px;line-height:1.4}.ssg-sort-dir-group>.ssg-sort-dir-btn:first-child{border-right:none;border-top-left-radius:6px;border-bottom-left-radius:6px}.ssg-sort-dir-group>.ssg-sort-dir-btn:last-child{border-top-right-radius:6px;border-bottom-right-radius:6px}.ssg-sort-dir-btn--active{border-color:var(--ssg-panel-accent);background-color:var(--ssg-panel-accent);color:var(--ssg-panel-accent-contrast)}.ssg-sort-dir-btn:disabled{color:var(--ssg-panel-text-disabled);cursor:default}.ssg-sort-delete{width:26px;height:26px;color:var(--ssg-panel-text-muted);cursor:pointer;background-color:#0000;border:none;border-radius:6px;flex:none;justify-content:center;align-items:center;font-size:15px;line-height:1;display:flex}.ssg-sort-delete:disabled{color:var(--ssg-panel-text-disabled);cursor:default}.ssg-sort-delete:not(:disabled):hover{background-color:var(--ssg-danger-bg);color:var(--ssg-danger)}.ssg-sort-drop-end{border-top:2px solid var(--ssg-panel-accent);height:0}.ssg-sort-footer-btn{box-sizing:border-box;border:1px solid var(--ssg-panel-separator);color:var(--ssg-panel-text);cursor:pointer;text-align:center;-webkit-user-select:none;user-select:none;background-color:#0000;border-radius:8px;font-size:13px}.ssg-sort-footer-btn--add{flex:1;padding:7px 8px}.ssg-sort-footer-btn--clear{flex:none;padding:7px 12px}.ssg-sort-footer-btn:disabled{color:var(--ssg-panel-text-disabled);cursor:default}.ssg-sort-footer-btn:not(:disabled):hover{background-color:var(--ssg-panel-hover-bg)}.ssg-sort-note{color:var(--ssg-panel-text-faint);-webkit-user-select:none;user-select:none;margin-top:8px;font-size:11px}.ssg-filter-manage-list{flex-direction:column;flex:1;gap:2px;min-height:0;margin:0 -4px;padding:0 4px;display:flex;overflow-y:auto}.ssg-filter-manage-empty{color:var(--ssg-panel-text-faint);-webkit-user-select:none;user-select:none;padding:10px 4px;font-size:12px}.ssg-filter-manage-row{border-radius:8px;align-items:center;gap:8px;padding:5px 6px;display:flex}.ssg-filter-manage-row:hover{background-color:var(--ssg-panel-hover-bg-subtle)}.ssg-filter-manage-row--global{border-bottom:1px solid var(--ssg-panel-separator);border-radius:0;margin-bottom:6px;padding-bottom:9px}.ssg-filter-manage-row--global:hover{background-color:#0000}.ssg-filter-manage-glyph{color:var(--ssg-panel-accent-text);flex:none;align-items:center;display:flex}.ssg-filter-manage-glyph--global{color:var(--ssg-panel-text-muted)}.ssg-filter-manage-main{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.ssg-filter-manage-name{color:var(--ssg-panel-text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:700;overflow:hidden}.ssg-filter-manage-hidden-note{color:var(--ssg-panel-text-faint);margin-left:4px;font-size:10.5px;font-weight:500}.ssg-filter-manage-summary{color:var(--ssg-panel-text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.ssg-filter-manage-actions{flex:none;gap:2px;display:flex}.ssg-filter-manage-icon-btn{width:24px;height:24px;color:var(--ssg-panel-text-muted);cursor:pointer;background-color:#0000;border:none;border-radius:6px;justify-content:center;align-items:center;font-size:13px;line-height:1;display:flex}.ssg-filter-manage-icon-btn:disabled{color:var(--ssg-panel-text-disabled);cursor:default}.ssg-filter-manage-icon-btn:not(:disabled):hover{background-color:var(--ssg-panel-hover-bg);color:var(--ssg-panel-text-strong)}.ssg-filter-manage-icon-btn--danger:not(:disabled):hover{background-color:var(--ssg-danger-bg);color:var(--ssg-danger)}.ssg-filter-manage-add{border:1px solid var(--ssg-panel-border);background-color:var(--ssg-panel-bg);min-width:0;color:var(--ssg-panel-text);cursor:pointer;border-radius:6px;outline:none;flex:1;padding:5px 6px;font-size:12px}.ssg-filter-manage-add:focus{border-color:var(--ssg-panel-accent)}.ssg-filter-manage-add:disabled{color:var(--ssg-panel-text-faint);cursor:default}.ssg-filter-manage-clear-all{color:var(--ssg-panel-text-muted);cursor:pointer;white-space:nowrap;background-color:#0000;border:none;border-radius:6px;flex:none;padding:5px 8px;font-size:12px}.ssg-filter-manage-clear-all:disabled{color:var(--ssg-panel-text-disabled);cursor:default}.ssg-filter-manage-clear-all:not(:disabled):hover{background-color:var(--ssg-danger-bg);color:var(--ssg-danger)}.ssg-chooser-search-row{align-items:center;gap:8px;margin-bottom:8px;display:flex}.ssg-chooser-master-btn{cursor:pointer;background:0 0;border:none;align-items:center;padding:0;display:flex}.ssg-chooser-master-btn:disabled{cursor:default}.ssg-chooser-search-field{flex:1;min-width:0;position:relative}.ssg-chooser-search-icon{color:var(--ssg-panel-text-faint);pointer-events:none;font-size:13px;line-height:1;position:absolute;top:50%;left:9px;transform:translateY(-50%)}.ssg-chooser-search-input{box-sizing:border-box;border:1px solid var(--ssg-panel-border);width:100%;color:var(--ssg-panel-text);border-radius:8px;outline:none;padding:7px 10px 7px 26px;font-size:13px}.ssg-chooser-list{flex:1;min-height:0;margin:0 -4px;padding:0 4px;overflow-y:auto}.ssg-chooser-empty{color:var(--ssg-panel-text-faint);-webkit-user-select:none;user-select:none;padding:10px 4px;font-size:12px}.ssg-chooser-section-heading{color:var(--ssg-panel-text-faint);letter-spacing:.4px;-webkit-user-select:none;user-select:none;padding:8px 4px 4px;font-size:11px;font-weight:700}.ssg-chooser-row{opacity:1;border-top:2px solid #0000;align-items:center;gap:4px;display:flex}.ssg-chooser-row--drop-before{border-top-color:var(--ssg-panel-accent)}.ssg-chooser-row--dragging{opacity:.4}.ssg-chooser-handle{cursor:grab;touch-action:none;border-radius:6px;flex:none;justify-content:center;align-items:center;width:18px;height:28px;display:flex}.ssg-chooser-handle--dragging{cursor:grabbing}.ssg-chooser-handle--disabled{cursor:default}.ssg-chooser-handle:not(.ssg-chooser-handle--disabled):hover{background-color:var(--ssg-panel-hover-bg)}.ssg-chooser-toggle{box-sizing:border-box;cursor:pointer;text-align:left;background-color:#0000;border:none;border-radius:8px;flex:1;align-items:center;gap:10px;min-width:0;padding:7px 8px;display:flex}.ssg-chooser-toggle:disabled{cursor:default}.ssg-chooser-toggle:not(:disabled):hover{background-color:var(--ssg-panel-hover-bg)}.ssg-chooser-label{min-width:0;color:var(--ssg-panel-text);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;overflow:hidden}.ssg-chooser-label--muted{color:var(--ssg-panel-text-faint)}.ssg-chooser-drop-end{border-top:2px solid var(--ssg-panel-accent);height:0}.ssg-chooser-footer{border-top:1px solid var(--ssg-panel-separator);margin-top:8px;padding-top:8px}.ssg-chooser-reset-btn{box-sizing:border-box;border:1px solid var(--ssg-panel-separator);width:100%;color:var(--ssg-panel-text);cursor:pointer;text-align:center;-webkit-user-select:none;user-select:none;background-color:#0000;border-radius:8px;padding:7px 8px;font-size:13px;display:block}.ssg-chooser-reset-btn:disabled{color:var(--ssg-panel-text-disabled);cursor:default}.ssg-chooser-reset-btn:not(:disabled):hover{background-color:var(--ssg-panel-hover-bg)}.ssg-chooser-note{color:var(--ssg-panel-text-faint);-webkit-user-select:none;user-select:none;margin-top:8px;font-size:11px}.ssg-checkbox{border:1.5px solid var(--ssg-checkbox-border);background-color:var(--ssg-panel-bg);border-radius:5px;flex:none;justify-content:center;align-items:center;width:18px;height:18px;transition:background-color 80ms,border-color 80ms;display:flex}.ssg-checkbox--filled{border-color:var(--ssg-panel-accent);background-color:var(--ssg-panel-accent)}.ssg-checkbox--disabled{border-color:var(--ssg-panel-border);background-color:var(--ssg-panel-hover-bg)}.ssg-checkbox-dash{background-color:var(--ssg-panel-accent-contrast);border-radius:1px;width:9px;height:2px}.ssg-filter-popover{box-sizing:border-box;border:1px solid var(--ssg-panel-border);background-color:var(--ssg-panel-bg);box-shadow:var(--ssg-popover-shadow);z-index:1000;border-radius:10px;padding:12px;position:fixed}.ssg-filter-title{color:var(--ssg-panel-text);margin-bottom:8px;font-size:12px;font-weight:700}.ssg-filter-hint{color:var(--ssg-panel-text-muted);margin-bottom:8px;font-size:11px}.ssg-filter-meta{color:var(--ssg-panel-text-muted);margin-bottom:10px;font-size:11px}.ssg-filter-meta--ellipsis{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ssg-filter-collecting{text-align:center;color:var(--ssg-panel-text-muted);padding:24px;font-size:12px}.ssg-filter-input{box-sizing:border-box;border:1px solid var(--ssg-panel-border);border-radius:8px;outline:none;width:100%;margin-bottom:8px;padding:8px 10px}.ssg-filter-select{box-sizing:border-box;border:1px solid var(--ssg-panel-border);background-color:var(--ssg-panel-bg);border-radius:8px;outline:none;width:100%;margin-bottom:8px;padding:8px 10px}.ssg-filter-selectall{cursor:pointer;height:28px;color:var(--ssg-panel-text);border-bottom:1px solid var(--ssg-panel-separator);-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:0 8px;font-size:12px;display:flex}.ssg-filter-selectall-label{font-weight:600}.ssg-filter-list{border:1px solid var(--ssg-panel-separator);border-top:none;border-radius:0 0 8px 8px;height:208px;margin-bottom:8px;overflow-y:auto}.ssg-filter-empty{color:var(--ssg-panel-text-faint);text-align:center;padding:12px;font-size:12px}.ssg-filter-virt{width:100%;position:relative}.ssg-filter-option{box-sizing:border-box;cursor:pointer;color:var(--ssg-panel-text);-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:0 8px;font-size:12px;display:flex;position:absolute;top:0;left:0;right:0}.ssg-filter-option-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ssg-filter-footer{justify-content:flex-end;gap:8px;display:flex}.ssg-filter-btn-secondary{border:1px solid var(--ssg-panel-border);background-color:var(--ssg-panel-bg);color:var(--ssg-panel-text-sub);cursor:pointer;border-radius:8px;padding:6px 10px;font-size:12px}.ssg-filter-btn-primary{border:1px solid var(--ssg-panel-accent);background-color:var(--ssg-panel-accent);color:var(--ssg-panel-accent-contrast);cursor:pointer;border-radius:8px;padding:6px 10px;font-size:12px}.ssg-menu-panel{box-sizing:border-box;border:1px solid var(--ssg-panel-border);background-color:var(--ssg-panel-bg);box-shadow:var(--ssg-popover-shadow);border-radius:10px;padding:8px}.ssg-menu-title{color:var(--ssg-panel-text);text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid var(--ssg-panel-separator);-webkit-user-select:none;user-select:none;margin-bottom:4px;padding:2px 8px 6px;font-size:12px;font-weight:700;overflow:hidden}.ssg-menu-item{box-sizing:border-box;width:100%;color:var(--ssg-panel-text);text-align:left;cursor:pointer;background-color:#0000;border:none;border-radius:8px;align-items:center;gap:8px;padding:7px 8px;font-size:13px;display:flex}.ssg-menu-item:disabled,.ssg-menu-item--disabled{color:var(--ssg-panel-text-faint);cursor:default}.ssg-menu-item--active,.ssg-menu-item:not(:disabled):not(.ssg-menu-item--disabled):hover{background-color:var(--ssg-panel-hover-bg)}.ssg-menu-section-label{color:var(--ssg-panel-text-faint);-webkit-user-select:none;user-select:none;padding:6px 8px 2px;font-size:11px;font-weight:600}.ssg-menu-item--danger{color:var(--ssg-danger)}.ssg-menu-item--danger:not(:disabled):not(.ssg-menu-item--disabled):hover{background-color:var(--ssg-danger-bg)}.ssg-menu-submenu-anchor{position:relative}.ssg-menu-icon{text-align:center;flex:none;width:14px}.ssg-menu-sort-icon{text-align:center;width:14px;color:var(--ssg-panel-text-faint);flex:none;font-weight:400}.ssg-menu-sort-icon--active{color:var(--ssg-panel-accent);font-weight:700}.ssg-menu-check{text-align:center;width:14px;color:var(--ssg-panel-accent);flex:none;font-weight:700}.ssg-menu-check--hidden{visibility:hidden}.ssg-menu-label{flex:1;min-width:0}.ssg-menu-label--sorted{color:var(--ssg-panel-accent-text)}.ssg-menu-caret{color:var(--ssg-panel-text-faint);flex:none;font-size:12px;line-height:1}.ssg-menu-separator{border-top:1px solid var(--ssg-panel-separator);margin:4px 0}.ssg-menu-note{color:var(--ssg-panel-text-faint);-webkit-user-select:none;user-select:none;padding:4px 8px 2px;font-size:11px}.ssg-menu-footer{border-top:1px solid var(--ssg-panel-separator);justify-content:flex-end;margin-top:4px;padding-top:6px;display:flex}.ssg-menu-close-btn{border:1px solid var(--ssg-panel-border);background-color:var(--ssg-panel-bg);color:var(--ssg-panel-text-sub);cursor:pointer;border-radius:8px;padding:5px 10px;font-size:12px}.ssg-body-row{contain:layout style paint;width:100%;position:absolute;top:0;left:0}.ssg-body-row--checked{background-color:var(--ssg-row-selected-bg)}.ssg-body-row--checked .ssg-body-cell:not(.ssg-body-cell--row-hovered){background-color:#0000}.ssg-header-grip{width:12px;height:20px;color:var(--ssg-glyph-faint);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;flex:none;justify-content:center;align-items:center;display:inline-flex}.ssg-header-status{flex:none;align-items:center;gap:3px;display:inline-flex}.ssg-header-actions{background-color:var(--ssg-header-bg);opacity:0;pointer-events:none;align-items:center;gap:2px;height:100%;padding:0 6px 0 14px;transition:opacity .1s;display:flex;position:absolute;top:0;right:0}.ssg-header-cell:hover .ssg-header-actions{opacity:1;pointer-events:auto;background-color:var(--ssg-header-hover-bg)}@media (hover:none){.ssg-header-actions{opacity:1;pointer-events:auto;background-color:#0000;height:auto;padding:0;position:static}}.ssg-header-actions .ssg-header-grip,.ssg-header-actions .ssg-icon-btn:not(.ssg-icon-btn--active){color:var(--ssg-glyph-hover)}.ssg-header-label{min-width:0;color:var(--ssg-header-text);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.ssg-header-label--filtered{color:var(--ssg-accent-strong)}.ssg-header-sort{color:var(--ssg-accent);flex:none;align-items:center;gap:1px;font-size:12px;font-weight:700;line-height:1;display:inline-flex}.ssg-header-sort-priority{font-size:9px;font-weight:700;line-height:1}.ssg-header-filtered-mark{color:var(--ssg-accent-strong);flex:none;align-items:center;display:inline-flex}@keyframes ssg-header-jump-flash{0%{box-shadow:inset 0 0 0 2px var(--ssg-accent);background-color:var(--ssg-select-bg)}70%{box-shadow:inset 0 0 0 2px var(--ssg-accent);background-color:var(--ssg-select-bg)}to{box-shadow:none}}.ssg-header-cell--jump-flash{animation:1.2s ease-out ssg-header-jump-flash}.ssg-header-resize{cursor:col-resize;z-index:3;width:6px;height:100%;position:absolute;top:0;right:-3px}.ssg-skeleton-rowheader{color:var(--ssg-glyph)}.ssg-skeleton-bar{background-color:var(--ssg-skeleton-bar);border-radius:4px;height:10px}.ssg-shell{background-color:var(--ssg-cell-bg);position:relative;overflow:hidden}.ssg-scroll-container{max-height:480px;position:relative;overflow:auto}.ssg-inner-row{display:flex}.ssg-center-pane{z-index:1;flex-shrink:0;position:relative}.ssg-empty-state{height:160px;color:var(--ssg-panel-text-faint);-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;font-size:13px;display:flex;position:sticky;left:0}.ssg-autosize-overlay{pointer-events:none;z-index:5;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.ssg-autosize-pill{background-color:var(--ssg-pill-bg);color:var(--ssg-pill-text);box-shadow:var(--ssg-pill-shadow);-webkit-user-select:none;user-select:none;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:600}.ssg-filter-overlay{pointer-events:none;z-index:5;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.ssg-filter-overlay-chip{background-color:var(--ssg-cell-bg);border:1px solid var(--ssg-line-strong);box-shadow:var(--ssg-overlay-chip-shadow);color:var(--ssg-readonly-text);font-variant-numeric:tabular-nums;white-space:nowrap;-webkit-user-select:none;user-select:none;border-radius:999px;align-items:center;gap:8px;padding:6px 12px;font-size:12px;display:inline-flex}.ssg-filter-overlay-text{text-align:center;min-width:5.5em}.ssg-filter-spinner{border:2px solid var(--ssg-line-strong);border-top-color:var(--ssg-accent);border-radius:50%;width:14px;height:14px;animation:.7s linear infinite ssg-filter-spin}@keyframes ssg-filter-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.ssg-filter-spinner{animation:none}}.ssg-ssrm-error-bar{z-index:5;background-color:var(--ssg-pill-bg);max-width:calc(100% - 24px);color:var(--ssg-pill-text);box-shadow:var(--ssg-pill-shadow);white-space:nowrap;-webkit-user-select:none;user-select:none;border-radius:999px;align-items:center;gap:10px;padding:6px 8px 6px 14px;font-size:12.5px;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.ssg-ssrm-error-bar-dot{background-color:var(--ssg-invalid);border-radius:50%;flex:none;width:8px;height:8px}.ssg-ssrm-error-bar-msg{text-overflow:ellipsis;overflow:hidden}.ssg-ssrm-error-bar-retry{appearance:none;font:inherit;cursor:pointer;background-color:var(--ssg-pill-text);color:var(--ssg-ghost-bg);border:none;border-radius:999px;padding:3px 12px;font-weight:600}.ssg-ssrm-error-bar-close{appearance:none;color:inherit;opacity:.7;cursor:pointer;background:0 0;border:none;padding:2px 6px;font-size:13px;line-height:1}.ssg-ssrm-error-bar-close:hover{opacity:1}.ssg-col-drop-indicator{background-color:var(--ssg-drop-indicator);width:2px}.ssg-col-drop-indicator:before,.ssg-col-drop-indicator:after{content:"";background-color:var(--ssg-drop-indicator);width:7px;height:7px;position:absolute;left:50%;transform:translate(-50%)rotate(45deg)}.ssg-col-drop-indicator:before{top:-3px}.ssg-col-drop-indicator:after{bottom:-3px}.ssg-tooltip{z-index:9000;pointer-events:none;opacity:0;white-space:pre-line;overflow-wrap:break-word;background-color:var(--ssg-tooltip-bg);max-width:260px;color:var(--ssg-tooltip-text);box-shadow:var(--ssg-tooltip-shadow);border-radius:6px;padding:5px 10px;font-size:12px;font-weight:500;line-height:1.45;transition:opacity .12s,transform .12s;position:fixed;transform:translateY(2px)}.ssg-tooltip--visible{opacity:1;transform:translateY(0)}
|
|
1
|
+
:where(.ssg-root,.ssg-popover,.ssg-menu-panel,.ssg-filter-popover,.ssg-select-editor-popover,[data-grid-drag-ghost],.ssg-tooltip){--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ssg-accent:#3461c9;--ssg-accent-strong:#1d4ed8;--ssg-line:#f1f5f9;--ssg-line-strong:#e5e7eb;--ssg-divider:#d7dce3;--ssg-header-bg:#f8fafc;--ssg-row-hover-bg:#f1f5f9;--ssg-glyph:#94a3b8;--ssg-glyph-hover:#475569;--ssg-icon-hover-bg:#d6dee8;--ssg-icon-active-bg:#e3e9f5;--ssg-icon-active-bg-hover:#d4ddf0;--ssg-icon-active-border:#c7d3ea;--ssg-cell-bg:#fff;--ssg-cell-text:#0f172a;--ssg-readonly-bg:#f8fafc;--ssg-readonly-text:#64748b;--ssg-readonly-hover-bg:#eef2f7;--ssg-header-text:#334155;--ssg-header-hover-bg:#e2e8f0;--ssg-select-bg:#e3e9f5;--ssg-select-bg-hover:#ccd7ee;--ssg-row-selected-bg:#eff4ff;--ssg-checkbox-border:#94a3b8;--ssg-checkbox-bg:#fff;--ssg-checkbox-checked-bg:var(--ssg-accent);--ssg-checkbox-checked-mark:#fff;--ssg-checkbox-hover-border:var(--ssg-accent);--ssg-selection-fill:#3461c914;--ssg-radius:8px;--ssg-icon-btn-size:20px;--ssg-cell-pad-x:10px;--ssg-bar-pad-x:10px;--ssg-bar-pad-y:5px;--ssg-panel-bg:#fff;--ssg-panel-border:#cbd5e1;--ssg-panel-separator:#e2e8f0;--ssg-panel-text-strong:#1e293b;--ssg-panel-text:#334155;--ssg-panel-text-sub:#475569;--ssg-panel-text-muted:#64748b;--ssg-panel-text-faint:#94a3b8;--ssg-panel-text-disabled:#cbd5e1;--ssg-panel-hover-bg:#f1f5f9;--ssg-panel-hover-bg-subtle:#f8fafc;--ssg-panel-accent:#2563eb;--ssg-panel-accent-bg:#eff6ff;--ssg-panel-accent-text:var(--ssg-accent-strong);--ssg-panel-accent-contrast:#fff;--ssg-danger:#dc2626;--ssg-danger-bg:#fef2f2;--ssg-seg-track-bg:#f1f3f5;--ssg-seg-indicator-bg:#fff;--ssg-seg-indicator-shadow:0 1px 3px #0f172a2e;--ssg-root-shadow:0 4px 14px #0f172a0a;--ssg-panel-shadow:0 12px 28px #0f172a29;--ssg-popover-shadow:0 10px 24px #0f172a1f;--ssg-overlay-chip-shadow:0 6px 20px #0f172a2e;--ssg-pane-border:#cbd5e1;--ssg-pane-shadow-left:6px 0 8px -6px #0f172a59;--ssg-pane-shadow-right:-6px 0 8px -6px #0f172a59;--ssg-pill-bg:#0f172ad1;--ssg-pill-text:#f8fafc;--ssg-pill-shadow:0 6px 20px #0f172a40;--ssg-ghost-bg:#1e293b;--ssg-ghost-text:#f8fafc;--ssg-ghost-border:#ffffff1a;--ssg-ghost-shadow:0 8px 20px #02061757, 0 1px 2px #0206173d;--ssg-tooltip-bg:#1e293b;--ssg-tooltip-text:#f8fafc;--ssg-tooltip-shadow:0 4px 12px #02061740;--ssg-invalid:#ef4444;--ssg-invalid-bg:#ef444414;--ssg-drop-indicator:#0f172a;--ssg-glyph-faint:#cbd5e1;--ssg-skeleton-bar:#e2e8f0}:where(.ssg-root--density-compact){--ssg-cell-pad-x:6px;--ssg-bar-pad-x:8px;--ssg-bar-pad-y:3px;--ssg-icon-btn-size:18px}:where(.ssg-root--density-comfortable){--ssg-cell-pad-x:14px;--ssg-bar-pad-x:12px;--ssg-bar-pad-y:7px;--ssg-icon-btn-size:22px}:where(.ssg-root--density-compact) .ssg-body-cell{font-size:.85em}:where(.ssg-root--density-comfortable) .ssg-body-cell{font-size:1.1em}:where(.ssg-theme-dark){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ssg-accent:#4dabf7;--ssg-accent-strong:#74c0fc;--ssg-line:#212226;--ssg-line-strong:#2c2e33;--ssg-divider:#373a40;--ssg-header-bg:#25262b;--ssg-row-hover-bg:#25262b;--ssg-glyph:#909296;--ssg-glyph-hover:#c1c2c5;--ssg-glyph-faint:#5c5f66;--ssg-icon-hover-bg:#2c2e33;--ssg-icon-active-bg:#24344d;--ssg-icon-active-bg-hover:#2b3f5e;--ssg-icon-active-border:#3a5378;--ssg-cell-bg:#1a1b1e;--ssg-cell-text:#c1c2c5;--ssg-readonly-bg:#1f2023;--ssg-readonly-text:#909296;--ssg-readonly-hover-bg:#26272c;--ssg-header-text:#c1c2c5;--ssg-header-hover-bg:#2c2e33;--ssg-select-bg:#24344d;--ssg-select-bg-hover:#2b3f5e;--ssg-row-selected-bg:#1e2c44;--ssg-checkbox-border:#5c5f66;--ssg-checkbox-bg:#1a1b1e;--ssg-checkbox-checked-mark:#141517;--ssg-selection-fill:#4dabf721;--ssg-panel-bg:#25262b;--ssg-panel-border:#373a40;--ssg-panel-separator:#2c2e33;--ssg-panel-text-strong:#f1f3f5;--ssg-panel-text:#c1c2c5;--ssg-panel-text-sub:#a6a7ab;--ssg-panel-text-muted:#909296;--ssg-panel-text-faint:#5c5f66;--ssg-panel-text-disabled:#43464d;--ssg-panel-hover-bg:#2c2e33;--ssg-panel-hover-bg-subtle:#26272c;--ssg-panel-accent:#4dabf7;--ssg-panel-accent-bg:#1d3450;--ssg-panel-accent-contrast:#141517;--ssg-danger:#ff6b6b;--ssg-danger-bg:#3a2325;--ssg-seg-track-bg:#1e1f23;--ssg-seg-indicator-bg:#373a40;--ssg-seg-indicator-shadow:0 1px 3px #00000080;--ssg-root-shadow:0 4px 14px #0006;--ssg-panel-shadow:0 12px 28px #0000008c;--ssg-popover-shadow:0 10px 24px #00000080;--ssg-overlay-chip-shadow:0 6px 20px #00000073;--ssg-pane-border:#373a40;--ssg-pane-shadow-left:6px 0 8px -6px #0000008c;--ssg-pane-shadow-right:-6px 0 8px -6px #0000008c;--ssg-pill-bg:#373a40f2;--ssg-pill-text:#f1f3f5;--ssg-pill-shadow:0 6px 20px #00000073;--ssg-ghost-bg:#373a40;--ssg-ghost-text:#f1f3f5;--ssg-ghost-border:#ffffff1f;--ssg-ghost-shadow:0 8px 20px #00000080, 0 1px 2px #00000059;--ssg-tooltip-bg:#373a40;--ssg-tooltip-text:#f1f3f5;--ssg-tooltip-shadow:0 4px 12px #00000073;--ssg-invalid:#f87171;--ssg-invalid-bg:#f8717124;--ssg-drop-indicator:#c1c2c5;--ssg-skeleton-bar:#2c2e33}:where(.ssg-root,.ssg-popover,.ssg-menu-panel,.ssg-filter-popover,.ssg-tooltip),:where(.ssg-root,.ssg-popover,.ssg-menu-panel,.ssg-filter-popover,.ssg-tooltip) :where(*),:where(.ssg-root,.ssg-popover,.ssg-menu-panel,.ssg-filter-popover,.ssg-tooltip) :where(*):before,:where(.ssg-root,.ssg-popover,.ssg-menu-panel,.ssg-filter-popover,.ssg-tooltip) :where(*):after{box-sizing:border-box}.ssg-root{border:1px solid var(--ssg-divider);border-radius:var(--ssg-radius);background-color:var(--ssg-cell-bg);box-shadow:var(--ssg-root-shadow);overflow:hidden}.ssg-icon-btn{width:var(--ssg-icon-btn-size);height:var(--ssg-icon-btn-size);color:var(--ssg-glyph);cursor:pointer;background-color:#0000;border:1px solid #0000;border-radius:6px;flex:none;justify-content:center;align-items:center;padding:0;font-size:11px;line-height:1;transition:background-color .1s,color .1s;display:inline-flex}.ssg-icon-btn:hover{background-color:var(--ssg-icon-hover-bg);color:var(--ssg-glyph-hover)}.ssg-icon-btn--active{border-color:var(--ssg-icon-active-border);background-color:var(--ssg-icon-active-bg);color:var(--ssg-accent)}.ssg-icon-btn--active:hover{background-color:var(--ssg-icon-active-bg-hover);color:var(--ssg-accent)}.ssg-body-cell{box-sizing:border-box;padding:0 var(--ssg-cell-pad-x);border-right:1px solid var(--ssg-line);border-bottom:1px solid var(--ssg-line-strong);background-color:var(--ssg-cell-bg);color:var(--ssg-cell-text);white-space:nowrap;cursor:default;-webkit-user-select:none;user-select:none;outline:none;align-items:center;display:flex;position:absolute;top:0;overflow:hidden}.ssg-body-cell--autoheight{white-space:normal;word-break:break-word;align-items:flex-start;overflow:visible}.ssg-body-cell--align-center{text-align:center;justify-content:center}.ssg-body-cell--align-right{text-align:right;justify-content:flex-end}.ssg-body-cell--row-hovered{background-color:var(--ssg-row-hover-bg)}:where(.ssg-root--dim-readonly) .ssg-body-cell--readonly{background-color:var(--ssg-readonly-bg);color:var(--ssg-readonly-text)}:where(.ssg-root--dim-readonly) .ssg-body-cell--readonly.ssg-body-cell--row-hovered{background-color:var(--ssg-readonly-hover-bg)}.ssg-header-row{z-index:6;background-color:var(--ssg-header-bg);position:sticky;top:0}.ssg-header-cell{box-sizing:border-box;border-right:1px solid var(--ssg-line);border-bottom:1px solid var(--ssg-divider);background-color:var(--ssg-header-bg);color:var(--ssg-header-text);align-items:center;gap:4px;padding:0 6px;font-size:13px;font-weight:600;display:flex;position:absolute;top:0}.ssg-header-cell--hovered{background-color:var(--ssg-header-hover-bg)}.ssg-header-cell--selected{background-color:var(--ssg-select-bg)}.ssg-header-cell--selected.ssg-header-cell--hovered{background-color:var(--ssg-select-bg-hover)}.ssg-row-header-cell{z-index:5;justify-content:center;font-weight:500;left:0}.ssg-corner-cell{z-index:7;border-right:1px solid var(--ssg-line-strong);justify-content:center;padding:0;line-height:1;left:0}.ssg-row-checkbox{box-sizing:border-box;border:1.5px solid var(--ssg-checkbox-border);background-color:var(--ssg-checkbox-bg);border-radius:4px;width:16px;height:16px;transition:background-color .12s,border-color .12s;display:inline-block;position:relative}.ssg-row-checkbox[data-state=checked],.ssg-row-checkbox[data-state=indeterminate]{border-color:var(--ssg-checkbox-checked-bg);background-color:var(--ssg-checkbox-checked-bg)}.ssg-row-checkbox[data-state=checked]:after{content:"";border:solid var(--ssg-checkbox-checked-mark);border-width:0 2px 2px 0;width:6px;height:10px;position:absolute;top:1.5px;left:4.5px;transform:rotate(45deg)}.ssg-row-checkbox[data-state=indeterminate]:after{content:"";background-color:var(--ssg-checkbox-checked-mark);border-radius:1px;height:2px;position:absolute;top:6.5px;left:3px;right:3px}.ssg-row-checkbox[data-disabled=true]{opacity:.45}.ssg-row-header-cell--checkbox:hover .ssg-row-checkbox[data-state=unchecked],.ssg-corner-cell--checkbox:hover .ssg-row-checkbox[data-state=unchecked]{border-color:var(--ssg-checkbox-hover-border)}.ssg-active-cell-overlay{box-sizing:border-box;border:2px solid var(--ssg-accent);pointer-events:none;z-index:4}.ssg-selection-overlay{box-sizing:border-box;border:2px solid var(--ssg-accent);background-color:var(--ssg-selection-fill);pointer-events:none;z-index:2}.ssg-cell-editor{pointer-events:none;z-index:5}.ssg-cell-editor-input{box-sizing:border-box;border:2px solid var(--ssg-accent);width:100%;height:100%;padding:0 var(--ssg-cell-pad-x);color:var(--ssg-cell-text);background-color:var(--ssg-cell-bg);pointer-events:auto;outline:none;margin:0;font-size:16px}.ssg-cell-editor-input--select{cursor:default;caret-color:#0000}.ssg-select-editor-popover{box-sizing:border-box;overscroll-behavior:contain;border:1px solid var(--ssg-panel-border);background-color:var(--ssg-panel-bg);box-shadow:var(--ssg-popover-shadow);z-index:1000;border-radius:8px;padding:4px;position:fixed;overflow-y:auto}.ssg-select-editor-option{box-sizing:border-box;height:28px;color:var(--ssg-panel-text);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;border-radius:6px;padding:0 10px;font-size:13px;line-height:28px;overflow:hidden}.ssg-select-editor-option--highlighted{background-color:var(--ssg-panel-accent-bg);color:var(--ssg-panel-accent-text)}.ssg-select-editor-empty{height:28px;color:var(--ssg-panel-text-muted);padding:0 10px;font-size:12px;line-height:28px}.ssg-cell-checkbox{cursor:pointer;align-items:center;display:inline-flex}.ssg-cell-checkbox[aria-disabled=true]{cursor:default}.ssg-body-cell--invalid{background-color:var(--ssg-invalid-bg)}.ssg-body-cell--invalid:after{content:"";border-top:6px solid var(--ssg-invalid);pointer-events:none;border-left:6px solid #0000;position:absolute;top:0;right:0}.ssg-cell-editor-input--invalid{border-color:var(--ssg-invalid)}.ssg-cell-editor-error{white-space:nowrap;text-overflow:ellipsis;color:#fff;background-color:var(--ssg-invalid);max-width:280px;box-shadow:var(--ssg-popover-shadow);pointer-events:none;z-index:6;border-radius:6px;padding:4px 8px;font-size:12px;line-height:1.5;position:absolute;top:calc(100% + 4px);left:0;overflow:hidden}.ssg-cell-editor-error--above{top:auto;bottom:calc(100% + 4px)}.ssg-bar--top{border-bottom:1px solid var(--ssg-divider)}.ssg-bar--bottom{border-top:1px solid var(--ssg-divider)}.ssg-bar-container{padding:var(--ssg-bar-pad-y) var(--ssg-bar-pad-x);background-color:var(--ssg-header-bg);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px;display:flex}.ssg-bar-group{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.ssg-bar-leading{min-width:0;color:var(--ssg-header-text);flex:auto;font-size:12px}.ssg-bar-title{letter-spacing:.06em;text-transform:uppercase;color:var(--ssg-glyph);margin-right:2px;font-size:10px;font-weight:600}.ssg-bar-chip{color:var(--ssg-header-text);font-variant-numeric:tabular-nums;white-space:nowrap;background-color:#0000;border:none;border-radius:5px;align-items:center;padding:1px 6px;font-size:11.5px;display:inline-flex}.ssg-bar-chip--emphasis{background-color:var(--ssg-header-hover-bg);color:var(--ssg-header-text);font-weight:600}.ssg-bar-chip--action{font-family:inherit;line-height:inherit;cursor:pointer}.ssg-bar-chip--action:hover{background-color:var(--ssg-icon-active-bg);color:var(--ssg-accent-strong)}.ssg-bar-input{box-sizing:border-box;min-width:0;color:var(--ssg-cell-text);caret-color:var(--ssg-cell-text);-webkit-text-fill-color:var(--ssg-cell-text);background-color:#0000;border:none;outline:none;flex:auto;padding:6px 0;font-size:13px;line-height:1.4}.ssg-bar-input-group{box-sizing:border-box;border:1px solid var(--ssg-panel-border);background-color:var(--ssg-cell-bg);border-radius:6px;align-items:center;gap:6px;width:100%;max-width:380px;padding:0 8px;display:flex}.ssg-bar-input-group:focus-within{border-color:var(--ssg-accent)}.ssg-bar-container>.ssg-bar-input-group:only-child{flex:auto;max-width:480px}.ssg-bar-input-icon{color:var(--ssg-glyph);pointer-events:none;flex:none;justify-content:center;align-items:center;display:inline-flex}.ssg-bar-input-clear{width:18px;height:18px;color:var(--ssg-glyph);cursor:pointer;background-color:#0000;border:none;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.ssg-bar-input-clear:hover{background-color:var(--ssg-row-hover-bg);color:var(--ssg-glyph-hover)}.ssg-filter-chip-bar{padding:var(--ssg-bar-pad-y) var(--ssg-bar-pad-x);background-color:var(--ssg-header-bg);border-bottom:1px solid var(--ssg-divider);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.ssg-filter-chip{border:1px solid var(--ssg-icon-active-border);background-color:var(--ssg-icon-active-bg);border-radius:6px;align-items:center;display:inline-flex;overflow:hidden}.ssg-filter-chip--hidden{opacity:.75}.ssg-filter-chip-label{max-width:260px;color:var(--ssg-accent-strong);cursor:pointer;background-color:#0000;border:none;align-items:center;gap:5px;padding:2px 6px 2px 8px;font-size:11.5px;line-height:1.5;display:inline-flex}.ssg-filter-chip-label:disabled{cursor:default}.ssg-filter-chip-label:not(:disabled):hover{background-color:var(--ssg-icon-active-bg-hover)}.ssg-filter-chip-name{white-space:nowrap;font-weight:700}.ssg-filter-chip-summary{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.ssg-filter-chip-clear{width:18px;color:var(--ssg-accent-strong);cursor:pointer;background-color:#0000;border:none;justify-content:center;align-self:stretch;align-items:center;font-size:12px;line-height:1;display:flex}.ssg-filter-chip-clear:disabled{cursor:default;color:var(--ssg-glyph)}.ssg-filter-chip-clear:not(:disabled):hover{background-color:var(--ssg-icon-active-bg-hover)}.ssg-filter-chip-bar-clear-all{color:var(--ssg-glyph-hover);cursor:pointer;white-space:nowrap;background-color:#0000;border:none;border-radius:5px;padding:2px 6px;font-size:11.5px}.ssg-filter-chip-bar-clear-all:disabled{color:var(--ssg-glyph);cursor:default}.ssg-filter-chip-bar-clear-all:not(:disabled):hover{background-color:var(--ssg-header-hover-bg)}.ssg-popover{box-sizing:border-box;border:1px solid var(--ssg-panel-border);background-color:var(--ssg-panel-bg);box-shadow:var(--ssg-panel-shadow);z-index:1000;border-radius:12px;flex-direction:column;padding:12px;display:flex;position:fixed}.ssg-popover-header{border-bottom:1px solid var(--ssg-panel-separator);justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;padding-bottom:8px;display:flex}.ssg-popover-title{color:var(--ssg-panel-text-strong);-webkit-user-select:none;user-select:none;font-size:13px;font-weight:700}.ssg-popover-close{width:24px;height:24px;color:var(--ssg-panel-text-muted);cursor:pointer;background-color:#0000;border:none;border-radius:6px;justify-content:center;align-items:center;font-size:16px;line-height:1;display:flex}.ssg-popover-close:hover{background-color:var(--ssg-panel-hover-bg)}.ssg-popover-footer{border-top:1px solid var(--ssg-panel-separator);gap:8px;margin-top:8px;padding-top:8px;display:flex}.ssg-popover-header--draggable{cursor:grab;touch-action:none}.ssg-popover-header--draggable:active{cursor:grabbing}.ssg-toolpanel{max-height:420px}@keyframes ssg-toolpanel-flash{0%{box-shadow:0 0 0 3px var(--ssg-panel-accent-bg), 0 0 0 4px var(--ssg-panel-accent), var(--ssg-panel-shadow)}to{box-shadow:var(--ssg-panel-shadow)}}.ssg-toolpanel--flash{animation:.45s ease-out ssg-toolpanel-flash}@media (prefers-reduced-motion:reduce){.ssg-toolpanel--flash{animation:none}}.ssg-toolpanel-header{border-bottom:1px solid var(--ssg-panel-separator);align-items:center;gap:8px;margin-bottom:8px;padding-bottom:8px;display:flex}.ssg-toolpanel-seg{background-color:var(--ssg-seg-track-bg);border-radius:9px;flex:auto;min-width:0;padding:3px;display:flex;position:relative}.ssg-toolpanel-seg-indicator{width:calc((100% - 6px) / var(--ssg-seg-count));background-color:var(--ssg-seg-indicator-bg);box-shadow:var(--ssg-seg-indicator-shadow);transform:translateX(calc(var(--ssg-seg-index) * 100%));border-radius:7px;transition:transform .16s;position:absolute;top:3px;bottom:3px;left:3px}.ssg-toolpanel-seg-btn{z-index:1;min-width:0;color:var(--ssg-panel-text-muted);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;background:0 0;border:none;border-radius:7px;flex:1 1 0;justify-content:center;align-items:center;gap:5px;padding:4px 6px;font-size:12.5px;font-weight:500;line-height:1.3;transition:color .12s;display:inline-flex;position:relative}.ssg-toolpanel-seg-btn:not(.ssg-toolpanel-seg-btn--active):hover{color:var(--ssg-panel-text-sub)}.ssg-toolpanel-seg-btn--active{color:var(--ssg-panel-text-strong);cursor:default;font-weight:600}.ssg-toolpanel-seg-badge{background-color:var(--ssg-panel-accent);min-width:16px;height:16px;color:var(--ssg-panel-accent-contrast);text-align:center;border-radius:8px;padding:0 4px;font-size:10px;font-weight:700;line-height:16px}.ssg-toolpanel-body{flex-direction:column;flex:auto;min-width:0;min-height:240px;display:flex}.ssg-sort-list{flex-direction:column;flex:1;gap:6px;min-height:0;margin:0 -4px;padding:0 4px;display:flex;overflow-y:auto}.ssg-sort-empty{color:var(--ssg-panel-text-faint);-webkit-user-select:none;user-select:none;padding:10px 4px;font-size:12px}.ssg-sort-level{opacity:1;border-top:2px solid #0000;align-items:center;gap:6px;display:flex}.ssg-sort-level--drop-before{border-top-color:var(--ssg-panel-accent)}.ssg-sort-level--dragging{opacity:.4}.ssg-sort-handle{cursor:grab;touch-action:none;border-radius:6px;flex:none;justify-content:center;align-items:center;width:16px;height:26px;display:flex}.ssg-sort-handle--dragging{cursor:grabbing}.ssg-sort-handle--disabled{cursor:default}.ssg-sort-handle:not(.ssg-sort-handle--disabled):hover{background-color:var(--ssg-panel-hover-bg)}.ssg-sort-badge{background-color:var(--ssg-panel-accent-bg);width:18px;height:18px;color:var(--ssg-panel-accent);-webkit-user-select:none;user-select:none;border-radius:9px;flex:none;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:flex}.ssg-sort-select{box-sizing:border-box;border:1px solid var(--ssg-panel-border);min-width:0;color:var(--ssg-panel-text);background-color:var(--ssg-panel-bg);cursor:pointer;border-radius:6px;flex:1;padding:5px 6px;font-size:13px}.ssg-sort-select:disabled{cursor:default}.ssg-sort-dir-group{flex:none;display:flex}.ssg-sort-dir-btn{box-sizing:border-box;border:1px solid var(--ssg-panel-border);background-color:var(--ssg-panel-bg);color:var(--ssg-panel-text-sub);cursor:pointer;flex:none;padding:4px 9px;font-size:12px;line-height:1.4}.ssg-sort-dir-group>.ssg-sort-dir-btn:first-child{border-right:none;border-top-left-radius:6px;border-bottom-left-radius:6px}.ssg-sort-dir-group>.ssg-sort-dir-btn:last-child{border-top-right-radius:6px;border-bottom-right-radius:6px}.ssg-sort-dir-btn--active{border-color:var(--ssg-panel-accent);background-color:var(--ssg-panel-accent);color:var(--ssg-panel-accent-contrast)}.ssg-sort-dir-btn:disabled{color:var(--ssg-panel-text-disabled);cursor:default}.ssg-sort-delete{width:26px;height:26px;color:var(--ssg-panel-text-muted);cursor:pointer;background-color:#0000;border:none;border-radius:6px;flex:none;justify-content:center;align-items:center;font-size:15px;line-height:1;display:flex}.ssg-sort-delete:disabled{color:var(--ssg-panel-text-disabled);cursor:default}.ssg-sort-delete:not(:disabled):hover{background-color:var(--ssg-danger-bg);color:var(--ssg-danger)}.ssg-sort-drop-end{border-top:2px solid var(--ssg-panel-accent);height:0}.ssg-sort-footer-btn{box-sizing:border-box;border:1px solid var(--ssg-panel-separator);color:var(--ssg-panel-text);cursor:pointer;text-align:center;-webkit-user-select:none;user-select:none;background-color:#0000;border-radius:8px;font-size:13px}.ssg-sort-footer-btn--add{flex:1;padding:7px 8px}.ssg-sort-footer-btn--clear{flex:none;padding:7px 12px}.ssg-sort-footer-btn:disabled{color:var(--ssg-panel-text-disabled);cursor:default}.ssg-sort-footer-btn:not(:disabled):hover{background-color:var(--ssg-panel-hover-bg)}.ssg-sort-note{color:var(--ssg-panel-text-faint);-webkit-user-select:none;user-select:none;margin-top:8px;font-size:11px}.ssg-filter-manage-list{flex-direction:column;flex:1;gap:2px;min-height:0;margin:0 -4px;padding:0 4px;display:flex;overflow-y:auto}.ssg-filter-manage-empty{color:var(--ssg-panel-text-faint);-webkit-user-select:none;user-select:none;padding:10px 4px;font-size:12px}.ssg-filter-manage-row{border-radius:8px;align-items:center;gap:8px;padding:5px 6px;display:flex}.ssg-filter-manage-row:hover{background-color:var(--ssg-panel-hover-bg-subtle)}.ssg-filter-manage-row--global{border-bottom:1px solid var(--ssg-panel-separator);border-radius:0;margin-bottom:6px;padding-bottom:9px}.ssg-filter-manage-row--global:hover{background-color:#0000}.ssg-filter-manage-glyph{color:var(--ssg-panel-accent-text);flex:none;align-items:center;display:flex}.ssg-filter-manage-glyph--global{color:var(--ssg-panel-text-muted)}.ssg-filter-manage-main{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.ssg-filter-manage-name{color:var(--ssg-panel-text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:700;overflow:hidden}.ssg-filter-manage-hidden-note{color:var(--ssg-panel-text-faint);margin-left:4px;font-size:10.5px;font-weight:500}.ssg-filter-manage-summary{color:var(--ssg-panel-text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.ssg-filter-manage-actions{flex:none;gap:2px;display:flex}.ssg-filter-manage-icon-btn{width:24px;height:24px;color:var(--ssg-panel-text-muted);cursor:pointer;background-color:#0000;border:none;border-radius:6px;justify-content:center;align-items:center;font-size:13px;line-height:1;display:flex}.ssg-filter-manage-icon-btn:disabled{color:var(--ssg-panel-text-disabled);cursor:default}.ssg-filter-manage-icon-btn:not(:disabled):hover{background-color:var(--ssg-panel-hover-bg);color:var(--ssg-panel-text-strong)}.ssg-filter-manage-icon-btn--danger:not(:disabled):hover{background-color:var(--ssg-danger-bg);color:var(--ssg-danger)}.ssg-filter-manage-add{border:1px solid var(--ssg-panel-border);background-color:var(--ssg-panel-bg);min-width:0;color:var(--ssg-panel-text);cursor:pointer;border-radius:6px;outline:none;flex:1;padding:5px 6px;font-size:12px}.ssg-filter-manage-add:focus{border-color:var(--ssg-panel-accent)}.ssg-filter-manage-add:disabled{color:var(--ssg-panel-text-faint);cursor:default}.ssg-filter-manage-clear-all{color:var(--ssg-panel-text-muted);cursor:pointer;white-space:nowrap;background-color:#0000;border:none;border-radius:6px;flex:none;padding:5px 8px;font-size:12px}.ssg-filter-manage-clear-all:disabled{color:var(--ssg-panel-text-disabled);cursor:default}.ssg-filter-manage-clear-all:not(:disabled):hover{background-color:var(--ssg-danger-bg);color:var(--ssg-danger)}.ssg-chooser-search-row{align-items:center;gap:8px;margin-bottom:8px;display:flex}.ssg-chooser-master-btn{cursor:pointer;background:0 0;border:none;align-items:center;padding:0;display:flex}.ssg-chooser-master-btn:disabled{cursor:default}.ssg-chooser-search-field{flex:1;min-width:0;position:relative}.ssg-chooser-search-icon{color:var(--ssg-panel-text-faint);pointer-events:none;font-size:13px;line-height:1;position:absolute;top:50%;left:9px;transform:translateY(-50%)}.ssg-chooser-search-input{box-sizing:border-box;border:1px solid var(--ssg-panel-border);width:100%;color:var(--ssg-panel-text);border-radius:8px;outline:none;padding:7px 10px 7px 26px;font-size:13px}.ssg-chooser-list{flex:1;min-height:0;margin:0 -4px;padding:0 4px;overflow-y:auto}.ssg-chooser-empty{color:var(--ssg-panel-text-faint);-webkit-user-select:none;user-select:none;padding:10px 4px;font-size:12px}.ssg-chooser-section-heading{color:var(--ssg-panel-text-faint);letter-spacing:.4px;-webkit-user-select:none;user-select:none;padding:8px 4px 4px;font-size:11px;font-weight:700}.ssg-chooser-row{opacity:1;border-top:2px solid #0000;align-items:center;gap:4px;display:flex}.ssg-chooser-row--drop-before{border-top-color:var(--ssg-panel-accent)}.ssg-chooser-row--dragging{opacity:.4}.ssg-chooser-handle{cursor:grab;touch-action:none;border-radius:6px;flex:none;justify-content:center;align-items:center;width:18px;height:28px;display:flex}.ssg-chooser-handle--dragging{cursor:grabbing}.ssg-chooser-handle--disabled{cursor:default}.ssg-chooser-handle:not(.ssg-chooser-handle--disabled):hover{background-color:var(--ssg-panel-hover-bg)}.ssg-chooser-toggle{box-sizing:border-box;cursor:pointer;text-align:left;background-color:#0000;border:none;border-radius:8px;flex:1;align-items:center;gap:10px;min-width:0;padding:7px 8px;display:flex}.ssg-chooser-toggle:disabled{cursor:default}.ssg-chooser-toggle:not(:disabled):hover{background-color:var(--ssg-panel-hover-bg)}.ssg-chooser-label{min-width:0;color:var(--ssg-panel-text);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:13px;overflow:hidden}.ssg-chooser-label--muted{color:var(--ssg-panel-text-faint)}.ssg-chooser-drop-end{border-top:2px solid var(--ssg-panel-accent);height:0}.ssg-chooser-footer{border-top:1px solid var(--ssg-panel-separator);margin-top:8px;padding-top:8px}.ssg-chooser-reset-btn{box-sizing:border-box;border:1px solid var(--ssg-panel-separator);width:100%;color:var(--ssg-panel-text);cursor:pointer;text-align:center;-webkit-user-select:none;user-select:none;background-color:#0000;border-radius:8px;padding:7px 8px;font-size:13px;display:block}.ssg-chooser-reset-btn:disabled{color:var(--ssg-panel-text-disabled);cursor:default}.ssg-chooser-reset-btn:not(:disabled):hover{background-color:var(--ssg-panel-hover-bg)}.ssg-chooser-note{color:var(--ssg-panel-text-faint);-webkit-user-select:none;user-select:none;margin-top:8px;font-size:11px}.ssg-checkbox{border:1.5px solid var(--ssg-checkbox-border);background-color:var(--ssg-panel-bg);border-radius:5px;flex:none;justify-content:center;align-items:center;width:18px;height:18px;transition:background-color 80ms,border-color 80ms;display:flex}.ssg-checkbox--filled{border-color:var(--ssg-panel-accent);background-color:var(--ssg-panel-accent)}.ssg-checkbox--disabled{border-color:var(--ssg-panel-border);background-color:var(--ssg-panel-hover-bg)}.ssg-checkbox-dash{background-color:var(--ssg-panel-accent-contrast);border-radius:1px;width:9px;height:2px}.ssg-filter-popover{box-sizing:border-box;border:1px solid var(--ssg-panel-border);background-color:var(--ssg-panel-bg);box-shadow:var(--ssg-popover-shadow);z-index:1000;border-radius:10px;padding:12px;position:fixed}.ssg-filter-title{color:var(--ssg-panel-text);margin-bottom:8px;font-size:12px;font-weight:700}.ssg-filter-hint{color:var(--ssg-panel-text-muted);margin-bottom:8px;font-size:11px}.ssg-filter-meta{color:var(--ssg-panel-text-muted);margin-bottom:10px;font-size:11px}.ssg-filter-meta--ellipsis{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ssg-filter-collecting{text-align:center;color:var(--ssg-panel-text-muted);padding:24px;font-size:12px}.ssg-filter-input{box-sizing:border-box;border:1px solid var(--ssg-panel-border);border-radius:8px;outline:none;width:100%;margin-bottom:8px;padding:8px 10px}.ssg-filter-select{box-sizing:border-box;border:1px solid var(--ssg-panel-border);background-color:var(--ssg-panel-bg);border-radius:8px;outline:none;width:100%;margin-bottom:8px;padding:8px 10px}.ssg-filter-selectall{cursor:pointer;height:28px;color:var(--ssg-panel-text);border-bottom:1px solid var(--ssg-panel-separator);-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:0 8px;font-size:12px;display:flex}.ssg-filter-selectall-label{font-weight:600}.ssg-filter-list{border:1px solid var(--ssg-panel-separator);border-top:none;border-radius:0 0 8px 8px;height:208px;margin-bottom:8px;overflow-y:auto}.ssg-filter-empty{color:var(--ssg-panel-text-faint);text-align:center;padding:12px;font-size:12px}.ssg-filter-virt{width:100%;position:relative}.ssg-filter-option{box-sizing:border-box;cursor:pointer;color:var(--ssg-panel-text);-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:0 8px;font-size:12px;display:flex;position:absolute;top:0;left:0;right:0}.ssg-filter-option-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ssg-filter-footer{justify-content:flex-end;gap:8px;display:flex}.ssg-filter-btn-secondary{border:1px solid var(--ssg-panel-border);background-color:var(--ssg-panel-bg);color:var(--ssg-panel-text-sub);cursor:pointer;border-radius:8px;padding:6px 10px;font-size:12px}.ssg-filter-btn-primary{border:1px solid var(--ssg-panel-accent);background-color:var(--ssg-panel-accent);color:var(--ssg-panel-accent-contrast);cursor:pointer;border-radius:8px;padding:6px 10px;font-size:12px}.ssg-menu-panel{box-sizing:border-box;border:1px solid var(--ssg-panel-border);background-color:var(--ssg-panel-bg);box-shadow:var(--ssg-popover-shadow);border-radius:10px;padding:8px}.ssg-menu-title{color:var(--ssg-panel-text);text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid var(--ssg-panel-separator);-webkit-user-select:none;user-select:none;margin-bottom:4px;padding:2px 8px 6px;font-size:12px;font-weight:700;overflow:hidden}.ssg-menu-item{box-sizing:border-box;width:100%;color:var(--ssg-panel-text);text-align:left;cursor:pointer;background-color:#0000;border:none;border-radius:8px;align-items:center;gap:8px;padding:7px 8px;font-size:13px;display:flex}.ssg-menu-item:disabled,.ssg-menu-item--disabled{color:var(--ssg-panel-text-faint);cursor:default}.ssg-menu-item--active,.ssg-menu-item:not(:disabled):not(.ssg-menu-item--disabled):hover{background-color:var(--ssg-panel-hover-bg)}.ssg-menu-section-label{color:var(--ssg-panel-text-faint);-webkit-user-select:none;user-select:none;padding:6px 8px 2px;font-size:11px;font-weight:600}.ssg-menu-item--danger{color:var(--ssg-danger)}.ssg-menu-item--danger:not(:disabled):not(.ssg-menu-item--disabled):hover{background-color:var(--ssg-danger-bg)}.ssg-menu-submenu-anchor{position:relative}.ssg-menu-icon{text-align:center;flex:none;width:14px}.ssg-menu-sort-icon{text-align:center;width:14px;color:var(--ssg-panel-text-faint);flex:none;font-weight:400}.ssg-menu-sort-icon--active{color:var(--ssg-panel-accent);font-weight:700}.ssg-menu-check{text-align:center;width:14px;color:var(--ssg-panel-accent);flex:none;font-weight:700}.ssg-menu-check--hidden{visibility:hidden}.ssg-menu-label{flex:1;min-width:0}.ssg-menu-label--sorted{color:var(--ssg-panel-accent-text)}.ssg-menu-caret{color:var(--ssg-panel-text-faint);flex:none;font-size:12px;line-height:1}.ssg-menu-separator{border-top:1px solid var(--ssg-panel-separator);margin:4px 0}.ssg-menu-note{color:var(--ssg-panel-text-faint);-webkit-user-select:none;user-select:none;padding:4px 8px 2px;font-size:11px}.ssg-menu-footer{border-top:1px solid var(--ssg-panel-separator);justify-content:flex-end;margin-top:4px;padding-top:6px;display:flex}.ssg-menu-close-btn{border:1px solid var(--ssg-panel-border);background-color:var(--ssg-panel-bg);color:var(--ssg-panel-text-sub);cursor:pointer;border-radius:8px;padding:5px 10px;font-size:12px}.ssg-body-row{contain:layout style paint;width:100%;position:absolute;top:0;left:0}.ssg-body-row--checked{background-color:var(--ssg-row-selected-bg)}.ssg-body-row--checked .ssg-body-cell:not(.ssg-body-cell--row-hovered){background-color:#0000}.ssg-header-grip{width:12px;height:20px;color:var(--ssg-glyph-faint);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;flex:none;justify-content:center;align-items:center;display:inline-flex}.ssg-header-status{flex:none;align-items:center;gap:3px;display:inline-flex}.ssg-header-actions{background-color:var(--ssg-header-bg);opacity:0;pointer-events:none;align-items:center;gap:2px;height:100%;padding:0 6px 0 14px;transition:opacity .1s;display:flex;position:absolute;top:0;right:0}.ssg-header-cell:hover .ssg-header-actions{opacity:1;pointer-events:auto;background-color:var(--ssg-header-hover-bg)}@media (hover:none){.ssg-header-actions{opacity:1;pointer-events:auto;background-color:#0000;height:auto;padding:0;position:static}}.ssg-header-actions .ssg-header-grip,.ssg-header-actions .ssg-icon-btn:not(.ssg-icon-btn--active){color:var(--ssg-glyph-hover)}.ssg-header-label{min-width:0;color:var(--ssg-header-text);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.ssg-header-label--filtered{color:var(--ssg-accent-strong)}.ssg-header-sort{color:var(--ssg-accent);flex:none;align-items:center;gap:1px;font-size:12px;font-weight:700;line-height:1;display:inline-flex}.ssg-header-sort-priority{font-size:9px;font-weight:700;line-height:1}.ssg-header-filtered-mark{color:var(--ssg-accent-strong);flex:none;align-items:center;display:inline-flex}@keyframes ssg-header-jump-flash{0%{box-shadow:inset 0 0 0 2px var(--ssg-accent);background-color:var(--ssg-select-bg)}70%{box-shadow:inset 0 0 0 2px var(--ssg-accent);background-color:var(--ssg-select-bg)}to{box-shadow:none}}.ssg-header-cell--jump-flash{animation:1.2s ease-out ssg-header-jump-flash}.ssg-header-resize{cursor:col-resize;z-index:3;width:6px;height:100%;position:absolute;top:0;right:-3px}.ssg-skeleton-rowheader{color:var(--ssg-glyph)}.ssg-skeleton-bar{background-color:var(--ssg-skeleton-bar);border-radius:4px;height:10px}.ssg-shell{background-color:var(--ssg-cell-bg);position:relative;overflow:hidden}.ssg-scroll-container{max-height:480px;position:relative;overflow:auto}.ssg-inner-row{display:flex}.ssg-center-pane{z-index:1;flex-shrink:0;position:relative}.ssg-empty-state{height:160px;color:var(--ssg-panel-text-faint);-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;font-size:13px;display:flex;position:sticky;left:0}.ssg-autosize-overlay{pointer-events:none;z-index:5;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.ssg-autosize-pill{background-color:var(--ssg-pill-bg);color:var(--ssg-pill-text);box-shadow:var(--ssg-pill-shadow);-webkit-user-select:none;user-select:none;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:600}.ssg-filter-overlay{pointer-events:none;z-index:5;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.ssg-filter-overlay-chip{background-color:var(--ssg-cell-bg);border:1px solid var(--ssg-line-strong);box-shadow:var(--ssg-overlay-chip-shadow);color:var(--ssg-readonly-text);font-variant-numeric:tabular-nums;white-space:nowrap;-webkit-user-select:none;user-select:none;border-radius:999px;align-items:center;gap:8px;padding:6px 12px;font-size:12px;display:inline-flex}.ssg-filter-overlay-text{text-align:center;min-width:5.5em}.ssg-filter-spinner{border:2px solid var(--ssg-line-strong);border-top-color:var(--ssg-accent);border-radius:50%;width:14px;height:14px;animation:.7s linear infinite ssg-filter-spin}@keyframes ssg-filter-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.ssg-filter-spinner{animation:none}}.ssg-ssrm-error-bars{z-index:5;flex-direction:column;align-items:center;gap:8px;max-width:calc(100% - 24px);display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.ssg-ssrm-error-bar{background-color:var(--ssg-pill-bg);max-width:100%;color:var(--ssg-pill-text);box-shadow:var(--ssg-pill-shadow);white-space:nowrap;-webkit-user-select:none;user-select:none;border-radius:999px;align-items:center;gap:10px;padding:6px 8px 6px 14px;font-size:12.5px;display:flex}.ssg-ssrm-error-bar-dot{background-color:var(--ssg-invalid);border-radius:50%;flex:none;width:8px;height:8px}.ssg-ssrm-error-bar-msg{text-overflow:ellipsis;overflow:hidden}.ssg-ssrm-error-bar-retry{appearance:none;font:inherit;cursor:pointer;background-color:var(--ssg-pill-text);color:var(--ssg-ghost-bg);border:none;border-radius:999px;padding:3px 12px;font-weight:600}.ssg-ssrm-error-bar-close{appearance:none;color:inherit;opacity:.7;cursor:pointer;background:0 0;border:none;padding:2px 6px;font-size:13px;line-height:1}.ssg-ssrm-error-bar-close:hover{opacity:1}.ssg-col-drop-indicator{background-color:var(--ssg-drop-indicator);width:2px}.ssg-col-drop-indicator:before,.ssg-col-drop-indicator:after{content:"";background-color:var(--ssg-drop-indicator);width:7px;height:7px;position:absolute;left:50%;transform:translate(-50%)rotate(45deg)}.ssg-col-drop-indicator:before{top:-3px}.ssg-col-drop-indicator:after{bottom:-3px}.ssg-tooltip{z-index:9000;pointer-events:none;opacity:0;white-space:pre-line;overflow-wrap:break-word;background-color:var(--ssg-tooltip-bg);max-width:260px;color:var(--ssg-tooltip-text);box-shadow:var(--ssg-tooltip-shadow);border-radius:6px;padding:5px 10px;font-size:12px;font-weight:500;line-height:1.45;transition:opacity .12s,transform .12s;position:fixed;transform:translateY(2px)}.ssg-tooltip--visible{opacity:1;transform:translateY(0)}
|
|
2
2
|
/*$vite$:1*/
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { GridColumn } from '../model/gridTypes';
|
|
2
|
+
import type { ServerSideCellEditInput } from '../logic/serverSideEdits';
|
|
2
3
|
export type ClipboardMatrix = string[][];
|
|
3
4
|
export declare const parseClipboardText: (text: string) => ClipboardMatrix;
|
|
4
5
|
export declare const serializeSelectionToTsv: <T>(getRow: (viewIndex: number) => T, viewRowCount: number, columns: GridColumn<T>[], selection: {
|
|
@@ -23,3 +24,4 @@ export declare const serializeSelectionToTsv: <T>(getRow: (viewIndex: number) =>
|
|
|
23
24
|
endCol: number;
|
|
24
25
|
} | null) => string;
|
|
25
26
|
export declare const applyClipboardMatrixToRows: <T extends object>(rows: T[], resolveSourceIndex: (viewIndex: number) => number | undefined, columns: GridColumn<T>[], matrix: ClipboardMatrix, startRowIndex: number, startColIndex: number, canWriteCell: (originalRowIndex: number, colIndex: number, row: T, column: GridColumn<T>) => boolean) => T[];
|
|
27
|
+
export declare const buildClipboardCellEdits: <T extends object>(getRow: (viewIndex: number) => T | undefined, columns: GridColumn<T>[], matrix: ClipboardMatrix, startRowIndex: number, startColIndex: number, canWriteCell: (viewIndex: number, colIndex: number, row: T, column: GridColumn<T>) => boolean) => ServerSideCellEditInput<T>[];
|
|
@@ -19,6 +19,7 @@ type GridBodyLayerProps<T> = {
|
|
|
19
19
|
rowHeight: number;
|
|
20
20
|
autoHeight?: boolean;
|
|
21
21
|
showCellOverflowTooltip?: boolean;
|
|
22
|
+
showValidationMarks?: boolean;
|
|
22
23
|
isServerSide?: boolean;
|
|
23
24
|
rowHeaderCellStyle: CSSProperties;
|
|
24
25
|
hoveredRowIndex: number | null;
|
|
@@ -42,5 +43,5 @@ type GridBodyLayerProps<T> = {
|
|
|
42
43
|
bodyRowClassName?: string;
|
|
43
44
|
rowHeaderCellClassName?: string;
|
|
44
45
|
};
|
|
45
|
-
export declare function GridBodyLayer<T>({ pane, ownsRowHeader, leadingWidth, rowModel, virtualRows, virtualRowIndexes, renderEntries, rowHeight, autoHeight, showCellOverflowTooltip, isServerSide, rowHeaderCellStyle, hoveredRowIndex, isWholeGridSelected, enableRowSelection, rowSelectionState, activeCell, editingCell, selectionSnapshot, readOnly, canEditCell, onRowHeaderPointerDown, onRowHeaderPointerEnter, onRowHeaderPointerLeave, onCellPointerDown, onCellPointerEnter, onCellDoubleClick, renderCellContent, getRowClassName, bodyCellClassName, bodyRowClassName, rowHeaderCellClassName, }: GridBodyLayerProps<T>): import("react").JSX.Element;
|
|
46
|
+
export declare function GridBodyLayer<T>({ pane, ownsRowHeader, leadingWidth, rowModel, virtualRows, virtualRowIndexes, renderEntries, rowHeight, autoHeight, showCellOverflowTooltip, showValidationMarks, isServerSide, rowHeaderCellStyle, hoveredRowIndex, isWholeGridSelected, enableRowSelection, rowSelectionState, activeCell, editingCell, selectionSnapshot, readOnly, canEditCell, onRowHeaderPointerDown, onRowHeaderPointerEnter, onRowHeaderPointerLeave, onCellPointerDown, onCellPointerEnter, onCellDoubleClick, renderCellContent, getRowClassName, bodyCellClassName, bodyRowClassName, rowHeaderCellClassName, }: GridBodyLayerProps<T>): import("react").JSX.Element;
|
|
46
47
|
export default GridBodyLayer;
|