bootstrap.bundle.js 190 KB
Newer Older
Mark Otto's avatar
dist  
Mark Otto committed
5001
5002
5003
5004
        this._enter(null, this);
      }
    };

Mark Otto's avatar
dist    
Mark Otto committed
5005
    _proto.dispose = function dispose() {
Mark Otto's avatar
dist  
Mark Otto committed
5006
      clearTimeout(this._timeout);
Mark Otto's avatar
dist    
Mark Otto committed
5007
5008
5009
      $$$1.removeData(this.element, this.constructor.DATA_KEY);
      $$$1(this.element).off(this.constructor.EVENT_KEY);
      $$$1(this.element).closest('.modal').off('hide.bs.modal');
Mark Otto's avatar
dist  
Mark Otto committed
5010
5011

      if (this.tip) {
Mark Otto's avatar
dist    
Mark Otto committed
5012
        $$$1(this.tip).remove();
Mark Otto's avatar
dist  
Mark Otto committed
5013
5014
5015
5016
5017
5018
      }

      this._isEnabled = null;
      this._timeout = null;
      this._hoverState = null;
      this._activeTrigger = null;
Mark Otto's avatar
dist    
Mark Otto committed
5019

Mark Otto's avatar
dist  
Mark Otto committed
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
      if (this._popper !== null) {
        this._popper.destroy();
      }

      this._popper = null;
      this.element = null;
      this.config = null;
      this.tip = null;
    };

Mark Otto's avatar
dist    
Mark Otto committed
5030
    _proto.show = function show() {
Mark Otto's avatar
dist  
Mark Otto committed
5031
5032
      var _this = this;

Mark Otto's avatar
dist    
Mark Otto committed
5033
      if ($$$1(this.element).css('display') === 'none') {
Mark Otto's avatar
dist  
Mark Otto committed
5034
5035
5036
        throw new Error('Please use show on visible elements');
      }

Mark Otto's avatar
dist    
Mark Otto committed
5037
      var showEvent = $$$1.Event(this.constructor.Event.SHOW);
Mark Otto's avatar
dist    
Mark Otto committed
5038

Mark Otto's avatar
dist  
Mark Otto committed
5039
      if (this.isWithContent() && this._isEnabled) {
Mark Otto's avatar
dist    
Mark Otto committed
5040
5041
        $$$1(this.element).trigger(showEvent);
        var isInTheDom = $$$1.contains(this.element.ownerDocument.documentElement, this.element);
Mark Otto's avatar
dist  
Mark Otto committed
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053

        if (showEvent.isDefaultPrevented() || !isInTheDom) {
          return;
        }

        var tip = this.getTipElement();
        var tipId = Util.getUID(this.constructor.NAME);
        tip.setAttribute('id', tipId);
        this.element.setAttribute('aria-describedby', tipId);
        this.setContent();

        if (this.config.animation) {
Mark Otto's avatar
dist    
Mark Otto committed
5054
          $$$1(tip).addClass(ClassName.FADE);
Mark Otto's avatar
dist  
Mark Otto committed
5055
5056
5057
5058
5059
5060
        }

        var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;

        var attachment = this._getAttachment(placement);

Mark Otto's avatar
dist    
Mark Otto committed
5061
        this.addAttachmentClass(attachment);
Mark Otto's avatar
dist    
Mark Otto committed
5062
5063
        var container = this.config.container === false ? document.body : $$$1(this.config.container);
        $$$1(tip).data(this.constructor.DATA_KEY, this);
Mark Otto's avatar
dist  
Mark Otto committed
5064

Mark Otto's avatar
dist    
Mark Otto committed
5065
5066
        if (!$$$1.contains(this.element.ownerDocument.documentElement, this.tip)) {
          $$$1(tip).appendTo(container);
Mark Otto's avatar
dist  
Mark Otto committed
5067
5068
        }

Mark Otto's avatar
dist    
Mark Otto committed
5069
        $$$1(this.element).trigger(this.constructor.Event.INSERTED);
Mark Otto's avatar
dist  
Mark Otto committed
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
        this._popper = new Popper(this.element, tip, {
          placement: attachment,
          modifiers: {
            offset: {
              offset: this.config.offset
            },
            flip: {
              behavior: this.config.fallbackPlacement
            },
            arrow: {
              element: Selector.ARROW
            }
          },
          onCreate: function onCreate(data) {
            if (data.originalPlacement !== data.placement) {
              _this._handlePopperPlacementChange(data);
            }
          },
          onUpdate: function onUpdate(data) {
            _this._handlePopperPlacementChange(data);
          }
        });
Mark Otto's avatar
dist    
Mark Otto committed
5092
        $$$1(tip).addClass(ClassName.SHOW); // if this is a touch-enabled device we add extra
Mark Otto's avatar
dist  
Mark Otto committed
5093
5094
5095
        // empty mouseover listeners to the body's immediate children;
        // only needed because of broken event delegation on iOS
        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
Mark Otto's avatar
dist    
Mark Otto committed
5096

Mark Otto's avatar
dist  
Mark Otto committed
5097
        if ('ontouchstart' in document.documentElement) {
Mark Otto's avatar
dist    
Mark Otto committed
5098
          $$$1('body').children().on('mouseover', null, $$$1.noop);
Mark Otto's avatar
dist  
Mark Otto committed
5099
5100
5101
5102
5103
5104
        }

        var complete = function complete() {
          if (_this.config.animation) {
            _this._fixTransition();
          }
Mark Otto's avatar
dist    
Mark Otto committed
5105

Mark Otto's avatar
dist  
Mark Otto committed
5106
5107
          var prevHoverState = _this._hoverState;
          _this._hoverState = null;
Mark Otto's avatar
dist    
Mark Otto committed
5108
          $$$1(_this.element).trigger(_this.constructor.Event.SHOWN);
Mark Otto's avatar
dist  
Mark Otto committed
5109
5110
5111
5112
5113
5114

          if (prevHoverState === HoverState.OUT) {
            _this._leave(null, _this);
          }
        };

Mark Otto's avatar
dist    
Mark Otto committed
5115
5116
        if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) {
          $$$1(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION);
Mark Otto's avatar
dist  
Mark Otto committed
5117
5118
5119
5120
5121
5122
        } else {
          complete();
        }
      }
    };

