Files
Genarrative/packages/image-canvas-react/src/Minimap.tsx
T
menghao 03a4410272
Project CI / Repository checks (push) Successful in 1m5s
Project CI / Frontend tests (push) Successful in 3m20s
Project CI / Backend tests (push) Successful in 4m1s
Project CI / Native shell tests (push) Failing after 11m56s
game agent无限画布开发 (#136)
主要工作是共享同一套“画布内核与通用 UI 源码”,网站和 Tauri 只分别实现宿主适配层。

---------

Co-authored-by: 段舒康 <kdletters@qq.com>
Co-authored-by: kdletters <kdletters@qq.com>
Reviewed-on: http://192.168.35.82/git/GenarrativeAI/Genarrative/pulls/136
Co-authored-by: menghao <mh18530625731@163.com>
Co-committed-by: menghao <mh18530625731@163.com>
2026-08-12 10:54:16 +08:00

49 lines
1.3 KiB
TypeScript

import type { StageMinimapModel } from '@genarrative/image-canvas-core';
import type { PointerEventHandler, Ref } from 'react';
export function Minimap({
className = '',
layerClassName = '',
minimapRef,
model,
onPointerDown,
stageClassName = '',
viewportClassName = '',
}: {
className?: string;
layerClassName?: string;
minimapRef?: Ref<HTMLButtonElement>;
model: StageMinimapModel;
onPointerDown: PointerEventHandler<HTMLButtonElement>;
stageClassName?: string;
viewportClassName?: string;
}) {
return (
<button
ref={minimapRef}
type="button"
className={`genarrative-image-canvas__minimap ${className}`.trim()}
aria-label="画布小地图"
title="拖拽移动视图"
onPointerDown={onPointerDown}
>
<span
className={`genarrative-image-canvas__minimap-stage ${stageClassName}`.trim()}
>
{model.layers.map((layer) => (
<span
key={layer.id}
className={`genarrative-image-canvas__minimap-layer ${layerClassName}`.trim()}
title={layer.title}
style={layer.rect}
/>
))}
<span
className={`genarrative-image-canvas__minimap-viewport ${viewportClassName}`.trim()}
style={model.viewport}
/>
</span>
</button>
);
}