chore: add some transition
Browse files
src/components/WebsocketDemo.tsx
CHANGED
|
@@ -7,6 +7,8 @@ import useWebSocket, { ReadyState } from 'react-use-websocket';
|
|
| 7 |
import { useDebounce } from "use-debounce";
|
| 8 |
import { Input } from './ui/input';
|
| 9 |
import { Badge } from './ui/badge';
|
|
|
|
|
|
|
| 10 |
|
| 11 |
export function WebsocketDemo() {
|
| 12 |
const { data } = useSWR("ws", getWebsocketUrl, {
|
|
@@ -155,6 +157,8 @@ export function WebsocketDemo() {
|
|
| 155 |
return connectWS(data)
|
| 156 |
}, [connectWS, reconnectCounter])
|
| 157 |
|
|
|
|
|
|
|
| 158 |
return (
|
| 159 |
<div className='flex md:flex-col gap-2 px-2 flex-col-reverse'>
|
| 160 |
<div className='flex gap-2'>
|
|
@@ -165,7 +169,16 @@ export function WebsocketDemo() {
|
|
| 165 |
{status == "ready" && !currentLog && " running"}
|
| 166 |
</Badge>}
|
| 167 |
</div>
|
| 168 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 169 |
|
| 170 |
<Input
|
| 171 |
type="text"
|
|
|
|
| 7 |
import { useDebounce } from "use-debounce";
|
| 8 |
import { Input } from './ui/input';
|
| 9 |
import { Badge } from './ui/badge';
|
| 10 |
+
import { Skeleton } from './ui/skeleton';
|
| 11 |
+
import { cn } from '@/lib/utils';
|
| 12 |
|
| 13 |
export function WebsocketDemo() {
|
| 14 |
const { data } = useSWR("ws", getWebsocketUrl, {
|
|
|
|
| 157 |
return connectWS(data)
|
| 158 |
}, [connectWS, reconnectCounter])
|
| 159 |
|
| 160 |
+
const pending = (status == "not-connected" || status == "connecting" || status == "reconnecting" || currentLog?.startsWith("running") || (!currentLog && status == "connected"))
|
| 161 |
+
|
| 162 |
return (
|
| 163 |
<div className='flex md:flex-col gap-2 px-2 flex-col-reverse'>
|
| 164 |
<div className='flex gap-2'>
|
|
|
|
| 169 |
{status == "ready" && !currentLog && " running"}
|
| 170 |
</Badge>}
|
| 171 |
</div>
|
| 172 |
+
|
| 173 |
+
<div className='relative w-full'>
|
| 174 |
+
<canvas ref={canvasRef} className='rounded-lg ring-1 ring-black/10 w-full aspect-square' width={1024} height={1024}></canvas>
|
| 175 |
+
{
|
| 176 |
+
<><Skeleton className={
|
| 177 |
+
cn("absolute top-0 left-0 w-full h-full aspect-square opacity-20 transition-opacity", pending ? "visible" : "invisible opacity-0")
|
| 178 |
+
} /></>
|
| 179 |
+
}
|
| 180 |
+
</div>
|
| 181 |
+
|
| 182 |
|
| 183 |
<Input
|
| 184 |
type="text"
|