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 handles = effectiveOptions.initEventNames.map(function (name) {
              return on(target, name, function (event) {
                var launcher = eventMatches(event, "[".concat(effectiveOptions.attribInitTarget, "]"));

                if (launcher) {
                  event.delegateTarget = launcher; // eslint-disable-line no-param-reassign

                  var elements = _toConsumableArray(launcher.ownerDocument.querySelectorAll(launcher.getAttribute(effectiveOptions.attribInitTarget)));

                  if (elements.length > 1) {
                    throw new Error('Target widget must be unique.');
                  }

                  if (elements.length === 1) {
                    if (launcher.tagName === 'A') {
                      event.preventDefault();
                    }

                    var component = _this.create(elements[0], options);

                    if (typeof component.createdByLauncher === 'function') {
                      component.createdByLauncher(event);
                    }
                  }
                }
              });
            });
            return {
              release: function release() {
                for (var handle = handles.pop(); handle; handle = handles.pop()) {
                  handle.release();
                }
              }
            };
          }

          return '';
        }
/**
         * 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 launcher buttons
         * (buttons with attribute that `options.attribInitTarget` points to) of 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.
         * @param {string} [options.attribInitTarget] The attribute name in the launcher buttons to find target component.
         * @returns {Handle} The handle to remove the event listener to handle clicking.
         */
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 launcher buttons
(buttons with attribute that `options.attribInitTarget` points to) of 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.
@param {string} [options.attribInitTarget] The attribute name in the launcher buttons to find target component.
@returns {Handle} The handle to remove the event listener to handle clicking.
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 launcher buttons ( buttons with attribute that ` options . attribInitTarget ` points to ) of 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 . @param { string } [ options . attribInitTarget ] The attribute name in the launcher buttons to find target component . @returns { Handle } The handle to remove the event listener to handle clicking .
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 handles = effectiveOptions.initEventNames.map(function (name) {
              return on(target, name, function (event) {
                var launcher = eventMatches(event, "[".concat(effectiveOptions.attribInitTarget, "]"));
                if (launcher) {
                  event.delegateTarget = launcher; 
                  var elements = _toConsumableArray(launcher.ownerDocument.querySelectorAll(launcher.getAttribute(effectiveOptions.attribInitTarget)));
                  if (elements.length > 1) {
                    throw new Error('Target widget must be unique.');
                  }
                  if (elements.length === 1) {
                    if (launcher.tagName === 'A') {
                      event.preventDefault();
                    }
                    var component = _this.create(elements[0], options);
                    if (typeof component.createdByLauncher === 'function') {
                      component.createdByLauncher(event);
                    }
                  }
                }
              });
            });
            return {
              release: function release() {
                for (var handle = handles.pop(); handle; handle = handles.pop()) {
                  handle.release();
                }
              }
            };
          }
          return '';
        }
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 handles = effectiveOptions . initEventNames . map ( function ( name ) { return on ( target , name , function ( event ) { var launcher = eventMatches ( event , "[" . concat ( effectiveOptions . attribInitTarget , "]" ) ) ; if ( launcher ) { event . delegateTarget = launcher ; var elements = _toConsumableArray ( launcher . ownerDocument . querySelectorAll ( launcher . getAttribute ( effectiveOptions . attribInitTarget ) ) ) ; if ( elements . length > 1 ) { throw new Error ( 'Target widget must be unique.' ) ; } if ( elements . length === 1 ) { if ( launcher . tagName === 'A' ) { event . preventDefault ( ) ; } var component = _this . create ( elements [ 0 ] , options ) ; if ( typeof component . createdByLauncher === 'function' ) { component . createdByLauncher ( event ) ; } } } } ) ; } ) ; return { release : function release ( ) { for ( var handle = handles . pop ( ) ; handle ; handle = handles . pop ( ) ) { handle . release ( ) ; } } } ; } return '' ; }
Instantiates this component in the given element.
Instantiates this component in the given element .
// eslint-disable-line no-param-reassign