jquery_with_bootstrap 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 76baab1f58e21265a074a1e1195898362cf28a42bc49efbc0b60fea7800850c4
4
+ data.tar.gz: d02ce7f7b27f9c7f2a35fbf8dd9d58a4a6de18ae382326401b3aeb9348d154ea
5
+ SHA512:
6
+ metadata.gz: b707706396edf4b006b6137117839bed8bbe6e9c4811d0f236f46b4dc9a2e55e27505bec9e1dbb781cd0f8b14f61909859228a8f8367cd85e1caa4cfa51e1b68
7
+ data.tar.gz: 62ee285a1f53ac2b33c39e56c73ace2398c5acb3f685622f5e0b086803e0361de2e38a53ed2a512a68d2bc844e91ea58b09fdc92b8cf4c96fcae6b5440ef095b
data/.gitignore ADDED
@@ -0,0 +1,11 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ sudo: false
3
+ language: ruby
4
+ cache: bundler
5
+ rvm:
6
+ - 2.5.1
7
+ before_install: gem install bundler -v 2.0.1
@@ -0,0 +1,74 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, gender identity and expression, level of experience,
9
+ nationality, personal appearance, race, religion, or sexual identity and
10
+ orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an appointed
52
+ representative at an online or offline event. Representation of a project may be
53
+ further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at shashi.we@gmail.com. All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
+ available at [http://contributor-covenant.org/version/1/4][version]
72
+
73
+ [homepage]: http://contributor-covenant.org
74
+ [version]: http://contributor-covenant.org/version/1/4/
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in jquery_with_bootstrap.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2019 Shashi Singh
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,43 @@
1
+ # JqueryWithBootstrap
2
+
3
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/jquery_with_bootstrap`. To experiment with that code, run `bin/console` for an interactive prompt.
4
+
5
+ TODO: Delete this and the text above, and describe your gem
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'jquery_with_bootstrap'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install jquery_with_bootstrap
22
+
23
+ ## Usage
24
+
25
+ TODO: Write usage instructions here
26
+
27
+ ## Development
28
+
29
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
+
31
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
+
33
+ ## Contributing
34
+
35
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/jquery_with_bootstrap. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
36
+
37
+ ## License
38
+
39
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
40
+
41
+ ## Code of Conduct
42
+
43
+ Everyone interacting in the JqueryWithBootstrap project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/jquery_with_bootstrap/blob/master/CODE_OF_CONDUCT.md).
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "jquery_with_bootstrap"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,45 @@
1
+
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "jquery_with_bootstrap/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "jquery_with_bootstrap"
8
+ spec.version = JqueryWithBootstrap::VERSION
9
+ spec.authors = ["Ravi Singh"]
10
+ spec.email = ["ravionrails@gmail.com"]
11
+
12
+ spec.summary = %q{Simple}
13
+ spec.description = %q{Simple}
14
+ spec.homepage = "https://rubygems.org/gems/jquery_with_bootstrap"
15
+ spec.license = "MIT"
16
+
17
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
19
+ if spec.respond_to?(:metadata)
20
+ # spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
21
+
22
+ spec.metadata["homepage_uri"] = spec.homepage
23
+ spec.metadata["source_code_uri"] = "https://github.com/ravi4rails/jquery_with_bootstrap"
24
+ # spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
25
+ else
26
+ raise "RubyGems 2.0 or newer is required to protect against " \
27
+ "public gem pushes."
28
+ end
29
+
30
+ # Specify which files should be added to the gem when it is released.
31
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
32
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
33
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
34
+ end
35
+ spec.bindir = "exe"
36
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
37
+ spec.require_paths = ["lib"]
38
+
39
+ spec.add_development_dependency "bundler", "~> 2.0"
40
+ spec.add_development_dependency "rake", "~> 10.0"
41
+ spec.add_development_dependency "rspec", "~> 3.0"
42
+ spec.add_dependency "rails"
43
+ spec.add_dependency "sass"
44
+ spec.add_dependency "sass-rails"
45
+ end
@@ -0,0 +1,8 @@
1
+ require "jquery_with_bootstrap/version"
2
+
3
+ module JqueryWithBootstrap
4
+ class Error < StandardError; end
5
+ class Engine < ::Rails::Engine
6
+ end
7
+ # Your code goes here...
8
+ end
@@ -0,0 +1,3 @@
1
+ module JqueryWithBootstrap
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,4435 @@
1
+ /*!
2
+ * Bootstrap v4.3.1 (https://getbootstrap.com/)
3
+ * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
+ */
6
+ (function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :
8
+ typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :
9
+ (global = global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));
10
+ }(this, function (exports, $, Popper) { 'use strict';
11
+
12
+ $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
+ Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
14
+
15
+ function _defineProperties(target, props) {
16
+ for (var i = 0; i < props.length; i++) {
17
+ var descriptor = props[i];
18
+ descriptor.enumerable = descriptor.enumerable || false;
19
+ descriptor.configurable = true;
20
+ if ("value" in descriptor) descriptor.writable = true;
21
+ Object.defineProperty(target, descriptor.key, descriptor);
22
+ }
23
+ }
24
+
25
+ function _createClass(Constructor, protoProps, staticProps) {
26
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27
+ if (staticProps) _defineProperties(Constructor, staticProps);
28
+ return Constructor;
29
+ }
30
+
31
+ function _defineProperty(obj, key, value) {
32
+ if (key in obj) {
33
+ Object.defineProperty(obj, key, {
34
+ value: value,
35
+ enumerable: true,
36
+ configurable: true,
37
+ writable: true
38
+ });
39
+ } else {
40
+ obj[key] = value;
41
+ }
42
+
43
+ return obj;
44
+ }
45
+
46
+ function _objectSpread(target) {
47
+ for (var i = 1; i < arguments.length; i++) {
48
+ var source = arguments[i] != null ? arguments[i] : {};
49
+ var ownKeys = Object.keys(source);
50
+
51
+ if (typeof Object.getOwnPropertySymbols === 'function') {
52
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
53
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
54
+ }));
55
+ }
56
+
57
+ ownKeys.forEach(function (key) {
58
+ _defineProperty(target, key, source[key]);
59
+ });
60
+ }
61
+
62
+ return target;
63
+ }
64
+
65
+ function _inheritsLoose(subClass, superClass) {
66
+ subClass.prototype = Object.create(superClass.prototype);
67
+ subClass.prototype.constructor = subClass;
68
+ subClass.__proto__ = superClass;
69
+ }
70
+
71
+ /**
72
+ * --------------------------------------------------------------------------
73
+ * Bootstrap (v4.3.1): util.js
74
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
75
+ * --------------------------------------------------------------------------
76
+ */
77
+ /**
78
+ * ------------------------------------------------------------------------
79
+ * Private TransitionEnd Helpers
80
+ * ------------------------------------------------------------------------
81
+ */
82
+
83
+ var TRANSITION_END = 'transitionend';
84
+ var MAX_UID = 1000000;
85
+ var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
86
+
87
+ function toType(obj) {
88
+ return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
89
+ }
90
+
91
+ function getSpecialTransitionEndEvent() {
92
+ return {
93
+ bindType: TRANSITION_END,
94
+ delegateType: TRANSITION_END,
95
+ handle: function handle(event) {
96
+ if ($(event.target).is(this)) {
97
+ return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
98
+ }
99
+
100
+ return undefined; // eslint-disable-line no-undefined
101
+ }
102
+ };
103
+ }
104
+
105
+ function transitionEndEmulator(duration) {
106
+ var _this = this;
107
+
108
+ var called = false;
109
+ $(this).one(Util.TRANSITION_END, function () {
110
+ called = true;
111
+ });
112
+ setTimeout(function () {
113
+ if (!called) {
114
+ Util.triggerTransitionEnd(_this);
115
+ }
116
+ }, duration);
117
+ return this;
118
+ }
119
+
120
+ function setTransitionEndSupport() {
121
+ $.fn.emulateTransitionEnd = transitionEndEmulator;
122
+ $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
123
+ }
124
+ /**
125
+ * --------------------------------------------------------------------------
126
+ * Public Util Api
127
+ * --------------------------------------------------------------------------
128
+ */
129
+
130
+
131
+ var Util = {
132
+ TRANSITION_END: 'bsTransitionEnd',
133
+ getUID: function getUID(prefix) {
134
+ do {
135
+ // eslint-disable-next-line no-bitwise
136
+ prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
137
+ } while (document.getElementById(prefix));
138
+
139
+ return prefix;
140
+ },
141
+ getSelectorFromElement: function getSelectorFromElement(element) {
142
+ var selector = element.getAttribute('data-target');
143
+
144
+ if (!selector || selector === '#') {
145
+ var hrefAttr = element.getAttribute('href');
146
+ selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';
147
+ }
148
+
149
+ try {
150
+ return document.querySelector(selector) ? selector : null;
151
+ } catch (err) {
152
+ return null;
153
+ }
154
+ },
155
+ getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
156
+ if (!element) {
157
+ return 0;
158
+ } // Get transition-duration of the element
159
+
160
+
161
+ var transitionDuration = $(element).css('transition-duration');
162
+ var transitionDelay = $(element).css('transition-delay');
163
+ var floatTransitionDuration = parseFloat(transitionDuration);
164
+ var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
165
+
166
+ if (!floatTransitionDuration && !floatTransitionDelay) {
167
+ return 0;
168
+ } // If multiple durations are defined, take the first
169
+
170
+
171
+ transitionDuration = transitionDuration.split(',')[0];
172
+ transitionDelay = transitionDelay.split(',')[0];
173
+ return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
174
+ },
175
+ reflow: function reflow(element) {
176
+ return element.offsetHeight;
177
+ },
178
+ triggerTransitionEnd: function triggerTransitionEnd(element) {
179
+ $(element).trigger(TRANSITION_END);
180
+ },
181
+ // TODO: Remove in v5
182
+ supportsTransitionEnd: function supportsTransitionEnd() {
183
+ return Boolean(TRANSITION_END);
184
+ },
185
+ isElement: function isElement(obj) {
186
+ return (obj[0] || obj).nodeType;
187
+ },
188
+ typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
189
+ for (var property in configTypes) {
190
+ if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
191
+ var expectedTypes = configTypes[property];
192
+ var value = config[property];
193
+ var valueType = value && Util.isElement(value) ? 'element' : toType(value);
194
+
195
+ if (!new RegExp(expectedTypes).test(valueType)) {
196
+ throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
197
+ }
198
+ }
199
+ }
200
+ },
201
+ findShadowRoot: function findShadowRoot(element) {
202
+ if (!document.documentElement.attachShadow) {
203
+ return null;
204
+ } // Can find the shadow root otherwise it'll return the document
205
+
206
+
207
+ if (typeof element.getRootNode === 'function') {
208
+ var root = element.getRootNode();
209
+ return root instanceof ShadowRoot ? root : null;
210
+ }
211
+
212
+ if (element instanceof ShadowRoot) {
213
+ return element;
214
+ } // when we don't find a shadow root
215
+
216
+
217
+ if (!element.parentNode) {
218
+ return null;
219
+ }
220
+
221
+ return Util.findShadowRoot(element.parentNode);
222
+ }
223
+ };
224
+ setTransitionEndSupport();
225
+
226
+ /**
227
+ * ------------------------------------------------------------------------
228
+ * Constants
229
+ * ------------------------------------------------------------------------
230
+ */
231
+
232
+ var NAME = 'alert';
233
+ var VERSION = '4.3.1';
234
+ var DATA_KEY = 'bs.alert';
235
+ var EVENT_KEY = "." + DATA_KEY;
236
+ var DATA_API_KEY = '.data-api';
237
+ var JQUERY_NO_CONFLICT = $.fn[NAME];
238
+ var Selector = {
239
+ DISMISS: '[data-dismiss="alert"]'
240
+ };
241
+ var Event = {
242
+ CLOSE: "close" + EVENT_KEY,
243
+ CLOSED: "closed" + EVENT_KEY,
244
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
245
+ };
246
+ var ClassName = {
247
+ ALERT: 'alert',
248
+ FADE: 'fade',
249
+ SHOW: 'show'
250
+ /**
251
+ * ------------------------------------------------------------------------
252
+ * Class Definition
253
+ * ------------------------------------------------------------------------
254
+ */
255
+
256
+ };
257
+
258
+ var Alert =
259
+ /*#__PURE__*/
260
+ function () {
261
+ function Alert(element) {
262
+ this._element = element;
263
+ } // Getters
264
+
265
+
266
+ var _proto = Alert.prototype;
267
+
268
+ // Public
269
+ _proto.close = function close(element) {
270
+ var rootElement = this._element;
271
+
272
+ if (element) {
273
+ rootElement = this._getRootElement(element);
274
+ }
275
+
276
+ var customEvent = this._triggerCloseEvent(rootElement);
277
+
278
+ if (customEvent.isDefaultPrevented()) {
279
+ return;
280
+ }
281
+
282
+ this._removeElement(rootElement);
283
+ };
284
+
285
+ _proto.dispose = function dispose() {
286
+ $.removeData(this._element, DATA_KEY);
287
+ this._element = null;
288
+ } // Private
289
+ ;
290
+
291
+ _proto._getRootElement = function _getRootElement(element) {
292
+ var selector = Util.getSelectorFromElement(element);
293
+ var parent = false;
294
+
295
+ if (selector) {
296
+ parent = document.querySelector(selector);
297
+ }
298
+
299
+ if (!parent) {
300
+ parent = $(element).closest("." + ClassName.ALERT)[0];
301
+ }
302
+
303
+ return parent;
304
+ };
305
+
306
+ _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
307
+ var closeEvent = $.Event(Event.CLOSE);
308
+ $(element).trigger(closeEvent);
309
+ return closeEvent;
310
+ };
311
+
312
+ _proto._removeElement = function _removeElement(element) {
313
+ var _this = this;
314
+
315
+ $(element).removeClass(ClassName.SHOW);
316
+
317
+ if (!$(element).hasClass(ClassName.FADE)) {
318
+ this._destroyElement(element);
319
+
320
+ return;
321
+ }
322
+
323
+ var transitionDuration = Util.getTransitionDurationFromElement(element);
324
+ $(element).one(Util.TRANSITION_END, function (event) {
325
+ return _this._destroyElement(element, event);
326
+ }).emulateTransitionEnd(transitionDuration);
327
+ };
328
+
329
+ _proto._destroyElement = function _destroyElement(element) {
330
+ $(element).detach().trigger(Event.CLOSED).remove();
331
+ } // Static
332
+ ;
333
+
334
+ Alert._jQueryInterface = function _jQueryInterface(config) {
335
+ return this.each(function () {
336
+ var $element = $(this);
337
+ var data = $element.data(DATA_KEY);
338
+
339
+ if (!data) {
340
+ data = new Alert(this);
341
+ $element.data(DATA_KEY, data);
342
+ }
343
+
344
+ if (config === 'close') {
345
+ data[config](this);
346
+ }
347
+ });
348
+ };
349
+
350
+ Alert._handleDismiss = function _handleDismiss(alertInstance) {
351
+ return function (event) {
352
+ if (event) {
353
+ event.preventDefault();
354
+ }
355
+
356
+ alertInstance.close(this);
357
+ };
358
+ };
359
+
360
+ _createClass(Alert, null, [{
361
+ key: "VERSION",
362
+ get: function get() {
363
+ return VERSION;
364
+ }
365
+ }]);
366
+
367
+ return Alert;
368
+ }();
369
+ /**
370
+ * ------------------------------------------------------------------------
371
+ * Data Api implementation
372
+ * ------------------------------------------------------------------------
373
+ */
374
+
375
+
376
+ $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
377
+ /**
378
+ * ------------------------------------------------------------------------
379
+ * jQuery
380
+ * ------------------------------------------------------------------------
381
+ */
382
+
383
+ $.fn[NAME] = Alert._jQueryInterface;
384
+ $.fn[NAME].Constructor = Alert;
385
+
386
+ $.fn[NAME].noConflict = function () {
387
+ $.fn[NAME] = JQUERY_NO_CONFLICT;
388
+ return Alert._jQueryInterface;
389
+ };
390
+
391
+ /**
392
+ * ------------------------------------------------------------------------
393
+ * Constants
394
+ * ------------------------------------------------------------------------
395
+ */
396
+
397
+ var NAME$1 = 'button';
398
+ var VERSION$1 = '4.3.1';
399
+ var DATA_KEY$1 = 'bs.button';
400
+ var EVENT_KEY$1 = "." + DATA_KEY$1;
401
+ var DATA_API_KEY$1 = '.data-api';
402
+ var JQUERY_NO_CONFLICT$1 = $.fn[NAME$1];
403
+ var ClassName$1 = {
404
+ ACTIVE: 'active',
405
+ BUTTON: 'btn',
406
+ FOCUS: 'focus'
407
+ };
408
+ var Selector$1 = {
409
+ DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
410
+ DATA_TOGGLE: '[data-toggle="buttons"]',
411
+ INPUT: 'input:not([type="hidden"])',
412
+ ACTIVE: '.active',
413
+ BUTTON: '.btn'
414
+ };
415
+ var Event$1 = {
416
+ CLICK_DATA_API: "click" + EVENT_KEY$1 + DATA_API_KEY$1,
417
+ FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY$1 + DATA_API_KEY$1 + " " + ("blur" + EVENT_KEY$1 + DATA_API_KEY$1)
418
+ /**
419
+ * ------------------------------------------------------------------------
420
+ * Class Definition
421
+ * ------------------------------------------------------------------------
422
+ */
423
+
424
+ };
425
+
426
+ var Button =
427
+ /*#__PURE__*/
428
+ function () {
429
+ function Button(element) {
430
+ this._element = element;
431
+ } // Getters
432
+
433
+
434
+ var _proto = Button.prototype;
435
+
436
+ // Public
437
+ _proto.toggle = function toggle() {
438
+ var triggerChangeEvent = true;
439
+ var addAriaPressed = true;
440
+ var rootElement = $(this._element).closest(Selector$1.DATA_TOGGLE)[0];
441
+
442
+ if (rootElement) {
443
+ var input = this._element.querySelector(Selector$1.INPUT);
444
+
445
+ if (input) {
446
+ if (input.type === 'radio') {
447
+ if (input.checked && this._element.classList.contains(ClassName$1.ACTIVE)) {
448
+ triggerChangeEvent = false;
449
+ } else {
450
+ var activeElement = rootElement.querySelector(Selector$1.ACTIVE);
451
+
452
+ if (activeElement) {
453
+ $(activeElement).removeClass(ClassName$1.ACTIVE);
454
+ }
455
+ }
456
+ }
457
+
458
+ if (triggerChangeEvent) {
459
+ if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
460
+ return;
461
+ }
462
+
463
+ input.checked = !this._element.classList.contains(ClassName$1.ACTIVE);
464
+ $(input).trigger('change');
465
+ }
466
+
467
+ input.focus();
468
+ addAriaPressed = false;
469
+ }
470
+ }
471
+
472
+ if (addAriaPressed) {
473
+ this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName$1.ACTIVE));
474
+ }
475
+
476
+ if (triggerChangeEvent) {
477
+ $(this._element).toggleClass(ClassName$1.ACTIVE);
478
+ }
479
+ };
480
+
481
+ _proto.dispose = function dispose() {
482
+ $.removeData(this._element, DATA_KEY$1);
483
+ this._element = null;
484
+ } // Static
485
+ ;
486
+
487
+ Button._jQueryInterface = function _jQueryInterface(config) {
488
+ return this.each(function () {
489
+ var data = $(this).data(DATA_KEY$1);
490
+
491
+ if (!data) {
492
+ data = new Button(this);
493
+ $(this).data(DATA_KEY$1, data);
494
+ }
495
+
496
+ if (config === 'toggle') {
497
+ data[config]();
498
+ }
499
+ });
500
+ };
501
+
502
+ _createClass(Button, null, [{
503
+ key: "VERSION",
504
+ get: function get() {
505
+ return VERSION$1;
506
+ }
507
+ }]);
508
+
509
+ return Button;
510
+ }();
511
+ /**
512
+ * ------------------------------------------------------------------------
513
+ * Data Api implementation
514
+ * ------------------------------------------------------------------------
515
+ */
516
+
517
+
518
+ $(document).on(Event$1.CLICK_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {
519
+ event.preventDefault();
520
+ var button = event.target;
521
+
522
+ if (!$(button).hasClass(ClassName$1.BUTTON)) {
523
+ button = $(button).closest(Selector$1.BUTTON);
524
+ }
525
+
526
+ Button._jQueryInterface.call($(button), 'toggle');
527
+ }).on(Event$1.FOCUS_BLUR_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {
528
+ var button = $(event.target).closest(Selector$1.BUTTON)[0];
529
+ $(button).toggleClass(ClassName$1.FOCUS, /^focus(in)?$/.test(event.type));
530
+ });
531
+ /**
532
+ * ------------------------------------------------------------------------
533
+ * jQuery
534
+ * ------------------------------------------------------------------------
535
+ */
536
+
537
+ $.fn[NAME$1] = Button._jQueryInterface;
538
+ $.fn[NAME$1].Constructor = Button;
539
+
540
+ $.fn[NAME$1].noConflict = function () {
541
+ $.fn[NAME$1] = JQUERY_NO_CONFLICT$1;
542
+ return Button._jQueryInterface;
543
+ };
544
+
545
+ /**
546
+ * ------------------------------------------------------------------------
547
+ * Constants
548
+ * ------------------------------------------------------------------------
549
+ */
550
+
551
+ var NAME$2 = 'carousel';
552
+ var VERSION$2 = '4.3.1';
553
+ var DATA_KEY$2 = 'bs.carousel';
554
+ var EVENT_KEY$2 = "." + DATA_KEY$2;
555
+ var DATA_API_KEY$2 = '.data-api';
556
+ var JQUERY_NO_CONFLICT$2 = $.fn[NAME$2];
557
+ var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
558
+
559
+ var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
560
+
561
+ var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
562
+
563
+ var SWIPE_THRESHOLD = 40;
564
+ var Default = {
565
+ interval: 5000,
566
+ keyboard: true,
567
+ slide: false,
568
+ pause: 'hover',
569
+ wrap: true,
570
+ touch: true
571
+ };
572
+ var DefaultType = {
573
+ interval: '(number|boolean)',
574
+ keyboard: 'boolean',
575
+ slide: '(boolean|string)',
576
+ pause: '(string|boolean)',
577
+ wrap: 'boolean',
578
+ touch: 'boolean'
579
+ };
580
+ var Direction = {
581
+ NEXT: 'next',
582
+ PREV: 'prev',
583
+ LEFT: 'left',
584
+ RIGHT: 'right'
585
+ };
586
+ var Event$2 = {
587
+ SLIDE: "slide" + EVENT_KEY$2,
588
+ SLID: "slid" + EVENT_KEY$2,
589
+ KEYDOWN: "keydown" + EVENT_KEY$2,
590
+ MOUSEENTER: "mouseenter" + EVENT_KEY$2,
591
+ MOUSELEAVE: "mouseleave" + EVENT_KEY$2,
592
+ TOUCHSTART: "touchstart" + EVENT_KEY$2,
593
+ TOUCHMOVE: "touchmove" + EVENT_KEY$2,
594
+ TOUCHEND: "touchend" + EVENT_KEY$2,
595
+ POINTERDOWN: "pointerdown" + EVENT_KEY$2,
596
+ POINTERUP: "pointerup" + EVENT_KEY$2,
597
+ DRAG_START: "dragstart" + EVENT_KEY$2,
598
+ LOAD_DATA_API: "load" + EVENT_KEY$2 + DATA_API_KEY$2,
599
+ CLICK_DATA_API: "click" + EVENT_KEY$2 + DATA_API_KEY$2
600
+ };
601
+ var ClassName$2 = {
602
+ CAROUSEL: 'carousel',
603
+ ACTIVE: 'active',
604
+ SLIDE: 'slide',
605
+ RIGHT: 'carousel-item-right',
606
+ LEFT: 'carousel-item-left',
607
+ NEXT: 'carousel-item-next',
608
+ PREV: 'carousel-item-prev',
609
+ ITEM: 'carousel-item',
610
+ POINTER_EVENT: 'pointer-event'
611
+ };
612
+ var Selector$2 = {
613
+ ACTIVE: '.active',
614
+ ACTIVE_ITEM: '.active.carousel-item',
615
+ ITEM: '.carousel-item',
616
+ ITEM_IMG: '.carousel-item img',
617
+ NEXT_PREV: '.carousel-item-next, .carousel-item-prev',
618
+ INDICATORS: '.carousel-indicators',
619
+ DATA_SLIDE: '[data-slide], [data-slide-to]',
620
+ DATA_RIDE: '[data-ride="carousel"]'
621
+ };
622
+ var PointerType = {
623
+ TOUCH: 'touch',
624
+ PEN: 'pen'
625
+ /**
626
+ * ------------------------------------------------------------------------
627
+ * Class Definition
628
+ * ------------------------------------------------------------------------
629
+ */
630
+
631
+ };
632
+
633
+ var Carousel =
634
+ /*#__PURE__*/
635
+ function () {
636
+ function Carousel(element, config) {
637
+ this._items = null;
638
+ this._interval = null;
639
+ this._activeElement = null;
640
+ this._isPaused = false;
641
+ this._isSliding = false;
642
+ this.touchTimeout = null;
643
+ this.touchStartX = 0;
644
+ this.touchDeltaX = 0;
645
+ this._config = this._getConfig(config);
646
+ this._element = element;
647
+ this._indicatorsElement = this._element.querySelector(Selector$2.INDICATORS);
648
+ this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
649
+ this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);
650
+
651
+ this._addEventListeners();
652
+ } // Getters
653
+
654
+
655
+ var _proto = Carousel.prototype;
656
+
657
+ // Public
658
+ _proto.next = function next() {
659
+ if (!this._isSliding) {
660
+ this._slide(Direction.NEXT);
661
+ }
662
+ };
663
+
664
+ _proto.nextWhenVisible = function nextWhenVisible() {
665
+ // Don't call next when the page isn't visible
666
+ // or the carousel or its parent isn't visible
667
+ if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {
668
+ this.next();
669
+ }
670
+ };
671
+
672
+ _proto.prev = function prev() {
673
+ if (!this._isSliding) {
674
+ this._slide(Direction.PREV);
675
+ }
676
+ };
677
+
678
+ _proto.pause = function pause(event) {
679
+ if (!event) {
680
+ this._isPaused = true;
681
+ }
682
+
683
+ if (this._element.querySelector(Selector$2.NEXT_PREV)) {
684
+ Util.triggerTransitionEnd(this._element);
685
+ this.cycle(true);
686
+ }
687
+
688
+ clearInterval(this._interval);
689
+ this._interval = null;
690
+ };
691
+
692
+ _proto.cycle = function cycle(event) {
693
+ if (!event) {
694
+ this._isPaused = false;
695
+ }
696
+
697
+ if (this._interval) {
698
+ clearInterval(this._interval);
699
+ this._interval = null;
700
+ }
701
+
702
+ if (this._config.interval && !this._isPaused) {
703
+ this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
704
+ }
705
+ };
706
+
707
+ _proto.to = function to(index) {
708
+ var _this = this;
709
+
710
+ this._activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);
711
+
712
+ var activeIndex = this._getItemIndex(this._activeElement);
713
+
714
+ if (index > this._items.length - 1 || index < 0) {
715
+ return;
716
+ }
717
+
718
+ if (this._isSliding) {
719
+ $(this._element).one(Event$2.SLID, function () {
720
+ return _this.to(index);
721
+ });
722
+ return;
723
+ }
724
+
725
+ if (activeIndex === index) {
726
+ this.pause();
727
+ this.cycle();
728
+ return;
729
+ }
730
+
731
+ var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;
732
+
733
+ this._slide(direction, this._items[index]);
734
+ };
735
+
736
+ _proto.dispose = function dispose() {
737
+ $(this._element).off(EVENT_KEY$2);
738
+ $.removeData(this._element, DATA_KEY$2);
739
+ this._items = null;
740
+ this._config = null;
741
+ this._element = null;
742
+ this._interval = null;
743
+ this._isPaused = null;
744
+ this._isSliding = null;
745
+ this._activeElement = null;
746
+ this._indicatorsElement = null;
747
+ } // Private
748
+ ;
749
+
750
+ _proto._getConfig = function _getConfig(config) {
751
+ config = _objectSpread({}, Default, config);
752
+ Util.typeCheckConfig(NAME$2, config, DefaultType);
753
+ return config;
754
+ };
755
+
756
+ _proto._handleSwipe = function _handleSwipe() {
757
+ var absDeltax = Math.abs(this.touchDeltaX);
758
+
759
+ if (absDeltax <= SWIPE_THRESHOLD) {
760
+ return;
761
+ }
762
+
763
+ var direction = absDeltax / this.touchDeltaX; // swipe left
764
+
765
+ if (direction > 0) {
766
+ this.prev();
767
+ } // swipe right
768
+
769
+
770
+ if (direction < 0) {
771
+ this.next();
772
+ }
773
+ };
774
+
775
+ _proto._addEventListeners = function _addEventListeners() {
776
+ var _this2 = this;
777
+
778
+ if (this._config.keyboard) {
779
+ $(this._element).on(Event$2.KEYDOWN, function (event) {
780
+ return _this2._keydown(event);
781
+ });
782
+ }
783
+
784
+ if (this._config.pause === 'hover') {
785
+ $(this._element).on(Event$2.MOUSEENTER, function (event) {
786
+ return _this2.pause(event);
787
+ }).on(Event$2.MOUSELEAVE, function (event) {
788
+ return _this2.cycle(event);
789
+ });
790
+ }
791
+
792
+ if (this._config.touch) {
793
+ this._addTouchEventListeners();
794
+ }
795
+ };
796
+
797
+ _proto._addTouchEventListeners = function _addTouchEventListeners() {
798
+ var _this3 = this;
799
+
800
+ if (!this._touchSupported) {
801
+ return;
802
+ }
803
+
804
+ var start = function start(event) {
805
+ if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
806
+ _this3.touchStartX = event.originalEvent.clientX;
807
+ } else if (!_this3._pointerEvent) {
808
+ _this3.touchStartX = event.originalEvent.touches[0].clientX;
809
+ }
810
+ };
811
+
812
+ var move = function move(event) {
813
+ // ensure swiping with one touch and not pinching
814
+ if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {
815
+ _this3.touchDeltaX = 0;
816
+ } else {
817
+ _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;
818
+ }
819
+ };
820
+
821
+ var end = function end(event) {
822
+ if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
823
+ _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;
824
+ }
825
+
826
+ _this3._handleSwipe();
827
+
828
+ if (_this3._config.pause === 'hover') {
829
+ // If it's a touch-enabled device, mouseenter/leave are fired as
830
+ // part of the mouse compatibility events on first tap - the carousel
831
+ // would stop cycling until user tapped out of it;
832
+ // here, we listen for touchend, explicitly pause the carousel
833
+ // (as if it's the second time we tap on it, mouseenter compat event
834
+ // is NOT fired) and after a timeout (to allow for mouse compatibility
835
+ // events to fire) we explicitly restart cycling
836
+ _this3.pause();
837
+
838
+ if (_this3.touchTimeout) {
839
+ clearTimeout(_this3.touchTimeout);
840
+ }
841
+
842
+ _this3.touchTimeout = setTimeout(function (event) {
843
+ return _this3.cycle(event);
844
+ }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);
845
+ }
846
+ };
847
+
848
+ $(this._element.querySelectorAll(Selector$2.ITEM_IMG)).on(Event$2.DRAG_START, function (e) {
849
+ return e.preventDefault();
850
+ });
851
+
852
+ if (this._pointerEvent) {
853
+ $(this._element).on(Event$2.POINTERDOWN, function (event) {
854
+ return start(event);
855
+ });
856
+ $(this._element).on(Event$2.POINTERUP, function (event) {
857
+ return end(event);
858
+ });
859
+
860
+ this._element.classList.add(ClassName$2.POINTER_EVENT);
861
+ } else {
862
+ $(this._element).on(Event$2.TOUCHSTART, function (event) {
863
+ return start(event);
864
+ });
865
+ $(this._element).on(Event$2.TOUCHMOVE, function (event) {
866
+ return move(event);
867
+ });
868
+ $(this._element).on(Event$2.TOUCHEND, function (event) {
869
+ return end(event);
870
+ });
871
+ }
872
+ };
873
+
874
+ _proto._keydown = function _keydown(event) {
875
+ if (/input|textarea/i.test(event.target.tagName)) {
876
+ return;
877
+ }
878
+
879
+ switch (event.which) {
880
+ case ARROW_LEFT_KEYCODE:
881
+ event.preventDefault();
882
+ this.prev();
883
+ break;
884
+
885
+ case ARROW_RIGHT_KEYCODE:
886
+ event.preventDefault();
887
+ this.next();
888
+ break;
889
+
890
+ default:
891
+ }
892
+ };
893
+
894
+ _proto._getItemIndex = function _getItemIndex(element) {
895
+ this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(Selector$2.ITEM)) : [];
896
+ return this._items.indexOf(element);
897
+ };
898
+
899
+ _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
900
+ var isNextDirection = direction === Direction.NEXT;
901
+ var isPrevDirection = direction === Direction.PREV;
902
+
903
+ var activeIndex = this._getItemIndex(activeElement);
904
+
905
+ var lastItemIndex = this._items.length - 1;
906
+ var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
907
+
908
+ if (isGoingToWrap && !this._config.wrap) {
909
+ return activeElement;
910
+ }
911
+
912
+ var delta = direction === Direction.PREV ? -1 : 1;
913
+ var itemIndex = (activeIndex + delta) % this._items.length;
914
+ return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
915
+ };
916
+
917
+ _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
918
+ var targetIndex = this._getItemIndex(relatedTarget);
919
+
920
+ var fromIndex = this._getItemIndex(this._element.querySelector(Selector$2.ACTIVE_ITEM));
921
+
922
+ var slideEvent = $.Event(Event$2.SLIDE, {
923
+ relatedTarget: relatedTarget,
924
+ direction: eventDirectionName,
925
+ from: fromIndex,
926
+ to: targetIndex
927
+ });
928
+ $(this._element).trigger(slideEvent);
929
+ return slideEvent;
930
+ };
931
+
932
+ _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
933
+ if (this._indicatorsElement) {
934
+ var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector$2.ACTIVE));
935
+ $(indicators).removeClass(ClassName$2.ACTIVE);
936
+
937
+ var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
938
+
939
+ if (nextIndicator) {
940
+ $(nextIndicator).addClass(ClassName$2.ACTIVE);
941
+ }
942
+ }
943
+ };
944
+
945
+ _proto._slide = function _slide(direction, element) {
946
+ var _this4 = this;
947
+
948
+ var activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);
949
+
950
+ var activeElementIndex = this._getItemIndex(activeElement);
951
+
952
+ var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
953
+
954
+ var nextElementIndex = this._getItemIndex(nextElement);
955
+
956
+ var isCycling = Boolean(this._interval);
957
+ var directionalClassName;
958
+ var orderClassName;
959
+ var eventDirectionName;
960
+
961
+ if (direction === Direction.NEXT) {
962
+ directionalClassName = ClassName$2.LEFT;
963
+ orderClassName = ClassName$2.NEXT;
964
+ eventDirectionName = Direction.LEFT;
965
+ } else {
966
+ directionalClassName = ClassName$2.RIGHT;
967
+ orderClassName = ClassName$2.PREV;
968
+ eventDirectionName = Direction.RIGHT;
969
+ }
970
+
971
+ if (nextElement && $(nextElement).hasClass(ClassName$2.ACTIVE)) {
972
+ this._isSliding = false;
973
+ return;
974
+ }
975
+
976
+ var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
977
+
978
+ if (slideEvent.isDefaultPrevented()) {
979
+ return;
980
+ }
981
+
982
+ if (!activeElement || !nextElement) {
983
+ // Some weirdness is happening, so we bail
984
+ return;
985
+ }
986
+
987
+ this._isSliding = true;
988
+
989
+ if (isCycling) {
990
+ this.pause();
991
+ }
992
+
993
+ this._setActiveIndicatorElement(nextElement);
994
+
995
+ var slidEvent = $.Event(Event$2.SLID, {
996
+ relatedTarget: nextElement,
997
+ direction: eventDirectionName,
998
+ from: activeElementIndex,
999
+ to: nextElementIndex
1000
+ });
1001
+
1002
+ if ($(this._element).hasClass(ClassName$2.SLIDE)) {
1003
+ $(nextElement).addClass(orderClassName);
1004
+ Util.reflow(nextElement);
1005
+ $(activeElement).addClass(directionalClassName);
1006
+ $(nextElement).addClass(directionalClassName);
1007
+ var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);
1008
+
1009
+ if (nextElementInterval) {
1010
+ this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
1011
+ this._config.interval = nextElementInterval;
1012
+ } else {
1013
+ this._config.interval = this._config.defaultInterval || this._config.interval;
1014
+ }
1015
+
1016
+ var transitionDuration = Util.getTransitionDurationFromElement(activeElement);
1017
+ $(activeElement).one(Util.TRANSITION_END, function () {
1018
+ $(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName$2.ACTIVE);
1019
+ $(activeElement).removeClass(ClassName$2.ACTIVE + " " + orderClassName + " " + directionalClassName);
1020
+ _this4._isSliding = false;
1021
+ setTimeout(function () {
1022
+ return $(_this4._element).trigger(slidEvent);
1023
+ }, 0);
1024
+ }).emulateTransitionEnd(transitionDuration);
1025
+ } else {
1026
+ $(activeElement).removeClass(ClassName$2.ACTIVE);
1027
+ $(nextElement).addClass(ClassName$2.ACTIVE);
1028
+ this._isSliding = false;
1029
+ $(this._element).trigger(slidEvent);
1030
+ }
1031
+
1032
+ if (isCycling) {
1033
+ this.cycle();
1034
+ }
1035
+ } // Static
1036
+ ;
1037
+
1038
+ Carousel._jQueryInterface = function _jQueryInterface(config) {
1039
+ return this.each(function () {
1040
+ var data = $(this).data(DATA_KEY$2);
1041
+
1042
+ var _config = _objectSpread({}, Default, $(this).data());
1043
+
1044
+ if (typeof config === 'object') {
1045
+ _config = _objectSpread({}, _config, config);
1046
+ }
1047
+
1048
+ var action = typeof config === 'string' ? config : _config.slide;
1049
+
1050
+ if (!data) {
1051
+ data = new Carousel(this, _config);
1052
+ $(this).data(DATA_KEY$2, data);
1053
+ }
1054
+
1055
+ if (typeof config === 'number') {
1056
+ data.to(config);
1057
+ } else if (typeof action === 'string') {
1058
+ if (typeof data[action] === 'undefined') {
1059
+ throw new TypeError("No method named \"" + action + "\"");
1060
+ }
1061
+
1062
+ data[action]();
1063
+ } else if (_config.interval && _config.ride) {
1064
+ data.pause();
1065
+ data.cycle();
1066
+ }
1067
+ });
1068
+ };
1069
+
1070
+ Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
1071
+ var selector = Util.getSelectorFromElement(this);
1072
+
1073
+ if (!selector) {
1074
+ return;
1075
+ }
1076
+
1077
+ var target = $(selector)[0];
1078
+
1079
+ if (!target || !$(target).hasClass(ClassName$2.CAROUSEL)) {
1080
+ return;
1081
+ }
1082
+
1083
+ var config = _objectSpread({}, $(target).data(), $(this).data());
1084
+
1085
+ var slideIndex = this.getAttribute('data-slide-to');
1086
+
1087
+ if (slideIndex) {
1088
+ config.interval = false;
1089
+ }
1090
+
1091
+ Carousel._jQueryInterface.call($(target), config);
1092
+
1093
+ if (slideIndex) {
1094
+ $(target).data(DATA_KEY$2).to(slideIndex);
1095
+ }
1096
+
1097
+ event.preventDefault();
1098
+ };
1099
+
1100
+ _createClass(Carousel, null, [{
1101
+ key: "VERSION",
1102
+ get: function get() {
1103
+ return VERSION$2;
1104
+ }
1105
+ }, {
1106
+ key: "Default",
1107
+ get: function get() {
1108
+ return Default;
1109
+ }
1110
+ }]);
1111
+
1112
+ return Carousel;
1113
+ }();
1114
+ /**
1115
+ * ------------------------------------------------------------------------
1116
+ * Data Api implementation
1117
+ * ------------------------------------------------------------------------
1118
+ */
1119
+
1120
+
1121
+ $(document).on(Event$2.CLICK_DATA_API, Selector$2.DATA_SLIDE, Carousel._dataApiClickHandler);
1122
+ $(window).on(Event$2.LOAD_DATA_API, function () {
1123
+ var carousels = [].slice.call(document.querySelectorAll(Selector$2.DATA_RIDE));
1124
+
1125
+ for (var i = 0, len = carousels.length; i < len; i++) {
1126
+ var $carousel = $(carousels[i]);
1127
+
1128
+ Carousel._jQueryInterface.call($carousel, $carousel.data());
1129
+ }
1130
+ });
1131
+ /**
1132
+ * ------------------------------------------------------------------------
1133
+ * jQuery
1134
+ * ------------------------------------------------------------------------
1135
+ */
1136
+
1137
+ $.fn[NAME$2] = Carousel._jQueryInterface;
1138
+ $.fn[NAME$2].Constructor = Carousel;
1139
+
1140
+ $.fn[NAME$2].noConflict = function () {
1141
+ $.fn[NAME$2] = JQUERY_NO_CONFLICT$2;
1142
+ return Carousel._jQueryInterface;
1143
+ };
1144
+
1145
+ /**
1146
+ * ------------------------------------------------------------------------
1147
+ * Constants
1148
+ * ------------------------------------------------------------------------
1149
+ */
1150
+
1151
+ var NAME$3 = 'collapse';
1152
+ var VERSION$3 = '4.3.1';
1153
+ var DATA_KEY$3 = 'bs.collapse';
1154
+ var EVENT_KEY$3 = "." + DATA_KEY$3;
1155
+ var DATA_API_KEY$3 = '.data-api';
1156
+ var JQUERY_NO_CONFLICT$3 = $.fn[NAME$3];
1157
+ var Default$1 = {
1158
+ toggle: true,
1159
+ parent: ''
1160
+ };
1161
+ var DefaultType$1 = {
1162
+ toggle: 'boolean',
1163
+ parent: '(string|element)'
1164
+ };
1165
+ var Event$3 = {
1166
+ SHOW: "show" + EVENT_KEY$3,
1167
+ SHOWN: "shown" + EVENT_KEY$3,
1168
+ HIDE: "hide" + EVENT_KEY$3,
1169
+ HIDDEN: "hidden" + EVENT_KEY$3,
1170
+ CLICK_DATA_API: "click" + EVENT_KEY$3 + DATA_API_KEY$3
1171
+ };
1172
+ var ClassName$3 = {
1173
+ SHOW: 'show',
1174
+ COLLAPSE: 'collapse',
1175
+ COLLAPSING: 'collapsing',
1176
+ COLLAPSED: 'collapsed'
1177
+ };
1178
+ var Dimension = {
1179
+ WIDTH: 'width',
1180
+ HEIGHT: 'height'
1181
+ };
1182
+ var Selector$3 = {
1183
+ ACTIVES: '.show, .collapsing',
1184
+ DATA_TOGGLE: '[data-toggle="collapse"]'
1185
+ /**
1186
+ * ------------------------------------------------------------------------
1187
+ * Class Definition
1188
+ * ------------------------------------------------------------------------
1189
+ */
1190
+
1191
+ };
1192
+
1193
+ var Collapse =
1194
+ /*#__PURE__*/
1195
+ function () {
1196
+ function Collapse(element, config) {
1197
+ this._isTransitioning = false;
1198
+ this._element = element;
1199
+ this._config = this._getConfig(config);
1200
+ this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
1201
+ var toggleList = [].slice.call(document.querySelectorAll(Selector$3.DATA_TOGGLE));
1202
+
1203
+ for (var i = 0, len = toggleList.length; i < len; i++) {
1204
+ var elem = toggleList[i];
1205
+ var selector = Util.getSelectorFromElement(elem);
1206
+ var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {
1207
+ return foundElem === element;
1208
+ });
1209
+
1210
+ if (selector !== null && filterElement.length > 0) {
1211
+ this._selector = selector;
1212
+
1213
+ this._triggerArray.push(elem);
1214
+ }
1215
+ }
1216
+
1217
+ this._parent = this._config.parent ? this._getParent() : null;
1218
+
1219
+ if (!this._config.parent) {
1220
+ this._addAriaAndCollapsedClass(this._element, this._triggerArray);
1221
+ }
1222
+
1223
+ if (this._config.toggle) {
1224
+ this.toggle();
1225
+ }
1226
+ } // Getters
1227
+
1228
+
1229
+ var _proto = Collapse.prototype;
1230
+
1231
+ // Public
1232
+ _proto.toggle = function toggle() {
1233
+ if ($(this._element).hasClass(ClassName$3.SHOW)) {
1234
+ this.hide();
1235
+ } else {
1236
+ this.show();
1237
+ }
1238
+ };
1239
+
1240
+ _proto.show = function show() {
1241
+ var _this = this;
1242
+
1243
+ if (this._isTransitioning || $(this._element).hasClass(ClassName$3.SHOW)) {
1244
+ return;
1245
+ }
1246
+
1247
+ var actives;
1248
+ var activesData;
1249
+
1250
+ if (this._parent) {
1251
+ actives = [].slice.call(this._parent.querySelectorAll(Selector$3.ACTIVES)).filter(function (elem) {
1252
+ if (typeof _this._config.parent === 'string') {
1253
+ return elem.getAttribute('data-parent') === _this._config.parent;
1254
+ }
1255
+
1256
+ return elem.classList.contains(ClassName$3.COLLAPSE);
1257
+ });
1258
+
1259
+ if (actives.length === 0) {
1260
+ actives = null;
1261
+ }
1262
+ }
1263
+
1264
+ if (actives) {
1265
+ activesData = $(actives).not(this._selector).data(DATA_KEY$3);
1266
+
1267
+ if (activesData && activesData._isTransitioning) {
1268
+ return;
1269
+ }
1270
+ }
1271
+
1272
+ var startEvent = $.Event(Event$3.SHOW);
1273
+ $(this._element).trigger(startEvent);
1274
+
1275
+ if (startEvent.isDefaultPrevented()) {
1276
+ return;
1277
+ }
1278
+
1279
+ if (actives) {
1280
+ Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');
1281
+
1282
+ if (!activesData) {
1283
+ $(actives).data(DATA_KEY$3, null);
1284
+ }
1285
+ }
1286
+
1287
+ var dimension = this._getDimension();
1288
+
1289
+ $(this._element).removeClass(ClassName$3.COLLAPSE).addClass(ClassName$3.COLLAPSING);
1290
+ this._element.style[dimension] = 0;
1291
+
1292
+ if (this._triggerArray.length) {
1293
+ $(this._triggerArray).removeClass(ClassName$3.COLLAPSED).attr('aria-expanded', true);
1294
+ }
1295
+
1296
+ this.setTransitioning(true);
1297
+
1298
+ var complete = function complete() {
1299
+ $(_this._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).addClass(ClassName$3.SHOW);
1300
+ _this._element.style[dimension] = '';
1301
+
1302
+ _this.setTransitioning(false);
1303
+
1304
+ $(_this._element).trigger(Event$3.SHOWN);
1305
+ };
1306
+
1307
+ var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
1308
+ var scrollSize = "scroll" + capitalizedDimension;
1309
+ var transitionDuration = Util.getTransitionDurationFromElement(this._element);
1310
+ $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
1311
+ this._element.style[dimension] = this._element[scrollSize] + "px";
1312
+ };
1313
+
1314
+ _proto.hide = function hide() {
1315
+ var _this2 = this;
1316
+
1317
+ if (this._isTransitioning || !$(this._element).hasClass(ClassName$3.SHOW)) {
1318
+ return;
1319
+ }
1320
+
1321
+ var startEvent = $.Event(Event$3.HIDE);
1322
+ $(this._element).trigger(startEvent);
1323
+
1324
+ if (startEvent.isDefaultPrevented()) {
1325
+ return;
1326
+ }
1327
+
1328
+ var dimension = this._getDimension();
1329
+
1330
+ this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
1331
+ Util.reflow(this._element);
1332
+ $(this._element).addClass(ClassName$3.COLLAPSING).removeClass(ClassName$3.COLLAPSE).removeClass(ClassName$3.SHOW);
1333
+ var triggerArrayLength = this._triggerArray.length;
1334
+
1335
+ if (triggerArrayLength > 0) {
1336
+ for (var i = 0; i < triggerArrayLength; i++) {
1337
+ var trigger = this._triggerArray[i];
1338
+ var selector = Util.getSelectorFromElement(trigger);
1339
+
1340
+ if (selector !== null) {
1341
+ var $elem = $([].slice.call(document.querySelectorAll(selector)));
1342
+
1343
+ if (!$elem.hasClass(ClassName$3.SHOW)) {
1344
+ $(trigger).addClass(ClassName$3.COLLAPSED).attr('aria-expanded', false);
1345
+ }
1346
+ }
1347
+ }
1348
+ }
1349
+
1350
+ this.setTransitioning(true);
1351
+
1352
+ var complete = function complete() {
1353
+ _this2.setTransitioning(false);
1354
+
1355
+ $(_this2._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).trigger(Event$3.HIDDEN);
1356
+ };
1357
+
1358
+ this._element.style[dimension] = '';
1359
+ var transitionDuration = Util.getTransitionDurationFromElement(this._element);
1360
+ $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
1361
+ };
1362
+
1363
+ _proto.setTransitioning = function setTransitioning(isTransitioning) {
1364
+ this._isTransitioning = isTransitioning;
1365
+ };
1366
+
1367
+ _proto.dispose = function dispose() {
1368
+ $.removeData(this._element, DATA_KEY$3);
1369
+ this._config = null;
1370
+ this._parent = null;
1371
+ this._element = null;
1372
+ this._triggerArray = null;
1373
+ this._isTransitioning = null;
1374
+ } // Private
1375
+ ;
1376
+
1377
+ _proto._getConfig = function _getConfig(config) {
1378
+ config = _objectSpread({}, Default$1, config);
1379
+ config.toggle = Boolean(config.toggle); // Coerce string values
1380
+
1381
+ Util.typeCheckConfig(NAME$3, config, DefaultType$1);
1382
+ return config;
1383
+ };
1384
+
1385
+ _proto._getDimension = function _getDimension() {
1386
+ var hasWidth = $(this._element).hasClass(Dimension.WIDTH);
1387
+ return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
1388
+ };
1389
+
1390
+ _proto._getParent = function _getParent() {
1391
+ var _this3 = this;
1392
+
1393
+ var parent;
1394
+
1395
+ if (Util.isElement(this._config.parent)) {
1396
+ parent = this._config.parent; // It's a jQuery object
1397
+
1398
+ if (typeof this._config.parent.jquery !== 'undefined') {
1399
+ parent = this._config.parent[0];
1400
+ }
1401
+ } else {
1402
+ parent = document.querySelector(this._config.parent);
1403
+ }
1404
+
1405
+ var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
1406
+ var children = [].slice.call(parent.querySelectorAll(selector));
1407
+ $(children).each(function (i, element) {
1408
+ _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
1409
+ });
1410
+ return parent;
1411
+ };
1412
+
1413
+ _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
1414
+ var isOpen = $(element).hasClass(ClassName$3.SHOW);
1415
+
1416
+ if (triggerArray.length) {
1417
+ $(triggerArray).toggleClass(ClassName$3.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
1418
+ }
1419
+ } // Static
1420
+ ;
1421
+
1422
+ Collapse._getTargetFromElement = function _getTargetFromElement(element) {
1423
+ var selector = Util.getSelectorFromElement(element);
1424
+ return selector ? document.querySelector(selector) : null;
1425
+ };
1426
+
1427
+ Collapse._jQueryInterface = function _jQueryInterface(config) {
1428
+ return this.each(function () {
1429
+ var $this = $(this);
1430
+ var data = $this.data(DATA_KEY$3);
1431
+
1432
+ var _config = _objectSpread({}, Default$1, $this.data(), typeof config === 'object' && config ? config : {});
1433
+
1434
+ if (!data && _config.toggle && /show|hide/.test(config)) {
1435
+ _config.toggle = false;
1436
+ }
1437
+
1438
+ if (!data) {
1439
+ data = new Collapse(this, _config);
1440
+ $this.data(DATA_KEY$3, data);
1441
+ }
1442
+
1443
+ if (typeof config === 'string') {
1444
+ if (typeof data[config] === 'undefined') {
1445
+ throw new TypeError("No method named \"" + config + "\"");
1446
+ }
1447
+
1448
+ data[config]();
1449
+ }
1450
+ });
1451
+ };
1452
+
1453
+ _createClass(Collapse, null, [{
1454
+ key: "VERSION",
1455
+ get: function get() {
1456
+ return VERSION$3;
1457
+ }
1458
+ }, {
1459
+ key: "Default",
1460
+ get: function get() {
1461
+ return Default$1;
1462
+ }
1463
+ }]);
1464
+
1465
+ return Collapse;
1466
+ }();
1467
+ /**
1468
+ * ------------------------------------------------------------------------
1469
+ * Data Api implementation
1470
+ * ------------------------------------------------------------------------
1471
+ */
1472
+
1473
+
1474
+ $(document).on(Event$3.CLICK_DATA_API, Selector$3.DATA_TOGGLE, function (event) {
1475
+ // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
1476
+ if (event.currentTarget.tagName === 'A') {
1477
+ event.preventDefault();
1478
+ }
1479
+
1480
+ var $trigger = $(this);
1481
+ var selector = Util.getSelectorFromElement(this);
1482
+ var selectors = [].slice.call(document.querySelectorAll(selector));
1483
+ $(selectors).each(function () {
1484
+ var $target = $(this);
1485
+ var data = $target.data(DATA_KEY$3);
1486
+ var config = data ? 'toggle' : $trigger.data();
1487
+
1488
+ Collapse._jQueryInterface.call($target, config);
1489
+ });
1490
+ });
1491
+ /**
1492
+ * ------------------------------------------------------------------------
1493
+ * jQuery
1494
+ * ------------------------------------------------------------------------
1495
+ */
1496
+
1497
+ $.fn[NAME$3] = Collapse._jQueryInterface;
1498
+ $.fn[NAME$3].Constructor = Collapse;
1499
+
1500
+ $.fn[NAME$3].noConflict = function () {
1501
+ $.fn[NAME$3] = JQUERY_NO_CONFLICT$3;
1502
+ return Collapse._jQueryInterface;
1503
+ };
1504
+
1505
+ /**
1506
+ * ------------------------------------------------------------------------
1507
+ * Constants
1508
+ * ------------------------------------------------------------------------
1509
+ */
1510
+
1511
+ var NAME$4 = 'dropdown';
1512
+ var VERSION$4 = '4.3.1';
1513
+ var DATA_KEY$4 = 'bs.dropdown';
1514
+ var EVENT_KEY$4 = "." + DATA_KEY$4;
1515
+ var DATA_API_KEY$4 = '.data-api';
1516
+ var JQUERY_NO_CONFLICT$4 = $.fn[NAME$4];
1517
+ var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
1518
+
1519
+ var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
1520
+
1521
+ var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key
1522
+
1523
+ var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
1524
+
1525
+ var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
1526
+
1527
+ var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
1528
+
1529
+ var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
1530
+ var Event$4 = {
1531
+ HIDE: "hide" + EVENT_KEY$4,
1532
+ HIDDEN: "hidden" + EVENT_KEY$4,
1533
+ SHOW: "show" + EVENT_KEY$4,
1534
+ SHOWN: "shown" + EVENT_KEY$4,
1535
+ CLICK: "click" + EVENT_KEY$4,
1536
+ CLICK_DATA_API: "click" + EVENT_KEY$4 + DATA_API_KEY$4,
1537
+ KEYDOWN_DATA_API: "keydown" + EVENT_KEY$4 + DATA_API_KEY$4,
1538
+ KEYUP_DATA_API: "keyup" + EVENT_KEY$4 + DATA_API_KEY$4
1539
+ };
1540
+ var ClassName$4 = {
1541
+ DISABLED: 'disabled',
1542
+ SHOW: 'show',
1543
+ DROPUP: 'dropup',
1544
+ DROPRIGHT: 'dropright',
1545
+ DROPLEFT: 'dropleft',
1546
+ MENURIGHT: 'dropdown-menu-right',
1547
+ MENULEFT: 'dropdown-menu-left',
1548
+ POSITION_STATIC: 'position-static'
1549
+ };
1550
+ var Selector$4 = {
1551
+ DATA_TOGGLE: '[data-toggle="dropdown"]',
1552
+ FORM_CHILD: '.dropdown form',
1553
+ MENU: '.dropdown-menu',
1554
+ NAVBAR_NAV: '.navbar-nav',
1555
+ VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'
1556
+ };
1557
+ var AttachmentMap = {
1558
+ TOP: 'top-start',
1559
+ TOPEND: 'top-end',
1560
+ BOTTOM: 'bottom-start',
1561
+ BOTTOMEND: 'bottom-end',
1562
+ RIGHT: 'right-start',
1563
+ RIGHTEND: 'right-end',
1564
+ LEFT: 'left-start',
1565
+ LEFTEND: 'left-end'
1566
+ };
1567
+ var Default$2 = {
1568
+ offset: 0,
1569
+ flip: true,
1570
+ boundary: 'scrollParent',
1571
+ reference: 'toggle',
1572
+ display: 'dynamic'
1573
+ };
1574
+ var DefaultType$2 = {
1575
+ offset: '(number|string|function)',
1576
+ flip: 'boolean',
1577
+ boundary: '(string|element)',
1578
+ reference: '(string|element)',
1579
+ display: 'string'
1580
+ /**
1581
+ * ------------------------------------------------------------------------
1582
+ * Class Definition
1583
+ * ------------------------------------------------------------------------
1584
+ */
1585
+
1586
+ };
1587
+
1588
+ var Dropdown =
1589
+ /*#__PURE__*/
1590
+ function () {
1591
+ function Dropdown(element, config) {
1592
+ this._element = element;
1593
+ this._popper = null;
1594
+ this._config = this._getConfig(config);
1595
+ this._menu = this._getMenuElement();
1596
+ this._inNavbar = this._detectNavbar();
1597
+
1598
+ this._addEventListeners();
1599
+ } // Getters
1600
+
1601
+
1602
+ var _proto = Dropdown.prototype;
1603
+
1604
+ // Public
1605
+ _proto.toggle = function toggle() {
1606
+ if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED)) {
1607
+ return;
1608
+ }
1609
+
1610
+ var parent = Dropdown._getParentFromElement(this._element);
1611
+
1612
+ var isActive = $(this._menu).hasClass(ClassName$4.SHOW);
1613
+
1614
+ Dropdown._clearMenus();
1615
+
1616
+ if (isActive) {
1617
+ return;
1618
+ }
1619
+
1620
+ var relatedTarget = {
1621
+ relatedTarget: this._element
1622
+ };
1623
+ var showEvent = $.Event(Event$4.SHOW, relatedTarget);
1624
+ $(parent).trigger(showEvent);
1625
+
1626
+ if (showEvent.isDefaultPrevented()) {
1627
+ return;
1628
+ } // Disable totally Popper.js for Dropdown in Navbar
1629
+
1630
+
1631
+ if (!this._inNavbar) {
1632
+ /**
1633
+ * Check for Popper dependency
1634
+ * Popper - https://popper.js.org
1635
+ */
1636
+ if (typeof Popper === 'undefined') {
1637
+ throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org/)');
1638
+ }
1639
+
1640
+ var referenceElement = this._element;
1641
+
1642
+ if (this._config.reference === 'parent') {
1643
+ referenceElement = parent;
1644
+ } else if (Util.isElement(this._config.reference)) {
1645
+ referenceElement = this._config.reference; // Check if it's jQuery element
1646
+
1647
+ if (typeof this._config.reference.jquery !== 'undefined') {
1648
+ referenceElement = this._config.reference[0];
1649
+ }
1650
+ } // If boundary is not `scrollParent`, then set position to `static`
1651
+ // to allow the menu to "escape" the scroll parent's boundaries
1652
+ // https://github.com/twbs/bootstrap/issues/24251
1653
+
1654
+
1655
+ if (this._config.boundary !== 'scrollParent') {
1656
+ $(parent).addClass(ClassName$4.POSITION_STATIC);
1657
+ }
1658
+
1659
+ this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());
1660
+ } // If this is a touch-enabled device we add extra
1661
+ // empty mouseover listeners to the body's immediate children;
1662
+ // only needed because of broken event delegation on iOS
1663
+ // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
1664
+
1665
+
1666
+ if ('ontouchstart' in document.documentElement && $(parent).closest(Selector$4.NAVBAR_NAV).length === 0) {
1667
+ $(document.body).children().on('mouseover', null, $.noop);
1668
+ }
1669
+
1670
+ this._element.focus();
1671
+
1672
+ this._element.setAttribute('aria-expanded', true);
1673
+
1674
+ $(this._menu).toggleClass(ClassName$4.SHOW);
1675
+ $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));
1676
+ };
1677
+
1678
+ _proto.show = function show() {
1679
+ if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || $(this._menu).hasClass(ClassName$4.SHOW)) {
1680
+ return;
1681
+ }
1682
+
1683
+ var relatedTarget = {
1684
+ relatedTarget: this._element
1685
+ };
1686
+ var showEvent = $.Event(Event$4.SHOW, relatedTarget);
1687
+
1688
+ var parent = Dropdown._getParentFromElement(this._element);
1689
+
1690
+ $(parent).trigger(showEvent);
1691
+
1692
+ if (showEvent.isDefaultPrevented()) {
1693
+ return;
1694
+ }
1695
+
1696
+ $(this._menu).toggleClass(ClassName$4.SHOW);
1697
+ $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));
1698
+ };
1699
+
1700
+ _proto.hide = function hide() {
1701
+ if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || !$(this._menu).hasClass(ClassName$4.SHOW)) {
1702
+ return;
1703
+ }
1704
+
1705
+ var relatedTarget = {
1706
+ relatedTarget: this._element
1707
+ };
1708
+ var hideEvent = $.Event(Event$4.HIDE, relatedTarget);
1709
+
1710
+ var parent = Dropdown._getParentFromElement(this._element);
1711
+
1712
+ $(parent).trigger(hideEvent);
1713
+
1714
+ if (hideEvent.isDefaultPrevented()) {
1715
+ return;
1716
+ }
1717
+
1718
+ $(this._menu).toggleClass(ClassName$4.SHOW);
1719
+ $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));
1720
+ };
1721
+
1722
+ _proto.dispose = function dispose() {
1723
+ $.removeData(this._element, DATA_KEY$4);
1724
+ $(this._element).off(EVENT_KEY$4);
1725
+ this._element = null;
1726
+ this._menu = null;
1727
+
1728
+ if (this._popper !== null) {
1729
+ this._popper.destroy();
1730
+
1731
+ this._popper = null;
1732
+ }
1733
+ };
1734
+
1735
+ _proto.update = function update() {
1736
+ this._inNavbar = this._detectNavbar();
1737
+
1738
+ if (this._popper !== null) {
1739
+ this._popper.scheduleUpdate();
1740
+ }
1741
+ } // Private
1742
+ ;
1743
+
1744
+ _proto._addEventListeners = function _addEventListeners() {
1745
+ var _this = this;
1746
+
1747
+ $(this._element).on(Event$4.CLICK, function (event) {
1748
+ event.preventDefault();
1749
+ event.stopPropagation();
1750
+
1751
+ _this.toggle();
1752
+ });
1753
+ };
1754
+
1755
+ _proto._getConfig = function _getConfig(config) {
1756
+ config = _objectSpread({}, this.constructor.Default, $(this._element).data(), config);
1757
+ Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
1758
+ return config;
1759
+ };
1760
+
1761
+ _proto._getMenuElement = function _getMenuElement() {
1762
+ if (!this._menu) {
1763
+ var parent = Dropdown._getParentFromElement(this._element);
1764
+
1765
+ if (parent) {
1766
+ this._menu = parent.querySelector(Selector$4.MENU);
1767
+ }
1768
+ }
1769
+
1770
+ return this._menu;
1771
+ };
1772
+
1773
+ _proto._getPlacement = function _getPlacement() {
1774
+ var $parentDropdown = $(this._element.parentNode);
1775
+ var placement = AttachmentMap.BOTTOM; // Handle dropup
1776
+
1777
+ if ($parentDropdown.hasClass(ClassName$4.DROPUP)) {
1778
+ placement = AttachmentMap.TOP;
1779
+
1780
+ if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {
1781
+ placement = AttachmentMap.TOPEND;
1782
+ }
1783
+ } else if ($parentDropdown.hasClass(ClassName$4.DROPRIGHT)) {
1784
+ placement = AttachmentMap.RIGHT;
1785
+ } else if ($parentDropdown.hasClass(ClassName$4.DROPLEFT)) {
1786
+ placement = AttachmentMap.LEFT;
1787
+ } else if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {
1788
+ placement = AttachmentMap.BOTTOMEND;
1789
+ }
1790
+
1791
+ return placement;
1792
+ };
1793
+
1794
+ _proto._detectNavbar = function _detectNavbar() {
1795
+ return $(this._element).closest('.navbar').length > 0;
1796
+ };
1797
+
1798
+ _proto._getOffset = function _getOffset() {
1799
+ var _this2 = this;
1800
+
1801
+ var offset = {};
1802
+
1803
+ if (typeof this._config.offset === 'function') {
1804
+ offset.fn = function (data) {
1805
+ data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});
1806
+ return data;
1807
+ };
1808
+ } else {
1809
+ offset.offset = this._config.offset;
1810
+ }
1811
+
1812
+ return offset;
1813
+ };
1814
+
1815
+ _proto._getPopperConfig = function _getPopperConfig() {
1816
+ var popperConfig = {
1817
+ placement: this._getPlacement(),
1818
+ modifiers: {
1819
+ offset: this._getOffset(),
1820
+ flip: {
1821
+ enabled: this._config.flip
1822
+ },
1823
+ preventOverflow: {
1824
+ boundariesElement: this._config.boundary
1825
+ }
1826
+ } // Disable Popper.js if we have a static display
1827
+
1828
+ };
1829
+
1830
+ if (this._config.display === 'static') {
1831
+ popperConfig.modifiers.applyStyle = {
1832
+ enabled: false
1833
+ };
1834
+ }
1835
+
1836
+ return popperConfig;
1837
+ } // Static
1838
+ ;
1839
+
1840
+ Dropdown._jQueryInterface = function _jQueryInterface(config) {
1841
+ return this.each(function () {
1842
+ var data = $(this).data(DATA_KEY$4);
1843
+
1844
+ var _config = typeof config === 'object' ? config : null;
1845
+
1846
+ if (!data) {
1847
+ data = new Dropdown(this, _config);
1848
+ $(this).data(DATA_KEY$4, data);
1849
+ }
1850
+
1851
+ if (typeof config === 'string') {
1852
+ if (typeof data[config] === 'undefined') {
1853
+ throw new TypeError("No method named \"" + config + "\"");
1854
+ }
1855
+
1856
+ data[config]();
1857
+ }
1858
+ });
1859
+ };
1860
+
1861
+ Dropdown._clearMenus = function _clearMenus(event) {
1862
+ if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
1863
+ return;
1864
+ }
1865
+
1866
+ var toggles = [].slice.call(document.querySelectorAll(Selector$4.DATA_TOGGLE));
1867
+
1868
+ for (var i = 0, len = toggles.length; i < len; i++) {
1869
+ var parent = Dropdown._getParentFromElement(toggles[i]);
1870
+
1871
+ var context = $(toggles[i]).data(DATA_KEY$4);
1872
+ var relatedTarget = {
1873
+ relatedTarget: toggles[i]
1874
+ };
1875
+
1876
+ if (event && event.type === 'click') {
1877
+ relatedTarget.clickEvent = event;
1878
+ }
1879
+
1880
+ if (!context) {
1881
+ continue;
1882
+ }
1883
+
1884
+ var dropdownMenu = context._menu;
1885
+
1886
+ if (!$(parent).hasClass(ClassName$4.SHOW)) {
1887
+ continue;
1888
+ }
1889
+
1890
+ if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {
1891
+ continue;
1892
+ }
1893
+
1894
+ var hideEvent = $.Event(Event$4.HIDE, relatedTarget);
1895
+ $(parent).trigger(hideEvent);
1896
+
1897
+ if (hideEvent.isDefaultPrevented()) {
1898
+ continue;
1899
+ } // If this is a touch-enabled device we remove the extra
1900
+ // empty mouseover listeners we added for iOS support
1901
+
1902
+
1903
+ if ('ontouchstart' in document.documentElement) {
1904
+ $(document.body).children().off('mouseover', null, $.noop);
1905
+ }
1906
+
1907
+ toggles[i].setAttribute('aria-expanded', 'false');
1908
+ $(dropdownMenu).removeClass(ClassName$4.SHOW);
1909
+ $(parent).removeClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));
1910
+ }
1911
+ };
1912
+
1913
+ Dropdown._getParentFromElement = function _getParentFromElement(element) {
1914
+ var parent;
1915
+ var selector = Util.getSelectorFromElement(element);
1916
+
1917
+ if (selector) {
1918
+ parent = document.querySelector(selector);
1919
+ }
1920
+
1921
+ return parent || element.parentNode;
1922
+ } // eslint-disable-next-line complexity
1923
+ ;
1924
+
1925
+ Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
1926
+ // If not input/textarea:
1927
+ // - And not a key in REGEXP_KEYDOWN => not a dropdown command
1928
+ // If input/textarea:
1929
+ // - If space key => not a dropdown command
1930
+ // - If key is other than escape
1931
+ // - If key is not up or down => not a dropdown command
1932
+ // - If trigger inside the menu => not a dropdown command
1933
+ if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector$4.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
1934
+ return;
1935
+ }
1936
+
1937
+ event.preventDefault();
1938
+ event.stopPropagation();
1939
+
1940
+ if (this.disabled || $(this).hasClass(ClassName$4.DISABLED)) {
1941
+ return;
1942
+ }
1943
+
1944
+ var parent = Dropdown._getParentFromElement(this);
1945
+
1946
+ var isActive = $(parent).hasClass(ClassName$4.SHOW);
1947
+
1948
+ if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
1949
+ if (event.which === ESCAPE_KEYCODE) {
1950
+ var toggle = parent.querySelector(Selector$4.DATA_TOGGLE);
1951
+ $(toggle).trigger('focus');
1952
+ }
1953
+
1954
+ $(this).trigger('click');
1955
+ return;
1956
+ }
1957
+
1958
+ var items = [].slice.call(parent.querySelectorAll(Selector$4.VISIBLE_ITEMS));
1959
+
1960
+ if (items.length === 0) {
1961
+ return;
1962
+ }
1963
+
1964
+ var index = items.indexOf(event.target);
1965
+
1966
+ if (event.which === ARROW_UP_KEYCODE && index > 0) {
1967
+ // Up
1968
+ index--;
1969
+ }
1970
+
1971
+ if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
1972
+ // Down
1973
+ index++;
1974
+ }
1975
+
1976
+ if (index < 0) {
1977
+ index = 0;
1978
+ }
1979
+
1980
+ items[index].focus();
1981
+ };
1982
+
1983
+ _createClass(Dropdown, null, [{
1984
+ key: "VERSION",
1985
+ get: function get() {
1986
+ return VERSION$4;
1987
+ }
1988
+ }, {
1989
+ key: "Default",
1990
+ get: function get() {
1991
+ return Default$2;
1992
+ }
1993
+ }, {
1994
+ key: "DefaultType",
1995
+ get: function get() {
1996
+ return DefaultType$2;
1997
+ }
1998
+ }]);
1999
+
2000
+ return Dropdown;
2001
+ }();
2002
+ /**
2003
+ * ------------------------------------------------------------------------
2004
+ * Data Api implementation
2005
+ * ------------------------------------------------------------------------
2006
+ */
2007
+
2008
+
2009
+ $(document).on(Event$4.KEYDOWN_DATA_API, Selector$4.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event$4.KEYDOWN_DATA_API, Selector$4.MENU, Dropdown._dataApiKeydownHandler).on(Event$4.CLICK_DATA_API + " " + Event$4.KEYUP_DATA_API, Dropdown._clearMenus).on(Event$4.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) {
2010
+ event.preventDefault();
2011
+ event.stopPropagation();
2012
+
2013
+ Dropdown._jQueryInterface.call($(this), 'toggle');
2014
+ }).on(Event$4.CLICK_DATA_API, Selector$4.FORM_CHILD, function (e) {
2015
+ e.stopPropagation();
2016
+ });
2017
+ /**
2018
+ * ------------------------------------------------------------------------
2019
+ * jQuery
2020
+ * ------------------------------------------------------------------------
2021
+ */
2022
+
2023
+ $.fn[NAME$4] = Dropdown._jQueryInterface;
2024
+ $.fn[NAME$4].Constructor = Dropdown;
2025
+
2026
+ $.fn[NAME$4].noConflict = function () {
2027
+ $.fn[NAME$4] = JQUERY_NO_CONFLICT$4;
2028
+ return Dropdown._jQueryInterface;
2029
+ };
2030
+
2031
+ /**
2032
+ * ------------------------------------------------------------------------
2033
+ * Constants
2034
+ * ------------------------------------------------------------------------
2035
+ */
2036
+
2037
+ var NAME$5 = 'modal';
2038
+ var VERSION$5 = '4.3.1';
2039
+ var DATA_KEY$5 = 'bs.modal';
2040
+ var EVENT_KEY$5 = "." + DATA_KEY$5;
2041
+ var DATA_API_KEY$5 = '.data-api';
2042
+ var JQUERY_NO_CONFLICT$5 = $.fn[NAME$5];
2043
+ var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key
2044
+
2045
+ var Default$3 = {
2046
+ backdrop: true,
2047
+ keyboard: true,
2048
+ focus: true,
2049
+ show: true
2050
+ };
2051
+ var DefaultType$3 = {
2052
+ backdrop: '(boolean|string)',
2053
+ keyboard: 'boolean',
2054
+ focus: 'boolean',
2055
+ show: 'boolean'
2056
+ };
2057
+ var Event$5 = {
2058
+ HIDE: "hide" + EVENT_KEY$5,
2059
+ HIDDEN: "hidden" + EVENT_KEY$5,
2060
+ SHOW: "show" + EVENT_KEY$5,
2061
+ SHOWN: "shown" + EVENT_KEY$5,
2062
+ FOCUSIN: "focusin" + EVENT_KEY$5,
2063
+ RESIZE: "resize" + EVENT_KEY$5,
2064
+ CLICK_DISMISS: "click.dismiss" + EVENT_KEY$5,
2065
+ KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY$5,
2066
+ MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY$5,
2067
+ MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY$5,
2068
+ CLICK_DATA_API: "click" + EVENT_KEY$5 + DATA_API_KEY$5
2069
+ };
2070
+ var ClassName$5 = {
2071
+ SCROLLABLE: 'modal-dialog-scrollable',
2072
+ SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
2073
+ BACKDROP: 'modal-backdrop',
2074
+ OPEN: 'modal-open',
2075
+ FADE: 'fade',
2076
+ SHOW: 'show'
2077
+ };
2078
+ var Selector$5 = {
2079
+ DIALOG: '.modal-dialog',
2080
+ MODAL_BODY: '.modal-body',
2081
+ DATA_TOGGLE: '[data-toggle="modal"]',
2082
+ DATA_DISMISS: '[data-dismiss="modal"]',
2083
+ FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
2084
+ STICKY_CONTENT: '.sticky-top'
2085
+ /**
2086
+ * ------------------------------------------------------------------------
2087
+ * Class Definition
2088
+ * ------------------------------------------------------------------------
2089
+ */
2090
+
2091
+ };
2092
+
2093
+ var Modal =
2094
+ /*#__PURE__*/
2095
+ function () {
2096
+ function Modal(element, config) {
2097
+ this._config = this._getConfig(config);
2098
+ this._element = element;
2099
+ this._dialog = element.querySelector(Selector$5.DIALOG);
2100
+ this._backdrop = null;
2101
+ this._isShown = false;
2102
+ this._isBodyOverflowing = false;
2103
+ this._ignoreBackdropClick = false;
2104
+ this._isTransitioning = false;
2105
+ this._scrollbarWidth = 0;
2106
+ } // Getters
2107
+
2108
+
2109
+ var _proto = Modal.prototype;
2110
+
2111
+ // Public
2112
+ _proto.toggle = function toggle(relatedTarget) {
2113
+ return this._isShown ? this.hide() : this.show(relatedTarget);
2114
+ };
2115
+
2116
+ _proto.show = function show(relatedTarget) {
2117
+ var _this = this;
2118
+
2119
+ if (this._isShown || this._isTransitioning) {
2120
+ return;
2121
+ }
2122
+
2123
+ if ($(this._element).hasClass(ClassName$5.FADE)) {
2124
+ this._isTransitioning = true;
2125
+ }
2126
+
2127
+ var showEvent = $.Event(Event$5.SHOW, {
2128
+ relatedTarget: relatedTarget
2129
+ });
2130
+ $(this._element).trigger(showEvent);
2131
+
2132
+ if (this._isShown || showEvent.isDefaultPrevented()) {
2133
+ return;
2134
+ }
2135
+
2136
+ this._isShown = true;
2137
+
2138
+ this._checkScrollbar();
2139
+
2140
+ this._setScrollbar();
2141
+
2142
+ this._adjustDialog();
2143
+
2144
+ this._setEscapeEvent();
2145
+
2146
+ this._setResizeEvent();
2147
+
2148
+ $(this._element).on(Event$5.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) {
2149
+ return _this.hide(event);
2150
+ });
2151
+ $(this._dialog).on(Event$5.MOUSEDOWN_DISMISS, function () {
2152
+ $(_this._element).one(Event$5.MOUSEUP_DISMISS, function (event) {
2153
+ if ($(event.target).is(_this._element)) {
2154
+ _this._ignoreBackdropClick = true;
2155
+ }
2156
+ });
2157
+ });
2158
+
2159
+ this._showBackdrop(function () {
2160
+ return _this._showElement(relatedTarget);
2161
+ });
2162
+ };
2163
+
2164
+ _proto.hide = function hide(event) {
2165
+ var _this2 = this;
2166
+
2167
+ if (event) {
2168
+ event.preventDefault();
2169
+ }
2170
+
2171
+ if (!this._isShown || this._isTransitioning) {
2172
+ return;
2173
+ }
2174
+
2175
+ var hideEvent = $.Event(Event$5.HIDE);
2176
+ $(this._element).trigger(hideEvent);
2177
+
2178
+ if (!this._isShown || hideEvent.isDefaultPrevented()) {
2179
+ return;
2180
+ }
2181
+
2182
+ this._isShown = false;
2183
+ var transition = $(this._element).hasClass(ClassName$5.FADE);
2184
+
2185
+ if (transition) {
2186
+ this._isTransitioning = true;
2187
+ }
2188
+
2189
+ this._setEscapeEvent();
2190
+
2191
+ this._setResizeEvent();
2192
+
2193
+ $(document).off(Event$5.FOCUSIN);
2194
+ $(this._element).removeClass(ClassName$5.SHOW);
2195
+ $(this._element).off(Event$5.CLICK_DISMISS);
2196
+ $(this._dialog).off(Event$5.MOUSEDOWN_DISMISS);
2197
+
2198
+ if (transition) {
2199
+ var transitionDuration = Util.getTransitionDurationFromElement(this._element);
2200
+ $(this._element).one(Util.TRANSITION_END, function (event) {
2201
+ return _this2._hideModal(event);
2202
+ }).emulateTransitionEnd(transitionDuration);
2203
+ } else {
2204
+ this._hideModal();
2205
+ }
2206
+ };
2207
+
2208
+ _proto.dispose = function dispose() {
2209
+ [window, this._element, this._dialog].forEach(function (htmlElement) {
2210
+ return $(htmlElement).off(EVENT_KEY$5);
2211
+ });
2212
+ /**
2213
+ * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`
2214
+ * Do not move `document` in `htmlElements` array
2215
+ * It will remove `Event.CLICK_DATA_API` event that should remain
2216
+ */
2217
+
2218
+ $(document).off(Event$5.FOCUSIN);
2219
+ $.removeData(this._element, DATA_KEY$5);
2220
+ this._config = null;
2221
+ this._element = null;
2222
+ this._dialog = null;
2223
+ this._backdrop = null;
2224
+ this._isShown = null;
2225
+ this._isBodyOverflowing = null;
2226
+ this._ignoreBackdropClick = null;
2227
+ this._isTransitioning = null;
2228
+ this._scrollbarWidth = null;
2229
+ };
2230
+
2231
+ _proto.handleUpdate = function handleUpdate() {
2232
+ this._adjustDialog();
2233
+ } // Private
2234
+ ;
2235
+
2236
+ _proto._getConfig = function _getConfig(config) {
2237
+ config = _objectSpread({}, Default$3, config);
2238
+ Util.typeCheckConfig(NAME$5, config, DefaultType$3);
2239
+ return config;
2240
+ };
2241
+
2242
+ _proto._showElement = function _showElement(relatedTarget) {
2243
+ var _this3 = this;
2244
+
2245
+ var transition = $(this._element).hasClass(ClassName$5.FADE);
2246
+
2247
+ if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
2248
+ // Don't move modal's DOM position
2249
+ document.body.appendChild(this._element);
2250
+ }
2251
+
2252
+ this._element.style.display = 'block';
2253
+
2254
+ this._element.removeAttribute('aria-hidden');
2255
+
2256
+ this._element.setAttribute('aria-modal', true);
2257
+
2258
+ if ($(this._dialog).hasClass(ClassName$5.SCROLLABLE)) {
2259
+ this._dialog.querySelector(Selector$5.MODAL_BODY).scrollTop = 0;
2260
+ } else {
2261
+ this._element.scrollTop = 0;
2262
+ }
2263
+
2264
+ if (transition) {
2265
+ Util.reflow(this._element);
2266
+ }
2267
+
2268
+ $(this._element).addClass(ClassName$5.SHOW);
2269
+
2270
+ if (this._config.focus) {
2271
+ this._enforceFocus();
2272
+ }
2273
+
2274
+ var shownEvent = $.Event(Event$5.SHOWN, {
2275
+ relatedTarget: relatedTarget
2276
+ });
2277
+
2278
+ var transitionComplete = function transitionComplete() {
2279
+ if (_this3._config.focus) {
2280
+ _this3._element.focus();
2281
+ }
2282
+
2283
+ _this3._isTransitioning = false;
2284
+ $(_this3._element).trigger(shownEvent);
2285
+ };
2286
+
2287
+ if (transition) {
2288
+ var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);
2289
+ $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
2290
+ } else {
2291
+ transitionComplete();
2292
+ }
2293
+ };
2294
+
2295
+ _proto._enforceFocus = function _enforceFocus() {
2296
+ var _this4 = this;
2297
+
2298
+ $(document).off(Event$5.FOCUSIN) // Guard against infinite focus loop
2299
+ .on(Event$5.FOCUSIN, function (event) {
2300
+ if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) {
2301
+ _this4._element.focus();
2302
+ }
2303
+ });
2304
+ };
2305
+
2306
+ _proto._setEscapeEvent = function _setEscapeEvent() {
2307
+ var _this5 = this;
2308
+
2309
+ if (this._isShown && this._config.keyboard) {
2310
+ $(this._element).on(Event$5.KEYDOWN_DISMISS, function (event) {
2311
+ if (event.which === ESCAPE_KEYCODE$1) {
2312
+ event.preventDefault();
2313
+
2314
+ _this5.hide();
2315
+ }
2316
+ });
2317
+ } else if (!this._isShown) {
2318
+ $(this._element).off(Event$5.KEYDOWN_DISMISS);
2319
+ }
2320
+ };
2321
+
2322
+ _proto._setResizeEvent = function _setResizeEvent() {
2323
+ var _this6 = this;
2324
+
2325
+ if (this._isShown) {
2326
+ $(window).on(Event$5.RESIZE, function (event) {
2327
+ return _this6.handleUpdate(event);
2328
+ });
2329
+ } else {
2330
+ $(window).off(Event$5.RESIZE);
2331
+ }
2332
+ };
2333
+
2334
+ _proto._hideModal = function _hideModal() {
2335
+ var _this7 = this;
2336
+
2337
+ this._element.style.display = 'none';
2338
+
2339
+ this._element.setAttribute('aria-hidden', true);
2340
+
2341
+ this._element.removeAttribute('aria-modal');
2342
+
2343
+ this._isTransitioning = false;
2344
+
2345
+ this._showBackdrop(function () {
2346
+ $(document.body).removeClass(ClassName$5.OPEN);
2347
+
2348
+ _this7._resetAdjustments();
2349
+
2350
+ _this7._resetScrollbar();
2351
+
2352
+ $(_this7._element).trigger(Event$5.HIDDEN);
2353
+ });
2354
+ };
2355
+
2356
+ _proto._removeBackdrop = function _removeBackdrop() {
2357
+ if (this._backdrop) {
2358
+ $(this._backdrop).remove();
2359
+ this._backdrop = null;
2360
+ }
2361
+ };
2362
+
2363
+ _proto._showBackdrop = function _showBackdrop(callback) {
2364
+ var _this8 = this;
2365
+
2366
+ var animate = $(this._element).hasClass(ClassName$5.FADE) ? ClassName$5.FADE : '';
2367
+
2368
+ if (this._isShown && this._config.backdrop) {
2369
+ this._backdrop = document.createElement('div');
2370
+ this._backdrop.className = ClassName$5.BACKDROP;
2371
+
2372
+ if (animate) {
2373
+ this._backdrop.classList.add(animate);
2374
+ }
2375
+
2376
+ $(this._backdrop).appendTo(document.body);
2377
+ $(this._element).on(Event$5.CLICK_DISMISS, function (event) {
2378
+ if (_this8._ignoreBackdropClick) {
2379
+ _this8._ignoreBackdropClick = false;
2380
+ return;
2381
+ }
2382
+
2383
+ if (event.target !== event.currentTarget) {
2384
+ return;
2385
+ }
2386
+
2387
+ if (_this8._config.backdrop === 'static') {
2388
+ _this8._element.focus();
2389
+ } else {
2390
+ _this8.hide();
2391
+ }
2392
+ });
2393
+
2394
+ if (animate) {
2395
+ Util.reflow(this._backdrop);
2396
+ }
2397
+
2398
+ $(this._backdrop).addClass(ClassName$5.SHOW);
2399
+
2400
+ if (!callback) {
2401
+ return;
2402
+ }
2403
+
2404
+ if (!animate) {
2405
+ callback();
2406
+ return;
2407
+ }
2408
+
2409
+ var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
2410
+ $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
2411
+ } else if (!this._isShown && this._backdrop) {
2412
+ $(this._backdrop).removeClass(ClassName$5.SHOW);
2413
+
2414
+ var callbackRemove = function callbackRemove() {
2415
+ _this8._removeBackdrop();
2416
+
2417
+ if (callback) {
2418
+ callback();
2419
+ }
2420
+ };
2421
+
2422
+ if ($(this._element).hasClass(ClassName$5.FADE)) {
2423
+ var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
2424
+
2425
+ $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
2426
+ } else {
2427
+ callbackRemove();
2428
+ }
2429
+ } else if (callback) {
2430
+ callback();
2431
+ }
2432
+ } // ----------------------------------------------------------------------
2433
+ // the following methods are used to handle overflowing modals
2434
+ // todo (fat): these should probably be refactored out of modal.js
2435
+ // ----------------------------------------------------------------------
2436
+ ;
2437
+
2438
+ _proto._adjustDialog = function _adjustDialog() {
2439
+ var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
2440
+
2441
+ if (!this._isBodyOverflowing && isModalOverflowing) {
2442
+ this._element.style.paddingLeft = this._scrollbarWidth + "px";
2443
+ }
2444
+
2445
+ if (this._isBodyOverflowing && !isModalOverflowing) {
2446
+ this._element.style.paddingRight = this._scrollbarWidth + "px";
2447
+ }
2448
+ };
2449
+
2450
+ _proto._resetAdjustments = function _resetAdjustments() {
2451
+ this._element.style.paddingLeft = '';
2452
+ this._element.style.paddingRight = '';
2453
+ };
2454
+
2455
+ _proto._checkScrollbar = function _checkScrollbar() {
2456
+ var rect = document.body.getBoundingClientRect();
2457
+ this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
2458
+ this._scrollbarWidth = this._getScrollbarWidth();
2459
+ };
2460
+
2461
+ _proto._setScrollbar = function _setScrollbar() {
2462
+ var _this9 = this;
2463
+
2464
+ if (this._isBodyOverflowing) {
2465
+ // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
2466
+ // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
2467
+ var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));
2468
+ var stickyContent = [].slice.call(document.querySelectorAll(Selector$5.STICKY_CONTENT)); // Adjust fixed content padding
2469
+
2470
+ $(fixedContent).each(function (index, element) {
2471
+ var actualPadding = element.style.paddingRight;
2472
+ var calculatedPadding = $(element).css('padding-right');
2473
+ $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
2474
+ }); // Adjust sticky content margin
2475
+
2476
+ $(stickyContent).each(function (index, element) {
2477
+ var actualMargin = element.style.marginRight;
2478
+ var calculatedMargin = $(element).css('margin-right');
2479
+ $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
2480
+ }); // Adjust body padding
2481
+
2482
+ var actualPadding = document.body.style.paddingRight;
2483
+ var calculatedPadding = $(document.body).css('padding-right');
2484
+ $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
2485
+ }
2486
+
2487
+ $(document.body).addClass(ClassName$5.OPEN);
2488
+ };
2489
+
2490
+ _proto._resetScrollbar = function _resetScrollbar() {
2491
+ // Restore fixed content padding
2492
+ var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));
2493
+ $(fixedContent).each(function (index, element) {
2494
+ var padding = $(element).data('padding-right');
2495
+ $(element).removeData('padding-right');
2496
+ element.style.paddingRight = padding ? padding : '';
2497
+ }); // Restore sticky content
2498
+
2499
+ var elements = [].slice.call(document.querySelectorAll("" + Selector$5.STICKY_CONTENT));
2500
+ $(elements).each(function (index, element) {
2501
+ var margin = $(element).data('margin-right');
2502
+
2503
+ if (typeof margin !== 'undefined') {
2504
+ $(element).css('margin-right', margin).removeData('margin-right');
2505
+ }
2506
+ }); // Restore body padding
2507
+
2508
+ var padding = $(document.body).data('padding-right');
2509
+ $(document.body).removeData('padding-right');
2510
+ document.body.style.paddingRight = padding ? padding : '';
2511
+ };
2512
+
2513
+ _proto._getScrollbarWidth = function _getScrollbarWidth() {
2514
+ // thx d.walsh
2515
+ var scrollDiv = document.createElement('div');
2516
+ scrollDiv.className = ClassName$5.SCROLLBAR_MEASURER;
2517
+ document.body.appendChild(scrollDiv);
2518
+ var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
2519
+ document.body.removeChild(scrollDiv);
2520
+ return scrollbarWidth;
2521
+ } // Static
2522
+ ;
2523
+
2524
+ Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
2525
+ return this.each(function () {
2526
+ var data = $(this).data(DATA_KEY$5);
2527
+
2528
+ var _config = _objectSpread({}, Default$3, $(this).data(), typeof config === 'object' && config ? config : {});
2529
+
2530
+ if (!data) {
2531
+ data = new Modal(this, _config);
2532
+ $(this).data(DATA_KEY$5, data);
2533
+ }
2534
+
2535
+ if (typeof config === 'string') {
2536
+ if (typeof data[config] === 'undefined') {
2537
+ throw new TypeError("No method named \"" + config + "\"");
2538
+ }
2539
+
2540
+ data[config](relatedTarget);
2541
+ } else if (_config.show) {
2542
+ data.show(relatedTarget);
2543
+ }
2544
+ });
2545
+ };
2546
+
2547
+ _createClass(Modal, null, [{
2548
+ key: "VERSION",
2549
+ get: function get() {
2550
+ return VERSION$5;
2551
+ }
2552
+ }, {
2553
+ key: "Default",
2554
+ get: function get() {
2555
+ return Default$3;
2556
+ }
2557
+ }]);
2558
+
2559
+ return Modal;
2560
+ }();
2561
+ /**
2562
+ * ------------------------------------------------------------------------
2563
+ * Data Api implementation
2564
+ * ------------------------------------------------------------------------
2565
+ */
2566
+
2567
+
2568
+ $(document).on(Event$5.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) {
2569
+ var _this10 = this;
2570
+
2571
+ var target;
2572
+ var selector = Util.getSelectorFromElement(this);
2573
+
2574
+ if (selector) {
2575
+ target = document.querySelector(selector);
2576
+ }
2577
+
2578
+ var config = $(target).data(DATA_KEY$5) ? 'toggle' : _objectSpread({}, $(target).data(), $(this).data());
2579
+
2580
+ if (this.tagName === 'A' || this.tagName === 'AREA') {
2581
+ event.preventDefault();
2582
+ }
2583
+
2584
+ var $target = $(target).one(Event$5.SHOW, function (showEvent) {
2585
+ if (showEvent.isDefaultPrevented()) {
2586
+ // Only register focus restorer if modal will actually get shown
2587
+ return;
2588
+ }
2589
+
2590
+ $target.one(Event$5.HIDDEN, function () {
2591
+ if ($(_this10).is(':visible')) {
2592
+ _this10.focus();
2593
+ }
2594
+ });
2595
+ });
2596
+
2597
+ Modal._jQueryInterface.call($(target), config, this);
2598
+ });
2599
+ /**
2600
+ * ------------------------------------------------------------------------
2601
+ * jQuery
2602
+ * ------------------------------------------------------------------------
2603
+ */
2604
+
2605
+ $.fn[NAME$5] = Modal._jQueryInterface;
2606
+ $.fn[NAME$5].Constructor = Modal;
2607
+
2608
+ $.fn[NAME$5].noConflict = function () {
2609
+ $.fn[NAME$5] = JQUERY_NO_CONFLICT$5;
2610
+ return Modal._jQueryInterface;
2611
+ };
2612
+
2613
+ /**
2614
+ * --------------------------------------------------------------------------
2615
+ * Bootstrap (v4.3.1): tools/sanitizer.js
2616
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2617
+ * --------------------------------------------------------------------------
2618
+ */
2619
+ var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];
2620
+ var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
2621
+ var DefaultWhitelist = {
2622
+ // Global attributes allowed on any supplied element below.
2623
+ '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
2624
+ a: ['target', 'href', 'title', 'rel'],
2625
+ area: [],
2626
+ b: [],
2627
+ br: [],
2628
+ col: [],
2629
+ code: [],
2630
+ div: [],
2631
+ em: [],
2632
+ hr: [],
2633
+ h1: [],
2634
+ h2: [],
2635
+ h3: [],
2636
+ h4: [],
2637
+ h5: [],
2638
+ h6: [],
2639
+ i: [],
2640
+ img: ['src', 'alt', 'title', 'width', 'height'],
2641
+ li: [],
2642
+ ol: [],
2643
+ p: [],
2644
+ pre: [],
2645
+ s: [],
2646
+ small: [],
2647
+ span: [],
2648
+ sub: [],
2649
+ sup: [],
2650
+ strong: [],
2651
+ u: [],
2652
+ ul: []
2653
+ /**
2654
+ * A pattern that recognizes a commonly useful subset of URLs that are safe.
2655
+ *
2656
+ * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
2657
+ */
2658
+
2659
+ };
2660
+ var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;
2661
+ /**
2662
+ * A pattern that matches safe data URLs. Only matches image, video and audio types.
2663
+ *
2664
+ * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
2665
+ */
2666
+
2667
+ var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;
2668
+
2669
+ function allowedAttribute(attr, allowedAttributeList) {
2670
+ var attrName = attr.nodeName.toLowerCase();
2671
+
2672
+ if (allowedAttributeList.indexOf(attrName) !== -1) {
2673
+ if (uriAttrs.indexOf(attrName) !== -1) {
2674
+ return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));
2675
+ }
2676
+
2677
+ return true;
2678
+ }
2679
+
2680
+ var regExp = allowedAttributeList.filter(function (attrRegex) {
2681
+ return attrRegex instanceof RegExp;
2682
+ }); // Check if a regular expression validates the attribute.
2683
+
2684
+ for (var i = 0, l = regExp.length; i < l; i++) {
2685
+ if (attrName.match(regExp[i])) {
2686
+ return true;
2687
+ }
2688
+ }
2689
+
2690
+ return false;
2691
+ }
2692
+
2693
+ function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
2694
+ if (unsafeHtml.length === 0) {
2695
+ return unsafeHtml;
2696
+ }
2697
+
2698
+ if (sanitizeFn && typeof sanitizeFn === 'function') {
2699
+ return sanitizeFn(unsafeHtml);
2700
+ }
2701
+
2702
+ var domParser = new window.DOMParser();
2703
+ var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
2704
+ var whitelistKeys = Object.keys(whiteList);
2705
+ var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));
2706
+
2707
+ var _loop = function _loop(i, len) {
2708
+ var el = elements[i];
2709
+ var elName = el.nodeName.toLowerCase();
2710
+
2711
+ if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {
2712
+ el.parentNode.removeChild(el);
2713
+ return "continue";
2714
+ }
2715
+
2716
+ var attributeList = [].slice.call(el.attributes);
2717
+ var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);
2718
+ attributeList.forEach(function (attr) {
2719
+ if (!allowedAttribute(attr, whitelistedAttributes)) {
2720
+ el.removeAttribute(attr.nodeName);
2721
+ }
2722
+ });
2723
+ };
2724
+
2725
+ for (var i = 0, len = elements.length; i < len; i++) {
2726
+ var _ret = _loop(i, len);
2727
+
2728
+ if (_ret === "continue") continue;
2729
+ }
2730
+
2731
+ return createdDocument.body.innerHTML;
2732
+ }
2733
+
2734
+ /**
2735
+ * ------------------------------------------------------------------------
2736
+ * Constants
2737
+ * ------------------------------------------------------------------------
2738
+ */
2739
+
2740
+ var NAME$6 = 'tooltip';
2741
+ var VERSION$6 = '4.3.1';
2742
+ var DATA_KEY$6 = 'bs.tooltip';
2743
+ var EVENT_KEY$6 = "." + DATA_KEY$6;
2744
+ var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];
2745
+ var CLASS_PREFIX = 'bs-tooltip';
2746
+ var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
2747
+ var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];
2748
+ var DefaultType$4 = {
2749
+ animation: 'boolean',
2750
+ template: 'string',
2751
+ title: '(string|element|function)',
2752
+ trigger: 'string',
2753
+ delay: '(number|object)',
2754
+ html: 'boolean',
2755
+ selector: '(string|boolean)',
2756
+ placement: '(string|function)',
2757
+ offset: '(number|string|function)',
2758
+ container: '(string|element|boolean)',
2759
+ fallbackPlacement: '(string|array)',
2760
+ boundary: '(string|element)',
2761
+ sanitize: 'boolean',
2762
+ sanitizeFn: '(null|function)',
2763
+ whiteList: 'object'
2764
+ };
2765
+ var AttachmentMap$1 = {
2766
+ AUTO: 'auto',
2767
+ TOP: 'top',
2768
+ RIGHT: 'right',
2769
+ BOTTOM: 'bottom',
2770
+ LEFT: 'left'
2771
+ };
2772
+ var Default$4 = {
2773
+ animation: true,
2774
+ template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>',
2775
+ trigger: 'hover focus',
2776
+ title: '',
2777
+ delay: 0,
2778
+ html: false,
2779
+ selector: false,
2780
+ placement: 'top',
2781
+ offset: 0,
2782
+ container: false,
2783
+ fallbackPlacement: 'flip',
2784
+ boundary: 'scrollParent',
2785
+ sanitize: true,
2786
+ sanitizeFn: null,
2787
+ whiteList: DefaultWhitelist
2788
+ };
2789
+ var HoverState = {
2790
+ SHOW: 'show',
2791
+ OUT: 'out'
2792
+ };
2793
+ var Event$6 = {
2794
+ HIDE: "hide" + EVENT_KEY$6,
2795
+ HIDDEN: "hidden" + EVENT_KEY$6,
2796
+ SHOW: "show" + EVENT_KEY$6,
2797
+ SHOWN: "shown" + EVENT_KEY$6,
2798
+ INSERTED: "inserted" + EVENT_KEY$6,
2799
+ CLICK: "click" + EVENT_KEY$6,
2800
+ FOCUSIN: "focusin" + EVENT_KEY$6,
2801
+ FOCUSOUT: "focusout" + EVENT_KEY$6,
2802
+ MOUSEENTER: "mouseenter" + EVENT_KEY$6,
2803
+ MOUSELEAVE: "mouseleave" + EVENT_KEY$6
2804
+ };
2805
+ var ClassName$6 = {
2806
+ FADE: 'fade',
2807
+ SHOW: 'show'
2808
+ };
2809
+ var Selector$6 = {
2810
+ TOOLTIP: '.tooltip',
2811
+ TOOLTIP_INNER: '.tooltip-inner',
2812
+ ARROW: '.arrow'
2813
+ };
2814
+ var Trigger = {
2815
+ HOVER: 'hover',
2816
+ FOCUS: 'focus',
2817
+ CLICK: 'click',
2818
+ MANUAL: 'manual'
2819
+ /**
2820
+ * ------------------------------------------------------------------------
2821
+ * Class Definition
2822
+ * ------------------------------------------------------------------------
2823
+ */
2824
+
2825
+ };
2826
+
2827
+ var Tooltip =
2828
+ /*#__PURE__*/
2829
+ function () {
2830
+ function Tooltip(element, config) {
2831
+ /**
2832
+ * Check for Popper dependency
2833
+ * Popper - https://popper.js.org
2834
+ */
2835
+ if (typeof Popper === 'undefined') {
2836
+ throw new TypeError('Bootstrap\'s tooltips require Popper.js (https://popper.js.org/)');
2837
+ } // private
2838
+
2839
+
2840
+ this._isEnabled = true;
2841
+ this._timeout = 0;
2842
+ this._hoverState = '';
2843
+ this._activeTrigger = {};
2844
+ this._popper = null; // Protected
2845
+
2846
+ this.element = element;
2847
+ this.config = this._getConfig(config);
2848
+ this.tip = null;
2849
+
2850
+ this._setListeners();
2851
+ } // Getters
2852
+
2853
+
2854
+ var _proto = Tooltip.prototype;
2855
+
2856
+ // Public
2857
+ _proto.enable = function enable() {
2858
+ this._isEnabled = true;
2859
+ };
2860
+
2861
+ _proto.disable = function disable() {
2862
+ this._isEnabled = false;
2863
+ };
2864
+
2865
+ _proto.toggleEnabled = function toggleEnabled() {
2866
+ this._isEnabled = !this._isEnabled;
2867
+ };
2868
+
2869
+ _proto.toggle = function toggle(event) {
2870
+ if (!this._isEnabled) {
2871
+ return;
2872
+ }
2873
+
2874
+ if (event) {
2875
+ var dataKey = this.constructor.DATA_KEY;
2876
+ var context = $(event.currentTarget).data(dataKey);
2877
+
2878
+ if (!context) {
2879
+ context = new this.constructor(event.currentTarget, this._getDelegateConfig());
2880
+ $(event.currentTarget).data(dataKey, context);
2881
+ }
2882
+
2883
+ context._activeTrigger.click = !context._activeTrigger.click;
2884
+
2885
+ if (context._isWithActiveTrigger()) {
2886
+ context._enter(null, context);
2887
+ } else {
2888
+ context._leave(null, context);
2889
+ }
2890
+ } else {
2891
+ if ($(this.getTipElement()).hasClass(ClassName$6.SHOW)) {
2892
+ this._leave(null, this);
2893
+
2894
+ return;
2895
+ }
2896
+
2897
+ this._enter(null, this);
2898
+ }
2899
+ };
2900
+
2901
+ _proto.dispose = function dispose() {
2902
+ clearTimeout(this._timeout);
2903
+ $.removeData(this.element, this.constructor.DATA_KEY);
2904
+ $(this.element).off(this.constructor.EVENT_KEY);
2905
+ $(this.element).closest('.modal').off('hide.bs.modal');
2906
+
2907
+ if (this.tip) {
2908
+ $(this.tip).remove();
2909
+ }
2910
+
2911
+ this._isEnabled = null;
2912
+ this._timeout = null;
2913
+ this._hoverState = null;
2914
+ this._activeTrigger = null;
2915
+
2916
+ if (this._popper !== null) {
2917
+ this._popper.destroy();
2918
+ }
2919
+
2920
+ this._popper = null;
2921
+ this.element = null;
2922
+ this.config = null;
2923
+ this.tip = null;
2924
+ };
2925
+
2926
+ _proto.show = function show() {
2927
+ var _this = this;
2928
+
2929
+ if ($(this.element).css('display') === 'none') {
2930
+ throw new Error('Please use show on visible elements');
2931
+ }
2932
+
2933
+ var showEvent = $.Event(this.constructor.Event.SHOW);
2934
+
2935
+ if (this.isWithContent() && this._isEnabled) {
2936
+ $(this.element).trigger(showEvent);
2937
+ var shadowRoot = Util.findShadowRoot(this.element);
2938
+ var isInTheDom = $.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);
2939
+
2940
+ if (showEvent.isDefaultPrevented() || !isInTheDom) {
2941
+ return;
2942
+ }
2943
+
2944
+ var tip = this.getTipElement();
2945
+ var tipId = Util.getUID(this.constructor.NAME);
2946
+ tip.setAttribute('id', tipId);
2947
+ this.element.setAttribute('aria-describedby', tipId);
2948
+ this.setContent();
2949
+
2950
+ if (this.config.animation) {
2951
+ $(tip).addClass(ClassName$6.FADE);
2952
+ }
2953
+
2954
+ var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
2955
+
2956
+ var attachment = this._getAttachment(placement);
2957
+
2958
+ this.addAttachmentClass(attachment);
2959
+
2960
+ var container = this._getContainer();
2961
+
2962
+ $(tip).data(this.constructor.DATA_KEY, this);
2963
+
2964
+ if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {
2965
+ $(tip).appendTo(container);
2966
+ }
2967
+
2968
+ $(this.element).trigger(this.constructor.Event.INSERTED);
2969
+ this._popper = new Popper(this.element, tip, {
2970
+ placement: attachment,
2971
+ modifiers: {
2972
+ offset: this._getOffset(),
2973
+ flip: {
2974
+ behavior: this.config.fallbackPlacement
2975
+ },
2976
+ arrow: {
2977
+ element: Selector$6.ARROW
2978
+ },
2979
+ preventOverflow: {
2980
+ boundariesElement: this.config.boundary
2981
+ }
2982
+ },
2983
+ onCreate: function onCreate(data) {
2984
+ if (data.originalPlacement !== data.placement) {
2985
+ _this._handlePopperPlacementChange(data);
2986
+ }
2987
+ },
2988
+ onUpdate: function onUpdate(data) {
2989
+ return _this._handlePopperPlacementChange(data);
2990
+ }
2991
+ });
2992
+ $(tip).addClass(ClassName$6.SHOW); // If this is a touch-enabled device we add extra
2993
+ // empty mouseover listeners to the body's immediate children;
2994
+ // only needed because of broken event delegation on iOS
2995
+ // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
2996
+
2997
+ if ('ontouchstart' in document.documentElement) {
2998
+ $(document.body).children().on('mouseover', null, $.noop);
2999
+ }
3000
+
3001
+ var complete = function complete() {
3002
+ if (_this.config.animation) {
3003
+ _this._fixTransition();
3004
+ }
3005
+
3006
+ var prevHoverState = _this._hoverState;
3007
+ _this._hoverState = null;
3008
+ $(_this.element).trigger(_this.constructor.Event.SHOWN);
3009
+
3010
+ if (prevHoverState === HoverState.OUT) {
3011
+ _this._leave(null, _this);
3012
+ }
3013
+ };
3014
+
3015
+ if ($(this.tip).hasClass(ClassName$6.FADE)) {
3016
+ var transitionDuration = Util.getTransitionDurationFromElement(this.tip);
3017
+ $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
3018
+ } else {
3019
+ complete();
3020
+ }
3021
+ }
3022
+ };
3023
+
3024
+ _proto.hide = function hide(callback) {
3025
+ var _this2 = this;
3026
+
3027
+ var tip = this.getTipElement();
3028
+ var hideEvent = $.Event(this.constructor.Event.HIDE);
3029
+
3030
+ var complete = function complete() {
3031
+ if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {
3032
+ tip.parentNode.removeChild(tip);
3033
+ }
3034
+
3035
+ _this2._cleanTipClass();
3036
+
3037
+ _this2.element.removeAttribute('aria-describedby');
3038
+
3039
+ $(_this2.element).trigger(_this2.constructor.Event.HIDDEN);
3040
+
3041
+ if (_this2._popper !== null) {
3042
+ _this2._popper.destroy();
3043
+ }
3044
+
3045
+ if (callback) {
3046
+ callback();
3047
+ }
3048
+ };
3049
+
3050
+ $(this.element).trigger(hideEvent);
3051
+
3052
+ if (hideEvent.isDefaultPrevented()) {
3053
+ return;
3054
+ }
3055
+
3056
+ $(tip).removeClass(ClassName$6.SHOW); // If this is a touch-enabled device we remove the extra
3057
+ // empty mouseover listeners we added for iOS support
3058
+
3059
+ if ('ontouchstart' in document.documentElement) {
3060
+ $(document.body).children().off('mouseover', null, $.noop);
3061
+ }
3062
+
3063
+ this._activeTrigger[Trigger.CLICK] = false;
3064
+ this._activeTrigger[Trigger.FOCUS] = false;
3065
+ this._activeTrigger[Trigger.HOVER] = false;
3066
+
3067
+ if ($(this.tip).hasClass(ClassName$6.FADE)) {
3068
+ var transitionDuration = Util.getTransitionDurationFromElement(tip);
3069
+ $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
3070
+ } else {
3071
+ complete();
3072
+ }
3073
+
3074
+ this._hoverState = '';
3075
+ };
3076
+
3077
+ _proto.update = function update() {
3078
+ if (this._popper !== null) {
3079
+ this._popper.scheduleUpdate();
3080
+ }
3081
+ } // Protected
3082
+ ;
3083
+
3084
+ _proto.isWithContent = function isWithContent() {
3085
+ return Boolean(this.getTitle());
3086
+ };
3087
+
3088
+ _proto.addAttachmentClass = function addAttachmentClass(attachment) {
3089
+ $(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
3090
+ };
3091
+
3092
+ _proto.getTipElement = function getTipElement() {
3093
+ this.tip = this.tip || $(this.config.template)[0];
3094
+ return this.tip;
3095
+ };
3096
+
3097
+ _proto.setContent = function setContent() {
3098
+ var tip = this.getTipElement();
3099
+ this.setElementContent($(tip.querySelectorAll(Selector$6.TOOLTIP_INNER)), this.getTitle());
3100
+ $(tip).removeClass(ClassName$6.FADE + " " + ClassName$6.SHOW);
3101
+ };
3102
+
3103
+ _proto.setElementContent = function setElementContent($element, content) {
3104
+ if (typeof content === 'object' && (content.nodeType || content.jquery)) {
3105
+ // Content is a DOM node or a jQuery
3106
+ if (this.config.html) {
3107
+ if (!$(content).parent().is($element)) {
3108
+ $element.empty().append(content);
3109
+ }
3110
+ } else {
3111
+ $element.text($(content).text());
3112
+ }
3113
+
3114
+ return;
3115
+ }
3116
+
3117
+ if (this.config.html) {
3118
+ if (this.config.sanitize) {
3119
+ content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);
3120
+ }
3121
+
3122
+ $element.html(content);
3123
+ } else {
3124
+ $element.text(content);
3125
+ }
3126
+ };
3127
+
3128
+ _proto.getTitle = function getTitle() {
3129
+ var title = this.element.getAttribute('data-original-title');
3130
+
3131
+ if (!title) {
3132
+ title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
3133
+ }
3134
+
3135
+ return title;
3136
+ } // Private
3137
+ ;
3138
+
3139
+ _proto._getOffset = function _getOffset() {
3140
+ var _this3 = this;
3141
+
3142
+ var offset = {};
3143
+
3144
+ if (typeof this.config.offset === 'function') {
3145
+ offset.fn = function (data) {
3146
+ data.offsets = _objectSpread({}, data.offsets, _this3.config.offset(data.offsets, _this3.element) || {});
3147
+ return data;
3148
+ };
3149
+ } else {
3150
+ offset.offset = this.config.offset;
3151
+ }
3152
+
3153
+ return offset;
3154
+ };
3155
+
3156
+ _proto._getContainer = function _getContainer() {
3157
+ if (this.config.container === false) {
3158
+ return document.body;
3159
+ }
3160
+
3161
+ if (Util.isElement(this.config.container)) {
3162
+ return $(this.config.container);
3163
+ }
3164
+
3165
+ return $(document).find(this.config.container);
3166
+ };
3167
+
3168
+ _proto._getAttachment = function _getAttachment(placement) {
3169
+ return AttachmentMap$1[placement.toUpperCase()];
3170
+ };
3171
+
3172
+ _proto._setListeners = function _setListeners() {
3173
+ var _this4 = this;
3174
+
3175
+ var triggers = this.config.trigger.split(' ');
3176
+ triggers.forEach(function (trigger) {
3177
+ if (trigger === 'click') {
3178
+ $(_this4.element).on(_this4.constructor.Event.CLICK, _this4.config.selector, function (event) {
3179
+ return _this4.toggle(event);
3180
+ });
3181
+ } else if (trigger !== Trigger.MANUAL) {
3182
+ var eventIn = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSEENTER : _this4.constructor.Event.FOCUSIN;
3183
+ var eventOut = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSELEAVE : _this4.constructor.Event.FOCUSOUT;
3184
+ $(_this4.element).on(eventIn, _this4.config.selector, function (event) {
3185
+ return _this4._enter(event);
3186
+ }).on(eventOut, _this4.config.selector, function (event) {
3187
+ return _this4._leave(event);
3188
+ });
3189
+ }
3190
+ });
3191
+ $(this.element).closest('.modal').on('hide.bs.modal', function () {
3192
+ if (_this4.element) {
3193
+ _this4.hide();
3194
+ }
3195
+ });
3196
+
3197
+ if (this.config.selector) {
3198
+ this.config = _objectSpread({}, this.config, {
3199
+ trigger: 'manual',
3200
+ selector: ''
3201
+ });
3202
+ } else {
3203
+ this._fixTitle();
3204
+ }
3205
+ };
3206
+
3207
+ _proto._fixTitle = function _fixTitle() {
3208
+ var titleType = typeof this.element.getAttribute('data-original-title');
3209
+
3210
+ if (this.element.getAttribute('title') || titleType !== 'string') {
3211
+ this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');
3212
+ this.element.setAttribute('title', '');
3213
+ }
3214
+ };
3215
+
3216
+ _proto._enter = function _enter(event, context) {
3217
+ var dataKey = this.constructor.DATA_KEY;
3218
+ context = context || $(event.currentTarget).data(dataKey);
3219
+
3220
+ if (!context) {
3221
+ context = new this.constructor(event.currentTarget, this._getDelegateConfig());
3222
+ $(event.currentTarget).data(dataKey, context);
3223
+ }
3224
+
3225
+ if (event) {
3226
+ context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
3227
+ }
3228
+
3229
+ if ($(context.getTipElement()).hasClass(ClassName$6.SHOW) || context._hoverState === HoverState.SHOW) {
3230
+ context._hoverState = HoverState.SHOW;
3231
+ return;
3232
+ }
3233
+
3234
+ clearTimeout(context._timeout);
3235
+ context._hoverState = HoverState.SHOW;
3236
+
3237
+ if (!context.config.delay || !context.config.delay.show) {
3238
+ context.show();
3239
+ return;
3240
+ }
3241
+
3242
+ context._timeout = setTimeout(function () {
3243
+ if (context._hoverState === HoverState.SHOW) {
3244
+ context.show();
3245
+ }
3246
+ }, context.config.delay.show);
3247
+ };
3248
+
3249
+ _proto._leave = function _leave(event, context) {
3250
+ var dataKey = this.constructor.DATA_KEY;
3251
+ context = context || $(event.currentTarget).data(dataKey);
3252
+
3253
+ if (!context) {
3254
+ context = new this.constructor(event.currentTarget, this._getDelegateConfig());
3255
+ $(event.currentTarget).data(dataKey, context);
3256
+ }
3257
+
3258
+ if (event) {
3259
+ context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
3260
+ }
3261
+
3262
+ if (context._isWithActiveTrigger()) {
3263
+ return;
3264
+ }
3265
+
3266
+ clearTimeout(context._timeout);
3267
+ context._hoverState = HoverState.OUT;
3268
+
3269
+ if (!context.config.delay || !context.config.delay.hide) {
3270
+ context.hide();
3271
+ return;
3272
+ }
3273
+
3274
+ context._timeout = setTimeout(function () {
3275
+ if (context._hoverState === HoverState.OUT) {
3276
+ context.hide();
3277
+ }
3278
+ }, context.config.delay.hide);
3279
+ };
3280
+
3281
+ _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
3282
+ for (var trigger in this._activeTrigger) {
3283
+ if (this._activeTrigger[trigger]) {
3284
+ return true;
3285
+ }
3286
+ }
3287
+
3288
+ return false;
3289
+ };
3290
+
3291
+ _proto._getConfig = function _getConfig(config) {
3292
+ var dataAttributes = $(this.element).data();
3293
+ Object.keys(dataAttributes).forEach(function (dataAttr) {
3294
+ if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {
3295
+ delete dataAttributes[dataAttr];
3296
+ }
3297
+ });
3298
+ config = _objectSpread({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});
3299
+
3300
+ if (typeof config.delay === 'number') {
3301
+ config.delay = {
3302
+ show: config.delay,
3303
+ hide: config.delay
3304
+ };
3305
+ }
3306
+
3307
+ if (typeof config.title === 'number') {
3308
+ config.title = config.title.toString();
3309
+ }
3310
+
3311
+ if (typeof config.content === 'number') {
3312
+ config.content = config.content.toString();
3313
+ }
3314
+
3315
+ Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);
3316
+
3317
+ if (config.sanitize) {
3318
+ config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);
3319
+ }
3320
+
3321
+ return config;
3322
+ };
3323
+
3324
+ _proto._getDelegateConfig = function _getDelegateConfig() {
3325
+ var config = {};
3326
+
3327
+ if (this.config) {
3328
+ for (var key in this.config) {
3329
+ if (this.constructor.Default[key] !== this.config[key]) {
3330
+ config[key] = this.config[key];
3331
+ }
3332
+ }
3333
+ }
3334
+
3335
+ return config;
3336
+ };
3337
+
3338
+ _proto._cleanTipClass = function _cleanTipClass() {
3339
+ var $tip = $(this.getTipElement());
3340
+ var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
3341
+
3342
+ if (tabClass !== null && tabClass.length) {
3343
+ $tip.removeClass(tabClass.join(''));
3344
+ }
3345
+ };
3346
+
3347
+ _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {
3348
+ var popperInstance = popperData.instance;
3349
+ this.tip = popperInstance.popper;
3350
+
3351
+ this._cleanTipClass();
3352
+
3353
+ this.addAttachmentClass(this._getAttachment(popperData.placement));
3354
+ };
3355
+
3356
+ _proto._fixTransition = function _fixTransition() {
3357
+ var tip = this.getTipElement();
3358
+ var initConfigAnimation = this.config.animation;
3359
+
3360
+ if (tip.getAttribute('x-placement') !== null) {
3361
+ return;
3362
+ }
3363
+
3364
+ $(tip).removeClass(ClassName$6.FADE);
3365
+ this.config.animation = false;
3366
+ this.hide();
3367
+ this.show();
3368
+ this.config.animation = initConfigAnimation;
3369
+ } // Static
3370
+ ;
3371
+
3372
+ Tooltip._jQueryInterface = function _jQueryInterface(config) {
3373
+ return this.each(function () {
3374
+ var data = $(this).data(DATA_KEY$6);
3375
+
3376
+ var _config = typeof config === 'object' && config;
3377
+
3378
+ if (!data && /dispose|hide/.test(config)) {
3379
+ return;
3380
+ }
3381
+
3382
+ if (!data) {
3383
+ data = new Tooltip(this, _config);
3384
+ $(this).data(DATA_KEY$6, data);
3385
+ }
3386
+
3387
+ if (typeof config === 'string') {
3388
+ if (typeof data[config] === 'undefined') {
3389
+ throw new TypeError("No method named \"" + config + "\"");
3390
+ }
3391
+
3392
+ data[config]();
3393
+ }
3394
+ });
3395
+ };
3396
+
3397
+ _createClass(Tooltip, null, [{
3398
+ key: "VERSION",
3399
+ get: function get() {
3400
+ return VERSION$6;
3401
+ }
3402
+ }, {
3403
+ key: "Default",
3404
+ get: function get() {
3405
+ return Default$4;
3406
+ }
3407
+ }, {
3408
+ key: "NAME",
3409
+ get: function get() {
3410
+ return NAME$6;
3411
+ }
3412
+ }, {
3413
+ key: "DATA_KEY",
3414
+ get: function get() {
3415
+ return DATA_KEY$6;
3416
+ }
3417
+ }, {
3418
+ key: "Event",
3419
+ get: function get() {
3420
+ return Event$6;
3421
+ }
3422
+ }, {
3423
+ key: "EVENT_KEY",
3424
+ get: function get() {
3425
+ return EVENT_KEY$6;
3426
+ }
3427
+ }, {
3428
+ key: "DefaultType",
3429
+ get: function get() {
3430
+ return DefaultType$4;
3431
+ }
3432
+ }]);
3433
+
3434
+ return Tooltip;
3435
+ }();
3436
+ /**
3437
+ * ------------------------------------------------------------------------
3438
+ * jQuery
3439
+ * ------------------------------------------------------------------------
3440
+ */
3441
+
3442
+
3443
+ $.fn[NAME$6] = Tooltip._jQueryInterface;
3444
+ $.fn[NAME$6].Constructor = Tooltip;
3445
+
3446
+ $.fn[NAME$6].noConflict = function () {
3447
+ $.fn[NAME$6] = JQUERY_NO_CONFLICT$6;
3448
+ return Tooltip._jQueryInterface;
3449
+ };
3450
+
3451
+ /**
3452
+ * ------------------------------------------------------------------------
3453
+ * Constants
3454
+ * ------------------------------------------------------------------------
3455
+ */
3456
+
3457
+ var NAME$7 = 'popover';
3458
+ var VERSION$7 = '4.3.1';
3459
+ var DATA_KEY$7 = 'bs.popover';
3460
+ var EVENT_KEY$7 = "." + DATA_KEY$7;
3461
+ var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];
3462
+ var CLASS_PREFIX$1 = 'bs-popover';
3463
+ var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g');
3464
+
3465
+ var Default$5 = _objectSpread({}, Tooltip.Default, {
3466
+ placement: 'right',
3467
+ trigger: 'click',
3468
+ content: '',
3469
+ template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
3470
+ });
3471
+
3472
+ var DefaultType$5 = _objectSpread({}, Tooltip.DefaultType, {
3473
+ content: '(string|element|function)'
3474
+ });
3475
+
3476
+ var ClassName$7 = {
3477
+ FADE: 'fade',
3478
+ SHOW: 'show'
3479
+ };
3480
+ var Selector$7 = {
3481
+ TITLE: '.popover-header',
3482
+ CONTENT: '.popover-body'
3483
+ };
3484
+ var Event$7 = {
3485
+ HIDE: "hide" + EVENT_KEY$7,
3486
+ HIDDEN: "hidden" + EVENT_KEY$7,
3487
+ SHOW: "show" + EVENT_KEY$7,
3488
+ SHOWN: "shown" + EVENT_KEY$7,
3489
+ INSERTED: "inserted" + EVENT_KEY$7,
3490
+ CLICK: "click" + EVENT_KEY$7,
3491
+ FOCUSIN: "focusin" + EVENT_KEY$7,
3492
+ FOCUSOUT: "focusout" + EVENT_KEY$7,
3493
+ MOUSEENTER: "mouseenter" + EVENT_KEY$7,
3494
+ MOUSELEAVE: "mouseleave" + EVENT_KEY$7
3495
+ /**
3496
+ * ------------------------------------------------------------------------
3497
+ * Class Definition
3498
+ * ------------------------------------------------------------------------
3499
+ */
3500
+
3501
+ };
3502
+
3503
+ var Popover =
3504
+ /*#__PURE__*/
3505
+ function (_Tooltip) {
3506
+ _inheritsLoose(Popover, _Tooltip);
3507
+
3508
+ function Popover() {
3509
+ return _Tooltip.apply(this, arguments) || this;
3510
+ }
3511
+
3512
+ var _proto = Popover.prototype;
3513
+
3514
+ // Overrides
3515
+ _proto.isWithContent = function isWithContent() {
3516
+ return this.getTitle() || this._getContent();
3517
+ };
3518
+
3519
+ _proto.addAttachmentClass = function addAttachmentClass(attachment) {
3520
+ $(this.getTipElement()).addClass(CLASS_PREFIX$1 + "-" + attachment);
3521
+ };
3522
+
3523
+ _proto.getTipElement = function getTipElement() {
3524
+ this.tip = this.tip || $(this.config.template)[0];
3525
+ return this.tip;
3526
+ };
3527
+
3528
+ _proto.setContent = function setContent() {
3529
+ var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events
3530
+
3531
+ this.setElementContent($tip.find(Selector$7.TITLE), this.getTitle());
3532
+
3533
+ var content = this._getContent();
3534
+
3535
+ if (typeof content === 'function') {
3536
+ content = content.call(this.element);
3537
+ }
3538
+
3539
+ this.setElementContent($tip.find(Selector$7.CONTENT), content);
3540
+ $tip.removeClass(ClassName$7.FADE + " " + ClassName$7.SHOW);
3541
+ } // Private
3542
+ ;
3543
+
3544
+ _proto._getContent = function _getContent() {
3545
+ return this.element.getAttribute('data-content') || this.config.content;
3546
+ };
3547
+
3548
+ _proto._cleanTipClass = function _cleanTipClass() {
3549
+ var $tip = $(this.getTipElement());
3550
+ var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);
3551
+
3552
+ if (tabClass !== null && tabClass.length > 0) {
3553
+ $tip.removeClass(tabClass.join(''));
3554
+ }
3555
+ } // Static
3556
+ ;
3557
+
3558
+ Popover._jQueryInterface = function _jQueryInterface(config) {
3559
+ return this.each(function () {
3560
+ var data = $(this).data(DATA_KEY$7);
3561
+
3562
+ var _config = typeof config === 'object' ? config : null;
3563
+
3564
+ if (!data && /dispose|hide/.test(config)) {
3565
+ return;
3566
+ }
3567
+
3568
+ if (!data) {
3569
+ data = new Popover(this, _config);
3570
+ $(this).data(DATA_KEY$7, data);
3571
+ }
3572
+
3573
+ if (typeof config === 'string') {
3574
+ if (typeof data[config] === 'undefined') {
3575
+ throw new TypeError("No method named \"" + config + "\"");
3576
+ }
3577
+
3578
+ data[config]();
3579
+ }
3580
+ });
3581
+ };
3582
+
3583
+ _createClass(Popover, null, [{
3584
+ key: "VERSION",
3585
+ // Getters
3586
+ get: function get() {
3587
+ return VERSION$7;
3588
+ }
3589
+ }, {
3590
+ key: "Default",
3591
+ get: function get() {
3592
+ return Default$5;
3593
+ }
3594
+ }, {
3595
+ key: "NAME",
3596
+ get: function get() {
3597
+ return NAME$7;
3598
+ }
3599
+ }, {
3600
+ key: "DATA_KEY",
3601
+ get: function get() {
3602
+ return DATA_KEY$7;
3603
+ }
3604
+ }, {
3605
+ key: "Event",
3606
+ get: function get() {
3607
+ return Event$7;
3608
+ }
3609
+ }, {
3610
+ key: "EVENT_KEY",
3611
+ get: function get() {
3612
+ return EVENT_KEY$7;
3613
+ }
3614
+ }, {
3615
+ key: "DefaultType",
3616
+ get: function get() {
3617
+ return DefaultType$5;
3618
+ }
3619
+ }]);
3620
+
3621
+ return Popover;
3622
+ }(Tooltip);
3623
+ /**
3624
+ * ------------------------------------------------------------------------
3625
+ * jQuery
3626
+ * ------------------------------------------------------------------------
3627
+ */
3628
+
3629
+
3630
+ $.fn[NAME$7] = Popover._jQueryInterface;
3631
+ $.fn[NAME$7].Constructor = Popover;
3632
+
3633
+ $.fn[NAME$7].noConflict = function () {
3634
+ $.fn[NAME$7] = JQUERY_NO_CONFLICT$7;
3635
+ return Popover._jQueryInterface;
3636
+ };
3637
+
3638
+ /**
3639
+ * ------------------------------------------------------------------------
3640
+ * Constants
3641
+ * ------------------------------------------------------------------------
3642
+ */
3643
+
3644
+ var NAME$8 = 'scrollspy';
3645
+ var VERSION$8 = '4.3.1';
3646
+ var DATA_KEY$8 = 'bs.scrollspy';
3647
+ var EVENT_KEY$8 = "." + DATA_KEY$8;
3648
+ var DATA_API_KEY$6 = '.data-api';
3649
+ var JQUERY_NO_CONFLICT$8 = $.fn[NAME$8];
3650
+ var Default$6 = {
3651
+ offset: 10,
3652
+ method: 'auto',
3653
+ target: ''
3654
+ };
3655
+ var DefaultType$6 = {
3656
+ offset: 'number',
3657
+ method: 'string',
3658
+ target: '(string|element)'
3659
+ };
3660
+ var Event$8 = {
3661
+ ACTIVATE: "activate" + EVENT_KEY$8,
3662
+ SCROLL: "scroll" + EVENT_KEY$8,
3663
+ LOAD_DATA_API: "load" + EVENT_KEY$8 + DATA_API_KEY$6
3664
+ };
3665
+ var ClassName$8 = {
3666
+ DROPDOWN_ITEM: 'dropdown-item',
3667
+ DROPDOWN_MENU: 'dropdown-menu',
3668
+ ACTIVE: 'active'
3669
+ };
3670
+ var Selector$8 = {
3671
+ DATA_SPY: '[data-spy="scroll"]',
3672
+ ACTIVE: '.active',
3673
+ NAV_LIST_GROUP: '.nav, .list-group',
3674
+ NAV_LINKS: '.nav-link',
3675
+ NAV_ITEMS: '.nav-item',
3676
+ LIST_ITEMS: '.list-group-item',
3677
+ DROPDOWN: '.dropdown',
3678
+ DROPDOWN_ITEMS: '.dropdown-item',
3679
+ DROPDOWN_TOGGLE: '.dropdown-toggle'
3680
+ };
3681
+ var OffsetMethod = {
3682
+ OFFSET: 'offset',
3683
+ POSITION: 'position'
3684
+ /**
3685
+ * ------------------------------------------------------------------------
3686
+ * Class Definition
3687
+ * ------------------------------------------------------------------------
3688
+ */
3689
+
3690
+ };
3691
+
3692
+ var ScrollSpy =
3693
+ /*#__PURE__*/
3694
+ function () {
3695
+ function ScrollSpy(element, config) {
3696
+ var _this = this;
3697
+
3698
+ this._element = element;
3699
+ this._scrollElement = element.tagName === 'BODY' ? window : element;
3700
+ this._config = this._getConfig(config);
3701
+ this._selector = this._config.target + " " + Selector$8.NAV_LINKS + "," + (this._config.target + " " + Selector$8.LIST_ITEMS + ",") + (this._config.target + " " + Selector$8.DROPDOWN_ITEMS);
3702
+ this._offsets = [];
3703
+ this._targets = [];
3704
+ this._activeTarget = null;
3705
+ this._scrollHeight = 0;
3706
+ $(this._scrollElement).on(Event$8.SCROLL, function (event) {
3707
+ return _this._process(event);
3708
+ });
3709
+ this.refresh();
3710
+
3711
+ this._process();
3712
+ } // Getters
3713
+
3714
+
3715
+ var _proto = ScrollSpy.prototype;
3716
+
3717
+ // Public
3718
+ _proto.refresh = function refresh() {
3719
+ var _this2 = this;
3720
+
3721
+ var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;
3722
+ var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
3723
+ var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
3724
+ this._offsets = [];
3725
+ this._targets = [];
3726
+ this._scrollHeight = this._getScrollHeight();
3727
+ var targets = [].slice.call(document.querySelectorAll(this._selector));
3728
+ targets.map(function (element) {
3729
+ var target;
3730
+ var targetSelector = Util.getSelectorFromElement(element);
3731
+
3732
+ if (targetSelector) {
3733
+ target = document.querySelector(targetSelector);
3734
+ }
3735
+
3736
+ if (target) {
3737
+ var targetBCR = target.getBoundingClientRect();
3738
+
3739
+ if (targetBCR.width || targetBCR.height) {
3740
+ // TODO (fat): remove sketch reliance on jQuery position/offset
3741
+ return [$(target)[offsetMethod]().top + offsetBase, targetSelector];
3742
+ }
3743
+ }
3744
+
3745
+ return null;
3746
+ }).filter(function (item) {
3747
+ return item;
3748
+ }).sort(function (a, b) {
3749
+ return a[0] - b[0];
3750
+ }).forEach(function (item) {
3751
+ _this2._offsets.push(item[0]);
3752
+
3753
+ _this2._targets.push(item[1]);
3754
+ });
3755
+ };
3756
+
3757
+ _proto.dispose = function dispose() {
3758
+ $.removeData(this._element, DATA_KEY$8);
3759
+ $(this._scrollElement).off(EVENT_KEY$8);
3760
+ this._element = null;
3761
+ this._scrollElement = null;
3762
+ this._config = null;
3763
+ this._selector = null;
3764
+ this._offsets = null;
3765
+ this._targets = null;
3766
+ this._activeTarget = null;
3767
+ this._scrollHeight = null;
3768
+ } // Private
3769
+ ;
3770
+
3771
+ _proto._getConfig = function _getConfig(config) {
3772
+ config = _objectSpread({}, Default$6, typeof config === 'object' && config ? config : {});
3773
+
3774
+ if (typeof config.target !== 'string') {
3775
+ var id = $(config.target).attr('id');
3776
+
3777
+ if (!id) {
3778
+ id = Util.getUID(NAME$8);
3779
+ $(config.target).attr('id', id);
3780
+ }
3781
+
3782
+ config.target = "#" + id;
3783
+ }
3784
+
3785
+ Util.typeCheckConfig(NAME$8, config, DefaultType$6);
3786
+ return config;
3787
+ };
3788
+
3789
+ _proto._getScrollTop = function _getScrollTop() {
3790
+ return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
3791
+ };
3792
+
3793
+ _proto._getScrollHeight = function _getScrollHeight() {
3794
+ return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
3795
+ };
3796
+
3797
+ _proto._getOffsetHeight = function _getOffsetHeight() {
3798
+ return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
3799
+ };
3800
+
3801
+ _proto._process = function _process() {
3802
+ var scrollTop = this._getScrollTop() + this._config.offset;
3803
+
3804
+ var scrollHeight = this._getScrollHeight();
3805
+
3806
+ var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
3807
+
3808
+ if (this._scrollHeight !== scrollHeight) {
3809
+ this.refresh();
3810
+ }
3811
+
3812
+ if (scrollTop >= maxScroll) {
3813
+ var target = this._targets[this._targets.length - 1];
3814
+
3815
+ if (this._activeTarget !== target) {
3816
+ this._activate(target);
3817
+ }
3818
+
3819
+ return;
3820
+ }
3821
+
3822
+ if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
3823
+ this._activeTarget = null;
3824
+
3825
+ this._clear();
3826
+
3827
+ return;
3828
+ }
3829
+
3830
+ var offsetLength = this._offsets.length;
3831
+
3832
+ for (var i = offsetLength; i--;) {
3833
+ var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
3834
+
3835
+ if (isActiveTarget) {
3836
+ this._activate(this._targets[i]);
3837
+ }
3838
+ }
3839
+ };
3840
+
3841
+ _proto._activate = function _activate(target) {
3842
+ this._activeTarget = target;
3843
+
3844
+ this._clear();
3845
+
3846
+ var queries = this._selector.split(',').map(function (selector) {
3847
+ return selector + "[data-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]";
3848
+ });
3849
+
3850
+ var $link = $([].slice.call(document.querySelectorAll(queries.join(','))));
3851
+
3852
+ if ($link.hasClass(ClassName$8.DROPDOWN_ITEM)) {
3853
+ $link.closest(Selector$8.DROPDOWN).find(Selector$8.DROPDOWN_TOGGLE).addClass(ClassName$8.ACTIVE);
3854
+ $link.addClass(ClassName$8.ACTIVE);
3855
+ } else {
3856
+ // Set triggered link as active
3857
+ $link.addClass(ClassName$8.ACTIVE); // Set triggered links parents as active
3858
+ // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
3859
+
3860
+ $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_LINKS + ", " + Selector$8.LIST_ITEMS).addClass(ClassName$8.ACTIVE); // Handle special case when .nav-link is inside .nav-item
3861
+
3862
+ $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_ITEMS).children(Selector$8.NAV_LINKS).addClass(ClassName$8.ACTIVE);
3863
+ }
3864
+
3865
+ $(this._scrollElement).trigger(Event$8.ACTIVATE, {
3866
+ relatedTarget: target
3867
+ });
3868
+ };
3869
+
3870
+ _proto._clear = function _clear() {
3871
+ [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {
3872
+ return node.classList.contains(ClassName$8.ACTIVE);
3873
+ }).forEach(function (node) {
3874
+ return node.classList.remove(ClassName$8.ACTIVE);
3875
+ });
3876
+ } // Static
3877
+ ;
3878
+
3879
+ ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
3880
+ return this.each(function () {
3881
+ var data = $(this).data(DATA_KEY$8);
3882
+
3883
+ var _config = typeof config === 'object' && config;
3884
+
3885
+ if (!data) {
3886
+ data = new ScrollSpy(this, _config);
3887
+ $(this).data(DATA_KEY$8, data);
3888
+ }
3889
+
3890
+ if (typeof config === 'string') {
3891
+ if (typeof data[config] === 'undefined') {
3892
+ throw new TypeError("No method named \"" + config + "\"");
3893
+ }
3894
+
3895
+ data[config]();
3896
+ }
3897
+ });
3898
+ };
3899
+
3900
+ _createClass(ScrollSpy, null, [{
3901
+ key: "VERSION",
3902
+ get: function get() {
3903
+ return VERSION$8;
3904
+ }
3905
+ }, {
3906
+ key: "Default",
3907
+ get: function get() {
3908
+ return Default$6;
3909
+ }
3910
+ }]);
3911
+
3912
+ return ScrollSpy;
3913
+ }();
3914
+ /**
3915
+ * ------------------------------------------------------------------------
3916
+ * Data Api implementation
3917
+ * ------------------------------------------------------------------------
3918
+ */
3919
+
3920
+
3921
+ $(window).on(Event$8.LOAD_DATA_API, function () {
3922
+ var scrollSpys = [].slice.call(document.querySelectorAll(Selector$8.DATA_SPY));
3923
+ var scrollSpysLength = scrollSpys.length;
3924
+
3925
+ for (var i = scrollSpysLength; i--;) {
3926
+ var $spy = $(scrollSpys[i]);
3927
+
3928
+ ScrollSpy._jQueryInterface.call($spy, $spy.data());
3929
+ }
3930
+ });
3931
+ /**
3932
+ * ------------------------------------------------------------------------
3933
+ * jQuery
3934
+ * ------------------------------------------------------------------------
3935
+ */
3936
+
3937
+ $.fn[NAME$8] = ScrollSpy._jQueryInterface;
3938
+ $.fn[NAME$8].Constructor = ScrollSpy;
3939
+
3940
+ $.fn[NAME$8].noConflict = function () {
3941
+ $.fn[NAME$8] = JQUERY_NO_CONFLICT$8;
3942
+ return ScrollSpy._jQueryInterface;
3943
+ };
3944
+
3945
+ /**
3946
+ * ------------------------------------------------------------------------
3947
+ * Constants
3948
+ * ------------------------------------------------------------------------
3949
+ */
3950
+
3951
+ var NAME$9 = 'tab';
3952
+ var VERSION$9 = '4.3.1';
3953
+ var DATA_KEY$9 = 'bs.tab';
3954
+ var EVENT_KEY$9 = "." + DATA_KEY$9;
3955
+ var DATA_API_KEY$7 = '.data-api';
3956
+ var JQUERY_NO_CONFLICT$9 = $.fn[NAME$9];
3957
+ var Event$9 = {
3958
+ HIDE: "hide" + EVENT_KEY$9,
3959
+ HIDDEN: "hidden" + EVENT_KEY$9,
3960
+ SHOW: "show" + EVENT_KEY$9,
3961
+ SHOWN: "shown" + EVENT_KEY$9,
3962
+ CLICK_DATA_API: "click" + EVENT_KEY$9 + DATA_API_KEY$7
3963
+ };
3964
+ var ClassName$9 = {
3965
+ DROPDOWN_MENU: 'dropdown-menu',
3966
+ ACTIVE: 'active',
3967
+ DISABLED: 'disabled',
3968
+ FADE: 'fade',
3969
+ SHOW: 'show'
3970
+ };
3971
+ var Selector$9 = {
3972
+ DROPDOWN: '.dropdown',
3973
+ NAV_LIST_GROUP: '.nav, .list-group',
3974
+ ACTIVE: '.active',
3975
+ ACTIVE_UL: '> li > .active',
3976
+ DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
3977
+ DROPDOWN_TOGGLE: '.dropdown-toggle',
3978
+ DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
3979
+ /**
3980
+ * ------------------------------------------------------------------------
3981
+ * Class Definition
3982
+ * ------------------------------------------------------------------------
3983
+ */
3984
+
3985
+ };
3986
+
3987
+ var Tab =
3988
+ /*#__PURE__*/
3989
+ function () {
3990
+ function Tab(element) {
3991
+ this._element = element;
3992
+ } // Getters
3993
+
3994
+
3995
+ var _proto = Tab.prototype;
3996
+
3997
+ // Public
3998
+ _proto.show = function show() {
3999
+ var _this = this;
4000
+
4001
+ if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName$9.ACTIVE) || $(this._element).hasClass(ClassName$9.DISABLED)) {
4002
+ return;
4003
+ }
4004
+
4005
+ var target;
4006
+ var previous;
4007
+ var listElement = $(this._element).closest(Selector$9.NAV_LIST_GROUP)[0];
4008
+ var selector = Util.getSelectorFromElement(this._element);
4009
+
4010
+ if (listElement) {
4011
+ var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector$9.ACTIVE_UL : Selector$9.ACTIVE;
4012
+ previous = $.makeArray($(listElement).find(itemSelector));
4013
+ previous = previous[previous.length - 1];
4014
+ }
4015
+
4016
+ var hideEvent = $.Event(Event$9.HIDE, {
4017
+ relatedTarget: this._element
4018
+ });
4019
+ var showEvent = $.Event(Event$9.SHOW, {
4020
+ relatedTarget: previous
4021
+ });
4022
+
4023
+ if (previous) {
4024
+ $(previous).trigger(hideEvent);
4025
+ }
4026
+
4027
+ $(this._element).trigger(showEvent);
4028
+
4029
+ if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
4030
+ return;
4031
+ }
4032
+
4033
+ if (selector) {
4034
+ target = document.querySelector(selector);
4035
+ }
4036
+
4037
+ this._activate(this._element, listElement);
4038
+
4039
+ var complete = function complete() {
4040
+ var hiddenEvent = $.Event(Event$9.HIDDEN, {
4041
+ relatedTarget: _this._element
4042
+ });
4043
+ var shownEvent = $.Event(Event$9.SHOWN, {
4044
+ relatedTarget: previous
4045
+ });
4046
+ $(previous).trigger(hiddenEvent);
4047
+ $(_this._element).trigger(shownEvent);
4048
+ };
4049
+
4050
+ if (target) {
4051
+ this._activate(target, target.parentNode, complete);
4052
+ } else {
4053
+ complete();
4054
+ }
4055
+ };
4056
+
4057
+ _proto.dispose = function dispose() {
4058
+ $.removeData(this._element, DATA_KEY$9);
4059
+ this._element = null;
4060
+ } // Private
4061
+ ;
4062
+
4063
+ _proto._activate = function _activate(element, container, callback) {
4064
+ var _this2 = this;
4065
+
4066
+ var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $(container).find(Selector$9.ACTIVE_UL) : $(container).children(Selector$9.ACTIVE);
4067
+ var active = activeElements[0];
4068
+ var isTransitioning = callback && active && $(active).hasClass(ClassName$9.FADE);
4069
+
4070
+ var complete = function complete() {
4071
+ return _this2._transitionComplete(element, active, callback);
4072
+ };
4073
+
4074
+ if (active && isTransitioning) {
4075
+ var transitionDuration = Util.getTransitionDurationFromElement(active);
4076
+ $(active).removeClass(ClassName$9.SHOW).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
4077
+ } else {
4078
+ complete();
4079
+ }
4080
+ };
4081
+
4082
+ _proto._transitionComplete = function _transitionComplete(element, active, callback) {
4083
+ if (active) {
4084
+ $(active).removeClass(ClassName$9.ACTIVE);
4085
+ var dropdownChild = $(active.parentNode).find(Selector$9.DROPDOWN_ACTIVE_CHILD)[0];
4086
+
4087
+ if (dropdownChild) {
4088
+ $(dropdownChild).removeClass(ClassName$9.ACTIVE);
4089
+ }
4090
+
4091
+ if (active.getAttribute('role') === 'tab') {
4092
+ active.setAttribute('aria-selected', false);
4093
+ }
4094
+ }
4095
+
4096
+ $(element).addClass(ClassName$9.ACTIVE);
4097
+
4098
+ if (element.getAttribute('role') === 'tab') {
4099
+ element.setAttribute('aria-selected', true);
4100
+ }
4101
+
4102
+ Util.reflow(element);
4103
+
4104
+ if (element.classList.contains(ClassName$9.FADE)) {
4105
+ element.classList.add(ClassName$9.SHOW);
4106
+ }
4107
+
4108
+ if (element.parentNode && $(element.parentNode).hasClass(ClassName$9.DROPDOWN_MENU)) {
4109
+ var dropdownElement = $(element).closest(Selector$9.DROPDOWN)[0];
4110
+
4111
+ if (dropdownElement) {
4112
+ var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector$9.DROPDOWN_TOGGLE));
4113
+ $(dropdownToggleList).addClass(ClassName$9.ACTIVE);
4114
+ }
4115
+
4116
+ element.setAttribute('aria-expanded', true);
4117
+ }
4118
+
4119
+ if (callback) {
4120
+ callback();
4121
+ }
4122
+ } // Static
4123
+ ;
4124
+
4125
+ Tab._jQueryInterface = function _jQueryInterface(config) {
4126
+ return this.each(function () {
4127
+ var $this = $(this);
4128
+ var data = $this.data(DATA_KEY$9);
4129
+
4130
+ if (!data) {
4131
+ data = new Tab(this);
4132
+ $this.data(DATA_KEY$9, data);
4133
+ }
4134
+
4135
+ if (typeof config === 'string') {
4136
+ if (typeof data[config] === 'undefined') {
4137
+ throw new TypeError("No method named \"" + config + "\"");
4138
+ }
4139
+
4140
+ data[config]();
4141
+ }
4142
+ });
4143
+ };
4144
+
4145
+ _createClass(Tab, null, [{
4146
+ key: "VERSION",
4147
+ get: function get() {
4148
+ return VERSION$9;
4149
+ }
4150
+ }]);
4151
+
4152
+ return Tab;
4153
+ }();
4154
+ /**
4155
+ * ------------------------------------------------------------------------
4156
+ * Data Api implementation
4157
+ * ------------------------------------------------------------------------
4158
+ */
4159
+
4160
+
4161
+ $(document).on(Event$9.CLICK_DATA_API, Selector$9.DATA_TOGGLE, function (event) {
4162
+ event.preventDefault();
4163
+
4164
+ Tab._jQueryInterface.call($(this), 'show');
4165
+ });
4166
+ /**
4167
+ * ------------------------------------------------------------------------
4168
+ * jQuery
4169
+ * ------------------------------------------------------------------------
4170
+ */
4171
+
4172
+ $.fn[NAME$9] = Tab._jQueryInterface;
4173
+ $.fn[NAME$9].Constructor = Tab;
4174
+
4175
+ $.fn[NAME$9].noConflict = function () {
4176
+ $.fn[NAME$9] = JQUERY_NO_CONFLICT$9;
4177
+ return Tab._jQueryInterface;
4178
+ };
4179
+
4180
+ /**
4181
+ * ------------------------------------------------------------------------
4182
+ * Constants
4183
+ * ------------------------------------------------------------------------
4184
+ */
4185
+
4186
+ var NAME$a = 'toast';
4187
+ var VERSION$a = '4.3.1';
4188
+ var DATA_KEY$a = 'bs.toast';
4189
+ var EVENT_KEY$a = "." + DATA_KEY$a;
4190
+ var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];
4191
+ var Event$a = {
4192
+ CLICK_DISMISS: "click.dismiss" + EVENT_KEY$a,
4193
+ HIDE: "hide" + EVENT_KEY$a,
4194
+ HIDDEN: "hidden" + EVENT_KEY$a,
4195
+ SHOW: "show" + EVENT_KEY$a,
4196
+ SHOWN: "shown" + EVENT_KEY$a
4197
+ };
4198
+ var ClassName$a = {
4199
+ FADE: 'fade',
4200
+ HIDE: 'hide',
4201
+ SHOW: 'show',
4202
+ SHOWING: 'showing'
4203
+ };
4204
+ var DefaultType$7 = {
4205
+ animation: 'boolean',
4206
+ autohide: 'boolean',
4207
+ delay: 'number'
4208
+ };
4209
+ var Default$7 = {
4210
+ animation: true,
4211
+ autohide: true,
4212
+ delay: 500
4213
+ };
4214
+ var Selector$a = {
4215
+ DATA_DISMISS: '[data-dismiss="toast"]'
4216
+ /**
4217
+ * ------------------------------------------------------------------------
4218
+ * Class Definition
4219
+ * ------------------------------------------------------------------------
4220
+ */
4221
+
4222
+ };
4223
+
4224
+ var Toast =
4225
+ /*#__PURE__*/
4226
+ function () {
4227
+ function Toast(element, config) {
4228
+ this._element = element;
4229
+ this._config = this._getConfig(config);
4230
+ this._timeout = null;
4231
+
4232
+ this._setListeners();
4233
+ } // Getters
4234
+
4235
+
4236
+ var _proto = Toast.prototype;
4237
+
4238
+ // Public
4239
+ _proto.show = function show() {
4240
+ var _this = this;
4241
+
4242
+ $(this._element).trigger(Event$a.SHOW);
4243
+
4244
+ if (this._config.animation) {
4245
+ this._element.classList.add(ClassName$a.FADE);
4246
+ }
4247
+
4248
+ var complete = function complete() {
4249
+ _this._element.classList.remove(ClassName$a.SHOWING);
4250
+
4251
+ _this._element.classList.add(ClassName$a.SHOW);
4252
+
4253
+ $(_this._element).trigger(Event$a.SHOWN);
4254
+
4255
+ if (_this._config.autohide) {
4256
+ _this.hide();
4257
+ }
4258
+ };
4259
+
4260
+ this._element.classList.remove(ClassName$a.HIDE);
4261
+
4262
+ this._element.classList.add(ClassName$a.SHOWING);
4263
+
4264
+ if (this._config.animation) {
4265
+ var transitionDuration = Util.getTransitionDurationFromElement(this._element);
4266
+ $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
4267
+ } else {
4268
+ complete();
4269
+ }
4270
+ };
4271
+
4272
+ _proto.hide = function hide(withoutTimeout) {
4273
+ var _this2 = this;
4274
+
4275
+ if (!this._element.classList.contains(ClassName$a.SHOW)) {
4276
+ return;
4277
+ }
4278
+
4279
+ $(this._element).trigger(Event$a.HIDE);
4280
+
4281
+ if (withoutTimeout) {
4282
+ this._close();
4283
+ } else {
4284
+ this._timeout = setTimeout(function () {
4285
+ _this2._close();
4286
+ }, this._config.delay);
4287
+ }
4288
+ };
4289
+
4290
+ _proto.dispose = function dispose() {
4291
+ clearTimeout(this._timeout);
4292
+ this._timeout = null;
4293
+
4294
+ if (this._element.classList.contains(ClassName$a.SHOW)) {
4295
+ this._element.classList.remove(ClassName$a.SHOW);
4296
+ }
4297
+
4298
+ $(this._element).off(Event$a.CLICK_DISMISS);
4299
+ $.removeData(this._element, DATA_KEY$a);
4300
+ this._element = null;
4301
+ this._config = null;
4302
+ } // Private
4303
+ ;
4304
+
4305
+ _proto._getConfig = function _getConfig(config) {
4306
+ config = _objectSpread({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {});
4307
+ Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);
4308
+ return config;
4309
+ };
4310
+
4311
+ _proto._setListeners = function _setListeners() {
4312
+ var _this3 = this;
4313
+
4314
+ $(this._element).on(Event$a.CLICK_DISMISS, Selector$a.DATA_DISMISS, function () {
4315
+ return _this3.hide(true);
4316
+ });
4317
+ };
4318
+
4319
+ _proto._close = function _close() {
4320
+ var _this4 = this;
4321
+
4322
+ var complete = function complete() {
4323
+ _this4._element.classList.add(ClassName$a.HIDE);
4324
+
4325
+ $(_this4._element).trigger(Event$a.HIDDEN);
4326
+ };
4327
+
4328
+ this._element.classList.remove(ClassName$a.SHOW);
4329
+
4330
+ if (this._config.animation) {
4331
+ var transitionDuration = Util.getTransitionDurationFromElement(this._element);
4332
+ $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
4333
+ } else {
4334
+ complete();
4335
+ }
4336
+ } // Static
4337
+ ;
4338
+
4339
+ Toast._jQueryInterface = function _jQueryInterface(config) {
4340
+ return this.each(function () {
4341
+ var $element = $(this);
4342
+ var data = $element.data(DATA_KEY$a);
4343
+
4344
+ var _config = typeof config === 'object' && config;
4345
+
4346
+ if (!data) {
4347
+ data = new Toast(this, _config);
4348
+ $element.data(DATA_KEY$a, data);
4349
+ }
4350
+
4351
+ if (typeof config === 'string') {
4352
+ if (typeof data[config] === 'undefined') {
4353
+ throw new TypeError("No method named \"" + config + "\"");
4354
+ }
4355
+
4356
+ data[config](this);
4357
+ }
4358
+ });
4359
+ };
4360
+
4361
+ _createClass(Toast, null, [{
4362
+ key: "VERSION",
4363
+ get: function get() {
4364
+ return VERSION$a;
4365
+ }
4366
+ }, {
4367
+ key: "DefaultType",
4368
+ get: function get() {
4369
+ return DefaultType$7;
4370
+ }
4371
+ }, {
4372
+ key: "Default",
4373
+ get: function get() {
4374
+ return Default$7;
4375
+ }
4376
+ }]);
4377
+
4378
+ return Toast;
4379
+ }();
4380
+ /**
4381
+ * ------------------------------------------------------------------------
4382
+ * jQuery
4383
+ * ------------------------------------------------------------------------
4384
+ */
4385
+
4386
+
4387
+ $.fn[NAME$a] = Toast._jQueryInterface;
4388
+ $.fn[NAME$a].Constructor = Toast;
4389
+
4390
+ $.fn[NAME$a].noConflict = function () {
4391
+ $.fn[NAME$a] = JQUERY_NO_CONFLICT$a;
4392
+ return Toast._jQueryInterface;
4393
+ };
4394
+
4395
+ /**
4396
+ * --------------------------------------------------------------------------
4397
+ * Bootstrap (v4.3.1): index.js
4398
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
4399
+ * --------------------------------------------------------------------------
4400
+ */
4401
+
4402
+ (function () {
4403
+ if (typeof $ === 'undefined') {
4404
+ throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
4405
+ }
4406
+
4407
+ var version = $.fn.jquery.split(' ')[0].split('.');
4408
+ var minMajor = 1;
4409
+ var ltMajor = 2;
4410
+ var minMinor = 9;
4411
+ var minPatch = 1;
4412
+ var maxMajor = 4;
4413
+
4414
+ if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
4415
+ throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
4416
+ }
4417
+ })();
4418
+
4419
+ exports.Util = Util;
4420
+ exports.Alert = Alert;
4421
+ exports.Button = Button;
4422
+ exports.Carousel = Carousel;
4423
+ exports.Collapse = Collapse;
4424
+ exports.Dropdown = Dropdown;
4425
+ exports.Modal = Modal;
4426
+ exports.Popover = Popover;
4427
+ exports.Scrollspy = ScrollSpy;
4428
+ exports.Tab = Tab;
4429
+ exports.Toast = Toast;
4430
+ exports.Tooltip = Tooltip;
4431
+
4432
+ Object.defineProperty(exports, '__esModule', { value: true });
4433
+
4434
+ }));
4435
+ //# sourceMappingURL=bootstrap.js.map