function initComponentByEvent (ToMix) {
    /**
     * Mix-in class to instantiate components upon events.
     * @class InitComponentByEvent
     */
    var InitComponentByEvent =
    /*#__PURE__*/
    function (_ToMix) {
      _inherits(InitComponentByEvent, _ToMix);

      function InitComponentByEvent() {
        _classCallCheck(this, InitComponentByEvent);

        return _possibleConstructorReturn(this, _getPrototypeOf(InitComponentByEvent).apply(this, arguments));
      }

      _createClass(InitComponentByEvent, null, [{
        key: "init",

        /**
         * `true` suggests that this component is lazily initialized upon an action/event, etc.
         * @type {boolean}
         */

        /**
         * Instantiates this component in the given element.
         * If the given element indicates that it's an component of this class, instantiates it.
         * Otherwise, instantiates this component by clicking on this component in the given node.
         * @param {Node} target The DOM node to instantiate this component in. Should be a document or an element.
         * @param {Object} [options] The component options.
         * @param {string} [options.selectorInit] The CSS selector to find this component.
         * @returns {Handle} The handle to remove the event listener to handle clicking.
         */
        value: function init() {
          var _this = this;

          var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;
          var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
          var effectiveOptions = Object.assign(Object.create(this.options), options);

          if (!target || target.nodeType !== Node.ELEMENT_NODE && target.nodeType !== Node.DOCUMENT_NODE) {
            throw new TypeError('DOM document or DOM element should be given to search for and initialize this widget.');
          }

          if (target.nodeType === Node.ELEMENT_NODE && target.matches(effectiveOptions.selectorInit)) {
            this.create(target, options);
          } else {
            // To work around non-bubbling `focus` event, use `focusin` event instead of it's available, and "capture mode" otherwise
            var hasFocusin = 'onfocusin' in (target.nodeType === Node.ELEMENT_NODE ? target.ownerDocument : target).defaultView;
            var handles = effectiveOptions.initEventNames.map(function (name) {
              var eventName = name === 'focus' && hasFocusin ? 'focusin' : name;
              return on(target, eventName, function (event) {
                var element = eventMatches(event, effectiveOptions.selectorInit); // Instantiated components handles events by themselves

                if (element && !_this.components.has(element)) {
                  var component = _this.create(element, options);

                  if (typeof component.createdByEvent === 'function') {
                    component.createdByEvent(event);
                  }
                }
              }, name === 'focus' && !hasFocusin);
            });
            return {
              release: function release() {
                for (var handle = handles.pop(); handle; handle = handles.pop()) {
                  handle.release();
                }
              }
            };
          }

          return '';
        }
      }]);

      return InitComponentByEvent;
    }(ToMix);

    _defineProperty(InitComponentByEvent, "forLazyInit",
    /* #__PURE_CLASS_PROPERTY__ */
    true);

    return InitComponentByEvent;
  }
/**
   * Copyright 2014-2015, Facebook, Inc.
   * All rights reserved.
   *
   * This source code is licensed under the BSD-style license found in the
   * LICENSE file in the root directory of this source tree. An additional grant
   * of patent rights can be found in the PATENTS file in the same directory.
   */


This source code is licensed under the BSD-style license found in the
LICENSE file in the root directory of this source tree. An additional grant
of patent rights can be found in the PATENTS file in the same directory.
This source code is licensed under the BSD - style license found in the LICENSE file in the root directory of this source tree . An additional grant of patent rights can be found in the PATENTS file in the same directory .
function initComponentByEvent (ToMix) {
    var InitComponentByEvent =
    function (_ToMix) {
      _inherits(InitComponentByEvent, _ToMix);
      function InitComponentByEvent() {
        _classCallCheck(this, InitComponentByEvent);
        return _possibleConstructorReturn(this, _getPrototypeOf(InitComponentByEvent).apply(this, arguments));
      }
      _createClass(InitComponentByEvent, null, [{
        key: "init",
        value: function init() {
          var _this = this;
          var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;
          var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
          var effectiveOptions = Object.assign(Object.create(this.options), options);
          if (!target || target.nodeType !== Node.ELEMENT_NODE && target.nodeType !== Node.DOCUMENT_NODE) {
            throw new TypeError('DOM document or DOM element should be given to search for and initialize this widget.');
          }
          if (target.nodeType === Node.ELEMENT_NODE && target.matches(effectiveOptions.selectorInit)) {
            this.create(target, options);
          } else {
            var hasFocusin = 'onfocusin' in (target.nodeType === Node.ELEMENT_NODE ? target.ownerDocument : target).defaultView;
            var handles = effectiveOptions.initEventNames.map(function (name) {
              var eventName = name === 'focus' && hasFocusin ? 'focusin' : name;
              return on(target, eventName, function (event) {
                var element = eventMatches(event, effectiveOptions.selectorInit); 
                if (element && !_this.components.has(element)) {
                  var component = _this.create(element, options);
                  if (typeof component.createdByEvent === 'function') {
                    component.createdByEvent(event);
                  }
                }
              }, name === 'focus' && !hasFocusin);
            });
            return {
              release: function release() {
                for (var handle = handles.pop(); handle; handle = handles.pop()) {
                  handle.release();
                }
              }
            };
          }
          return '';
        }
      }]);
      return InitComponentByEvent;
    }(ToMix);
    _defineProperty(InitComponentByEvent, "forLazyInit",
    true);
    return InitComponentByEvent;
  }