Mark Otto's avatar
dist    
Mark Otto committed
5123
    _proto.hide = function hide(callback) {
Mark Otto's avatar
dist  
Mark Otto committed
5124
5125
5126
      var _this2 = this;

      var tip = this.getTipElement();
Mark Otto's avatar
dist    
Mark Otto committed
5127
      var hideEvent = $$$1.Event(this.constructor.Event.HIDE);
Mark Otto's avatar
dist    
Mark Otto committed
5128

Mark Otto's avatar
dist  
Mark Otto committed
5129
5130
5131
5132
5133
5134
      var complete = function complete() {
        if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {
          tip.parentNode.removeChild(tip);
        }

        _this2._cleanTipClass();
Mark Otto's avatar
dist    
Mark Otto committed
5135

Mark Otto's avatar
dist  
Mark Otto committed
5136
        _this2.element.removeAttribute('aria-describedby');
Mark Otto's avatar
dist    
Mark Otto committed
5137

Mark Otto's avatar
dist    
Mark Otto committed
5138
        $$$1(_this2.element).trigger(_this2.constructor.Event.HIDDEN);
Mark Otto's avatar
dist    
Mark Otto committed
5139

Mark Otto's avatar
dist  
Mark Otto committed
5140
5141
5142
5143
5144
5145
5146
5147
5148
        if (_this2._popper !== null) {
          _this2._popper.destroy();
        }

        if (callback) {
          callback();
        }
      };

Mark Otto's avatar
dist    
Mark Otto committed
5149
      $$$1(this.element).trigger(hideEvent);
Mark Otto's avatar
dist  
Mark Otto committed
5150
5151
5152
5153
5154

      if (hideEvent.isDefaultPrevented()) {
        return;
      }

Mark Otto's avatar
dist    
Mark Otto committed
5155
      $$$1(tip).removeClass(ClassName.SHOW); // if this is a touch-enabled device we remove the extra
Mark Otto's avatar
dist  
Mark Otto committed
5156
      // empty mouseover listeners we added for iOS support
Mark Otto's avatar
dist    
Mark Otto committed
5157

Mark Otto's avatar
dist  
Mark Otto committed
5158
      if ('ontouchstart' in document.documentElement) {
Mark Otto's avatar
dist    
Mark Otto committed
5159
        $$$1('body').children().off('mouseover', null, $$$1.noop);
Mark Otto's avatar
dist  
Mark Otto committed
5160
5161
5162
5163
5164
5165
      }

      this._activeTrigger[Trigger.CLICK] = false;
      this._activeTrigger[Trigger.FOCUS] = false;
      this._activeTrigger[Trigger.HOVER] = false;

Mark Otto's avatar
dist    
Mark Otto committed
5166
5167
      if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) {
        $$$1(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
Mark Otto's avatar
dist  
Mark Otto committed
5168
5169
5170
5171
5172
5173
5174
      } else {
        complete();
      }

      this._hoverState = '';
    };

Mark Otto's avatar
dist    
Mark Otto committed
5175
    _proto.update = function update() {
Mark Otto's avatar
dist  
Mark Otto committed
5176
5177
5178
      if (this._popper !== null) {
        this._popper.scheduleUpdate();
      }
Mark Otto's avatar
dist    
Mark Otto committed
5179
    }; // protected
Mark Otto's avatar
dist  
Mark Otto committed
5180
5181


Mark Otto's avatar
dist    
Mark Otto committed
5182
    _proto.isWithContent = function isWithContent() {
Mark Otto's avatar
dist  
Mark Otto committed
5183
5184
5185
      return Boolean(this.getTitle());
    };

Mark Otto's avatar
dist    
Mark Otto committed
5186
    _proto.addAttachmentClass = function addAttachmentClass(attachment) {
Mark Otto's avatar
dist    
Mark Otto committed
5187
      $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
Mark Otto's avatar
dist  
Mark Otto committed
5188
5189
    };

Mark Otto's avatar
dist    
Mark Otto committed
5190
    _proto.getTipElement = function getTipElement() {
Mark Otto's avatar
dist    
Mark Otto committed
5191
      this.tip = this.tip || $$$1(this.config.template)[0];
Mark Otto's avatar
dist  
Mark Otto committed
5192
5193
5194
      return this.tip;
    };

Mark Otto's avatar
dist    
Mark Otto committed
5195
    _proto.setContent = function setContent() {
Mark Otto's avatar
dist    
Mark Otto committed
5196
      var $tip = $$$1(this.getTipElement());
Mark Otto's avatar
dist  
Mark Otto committed
5197
      this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle());
Mark Otto's avatar
dist    
Mark Otto committed
5198
      $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
Mark Otto's avatar
dist  
Mark Otto committed
5199
5200
    };

Mark Otto's avatar
dist    
Mark Otto committed
5201
    _proto.setElementContent = function setElementContent($element, content) {
Mark Otto's avatar
dist  
Mark Otto committed
5202
      var html = this.config.html;
Mark Otto's avatar
dist    
Mark Otto committed
5203
5204

      if (typeof content === 'object' && (content.nodeType || content.jquery)) {
Mark Otto's avatar
dist  
Mark Otto committed
5205
5206
        // content is a DOM node or a jQuery
        if (html) {
Mark Otto's avatar
dist    
Mark Otto committed
5207
          if (!$$$1(content).parent().is($element)) {
Mark Otto's avatar
dist  
Mark Otto committed
5208
5209
5210
            $element.empty().append(content);
          }
        } else {
Mark Otto's avatar
dist    
Mark Otto committed
5211
          $element.text($$$1(content).text());
Mark Otto's avatar
dist  
Mark Otto committed
5212
5213
5214
5215
5216
5217
        }
      } else {
        $element[html ? 'html' : 'text'](content);
      }
    };

Mark Otto's avatar
dist    
Mark Otto committed
5218
    _proto.getTitle = function getTitle() {
Mark Otto's avatar
dist  
Mark Otto committed
5219
5220
5221
5222
5223
5224
5225
      var title = this.element.getAttribute('data-original-title');

      if (!title) {
        title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
      }

      return title;
Mark Otto's avatar
dist    
Mark Otto committed
5226
    }; // private
Mark Otto's avatar
dist  
Mark Otto committed
5227
5228


Mark Otto's avatar
dist    
Mark Otto committed
5229
    _proto._getAttachment = function _getAttachment(placement) {
Mark Otto's avatar
dist  
Mark Otto committed
5230
5231
5232
      return AttachmentMap[placement.toUpperCase()];
    };

