Skip to content

Commit 1e9b824

Browse files
update
1 parent 8616dac commit 1e9b824

11 files changed

+138
-96
lines changed

packages/react/src/components/DiffSplitContentLineNormal.tsx

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,15 @@ const InternalDiffSplitLine = ({
2121
diffFile,
2222
lineNumber,
2323
side,
24+
enableAddWidget,
25+
enableHighlight,
2426
}: {
2527
index: number;
2628
side: SplitSide;
2729
diffFile: DiffFile;
2830
lineNumber: number;
31+
enableHighlight: boolean;
32+
enableAddWidget: boolean;
2933
}) => {
3034
const getCurrentSyntaxLine = side === SplitSide.old ? diffFile.getOldSyntaxLine : diffFile.getNewSyntaxLine;
3135

@@ -47,11 +51,7 @@ const InternalDiffSplitLine = ({
4751

4852
const { useDiffContext } = useDiffViewContext();
4953

50-
const { enableHighlight, enableAddWidget, onAddWidgetClick } = useDiffContext.useShallowStableSelector((s) => ({
51-
enableHighlight: s.enableHighlight,
52-
enableAddWidget: s.enableAddWidget,
53-
onAddWidgetClick: s.onAddWidgetClick,
54-
}));
54+
const onAddWidgetClick = useDiffContext.getReadonlyState().onAddWidgetClick;
5555

5656
const { useWidget } = useDiffWidgetContext();
5757

@@ -129,17 +129,30 @@ export const DiffSplitContentLine = ({
129129
diffFile,
130130
lineNumber,
131131
side,
132+
enableAddWidget,
133+
enableHighlight,
132134
}: {
133135
index: number;
134136
side: SplitSide;
135137
diffFile: DiffFile;
136138
lineNumber: number;
139+
enableHighlight: boolean;
140+
enableAddWidget: boolean;
137141
}) => {
138142
const getCurrentLine = side === SplitSide.old ? diffFile.getSplitLeftLine : diffFile.getSplitRightLine;
139143

140144
const currentLine = getCurrentLine(index);
141145

142146
if (currentLine?.isHidden) return null;
143147

144-
return <InternalDiffSplitLine index={index} diffFile={diffFile} lineNumber={lineNumber} side={side} />;
148+
return (
149+
<InternalDiffSplitLine
150+
index={index}
151+
diffFile={diffFile}
152+
lineNumber={lineNumber}
153+
side={side}
154+
enableAddWidget={enableAddWidget}
155+
enableHighlight={enableHighlight}
156+
/>
157+
);
145158
};

packages/react/src/components/DiffSplitContentLineWrap.tsx

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,14 @@ const InternalDiffSplitLine = ({
2020
index,
2121
diffFile,
2222
lineNumber,
23+
enableAddWidget,
24+
enableHighlight,
2325
}: {
2426
index: number;
2527
diffFile: DiffFile;
2628
lineNumber: number;
29+
enableHighlight: boolean;
30+
enableAddWidget: boolean;
2731
}) => {
2832
const oldLine = diffFile.getSplitLeftLine(index);
2933

@@ -43,11 +47,7 @@ const InternalDiffSplitLine = ({
4347

4448
const { useDiffContext } = useDiffViewContext();
4549

46-
const { enableHighlight, enableAddWidget, onAddWidgetClick } = useDiffContext.useShallowStableSelector((s) => ({
47-
enableHighlight: s.enableHighlight,
48-
enableAddWidget: s.enableAddWidget,
49-
onAddWidgetClick: s.onAddWidgetClick,
50-
}));
50+
const onAddWidgetClick = useDiffContext.getReadonlyState().onAddWidgetClick;
5151

5252
const { useWidget } = useDiffWidgetContext();
5353

@@ -200,16 +200,28 @@ export const DiffSplitContentLine = ({
200200
index,
201201
diffFile,
202202
lineNumber,
203+
enableAddWidget,
204+
enableHighlight,
203205
}: {
204206
index: number;
205207
diffFile: DiffFile;
206208
lineNumber: number;
209+
enableHighlight: boolean;
210+
enableAddWidget: boolean;
207211
}) => {
208212
const oldLine = diffFile.getSplitLeftLine(index);
209213

210214
const newLine = diffFile.getSplitRightLine(index);
211215

212216
if (oldLine?.isHidden && newLine?.isHidden) return null;
213217

214-
return <InternalDiffSplitLine index={index} diffFile={diffFile} lineNumber={lineNumber} />;
218+
return (
219+
<InternalDiffSplitLine
220+
index={index}
221+
diffFile={diffFile}
222+
lineNumber={lineNumber}
223+
enableAddWidget={enableAddWidget}
224+
enableHighlight={enableHighlight}
225+
/>
226+
);
215227
};

packages/react/src/components/DiffSplitViewLineNormal.tsx

Lines changed: 0 additions & 34 deletions
This file was deleted.

packages/react/src/components/DiffSplitViewLineWrap.tsx

Lines changed: 0 additions & 25 deletions
This file was deleted.

packages/react/src/components/DiffSplitViewNormal.tsx

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,17 @@ const onMouseDown: MouseEventHandler<HTMLTableSectionElement> = (e) => {
3232
}
3333
};
3434

35-
const DiffSplitViewTable = ({ side, diffFile }: { side: SplitSide; diffFile: DiffFile }) => {
35+
const DiffSplitViewTable = ({
36+
side,
37+
diffFile,
38+
enableAddWidget,
39+
enableHighlight,
40+
}: {
41+
side: SplitSide;
42+
diffFile: DiffFile;
43+
enableHighlight: boolean;
44+
enableAddWidget: boolean;
45+
}) => {
3646
const className = side === SplitSide.new ? "new-diff-table" : "old-diff-table";
3747

3848
const lines = getSplitContentLines(diffFile);
@@ -53,7 +63,14 @@ const DiffSplitViewTable = ({ side, diffFile }: { side: SplitSide; diffFile: Dif
5363
{lines.map((line) => (
5464
<Fragment key={line.index}>
5565
<DiffSplitHunkLine index={line.index} side={side} lineNumber={line.lineNumber} diffFile={diffFile} />
56-
<DiffSplitContentLine index={line.index} side={side} lineNumber={line.lineNumber} diffFile={diffFile} />
66+
<DiffSplitContentLine
67+
index={line.index}
68+
side={side}
69+
lineNumber={line.lineNumber}
70+
diffFile={diffFile}
71+
enableAddWidget={enableAddWidget}
72+
enableHighlight={enableHighlight}
73+
/>
5774
<DiffSplitWidgetLine index={line.index} side={side} lineNumber={line.lineNumber} diffFile={diffFile} />
5875
<DiffSplitExtendLine index={line.index} side={side} lineNumber={line.lineNumber} diffFile={diffFile} />
5976
</Fragment>
@@ -78,7 +95,11 @@ export const DiffSplitViewNormal = memo(({ diffFile }: { diffFile: DiffFile }) =
7895

7996
const { useDiffContext } = useDiffViewContext();
8097

81-
const fontSize = useDiffContext.useShallowStableSelector((s) => s.fontSize);
98+
const { fontSize, enableAddWidget, enableHighlight } = useDiffContext.useShallowStableSelector((s) => ({
99+
fontSize: s.fontSize,
100+
enableAddWidget: s.enableAddWidget,
101+
enableHighlight: s.enableHighlight,
102+
}));
82103

83104
useSyncExternalStore(diffFile.subscribe, diffFile.getUpdateCount, diffFile.getUpdateCount);
84105

@@ -114,7 +135,12 @@ export const DiffSplitViewNormal = memo(({ diffFile }: { diffFile: DiffFile }) =
114135
fontSize: `var(${diffFontSizeName})`,
115136
}}
116137
>
117-
<DiffSplitViewTable side={SplitSide.old} diffFile={diffFile} />
138+
<DiffSplitViewTable
139+
side={SplitSide.old}
140+
diffFile={diffFile}
141+
enableAddWidget={enableAddWidget}
142+
enableHighlight={enableHighlight}
143+
/>
118144
</div>
119145
<div className="diff-split-line w-[1.5px]" style={{ backgroundColor: `var(${borderColorName})` }} />
120146
<div
@@ -128,7 +154,12 @@ export const DiffSplitViewNormal = memo(({ diffFile }: { diffFile: DiffFile }) =
128154
fontSize: `var(${diffFontSizeName})`,
129155
}}
130156
>
131-
<DiffSplitViewTable side={SplitSide.new} diffFile={diffFile} />
157+
<DiffSplitViewTable
158+
side={SplitSide.new}
159+
diffFile={diffFile}
160+
enableAddWidget={enableAddWidget}
161+
enableHighlight={enableHighlight}
162+
/>
132163
</div>
133164
</div>
134165
);

packages/react/src/components/DiffSplitViewWrap.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,11 @@ export const DiffSplitViewWrap = memo(({ diffFile }: { diffFile: DiffFile }) =>
4646

4747
const useSplitConfig = useMemo(() => createDiffSplitConfigStore(), []);
4848

49-
const fontSize = useDiffContext.useShallowStableSelector((s) => s.fontSize);
49+
const { fontSize, enableAddWidget, enableHighlight } = useDiffContext.useShallowStableSelector((s) => ({
50+
fontSize: s.fontSize,
51+
enableAddWidget: s.enableAddWidget,
52+
enableHighlight: s.enableHighlight,
53+
}));
5054

5155
useSyncExternalStore(diffFile.subscribe, diffFile.getUpdateCount, diffFile.getUpdateCount);
5256

@@ -117,7 +121,13 @@ export const DiffSplitViewWrap = memo(({ diffFile }: { diffFile: DiffFile }) =>
117121
{lines.map((line) => (
118122
<Fragment key={line.index}>
119123
<DiffSplitHunkLine index={line.index} lineNumber={line.lineNumber} diffFile={diffFile} />
120-
<DiffSplitContentLine index={line.index} lineNumber={line.lineNumber} diffFile={diffFile} />
124+
<DiffSplitContentLine
125+
index={line.index}
126+
lineNumber={line.lineNumber}
127+
diffFile={diffFile}
128+
enableAddWidget={enableAddWidget}
129+
enableHighlight={enableHighlight}
130+
/>
121131
<DiffSplitWidgetLine index={line.index} lineNumber={line.lineNumber} diffFile={diffFile} />
122132
<DiffSplitExtendLine index={line.index} lineNumber={line.lineNumber} diffFile={diffFile} />
123133
</Fragment>

packages/react/src/components/DiffUnifiedContentLine.tsx

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -161,19 +161,26 @@ const DiffUnifiedNewLine = ({
161161
};
162162

163163
const _DiffUnifiedLine = memo(
164-
({ index, diffFile, lineNumber }: { index: number; diffFile: DiffFile; lineNumber: number }) => {
164+
({
165+
index,
166+
diffFile,
167+
lineNumber,
168+
enableWrap,
169+
enableAddWidget,
170+
enableHighlight,
171+
}: {
172+
index: number;
173+
diffFile: DiffFile;
174+
lineNumber: number;
175+
enableWrap: boolean;
176+
enableHighlight: boolean;
177+
enableAddWidget: boolean;
178+
}) => {
165179
const unifiedLine = diffFile.getUnifiedLine(index);
166180

167181
const { useDiffContext } = useDiffViewContext();
168182

169-
const { enableWrap, enableHighlight, enableAddWidget, onAddWidgetClick } = useDiffContext.useShallowStableSelector(
170-
(s) => ({
171-
enableWrap: s.enableWrap,
172-
enableHighlight: s.enableHighlight,
173-
enableAddWidget: s.enableAddWidget,
174-
onAddWidgetClick: s.onAddWidgetClick,
175-
})
176-
);
183+
const onAddWidgetClick = useDiffContext.getReadonlyState().onAddWidgetClick;
177184

178185
const { useWidget } = useDiffWidgetContext();
179186

@@ -291,14 +298,29 @@ export const DiffUnifiedContentLine = ({
291298
index,
292299
diffFile,
293300
lineNumber,
301+
enableWrap,
302+
enableHighlight,
303+
enableAddWidget,
294304
}: {
295305
index: number;
296306
diffFile: DiffFile;
297307
lineNumber: number;
308+
enableWrap: boolean;
309+
enableHighlight: boolean;
310+
enableAddWidget: boolean;
298311
}) => {
299312
const unifiedLine = diffFile.getUnifiedLine(index);
300313

301314
if (unifiedLine?.isHidden) return null;
302315

303-
return <_DiffUnifiedLine index={index} diffFile={diffFile} lineNumber={lineNumber} />;
316+
return (
317+
<_DiffUnifiedLine
318+
index={index}
319+
diffFile={diffFile}
320+
lineNumber={lineNumber}
321+
enableWrap={enableWrap}
322+
enableHighlight={enableHighlight}
323+
enableAddWidget={enableAddWidget}
324+
/>
325+
);
304326
};

packages/react/src/components/DiffUnifiedView.tsx

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,11 @@ export const DiffUnifiedView = memo(({ diffFile }: { diffFile: DiffFile }) => {
4040

4141
const contextValue = useMemo(() => ({ useWidget }), [useWidget]);
4242

43-
const { fontSize, enableWrap } = useDiffContext.useShallowStableSelector((s) => ({
43+
const { fontSize, enableWrap, enableHighlight, enableAddWidget } = useDiffContext.useShallowStableSelector((s) => ({
4444
fontSize: s.fontSize,
4545
enableWrap: s.enableWrap,
46+
enableHighlight: s.enableHighlight,
47+
enableAddWidget: s.enableAddWidget,
4648
}));
4749

4850
useSyncExternalStore(diffFile.subscribe, diffFile.getUpdateCount, diffFile.getUpdateCount);
@@ -93,7 +95,14 @@ export const DiffUnifiedView = memo(({ diffFile }: { diffFile: DiffFile }) => {
9395
{lines.map((item) => (
9496
<Fragment key={item.index}>
9597
<DiffUnifiedHunkLine index={item.index} lineNumber={item.lineNumber} diffFile={diffFile} />
96-
<DiffUnifiedContentLine index={item.index} lineNumber={item.lineNumber} diffFile={diffFile} />
98+
<DiffUnifiedContentLine
99+
index={item.index}
100+
lineNumber={item.lineNumber}
101+
diffFile={diffFile}
102+
enableWrap={enableWrap}
103+
enableHighlight={enableHighlight}
104+
enableAddWidget={enableAddWidget}
105+
/>
97106
<DiffUnifiedWidgetLine index={item.index} lineNumber={item.lineNumber} diffFile={diffFile} />
98107
<DiffUnifiedExtendLine index={item.index} lineNumber={item.lineNumber} diffFile={diffFile} />
99108
</Fragment>

packages/vue/src/components/DiffSplitContentLineNormal.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ export const DiffSplitContentLine = defineComponent(
6363
currentLineHasContent.value = currentLine.value.lineNumber;
6464
});
6565

66+
const onOpenAddWidget = (lineNumber: number, side: SplitSide) => setWidget({ side: side, lineNumber: lineNumber });
67+
6668
return () => {
6769
if (currentLineHasHidden.value) return null;
6870

@@ -101,7 +103,7 @@ export const DiffSplitContentLine = defineComponent(
101103
diffFile={props.diffFile}
102104
onWidgetClick={onAddWidgetClick}
103105
className="absolute left-[100%] z-[1] translate-x-[-50%]"
104-
onOpenAddWidget={(lineNumber, side) => setWidget({ lineNumber: lineNumber, side: side })}
106+
onOpenAddWidget={onOpenAddWidget}
105107
/>
106108
)}
107109
<span

0 commit comments

Comments
 (0)