define(function(require) {
  "use strict";

  var $ = require("jquery");

  /**
   * Allows for specified grouping of elements to be hidden and then revealed 
   * via an interactive "Show More" button.
   * 
   * @param {jQuery} $container The container element object that encloses the items to hide.
   * @param {jQuery} $content   A collection of objects to hide.
   * @param {string} category   Specify a category type for the content to provide more unique behavior.
   */
  var Revealer = function($container, $content, category) {
    this.$container = $container;
    this.$content   = $content;
    this.$button    = $("<button class=\"btn tertiary\">" + Drupal.t("Show More") + "</button>");
    this.category   = category;

    this.init();
  };


  Revealer.prototype.init = function () {
    this.detachContent();
    this.enableButton();
  };


  Revealer.prototype.detachContent = function () {
    if (this.category === "gallery") {
      this.$content = this.$content.slice(5);
    }

    this.$content.detach();
  };


  Revealer.prototype.reattachContent = function () {
    this.$container.append(this.$content);
  };


  Revealer.prototype.enableButton = function () {
    this.$button.insertAfter(this.$container);

    var _this = this;

    this.$button.on("click", function () {
      _this.reattachContent();
      _this.$button.remove();
    });
  };


  return Revealer;

});

@@ -728,17 +728,16 @@
 tegory;%0A
-%0A
     this
@@ -741,91 +741,160 @@
 his.
-init();%0A  %7D;%0A%0A%0A  Revealer.prototype.init = function () %7B%0A    this.detachContent()
+steps      = %7B%0A      // Array of step items to include with each button interaction.%0A      items: %5B%5D,%0A%0A      // Number of steps.%0A      count: 0%0A    %7D
 ;%0A
+%0A
     
@@ -898,28 +898,20 @@
    this.
-enableButton
+init
 ();%0A  %7D;
@@ -938,20 +938,11 @@
 ype.
-detachConten
+ini
 t = 
@@ -1009,49 +1009,253 @@
 his.
-$content = this.$
+prepGalleryItems();%0A    %7D%0A    else %7B%0A      this.steps.items.push(this.$content);%0A    %7D%0A%0A    this.steps.
 co
+u
 nt
-ent.slice(5);%0A    %7D%0A
+ = this.steps.items.length;%0A%0A    this.detachContent();%0A    this.enableButton();%0A  %7D;%0A%0A%0A  Revealer.prototype.detachContent = function () %7B
 %0A   
@@ -1327,32 +1327,39 @@
 ent = function (
+content
 ) %7B%0A    this.$co
@@ -1373,22 +1373,16 @@
 .append(
-this.$
 content)
@@ -1558,75 +1558,639 @@
 ) %7B%0A
-      _this.reattachContent();%0A      _this.$button.remove();%0A    %7D)
+%0A      if (_this.steps.count %3E 0) %7B%0A        _this.reattachContent(_this.steps.items.shift());%0A        _this.steps.count--;%0A      %7D%0A%0A      if (_this.steps.count === 0) %7B%0A        _this.$button.remove();%0A      %7D%0A%0A    %7D);%0A  %7D;%0A%0A%0A  Revealer.prototype.prepGalleryItems = function () %7B%0A    this.$content = this.$content.slice(5);%0A    var collection = $.makeArray(this.$content);%0A%0A    // Multiple step reveals.%0A    if (this.$content.length %3E 8) %7B%0A      while (collection.length %3E 0) %7B%0A        this.steps.items.push(collection.splice(0, 8));%0A      %7D%0A    %7D%0A    else %7B%0A      this.steps.items.push(collection);%0A    %7D%0A    %0A    collection = null
 ;%0A  

Update to allow stepwise show more functionality.