argent-grid 0.1.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/.github/workflows/pages.yml +68 -0
- package/AGENTS.md +179 -0
- package/README.md +222 -0
- package/demo-app/README.md +70 -0
- package/demo-app/angular.json +78 -0
- package/demo-app/e2e/benchmark.spec.ts +53 -0
- package/demo-app/e2e/demo-page.spec.ts +77 -0
- package/demo-app/e2e/grid-features.spec.ts +269 -0
- package/demo-app/package-lock.json +14023 -0
- package/demo-app/package.json +36 -0
- package/demo-app/playwright-test-menu.js +19 -0
- package/demo-app/playwright.config.ts +23 -0
- package/demo-app/src/app/app.component.ts +10 -0
- package/demo-app/src/app/app.config.ts +13 -0
- package/demo-app/src/app/app.routes.ts +7 -0
- package/demo-app/src/app/demo-page/demo-page.component.css +313 -0
- package/demo-app/src/app/demo-page/demo-page.component.html +124 -0
- package/demo-app/src/app/demo-page/demo-page.component.ts +366 -0
- package/demo-app/src/index.html +19 -0
- package/demo-app/src/main.ts +6 -0
- package/demo-app/tsconfig.json +31 -0
- package/ng-package.json +8 -0
- package/package.json +60 -0
- package/plan.md +131 -0
- package/setup-vitest.ts +18 -0
- package/src/lib/argent-grid.module.ts +21 -0
- package/src/lib/components/argent-grid.component.css +483 -0
- package/src/lib/components/argent-grid.component.html +320 -0
- package/src/lib/components/argent-grid.component.spec.ts +189 -0
- package/src/lib/components/argent-grid.component.ts +1188 -0
- package/src/lib/directives/ag-grid-compatibility.directive.ts +92 -0
- package/src/lib/rendering/canvas-renderer.ts +962 -0
- package/src/lib/rendering/render/blit.spec.ts +453 -0
- package/src/lib/rendering/render/blit.ts +393 -0
- package/src/lib/rendering/render/cells.ts +369 -0
- package/src/lib/rendering/render/index.ts +105 -0
- package/src/lib/rendering/render/lines.ts +363 -0
- package/src/lib/rendering/render/theme.spec.ts +282 -0
- package/src/lib/rendering/render/theme.ts +201 -0
- package/src/lib/rendering/render/types.ts +279 -0
- package/src/lib/rendering/render/walk.spec.ts +360 -0
- package/src/lib/rendering/render/walk.ts +360 -0
- package/src/lib/rendering/utils/damage-tracker.spec.ts +444 -0
- package/src/lib/rendering/utils/damage-tracker.ts +423 -0
- package/src/lib/rendering/utils/index.ts +7 -0
- package/src/lib/services/grid.service.spec.ts +1039 -0
- package/src/lib/services/grid.service.ts +1284 -0
- package/src/lib/types/ag-grid-types.ts +970 -0
- package/src/public-api.ts +22 -0
- package/tsconfig.json +32 -0
- package/tsconfig.lib.json +11 -0
- package/tsconfig.spec.json +8 -0
- package/vitest.config.ts +55 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ArgentGrid - Public API
|
|
3
|
+
* A free, high-performance alternative to AG Grid Enterprise
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// Core types - AG Grid compatible
|
|
7
|
+
export * from './lib/types/ag-grid-types';
|
|
8
|
+
|
|
9
|
+
// Main grid component
|
|
10
|
+
export { ArgentGridComponent } from './lib/components/argent-grid.component';
|
|
11
|
+
|
|
12
|
+
// Canvas renderer
|
|
13
|
+
export { CanvasRenderer } from './lib/rendering/canvas-renderer';
|
|
14
|
+
|
|
15
|
+
// Directives
|
|
16
|
+
export { AgGridCompatibilityDirective } from './lib/directives/ag-grid-compatibility.directive';
|
|
17
|
+
|
|
18
|
+
// Services
|
|
19
|
+
export { GridService } from './lib/services/grid.service';
|
|
20
|
+
|
|
21
|
+
// Modules
|
|
22
|
+
export { ArgentGridModule } from './lib/argent-grid.module';
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"baseUrl": "./",
|
|
4
|
+
"outDir": "./dist",
|
|
5
|
+
"sourceMap": true,
|
|
6
|
+
"declaration": true,
|
|
7
|
+
"module": "ES2022",
|
|
8
|
+
"moduleResolution": "node",
|
|
9
|
+
"emitDecoratorMetadata": true,
|
|
10
|
+
"experimentalDecorators": true,
|
|
11
|
+
"importHelpers": true,
|
|
12
|
+
"target": "ES2022",
|
|
13
|
+
"typeRoots": ["node_modules/@types"],
|
|
14
|
+
"lib": ["es2022", "dom"],
|
|
15
|
+
"strict": true,
|
|
16
|
+
"noImplicitAny": true,
|
|
17
|
+
"strictNullChecks": true,
|
|
18
|
+
"noImplicitReturns": true,
|
|
19
|
+
"noFallthroughCasesInSwitch": true,
|
|
20
|
+
"skipLibCheck": true,
|
|
21
|
+
"esModuleInterop": true,
|
|
22
|
+
"allowSyntheticDefaultImports": true,
|
|
23
|
+
"forceConsistentCasingInFileNames": true,
|
|
24
|
+
"resolveJsonModule": true,
|
|
25
|
+
"paths": {
|
|
26
|
+
"argent-grid": ["dist"],
|
|
27
|
+
"argent-grid/*": ["dist/*"]
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"include": ["src/**/*.ts"],
|
|
31
|
+
"exclude": ["node_modules", "dist"]
|
|
32
|
+
}
|
package/vitest.config.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { defineConfig } from 'vitest/config';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
|
|
5
|
+
export default defineConfig({
|
|
6
|
+
plugins: [
|
|
7
|
+
{
|
|
8
|
+
name: 'angular-template-loader',
|
|
9
|
+
transform(code, id) {
|
|
10
|
+
if (id.endsWith('.component.ts')) {
|
|
11
|
+
let newCode = code.replace(/templateUrl:\s*['"]([^'"]+)['"]/g, (match, p1) => {
|
|
12
|
+
const templatePath = path.resolve(path.dirname(id), p1);
|
|
13
|
+
if (fs.existsSync(templatePath)) {
|
|
14
|
+
const templateContent = fs.readFileSync(templatePath, 'utf-8');
|
|
15
|
+
const escapedTemplate = templateContent
|
|
16
|
+
.replace(/\\/g, '\\\\')
|
|
17
|
+
.replace(/`/g, '\\`')
|
|
18
|
+
.replace(/\$/g, '\\$');
|
|
19
|
+
return `template: \`${escapedTemplate}\``;
|
|
20
|
+
}
|
|
21
|
+
return match;
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
newCode = newCode.replace(/styleUrls:\s*\[\s*['"]([^'"]+)['"]\s*\]/g, (match, p1) => {
|
|
25
|
+
const stylePath = path.resolve(path.dirname(id), p1);
|
|
26
|
+
if (fs.existsSync(stylePath)) {
|
|
27
|
+
const styleContent = fs.readFileSync(stylePath, 'utf-8');
|
|
28
|
+
const escapedStyle = styleContent
|
|
29
|
+
.replace(/\\/g, '\\\\')
|
|
30
|
+
.replace(/`/g, '\\`')
|
|
31
|
+
.replace(/\$/g, '\\$');
|
|
32
|
+
return `styles: [\`${escapedStyle}\`]`;
|
|
33
|
+
}
|
|
34
|
+
return match;
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
return { code: newCode, map: null };
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
test: {
|
|
43
|
+
globals: true,
|
|
44
|
+
environment: 'jsdom',
|
|
45
|
+
setupFiles: ['./setup-vitest.ts'],
|
|
46
|
+
include: ['src/**/*.spec.ts'],
|
|
47
|
+
coverage: {
|
|
48
|
+
provider: 'v8',
|
|
49
|
+
reporter: ['text', 'json', 'html'],
|
|
50
|
+
include: ['src/**/*.ts'],
|
|
51
|
+
exclude: ['src/**/*.spec.ts', 'src/**/types/**']
|
|
52
|
+
},
|
|
53
|
+
testTimeout: 10000
|
|
54
|
+
}
|
|
55
|
+
});
|