From c999334671aaec8cb8fb2481aae371bc3aa6fb26 Mon Sep 17 00:00:00 2001
From: wuyanwanwu <104009119+wuyanwanwu@users.noreply.github.com.>
Date: Fri, 14 Aug 2026 00:49:39 +0800
Subject: [PATCH] Isolate pattern viewport scrolling
---
app/globals.css | 6 ++-
app/page.tsx | 48 ++++++++++---------
out/.vite/manifest.json | 6 +--
out/404.html | 4 +-
.../_buildManifest.js | 0
.../_ssgManifest.js | 0
.../{index-BYwqW0zJ.js => index-_0qXxkjI.js} | 6 +--
....js => layout-segment-context-BkDyc3uQ.js} | 2 +-
.../{page-CfJDq9ZG.js => page-DoVw8RjR.js} | 2 +-
...{index.Dnw31fuV.css => index.DWpM5cM2.css} | 2 +-
out/index.html | 4 +-
out/index.rsc | 4 +-
out/vinext-client-entry-manifest.json | 2 +-
13 files changed, 45 insertions(+), 41 deletions(-)
rename out/_next/static/{182cc0f5-9d0c-4445-9a64-4115e5c9fc17 => bd7f7592-0673-40a8-affb-375abb01af88}/_buildManifest.js (100%)
rename out/_next/static/{182cc0f5-9d0c-4445-9a64-4115e5c9fc17 => bd7f7592-0673-40a8-affb-375abb01af88}/_ssgManifest.js (100%)
rename out/_next/static/chunks/{index-BYwqW0zJ.js => index-_0qXxkjI.js} (99%)
rename out/_next/static/chunks/{layout-segment-context-BkPwkZIb.js => layout-segment-context-BkDyc3uQ.js} (74%)
rename out/_next/static/chunks/{page-CfJDq9ZG.js => page-DoVw8RjR.js} (78%)
rename out/_next/static/css/{index.Dnw31fuV.css => index.DWpM5cM2.css} (55%)
diff --git a/app/globals.css b/app/globals.css
index 7842633..18d9ea5 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -76,7 +76,8 @@ input[type="range"] { accent-color: var(--green); }
.zoom-control button { width: 36px; height: 36px; border: 1px solid var(--line); background: white; cursor: pointer; font-size: 20px; }
.zoom-control input { width: 95px; }
.zoom-control output { width: 38px; color: var(--muted); font-size: 11px; text-align: right; }
-.canvas-stage { width: 100%; height: clamp(520px, 68vh, 760px); min-height: 0; flex: none; overflow: auto; display: block; padding: 36px; cursor: grab; touch-action: none; overscroll-behavior: contain; user-select: none; scrollbar-gutter: stable; }
+.canvas-viewport { position: relative; width: 100%; height: clamp(520px, 68vh, 760px); min-height: 0; flex: 0 0 clamp(520px, 68vh, 760px); contain: size layout; overflow: hidden; }
+.canvas-stage { position: absolute; inset: 0; width: auto; height: auto; overflow: scroll; display: block; padding: 36px; cursor: grab; touch-action: none; overscroll-behavior: contain; user-select: none; scrollbar-gutter: stable; }
.canvas-stage.is-dragging { cursor: grabbing; }
.canvas-wrap { width: max-content; line-height: 0; position: relative; margin: auto; border: 1px solid var(--ink); box-shadow: 10px 10px 0 rgba(32,39,36,.13); background: white; }
.canvas-wrap canvas { cursor: inherit; image-rendering: pixelated; }
@@ -160,7 +161,8 @@ input[type="range"] { accent-color: var(--green); }
.pattern-toolbar { align-items: flex-start; flex-direction: column; padding: 20px; }
.zoom-control { width: 100%; }
.zoom-control input { flex: 1; }
- .canvas-stage { height: min(68vh, 620px); min-height: 360px; display: block; padding: 24px; }
+ .canvas-viewport { height: max(360px, min(68vh, 620px)); min-height: 0; flex-basis: max(360px, min(68vh, 620px)); }
+ .canvas-stage { display: block; padding: 24px; }
.canvas-wrap { margin: auto; }
.pattern-footer { align-items: flex-start; flex-wrap: wrap; padding: 14px 18px; }
.view-options { width: 100%; margin: 5px 0 0; justify-content: space-between; }
diff --git a/app/page.tsx b/app/page.tsx
index 17c11a6..a33db94 100644
--- a/app/page.tsx
+++ b/app/page.tsx
@@ -809,29 +809,31 @@ export default function Home() {
-
-
-