+ setGenerateDialog((currentDialog) =>
+ currentDialog?.mode === 'generate'
+ ? {
+ ...currentDialog,
+ composerOpen: true,
+ }
+ : currentDialog,
+ )
+ }
>
@@ -2670,6 +2848,60 @@ export function ImageCanvasEditorView() {
aria-label="画布面板入口"
onPointerDown={(event) => event.stopPropagation()}
>
+
+
setIsZoomMenuOpen((open) => !open)}
+ >
+ {formatPercent(viewport.scale)}
+
+ {isZoomMenuOpen ? (
+
+ {
+ updateScaleFromCenter(viewport.scale * 1.16);
+ setIsZoomMenuOpen(false);
+ }}
+ >
+ 放大
+
+ {
+ updateScaleFromCenter(viewport.scale * 0.86);
+ setIsZoomMenuOpen(false);
+ }}
+ >
+ 缩小
+
+ {
+ fitLayers();
+ setIsZoomMenuOpen(false);
+ }}
+ >
+ 显示画布所有元素
+
+ {[0.5, 1, 2].map((scale) => (
+ {
+ updateScaleFromCenter(scale);
+ setIsZoomMenuOpen(false);
+ }}
+ >
+ 缩放至{Math.round(scale * 100)}%
+
+ ))}
+
+ ) : null}
+
{
- setGenerateDialog(null);
+ setGenerateDialog((currentDialog) =>
+ currentDialog?.mode === 'generate'
+ ? {
+ ...currentDialog,
+ composerOpen: false,
+ }
+ : currentDialog,
+ );
setActiveTool('select');
}}
/>
diff --git a/src/index.css b/src/index.css
index ff8cd9e0..d8c799d3 100644
--- a/src/index.css
+++ b/src/index.css
@@ -3487,6 +3487,14 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock {
pointer-events: none;
}
+.image-canvas-editor__canvas-marquee {
+ position: absolute;
+ z-index: 7;
+ border: 1px solid #2563eb;
+ background: rgb(37 99 235 / 0.12);
+ pointer-events: none;
+}
+
.image-canvas-editor__asset-button {
display: block;
border: 0;
@@ -5222,6 +5230,12 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock {
}
}
+.image-canvas-editor__panel-dock .image-canvas-editor__zoom-trigger {
+ width: auto;
+ min-width: 4.15rem;
+ padding: 0 0.65rem;
+}
+
@keyframes baby-object-gift-lid-open {
0% {
transform: rotate(0deg) translateY(0);