Files
kandev/apps/web/components/task/dockview-desktop-layout-hooks.ts
T
José Almeida b4ce4d6eef refactor(web): improve compact desktop layouts (#937)
* refactor(web): improve compact desktop layouts

* fix(web): address compact desktop review feedback

* fix(web): address responsive review followups

* fix(web): preserve compact sidebar restore sizing

* fix(web): harden compact preset sidebar test

* refactor(web): extract dockview layout hooks
2026-05-18 23:08:14 +01:00

27 lines
981 B
TypeScript

import { useEffect, type RefObject } from "react";
import { panelPortalManager } from "@/lib/layout/panel-portal-manager";
import { useDockviewStore } from "@/lib/state/dockview-store";
export function useCompactDockviewDefault(compact: boolean) {
const setDefaultPreset = useDockviewStore((s) => s.setDefaultPreset);
useEffect(() => {
setDefaultPreset(compact ? "compact" : "default");
return () => setDefaultPreset("default");
}, [compact, setDefaultPreset]);
}
export function useDockviewUnmountCleanup(
saveTimerRef: RefObject<ReturnType<typeof setTimeout> | null>,
readyDisposersRef: RefObject<Array<() => void>>,
) {
useEffect(() => {
const timerRef = saveTimerRef;
const disposersRef = readyDisposersRef;
return () => {
for (const dispose of disposersRef.current.splice(0)) dispose();
if (timerRef.current) clearTimeout(timerRef.current);
panelPortalManager.releaseAll();
};
}, [readyDisposersRef, saveTimerRef]);
}