5fbd382120
- Drop file size: jsPDF compression + 3D page encoded as JPEG (0.95) on a white composite canvas (no more black background), PDF pixelRatio=1. - Tighten 3D export framing: new 'birds-eye-export' preset derives camera height from Three.js vertical FOV at the wall-top plane so the room fills the page without the interactive preset's extra headroom. - Thread canvas + preset trigger through Room3DView props so the export dialog can always find the live canvas and snap the camera even when the view was lazy-mounted by the dialog itself. - 2D capture on PDF uses an A4-landscape-matched aspect (1820x1200) so the image fills the page box without large empty bands. - Projection exports: per-wall hidden renderer mounts every wall at native aspect with a right/bottom overflow budget for label headroom; fontScale prop (passed as 2 from the export block) keeps Konva text legible at high export resolution without affecting interactive view. - Filter out annotations attached to electrical items from the 2D view and exported images (they belong to the wall-projection context). - Projection filters: assign furniture and orphan electrical items to a single 'home' wall (minimum edge / perpendicular distance) so a corner item stops double-projecting onto both neighbouring walls; stale wallIds fall back to the proximity path instead of being dropped. - Annotate tool works in projection view: clicking creates a wall- anchored annotation rendered next to the wall at the click position. - Outlet projection coord labels now show 3 decimal places. - PDF page titles use a Unicode font (DejaVu Sans) so Cyrillic renders correctly; wall projections get one dedicated landscape page each at native aspect; pdf aspect-preserving addImage helper centres images horizontally and top-aligns vertically.