UNPKG

@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
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;