Update viewport-host.ts and viewport-canvas.test.tsx

This commit is contained in:
2026-04-03 02:17:11 +02:00
parent 21bf3b30a6
commit 8c844d08c9
2 changed files with 30 additions and 4 deletions

View File

@@ -37,11 +37,9 @@ import {
cloneTransformSession, cloneTransformSession,
createInactiveTransformSession, createInactiveTransformSession,
createTransformSession, createTransformSession,
getTransformOperationLabel,
supportsTransformAxisConstraint, supportsTransformAxisConstraint,
type ActiveTransformSession, type ActiveTransformSession,
type TransformAxis, type TransformAxis,
type TransformOperation,
type TransformSessionState type TransformSessionState
} from "../core/transform-session"; } from "../core/transform-session";
import type { ToolMode } from "../core/tool-mode"; import type { ToolMode } from "../core/tool-mode";
@@ -55,7 +53,8 @@ import {
createModelInstancePlacementPosition, createModelInstancePlacementPosition,
DEFAULT_MODEL_INSTANCE_ROTATION_DEGREES, DEFAULT_MODEL_INSTANCE_ROTATION_DEGREES,
DEFAULT_MODEL_INSTANCE_SCALE, DEFAULT_MODEL_INSTANCE_SCALE,
getModelInstances getModelInstances,
type ModelInstance
} from "../assets/model-instances"; } from "../assets/model-instances";
import type { SceneDocument } from "../document/scene-document"; import type { SceneDocument } from "../document/scene-document";
import { import {
@@ -100,7 +99,12 @@ import {
type ViewportGridPlane, type ViewportGridPlane,
type ViewportViewMode type ViewportViewMode
} from "./viewport-view-modes"; } from "./viewport-view-modes";
import { areViewportPanelCameraStatesEqual, type ViewportDisplayMode, type ViewportPanelCameraState } from "./viewport-layout"; import {
areViewportPanelCameraStatesEqual,
type ViewportDisplayMode,
type ViewportPanelCameraState,
type ViewportPanelId
} from "./viewport-layout";
import { import {
areViewportToolPreviewsEqual, areViewportToolPreviewsEqual,
type CreationTarget, type CreationTarget,

View File

@@ -1,6 +1,7 @@
import { render, waitFor } from "@testing-library/react"; import { render, waitFor } from "@testing-library/react";
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import { createInactiveTransformSession, type ActiveTransformSession, type TransformSessionState } from "../../src/core/transform-session";
import { createEmptySceneDocument } from "../../src/document/scene-document"; import { createEmptySceneDocument } from "../../src/document/scene-document";
import { ViewportCanvas } from "../../src/viewport-three/ViewportCanvas"; import { ViewportCanvas } from "../../src/viewport-three/ViewportCanvas";
import { createDefaultViewportPanelCameraState, type ViewportPanelCameraState } from "../../src/viewport-three/viewport-layout"; import { createDefaultViewportPanelCameraState, type ViewportPanelCameraState } from "../../src/viewport-three/viewport-layout";
@@ -20,8 +21,13 @@ const { MockViewportHost, viewportHostInstances } = vi.hoisted(() => {
setCameraStateChangeHandler: ReturnType<typeof vi.fn>; setCameraStateChangeHandler: ReturnType<typeof vi.fn>;
setCreationPreviewChangeHandler: ReturnType<typeof vi.fn>; setCreationPreviewChangeHandler: ReturnType<typeof vi.fn>;
setCreationCommitHandler: ReturnType<typeof vi.fn>; setCreationCommitHandler: ReturnType<typeof vi.fn>;
setTransformSessionChangeHandler: ReturnType<typeof vi.fn>;
setTransformCommitHandler: ReturnType<typeof vi.fn>;
setTransformCancelHandler: ReturnType<typeof vi.fn>;
setToolMode: ReturnType<typeof vi.fn>; setToolMode: ReturnType<typeof vi.fn>;
setCreationPreview: ReturnType<typeof vi.fn>; setCreationPreview: ReturnType<typeof vi.fn>;
setTransformSession: ReturnType<typeof vi.fn>;
setPanelId: ReturnType<typeof vi.fn>;
focusSelection: ReturnType<typeof vi.fn>; focusSelection: ReturnType<typeof vi.fn>;
}> = []; }> = [];
@@ -38,8 +44,13 @@ const { MockViewportHost, viewportHostInstances } = vi.hoisted(() => {
setCameraStateChangeHandler = vi.fn(); setCameraStateChangeHandler = vi.fn();
setCreationPreviewChangeHandler = vi.fn(); setCreationPreviewChangeHandler = vi.fn();
setCreationCommitHandler = vi.fn(); setCreationCommitHandler = vi.fn();
setTransformSessionChangeHandler = vi.fn();
setTransformCommitHandler = vi.fn();
setTransformCancelHandler = vi.fn();
setToolMode = vi.fn(); setToolMode = vi.fn();
setCreationPreview = vi.fn(); setCreationPreview = vi.fn();
setTransformSession = vi.fn();
setPanelId = vi.fn();
focusSelection = vi.fn(); focusSelection = vi.fn();
constructor() { constructor() {
@@ -81,6 +92,9 @@ describe("ViewportCanvas", () => {
const onCommitCreation = vi.fn(() => true); const onCommitCreation = vi.fn(() => true);
const onCameraStateChange = vi.fn((_cameraState: ViewportPanelCameraState) => undefined); const onCameraStateChange = vi.fn((_cameraState: ViewportPanelCameraState) => undefined);
const onToolPreviewChange = vi.fn((_toolPreview: ViewportToolPreview) => undefined); const onToolPreviewChange = vi.fn((_toolPreview: ViewportToolPreview) => undefined);
const onTransformSessionChange = vi.fn((_transformSession: TransformSessionState) => undefined);
const onTransformCommit = vi.fn((_transformSession: ActiveTransformSession) => undefined);
const onTransformCancel = vi.fn(() => undefined);
const onSelectionChange = vi.fn(); const onSelectionChange = vi.fn();
render( render(
@@ -94,6 +108,7 @@ describe("ViewportCanvas", () => {
selection={{ kind: "none" }} selection={{ kind: "none" }}
toolMode="create" toolMode="create"
toolPreview={toolPreview} toolPreview={toolPreview}
transformSession={createInactiveTransformSession()}
cameraState={cameraState} cameraState={cameraState}
viewMode="perspective" viewMode="perspective"
displayMode="authoring" displayMode="authoring"
@@ -105,6 +120,9 @@ describe("ViewportCanvas", () => {
onCommitCreation={onCommitCreation} onCommitCreation={onCommitCreation}
onCameraStateChange={onCameraStateChange} onCameraStateChange={onCameraStateChange}
onToolPreviewChange={onToolPreviewChange} onToolPreviewChange={onToolPreviewChange}
onTransformSessionChange={onTransformSessionChange}
onTransformCommit={onTransformCommit}
onTransformCancel={onTransformCancel}
/> />
); );
@@ -137,6 +155,7 @@ describe("ViewportCanvas", () => {
selection={{ kind: "none" }} selection={{ kind: "none" }}
toolMode="select" toolMode="select"
toolPreview={{ kind: "none" }} toolPreview={{ kind: "none" }}
transformSession={createInactiveTransformSession()}
cameraState={cameraState} cameraState={cameraState}
viewMode="perspective" viewMode="perspective"
displayMode="normal" displayMode="normal"
@@ -148,6 +167,9 @@ describe("ViewportCanvas", () => {
onCommitCreation={vi.fn(() => true)} onCommitCreation={vi.fn(() => true)}
onCameraStateChange={onCameraStateChange} onCameraStateChange={onCameraStateChange}
onToolPreviewChange={vi.fn()} onToolPreviewChange={vi.fn()}
onTransformSessionChange={vi.fn()}
onTransformCommit={vi.fn()}
onTransformCancel={vi.fn()}
/> />
); );