import { MASS_HAUL_BALANCE_KEY, MASS_HAUL_DEFAULT_VISIBLE, normalizeVisibleBasis, } from "@util/common_util_mass_haul"; import { MASS_HAUL_HEIGHT, MASS_HAUL_MIN_HEIGHT } from "@util/common_util_mass_haul_view"; import { LONG_HEIGHT } from "./B06_Section_UI_Section_Common"; export const PANEL_CHROME_PX = 102; export const BASE_PANEL_HEIGHT = LONG_HEIGHT + MASS_HAUL_HEIGHT + PANEL_CHROME_PX; export const MIN_LONG_HEIGHT = 110; export const MIN_PANEL_HEIGHT = MIN_LONG_HEIGHT + MASS_HAUL_MIN_HEIGHT + PANEL_CHROME_PX; export const MAX_PANEL_HEIGHT_RATIO = 0.8; export const PANEL_HEIGHT_KEY = "b06:profile-panel-height"; export const PANEL_COLLAPSED_KEY = "b06:profile-panel-collapsed"; export const MASS_HAUL_VISIBLE_KEY = "b06:masshaul-visible-v4"; const DEFAULT_VISIBLE_KEYS = [...MASS_HAUL_DEFAULT_VISIBLE, MASS_HAUL_BALANCE_KEY]; export function readVisibleSeries(): Set { try { const raw = sessionStorage.getItem(MASS_HAUL_VISIBLE_KEY); if (!raw) return new Set(DEFAULT_VISIBLE_KEYS); const parsed: unknown = JSON.parse(raw); return Array.isArray(parsed) ? normalizeVisibleBasis(new Set(parsed.map(String))) : new Set(DEFAULT_VISIBLE_KEYS); } catch { return new Set(DEFAULT_VISIBLE_KEYS); } } export function chartHeights(availableHeightPx: number): { long: number; mass: number } { if (!Number.isFinite(availableHeightPx) || availableHeightPx <= 0) { return { long: LONG_HEIGHT, mass: MASS_HAUL_HEIGHT }; } const available = Math.max(availableHeightPx, MIN_LONG_HEIGHT + MASS_HAUL_MIN_HEIGHT); if (available >= LONG_HEIGHT + MASS_HAUL_HEIGHT) { return { long: LONG_HEIGHT, mass: available - LONG_HEIGHT }; } const ratio = available / (LONG_HEIGHT + MASS_HAUL_HEIGHT); const mass = Math.min( Math.max(MASS_HAUL_MIN_HEIGHT, Math.round(MASS_HAUL_HEIGHT * ratio)), available - MIN_LONG_HEIGHT, ); return { long: available - mass, mass }; } export function unwrapChart(node: HTMLElement): Element { return node.classList.contains("b06-section__chart-wrap") && node.firstElementChild ? node.firstElementChild : node; }