_setColumns(containerWidth = Shuffle.getSize(this.element).width) {
    const gutter = this._getGutterSize(containerWidth);
    const columnWidth = this._getColumnSize(containerWidth, gutter);
    let calculatedColumns = (containerWidth + gutter) / columnWidth;

    // Widths given from getStyles are not precise enough...
    if (Math.abs(Math.round(calculatedColumns) - calculatedColumns) < this.options.columnThreshold) {
      // e.g. calculatedColumns = 11.998876
      calculatedColumns = Math.round(calculatedColumns);
    }

    this.cols = Math.max(Math.floor(calculatedColumns || 0), 1);
    this.containerWidth = containerWidth;
    this.colWidth = columnWidth;
  }
Calculate the number of columns to be used. Gets css if using sizer element.
@param {number} [containerWidth] Optionally specify a container width if
   it's already available.