Mark Otto's avatar
dist    
Mark Otto committed
5233
    _proto._setListeners = function _setListeners() {
Mark Otto's avatar
dist  
Mark Otto committed
5234
5235
5236
5237
5238
      var _this3 = this;

      var triggers = this.config.trigger.split(' ');
      triggers.forEach(function (trigger) {
        if (trigger === 'click') {
Mark Otto's avatar
dist    
Mark Otto committed
5239
          $$$1(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) {
Mark Otto's avatar
dist  
Mark Otto committed
5240
5241
5242
5243
5244
            return _this3.toggle(event);
          });
        } else if (trigger !== Trigger.MANUAL) {
          var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN;
          var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT;
Mark Otto's avatar
dist    
Mark Otto committed
5245
          $$$1(_this3.element).on(eventIn, _this3.config.selector, function (event) {
Mark Otto's avatar
dist  
Mark Otto committed
5246
5247
5248
5249
5250
5251
            return _this3._enter(event);
          }).on(eventOut, _this3.config.selector, function (event) {
            return _this3._leave(event);
          });
        }

Mark Otto's avatar
dist    
Mark Otto committed
5252
        $$$1(_this3.element).closest('.modal').on('hide.bs.modal', function () {
Mark Otto's avatar
dist  
Mark Otto committed
5253
5254
5255
5256
5257
          return _this3.hide();
        });
      });

      if (this.config.selector) {
Mark Otto's avatar
dist    
Mark Otto committed
5258
        this.config = $$$1.extend({}, this.config, {
Mark Otto's avatar
dist  
Mark Otto committed
5259
5260
5261
5262
5263
5264
5265
5266
          trigger: 'manual',
          selector: ''
        });
      } else {
        this._fixTitle();
      }
    };

