Replace frontend with deployed TS version from a08dd73

- Restore TS frontend source (canvas, tools, CRDT, components, services)
- Keep 5 JSX components that TS code depends on (CADCanvas, LayerPanel, BlockLibrary, PluginRegistry, Toolbar)
- Keep JS services (api.js, blockService.js) that components depend on
- Fix vite/plugin-react version mismatch (downgrade to v4 for vite 6)
- Add axios dependency
- Skip tsc in build script (vite/esbuild handles transpilation)
- Fix index.html lang=de, favicon path
- Add vite proxy config for /api and /ws
- Backend unchanged (already from deployed containers)
This commit is contained in:
Agent Zero
2026-06-28 02:16:58 +02:00
parent 6e508fb68e
commit 05ccebad8d
89 changed files with 12577 additions and 1231 deletions
+86
View File
@@ -0,0 +1,86 @@
class SnapEngine {
private isEnabled: boolean;
private gridSize: number;
private tolerance: number;
private activeZoom: number;
constructor(gridSize: number = 10) {
this.isEnabled = true;
this.gridSize = gridSize;
this.tolerance = 5;
this.activeZoom = 1;
}
// Toggle snap on/off with F3
toggleSnap(): void {
this.isEnabled = !this.isEnabled;
}
// Set active zoom level
setZoom(zoom: number): void {
this.activeZoom = zoom;
}
// Snap to grid
snapToGrid(x: number, y: number): {x: number, y: number} | null {
if (!this.isEnabled) return null;
// Implementation for snap to grid
return null;
}
// Snap to endpoint
snapToEndpoint(x: number, y: number): {x: number, y: number} | null {
if (!this.isEnabled) return null;
// Implementation for snap to endpoint
return null;
}
// Snap to midpoint
snapToMidpoint(x: number, y: number): {x: number, y: number} | null {
if (!this.isEnabled) return null;
// Implementation for snap to midpoint
return null;
}
// Snap to center
snapToCenter(x: number, y: number): {x: number, y: number} | null {
if (!this.isEnabled) return null;
// Implementation for snap to center
return null;
}
// Snap to intersection
snapToIntersection(x: number, y: number): {x: number, y: number} | null {
if (!this.isEnabled) return null;
// Implementation for snap to intersection
return null;
}
// Snap to perpendicular
snapToPerpendicular(x: number, y: number): {x: number, y: number} | null {
if (!this.isEnabled) return null;
// Implementation for snap to perpendicular
return null;
}
// Snap to tangent
snapToTangent(x: number, y: number): {x: number, y: number} | null {
if (!this.isEnabled) return null;
// Implementation for snap to tangent
return null;
}
// Snap to nearest
snapToNearest(x: number, y: number): {x: number, y: number} | null {
if (!this.isEnabled) return null;
// Implementation for snap to nearest
return null;
}
// Render visual snap markers on canvas
renderSnapMarkers(context: CanvasRenderingContext2D): void {
// Implementation for rendering snap markers
}
}
export default SnapEngine;