constructor(element, options = {}) {
    super();
    this.options = { ...Shuffle.options, ...options };

    this.lastSort = {};
    this.group = Shuffle.ALL_ITEMS;
    this.lastFilter = Shuffle.ALL_ITEMS;
    this.isEnabled = true;
    this.isDestroyed = false;
    this.isInitialized = false;
    this._transitions = [];
    this.isTransitioning = false;
    this._queue = [];

    const el = this._getElementOption(element);

    if (!el) {
      throw new TypeError('Shuffle needs to be initialized with an element.');
    }

    this.element = el;
    this.id = `shuffle_${id}`;
    id += 1;

    this._init();
    this.isInitialized = true;
  }
Categorize, sort, and filter a responsive grid of items.

@param {Element} element An element which is the parent container for the grid items.
@param {Object} [options=Shuffle.options] Options object.
@constructor