Sha256: 1ce1599d22c957c43cef7ef4d432a9206cf11e1c6c4f0ff3ee1ab0d3ff71c0d7

Contents?: true

Size: 1.49 KB

Versions: 12

Compression:

Stored size: 1.49 KB

Contents

//= require ./mixins/mix_spec_into_component

/* This optional extension re-enables the React mixin system for plain JS
 * classes, e.g. ES6 classes, Backbone classes, ES3 module pattern classes
 * You require the extension like `//= require revelry/extensions/mixins` and
 * then you just use appComponent and revComponent like normal.
 * Internally, this works by wrapping the appComponent and revComponent methods
 * in a function closure which actually does the mixing in, since React punts.
 */
(function(Rev) {

  function mixinListForObject(object) {
    var mixinList = object.mixins || [];
    mixinList.push(Rev.Mixins.Core);
    return _.uniq(mixinList);
  }

  function forEachMixin(object, fn) {
    var mixin, i, l;
    var mixinList = mixinListForObject(object);
    l = mixinList.length;
    for(i = 0; i < l; i++) {
      mixin = mixinList[i];
      fn(mixin);
    }
  }

  function decorateComponentMethod(componentMethod) {
    return function(name, object) {
      var componentClass = (componentMethod.bind(Rev))(name, object);
      if(typeof object === 'function') {
        // ES6 class
        forEachMixin(object, function(mixin){
          Rev.__mixSpecIntoComponent(componentClass, mixin);
        });
      }
    }
  }

  Rev.appComponent = decorateComponentMethod(Rev.appComponent);
  Rev.registerComponent = decorateComponentMethod(Rev.registerComponent);

  Rev.appExample = decorateComponentMethod(Rev.appExample);
  Rev.registerExample = decorateComponentMethod(Rev.registerExample);

})(Rev);

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
revelry_core-0.1.24.0 app/assets/javascripts/revelry/extensions/mixins.js
revelry_core-0.1.23.0 app/assets/javascripts/revelry/extensions/mixins.js
revelry_core-0.1.22.0 app/assets/javascripts/revelry/extensions/mixins.js
revelry_core-0.1.21.0 app/assets/javascripts/revelry/extensions/mixins.js
revelry_core-0.1.20.0 app/assets/javascripts/revelry/extensions/mixins.js
revelry_core-0.1.19.0 app/assets/javascripts/revelry/extensions/mixins.js
revelry_core-0.1.18.0 app/assets/javascripts/revelry/extensions/mixins.js
revelry_core-0.1.17.0 app/assets/javascripts/revelry/extensions/mixins.js
revelry_core-0.1.16.0 app/assets/javascripts/revelry/extensions/mixins.js
revelry_core-0.1.15.0 app/assets/javascripts/revelry/extensions/mixins.js
revelry_core-0.1.14.0 app/assets/javascripts/revelry/extensions/mixins.js
revelry_core-0.1.13.0 app/assets/javascripts/revelry/extensions/mixins.js