diff --git a/packages/image-canvas-react/src/CanvasWorld.tsx b/packages/image-canvas-react/src/CanvasWorld.tsx index 7698a9d23..bc089d1ce 100644 --- a/packages/image-canvas-react/src/CanvasWorld.tsx +++ b/packages/image-canvas-react/src/CanvasWorld.tsx @@ -7,6 +7,7 @@ import type { CSSProperties, HTMLAttributes, ReactNode } from 'react'; import { CANVAS_RENDER_SUPERSAMPLE, canvasViewportToWorldTransform, + getSafeViewportScale, } from './canvasWorldRendering'; export function CanvasWorld({ @@ -21,8 +22,7 @@ export function CanvasWorld({ viewport: CanvasViewport; worldSize?: number; }) { - const viewportScale = - Number.isFinite(viewport.scale) && viewport.scale > 0 ? viewport.scale : 1; + const viewportScale = getSafeViewportScale(viewport); return (
0 + ? viewport.scale + : 1; +} + /** 将逻辑 viewport 转换为 world 的渲染 transform。 */ export function canvasViewportToWorldTransform(viewport: CanvasViewport) { - const scale = - Number.isFinite(viewport.scale) && viewport.scale > 0 ? viewport.scale : 1; + const scale = getSafeViewportScale(viewport); return `translate(${viewport.x}px, ${viewport.y}px) scale(${scale / CANVAS_RENDER_SUPERSAMPLE})`; } diff --git a/packages/image-canvas-react/src/index.ts b/packages/image-canvas-react/src/index.ts index ea4d68259..a1ea0ab9d 100644 --- a/packages/image-canvas-react/src/index.ts +++ b/packages/image-canvas-react/src/index.ts @@ -2,7 +2,10 @@ export * from './CanvasChrome'; export * from './CanvasPortal'; export * from './CanvasViewport'; export * from './CanvasWorld'; -export { canvasViewportToWorldTransform } from './canvasWorldRendering'; +export { + canvasViewportToWorldTransform, + getSafeViewportScale, +} from './canvasWorldRendering'; export * from './LayerRenderer'; export * from './Minimap'; export * from './SelectionOverlay';