MCPcopy
hub / github.com/coder/mux / isLayoutNode

Function isLayoutNode

src/browser/utils/rightSidebarLayout.ts:19–42  ·  view source on GitHub ↗
(value: unknown)

Source from the content-addressed store, hash-verified

17 };
18
19function isLayoutNode(value: unknown): value is RightSidebarLayoutNode {
20 if (!value || typeof value !== "object") return false;
21 const v = value as Record<string, unknown>;
22
23 if (v.type === "tabset") {
24 return (
25 typeof v.id === "string" &&
26 Array.isArray(v.tabs) &&
27 v.tabs.every((t) => isTabType(t)) &&
28 isTabType(v.activeTab)
29 );
30 }
31
32 if (v.type === "split") {
33 if (typeof v.id !== "string") return false;
34 if (v.direction !== "horizontal" && v.direction !== "vertical") return false;
35 if (!Array.isArray(v.sizes) || v.sizes.length !== 2) return false;
36 if (typeof v.sizes[0] !== "number" || typeof v.sizes[1] !== "number") return false;
37 if (!Array.isArray(v.children) || v.children.length !== 2) return false;
38 return isLayoutNode(v.children[0]) && isLayoutNode(v.children[1]);
39 }
40
41 return false;
42}
43
44export function isRightSidebarLayoutState(value: unknown): value is RightSidebarLayoutState {
45 if (!value || typeof value !== "object") return false;

Callers 1

Calls 1

isTabTypeFunction · 0.90

Tested by

no test coverage detected