Skip to content

Commit f28742d

Browse files
committed
fix: invert added/removed block
1 parent f70ef26 commit f28742d

File tree

6 files changed

+45
-45
lines changed

6 files changed

+45
-45
lines changed

packages/core/src/lib/components/blocks/AddedBlock.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<script lang="ts">
22
import type { Line } from '$lib/internal/blocks';
3-
import type { AddedBlock } from '$lib/internal/blocks/added';
3+
import type { RemovedBlock } from '$lib/internal/blocks/removed';
44
import type { BlockComponent } from '$lib/internal/editor/component';
55
6-
export let block: AddedBlock;
6+
export let block: RemovedBlock;
77
export let component: BlockComponent;
88
export let lines: Line[];
99
</script>

packages/core/src/lib/internal/blocks/added.ts

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import { type Line, LinkedComponentsBlock } from '.';
2-
import type { Side } from '../editor/side';
2+
import { type Side, OneWaySide, TwoWaySide } from '../editor/side';
33
import type { MaybeArray } from '../utils';
44
import { BlockComponent } from '../editor/component';
55
import AddedBlockComponent from '$lib/components/blocks/AddedBlock.svelte';
66
import AddedBlockPlaceholderComponent from '$lib/components/blocks/AddedBlockPlaceholder.svelte';
77
import MergeChange from '$lib/components/actions/MergeChange.svelte';
8+
import DeleteChange from '$lib/components/actions/DeleteChange.svelte';
89

