/* ============================================================================= * M02_MasterTemplete_Labor_Born.ts * 일위대가 상세 출처 꼬리표(740-2) — 넣어 펼친 줄 · 자재의 `본뜬` 을 짧은 글로(풍선 = 키 · 이름 · 층 · 때). * 일위대가표 격자 = 비고 칸 글 `bornNote` + 풍선 `tipBorn`(칸 폭 · 줄 높이 안 바뀜) * 줄 표(`Labor_Rows` · `Labor_MatTable`) = 이름 글 끝 `bornSpan`(같은 줄 · 넘치면 말줄임) * 색 단추 아님 · 셈에 안 씀. * ========================================================================== */ import { el } from "@ui/ui_template_elements"; import { bornText } from "./logic/M02_Born_Tag"; const SPLIT = "\n"; // 글 첫 줄 = 보임 · 나머지 = 풍선 /** 일위대가표 격자 비고 칸 풍선 — `at` = 격자 줄 → 일위대가 줄 번호(담은 로직 뒤 자재) */ export function tipBorn( root: HTMLElement, at: (row: number) => number | null, born: (n: number) => unknown, ): void { root.querySelectorAll("tr[data-i]").forEach((tr) => { const n = at(Number(tr.dataset.i)); const [, ...tip] = n === null ? [] : bornText(born(n)).split(SPLIT); if (tip.length) tr.querySelector("td:nth-last-child(2)")?.setAttribute("title", tip.join(" ")); }); } /** 줄 표 이름 끝 꼬리표 — `본뜬` 이 없으면 null */ export function bornSpan(born: unknown): HTMLElement | null { const [shown, ...tip] = bornText(born).split(SPLIT); if (!shown) return null; return el("span", { className: "m02-labrow__born", text: ` ${shown}`, attrs: { title: tip.join(" "), "data-born": "" }, }); }