@sirhc77/canvas-math-kit
Version:
A lightweight, interactive canvas-based vector visualizer for math, linear algebra, and ML education. Built with React + TypeScript.
39 lines (38 loc) • 1.23 kB
TypeScript
import React from 'react';
import { DragTarget } from "../hooks/usePointerDrag";
import { Point } from '../utils/canvasGraphUtils';
export type VectorHeadStyle = 'arrow' | 'circle' | 'both' | 'none';
export interface CanvasVector {
x: number;
y: number;
color?: string;
draggable?: boolean;
headStyle?: VectorHeadStyle;
label?: string | ((x: number, y: number) => string);
width?: number;
}
export interface ParallelogramVector {
x: number;
y: number;
}
export interface CanvasParallelogram {
vectorA: ParallelogramVector;
vectorB: ParallelogramVector;
fillColor?: string;
strokeColor?: string;
}
interface GraphCanvasProps {
width: number;
height: number;
scale: number;
vectors?: CanvasVector[];
parallelograms?: CanvasParallelogram[];
snap?: number | ((x: number, y: number) => [number, number]);
locked?: boolean;
onVectorsChange?: (updated: CanvasVector[]) => void;
customDragTargets?: DragTarget[];
onCustomDragTargetsChange?: (updated: DragTarget[]) => void;
customDraw?: (ctx: CanvasRenderingContext2D, origin: Point, scale: number) => void;
}
declare const GraphCanvas: React.FC<GraphCanvasProps>;
export default GraphCanvas;