code: function componentMixin(tag$$1) {
        var mixins = [], len = arguments.length - 1;
        while ( len-- > 0 ) mixins[ len ] = arguments[ len + 1 ];
  
        each(mixins, function (mix) {
          var instance;
          var obj;
          var props = [];
  
          // properties blacklisted and will not be bound to the tag instance
          var propsBlacklist = ['init', '__proto__'];
  
          mix = isString(mix) ? mixin(mix) : mix;
  
          // check if the mixin is a function
          if (isFunction$1(mix)) {
            // create the new mixin instance
            instance = new mix();
          } else { instance = mix; }
  
          var proto = Object.getPrototypeOf(instance);
  
          // build multilevel prototype inheritance chain property list
          do { props = props.concat(Object.getOwnPropertyNames(obj || instance)); }
          while (obj = Object.getPrototypeOf(obj || instance))
  
          // loop the keys in the function prototype or the all object keys
          each(props, function (key) {
            // bind methods to tag
            // allow mixins to override other properties/parent mixins
            if (!contains(propsBlacklist, key)) {
              // check for getters/setters
              var descriptor = getPropDescriptor(instance, key) || getPropDescriptor(proto, key);
              var hasGetterSetter = descriptor && (descriptor.get || descriptor.set);
  
              // apply method only if it does not already exist on the instance
              if (!tag$$1.hasOwnProperty(key) && hasGetterSetter) {
                Object.defineProperty(tag$$1, key, descriptor);
              } else {
                tag$$1[key] = isFunction$1(instance[key]) ?
                  instance[key].bind(tag$$1) :
                  instance[key];
              }
            }
          });
  
          // init method will be called automatically
          if (instance.init)
            { instance.init.bind(tag$$1)(tag$$1.opts); }
        });
  
        return tag$$1
      }
docs: Add a mixin to this tag
  @returns { Tag } the current tag instance