mirror of
https://gitea.toothfairyai.com/ToothFairyAI/tf_code.git
synced 2026-04-20 15:44:44 +00:00
fix(app): don't animate review panel in/out
This commit is contained in:
@@ -285,6 +285,7 @@ export default function Page() {
|
|||||||
const [ui, setUi] = createStore({
|
const [ui, setUi] = createStore({
|
||||||
git: false,
|
git: false,
|
||||||
pendingMessage: undefined as string | undefined,
|
pendingMessage: undefined as string | undefined,
|
||||||
|
reviewSnap: false,
|
||||||
scrollGesture: 0,
|
scrollGesture: 0,
|
||||||
scroll: {
|
scroll: {
|
||||||
overflow: false,
|
overflow: false,
|
||||||
@@ -460,6 +461,21 @@ export default function Page() {
|
|||||||
return key
|
return key
|
||||||
}, sessionKey())
|
}, sessionKey())
|
||||||
|
|
||||||
|
let reviewFrame: number | undefined
|
||||||
|
|
||||||
|
createComputed((prev) => {
|
||||||
|
const open = desktopReviewOpen()
|
||||||
|
if (prev === undefined || prev === open) return open
|
||||||
|
|
||||||
|
if (reviewFrame !== undefined) cancelAnimationFrame(reviewFrame)
|
||||||
|
setUi("reviewSnap", true)
|
||||||
|
reviewFrame = requestAnimationFrame(() => {
|
||||||
|
reviewFrame = undefined
|
||||||
|
setUi("reviewSnap", false)
|
||||||
|
})
|
||||||
|
return open
|
||||||
|
}, desktopReviewOpen())
|
||||||
|
|
||||||
const turnDiffs = createMemo(() => lastUserMessage()?.summary?.diffs ?? [])
|
const turnDiffs = createMemo(() => lastUserMessage()?.summary?.diffs ?? [])
|
||||||
const reviewDiffs = createMemo(() => (store.changes === "session" ? diffs() : turnDiffs()))
|
const reviewDiffs = createMemo(() => (store.changes === "session" ? diffs() : turnDiffs()))
|
||||||
|
|
||||||
@@ -1233,6 +1249,7 @@ export default function Page() {
|
|||||||
onCleanup(() => {
|
onCleanup(() => {
|
||||||
document.removeEventListener("keydown", handleKeyDown)
|
document.removeEventListener("keydown", handleKeyDown)
|
||||||
scrollSpy.destroy()
|
scrollSpy.destroy()
|
||||||
|
if (reviewFrame !== undefined) cancelAnimationFrame(reviewFrame)
|
||||||
if (scrollStateFrame !== undefined) cancelAnimationFrame(scrollStateFrame)
|
if (scrollStateFrame !== undefined) cancelAnimationFrame(scrollStateFrame)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -1254,7 +1271,7 @@ export default function Page() {
|
|||||||
classList={{
|
classList={{
|
||||||
"@container relative shrink-0 flex flex-col min-h-0 h-full bg-background-stronger flex-1 md:flex-none": true,
|
"@container relative shrink-0 flex flex-col min-h-0 h-full bg-background-stronger flex-1 md:flex-none": true,
|
||||||
"transition-[width] duration-[240ms] ease-[cubic-bezier(0.22,1,0.36,1)] will-change-[width] motion-reduce:transition-none":
|
"transition-[width] duration-[240ms] ease-[cubic-bezier(0.22,1,0.36,1)] will-change-[width] motion-reduce:transition-none":
|
||||||
!size.active(),
|
!size.active() && !ui.reviewSnap,
|
||||||
}}
|
}}
|
||||||
style={{
|
style={{
|
||||||
width: sessionPanelWidth(),
|
width: sessionPanelWidth(),
|
||||||
@@ -1369,6 +1386,7 @@ export default function Page() {
|
|||||||
reviewPanel={reviewPanel}
|
reviewPanel={reviewPanel}
|
||||||
activeDiff={tree.activeDiff}
|
activeDiff={tree.activeDiff}
|
||||||
focusReviewDiff={focusReviewDiff}
|
focusReviewDiff={focusReviewDiff}
|
||||||
|
reviewSnap={ui.reviewSnap}
|
||||||
size={size}
|
size={size}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ export function SessionSidePanel(props: {
|
|||||||
reviewPanel: () => JSX.Element
|
reviewPanel: () => JSX.Element
|
||||||
activeDiff?: string
|
activeDiff?: string
|
||||||
focusReviewDiff: (path: string) => void
|
focusReviewDiff: (path: string) => void
|
||||||
|
reviewSnap: boolean
|
||||||
size: Sizing
|
size: Sizing
|
||||||
}) {
|
}) {
|
||||||
const params = useParams()
|
const params = useParams()
|
||||||
@@ -228,7 +229,7 @@ export function SessionSidePanel(props: {
|
|||||||
classList={{
|
classList={{
|
||||||
"pointer-events-none": !open(),
|
"pointer-events-none": !open(),
|
||||||
"transition-[width] duration-[240ms] ease-[cubic-bezier(0.22,1,0.36,1)] will-change-[width] motion-reduce:transition-none":
|
"transition-[width] duration-[240ms] ease-[cubic-bezier(0.22,1,0.36,1)] will-change-[width] motion-reduce:transition-none":
|
||||||
!props.size.active(),
|
!props.size.active() && !props.reviewSnap,
|
||||||
}}
|
}}
|
||||||
style={{ width: panelWidth() }}
|
style={{ width: panelWidth() }}
|
||||||
>
|
>
|
||||||
|
|||||||
Reference in New Issue
Block a user