Mark Otto's avatar
dist    
Mark Otto committed
5267
5268
5269
    _proto._fixTitle = function _fixTitle() {
      var titleType = typeof this.element.getAttribute('data-original-title');

Mark Otto's avatar
dist  
Mark Otto committed
5270
5271
5272
5273
5274
5275
      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
dist    
Mark Otto committed
5276
    _proto._enter = function _enter(event, context) {
Mark Otto's avatar
dist  
Mark Otto committed
5277
      var dataKey = this.constructor.DATA_KEY;
Mark Otto's avatar
dist    
Mark Otto committed
5278
      context = context || $$$1(event.currentTarget).data(dataKey);
Mark Otto's avatar
dist  
Mark Otto committed
5279
5280
5281

      if (!context) {
        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
Mark Otto's avatar
dist    
Mark Otto committed
5282
        $$$1(event.currentTarget).data(dataKey, context);
Mark Otto's avatar
dist  
Mark Otto committed
5283
5284
5285
5286
5287
5288
      }

      if (event) {
        context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
      }

Mark Otto's avatar
dist    
Mark Otto committed
5289
      if ($$$1(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {
Mark Otto's avatar
dist  
Mark Otto committed
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
        context._hoverState = HoverState.SHOW;
        return;
      }

      clearTimeout(context._timeout);
      context._hoverState = HoverState.SHOW;

      if (!context.config.delay || !context.config.delay.show) {
        context.show();
        return;
      }

      context._timeout = setTimeout(function () {
        if (context._hoverState === HoverState.SHOW) {
          context.show();
        }
      }, context.config.delay.show);
    };

Mark Otto's avatar
dist    
Mark Otto committed
5309
    _proto._leave = function _leave(event, context) {
Mark Otto's avatar
dist  
Mark Otto committed
5310
      var dataKey = this.constructor.DATA_KEY;
Mark Otto's avatar
dist    
Mark Otto committed
5311
      context = context || $$$1(event.currentTarget).data(dataKey);
Mark Otto's avatar
dist  
Mark Otto committed
5312
5313
5314

      if (!context) {
        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
Mark Otto's avatar
dist    
Mark Otto committed
5315
        $$$1(event.currentTarget).data(dataKey, context);
Mark Otto's avatar
dist  
Mark Otto committed
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
      }

      if (event) {
        context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
      }

      if (context._isWithActiveTrigger()) {
        return;
      }

      clearTimeout(context._timeout);
      context._hoverState = HoverState.OUT;

      if (!context.config.delay || !context.config.delay.hide) {
        context.hide();
        return;
      }

      context._timeout = setTimeout(function () {
        if (context._hoverState === HoverState.OUT) {
          context.hide();
        }
      }, context.config.delay.hide);
    };

Mark Otto's avatar
dist    
Mark Otto committed
5341
    _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
Mark Otto's avatar
dist  
Mark Otto committed
5342
5343
5344
5345
5346
5347
5348
5349
5350
      for (var trigger in this._activeTrigger) {
        if (this._activeTrigger[trigger]) {
          return true;
        }
      }

      return false;
    };

Mark Otto's avatar
dist    
Mark Otto committed
5351
    _proto._getConfig = function _getConfig(config) {
Mark Otto's avatar
dist    
Mark Otto committed
5352
      config = $$$1.extend({}, this.constructor.Default, $$$1(this.element).data(), config);
Mark Otto's avatar
dist  
Mark Otto committed
5353

Mark Otto's avatar
dist    
Mark Otto committed
5354
      if (typeof config.delay === 'number') {
Mark Otto's avatar
dist  
Mark Otto committed
5355
5356
5357
5358
5359
5360
        config.delay = {
          show: config.delay,
          hide: config.delay
        };
      }

Mark Otto's avatar
dist    
Mark Otto committed
5361
      if (typeof config.title === 'number') {
Mark Otto's avatar
dist  
Mark Otto committed
5362
5363
5364
        config.title = config.title.toString();
      }

Mark Otto's avatar
dist    
Mark Otto committed
5365
      if (typeof config.content === 'number') {
Mark Otto's avatar
dist  
Mark Otto committed
5366
5367
5368
5369
5370
5371
5372
        config.content = config.content.toString();
      }

      Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
      return config;
    };

Mark Otto's avatar
dist    
Mark Otto committed
5373
    _proto._getDelegateConfig = function _getDelegateConfig() {
Mark Otto's avatar
dist  
Mark Otto committed
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
      var config = {};

      if (this.config) {
        for (var key in this.config) {
          if (this.constructor.Default[key] !== this.config[key]) {
            config[key] = this.config[key];
          }
        }
      }

      return config;
    };

Mark Otto's avatar
dist    
Mark Otto committed
5387
    _proto._cleanTipClass = function _cleanTipClass() {
Mark Otto's avatar
dist    
Mark Otto committed
5388
      var $tip = $$$1(this.getTipElement());
Mark Otto's avatar
dist  
Mark Otto committed
5389
      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
Mark Otto's avatar
dist    
Mark Otto committed
5390

Mark Otto's avatar
dist  
Mark Otto committed
5391
5392
5393
5394
5395
      if (tabClass !== null && tabClass.length > 0) {
        $tip.removeClass(tabClass.join(''));
      }
    };

Mark Otto's avatar
dist    
Mark Otto committed
5396
    _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(data) {
Mark Otto's avatar
dist  
Mark Otto committed
5397
      this._cleanTipClass();
Mark Otto's avatar
dist    
Mark Otto committed
5398

Mark Otto's avatar
dist  
Mark Otto committed
5399
5400
5401
      this.addAttachmentClass(this._getAttachment(data.placement));
    };

Mark Otto's avatar
dist    
Mark Otto committed
5402
    _proto._fixTransition = function _fixTransition() {
Mark Otto's avatar
dist  
Mark Otto committed
5403
5404
      var tip = this.getTipElement();
      var initConfigAnimation = this.config.animation;
Mark Otto's avatar
dist    
Mark Otto committed
5405

Mark Otto's avatar
dist  
Mark Otto committed
5406
5407
5408
      if (tip.getAttribute('x-placement') !== null) {
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
5409

Mark Otto's avatar
dist    
Mark Otto committed
5410
      $$$1(tip).removeClass(ClassName.FADE);
Mark Otto's avatar
dist  
Mark Otto committed
5411
5412
5413
5414
      this.config.animation = false;
      this.hide();
      this.show();
      this.config.animation = initConfigAnimation;
Mark Otto's avatar
dist    
Mark Otto committed
5415
    }; // static
Mark Otto's avatar
dist  
Mark Otto committed
5416
5417
5418
5419


    Tooltip._jQueryInterface = function _jQueryInterface(config) {
      return this.each(function () {
Mark Otto's avatar
dist    
Mark Otto committed
5420
        var data = $$$1(this).data(DATA_KEY);
Mark Otto's avatar
dist    
Mark Otto committed
5421
5422

        var _config = typeof config === 'object' && config;
Mark Otto's avatar
dist  
Mark Otto committed
5423
5424
5425
5426
5427
5428
5429

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

        if (!data) {
          data = new Tooltip(this, _config);
Mark Otto's avatar
dist    
Mark Otto committed
5430
          $$$1(this).data(DATA_KEY, data);
Mark Otto's avatar
dist  
Mark Otto committed
5431
5432
5433
5434
        }

        if (typeof config === 'string') {
          if (typeof data[config] === 'undefined') {
Mark Otto's avatar
dist    
Mark Otto committed
5435
            throw new Error("No method named \"" + config + "\"");
Mark Otto's avatar
dist  
Mark Otto committed
5436
          }
Mark Otto's avatar
dist    
Mark Otto committed
5437

Mark Otto's avatar
dist  
Mark Otto committed
5438
5439
5440
5441
5442
5443
          data[config]();
        }
      });
    };

    createClass(Tooltip, null, [{
Mark Otto's avatar
dist    
Mark Otto committed
5444
      key: "VERSION",
Mark Otto's avatar
dist  
Mark Otto committed
5445
5446
5447
5448
      get: function get() {
        return VERSION;
      }
    }, {
Mark Otto's avatar
dist    
Mark Otto committed
5449
      key: "Default",
Mark Otto's avatar
dist  
Mark Otto committed
5450
5451
5452
5453
      get: function get() {
        return Default;
      }
    }, {
Mark Otto's avatar
dist    
Mark Otto committed
5454
      key: "NAME",
Mark Otto's avatar
dist  
Mark Otto committed
5455
5456
5457
5458
      get: function get() {
        return NAME;
      }
    }, {
Mark Otto's avatar
dist    
Mark Otto committed
5459
      key: "DATA_KEY",
Mark Otto's avatar
dist  
Mark Otto committed
5460
5461
5462
5463
      get: function get() {
        return DATA_KEY;
      }
    }, {
Mark Otto's avatar
dist    
Mark Otto committed
5464
      key: "Event",
Mark Otto's avatar
dist  
Mark Otto committed
5465
5466
5467
5468
      get: function get() {
        return Event;
      }
    }, {
Mark Otto's avatar
dist    
Mark Otto committed
5469
      key: "EVENT_KEY",
Mark Otto's avatar
dist  
Mark Otto committed
5470
5471
5472
5473
      get: function get() {
        return EVENT_KEY;
      }
    }, {
Mark Otto's avatar
dist    
Mark Otto committed
5474
      key: "DefaultType",
Mark Otto's avatar
dist  
Mark Otto committed
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
      get: function get() {
        return DefaultType;
      }
    }]);
    return Tooltip;
  }();
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

Mark Otto's avatar
dist    
Mark Otto committed
5487

Mark Otto's avatar
dist    
Mark Otto committed
5488
5489
  $$$1.fn[NAME] = Tooltip._jQueryInterface;
  $$$1.fn[NAME].Constructor = Tooltip;
Mark Otto's avatar
dist    
Mark Otto committed
5490

Mark Otto's avatar
dist    
Mark Otto committed
5491
5492
  $$$1.fn[NAME].noConflict = function () {
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
Mark Otto's avatar
dist  
Mark Otto committed
5493
5494
5495
5496
    return Tooltip._jQueryInterface;
  };

  return Tooltip;
Mark Otto's avatar
dist    
Mark Otto committed
5497
}($, Popper);
Mark Otto's avatar
dist  
Mark Otto committed
5498
5499
5500

/**
 * --------------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
5501
 * Bootstrap (v4.0.0-beta.2): popover.js
Mark Otto's avatar
dist  
Mark Otto committed
5502
5503
5504
5505
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

Mark Otto's avatar
dist    
Mark Otto committed
5506
var Popover = function ($$$1) {
Mark Otto's avatar
dist  
Mark Otto committed
5507
5508
5509
5510
5511
5512
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */
  var NAME = 'popover';
Mark Otto's avatar
Mark Otto committed
5513
  var VERSION = '4.0.0-beta.2';
Mark Otto's avatar
dist  
Mark Otto committed
5514
  var DATA_KEY = 'bs.popover';
Mark Otto's avatar
dist    
Mark Otto committed
5515
  var EVENT_KEY = "." + DATA_KEY;
Mark Otto's avatar
dist    
Mark Otto committed
5516
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
Mark Otto's avatar
dist  
Mark Otto committed
5517
  var CLASS_PREFIX = 'bs-popover';
Mark Otto's avatar
dist    
Mark Otto committed
5518
  var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
Mark Otto's avatar
dist    
Mark Otto committed
5519
  var Default = $$$1.extend({}, Tooltip.Default, {
Mark Otto's avatar
dist  
Mark Otto committed
5520
5521
5522
5523
5524
    placement: 'right',
    trigger: 'click',
    content: '',
    template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
  });
Mark Otto's avatar
dist    
Mark Otto committed
5525
  var DefaultType = $$$1.extend({}, Tooltip.DefaultType, {
Mark Otto's avatar
dist  
Mark Otto committed
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
    content: '(string|element|function)'
  });
  var ClassName = {
    FADE: 'fade',
    SHOW: 'show'
  };
  var Selector = {
    TITLE: '.popover-header',
    CONTENT: '.popover-body'
  };
  var Event = {
Mark Otto's avatar
dist    
Mark Otto committed
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
    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
Mark Otto's avatar
dist    
Mark Otto committed
5547
5548
5549
5550
5551
    /**
     * ------------------------------------------------------------------------
     * Class Definition
     * ------------------------------------------------------------------------
     */
Mark Otto's avatar
dist  
Mark Otto committed
5552

Mark Otto's avatar
dist    
Mark Otto committed
5553
  };
Mark Otto's avatar
dist    
Mark Otto committed
5554
5555
5556
5557
5558

  var Popover =
  /*#__PURE__*/
  function (_Tooltip) {
    inheritsLoose(Popover, _Tooltip);
Mark Otto's avatar
dist  
Mark Otto committed
5559
5560

    function Popover() {
Mark Otto's avatar
dist    
Mark Otto committed
5561
      return _Tooltip.apply(this, arguments) || this;
Mark Otto's avatar
dist  
Mark Otto committed
5562
5563
    }

Mark Otto's avatar
dist    
Mark Otto committed
5564
    var _proto = Popover.prototype;
Mark Otto's avatar
dist  
Mark Otto committed
5565

Mark Otto's avatar
dist    
Mark Otto committed
5566
5567
    // overrides
    _proto.isWithContent = function isWithContent() {
Mark Otto's avatar
dist  
Mark Otto committed
5568
5569
5570
      return this.getTitle() || this._getContent();
    };

Mark Otto's avatar
dist    
Mark Otto committed
5571
    _proto.addAttachmentClass = function addAttachmentClass(attachment) {
Mark Otto's avatar
dist    
Mark Otto committed
5572
      $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
Mark Otto's avatar
dist  
Mark Otto committed
5573
5574
    };

Mark Otto's avatar
dist    
Mark Otto committed
5575
    _proto.getTipElement = function getTipElement() {
Mark Otto's avatar
dist    
Mark Otto committed
5576
      this.tip = this.tip || $$$1(this.config.template)[0];
Mark Otto's avatar
dist  
Mark Otto committed
5577
5578
5579
      return this.tip;
    };

Mark Otto's avatar
dist    
Mark Otto committed
5580
    _proto.setContent = function setContent() {
Mark Otto's avatar
dist    
Mark Otto committed
5581
      var $tip = $$$1(this.getTipElement()); // we use append for html objects to maintain js events
Mark Otto's avatar
dist  
Mark Otto committed
5582
5583
5584

      this.setElementContent($tip.find(Selector.TITLE), this.getTitle());
      this.setElementContent($tip.find(Selector.CONTENT), this._getContent());
Mark Otto's avatar
dist    
Mark Otto committed
5585
5586
      $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
    }; // private
Mark Otto's avatar
dist  
Mark Otto committed
5587
5588


Mark Otto's avatar
dist    
Mark Otto committed
5589
    _proto._getContent = function _getContent() {
Mark Otto's avatar
dist  
Mark Otto committed
5590
5591
5592
      return this.element.getAttribute('data-content') || (typeof this.config.content === 'function' ? this.config.content.call(this.element) : this.config.content);
    };

Mark Otto's avatar
dist    
Mark Otto committed
5593
    _proto._cleanTipClass = function _cleanTipClass() {
Mark Otto's avatar
dist    
Mark Otto committed
5594
      var $tip = $$$1(this.getTipElement());
Mark Otto's avatar
dist  
Mark Otto committed
5595
      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
Mark Otto's avatar
dist    
Mark Otto committed
5596

Mark Otto's avatar
dist  
Mark Otto committed
5597
5598
5599
      if (tabClass !== null && tabClass.length > 0) {
        $tip.removeClass(tabClass.join(''));
      }
Mark Otto's avatar
dist    
Mark Otto committed
5600
    }; // static
Mark Otto's avatar
dist  
Mark Otto committed
5601
5602
5603
5604


    Popover._jQueryInterface = function _jQueryInterface(config) {
      return this.each(function () {
Mark Otto's avatar
dist    
Mark Otto committed
5605
        var data = $$$1(this).data(DATA_KEY);
Mark Otto's avatar
dist    
Mark Otto committed
5606
5607

        var _config = typeof config === 'object' ? config : null;
Mark Otto's avatar
dist  
Mark Otto committed
5608
5609
5610
5611
5612
5613
5614

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

        if (!data) {
          data = new Popover(this, _config);
Mark Otto's avatar
dist    
Mark Otto committed
5615
          $$$1(this).data(DATA_KEY, data);
Mark Otto's avatar
dist  
Mark Otto committed
5616
5617
5618
5619
        }

        if (typeof config === 'string') {
          if (typeof data[config] === 'undefined') {
Mark Otto's avatar
dist    
Mark Otto committed
5620
            throw new Error("No method named \"" + config + "\"");
Mark Otto's avatar
dist  
Mark Otto committed
5621
          }
Mark Otto's avatar
dist    
Mark Otto committed
5622

Mark Otto's avatar
dist  
Mark Otto committed
5623
5624
5625
5626
5627
5628
          data[config]();
        }
      });
    };

    createClass(Popover, null, [{
Mark Otto's avatar
dist    
Mark Otto committed
5629
      key: "VERSION",
Mark Otto's avatar
dist  
Mark Otto committed
5630
5631
5632
5633
5634
      // getters
      get: function get() {
        return VERSION;
      }
    }, {
Mark Otto's avatar
dist    
Mark Otto committed
5635
      key: "Default",
Mark Otto's avatar
dist  
Mark Otto committed
5636
5637
5638
5639
      get: function get() {
        return Default;
      }
    }, {
Mark Otto's avatar
dist    
Mark Otto committed
5640
      key: "NAME",
Mark Otto's avatar
dist  
Mark Otto committed
5641
5642
5643
5644
      get: function get() {
        return NAME;
      }
    }, {
Mark Otto's avatar
dist    
Mark Otto committed
5645
      key: "DATA_KEY",
Mark Otto's avatar
dist  
Mark Otto committed
5646
5647
5648
5649
      get: function get() {
        return DATA_KEY;
      }
    }, {
Mark Otto's avatar
dist    
Mark Otto committed
5650
      key: "Event",
Mark Otto's avatar
dist  
Mark Otto committed
5651
5652
5653
5654
      get: function get() {
        return Event;
      }
    }, {
Mark Otto's avatar
dist    
Mark Otto committed
5655
      key: "EVENT_KEY",
Mark Otto's avatar
dist  
Mark Otto committed
5656
5657
5658
5659
      get: function get() {
        return EVENT_KEY;
      }
    }, {
Mark Otto's avatar
dist    
Mark Otto committed
5660
      key: "DefaultType",
Mark Otto's avatar
dist  
Mark Otto committed
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
      get: function get() {
        return DefaultType;
      }
    }]);
    return Popover;
  }(Tooltip);
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

Mark Otto's avatar
dist    
Mark Otto committed
5673

Mark Otto's avatar
dist    
Mark Otto committed
5674
5675
  $$$1.fn[NAME] = Popover._jQueryInterface;
  $$$1.fn[NAME].Constructor = Popover;
Mark Otto's avatar
dist    
Mark Otto committed
5676

Mark Otto's avatar
dist    
Mark Otto committed
5677
5678
  $$$1.fn[NAME].noConflict = function () {
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
Mark Otto's avatar
dist  
Mark Otto committed
5679
5680
5681
5682
    return Popover._jQueryInterface;
  };

  return Popover;
Mark Otto's avatar
dist    
Mark Otto committed
5683
}($);
Mark Otto's avatar
dist  
Mark Otto committed
5684
5685
5686

