https://dev.kronoz.win/r/marzneshin.git
| 1 |
1eb203e |
Mrdn |
2y ago |
import { useRef, useState } from "react"; |
| 2 |
88bdde2 |
Mrdn |
2y ago |
import type { ImperativePanelHandle } from "react-resizable-panels"; |
| 3 |
1eb203e |
Mrdn |
2y ago |
|
| 4 |
1eb203e |
Mrdn |
2y ago |
export const usePanelToggle = (isDesktop: boolean) => { |
| 5 |
1eb203e |
Mrdn |
2y ago |
const [collapsed, setCollapsed] = useState(false); |
| 6 |
1eb203e |
Mrdn |
2y ago |
const panelRef = useRef<ImperativePanelHandle>(null); |
| 7 |
1eb203e |
Mrdn |
2y ago |
const [open, setOpen] = useState(false); |
| 8 |
1eb203e |
Mrdn |
2y ago |
|
| 9 |
1eb203e |
Mrdn |
2y ago |
const toggleCollapse = () => { |
| 10 |
1eb203e |
Mrdn |
2y ago |
const panel = panelRef.current; |
| 11 |
1eb203e |
Mrdn |
2y ago |
if (isDesktop && panel) { |
| 12 |
1eb203e |
Mrdn |
2y ago |
collapsed ? panel.expand() : panel.collapse(); |
| 13 |
1eb203e |
Mrdn |
2y ago |
setCollapsed(!collapsed); |
| 14 |
1eb203e |
Mrdn |
2y ago |
setOpen(false); |
| 15 |
1eb203e |
Mrdn |
2y ago |
} |
| 16 |
1eb203e |
Mrdn |
2y ago |
}; |
| 17 |
1eb203e |
Mrdn |
2y ago |
|
| 18 |
1eb203e |
Mrdn |
2y ago |
const toggleOpen = () => { |
| 19 |
1eb203e |
Mrdn |
2y ago |
if (!isDesktop) { |
| 20 |
1eb203e |
Mrdn |
2y ago |
setCollapsed(false); |
| 21 |
1eb203e |
Mrdn |
2y ago |
setOpen(!open); |
| 22 |
1eb203e |
Mrdn |
2y ago |
} |
| 23 |
1eb203e |
Mrdn |
2y ago |
}; |
| 24 |
1eb203e |
Mrdn |
2y ago |
|
| 25 |
88bdde2 |
Mrdn |
2y ago |
return { |
| 26 |
88bdde2 |
Mrdn |
2y ago |
collapsed, |
| 27 |
88bdde2 |
Mrdn |
2y ago |
open, |
| 28 |
88bdde2 |
Mrdn |
2y ago |
panelRef, |
| 29 |
88bdde2 |
Mrdn |
2y ago |
setCollapsed, |
| 30 |
88bdde2 |
Mrdn |
2y ago |
setOpen, |
| 31 |
88bdde2 |
Mrdn |
2y ago |
toggleCollapse, |
| 32 |
88bdde2 |
Mrdn |
2y ago |
toggleOpen, |
| 33 |
88bdde2 |
Mrdn |
2y ago |
}; |
| 34 |
1eb203e |
Mrdn |
2y ago |
}; |