text: define([
  
    'jquery',
  
    'jquery-mousewheel',
  
  
  
    './select2/core',
  
    './select2/defaults'
  
  ], function ($, _, Select2, Defaults) {
  
    if ($.fn.select2 == null) {
  
      // All methods that should return the element
  
      var thisMethods = ['open', 'close', 'destroy'];
  
  
  
      $.fn.select2 = function (options) {
  
        options = options || {};
  
  
  
        if (typeof options === 'object') {
  
          this.each(function () {
  
            var instanceOptions = $.extend(true, {}, options);
  
  
  
            var instance = new Select2($(this), instanceOptions);
  
          });
  
  
  
          return this;
  
        } else if (typeof options === 'string') {
  
          var ret;
  
          var args = Array.prototype.slice.call(arguments, 1);
  
  
  
          this.each(function () {
  
            var instance = $(this).data('select2');
  
  
  
            if (instance == null && window.console && console.error) {
  
              console.error(
  
                'The select2(\'' + options + '\') method was called on an ' +
  
                'element that is not using Select2.'
  
              );
  
            }
  
  
  
            ret = instance[options].apply(instance, args);
  
          });
  
  
  
          // Check if we should be returning `this`
  
          if ($.inArray(options, thisMethods) > -1) {
  
            return this;
  
          }
  
  
  
          return ret;
  
        } else {
  
          throw new Error('Invalid arguments for Select2: ' + options);
  
        }
  
      };
  
    }
  
  
  
    if ($.fn.select2.defaults == null) {
  
      $.fn.select2.defaults = Defaults;
  
    }
  
  
  
    return Select2;
  
  });
  
  