diff --git a/example/src/client/app.tsx b/example/src/client/app.tsx index 423fb09..3dfc811 100644 --- a/example/src/client/app.tsx +++ b/example/src/client/app.tsx @@ -1,10 +1,6 @@ -import { render } from 'hono/jsx/dom' +import { render } from 'hono/jsx/dom' // needed to use the same hono/jsx as the frontend import { setup } from 'pyre/client' import type { Game } from '../types' import Board from './board' -const root = document.getElementById('root')! - -setup(game => { - render(game ? :

Loading...

, root) -}) +setup(render, game => ) diff --git a/src/client/setup.ts b/src/client/setup.ts deleted file mode 100644 index db9b9c8..0000000 --- a/src/client/setup.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { initWebsocket, onUpdate } from './websocket' - -export function setup(onRender: (game: G | undefined) => void) { - let game: G | undefined = undefined - - onUpdate((newGame: G) => { - game = newGame - onRender(game) - }) - - initWebsocket() - onRender(game) -} diff --git a/src/client/setup.tsx b/src/client/setup.tsx new file mode 100644 index 0000000..77b8135 --- /dev/null +++ b/src/client/setup.tsx @@ -0,0 +1,18 @@ +import { type Child, render as renderJsx } from 'hono/jsx/dom' +import { initWebsocket, onUpdate } from './websocket' + +const root = document.getElementById('root')! + +export function setup(render: typeof renderJsx, onRender: (game: G) => Child) { + let game: G | undefined = undefined + + onUpdate((newGame: G) => { + game = newGame + render(game ? onRender(game) : , root) + }) + + initWebsocket() + render(game ? onRender(game) : , root) +} + +const Loading = () =>

Loading...

\ No newline at end of file diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 0df9781..02e7587 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -6,7 +6,7 @@ const GIT_HASH = process.env.RENDER_GIT_COMMIT?.slice(0, 7) export default () => <> - hype + 🔥 pyre