Skip to content

Commit

Permalink
fix(core): fix selecting multiple cells to move
Browse files Browse the repository at this point in the history
  • Loading branch information
sunshinesmilelk authored and BroKun committed Dec 18, 2024
1 parent 33f7e0c commit a4ab6ca
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 13 deletions.
2 changes: 1 addition & 1 deletion packages/libro-core/src/libro-model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -640,7 +640,7 @@ export class LibroModel implements NotebookModel, DndListModel {
//往上交换cell
if (startIndex === this.activeIndex) {
//active在头
this.activeIndex = targetIndex - source.length;
this.activeIndex = targetIndex;
} else {
//active在尾
this.activeIndex = targetIndex + 1;
Expand Down
27 changes: 15 additions & 12 deletions packages/libro-core/src/libro-view.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -742,13 +742,15 @@ export class LibroView extends BaseView implements NotebookView {
this.collapseCell(previousCell, false);
}
if (this.model.selections.length !== 0 && this.isSelected(cell)) {
for (const selectedCell of this.model.selections) {
const selectIndex = this.findCellIndex(selectedCell);
if (selectIndex === 0) {
return;
}
this.model.exchangeCells(this.model.selections, selectIndex - 1);
const startIndex = this.findCellIndex(this.model.selections[0]);
const endIndex = this.findCellIndex(
this.model.selections[this.model.selections.length - 1],
);
const index = Math.min(startIndex, endIndex);
if (startIndex === 0) {
return;
}
this.model.exchangeCells(this.model.selections, index - 1);
} else {
const sourceIndex = this.findCellIndex(cell);
if (sourceIndex > -1) {
Expand All @@ -764,13 +766,14 @@ export class LibroView extends BaseView implements NotebookView {
this.collapseCell(nextCell, false);
}
if (this.model.selections.length !== 0 && this.isSelected(cell)) {
for (let i = this.model.selections.length - 1; i > -1; i--) {
const selectIndex = this.findCellIndex(this.model.selections[i]);
if (selectIndex === this.model.cells.length - 1) {
return;
}
this.model.exchangeCells(this.model.selections, selectIndex + 1);
const startIndex = this.findCellIndex(this.model.selections[0]) + 1;
const endIndex =
this.findCellIndex(this.model.selections[this.model.selections.length - 1]) + 1;
const index = Math.max(startIndex, endIndex);
if (index === this.model.cells.length) {
return;
}
this.model.exchangeCells(this.model.selections, index + 1);
} else {
const sourceIndex = this.findCellIndex(cell);
if (sourceIndex > -1) {
Expand Down

0 comments on commit a4ab6ca

Please sign in to comment.