/**
 * --------------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
5687
 * Bootstrap (v4.0.0-beta.2): scrollspy.js
Mark Otto's avatar
dist  
Mark Otto committed
5688
5689
5690
5691
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

Mark Otto's avatar
dist    
Mark Otto committed
5692
var ScrollSpy = function ($$$1) {
Mark Otto's avatar
dist  
Mark Otto committed
5693
5694
5695
5696
5697
5698
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */
  var NAME = 'scrollspy';
Mark Otto's avatar
Mark Otto committed
5699
  var VERSION = '4.0.0-beta.2';
Mark Otto's avatar
dist  
Mark Otto committed
5700
  var DATA_KEY = 'bs.scrollspy';
Mark Otto's avatar
dist    
Mark Otto committed
5701
  var EVENT_KEY = "." + DATA_KEY;
Mark Otto's avatar
dist  
Mark Otto committed
5702
  var DATA_API_KEY = '.data-api';
Mark Otto's avatar
dist    
Mark Otto committed
5703
  var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
Mark Otto's avatar
dist  
Mark Otto committed
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
  var Default = {
    offset: 10,
    method: 'auto',
    target: ''
  };
  var DefaultType = {
    offset: 'number',
    method: 'string',
    target: '(string|element)'
  };
  var Event = {
Mark Otto's avatar
dist    
Mark Otto committed
5715
5716
5717
    ACTIVATE: "activate" + EVENT_KEY,
    SCROLL: "scroll" + EVENT_KEY,
    LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY
Mark Otto's avatar
dist  
Mark Otto committed
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
  };
  var ClassName = {
    DROPDOWN_ITEM: 'dropdown-item',
    DROPDOWN_MENU: 'dropdown-menu',
    ACTIVE: 'active'
  };
  var Selector = {
    DATA_SPY: '[data-spy="scroll"]',
    ACTIVE: '.active',
    NAV_LIST_GROUP: '.nav, .list-group',
    NAV_LINKS: '.nav-link',
Mark Otto's avatar
dist    
Mark Otto committed
5729
    NAV_ITEMS: '.nav-item',
Mark Otto's avatar
dist  
Mark Otto committed
5730
5731
5732
5733
5734
5735
5736
5737
    LIST_ITEMS: '.list-group-item',
    DROPDOWN: '.dropdown',
    DROPDOWN_ITEMS: '.dropdown-item',
    DROPDOWN_TOGGLE: '.dropdown-toggle'
  };
  var OffsetMethod = {
    OFFSET: 'offset',
    POSITION: 'position'
Mark Otto's avatar
dist    
Mark Otto committed
5738
5739
5740
5741
5742
    /**
     * ------------------------------------------------------------------------
     * Class Definition
     * ------------------------------------------------------------------------
     */
Mark Otto's avatar
dist  
Mark Otto committed
5743

Mark Otto's avatar
dist    
Mark Otto committed
5744
  };
