mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-10-26 22:22:13 +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'
|
|
>
|
|
}
|