Skip to content

Commit fe5f73e

Browse files
committed
refactor: 删除split相关历史遗留问题
- 删除 splitMode ,改为由 pane 的属性直接判断 - 将 split 相关语义改为了layout/pane
1 parent 08cc7a1 commit fe5f73e

7 files changed

Lines changed: 61 additions & 68 deletions

File tree

src/components/panels/ChunkListPanel.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ function handleChunkSelect(chunkId: string, event: MouseEvent) {
335335
activeContext.handleChunkClickSelection(event, chunkId);
336336
337337
if (!event.ctrlKey && !event.metaKey && !event.shiftKey) {
338-
if (windowStore.isInSplitMode()) {
338+
if (windowStore.hasSplitView) {
339339
const activePaneIndex = windowStore.getActivePaneIndex() ?? 0;
340340
windowStore.setPaneView(activePaneIndex, 'chunkView', chunkId);
341341
} else {

src/components/workspace/ChunkView.vue

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
</div>
1616
<div class="view-actions">
1717
<button
18-
v-if="windowStore.splitMode === 'single'"
18+
v-if="!windowStore.hasSplitView"
1919
class="view-action-btn"
2020
title="向右分屏"
2121
@click.stop="handleSplit"
@@ -24,7 +24,7 @@
2424
</button>
2525

2626
<button
27-
v-if="windowStore.splitMode === 'double' || canClose"
27+
v-if="windowStore.hasSplitView || canClose"
2828
class="view-action-btn"
2929
title="关闭"
3030
@click.stop="handleClose"
@@ -158,18 +158,18 @@ interface ScrollAnchor {
158158
159159
const canClose = computed(() => {
160160
return (
161-
windowStore.splitMode === 'single' &&
161+
!windowStore.hasSplitView &&
162162
effectiveWindowId.value !== 'defaultView' &&
163163
windowStore.openWindows.size > 1
164164
);
165165
});
166166
167167
function handleSplit() {
168-
windowStore.enterSplitMode('chunkView', currentChunkId.value);
168+
windowStore.openSplitView('chunkView', currentChunkId.value);
169169
}
170170
171171
function handleClose() {
172-
if (windowStore.splitMode === 'double') {
172+
if (windowStore.hasSplitView) {
173173
windowStore.closePane(effectiveWindowId.value);
174174
} else {
175175
windowStore.unregisterWindow(effectiveWindowId.value);

src/components/workspace/ExportPreview.vue

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
</div>
2020
<div class="view-actions">
2121
<button
22-
v-if="windowStore.splitMode === 'single'"
22+
v-if="!windowStore.hasSplitView"
2323
class="view-action-btn"
2424
title="向右分屏"
2525
@click.stop="handleSplit"
@@ -28,7 +28,7 @@
2828
</button>
2929

3030
<button
31-
v-if="windowStore.splitMode === 'double' || canClose"
31+
v-if="windowStore.hasSplitView || canClose"
3232
class="view-action-btn"
3333
title="关闭"
3434
@click.stop="handleClose"
@@ -244,7 +244,7 @@ const activeFormat = computed(
244244
245245
const canClose = computed(() => {
246246
return (
247-
windowStore.splitMode === 'single' &&
247+
!windowStore.hasSplitView &&
248248
effectiveWindowId.value !== 'defaultView' &&
249249
windowStore.openWindows.size > 1
250250
);
@@ -267,11 +267,11 @@ const rowsWithId = computed(() => {
267267
const rows = computed(() => rowsWithId.value);
268268
269269
function handleSplit() {
270-
windowStore.enterSplitMode('exportPreview', props.originalId);
270+
windowStore.openSplitView('exportPreview', props.originalId);
271271
}
272272
273273
function handleClose() {
274-
if (windowStore.splitMode === 'double') {
274+
if (windowStore.hasSplitView) {
275275
windowStore.closePane(effectiveWindowId.value);
276276
} else {
277277
windowStore.unregisterWindow(effectiveWindowId.value);

src/components/workspace/MainWorkspace.vue

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
<FileImporter v-if="isWorkspaceEmpty" />
44
<template v-else>
55
<div
6-
class="split-container"
6+
class="pane-layout"
77
:class="{
8-
'split-vertical': windowStore.splitDirection === 'vertical',
8+
'pane-layout-vertical':
9+
windowStore.paneDirection === 'vertical',
910
}"
1011
>
1112
<template v-for="pane in workspacePanes" :key="pane.paneIndex">
1213
<div
13-
class="split-pane"
14+
class="workspace-pane"
1415
:style="getPaneStyle(pane.paneIndex)"
1516
@pointerdown.capture="handlePaneClick(pane.paneIndex)"
1617
>
@@ -25,10 +26,10 @@
2526

2627
<div
2728
v-if="shouldRenderResizeHandle(pane.paneIndex)"
28-
class="split-resize-handle"
29+
class="pane-resize-handle"
2930
:class="{
30-
'resize-vertical':
31-
windowStore.splitDirection === 'vertical',
31+
'pane-resize-handle-vertical':
32+
windowStore.paneDirection === 'vertical',
3233
}"
3334
@mousedown="startResize"
3435
></div>
@@ -73,9 +74,9 @@ function getComponentProps(instance: WindowInstance) {
7374
}
7475
7576
function getPaneStyle(index: 0 | 1): Record<string, string> {
76-
const isHorizontal = windowStore.splitDirection === 'horizontal';
77+
const isHorizontal = windowStore.paneDirection === 'horizontal';
7778
const size =
78-
workspacePanes.value.length === 1 ? 100 : windowStore.splitSizes[index];
79+
workspacePanes.value.length === 1 ? 100 : windowStore.paneSizes[index];
7980
8081
return isHorizontal
8182
? { width: `${size}%`, height: '100%' }
@@ -97,12 +98,12 @@ function shouldRenderResizeHandle(paneIndex: 0 | 1) {
9798
9899
function startResize(e: MouseEvent) {
99100
e.preventDefault();
100-
const isHorizontal = windowStore.splitDirection === 'horizontal';
101+
const isHorizontal = windowStore.paneDirection === 'horizontal';
101102
const container = (e.target as HTMLElement).parentElement;
102103
if (!container) return;
103104
104105
const startPos = isHorizontal ? e.clientX : e.clientY;
105-
const startSizes = [...windowStore.splitSizes];
106+
const startSizes = [...windowStore.paneSizes];
106107
const containerSize = isHorizontal
107108
? container.clientWidth
108109
: container.clientHeight;
@@ -118,7 +119,7 @@ function startResize(e: MouseEvent) {
118119
Math.max(20, startSizes[0] + deltaPercent),
119120
);
120121
const newRightSize = 100 - newLeftSize;
121-
windowStore.splitSizes = [newLeftSize, newRightSize];
122+
windowStore.paneSizes = [newLeftSize, newRightSize];
122123
}
123124
124125
function onMouseUp() {
@@ -146,24 +147,24 @@ function startResize(e: MouseEvent) {
146147
flex-direction: column;
147148
}
148149
149-
.split-container {
150+
.pane-layout {
150151
display: flex;
151152
width: 100%;
152153
height: 100%;
153154
}
154155
155-
.split-container.split-vertical {
156+
.pane-layout.pane-layout-vertical {
156157
flex-direction: column;
157158
}
158159
159-
.split-pane {
160+
.workspace-pane {
160161
min-width: 0;
161162
min-height: 0;
162163
overflow: hidden;
163164
position: relative;
164165
}
165166
166-
.split-resize-handle {
167+
.pane-resize-handle {
167168
width: 4px;
168169
height: 100%;
169170
cursor: col-resize;
@@ -173,12 +174,12 @@ function startResize(e: MouseEvent) {
173174
z-index: 10;
174175
}
175176
176-
.split-resize-handle:hover,
177-
.split-resize-handle:active {
177+
.pane-resize-handle:hover,
178+
.pane-resize-handle:active {
178179
background-color: var(--active-accent);
179180
}
180181
181-
.split-container.split-vertical .split-resize-handle {
182+
.pane-layout.pane-layout-vertical .pane-resize-handle {
182183
width: 100%;
183184
height: 4px;
184185
cursor: row-resize;

src/composables/useCommandDispatcher.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ export function useCommandDispatcher() {
333333
);
334334
windowStore.requestMessageReveal(chunkId, target.messageId);
335335

336-
if (windowStore.isInSplitMode()) {
336+
if (windowStore.hasSplitView) {
337337
const activePaneIndex = windowStore.getActivePaneIndex() ?? 0;
338338
windowStore.setPaneView(activePaneIndex, 'chunkView', chunkId);
339339
return;

0 commit comments

Comments
 (0)