import { useState } from "react"; import type { ImageStudioApp } from "@app/app"; import { BottomControlsIsland } from "./BottomControlsIsland"; import { CanvasViewport } from "./CanvasViewport"; import { LayersSheet } from "./LayersSheet"; import { ToolOverlay } from "./ToolOverlay"; import { labelForTool } from "./toolLabels"; import { resolveTransformTargetBounds } from "@editor/transform-targets"; import { getSelectionSummary } from "./selectionSummary"; import { useAppState } from "./useAppState"; import { useViewportActivityIsland } from "./useViewportActivityIsland"; import "./index.css"; export type AppProps = { app: ImageStudioApp; }; export function App({ app }: AppProps) { const state = useAppState(app.store); const zoomPercent = Math.round(state.editor.viewport.zoom * 100); const viewportActivityIsland = useViewportActivityIsland(state.editor.viewport); const [layersOpen, setLayersOpen] = useState(false); const selectionSummary = getSelectionSummary(state.document, state.editor.selection); const transformBounds = state.editor.transformSession ? resolveTransformTargetBounds(state.document, state.editor.transformSession.target) : undefined; return (

Image Studio

{state.document.name} · {labelForTool(state.editor.tools.activeTool)} · {zoomPercent}% · {state.editor.viewport.size.w}× {state.editor.viewport.size.h}
setLayersOpen(false)} />
setLayersOpen(true)} />
); } export default App;