All files / src/react fromBaseClass.js

0% Statements 0/20
0% Branches 0/6
0% Functions 0/4
0% Lines 0/20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37                                                                         
const C = require( 'clausejs' );
 
function fromBaseClass( baseClass ) {
  class ClauseComponent extends baseClass {
    constructor() {
      super();
      const { propClauses } = this.constructor;
      if ( propClauses ) {
        const nullablePropClauses = C.or( propClauses, C.isUndefined, C.isNull );
 
        const currWillUpdateFn = this.componentWillUpdate;
        this.componentWillUpdate = ( nextShape ) => {
          C.enforce( nullablePropClauses, nextShape );
          if ( currWillUpdateFn ) {
            return currWillUpdateFn.apply( this, arguments );
          }
          return undefined;
        };
 
        const currWillMountFn = this.componentWillMount;
        this.componentWillMount = () => {
          C.enforce( nullablePropClauses, this.shape );
          if ( currWillMountFn ) {
            return currWillMountFn.apply( this, arguments );
          }
          return undefined;
        };
      }
    }
  }
 
  return ClauseComponent;
}
 
module.exports = fromBaseClass;
module.exports.default = fromBaseClass;