2
0
mirror of https://github.com/tenrok/bootstrap.git synced 2026-06-17 19:21:23 +03:00

Release v5.3.0 (#38657)

* Bump version to 5.3.0

* Dist
This commit is contained in:
XhmikosR
2023-05-30 18:15:55 +03:00
committed by GitHub
parent 08dff5e8a4
commit 60098ac499
103 changed files with 594 additions and 610 deletions
+55 -44
View File
@@ -1,5 +1,5 @@
/*!
* Bootstrap v5.3.0-alpha3 (https://getbootstrap.com/)
* Bootstrap v5.3.0 (https://getbootstrap.com/)
* Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
@@ -311,6 +311,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -589,6 +590,7 @@
* --------------------------------------------------------------------------
*/
/**
* Class definition
*/
@@ -641,11 +643,12 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
const VERSION = '5.3.0-alpha2';
const VERSION = '5.3.0';
/**
* Class definition
@@ -708,6 +711,7 @@
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
const getSelector = element => {
let selector = element.getAttribute('data-bs-target');
if (!selector || selector === '#') {
@@ -796,6 +800,7 @@
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
const enableDismissTrigger = (component, method = 'hide') => {
const clickEvent = `click.dismiss${component.EVENT_KEY}`;
const name = component.NAME;
@@ -821,6 +826,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -895,6 +901,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -958,6 +965,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -1077,6 +1085,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -1449,6 +1458,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -2126,7 +2136,6 @@
}
if (!contains(state.elements.popper, arrowElement)) {
return;
}
@@ -2268,7 +2277,6 @@
adaptive = _options$adaptive === void 0 ? true : _options$adaptive,
_options$roundOffsets = options.roundOffsets,
roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
var commonStyles = {
placement: getBasePlacement(state.placement),
variation: getVariation(state.placement),
@@ -3336,8 +3344,7 @@
state.orderedModifiers = orderedModifiers.filter(function (m) {
return m.enabled;
}); // Validate the provided modifiers so that the consumer will get warned
});
runModifierEffects();
return instance.update();
},
@@ -3357,7 +3364,6 @@
// anymore
if (!areValidElements(reference, popper)) {
return;
} // Store the reference and popper rects to be read by modifiers
@@ -3382,7 +3388,6 @@
});
for (var index = 0; index < state.orderedModifiers.length; index++) {
if (state.reset === true) {
state.reset = false;
index = -1;
@@ -3420,7 +3425,6 @@
};
if (!areValidElements(reference, popper)) {
return instance;
}
@@ -3435,11 +3439,11 @@
// one.
function runModifierEffects() {
state.orderedModifiers.forEach(function (_ref3) {
var name = _ref3.name,
_ref3$options = _ref3.options,
options = _ref3$options === void 0 ? {} : _ref3$options,
effect = _ref3.effect;
state.orderedModifiers.forEach(function (_ref) {
var name = _ref.name,
_ref$options = _ref.options,
options = _ref$options === void 0 ? {} : _ref$options,
effect = _ref.effect;
if (typeof effect === 'function') {
var cleanupFn = effect({
@@ -3527,6 +3531,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -3894,6 +3899,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -4018,6 +4024,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -4116,6 +4123,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -4213,6 +4221,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -4517,6 +4526,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -4747,34 +4757,6 @@
* --------------------------------------------------------------------------
*/
const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
/**
* A pattern that recognizes a commonly useful subset of URLs that are safe.
*
* Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts
*/
const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;
/**
* A pattern that matches safe data URLs. Only matches image, video and audio types.
*
* Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts
*/
const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;
const allowedAttribute = (attribute, allowedAttributeList) => {
const attributeName = attribute.nodeName.toLowerCase();
if (allowedAttributeList.includes(attributeName)) {
if (uriAttributes.has(attributeName)) {
return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue));
}
return true;
}
// Check if a regular expression validates the attribute.
return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));
};
// js-docs-start allow-list
const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
const DefaultAllowlist = {
@@ -4812,6 +4794,28 @@
};
// js-docs-end allow-list
const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
/**
* A pattern that recognizes URLs that are safe wrt. XSS in URL navigation
* contexts.
*
* Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38
*/
// eslint-disable-next-line unicorn/better-regex
const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;
const allowedAttribute = (attribute, allowedAttributeList) => {
const attributeName = attribute.nodeName.toLowerCase();
if (allowedAttributeList.includes(attributeName)) {
if (uriAttributes.has(attributeName)) {
return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));
}
return true;
}
// Check if a regular expression validates the attribute.
return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));
};
function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
if (!unsafeHtml.length) {
return unsafeHtml;
@@ -4846,6 +4850,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -4981,6 +4986,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -5492,6 +5498,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -5572,6 +5579,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -5750,11 +5758,11 @@
if (!anchor.hash || isDisabled(anchor)) {
continue;
}
const observableSection = SelectorEngine.findOne(anchor.hash, this._element);
const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);
// ensure that the observableSection exists & is visible
if (isVisible(observableSection)) {
this._targetLinks.set(anchor.hash, anchor);
this._targetLinks.set(decodeURI(anchor.hash), anchor);
this._observableSections.set(anchor.hash, observableSection);
}
}
@@ -5831,6 +5839,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -6092,6 +6101,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -6274,6 +6284,7 @@
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
const index_umd = {
Alert,
Button,
+1 -1
View File
File diff suppressed because one or more lines are too long
+2 -2
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+48 -32
View File
@@ -1,5 +1,5 @@
/*!
* Bootstrap v5.3.0-alpha3 (https://getbootstrap.com/)
* Bootstrap v5.3.0 (https://getbootstrap.com/)
* Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
@@ -307,6 +307,7 @@ const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -585,6 +586,7 @@ const Manipulator = {
* --------------------------------------------------------------------------
*/
/**
* Class definition
*/
@@ -637,11 +639,12 @@ class Config {
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
const VERSION = '5.3.0-alpha2';
const VERSION = '5.3.0';
/**
* Class definition
@@ -704,6 +707,7 @@ class BaseComponent extends Config {
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
const getSelector = element => {
let selector = element.getAttribute('data-bs-target');
if (!selector || selector === '#') {
@@ -792,6 +796,7 @@ const SelectorEngine = {
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
const enableDismissTrigger = (component, method = 'hide') => {
const clickEvent = `click.dismiss${component.EVENT_KEY}`;
const name = component.NAME;
@@ -817,6 +822,7 @@ const enableDismissTrigger = (component, method = 'hide') => {
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -891,6 +897,7 @@ defineJQueryPlugin(Alert);
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -954,6 +961,7 @@ defineJQueryPlugin(Button);
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -1073,6 +1081,7 @@ class Swipe extends Config {
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -1445,6 +1454,7 @@ defineJQueryPlugin(Carousel);
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -1678,6 +1688,7 @@ defineJQueryPlugin(Collapse);
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -2045,6 +2056,7 @@ defineJQueryPlugin(Dropdown);
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -2169,6 +2181,7 @@ class Backdrop extends Config {
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -2267,6 +2280,7 @@ class FocusTrap extends Config {
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -2364,6 +2378,7 @@ class ScrollBarHelper {
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -2668,6 +2683,7 @@ defineJQueryPlugin(Modal);
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -2898,34 +2914,6 @@ defineJQueryPlugin(Offcanvas);
* --------------------------------------------------------------------------
*/
const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
/**
* A pattern that recognizes a commonly useful subset of URLs that are safe.
*
* Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts
*/
const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;
/**
* A pattern that matches safe data URLs. Only matches image, video and audio types.
*
* Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts
*/
const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;
const allowedAttribute = (attribute, allowedAttributeList) => {
const attributeName = attribute.nodeName.toLowerCase();
if (allowedAttributeList.includes(attributeName)) {
if (uriAttributes.has(attributeName)) {
return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue));
}
return true;
}
// Check if a regular expression validates the attribute.
return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));
};
// js-docs-start allow-list
const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
const DefaultAllowlist = {
@@ -2963,6 +2951,28 @@ const DefaultAllowlist = {
};
// js-docs-end allow-list
const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
/**
* A pattern that recognizes URLs that are safe wrt. XSS in URL navigation
* contexts.
*
* Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38
*/
// eslint-disable-next-line unicorn/better-regex
const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;
const allowedAttribute = (attribute, allowedAttributeList) => {
const attributeName = attribute.nodeName.toLowerCase();
if (allowedAttributeList.includes(attributeName)) {
if (uriAttributes.has(attributeName)) {
return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));
}
return true;
}
// Check if a regular expression validates the attribute.
return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));
};
function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
if (!unsafeHtml.length) {
return unsafeHtml;
@@ -2997,6 +3007,7 @@ function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -3132,6 +3143,7 @@ class TemplateFactory extends Config {
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -3643,6 +3655,7 @@ defineJQueryPlugin(Tooltip);
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -3723,6 +3736,7 @@ defineJQueryPlugin(Popover);
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -3901,11 +3915,11 @@ class ScrollSpy extends BaseComponent {
if (!anchor.hash || isDisabled(anchor)) {
continue;
}
const observableSection = SelectorEngine.findOne(anchor.hash, this._element);
const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);
// ensure that the observableSection exists & is visible
if (isVisible(observableSection)) {
this._targetLinks.set(anchor.hash, anchor);
this._targetLinks.set(decodeURI(anchor.hash), anchor);
this._observableSections.set(anchor.hash, observableSection);
}
}
@@ -3982,6 +3996,7 @@ defineJQueryPlugin(ScrollSpy);
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -4243,6 +4258,7 @@ defineJQueryPlugin(Tab);
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
+1 -1
View File
File diff suppressed because one or more lines are too long
+2 -2
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+49 -32
View File
@@ -1,5 +1,5 @@
/*!
* Bootstrap v5.3.0-alpha3 (https://getbootstrap.com/)
* Bootstrap v5.3.0 (https://getbootstrap.com/)
* Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
@@ -330,6 +330,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -608,6 +609,7 @@
* --------------------------------------------------------------------------
*/
/**
* Class definition
*/
@@ -660,11 +662,12 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
const VERSION = '5.3.0-alpha2';
const VERSION = '5.3.0';
/**
* Class definition
@@ -727,6 +730,7 @@
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
const getSelector = element => {
let selector = element.getAttribute('data-bs-target');
if (!selector || selector === '#') {
@@ -815,6 +819,7 @@
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
const enableDismissTrigger = (component, method = 'hide') => {
const clickEvent = `click.dismiss${component.EVENT_KEY}`;
const name = component.NAME;
@@ -840,6 +845,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -914,6 +920,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -977,6 +984,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -1096,6 +1104,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -1468,6 +1477,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -1701,6 +1711,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -2068,6 +2079,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -2192,6 +2204,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -2290,6 +2303,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -2387,6 +2401,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -2691,6 +2706,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -2921,34 +2937,6 @@
* --------------------------------------------------------------------------
*/
const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
/**
* A pattern that recognizes a commonly useful subset of URLs that are safe.
*
* Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts
*/
const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;
/**
* A pattern that matches safe data URLs. Only matches image, video and audio types.
*
* Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts
*/
const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;
const allowedAttribute = (attribute, allowedAttributeList) => {
const attributeName = attribute.nodeName.toLowerCase();
if (allowedAttributeList.includes(attributeName)) {
if (uriAttributes.has(attributeName)) {
return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue));
}
return true;
}
// Check if a regular expression validates the attribute.
return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));
};
// js-docs-start allow-list
const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
const DefaultAllowlist = {
@@ -2986,6 +2974,28 @@
};
// js-docs-end allow-list
const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
/**
* A pattern that recognizes URLs that are safe wrt. XSS in URL navigation
* contexts.
*
* Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38
*/
// eslint-disable-next-line unicorn/better-regex
const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;
const allowedAttribute = (attribute, allowedAttributeList) => {
const attributeName = attribute.nodeName.toLowerCase();
if (allowedAttributeList.includes(attributeName)) {
if (uriAttributes.has(attributeName)) {
return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));
}
return true;
}
// Check if a regular expression validates the attribute.
return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));
};
function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
if (!unsafeHtml.length) {
return unsafeHtml;
@@ -3020,6 +3030,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -3155,6 +3166,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -3666,6 +3678,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -3746,6 +3759,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -3924,11 +3938,11 @@
if (!anchor.hash || isDisabled(anchor)) {
continue;
}
const observableSection = SelectorEngine.findOne(anchor.hash, this._element);
const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);
// ensure that the observableSection exists & is visible
if (isVisible(observableSection)) {
this._targetLinks.set(anchor.hash, anchor);
this._targetLinks.set(decodeURI(anchor.hash), anchor);
this._observableSections.set(anchor.hash, observableSection);
}
}
@@ -4005,6 +4019,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -4266,6 +4281,7 @@
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
@@ -4448,6 +4464,7 @@
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
const index_umd = {
Alert,
Button,
+1 -1
View File
File diff suppressed because one or more lines are too long
+2 -2
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long