immutable data structures in tables 2/n: managed table

Summary:
Migrating tables' row collection to Immutable.js List:
1. Change native array to Immutable list in ManagedTable_immutable

-----
Current implementation of tables forces to copy arrays on new data arrival which causes O(N^2) complexity ->
tables can't handle a lot of new rows in short period of time -> tables freeze and become unresponsive for a few seconds.
Immutable data structures will bring us to O(N) complexity

Reviewed By: jknoxville

Differential Revision: D16416869

fbshipit-source-id: 6d5690d8f5f70286f31a423e319b2cb22deab8ff
This commit is contained in:
Timur Valiev
2019-07-23 07:57:00 -07:00
committed by Facebook Github Bot
parent af7830d94a
commit 6deaf2106f
3 changed files with 46 additions and 24 deletions

View File

@@ -30,6 +30,7 @@ export {default as Popover} from './components/Popover.js';
export type {
TableColumns,
TableRows,
TableRows_immutable,
TableBodyColumn,
TableBodyRow,
TableHighlightedRows,
@@ -40,6 +41,13 @@ export type {
} from './components/table/types.js';
export {default as ManagedTable} from './components/table/ManagedTable.js';
export type {ManagedTableProps} from './components/table/ManagedTable.js';
export {
default as ManagedTable_immutable,
} from './components/table/ManagedTable_immutable.js';
export type {
ManagedTableProps_immutable,
} from './components/table/ManagedTable_immutable.js';
export type {Value} from './components/table/TypeBasedValueRenderer.js';
export {renderValue} from './components/table/TypeBasedValueRenderer.js';