From 6c3d566f9498e40b7a0c6ebcf8a4e543cdadfbfa Mon Sep 17 00:00:00 2001 From: Vaibhav Singhal Date: Fri, 13 Sep 2024 16:29:29 +0530 Subject: [PATCH 1/2] Performance optimisations for handleSelectedRangesChanged --- packages/common/src/core/slickGrid.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) mode change 100644 => 100755 packages/common/src/core/slickGrid.ts diff --git a/packages/common/src/core/slickGrid.ts b/packages/common/src/core/slickGrid.ts old mode 100644 new mode 100755 index d387f4993..424653854 --- a/packages/common/src/core/slickGrid.ts +++ b/packages/common/src/core/slickGrid.ts @@ -2917,8 +2917,12 @@ export class SlickGrid = Column, O e if (this.simpleArrayEquals(previousSelectedRows, this.selectedRows)) { const caller = ne?.detail?.caller ?? 'click'; - const newSelectedAdditions = this.getSelectedRows().filter((i) => previousSelectedRows.indexOf(i) < 0); - const newSelectedDeletions = previousSelectedRows.filter((i) => this.getSelectedRows().indexOf(i) < 0); + // Use Set for faster performance + const selectedRowsSet = new Set(this.getSelectedRows()); + const previousSelectedRowsSet = new Set(previousSelectedRows); + + const newSelectedAdditions = [...selectedRowsSet].filter(i => !previousSelectedRowsSet.has(i)); + const newSelectedDeletions = [...previousSelectedRowsSet].filter(i => !selectedRowsSet.has(i)); this.triggerEvent(this.onSelectedRowsChanged, { rows: this.getSelectedRows(), From 19305b6b40867c1984f0087c7f6a0602fbfb69e3 Mon Sep 17 00:00:00 2001 From: Vaibhav Singhal Date: Sat, 14 Sep 2024 00:28:49 +0530 Subject: [PATCH 2/2] Performance optimisations for handleSelectedRangesChanged --- packages/common/src/core/slickGrid.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/common/src/core/slickGrid.ts b/packages/common/src/core/slickGrid.ts index 424653854..2d9a27eca 100755 --- a/packages/common/src/core/slickGrid.ts +++ b/packages/common/src/core/slickGrid.ts @@ -2921,8 +2921,8 @@ export class SlickGrid = Column, O e const selectedRowsSet = new Set(this.getSelectedRows()); const previousSelectedRowsSet = new Set(previousSelectedRows); - const newSelectedAdditions = [...selectedRowsSet].filter(i => !previousSelectedRowsSet.has(i)); - const newSelectedDeletions = [...previousSelectedRowsSet].filter(i => !selectedRowsSet.has(i)); + const newSelectedAdditions = Array.from(selectedRowsSet).filter(i => !previousSelectedRowsSet.has(i)); + const newSelectedDeletions = Array.from(previousSelectedRowsSet).filter(i => !selectedRowsSet.has(i)); this.triggerEvent(this.onSelectedRowsChanged, { rows: this.getSelectedRows(),