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.
Files changed (77) hide show
  1. package/README.md +8 -7
  2. package/bin/cli.mjs +35 -10
  3. package/dist/lib/sheetgl.cjs +4 -4
  4. package/dist/lib/sheetgl.cjs.map +1 -1
  5. package/dist/lib/sheetgl.js +8362 -3706
  6. package/dist/lib/sheetgl.js.map +1 -1
  7. package/dist/lib/types/columns/ColumnTypeRegistry.d.ts.map +1 -1
  8. package/dist/lib/types/columns/initPlugins.d.ts.map +1 -1
  9. package/dist/lib/types/columns/types/CurrencyColumn/CurrencyPainter.d.ts +1 -1
  10. package/dist/lib/types/columns/types/CurrencyColumn/CurrencyPainter.d.ts.map +1 -1
  11. package/dist/lib/types/columns/types/DateColumn/DateEditor.d.ts.map +1 -1
  12. package/dist/lib/types/columns/types/DateColumn/DatePainter.d.ts +1 -1
  13. package/dist/lib/types/columns/types/DateColumn/DatePainter.d.ts.map +1 -1
  14. package/dist/lib/types/columns/types/DateTimeColumn/DateTimeEditor.d.ts.map +1 -1
  15. package/dist/lib/types/columns/types/DateTimeColumn/DateTimePainter.d.ts +2 -2
  16. package/dist/lib/types/columns/types/DateTimeColumn/DateTimePainter.d.ts.map +1 -1
  17. package/dist/lib/types/columns/types/MultiSelectColumn/MultiSelectEditor.d.ts.map +1 -1
  18. package/dist/lib/types/columns/types/MultiSelectColumn/MultiSelectPainter.d.ts.map +1 -1
  19. package/dist/lib/types/columns/types/NumberColumn/NumberPainter.d.ts +1 -1
  20. package/dist/lib/types/columns/types/NumberColumn/NumberPainter.d.ts.map +1 -1
  21. package/dist/lib/types/columns/types/PdfColumn/PdfPainter.d.ts +3 -0
  22. package/dist/lib/types/columns/types/PdfColumn/PdfPainter.d.ts.map +1 -0
  23. package/dist/lib/types/columns/types/PdfColumn/index.d.ts +3 -0
  24. package/dist/lib/types/columns/types/PdfColumn/index.d.ts.map +1 -0
  25. package/dist/lib/types/columns/types/ProgressColumn/ProgressPainter.d.ts +1 -1
  26. package/dist/lib/types/columns/types/ProgressColumn/ProgressPainter.d.ts.map +1 -1
  27. package/dist/lib/types/columns/types/SelectColumn/SelectPainter.d.ts +1 -1
  28. package/dist/lib/types/columns/types/SelectColumn/SelectPainter.d.ts.map +1 -1
  29. package/dist/lib/types/core/FilterEngine.d.ts +17 -0
  30. package/dist/lib/types/core/FilterEngine.d.ts.map +1 -1
  31. package/dist/lib/types/core/GeometryEngine.d.ts +16 -2
  32. package/dist/lib/types/core/GeometryEngine.d.ts.map +1 -1
  33. package/dist/lib/types/core/GridApi.d.ts +66 -0
  34. package/dist/lib/types/core/GridApi.d.ts.map +1 -0
  35. package/dist/lib/types/core/GroupingEngine.d.ts.map +1 -1
  36. package/dist/lib/types/core/SortEngine.d.ts.map +1 -1
  37. package/dist/lib/types/data/LocalDataStore.d.ts +8 -1
  38. package/dist/lib/types/data/LocalDataStore.d.ts.map +1 -1
  39. package/dist/lib/types/data/RemoteDataStore.d.ts +53 -4
  40. package/dist/lib/types/data/RemoteDataStore.d.ts.map +1 -1
  41. package/dist/lib/types/hooks/useGridGeometry.d.ts +65 -0
  42. package/dist/lib/types/hooks/useGridGeometry.d.ts.map +1 -0
  43. package/dist/lib/types/hooks/useGridSelection.d.ts +43 -0
  44. package/dist/lib/types/hooks/useGridSelection.d.ts.map +1 -0
  45. package/dist/lib/types/index.d.ts +16 -2
  46. package/dist/lib/types/index.d.ts.map +1 -1
  47. package/dist/lib/types/overlays/BatchChangesModal.d.ts +19 -0
  48. package/dist/lib/types/overlays/BatchChangesModal.d.ts.map +1 -0
  49. package/dist/lib/types/overlays/DeleteConfirmProgressModal.d.ts +14 -0
  50. package/dist/lib/types/overlays/DeleteConfirmProgressModal.d.ts.map +1 -0
  51. package/dist/lib/types/overlays/HeaderFilterPopover.d.ts +3 -1
  52. package/dist/lib/types/overlays/HeaderFilterPopover.d.ts.map +1 -1
  53. package/dist/lib/types/overlays/PdfPreviewModalOverlay.d.ts +18 -0
  54. package/dist/lib/types/overlays/PdfPreviewModalOverlay.d.ts.map +1 -0
  55. package/dist/lib/types/renderer/CanvasRenderer.d.ts +5 -1
  56. package/dist/lib/types/renderer/CanvasRenderer.d.ts.map +1 -1
  57. package/dist/lib/types/renderer/GroupRowPainter.d.ts.map +1 -1
  58. package/dist/lib/types/theme/ColumnColorEngine.d.ts +52 -0
  59. package/dist/lib/types/theme/ColumnColorEngine.d.ts.map +1 -0
  60. package/dist/lib/types/types/filter.d.ts +2 -0
  61. package/dist/lib/types/types/filter.d.ts.map +1 -1
  62. package/dist/lib/types/types/grid.d.ts +133 -1
  63. package/dist/lib/types/types/grid.d.ts.map +1 -1
  64. package/dist/lib/types/types/store.d.ts +22 -5
  65. package/dist/lib/types/types/store.d.ts.map +1 -1
  66. package/dist/lib/types/ui/FormulaBar.d.ts.map +1 -1
  67. package/dist/lib/types/ui/SheetGL.d.ts +30 -5
  68. package/dist/lib/types/ui/SheetGL.d.ts.map +1 -1
  69. package/dist/lib/types/ui/SheetGLLogo.d.ts +1 -0
  70. package/dist/lib/types/ui/SheetGLLogo.d.ts.map +1 -1
  71. package/dist/lib/types/ui/SummaryFooter.d.ts +4 -0
  72. package/dist/lib/types/ui/SummaryFooter.d.ts.map +1 -1
  73. package/dist/lib/types/ui/ToolBar.d.ts +5 -1
  74. package/dist/lib/types/ui/ToolBar.d.ts.map +1 -1
  75. package/dist/lib/types/version.d.ts +2 -0
  76. package/dist/lib/types/version.d.ts.map +1 -0
  77. package/package.json +78 -78
