bootstrap.js 98.2 KB
Newer Older
XhmikosR's avatar
XhmikosR committed
3001

3002
          this.setContent();
XhmikosR's avatar
XhmikosR committed
3003

3004
3005
3006
          if (this.config.animation) {
            $(tip).addClass(ClassName.FADE);
          }
XhmikosR's avatar
XhmikosR committed
3007

3008
          var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
XhmikosR's avatar
XhmikosR committed
3009

3010
          var attachment = this._getAttachment(placement);
Mark Otto's avatar
Mark Otto committed
3011

3012
          $(tip).data(this.constructor.DATA_KEY, this).appendTo(document.body);
Mark Otto's avatar
Mark Otto committed
3013

3014
          $(this.element).trigger(this.constructor.Event.INSERTED);
Mark Otto's avatar
Mark Otto committed
3015

3016
          this._tether = new Tether({
Mark Otto's avatar
Mark Otto committed
3017
            attachment: attachment,
3018
3019
3020
3021
3022
            element: tip,
            target: this.element,
            classes: TetherClass,
            classPrefix: CLASS_PREFIX,
            offset: this.config.offset,
3023
3024
            constraints: this.config.constraints,
            addTargetClasses: false
3025
          });
Mark Otto's avatar
Mark Otto committed
3026

3027
3028
          Util.reflow(tip);
          this._tether.position();
Mark Otto's avatar
Mark Otto committed
3029

3030
          $(tip).addClass(ClassName.IN);
Mark Otto's avatar
Mark Otto committed
3031

3032
3033
3034
          var complete = function complete() {
            var prevHoverState = _this16._hoverState;
            _this16._hoverState = null;
Mark Otto's avatar
Mark Otto committed
3035

3036
            $(_this16.element).trigger(_this16.constructor.Event.SHOWN);
Mark Otto's avatar
Mark Otto committed
3037

3038
3039
3040
3041
            if (prevHoverState === HoverState.OUT) {
              _this16._leave(null, _this16);
            }
          };
XhmikosR's avatar
XhmikosR committed
3042

Mark Otto's avatar
Mark Otto committed
3043
3044
3045
3046
3047
3048
          if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) {
            $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION);
            return;
          }

          complete();
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
        }
      }
    }, {
      key: 'hide',
      value: function hide(callback) {
        var _this17 = this;

        var tip = this.getTipElement();
        var hideEvent = $.Event(this.constructor.Event.HIDE);
        var complete = function complete() {
          if (_this17._hoverState !== HoverState.IN && tip.parentNode) {
            tip.parentNode.removeChild(tip);
          }
Mark Otto's avatar
Mark Otto committed
3062

3063
3064
3065
          _this17.element.removeAttribute('aria-describedby');
          $(_this17.element).trigger(_this17.constructor.Event.HIDDEN);
          _this17.cleanupTether();
XhmikosR's avatar
XhmikosR committed
3066

3067
3068
3069
3070
          if (callback) {
            callback();
          }
        };
XhmikosR's avatar
XhmikosR committed
3071

3072
        $(this.element).trigger(hideEvent);
XhmikosR's avatar
XhmikosR committed
3073

3074
3075
3076
        if (hideEvent.isDefaultPrevented()) {
          return;
        }
XhmikosR's avatar
XhmikosR committed
3077

3078
        $(tip).removeClass(ClassName.IN);
XhmikosR's avatar
XhmikosR committed
3079

3080
        if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) {
Mark Otto's avatar
Mark Otto committed
3081

3082
3083
3084
3085
          $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
        } else {
          complete();
        }
Mark Otto's avatar
Mark Otto committed
3086

3087
3088
        this._hoverState = '';
      }
Mark Otto's avatar
Mark Otto committed
3089

3090
      // protected
Mark Otto's avatar
Mark Otto committed
3091

Jacob Thornton's avatar
Jacob Thornton committed
3092
3093
    }, {
      key: 'isWithContent',
3094
      value: function isWithContent() {
Mark Otto's avatar
Mark Otto committed
3095
        return Boolean(this.getTitle());
3096
3097
3098
3099
3100
3101
3102
3103
3104
      }
    }, {
      key: 'getTipElement',
      value: function getTipElement() {
        return this.tip = this.tip || $(this.config.template)[0];
      }
    }, {
      key: 'setContent',
      value: function setContent() {
XhmikosR's avatar
XhmikosR committed
3105
        var $tip = $(this.getTipElement());
Mark Otto's avatar
Mark Otto committed
3106

XhmikosR's avatar
XhmikosR committed
3107
        this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle());
Mark Otto's avatar
Mark Otto committed
3108

XhmikosR's avatar
XhmikosR committed
3109
        $tip.removeClass(ClassName.FADE).removeClass(ClassName.IN);
Mark Otto's avatar
Mark Otto committed
3110

3111
3112
        this.cleanupTether();
      }
