diff --git a/.flowconfig b/.flowconfig
new file mode 100644
index 000000000..4a58bdcde
--- /dev/null
+++ b/.flowconfig
@@ -0,0 +1,7 @@
+[ignore]
+
+[include]
+
+[libs]
+
+[options]
diff --git a/README.md b/README.md
index 687d63b7f..5ccc23958 100644
--- a/README.md
+++ b/README.md
@@ -95,17 +95,21 @@ ES6, CommonJS, and UMD builds are available with each distribution.
For example:
```js
-// If you're using the Table component you'll need to include the default styles.
+// Most of react-virtualized's styles are functional (eg position, size).
+// Functional styles are applied directly to DOM elements.
+// The Table component ships with a few presentational styles as well.
+// They are optional, but if you want them you will need to also import the CSS file.
// This only needs to be done once; probably during your application's bootstrapping process.
-// Grid and List base styles are purely functional and so they're all inline.
import 'react-virtualized/styles.css'
-// Then you can import any react-virtualized components you need.
-// Tree-shaking is supported with ES6 modules (`jsnext:main` package target).
-import { Table } from 'react-virtualized'
+// You can import any component you want as a named export from 'react-virtualized', eg
+import { Column, Table } from 'react-virtualized'
+
+// Or for better tree-shaking support you can use deep imports, eg
+import { List } from 'react-virtualized/dist/commonjs/List'
```
-Alternately you can load a global-friendly UMD build:
+You can also use a global-friendly UMD build:
```html
@@ -121,7 +125,6 @@ Dependencies
React Virtualized has very few dependencies and most are managed by NPM automatically.
However the following peer dependencies must be specified by your project in order to avoid version conflicts:
[`react`](https://www.npmjs.com/package/react),
-[`react-addons-shallow-compare`](https://www.npmjs.com/package/react-addons-shallow-compare), and
[`react-dom`](https://www.npmjs.com/package/react-dom).
NPM will not automatically install these for you but it will show you a warning message with instructions on how to install them.
@@ -164,7 +167,8 @@ There are also a couple of how-to guides:
* [Displaying items in reverse order](docs/reverseList.md)
* [Using AutoSizer](docs/usingAutoSizer.md)
* [Creating an infinite-loading list](docs/creatingAnInfiniteLoadingList.md)
-* [Displaying a reverse list](docs/reverseList.md)
+* [Natural sort Table](docs/tableWithNaturalSort.md)
+
Examples
---------------
diff --git a/docs/CellMeasurer.md b/docs/CellMeasurer.md
index 86b7f606f..1c3bc7abd 100644
--- a/docs/CellMeasurer.md
+++ b/docs/CellMeasurer.md
@@ -3,222 +3,144 @@ CellMeasurer
High-order component that automatically measures a cell's contents by temporarily rendering it in a way that is not visible to the user.
Specify a fixed width to measure dynamic height (or vice versa).
-
This is an advanced component and has some limitations and performance considerations.
[See below for more information](#limitations-and-performance-considerations).
-`CellMeasurer` is intended for use with `Grid` components but [can be adapted to work with `List` as well](#using-cellmeasurer-with-list).
+`CellMeasurer` can be used with `Grid`, `List`, and `Table` components. It is not intended to be used with the `Collection` component.
### Prop Types
| Property | Type | Required? | Description |
|:---|:---|:---:|:---|
-| cellRenderer | Function | ✓ | Renders a cell given its indices. `({ columnIndex: number, rowIndex: number, index: number }): PropTypes.node`.
**NOTE**: `index` is just an alias to `rowIndex` |
-| cellSizeCache | Object | | Optional, custom caching strategy for cell sizes. Learn more [here](#cellsizecache). |
-| children | Function | ✓ | Function responsible for rendering a virtualized component; `({ getColumnWidth: Function, getRowHeight: Function, resetMeasurements: Function }) => PropTypes.element` |
-| columnCount | number | ✓ | Number of columns in the `Grid`; in order to measure a row's height, all of that row's columns must be rendered. |
-| container | | | A Node, Component instance, or function that returns either. If this property is not specified the document body will be used. |
-| height | number | | Fixed height; specify this property to measure cell-width only. |
-| rowCount | number | ✓ | Number of rows in the `Grid`; in order to measure a column's width, all of that column's rows must be rendered. |
-| width | number | | Fixed width; specify this property to measure cell-height only. |
-
-### Children function
-
-The child function is passed the following named parameters:
-
-| Parameter | Type | Description |
-|:---|:---|:---|
-| getColumnWidth | Function | Callback to set as the `columnWidth` property of a `Grid` |
-| getRowHeight | Function | Callback to set as the `rowHeight` property of a `Grid` |
-| resetMeasurementForColumn(index) | Function | Use this function to clear cached measurements for specific column in `CellRenderer`; its size will be remeasured the next time it is requested. |
-| resetMeasurementForRow(index) | Function | Use this function to clear cached measurements for specific row in `CellRenderer`; its size will be remeasured the next time it is requested. |
-| resetMeasurements | Function | Use this function to clear cached measurements in `CellRenderer`; each cell will be remeasured the next time its size is requested. |
-
-### CellSizeCache
-
-If you choose to override the `cellSizeCache` property your cache should support the following operations:
-
-```js
-class CellSizeCache {
- clearAllColumnWidths (): void;
- clearAllRowHeights (): void;
- clearColumnWidth (index: number): void;
- clearRowHeight (index: number): void;
- getColumnWidth (index: number): number | undefined | null;
- getRowHeight (index: number): number | undefined | null;
- setColumnWidth (index: number, width: number): void;
- setRowHeight (index: number, height: number): void;
-}
-```
+| cache | `CellMeasurerCache` | ✓ | Cache to be shared between `CellMeasurer` and its parent `Grid`. Learn more [here](#cellmeasurercache). |
+| children | Element or Function | ✓ | Either a React element as a child (eg `