feat: add reusable resizable split panes
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import {
|
||||
clampSplitPaneSize,
|
||||
splitPaneSizeFromPointer,
|
||||
} from "/packages/ui/split-pane.js";
|
||||
|
||||
test("분할 패널 폭이 설정 범위와 작업 영역 최소 폭을 지킨다", () => {
|
||||
const metrics = {
|
||||
containerSize: 1400,
|
||||
separatorSize: 12,
|
||||
minSize: 360,
|
||||
maxSize: 720,
|
||||
minMainSize: 560,
|
||||
};
|
||||
assertEqual(clampSplitPaneSize(620, metrics), 620, "requested width");
|
||||
assertEqual(clampSplitPaneSize(900, metrics), 720, "hard maximum");
|
||||
assertEqual(clampSplitPaneSize(200, metrics), 360, "configured minimum");
|
||||
assertEqual(
|
||||
clampSplitPaneSize(720, { ...metrics, containerSize: 981 }),
|
||||
409,
|
||||
"workspace-aware maximum",
|
||||
);
|
||||
});
|
||||
|
||||
test("분리선 pointer 좌표가 시작·끝 패널 폭으로 변환된다", () => {
|
||||
const common = {
|
||||
pointerX: 506,
|
||||
containerLeft: 100,
|
||||
containerRight: 1500,
|
||||
separatorSize: 12,
|
||||
};
|
||||
assertEqual(
|
||||
splitPaneSizeFromPointer({ ...common, panelSide: "start" }),
|
||||
400,
|
||||
"start panel width",
|
||||
);
|
||||
assertEqual(
|
||||
splitPaneSizeFromPointer({ ...common, panelSide: "end" }),
|
||||
988,
|
||||
"end panel width",
|
||||
);
|
||||
});
|
||||
Reference in New Issue
Block a user