Mark Otto's avatar
dist    
Mark Otto committed
5745
5746
5747
5748

  var ScrollSpy =
  /*#__PURE__*/
  function () {
Mark Otto's avatar
dist  
Mark Otto committed
5749
5750
5751
5752
5753
5754
    function ScrollSpy(element, config) {
      var _this = this;

      this._element = element;
      this._scrollElement = element.tagName === 'BODY' ? window : element;
      this._config = this._getConfig(config);
Mark Otto's avatar
dist    
Mark Otto committed
5755
      this._selector = this._config.target + " " + Selector.NAV_LINKS + "," + (this._config.target + " " + Selector.LIST_ITEMS + ",") + (this._config.target + " " + Selector.DROPDOWN_ITEMS);
Mark Otto's avatar
dist  
Mark Otto committed
5756
5757
5758
5759
      this._offsets = [];
      this._targets = [];
      this._activeTarget = null;
      this._scrollHeight = 0;
Mark Otto's avatar
dist    
Mark Otto committed
5760
      $$$1(this._scrollElement).on(Event.SCROLL, function (event) {
Mark Otto's avatar
dist  
Mark Otto committed
5761
5762
5763
        return _this._process(event);
      });
      this.refresh();
Mark Otto's avatar
dist    
Mark Otto committed
5764

Mark Otto's avatar
dist  
Mark Otto committed
5765
      this._process();
Mark Otto's avatar
dist    
Mark Otto committed
5766
    } // getters
Mark Otto's avatar
dist  
Mark Otto committed
5767
5768


Mark Otto's avatar
dist    
Mark Otto committed
5769
    var _proto = ScrollSpy.prototype;
Mark Otto's avatar
dist  
Mark Otto committed
5770

Mark Otto's avatar
dist    
Mark Otto committed
5771
5772
    // public
    _proto.refresh = function refresh() {
Mark Otto's avatar
dist  
Mark Otto committed
5773
5774
5775
5776
5777
5778
5779
5780
      var _this2 = this;

      var autoMethod = this._scrollElement !== this._scrollElement.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET;
      var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
      var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
      this._offsets = [];
      this._targets = [];
      this._scrollHeight = this._getScrollHeight();
Mark Otto's avatar
dist    
Mark Otto committed
5781
      var targets = $$$1.makeArray($$$1(this._selector));
Mark Otto's avatar
dist  
Mark Otto committed
5782
      targets.map(function (element) {
Mark Otto's avatar
dist    
Mark Otto committed
5783
        var target;
Mark Otto's avatar
dist  
Mark Otto committed
5784
5785
5786
        var targetSelector = Util.getSelectorFromElement(element);

        if (targetSelector) {
Mark Otto's avatar
dist    
Mark Otto committed
5787
          target = $$$1(targetSelector)[0];
Mark Otto's avatar
dist  
Mark Otto committed
5788
5789
5790
5791
        }

        if (target) {
          var targetBCR = target.getBoundingClientRect();
Mark Otto's avatar
dist    
Mark Otto committed
5792

Mark Otto's avatar
dist  
Mark Otto committed
5793
5794
          if (targetBCR.width || targetBCR.height) {
            // todo (fat): remove sketch reliance on jQuery position/offset
Mark Otto's avatar
dist    
Mark Otto committed
5795
            return [$$$1(target)[offsetMethod]().top + offsetBase, targetSelector];
Mark Otto's avatar
dist  
Mark Otto committed
5796
5797
          }
        }
Mark Otto's avatar
dist    
Mark Otto committed
5798

Mark Otto's avatar
dist  
Mark Otto committed
5799
5800
5801
5802
5803
5804
5805
        return null;
      }).filter(function (item) {
        return item;
      }).sort(function (a, b) {
        return a[0] - b[0];
      }).forEach(function (item) {
        _this2._offsets.push(item[0]);
Mark Otto's avatar
dist    
Mark Otto committed
5806

Mark Otto's avatar
dist  
Mark Otto committed
5807
5808
5809
5810
        _this2._targets.push(item[1]);
      });
    };

Mark Otto's avatar
dist    
Mark Otto committed
5811
    _proto.dispose = function dispose() {
Mark Otto's avatar
dist    
Mark Otto committed
5812
5813
      $$$1.removeData(this._element, DATA_KEY);
      $$$1(this._scrollElement).off(EVENT_KEY);
Mark Otto's avatar
dist  
Mark Otto committed
5814
5815
5816
5817
5818
5819
5820
5821
      this._element = null;
      this._scrollElement = null;
      this._config = null;
      this._selector = null;
      this._offsets = null;
      this._targets = null;
      this._activeTarget = null;
      this._scrollHeight = null;
Mark Otto's avatar
dist    
Mark Otto committed
5822
    }; // private
Mark Otto's avatar
dist  
Mark Otto committed
5823
5824


Mark Otto's avatar
dist    
Mark Otto committed
5825
    _proto._getConfig = function _getConfig(config) {
Mark Otto's avatar
dist    
Mark Otto committed
5826
      config = $$$1.extend({}, Default, config);
Mark Otto's avatar
dist  
Mark Otto committed
5827
5828

      if (typeof config.target !== 'string') {
Mark Otto's avatar
dist    
Mark Otto committed
5829
        var id = $$$1(config.target).attr('id');
Mark Otto's avatar
dist    
Mark Otto committed
5830

Mark Otto's avatar
dist  
Mark Otto committed
5831
5832
        if (!id) {
          id = Util.getUID(NAME);
Mark Otto's avatar
dist    
Mark Otto committed
5833
          $$$1(config.target).attr('id', id);
Mark Otto's avatar
dist  
Mark Otto committed
5834
        }
Mark Otto's avatar
dist    
Mark Otto committed
5835
5836

        config.target = "#" + id;
Mark Otto's avatar
dist  
Mark Otto committed
5837
5838
5839
5840
5841
5842
      }

      Util.typeCheckConfig(NAME, config, DefaultType);
      return config;
    };

Mark Otto's avatar
dist    
Mark Otto committed
5843
    _proto._getScrollTop = function _getScrollTop() {
Mark Otto's avatar
dist  
Mark Otto committed
5844
5845
5846
      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
    };

Mark Otto's avatar
dist    
Mark Otto committed
5847
    _proto._getScrollHeight = function _getScrollHeight() {
Mark Otto's avatar
dist  
Mark Otto committed
5848
5849
5850
      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
    };

Mark Otto's avatar
dist    
Mark Otto committed
5851
    _proto._getOffsetHeight = function _getOffsetHeight() {
Mark Otto's avatar
dist  
Mark Otto committed
5852
5853
5854
      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
    };

Mark Otto's avatar
dist    
Mark Otto committed
5855
    _proto._process = function _process() {
Mark Otto's avatar
dist  
Mark Otto committed
5856
      var scrollTop = this._getScrollTop() + this._config.offset;
Mark Otto's avatar
dist    
Mark Otto committed
5857

Mark Otto's avatar
dist  
Mark Otto committed
5858
      var scrollHeight = this._getScrollHeight();
Mark Otto's avatar
dist    
Mark Otto committed
5859

Mark Otto's avatar
dist  
Mark Otto committed
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
      var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();

      if (this._scrollHeight !== scrollHeight) {
        this.refresh();
      }

      if (scrollTop >= maxScroll) {
        var target = this._targets[this._targets.length - 1];

        if (this._activeTarget !== target) {
          this._activate(target);
        }
Mark Otto's avatar
dist    
Mark Otto committed
5872

Mark Otto's avatar
dist  
Mark Otto committed
5873
5874
5875
5876
5877
        return;
      }

      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
        this._activeTarget = null;
Mark Otto's avatar
dist    
Mark Otto committed
5878

Mark Otto's avatar
dist  
Mark Otto committed
5879
        this._clear();
Mark Otto's avatar
dist    
Mark Otto committed
5880

Mark Otto's avatar
dist  
Mark Otto committed
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
        return;
      }

      for (var i = this._offsets.length; i--;) {
        var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);

        if (isActiveTarget) {
          this._activate(this._targets[i]);
        }
      }
    };

