diff --git a/B06_Section/B06_Section_UI_Section_View.ts b/B06_Section/B06_Section_UI_Section_View.ts index 78cd7557..5f75c087 100644 --- a/B06_Section/B06_Section_UI_Section_View.ts +++ b/B06_Section/B06_Section_UI_Section_View.ts @@ -45,7 +45,10 @@ import { } from "./B06_Section_UI_Cross_View_Metrics"; import { CROSS_HEIGHT } from "./B06_Section_UI_Section_Common"; import { LONG_PAD } from "./B06_Section_UI_Section_Common"; -import { buildStructureLane } from "../B05_Profile/B05_Profile_UI_Structures_Marks"; +import { + buildStructureLane, + STRUCTURE_LANE_HEIGHT_PX, +} from "../B05_Profile/B05_Profile_UI_Structures_Marks"; import { structureAnchorM, type StructureInstance, @@ -491,7 +494,11 @@ export function createSectionView( const measured = chartWrap.clientHeight; lastChartAvailable = measured > 0 ? measured : Math.max(panelHeight() - PANEL_CHROME_PX, MIN_LONG_HEIGHT); - const heights = chartHeights(lastChartAvailable); + // 알약 레인도 `chartWrap` 안에 서므로 잰 높이에 **이미 들어 있다**. 그 몫을 빼지 않으면 + // 다음 회차에 잰 값이 그만큼 더 커지고, 그 값으로 그래프를 키우면 또 커지는 되먹임이 + // 생겨 패널이 16,000px 까지 부푼다(2026-09-07 실측). 빼 두면 한 번에 수렴한다. + const laneHeight = markStructures.length && markTypes.length ? STRUCTURE_LANE_HEIGHT_PX : 0; + const heights = chartHeights(Math.max(lastChartAvailable - laneHeight, MIN_LONG_HEIGHT)); const minWidth = longitudinalMinimumWidth(detail.longitudinal, cachedStationInterval); const chartWidth = Math.max(renderWidth, minWidth); const chart = buildLongitudinalChart({