910
export type AddedSideData<SideType extends Side> = {
1011
side: SideType;
@@ -18,7 +19,6 @@ export class AddedBlock<SideType extends Side = Side> extends LinkedComponentsBl
1819

1920
public readonly sidesData: MaybeArray<AddedSideData<SideType>>;
2021
public readonly placeholderSide: MaybeArray<Side>;
21-
public readonly unchangedSide?: Side;
2222

2323
constructor(params: {
2424
sidesData: MaybeArray<AddedSideData<SideType>>;
@@ -40,14 +40,22 @@ export class AddedBlock<SideType extends Side = Side> extends LinkedComponentsBl
4040
new BlockComponent({
4141
component: AddedBlockComponent,
4242
blockId: this.id,
43+
sideAction:
44+
side instanceof OneWaySide
45+
? {
46+
component: MergeChange,
47+
props: {}
48+
}
49+
: side instanceof TwoWaySide && side.eq(TwoWaySide.ctr)
50+
? {
51+
component: DeleteChange,
52+
props: {}
53+
}
54+
: undefined,
4355
props: { block: this, lines },
4456
linesCount: this.linesCount(side),
4557
side,
46-
type: this.type,
47-
sideAction: {
48-
component: MergeChange,
49-
props: {}
50-
}
58+
type: this.type
5159
})
5260
),
5361
...[this.placeholderSide].flat().map(
@@ -56,8 +64,8 @@ export class AddedBlock<SideType extends Side = Side> extends LinkedComponentsBl
5664
component: AddedBlockPlaceholderComponent,
5765
blockId: this.id,
5866
props: { block: this },
59-
side,
6067
linesCount: 0,
68+
side,
6169
placeholder: true,
6270
type: this.placeholderType
6371
})

packages/core/src/lib/internal/blocks/removed.ts

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import { type Line, LinkedComponentsBlock } from '.';
2-
import { type Side, OneWaySide, TwoWaySide } from '../editor/side';
2+
import type { Side } from '../editor/side';
33
import type { MaybeArray } from '../utils';
44
import { BlockComponent } from '../editor/component';
55
import RemovedBlockComponent from '$lib/components/blocks/RemovedBlock.svelte';
66
import RemovedBlockPlaceholderComponent from '$lib/components/blocks/RemovedBlockPlaceholder.svelte';
77
import MergeChange from '$lib/components/actions/MergeChange.svelte';
8-
import DeleteChange from '$lib/components/actions/DeleteChange.svelte';
98

109
export type RemovedSideData<SideType extends Side> = {
1110
side: SideType;
@@ -19,6 +18,7 @@ export class RemovedBlock<SideType extends Side = Side> extends LinkedComponents
1918

2019
public readonly sidesData: MaybeArray<RemovedSideData<SideType>>;
2120
public readonly placeholderSide: MaybeArray<Side>;
21+
public readonly unchangedSide?: Side;
2222

2323
constructor(params: {
2424
sidesData: MaybeArray<RemovedSideData<SideType>>;
@@ -40,22 +40,14 @@ export class RemovedBlock<SideType extends Side = Side> extends LinkedComponents
4040
new BlockComponent({
4141
component: RemovedBlockComponent,
4242
blockId: this.id,
43-
sideAction:
44-
side instanceof OneWaySide
45-
? {
46-
component: MergeChange,
47-
props: {}
48-
}
49-
: side instanceof TwoWaySide && side.eq(TwoWaySide.ctr)
50-
? {
51-
component: DeleteChange,
52-
props: {}
53-
}
54-
: undefined,
5543
props: { block: this, lines },
5644
linesCount: this.linesCount(side),
5745
side,
58-
type: this.type
46+
type: this.type,
47+
sideAction: {
48+
component: MergeChange,
49+
props: {}
50+
}
5951
})
6052
),
6153
...[this.placeholderSide].flat().map(
@@ -64,8 +56,8 @@ export class RemovedBlock<SideType extends Side = Side> extends LinkedComponents
6456
component: RemovedBlockPlaceholderComponent,
6557
blockId: this.id,
6658
props: { block: this },
67-
linesCount: 0,
6859
side,
60+
linesCount: 0,
6961
placeholder: true,
7062
type: this.placeholderType
7163
})

packages/core/src/lib/internal/diff/one-way-assembler.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { DiffBlock } from '../blocks';
2-
import { AddedBlock } from '../blocks/added';
32
import { RemovedBlock } from '../blocks/removed';
3+
import { AddedBlock } from '../blocks/added';
44
import { UnchangedBlock } from '../blocks/unchanged';
55
import { type OneWayChange, oneWayDiff } from './base';
66
import { diff2Sides, equalIgnoringWhitespace, type LineDiffAlgorithm } from './line-diff';
@@ -105,15 +105,15 @@ class OneWayAssembler {
105105
private assembleChangeBlock(change: OneWayChange, side: OneWaySide) {
106106
let block: DiffBlock<OneWaySide>;
107107
if (this.addSide.eq(side)) {
108-
block = this.hashTable.new(AddedBlock, {
108+
block = this.hashTable.new(RemovedBlock, {
109109
sidesData: {
110110
lines: this.intoLines(change.content),
111111
side
112112
},
113113
placeholderSide: side.opposite()
114114
});
115115
} else {
116-
block = this.hashTable.new(RemovedBlock, {
116+
block = this.hashTable.new(AddedBlock, {
117117
sidesData: {
118118
lines: this.intoLines(change.content),
119119
side

packages/core/src/lib/internal/diff/two-way-assembler.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import type { DiffBlock } from '../blocks';
2-
import { AddedBlock, type AddedSideData } from '../blocks/added';
2+
import { RemovedBlock, type RemovedSideData } from '../blocks/removed';
33
import { MergeConflictBlock } from '../blocks/merge-conflict';
44
import { ModifiedBlock } from '../blocks/modified';
5-
import { RemovedBlock, type RemovedSideData } from '../blocks/removed';
5+
import { AddedBlock, type AddedSideData } from '../blocks/added';
66
import { UnchangedBlock } from '../blocks/unchanged';
77
import { twoWayDiff, type TwoWayChange } from './base';
88
import { diff2Sides, equalIgnoringWhitespace, type LineDiffAlgorithm } from './line-diff';
@@ -87,7 +87,7 @@ class TwoWayAssembler {
8787
private assembleAddedBlock(change: TwoWayChange) {
8888
const side = change.lhs ? TwoWaySide.lhs : change.ctr ? TwoWaySide.ctr : TwoWaySide.rhs;
8989

90-
const block = this.hashTable.new(AddedBlock, {
90+
const block = this.hashTable.new(RemovedBlock, {
9191
sidesData: {
9292
lines: this.intoLines(change.content),
9393
side
@@ -123,7 +123,7 @@ class TwoWayAssembler {
123123
side: TwoWaySide.rhs
124124
});
125125

126-
const block = this.hashTable.new(RemovedBlock, {
126+
const block = this.hashTable.new(AddedBlock, {
127127
sidesData,
128128
placeholderSide: side.adjacentSides().filter((side) => {
129129
if (side.eq(TwoWaySide.lhs)) return !change.lhs;
@@ -170,9 +170,9 @@ class TwoWayAssembler {
170170

171171
private generateMergeConflictBlocks() {
172172
const blocks: DiffBlock<TwoWaySide>[] = [];
173-
let conflictBlocks: (AddedBlock<TwoWaySide> | RemovedBlock<TwoWaySide>)[] = [];
173+
let conflictBlocks: (RemovedBlock<TwoWaySide> | AddedBlock<TwoWaySide>)[] = [];
174174
for (const [index, block] of this.blocks.entries()) {
175-
if (block instanceof AddedBlock || block instanceof RemovedBlock) {
175+
if (block instanceof RemovedBlock || block instanceof AddedBlock) {
176176
conflictBlocks.push(block);
177177
}
178178

@@ -182,7 +182,7 @@ class TwoWayAssembler {
182182
blocks.push(conflictBlocks[0]);
183183
conflictBlocks = [];
184184
} else if (conflictBlocks.length > 1) {
185-
const sidesData: (AddedSideData<TwoWaySide> | RemovedSideData<TwoWaySide>)[] = [];
185+
const sidesData: (RemovedSideData<TwoWaySide> | AddedSideData<TwoWaySide>)[] = [];
186186
const lhs = TwoWaySide.lhs;
187187
const ctr = TwoWaySide.ctr;
188188
const rhs = TwoWaySide.rhs;

packages/core/src/tests/blocks.test.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import { assembleOneWay } from '$lib/internal/diff/one-way-assembler';
22
import { expect, test } from 'vitest';
33
import dedent from 'dedent';
44
import { assembleTwoWay } from '$lib/internal/diff/two-way-assembler';
5-
import { AddedBlock } from '$lib/internal/blocks/added';
6-
import { RemovedBlock } from '$lib/internal/blocks/removed';
75
import { UnchangedBlock } from '$lib/internal/blocks/unchanged';
86
import { ModifiedBlock } from '$lib/internal/blocks/modified';
7+
import { RemovedBlock } from '$lib/internal/blocks/removed';
8+
import { AddedBlock } from '$lib/internal/blocks/added';
99

1010
test('assemble-one-way unchanged', () => {
1111
const blocks = assembleOneWay(
@@ -32,7 +32,7 @@ test('assemble-one-way added', () => {
3232
);
3333

3434
expect(blocks).toHaveLength(2);
35-
expect(blocks.at(1)).toBeInstanceOf(AddedBlock);
35+
expect(blocks.at(1)).toBeInstanceOf(RemovedBlock);
3636
});
3737

3838
test('assemble-one-way removed', () => {
@@ -47,7 +47,7 @@ test('assemble-one-way removed', () => {
4747
);
4848

4949
expect(blocks).toHaveLength(2);
50-
expect(blocks.at(1)).toBeInstanceOf(RemovedBlock);
50+
expect(blocks.at(1)).toBeInstanceOf(AddedBlock);
5151
});
5252

5353
test('assemble-one-way added and removed', () => {
@@ -63,9 +63,9 @@ test('assemble-one-way added and removed', () => {
6363
);
6464

6565
expect(blocks).toHaveLength(3);
66-
expect(blocks.at(0)).toBeInstanceOf(AddedBlock);
66+
expect(blocks.at(0)).toBeInstanceOf(RemovedBlock);
6767
expect(blocks.at(1)).toBeInstanceOf(UnchangedBlock);
68-
expect(blocks.at(2)).toBeInstanceOf(RemovedBlock);
68+
expect(blocks.at(2)).toBeInstanceOf(AddedBlock);
6969
});
7070

7171
test('assemble-one-way modified', () => {
@@ -114,7 +114,7 @@ test('assemble-two-way removed', () => {
114114
);
115115

116116
expect(blocks).toHaveLength(2);
117-
expect(blocks.at(1)).toBeInstanceOf(RemovedBlock);
117+
expect(blocks.at(1)).toBeInstanceOf(AddedBlock);
118118
});
119119

120120
test('assemble-two-way added lhs', () => {
@@ -132,7 +132,7 @@ test('assemble-two-way added lhs', () => {
132132
);
133133

134134
expect(blocks).toHaveLength(2);
135-
expect(blocks.at(1)).toBeInstanceOf(AddedBlock);
135+
expect(blocks.at(1)).toBeInstanceOf(RemovedBlock);
136136
});
137137

138138
test('assemble-two-way added rhs', () => {
@@ -150,5 +150,5 @@ test('assemble-two-way added rhs', () => {
150150
);
151151

152152
expect(blocks).toHaveLength(2);
153-
expect(blocks.at(1)).toBeInstanceOf(AddedBlock);
153+
expect(blocks.at(1)).toBeInstanceOf(RemovedBlock);
154154
});

0 commit comments

Comments
 (0)