mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-04-15 22:40:42 +08:00
47 lines
1.0 KiB
TypeScript
47 lines
1.0 KiB
TypeScript
import { use } from "react";
|
|
|
|
import { WindowContext, type WindowContextType } from "@/providers/window";
|
|
|
|
export const useWindow = () => {
|
|
const context = use(WindowContext);
|
|
if (context === undefined) {
|
|
throw new Error("useWindow must be used within WindowProvider");
|
|
}
|
|
return context;
|
|
};
|
|
|
|
export const useWindowControls = () => {
|
|
const {
|
|
maximized,
|
|
minimize,
|
|
toggleMaximize,
|
|
close,
|
|
toggleFullscreen,
|
|
currentWindow,
|
|
} = useWindow();
|
|
return {
|
|
maximized,
|
|
minimize,
|
|
toggleMaximize,
|
|
close,
|
|
toggleFullscreen,
|
|
currentWindow,
|
|
} satisfies Pick<
|
|
WindowContextType,
|
|
| "maximized"
|
|
| "minimize"
|
|
| "toggleMaximize"
|
|
| "close"
|
|
| "toggleFullscreen"
|
|
| "currentWindow"
|
|
>;
|
|
};
|
|
|
|
export const useWindowDecorations = () => {
|
|
const { decorated, toggleDecorations, refreshDecorated } = useWindow();
|
|
return { decorated, toggleDecorations, refreshDecorated } satisfies Pick<
|
|
WindowContextType,
|
|
"decorated" | "toggleDecorations" | "refreshDecorated"
|
|
>;
|
|
};
|