af8b9fe00f
Full-featured house/apartment floor plan editor with: - Turborepo monorepo (React/Vite client, Fastify/Prisma server, shared Zod schemas) - 2D room editor with walls, doors, windows, furniture, electrical elements - 3D room preview with Three.js (auto-hide nearest walls, bird's eye default) - Wall projection views with interactive drag (elevation, position) - Apartment floor plan view with room positioning - Copy/paste, alignment tools, measurement tool, annotations - Item-attached annotations with leader lines (visible on projections) - Door open direction (LEFT/RIGHT/INWARD/OUTWARD) with swing arc - Floor type textures (wood, tile, concrete, laminate, herringbone) - Wall color picker for 3D view - Furniture: bed, desk, wardrobe, sofa, table, chair, shelf, nightstand, dresser, bookcase, TV (with stand toggle), AC unit - Furniture elevation support (wall-mounted items) - Auto-save with dirty state tracking, batch save API - Rotation-aware collision detection (SAT/OBB) with 3D elevation check - Rotation-aware hit testing - i18n (English/Russian) with locale-aware number formatting - Dark mode with system preference detection - Undo/redo, keyboard shortcuts, scale bar - PDF/PNG/JSON export and JSON import - Focus trap modal, toast notifications, tooltips - Responsive layout with overlay palettes
24 lines
627 B
TypeScript
24 lines
627 B
TypeScript
import { Line } from 'react-konva';
|
|
|
|
interface CableRouteSymbolProps {
|
|
/** Flat array of [x1,y1, x2,y2, ...] in screen coordinates. */
|
|
readonly points: readonly number[];
|
|
readonly color: string;
|
|
readonly isSelected: boolean;
|
|
}
|
|
|
|
/** IEC cable route: dashed line connecting elements. */
|
|
export function CableRouteSymbol({ points, color, isSelected }: CableRouteSymbolProps) {
|
|
return (
|
|
<Line
|
|
points={points as number[]}
|
|
stroke={isSelected ? '#4c6ef5' : color}
|
|
strokeWidth={isSelected ? 2.5 : 2}
|
|
dash={[8, 4]}
|
|
lineCap="round"
|
|
lineJoin="round"
|
|
listening={false}
|
|
/>
|
|
);
|
|
}
|