diff --git a/README.md b/README.md
index 0b158e3f5..477e955c3 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
**fin-hypergrid** is an ultra-fast HTML5 grid presentation layer, achieving its speed by rendering (in a canvas tag) only the currently visible portion of your (virtual) grid, thus avoiding the latency and life-cycle issues of building, walking, and maintaining a complex DOM structure. Please be sure to checkout our [design overview](OVERVIEW.md)
Below is an example custom application built on top of the Hypergrid API tooling.
-It also highlights a DOM-based custom external editor triggered via hypergrid events as well as interaction with Hypergrid's column ordering API
+It also highlights a DOM-based custom external editor triggered via hypergrid events as well as interaction with Hypergrid’s column ordering API.
@@ -15,9 +15,9 @@ It also highlights a DOM-based custom external editor triggered via hypergrid ev
* [Roadmap](#roadmap)
* [Contributing](#contributors)
-### Current Release (3.0.3 - 25 September 2018)
+### Current Release (3.1.0 - 29 September 2018)
-**Hypergrid 3.0 includes a revised data model with some breaking changes.**
+**Hypergrid 3.1 includes 3.0’s revised data model with some breaking changes.**
_For a complete list of changes, see the [release notes](https://github.com/fin-hypergrid/core/releases)._
@@ -25,7 +25,7 @@ _For a complete list of changes, see the [release notes](https://github.com/fin-
#### npm module _(recommended)_
Published as a CommonJS module to npmjs.org.
-Specify a SEMVER of `"fin-hypergrid": "3.0.3"` (or `"^3.0.3"`) in your package.json file,
+Specify a SEMVER of `"fin-hypergrid": "3.1.0"` (or `"^3.1.0"`) in your package.json file,
issue the `npm install` command, and let your bundler (wepback,
Browserify) create a single file containing both Hypergrid and your application.
@@ -69,7 +69,7 @@ The [Perspective](https://github.com/jpmorganchase/perspective) open source proj
##### AdaptableBlotter.JS
-[Openfin](http://openfin.co)'s AdaptableBlotter.JS ([installer](https://install.openfin.co/download/?fileName=adaptable_blotter_openfin&config=http://beta.adaptableblotter.com/app-beta.json)) is a demo app that shows the capabilities of both Openfin and Hypergrid.
+[Openfin](http://openfin.co)’s AdaptableBlotter.JS ([installer](https://install.openfin.co/download/?fileName=adaptable_blotter_openfin&config=http://beta.adaptableblotter.com/app-beta.json)) is a demo app that shows the capabilities of both Openfin and Hypergrid.
![](images/README/partner-adaptableblotter_image-01@2x-667x375@2x.png)
diff --git a/package.json b/package.json
index 74b5037f2..0d8f059cf 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "fin-hypergrid",
- "version": "3.0.3",
+ "version": "3.1.0",
"description": "Canvas-based high-performance grid",
"main": "src/Hypergrid",
"repository": {
@@ -25,7 +25,7 @@
"datasaur-base": "^3.0.0",
"datasaur-local": "^3.0.0",
"extend-me": "^2.7.0",
- "finbars": "^1.6.0",
+ "finbars": "^2.0.0",
"inject-stylesheet-template": "^1.0.1",
"mustache": "^2.3.0",
"object-iterators": "1.3.0",
diff --git a/src/Hypergrid/index.js b/src/Hypergrid/index.js
index 5e19c3869..9b126b54e 100644
--- a/src/Hypergrid/index.js
+++ b/src/Hypergrid/index.js
@@ -34,31 +34,6 @@ var EDGE_STYLES = ['top', 'bottom', 'left', 'right'],
* @constructor
* @classdesc An object representing a Hypergrid.
* @desc The first parameter, `container`, is optional. If omitted, the `options` parameter is promoted to first position. (Note that the container can also be given in `options.container.`)
- * #### `options.canvasContextAttributes` object (see below)
- * The only currently meaningful property of this object is `alpha`:
- *
- * ```js
- * var gridOptions = {
- * canvasContextAttributes: { alpha: false }
- * };
- * var myGrid = new Hypergrid(gridOptions);
- * ```
- *
- * `alpha` is a boolean that indicates if the canvas contains an alpha channel. If set to `false`, the browser now knows that the backdrop is always opaque, which can speed up drawing of transparent content and images.
- *
- * This option was added by request although testing failed to show any measurable performance benefit.
- *
- * Use with caution. In particular, if the canvas is set to "opaque" (`{alpha: false}`), do _not_ also specify a transparent or translucent color for `grid.properties.backGround` because content may then be drawn with corrupt anti-aliasing (at lest in Chrome v67).
- *
- * Note that such an "opaque" canvas can still be made to appear translucent using the CSS `opacity` property — a different effect entirely.
- *
- * Although this option has no apparent performance gains (in Chrome v63), it does permit the graphics context to use [sub-pixel rendering](https://en.wikipedia.org/wiki/Subpixel_rendering) for sharper text as viewed on LCD or LED screens, especially black text on white backgrounds, and especially when viewed on a high-pixel-density display such as an [Apple retina display](https://en.wikipedia.org/wiki/Retina_Display).
- *
- * value | Canvas | Text | Sample
- * ----- | :----: | :--: | ------
- * `{ alpha: true } ` | transparent | regular
anti-aliasing | ![regular.png](https://cdn-pro.dprcdn.net/files/acc_645730/ZqurK3)
- * `{ alpha: false }` | opaque | sub-pixel
rendering | ![sub-pixel.png](https://cdn-std.dprcdn.net/files/acc_645730/bf3VXh)
- *
* @param {string|Element} [container] - CSS selector or Element. If omitted (and `options.container` also omitted), Hypergrid first looks for an _empty_ element with an ID of `hypergrid`. If not found, it will create a new element. In either case, the container element has the class name `hypergrid-container` added to its class name list. Finally, if the there is more than one such element with that class name, the element's ID attribute is set to `hypergrid` + _n_ where n is an ordinal one less than the number of such elements.
* @param {object} [options] - If `options.data` provided, passed to {@link Hypergrid#setData setData}; else if `options.Behavior` provided, passed to {@link Hypergrid#setBehavior setBehavior}.
* @param {function} [options.Behavior=Local] - _Per {@link Behavior#setData}._
@@ -73,8 +48,22 @@ var EDGE_STYLES = ['top', 'bottom', 'left', 'right'],
*
* @param {string|Element} [options.container] - Alternative to providing `container` (first) parameter above.
*
- * @param {object} [options.canvasContextAttributes] - Passed to [`HTMLCanvasElement.getContext`](https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/getContext). _Please see discussion above._
+ * @param {object} [options.contextAttributes={ alpha: true }] - Passed to [`HTMLCanvasElement.getContext`](https://developer.mozilla.org/docs/Web/API/HTMLCanvasElement/getContext). Although the MDN docs say setting this to `{alpha: false}` (opaque canvas) can "can speed up drawing of transparent content and images," our testing (with Chrome v63) failed to show any measurable performance gain.
+ *
+ * _An opaque canvas does have an important advantage, however!_ It permits the graphics context to use [sub-pixel rendering](https://en.wikipedia.org/wiki/Subpixel_rendering) for sharper text as viewed on LCD or LED screens, especially black text on white backgrounds, and especially when viewed on a high-pixel-density display such as an [Apple retina display](https://en.wikipedia.org/wiki/Retina_Display).
+ *
+ * Zoom in on the following samples images to see the difference in rendering.
+ *
+ * Value | Sample
+ * :---: | :----:
+ * `{ alpha: true }`
Transparent canvas,
renders text using
_regular anti-aliasing_ | ![regular.png](https://cdn-pro.dprcdn.net/files/acc_645730/ZqurK3)
+ * `{ alpha: false }`
Opaque canvas,
renders text using
_sub-pixel rendering_ | ![sub-pixel.png](https://cdn-std.dprcdn.net/files/acc_645730/bf3VXh).
+ *
+ * Use with caution, however. In particular, if the canvas is set to "opaque" (`{alpha: false}`), do _not_ also specify a transparent or translucent color for `grid.properties.backGround` because content may then be drawn with corrupt anti-aliasing (at lest as of Chrome v67).
+ *
+ * To clarify, the default setting (`{ alpha: true }`) is a transparent canvas, meaning that elements rendered underneath the `