mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-29 03:09:36 +00:00
While an opening is dragged along a wall, a measure badge sits on the middle of EACH shoulder: the along-the-wall distance from the wall end to the nearest opening edge, live (segmentCm/formatLength, so metric/imperial and cell_cm are honoured). Collinear touching room edges count as ONE physical wall — a user thinks in whole walls, not the fragments roomEdges derives. When the opening's center reaches the wall's center (±half a grid step) a perpendicular dashed tick (alignment-guide look) appears through the wall center and the center magnet-snaps; Shift disables the magnet. Everything vanishes on release. Angled walls work: distances run along the wall, the tick is perpendicular. - src/logic.ts: openingShoulders() — pure shoulder/centered math (unit-tested) - src/houseplan-card.ts: _opMeasure state fed by _opPointerMove, badge layer next to the resize badges, _renderOpeningCenterTick in the SVG - demo/smoke_opening_measure.mjs: real-pointer drag; numbers checked against the demo geometry (4.56/5.52 m, 5.04/5.04 m at center), magnet == 0.5, Shift keeps 0.4987, everything gone after drop (was red without the feature) - docs/TESTING.md: checklist line