code: function Wookmark(container, options) {
      options = options || {};
  
      if (typeof container === 'string') {
        container = document.querySelector(container);
      }
  
      // Instance variables.
      this.container = container;
      this.columns = this.resizeTimer = null;
      this.activeItemCount = 0;
      this.placeholders = [];
      this.itemHeightsInitialized = false;
      this.itemHeightsDirty = false;
      this.elementTag = 'div';
  
      // Bind instance methods
      this.initItems = __bind(this.initItems, this);
      this.updateOptions = __bind(this.updateOptions, this);
      this.onResize = __bind(this.onResize, this);
      this.onRefresh = __bind(this.onRefresh, this);
      this.getItemWidth = __bind(this.getItemWidth, this);
      this.layout = __bind(this.layout, this);
      this.layoutFull = __bind(this.layoutFull, this);
      this.layoutColumns = __bind(this.layoutColumns, this);
      this.filter = __bind(this.filter, this);
      this.clear = __bind(this.clear, this);
      this.getActiveItems = __bind(this.getActiveItems, this);
      this.refreshPlaceholders = __bind(this.refreshPlaceholders, this);
      this.sortElements = __bind(this.sortElements, this);
      this.updateFilterClasses = __bind(this.updateFilterClasses, this);
  
      // Initialize children of the container
      this.initItems();
  
      // Initial update and layout
      this.container.style.display = 'block';
      this.updateOptions(options);
  
      // Collect filter classes after items have been initialized
      this.updateFilterClasses();
  
      // Listen to resize event of the browser if enabled
      if (this.autoResize) {
        addEventListener(window, 'resize', this.onResize);
      }
  
      // Listen to external refresh event
      addEventListener(this.container, 'refreshWookmark', this.onRefresh);
    }
docs: Main wookmark plugin class --------------------------