Keep ScaleInfo pinned to the map corner and move the centered timeline above collisions, preventing the previous conditional offset from lifting the scale. Remove collapsed Agent rail width reservation and add timeline state transitions.
95 lines
2.8 KiB
TypeScript
95 lines
2.8 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import {
|
|
clampAgentPanelWidth,
|
|
getAgentPanelDefaultWidth,
|
|
getAgentPanelMaxWidth,
|
|
getWorkbenchBasemapTone,
|
|
getWorkbenchCameraPadding,
|
|
getWorkbenchViewportLayout
|
|
} from "./workbench-layout";
|
|
|
|
describe("workbench basemap surface tone", () => {
|
|
it.each([
|
|
["mapbox-light", "light"],
|
|
["mapbox-satellite", "satellite"],
|
|
["none", "none"],
|
|
["unknown", "none"]
|
|
])("maps %s to %s", (baseLayerId, expectedTone) => {
|
|
expect(getWorkbenchBasemapTone(baseLayerId)).toBe(expectedTone);
|
|
});
|
|
});
|
|
|
|
describe("workbench floating panels", () => {
|
|
it("uses bounded desktop and wide panel widths", () => {
|
|
expect(getWorkbenchViewportLayout(1440)).toMatchObject({
|
|
agentWidth: 500,
|
|
conditionWidth: 432,
|
|
conditionExpandedWidth: 880,
|
|
toolbarWidth: 48
|
|
});
|
|
expect(getWorkbenchViewportLayout(1536)).toMatchObject({
|
|
agentWidth: 540,
|
|
conditionExpandedWidth: 960
|
|
});
|
|
});
|
|
|
|
it("tracks the expanded condition panel in camera padding", () => {
|
|
expect(
|
|
getWorkbenchCameraPadding(1440, {
|
|
agentOpen: true,
|
|
conditionOpen: true,
|
|
conditionExpanded: false
|
|
})
|
|
).toEqual({ top: 72, right: 504, bottom: 32, left: 524 });
|
|
|
|
expect(
|
|
getWorkbenchCameraPadding(1440, {
|
|
agentOpen: true,
|
|
conditionOpen: true,
|
|
conditionExpanded: true
|
|
})
|
|
).toEqual({ top: 72, right: 952, bottom: 32, left: 476 });
|
|
});
|
|
|
|
it("does not reserve map width for the collapsed Agent launcher", () => {
|
|
expect(
|
|
getWorkbenchCameraPadding(1440, {
|
|
agentOpen: false,
|
|
conditionOpen: false
|
|
}).left
|
|
).toBe(24);
|
|
});
|
|
|
|
it("uses the committed Agent width without exceeding the hard limit", () => {
|
|
expect(
|
|
getWorkbenchCameraPadding(1920, {
|
|
agentOpen: true,
|
|
agentWidth: 620,
|
|
conditionOpen: true
|
|
})
|
|
).toEqual({ top: 72, right: 504, bottom: 32, left: 644 });
|
|
|
|
expect(
|
|
getWorkbenchCameraPadding(1920, {
|
|
agentOpen: true,
|
|
agentWidth: 900,
|
|
conditionOpen: false
|
|
}).left
|
|
).toBe(744);
|
|
});
|
|
|
|
it("uses responsive defaults and preserves the map corridor at maximum width", () => {
|
|
expect(getAgentPanelDefaultWidth(390)).toBe(500);
|
|
expect(getAgentPanelDefaultWidth(1024)).toBe(484);
|
|
expect(getAgentPanelDefaultWidth(1440)).toBe(500);
|
|
expect(getAgentPanelDefaultWidth(1536)).toBe(540);
|
|
expect(getAgentPanelMaxWidth(1024)).toBe(484);
|
|
expect(clampAgentPanelWidth(620, 1024)).toBe(484);
|
|
expect(getAgentPanelMaxWidth(1280)).toBe(516);
|
|
expect(getAgentPanelMaxWidth(1440)).toBe(676);
|
|
expect(getAgentPanelMaxWidth(1536)).toBe(720);
|
|
expect(getAgentPanelMaxWidth(1920)).toBe(720);
|
|
expect(getAgentPanelMaxWidth(1920, true)).toBe(628);
|
|
});
|
|
});
|