XhmikosR's avatar
XhmikosR committed
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
    }, {
      key: 'setElementContent',
      value: function setElementContent($element, content) {
        var html = this.config.html;
        if (typeof content === 'object' && (content.nodeType || content.jquery)) {
          // content is a DOM node or a jQuery
          if (html) {
            if (!$(content).parent().is($element)) {
              $element.empty().append(content);
            }
          } else {
            $element.text($(content).text());
          }
        } else {
          $element[html ? 'html' : 'text'](content);
        }
      }
3130
3131
3132
3133
    }, {
      key: 'getTitle',
      value: function getTitle() {
        var title = this.element.getAttribute('data-original-title');
XhmikosR's avatar
XhmikosR committed
3134

3135
3136
3137
        if (!title) {
          title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
        }
Mark Otto's avatar
Mark Otto committed
3138

3139
3140
3141
3142
3143
3144
3145
3146
3147
        return title;
      }
    }, {
      key: 'cleanupTether',
      value: function cleanupTether() {
        if (this._tether) {
          this._tether.destroy();
        }
      }
XhmikosR's avatar
XhmikosR committed
3148

3149
      // private
XhmikosR's avatar
XhmikosR committed
3150

Jacob Thornton's avatar
Jacob Thornton committed
3151
3152
    }, {
      key: '_getAttachment',
3153
3154
3155
3156
3157
3158
3159
      value: function _getAttachment(placement) {
        return AttachmentMap[placement.toUpperCase()];
      }
    }, {
      key: '_setListeners',
      value: function _setListeners() {
        var _this18 = this;
XhmikosR's avatar
XhmikosR committed
3160

3161
        var triggers = this.config.trigger.split(' ');
XhmikosR's avatar
XhmikosR committed
3162

3163
3164
3165
3166
        triggers.forEach(function (trigger) {
          if (trigger === 'click') {
            $(_this18.element).on(_this18.constructor.Event.CLICK, _this18.config.selector, $.proxy(_this18.toggle, _this18));
          } else if (trigger !== Trigger.MANUAL) {
Mark Otto's avatar
Mark Otto committed
3167
3168
            var eventIn = trigger === Trigger.HOVER ? _this18.constructor.Event.MOUSEENTER : _this18.constructor.Event.FOCUSIN;
            var eventOut = trigger === Trigger.HOVER ? _this18.constructor.Event.MOUSELEAVE : _this18.constructor.Event.FOCUSOUT;
XhmikosR's avatar
XhmikosR committed
3169

3170
3171
3172
            $(_this18.element).on(eventIn, _this18.config.selector, $.proxy(_this18._enter, _this18)).on(eventOut, _this18.config.selector, $.proxy(_this18._leave, _this18));
          }
        });
XhmikosR's avatar
XhmikosR committed
3173

3174
3175
3176
3177
3178
3179
3180
3181
        if (this.config.selector) {
          this.config = $.extend({}, this.config, {
            trigger: 'manual',
            selector: ''
          });
        } else {
          this._fixTitle();
        }
Mark Otto's avatar
Mark Otto committed
3182
      }
3183
3184
3185
3186
3187
3188
3189
3190
    }, {
      key: '_fixTitle',
      value: function _fixTitle() {
        var titleType = typeof this.element.getAttribute('data-original-title');
        if (this.element.getAttribute('title') || titleType !== 'string') {
          this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');
          this.element.setAttribute('title', '');
        }
Mark Otto's avatar
Mark Otto committed
3191
      }
3192
3193
3194
3195
    }, {
      key: '_enter',
      value: function _enter(event, context) {
        var dataKey = this.constructor.DATA_KEY;
XhmikosR's avatar
XhmikosR committed
3196

3197
        context = context || $(event.currentTarget).data(dataKey);
XhmikosR's avatar
XhmikosR committed
3198

3199
3200
3201
3202
        if (!context) {
          context = new this.constructor(event.currentTarget, this._getDelegateConfig());
          $(event.currentTarget).data(dataKey, context);
        }
XhmikosR's avatar
XhmikosR committed
3203

3204
        if (event) {
Mark Otto's avatar
Mark Otto committed
3205
          context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
3206
        }
XhmikosR's avatar
XhmikosR committed
3207

3208
3209
3210
3211
        if ($(context.getTipElement()).hasClass(ClassName.IN) || context._hoverState === HoverState.IN) {
          context._hoverState = HoverState.IN;
          return;
        }
XhmikosR's avatar
XhmikosR committed
3212

3213
        clearTimeout(context._timeout);
XhmikosR's avatar
XhmikosR committed
3214

3215
        context._hoverState = HoverState.IN;
XhmikosR's avatar
XhmikosR committed
3216

3217
3218
3219
3220
        if (!context.config.delay || !context.config.delay.show) {
          context.show();
          return;
        }
XhmikosR's avatar
XhmikosR committed
3221

3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
        context._timeout = setTimeout(function () {
          if (context._hoverState === HoverState.IN) {
            context.show();
          }
        }, context.config.delay.show);
      }
    }, {
      key: '_leave',
      value: function _leave(event, context) {
        var dataKey = this.constructor.DATA_KEY;
XhmikosR's avatar
XhmikosR committed
3232

3233
        context = context || $(event.currentTarget).data(dataKey);
XhmikosR's avatar
XhmikosR committed
3234

3235
3236
3237
3238
        if (!context) {
          context = new this.constructor(event.currentTarget, this._getDelegateConfig());
          $(event.currentTarget).data(dataKey, context);
        }
XhmikosR's avatar
XhmikosR committed
3239

3240
        if (event) {
Mark Otto's avatar
Mark Otto committed
3241
          context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
3242
        }
XhmikosR's avatar
XhmikosR committed
3243

3244
3245
3246
        if (context._isWithActiveTrigger()) {
          return;
        }
XhmikosR's avatar
XhmikosR committed
3247

3248
        clearTimeout(context._timeout);
XhmikosR's avatar
XhmikosR committed
3249

3250
        context._hoverState = HoverState.OUT;
XhmikosR's avatar
XhmikosR committed
3251

3252
3253
3254
3255
        if (!context.config.delay || !context.config.delay.hide) {
          context.hide();
          return;
        }
XhmikosR's avatar
XhmikosR committed
3256

3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
        context._timeout = setTimeout(function () {
          if (context._hoverState === HoverState.OUT) {
            context.hide();
          }
        }, context.config.delay.hide);
      }
    }, {
      key: '_isWithActiveTrigger',
      value: function _isWithActiveTrigger() {
        for (var trigger in this._activeTrigger) {
          if (this._activeTrigger[trigger]) {
            return true;
          }
        }
XhmikosR's avatar
XhmikosR committed
3271

3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
        return false;
      }
    }, {
      key: '_getConfig',
      value: function _getConfig(config) {
        config = $.extend({}, this.constructor.Default, $(this.element).data(), config);

        if (config.delay && typeof config.delay === 'number') {
          config.delay = {
            show: config.delay,
            hide: config.delay
          };
        }
XhmikosR's avatar
XhmikosR committed
3285

3286
        Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
XhmikosR's avatar
XhmikosR committed
3287

3288
3289
3290
3291
3292
3293
3294
3295
3296
        return config;
      }
    }, {
      key: '_getDelegateConfig',
      value: function _getDelegateConfig() {
        var config = {};

        if (this.config) {
          for (var key in this.config) {
Mark Otto's avatar
Mark Otto committed
3297
3298
            if (this.constructor.Default[key] !== this.config[key]) {
              config[key] = this.config[key];
3299
3300
3301
            }
          }
        }
3302

3303
3304
        return config;
      }
Mark Otto's avatar
grunt    
Mark Otto committed
3305
3306
3307

      // static

Jacob Thornton's avatar
Jacob Thornton committed
3308
3309
    }], [{
      key: '_jQueryInterface',
Mark Otto's avatar
grunt    
Mark Otto committed
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
      value: function _jQueryInterface(config) {
        return this.each(function () {
          var data = $(this).data(DATA_KEY);
          var _config = typeof config === 'object' ? config : null;

          if (!data && /destroy|hide/.test(config)) {
            return;
          }

          if (!data) {
            data = new Tooltip(this, _config);
            $(this).data(DATA_KEY, data);
          }

          if (typeof config === 'string') {
XhmikosR's avatar
XhmikosR committed
3325
3326
3327
            if (data[config] === undefined) {
              throw new Error('No method named "' + config + '"');
            }
Mark Otto's avatar
grunt    
Mark Otto committed
3328
3329
3330
3331
3332
            data[config]();
          }
        });
      }
    }, {
3333
      key: 'VERSION',
Jacob Thornton's avatar
Jacob Thornton committed
3334
      get: function get() {
3335
3336
3337
3338
        return VERSION;
      }
    }, {
      key: 'Default',
Jacob Thornton's avatar
Jacob Thornton committed
3339
      get: function get() {
3340
3341
3342
3343
        return Default;
      }
    }, {
      key: 'NAME',
Jacob Thornton's avatar
Jacob Thornton committed
3344
      get: function get() {
3345
3346
3347
3348
        return NAME;
      }
    }, {
      key: 'DATA_KEY',
Jacob Thornton's avatar
Jacob Thornton committed
3349
      get: function get() {
3350
3351
3352
3353
        return DATA_KEY;
      }
    }, {
      key: 'Event',
Jacob Thornton's avatar
Jacob Thornton committed
3354
      get: function get() {
3355
3356
3357
3358
        return Event;
      }
    }, {
      key: 'EVENT_KEY',
Jacob Thornton's avatar
Jacob Thornton committed
3359
      get: function get() {
3360
3361
3362
3363
        return EVENT_KEY;
      }
    }, {
      key: 'DefaultType',
Jacob Thornton's avatar
Jacob Thornton committed
3364
      get: function get() {
3365
3366
3367
        return DefaultType;
      }
    }]);