package/README.md CHANGED
@@ -1,19 +1,20 @@
1
- # SheetGL Pro v2.0 Enterprise ⚡
1
+ # SheetGL v2.0.2 ⚡
2
2
 
3
3
  > **Next-Generation High-Performance WebGL & Canvas Excel DataGrid for React**
4
- > Combining **GPU-Accelerated 60 FPS 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**.
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
+ [![Version](https://img.shields.io/badge/version-2.0.2-0284c7.svg)](https://www.npmjs.com/package/sheetgl)
6
7
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
7
8
  [![React](https://img.shields.io/badge/React-19-61dafb.svg)](https://react.dev)
8
9
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.0%2B-blue.svg)](https://www.typescriptlang.org)
9
- [![Performance](https://img.shields.io/badge/Performance-60_FPS_Canvas-success.svg)](#)
10
+ [![Performance](https://img.shields.io/badge/Performance-Zero_DOM_Canvas-success.svg)](#)
10
11
  [![i18n](https://img.shields.io/badge/i18n-Multi--Language-orange.svg)](#)
11
12
 
12
13
  ---
13
14
 
14
- ## 🌟 Key Highlights in v2.0
15
+ ## 🌟 Key Highlights in v2.0.2
15
16
 
16
- - 🏎️ **Ultra-Fast 60 FPS 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
+ - 🏎️ **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 Pro v2.0 | Traditional Enterprise Grids | AG-Grid Enterprise | Standard React Table |
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)** | **Silky 60 FPS** | 30–45 FPS | 45–55 FPS | Lag / Crash |
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.0';
22
+ return pkg.version || '2.0.2';
23
23
  } catch {
24
- return '2.0.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 Pro v${version} — Enterprise Canvas Excel DataGrid ║
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(targetRelPath) {
160
+ function handleInit(rawArgs) {
161
161
  printBanner();
162
- const outPath = path.resolve(process.cwd(), targetRelPath || 'src/components/SheetGLGrid.tsx');
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
- fs.writeFileSync(outPath, STARTER_COMPONENT_TEMPLATE, 'utf8');
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}<SheetGLGrid />${RESET} in your ${BOLD}App.tsx${RESET}:
176
- ${DIM}import { SheetGLGrid } from './components/SheetGLGrid';${RESET}
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 Pro</title>
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[1]);
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') {