/**
 * event-hub.js v4.0.0
 * author: Yoshiya Hinosawa ( https://github.com/kt3k )
 * license: MIT
 */


(function ($) {
    'use strict';

    /**
     */
    function EventHub(elem) {

        this.elem = elem;

        this.bindEvents();

    };

    var pt = EventHub.prototype;

    /**
     * Gets channels.
     *
     * @return {Array}
     */
    pt.channels = function () {

        var channels = this.elem.attr('channels') || this.elem.attr('channel');

        if (!channels) {

            return [];

        }

        return channels.replace(/^\s*|\s*$/g, '').split(/\s+/);

    };


    /**
     * Binds events.
     */
    pt.bindEvents = function () {

        this.channels().forEach(this.bindEventsForChannel, this);

    };


    /**
     * Binds to the given event (channel).
     *
     * The handler publish the event to the subscribers.
     *
     * @private
     */
    pt.bindEventsForChannel = function (channel) {

        var elem = this.elem;

        elem.on(channel, function (e) {

            var extraArgs = Array.prototype.slice.call(arguments, 1);

            elem.find('.sub-' + channel).each(function () {

                // if the original target is the same as subscriber
                // then don't trigger it again
                if (this !== e.target) {

                    $(this).triggerHandler(e, extraArgs);

                }

            });

        });

    };

    $.cc.assign('event-hub', EventHub);


}(jQuery));

@@ -151,31 +151,202 @@
    *
-/%0A    function EventHub
+ EventHub is a coelement which forms event-hub class-component.%0A     *%0A     * see README for details.%0A     */%0A    var EventHub = $.cc.subclass(function (pt) %7B%0A%0A        pt.constructor = function 
 (ele
@@ -347,24 +347,28 @@
 n (elem) %7B%0A%0A
+    
         this
@@ -386,24 +386,28 @@
 m;%0A%0A        
+    
 this.bindEve
@@ -418,24 +418,28 @@
 );%0A%0A    
+ 
+   
 %7D;%0A%0A    
 var pt =
@@ -434,38 +434,8 @@
     
-var pt = EventHub.prototype;%0A%0A
     
@@ -443,16 +443,20 @@
 **%0A     
+   
+ 
 * Gets c
@@ -469,23 +469,31 @@
 s.%0A     
+    
 *%0A     
+ 
+   
 * @retur
@@ -503,27 +503,35 @@
 Array%7D%0A     
+   
+ 
 */%0A
+    
     pt.chann
@@ -543,32 +543,36 @@
  function () %7B%0A%0A
+    
         var chan
@@ -640,24 +640,28 @@
 );%0A%0A        
+   
+ 
 if (!channel
@@ -674,24 +674,28 @@
             
+    
 return %5B%5D;%0A%0A
@@ -702,27 +702,34 @@
         
+ 
-%7D%0A%0A
+   %7D%0A%0A   
         
 return c
@@ -716,24 +716,25 @@
 %0A           
+ 
 return chann
@@ -774,24 +774,28 @@
 it(/%5Cs+/);%0A%0A
+    
     %7D;%0A%0A%0A   
@@ -787,32 +787,36 @@
        %7D;%0A%0A%0A    
+  
+  
 /**%0A     * Binds
@@ -800,32 +800,36 @@
        /**%0A     
+   
+ 
 * Binds events.%0A
@@ -829,27 +829,35 @@
 vents.%0A     
-*/%0A
+    */%0A    
     pt.bindE
@@ -883,24 +883,28 @@
  %7B%0A%0A        
+  
+  
 this.channel
@@ -946,24 +946,28 @@
 el, this);%0A%0A
+    
     %7D;%0A%0A%0A   
@@ -963,24 +963,28 @@
    %7D;%0A%0A%0A    
+ 
+   
 /**%0A     * B
@@ -976,24 +976,28 @@
    /**%0A     
+  
+  
 * Binds to t
@@ -1023,26 +1023,34 @@
 nnel).%0A     
-*%0A
+    *%0A    
      * The h
@@ -1095,26 +1095,34 @@
 ibers.%0A     
+  
-*%0A
+  *%0A    
      * @priv
@@ -1130,23 +1130,31 @@
 te%0A     
+    
 */%0A    
+  
+  
 pt.bindE
@@ -1189,24 +1189,28 @@
 channel) %7B%0A%0A
+    
         var 
@@ -1232,24 +1232,28 @@
 m;%0A%0A        
+    
 elem.on(chan
@@ -1281,24 +1281,28 @@
             
+  
+  
 var extraArg
@@ -1344,24 +1344,28 @@
 ments, 1);%0A%0A
+    
             
@@ -1429,16 +1429,20 @@
         
+    
 // if th
@@ -1501,16 +1501,20 @@
         
+  
+  
 // then 
@@ -1536,16 +1536,20 @@
 t again%0A
+    
         
@@ -1602,16 +1602,20 @@
         
+    
 $(this).
@@ -1653,35 +1653,43 @@
                 
+  
+  
 %7D%0A%0A
+    
             %7D);%0A
@@ -1689,32 +1689,36 @@
    %7D);%0A%0A        
+    
 %7D);%0A%0A    %7D;%0A%0A   
@@ -1706,25 +1706,38 @@
    %7D);%0A%0A    
+  
-%7D
+  %7D;%0A%0A    %7D)
 ;%0A%0A    $.cc.

Refactor using $.cc.subclass