XhmikosR's avatar
XhmikosR committed
3368

3369
3370
    return Tooltip;
  })();
XhmikosR's avatar
XhmikosR committed
3371

3372
3373
3374
3375
3376
3377
  $.fn[NAME] = Tooltip._jQueryInterface;
  $.fn[NAME].Constructor = Tooltip;
  $.fn[NAME].noConflict = function () {
    $.fn[NAME] = JQUERY_NO_CONFLICT;
    return Tooltip._jQueryInterface;
  };
XhmikosR's avatar
XhmikosR committed
3378

3379
3380
  return Tooltip;
})(jQuery);
XhmikosR's avatar
XhmikosR committed
3381

Mark Otto's avatar
Mark Otto committed
3382
/**
3383
 * --------------------------------------------------------------------------
3384
 * Bootstrap (v4.0.0-alpha.2): popover.js
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

var Popover = (function ($) {

  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  var NAME = 'popover';
XhmikosR's avatar
XhmikosR committed
3398
  var VERSION = '4.0.0-alpha.2';
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
  var DATA_KEY = 'bs.popover';
  var EVENT_KEY = '.' + DATA_KEY;
  var JQUERY_NO_CONFLICT = $.fn[NAME];

  var Default = $.extend({}, Tooltip.Default, {
    placement: 'right',
    trigger: 'click',
    content: '',
    template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-title"></h3>' + '<div class="popover-content"></div></div>'
  });

  var DefaultType = $.extend({}, Tooltip.DefaultType, {
XhmikosR's avatar
XhmikosR committed
3411
    content: '(string|element|function)'
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
  });

  var ClassName = {
    FADE: 'fade',
    IN: 'in'
  };

  var Selector = {
    TITLE: '.popover-title',
    CONTENT: '.popover-content',
    ARROW: '.popover-arrow'
  };

  var Event = {
    HIDE: 'hide' + EVENT_KEY,
    HIDDEN: 'hidden' + EVENT_KEY,
    SHOW: 'show' + EVENT_KEY,
    SHOWN: 'shown' + EVENT_KEY,
    INSERTED: 'inserted' + EVENT_KEY,
    CLICK: 'click' + EVENT_KEY,
    FOCUSIN: 'focusin' + EVENT_KEY,
    FOCUSOUT: 'focusout' + EVENT_KEY,
    MOUSEENTER: 'mouseenter' + EVENT_KEY,
    MOUSELEAVE: 'mouseleave' + EVENT_KEY
  };

  /**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

  var Popover = (function (_Tooltip) {
Jacob Thornton's avatar
Jacob Thornton committed
3445
3446
    _inherits(Popover, _Tooltip);

3447
3448
3449
    function Popover() {
      _classCallCheck(this, Popover);

Jacob Thornton's avatar
Jacob Thornton committed
3450
      _get(Object.getPrototypeOf(Popover.prototype), 'constructor', this).apply(this, arguments);
Mark Otto's avatar
Mark Otto committed
3451
    }
XhmikosR's avatar
XhmikosR committed
3452

Jacob Thornton's avatar
Jacob Thornton committed
3453
3454
3455
3456
3457
    /**
     * ------------------------------------------------------------------------
     * jQuery
     * ------------------------------------------------------------------------
     */