function initComponentByEvent ( ToMix ) { var InitComponentByEvent = function ( _ToMix ) { _inherits ( InitComponentByEvent , _ToMix ) ; function InitComponentByEvent ( ) { _classCallCheck ( this , InitComponentByEvent ) ; return _possibleConstructorReturn ( this , _getPrototypeOf ( InitComponentByEvent ) . apply ( this , arguments ) ) ; } _createClass ( InitComponentByEvent , null , [ { key : "init" , value : function init ( ) { var _this = this ; var target = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : document ; var options = arguments . length > 1 && arguments [ 1 ] !== undefined ? arguments [ 1 ] : { } ; var effectiveOptions = Object . assign ( Object . create ( this . options ) , options ) ; if ( ! target || target . nodeType !== Node . ELEMENT_NODE && target . nodeType !== Node . DOCUMENT_NODE ) { throw new TypeError ( 'DOM document or DOM element should be given to search for and initialize this widget.' ) ; } if ( target . nodeType === Node . ELEMENT_NODE && target . matches ( effectiveOptions . selectorInit ) ) { this . create ( target , options ) ; } else { var hasFocusin = 'onfocusin' in ( target . nodeType === Node . ELEMENT_NODE ? target . ownerDocument : target ) . defaultView ; var handles = effectiveOptions . initEventNames . map ( function ( name ) { var eventName = name === 'focus' && hasFocusin ? 'focusin' : name ; return on ( target , eventName , function ( event ) { var element = eventMatches ( event , effectiveOptions . selectorInit ) ; if ( element && ! _this . components . has ( element ) ) { var component = _this . create ( element , options ) ; if ( typeof component . createdByEvent === 'function' ) { component . createdByEvent ( event ) ; } } } , name === 'focus' && ! hasFocusin ) ; } ) ; return { release : function release ( ) { for ( var handle = handles . pop ( ) ; handle ; handle = handles . pop ( ) ) { handle . release ( ) ; } } } ; } return '' ; } } ] ) ; return InitComponentByEvent ; } ( ToMix ) ; _defineProperty ( InitComponentByEvent , "forLazyInit" , true ) ; return InitComponentByEvent ; }
Copyright 2014-2015, Facebook, Inc.
 All rights reserved.
Copyright 2014 - 2015 Facebook Inc . All rights reserved .
/**
     * Mix-in class to instantiate components upon events.
     * @class InitComponentByEvent
     */ /*#__PURE__*/ /**
         * `true` suggests that this component is lazily initialized upon an action/event, etc.
         * @type {boolean}
         */ /**
         * Instantiates this component in the given element.
         * If the given element indicates that it's an component of this class, instantiates it.
         * Otherwise, instantiates this component by clicking on this component in the given node.
         * @param {Node} target The DOM node to instantiate this component in. Should be a document or an element.
         * @param {Object} [options] The component options.
         * @param {string} [options.selectorInit] The CSS selector to find this component.
         * @returns {Handle} The handle to remove the event listener to handle clicking.
         */ // To work around non-bubbling `focus` event, use `focusin` event instead of it's available, and "capture mode" otherwise // Instantiated components handles events by themselves /* #__PURE_CLASS_PROPERTY__ */