Mark Otto's avatar
dist    
Mark Otto committed
5893
    _proto._activate = function _activate(target) {
Mark Otto's avatar
dist  
Mark Otto committed
5894
5895
5896
5897
      this._activeTarget = target;

      this._clear();

Mark Otto's avatar
dist    
Mark Otto committed
5898
5899
5900
      var queries = this._selector.split(','); // eslint-disable-next-line arrow-body-style


Mark Otto's avatar
dist  
Mark Otto committed
5901
      queries = queries.map(function (selector) {
Mark Otto's avatar
dist    
Mark Otto committed
5902
        return selector + "[data-target=\"" + target + "\"]," + (selector + "[href=\"" + target + "\"]");
Mark Otto's avatar
dist  
Mark Otto committed
5903
      });
Mark Otto's avatar
dist    
Mark Otto committed
5904
      var $link = $$$1(queries.join(','));
Mark Otto's avatar
dist  
Mark Otto committed
5905
5906
5907
5908
5909
5910

      if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {
        $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
        $link.addClass(ClassName.ACTIVE);
      } else {
        // Set triggered link as active
Mark Otto's avatar
dist    
Mark Otto committed
5911
        $link.addClass(ClassName.ACTIVE); // Set triggered links parents as active
Mark Otto's avatar
dist  
Mark Otto committed
5912
        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
Mark Otto's avatar
dist    
Mark Otto committed
5913
5914
5915
5916

        $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_LINKS + ", " + Selector.LIST_ITEMS).addClass(ClassName.ACTIVE); // Handle special case when .nav-link is inside .nav-item

        $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE);