XhmikosR's avatar
XhmikosR committed
3458

3459
3460
    _createClass(Popover, [{
      key: 'isWithContent',
XhmikosR's avatar
XhmikosR committed
3461

3462
      // overrides
XhmikosR's avatar
XhmikosR committed
3463

3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
      value: function isWithContent() {
        return this.getTitle() || this._getContent();
      }
    }, {
      key: 'getTipElement',
      value: function getTipElement() {
        return this.tip = this.tip || $(this.config.template)[0];
      }
    }, {
      key: 'setContent',
      value: function setContent() {
XhmikosR's avatar
XhmikosR committed
3475
        var $tip = $(this.getTipElement());
XhmikosR's avatar
XhmikosR committed
3476

3477
        // we use append for html objects to maintain js events
XhmikosR's avatar
XhmikosR committed
3478
3479
        this.setElementContent($tip.find(Selector.TITLE), this.getTitle());
        this.setElementContent($tip.find(Selector.CONTENT), this._getContent());
XhmikosR's avatar
XhmikosR committed
3480

XhmikosR's avatar
XhmikosR committed
3481
        $tip.removeClass(ClassName.FADE).removeClass(ClassName.IN);
XhmikosR's avatar
XhmikosR committed
3482

3483
        this.cleanupTether();
Mark Otto's avatar
Mark Otto committed
3484
      }
XhmikosR's avatar
XhmikosR committed
3485

3486
      // private
XhmikosR's avatar
XhmikosR committed
3487

Jacob Thornton's avatar
Jacob Thornton committed
3488
3489
    }, {
      key: '_getContent',
3490
      value: function _getContent() {
Mark Otto's avatar
Mark Otto committed
3491
        return this.element.getAttribute('data-content') || (typeof this.config.content === 'function' ? this.config.content.call(this.element) : this.config.content);
3492
      }
Mark Otto's avatar
grunt    
Mark Otto committed
3493
3494
3495

      // static

Jacob Thornton's avatar
Jacob Thornton committed
3496
3497
    }], [{
      key: '_jQueryInterface',
Mark Otto's avatar
grunt    
Mark Otto committed
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
      value: function _jQueryInterface(config) {
        return this.each(function () {
          var data = $(this).data(DATA_KEY);
          var _config = typeof config === 'object' ? config : null;

          if (!data && /destroy|hide/.test(config)) {
            return;
          }

          if (!data) {
            data = new Popover(this, _config);
            $(this).data(DATA_KEY, data);
          }

          if (typeof config === 'string') {
XhmikosR's avatar
XhmikosR committed
3513
3514
3515
            if (data[config] === undefined) {
              throw new Error('No method named "' + config + '"');
            }
Mark Otto's avatar
grunt    
Mark Otto committed
3516
3517
3518
3519
3520
            data[config]();
          }
        });
      }
    }, {
3521
      key: 'VERSION',
XhmikosR's avatar
XhmikosR committed
3522

3523
      // getters
XhmikosR's avatar
XhmikosR committed
3524

Jacob Thornton's avatar
Jacob Thornton committed
3525
      get: function get() {
3526
3527
3528
3529
        return VERSION;
      }
    }, {
      key: 'Default',
Jacob Thornton's avatar
Jacob Thornton committed
3530
      get: function get() {
3531
3532
3533
3534
        return Default;
      }
    }, {
      key: 'NAME',
Jacob Thornton's avatar
Jacob Thornton committed
3535
      get: function get() {
3536
3537
3538
3539
        return NAME;
      }
    }, {
      key: 'DATA_KEY',
Jacob Thornton's avatar
Jacob Thornton committed
3540
      get: function get() {
3541
3542
3543
3544
        return DATA_KEY;
      }
    }, {
      key: 'Event',
Jacob Thornton's avatar
Jacob Thornton committed
3545
      get: function get() {
3546
3547
3548
3549
        return Event;
      }
    }, {
      key: 'EVENT_KEY',
Jacob Thornton's avatar
Jacob Thornton committed
3550
      get: function get() {
3551
3552
3553
3554
        return EVENT_KEY;
      }
    }, {
      key: 'DefaultType',
Jacob Thornton's avatar
Jacob Thornton committed
3555
      get: function get() {
3556
3557
3558
        return DefaultType;
      }
    }]);
XhmikosR's avatar
XhmikosR committed
3559

3560
3561
    return Popover;
  })(Tooltip);
XhmikosR's avatar
XhmikosR committed
3562

3563
3564
3565
3566
3567
3568
  $.fn[NAME] = Popover._jQueryInterface;
  $.fn[NAME].Constructor = Popover;
  $.fn[NAME].noConflict = function () {
    $.fn[NAME] = JQUERY_NO_CONFLICT;
    return Popover._jQueryInterface;
  };
XhmikosR's avatar
XhmikosR committed
3569

3570
3571
  return Popover;
})(jQuery);
XhmikosR's avatar
XhmikosR committed
3572

3573
}(jQuery);
For faster browsing, not all history is shown. View entire blame