sheetgl 2.0.0 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -7
- package/bin/cli.mjs +35 -10
- package/dist/lib/sheetgl.cjs +4 -4
- package/dist/lib/sheetgl.cjs.map +1 -1
- package/dist/lib/sheetgl.js +8362 -3706
- package/dist/lib/sheetgl.js.map +1 -1
- package/dist/lib/types/columns/ColumnTypeRegistry.d.ts.map +1 -1
- package/dist/lib/types/columns/initPlugins.d.ts.map +1 -1
- package/dist/lib/types/columns/types/CurrencyColumn/CurrencyPainter.d.ts +1 -1
- package/dist/lib/types/columns/types/CurrencyColumn/CurrencyPainter.d.ts.map +1 -1
- package/dist/lib/types/columns/types/DateColumn/DateEditor.d.ts.map +1 -1
- package/dist/lib/types/columns/types/DateColumn/DatePainter.d.ts +1 -1
- package/dist/lib/types/columns/types/DateColumn/DatePainter.d.ts.map +1 -1
- package/dist/lib/types/columns/types/DateTimeColumn/DateTimeEditor.d.ts.map +1 -1
- package/dist/lib/types/columns/types/DateTimeColumn/DateTimePainter.d.ts +2 -2
- package/dist/lib/types/columns/types/DateTimeColumn/DateTimePainter.d.ts.map +1 -1
- package/dist/lib/types/columns/types/MultiSelectColumn/MultiSelectEditor.d.ts.map +1 -1
- package/dist/lib/types/columns/types/MultiSelectColumn/MultiSelectPainter.d.ts.map +1 -1
- package/dist/lib/types/columns/types/NumberColumn/NumberPainter.d.ts +1 -1
- package/dist/lib/types/columns/types/NumberColumn/NumberPainter.d.ts.map +1 -1
- package/dist/lib/types/columns/types/PdfColumn/PdfPainter.d.ts +3 -0
- package/dist/lib/types/columns/types/PdfColumn/PdfPainter.d.ts.map +1 -0
- package/dist/lib/types/columns/types/PdfColumn/index.d.ts +3 -0
- package/dist/lib/types/columns/types/PdfColumn/index.d.ts.map +1 -0
- package/dist/lib/types/columns/types/ProgressColumn/ProgressPainter.d.ts +1 -1
- package/dist/lib/types/columns/types/ProgressColumn/ProgressPainter.d.ts.map +1 -1
- package/dist/lib/types/columns/types/SelectColumn/SelectPainter.d.ts +1 -1
- package/dist/lib/types/columns/types/SelectColumn/SelectPainter.d.ts.map +1 -1
- package/dist/lib/types/core/FilterEngine.d.ts +17 -0
- package/dist/lib/types/core/FilterEngine.d.ts.map +1 -1
- package/dist/lib/types/core/GeometryEngine.d.ts +16 -2
- package/dist/lib/types/core/GeometryEngine.d.ts.map +1 -1
- package/dist/lib/types/core/GridApi.d.ts +66 -0
- package/dist/lib/types/core/GridApi.d.ts.map +1 -0
- package/dist/lib/types/core/GroupingEngine.d.ts.map +1 -1
- package/dist/lib/types/core/SortEngine.d.ts.map +1 -1
- package/dist/lib/types/data/LocalDataStore.d.ts +8 -1
- package/dist/lib/types/data/LocalDataStore.d.ts.map +1 -1
- package/dist/lib/types/data/RemoteDataStore.d.ts +53 -4
- package/dist/lib/types/data/RemoteDataStore.d.ts.map +1 -1
- package/dist/lib/types/hooks/useGridGeometry.d.ts +65 -0
- package/dist/lib/types/hooks/useGridGeometry.d.ts.map +1 -0
- package/dist/lib/types/hooks/useGridSelection.d.ts +43 -0
- package/dist/lib/types/hooks/useGridSelection.d.ts.map +1 -0
- package/dist/lib/types/index.d.ts +16 -2
- package/dist/lib/types/index.d.ts.map +1 -1
- package/dist/lib/types/overlays/BatchChangesModal.d.ts +19 -0
- package/dist/lib/types/overlays/BatchChangesModal.d.ts.map +1 -0
- package/dist/lib/types/overlays/DeleteConfirmProgressModal.d.ts +14 -0
- package/dist/lib/types/overlays/DeleteConfirmProgressModal.d.ts.map +1 -0
- package/dist/lib/types/overlays/HeaderFilterPopover.d.ts +3 -1
- package/dist/lib/types/overlays/HeaderFilterPopover.d.ts.map +1 -1
- package/dist/lib/types/overlays/PdfPreviewModalOverlay.d.ts +18 -0
- package/dist/lib/types/overlays/PdfPreviewModalOverlay.d.ts.map +1 -0
- package/dist/lib/types/renderer/CanvasRenderer.d.ts +5 -1
- package/dist/lib/types/renderer/CanvasRenderer.d.ts.map +1 -1
- package/dist/lib/types/renderer/GroupRowPainter.d.ts.map +1 -1
- package/dist/lib/types/theme/ColumnColorEngine.d.ts +52 -0
- package/dist/lib/types/theme/ColumnColorEngine.d.ts.map +1 -0
- package/dist/lib/types/types/filter.d.ts +2 -0
- package/dist/lib/types/types/filter.d.ts.map +1 -1
- package/dist/lib/types/types/grid.d.ts +133 -1
- package/dist/lib/types/types/grid.d.ts.map +1 -1
- package/dist/lib/types/types/store.d.ts +22 -5
- package/dist/lib/types/types/store.d.ts.map +1 -1
- package/dist/lib/types/ui/FormulaBar.d.ts.map +1 -1
- package/dist/lib/types/ui/SheetGL.d.ts +30 -5
- package/dist/lib/types/ui/SheetGL.d.ts.map +1 -1
- package/dist/lib/types/ui/SheetGLLogo.d.ts +1 -0
- package/dist/lib/types/ui/SheetGLLogo.d.ts.map +1 -1
- package/dist/lib/types/ui/SummaryFooter.d.ts +4 -0
- package/dist/lib/types/ui/SummaryFooter.d.ts.map +1 -1
- package/dist/lib/types/ui/ToolBar.d.ts +5 -1
- package/dist/lib/types/ui/ToolBar.d.ts.map +1 -1
- package/dist/lib/types/version.d.ts +2 -0
- package/dist/lib/types/version.d.ts.map +1 -0
- package/package.json +78 -78
package/README.md
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
# SheetGL
|
|
1
|
+
# SheetGL v2.0.2 ⚡
|
|
2
2
|
|
|
3
3
|
> **Next-Generation High-Performance WebGL & Canvas Excel DataGrid for React**
|
|
4
|
-
> Combining **GPU-Accelerated
|
|
4
|
+
> Combining **GPU-Accelerated Canvas Virtualization** and **Microsoft Excel UX** with **Enterprise DataGrid Architecture** (Full Event Lifecycle, Async Cascading Backend Lookups, Dynamic Summaries, Batch CRUD, and Role-Based Permissions). Zero dependencies, zero DOM bloat, **100% Free under the MIT License**.
|
|
5
5
|
|
|
6
|
+
[](https://www.npmjs.com/package/sheetgl)
|
|
6
7
|
[](https://opensource.org/licenses/MIT)
|
|
7
8
|
[](https://react.dev)
|
|
8
9
|
[](https://www.typescriptlang.org)
|
|
9
|
-
[](#)
|
|
10
11
|
[](#)
|
|
11
12
|
|
|
12
13
|
---
|
|
13
14
|
|
|
14
|
-
## 🌟 Key Highlights in v2.0
|
|
15
|
+
## 🌟 Key Highlights in v2.0.2
|
|
15
16
|
|
|
16
|
-
- 🏎️ **Ultra-Fast
|
|
17
|
+
- 🏎️ **Ultra-Fast Canvas Virtualization:** Renders 10,000–100,000+ rows and dozens of columns on a single high-DPI `<canvas>` element with right-side live scroll indicators, quick jump controls (`⤒` / `⤓`), and automatic edge-scrolling during drag operations.
|
|
17
18
|
- 📐 **Complete Microsoft Excel UX:**
|
|
18
19
|
- **Bottom-Right Fill Handle & Smart AutoFill:** Drag the corner square across rows or columns to duplicate values or auto-increment sequential codes (`ACC-100001` → `ACC-100002`).
|
|
19
20
|
- **Right-Side Quick Cell Duplicate Handle (`+`):** Click or drag the right-edge `+` pill on any active selection to duplicate cell values.
|
|
@@ -37,12 +38,12 @@
|
|
|
37
38
|
|
|
38
39
|
## ⚖️ Comparison: SheetGL vs. Traditional Grids
|
|
39
40
|
|
|
40
|
-
| Feature | SheetGL
|
|
41
|
+
| Feature | SheetGL v2.0.2 | Traditional Enterprise Grids | AG-Grid Enterprise | Standard React Table |
|
|
41
42
|
| :--- | :---: | :---: | :---: | :---: |
|
|
42
43
|
| **Licensing** | **Free (MIT)** | Commercial ($1,200+/yr) | Commercial ($1,200+/yr) | Free (MIT) |
|
|
43
44
|
| **Rendering Engine** | **HTML5 Canvas 2D** | DOM Virtualization | DOM Virtualization | 100% DOM Nodes |
|
|
44
45
|
| **DOM Overhead** | **1 Canvas Element** | 500+ DOM Nodes | 400+ DOM Nodes | 1,000+ DOM Nodes |
|
|
45
|
-
| **Scroll Performance (100k rows)** | **
|
|
46
|
+
| **Scroll Performance (100k rows)** | **Ultra-Smooth** | Moderate | Fast | Lag / Crash |
|
|
46
47
|
| **Memory Footprint** | **~15 MB** | ~60 MB | ~55 MB | 150+ MB |
|
|
47
48
|
| **Fill Handle & Quick Duplicate** | **Built-in** | ❌ Manual | Plugin | ❌ Not supported |
|
|
48
49
|
| **Async Cascading Lookups** | **Built-in** | Supported | ❌ Complex | ❌ Not supported |
|
package/bin/cli.mjs
CHANGED
|
@@ -19,9 +19,9 @@ const RESET = '\x1b[0m';
|
|
|
19
19
|
function readPkgVersion() {
|
|
20
20
|
try {
|
|
21
21
|
const pkg = JSON.parse(fs.readFileSync(path.join(pkgRoot, 'package.json'), 'utf8'));
|
|
22
|
-
return pkg.version || '2.0.
|
|
22
|
+
return pkg.version || '2.0.2';
|
|
23
23
|
} catch {
|
|
24
|
-
return '2.0.
|
|
24
|
+
return '2.0.2';
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
|
|
@@ -29,7 +29,7 @@ function printBanner() {
|
|
|
29
29
|
const version = readPkgVersion();
|
|
30
30
|
console.log(`
|
|
31
31
|
${CYAN}${BOLD} ╔══════════════════════════════════════════════════════════════╗
|
|
32
|
-
║ ⚡ SheetGL
|
|
32
|
+
║ ⚡ SheetGL v${version} — Enterprise Canvas Excel DataGrid ║
|
|
33
33
|
╚══════════════════════════════════════════════════════════════╝${RESET}
|
|
34
34
|
`);
|
|
35
35
|
}
|
|
@@ -157,23 +157,48 @@ export function SheetGLGrid() {
|
|
|
157
157
|
export default SheetGLGrid;
|
|
158
158
|
`;
|
|
159
159
|
|
|
160
|
-
function handleInit(
|
|
160
|
+
function handleInit(rawArgs) {
|
|
161
161
|
printBanner();
|
|
162
|
-
|
|
162
|
+
let dirOpt = null;
|
|
163
|
+
let nameOpt = null;
|
|
164
|
+
let rowsOpt = 1000;
|
|
165
|
+
let positionalPath = null;
|
|
166
|
+
|
|
167
|
+
for (let i = 0; i < rawArgs.length; i++) {
|
|
168
|
+
const arg = rawArgs[i];
|
|
169
|
+
if (arg === '--dir' || arg === '-d') {
|
|
170
|
+
dirOpt = rawArgs[++i];
|
|
171
|
+
} else if (arg === '--name' || arg === '-n') {
|
|
172
|
+
nameOpt = rawArgs[++i];
|
|
173
|
+
} else if (arg === '--rows' || arg === '-r') {
|
|
174
|
+
const parsed = parseInt(rawArgs[++i], 10);
|
|
175
|
+
if (!Number.isNaN(parsed) && parsed > 0) rowsOpt = parsed;
|
|
176
|
+
} else if (!arg.startsWith('-') && !positionalPath) {
|
|
177
|
+
positionalPath = arg;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
const componentName = (nameOpt || 'SheetGLGrid').replace(/\.(tsx|ts|jsx|js)$/i, '');
|
|
182
|
+
const defaultRelPath = path.join(dirOpt || 'src/components', `${componentName}.tsx`);
|
|
183
|
+
const outPath = path.resolve(process.cwd(), positionalPath || defaultRelPath);
|
|
163
184
|
const outDir = path.dirname(outPath);
|
|
164
185
|
|
|
165
186
|
if (!fs.existsSync(outDir)) {
|
|
166
187
|
fs.mkdirSync(outDir, { recursive: true });
|
|
167
188
|
}
|
|
168
189
|
|
|
169
|
-
|
|
190
|
+
const customizedTemplate = STARTER_COMPONENT_TEMPLATE
|
|
191
|
+
.replace(/SheetGLGrid/g, componentName)
|
|
192
|
+
.replace('length: 1000', `length: ${rowsOpt}`);
|
|
193
|
+
|
|
194
|
+
fs.writeFileSync(outPath, customizedTemplate, 'utf8');
|
|
170
195
|
console.log(`${GREEN}✔ Created SheetGL starter component at:${RESET} ${BOLD}${outPath}${RESET}`);
|
|
171
196
|
console.log(`
|
|
172
197
|
${BOLD}Next steps:${RESET}
|
|
173
198
|
1. Ensure ${CYAN}sheetgl${RESET} is installed in your project:
|
|
174
199
|
${YELLOW}npm install sheetgl${RESET}
|
|
175
|
-
2. Import and render ${CYAN}
|
|
176
|
-
${DIM}import {
|
|
200
|
+
2. Import and render ${CYAN}<${componentName} />${RESET} in your ${BOLD}App.tsx${RESET}:
|
|
201
|
+
${DIM}import { ${componentName} } from './components/${componentName}';${RESET}
|
|
177
202
|
`);
|
|
178
203
|
}
|
|
179
204
|
|
|
@@ -224,7 +249,7 @@ function handleCreate(projectName) {
|
|
|
224
249
|
<head>
|
|
225
250
|
<meta charset="UTF-8" />
|
|
226
251
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
227
|
-
<title>${projectName} — SheetGL
|
|
252
|
+
<title>${projectName} — SheetGL</title>
|
|
228
253
|
</head>
|
|
229
254
|
<body style="margin:0;padding:0;overflow:hidden;">
|
|
230
255
|
<div id="root"></div>
|
|
@@ -331,7 +356,7 @@ const args = process.argv.slice(2);
|
|
|
331
356
|
const cmd = (args[0] || 'help').toLowerCase();
|
|
332
357
|
|
|
333
358
|
if (cmd === 'init' || cmd === 'setup') {
|
|
334
|
-
handleInit(args
|
|
359
|
+
handleInit(args.slice(1));
|
|
335
360
|
} else if (cmd === 'create') {
|
|
336
361
|
handleCreate(args[1]);
|
|
337
362
|
} else if (cmd === 'doctor' || cmd === 'info' || cmd === 'check') {
|