Mark Otto's avatar
dist  
Mark Otto committed
5917
5918
      }

Mark Otto's avatar
dist    
Mark Otto committed
5919
      $$$1(this._scrollElement).trigger(Event.ACTIVATE, {
Mark Otto's avatar
dist  
Mark Otto committed
5920
5921
5922
5923
        relatedTarget: target
      });
    };

Mark Otto's avatar
dist    
Mark Otto committed
5924
    _proto._clear = function _clear() {
Mark Otto's avatar
dist    
Mark Otto committed
5925
      $$$1(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
Mark Otto's avatar
dist    
Mark Otto committed
5926
    }; // static
Mark Otto's avatar
dist  
Mark Otto committed
5927
5928
5929
5930


    ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
      return this.each(function () {
Mark Otto's avatar
dist    
Mark Otto committed
5931
        var data = $$$1(this).data(DATA_KEY);
Mark Otto's avatar
dist    
Mark Otto committed
5932
5933

        var _config = typeof config === 'object' && config;
Mark Otto's avatar
dist  
Mark Otto committed
5934
5935
5936

        if (!data) {
          data = new ScrollSpy(this, _config);
Mark Otto's avatar
dist    
Mark Otto committed
5937
          $$$1(this).data(DATA_KEY, data);
Mark Otto's avatar
dist  
Mark Otto committed
5938
5939
5940
5941
        }

        if (typeof config === 'string') {
          if (typeof data[config] === 'undefined') {
Mark Otto's avatar
dist    
Mark Otto committed
5942
            throw new Error("No method named \"" + config + "\"");
Mark Otto's avatar
dist  
Mark Otto committed
5943
          }
Mark Otto's avatar
dist    
Mark Otto committed
5944

Mark Otto's avatar
dist  
Mark Otto committed
5945
5946
5947
5948
5949
5950
          data[config]();
        }
      });
    };

    createClass(ScrollSpy, null, [{
Mark Otto's avatar
dist    
Mark Otto committed
5951
      key: "VERSION",
Mark Otto's avatar
dist  
Mark Otto committed
5952
5953
5954
5955
      get: function get() {
        return VERSION;
      }
    }, {
Mark Otto's avatar
dist    
Mark Otto committed
5956
      key: "Default",
Mark Otto's avatar
dist  
Mark Otto committed
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
      get: function get() {
        return Default;
      }
    }]);
    return ScrollSpy;
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */

Mark Otto's avatar
dist    
Mark Otto committed
5969

Mark Otto's avatar
dist    
Mark Otto committed
5970
5971
  $$$1(window).on(Event.LOAD_DATA_API, function () {
    var scrollSpys = $$$1.makeArray($$$1(Selector.DATA_SPY));
Mark Otto's avatar
dist  
Mark Otto committed
5972
5973

    for (var i = scrollSpys.length; i--;) {
Mark Otto's avatar
dist    
Mark Otto committed
5974
      var $spy = $$$1(scrollSpys[i]);
Mark Otto's avatar
dist    
Mark Otto committed
5975

Mark Otto's avatar
dist  
Mark Otto committed
5976
5977
5978
5979
5980
5981
5982
5983
5984
      ScrollSpy._jQueryInterface.call($spy, $spy.data());
    }
  });
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

Mark Otto's avatar
dist    
Mark Otto committed
5985
5986
  $$$1.fn[NAME] = ScrollSpy._jQueryInterface;
  $$$1.fn[NAME].Constructor = ScrollSpy;
Mark Otto's avatar
dist    
Mark Otto committed
5987

Mark Otto's avatar
dist    
Mark Otto committed
5988
5989
  $$$1.fn[NAME].noConflict = function () {
    $$$1.fn[NAME] = JQUERY_NO_CONFLICT;
Mark Otto's avatar
dist  
Mark Otto committed
5990
5991
5992
5993
    return ScrollSpy._jQueryInterface;
  };

  return ScrollSpy;
Mark Otto's avatar
dist    
Mark Otto committed
5994
}($);
Mark Otto's avatar
dist  
Mark Otto committed
5995
5996
5997

/**
 * --------------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
5998
 * Bootstrap (v4.0.0-beta.2): tab.js
Mark Otto's avatar
dist  
Mark Otto committed
5999
6000
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
For faster browsing, not all history is shown. View entire blame