1(function polyfill() { 2 const relList = document.createElement("link").relList; 3 if (relList && relList.supports && relList.supports("modulepreload")) { 4 return; 5 } 6 for (const link of document.querySelectorAll('link[rel="modulepreload"]')) { 7 processPreload(link); 8 } 9 new MutationObserver((mutations) => { 10 for (const mutation of mutations) { 11 if (mutation.type !== "childList") { 12 continue; 13 } 14 for (const node of mutation.addedNodes) { 15 if (node.tagName === "LINK" && node.rel === "modulepreload") 16 processPreload(node); 17 } 18 } 19 }).observe(document, { childList: true, subtree: true }); 20 function getFetchOpts(link) { 21 const fetchOpts = {}; 22 if (link.integrity) 23 fetchOpts.integrity = link.integrity; 24 if (link.referrerPolicy) 25 fetchOpts.referrerPolicy = link.referrerPolicy; 26 if (link.crossOrigin === "use-credentials") 27 fetchOpts.credentials = "include"; 28 else if (link.crossOrigin === "anonymous") 29 fetchOpts.credentials = "omit"; 30 else 31 fetchOpts.credentials = "same-origin"; 32 return fetchOpts; 33 } 34 function processPreload(link) { 35 if (link.ep) 36 return; 37 link.ep = true; 38 const fetchOpts = getFetchOpts(link); 39 fetch(link.href, fetchOpts); 40 } 41})(); 42const styles = ""; 43var top = "top"; 44var bottom = "bottom"; 45var right = "right"; 46var left = "left"; 47var auto = "auto"; 48var basePlacements = [top, bottom, right, left]; 49var start = "start"; 50var end = "end"; 51var clippingParents = "clippingParents"; 52var viewport = "viewport"; 53var popper = "popper"; 54var reference = "reference"; 55var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) { 56 return acc.concat([placement + "-" + start, placement + "-" + end]); 57}, []); 58var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) { 59 return acc.concat([placement, placement + "-" + start, placement + "-" + end]); 60}, []); 61var beforeRead = "beforeRead"; 62var read = "read"; 63var afterRead = "afterRead"; 64var beforeMain = "beforeMain"; 65var main = "main"; 66var afterMain = "afterMain"; 67var beforeWrite = "beforeWrite"; 68var write = "write"; 69var afterWrite = "afterWrite"; 70var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; 71function getNodeName(element) { 72 return element ? (element.nodeName || "").toLowerCase() : null; 73} 74function getWindow(node) { 75 if (node == null) { 76 return window; 77 } 78 if (node.toString() !== "[object Window]") { 79 var ownerDocument = node.ownerDocument; 80 return ownerDocument ? ownerDocument.defaultView || window : window; 81 } 82 return node; 83} 84function isElement$1(node) { 85 var OwnElement = getWindow(node).Element; 86 return node instanceof OwnElement || node instanceof Element; 87} 88function isHTMLElement(node) { 89 var OwnElement = getWindow(node).HTMLElement; 90 return node instanceof OwnElement || node instanceof HTMLElement; 91} 92function isShadowRoot(node) { 93 if (typeof ShadowRoot === "undefined") { 94 return false; 95 } 96 var OwnElement = getWindow(node).ShadowRoot; 97 return node instanceof OwnElement || node instanceof ShadowRoot; 98} 99function applyStyles(_ref) { 100 var state = _ref.state; 101 Object.keys(state.elements).forEach(function(name) { 102 var style = state.styles[name] || {}; 103 var attributes = state.attributes[name] || {}; 104 var element = state.elements[name]; 105 if (!isHTMLElement(element) || !getNodeName(element)) { 106 return; 107 } 108 Object.assign(element.style, style); 109 Object.keys(attributes).forEach(function(name2) { 110 var value = attributes[name2]; 111 if (value === false) { 112 element.removeAttribute(name2); 113 } else { 114 element.setAttribute(name2, value === true ? "" : value); 115 } 116 }); 117 }); 118} 119function effect$2(_ref2) { 120 var state = _ref2.state; 121 var initialStyles = { 122 popper: { 123 position: state.options.strategy, 124 left: "0", 125 top: "0", 126 margin: "0" 127 }, 128 arrow: { 129 position: "absolute" 130 }, 131 reference: {} 132 }; 133 Object.assign(state.elements.popper.style, initialStyles.popper); 134 state.styles = initialStyles; 135 if (state.elements.arrow) { 136 Object.assign(state.elements.arrow.style, initialStyles.arrow); 137 } 138 return function() {
vendor: 14,659 bytes, lines 139-540
139 Object.keys(state.elements).forEach(function(name) { 140 var element = state.elements[name]; 141 var attributes = state.attributes[name] || {}; 142 var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); 143 var style = styleProperties.reduce(function(style2, property) { 144 style2[property] = ""; 145 return style2; 146 }, {}); 147 if (!isHTMLElement(element) || !getNodeName(element)) { 148 return; 149 } 150 Object.assign(element.style, style); 151 Object.keys(attributes).forEach(function(attribute) { 152 element.removeAttribute(attribute); 153 }); 154 }); 155 }; 156} 157const applyStyles$1 = { 158 name: "applyStyles", 159 enabled: true, 160 phase: "write", 161 fn: applyStyles, 162 effect: effect$2, 163 requires: ["computeStyles"] 164}; 165function getBasePlacement(placement) { 166 return placement.split("-")[0]; 167} 168var max = Math.max; 169var min = Math.min; 170var round = Math.round; 171function getUAString() { 172 var uaData = navigator.userAgentData; 173 if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) { 174 return uaData.brands.map(function(item) { 175 return item.brand + "/" + item.version; 176 }).join(" "); 177 } 178 return navigator.userAgent; 179} 180function isLayoutViewport() { 181 return !/^((?!chrome|android).)*safari/i.test(getUAString()); 182} 183function getBoundingClientRect(element, includeScale, isFixedStrategy) { 184 if (includeScale === void 0) { 185 includeScale = false; 186 } 187 if (isFixedStrategy === void 0) { 188 isFixedStrategy = false; 189 } 190 var clientRect = element.getBoundingClientRect(); 191 var scaleX = 1; 192 var scaleY = 1; 193 if (includeScale && isHTMLElement(element)) { 194 scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1; 195 scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1; 196 } 197 var _ref = isElement$1(element) ? getWindow(element) : window, visualViewport = _ref.visualViewport; 198 var addVisualOffsets = !isLayoutViewport() && isFixedStrategy; 199 var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX; 200 var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY; 201 var width = clientRect.width / scaleX; 202 var height = clientRect.height / scaleY; 203 return { 204 width, 205 height, 206 top: y, 207 right: x + width, 208 bottom: y + height, 209 left: x, 210 x, 211 y 212 }; 213} 214function getLayoutRect(element) { 215 var clientRect = getBoundingClientRect(element); 216 var width = element.offsetWidth; 217 var height = element.offsetHeight; 218 if (Math.abs(clientRect.width - width) <= 1) { 219 width = clientRect.width; 220 } 221 if (Math.abs(clientRect.height - height) <= 1) { 222 height = clientRect.height; 223 } 224 return { 225 x: element.offsetLeft, 226 y: element.offsetTop, 227 width, 228 height 229 }; 230} 231function contains(parent, child) { 232 var rootNode = child.getRootNode && child.getRootNode(); 233 if (parent.contains(child)) { 234 return true; 235 } else if (rootNode && isShadowRoot(rootNode)) { 236 var next = child; 237 do { 238 if (next && parent.isSameNode(next)) { 239 return true; 240 } 241 next = next.parentNode || next.host; 242 } while (next); 243 } 244 return false; 245} 246function getComputedStyle$1(element) { 247 return getWindow(element).getComputedStyle(element); 248} 249function isTableElement(element) { 250 return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0; 251} 252function getDocumentElement(element) { 253 return ((isElement$1(element) ? element.ownerDocument : ( 254 // $FlowFixMe[prop-missing] 255 element.document 256 )) || window.document).documentElement; 257} 258function getParentNode(element) { 259 if (getNodeName(element) === "html") { 260 return element; 261 } 262 return ( 263 // this is a quicker (but less type safe) way to save quite some bytes from the bundle 264 // $FlowFixMe[incompatible-return] 265 // $FlowFixMe[prop-missing] 266 element.assignedSlot || // step into the shadow DOM of the parent of a slotted node 267 element.parentNode || // DOM Element detected 268 (isShadowRoot(element) ? element.host : null) || // ShadowRoot detected 269 // $FlowFixMe[incompatible-call]: HTMLElement is a Node 270 getDocumentElement(element) 271 ); 272} 273function getTrueOffsetParent(element) { 274 if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 275 getComputedStyle$1(element).position === "fixed") { 276 return null; 277 } 278 return element.offsetParent; 279} 280function getContainingBlock(element) { 281 var isFirefox = /firefox/i.test(getUAString()); 282 var isIE = /Trident/i.test(getUAString()); 283 if (isIE && isHTMLElement(element)) { 284 var elementCss = getComputedStyle$1(element); 285 if (elementCss.position === "fixed") { 286 return null; 287 } 288 } 289 var currentNode = getParentNode(element); 290 if (isShadowRoot(currentNode)) { 291 currentNode = currentNode.host; 292 } 293 while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) { 294 var css = getComputedStyle$1(currentNode); 295 if (css.transform !== "none" || css.perspective !== "none" || css.contain === "paint" || ["transform", "perspective"].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === "filter" || isFirefox && css.filter && css.filter !== "none") { 296 return currentNode; 297 } else { 298 currentNode = currentNode.parentNode; 299 } 300 } 301 return null; 302} 303function getOffsetParent(element) { 304 var window2 = getWindow(element); 305 var offsetParent = getTrueOffsetParent(element); 306 while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === "static") { 307 offsetParent = getTrueOffsetParent(offsetParent); 308 } 309 if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle$1(offsetParent).position === "static")) { 310 return window2; 311 } 312 return offsetParent || getContainingBlock(element) || window2; 313} 314function getMainAxisFromPlacement(placement) { 315 return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y"; 316} 317function within(min$1, value, max$1) { 318 return max(min$1, min(value, max$1)); 319} 320function withinMaxClamp(min2, value, max2) { 321 var v = within(min2, value, max2); 322 return v > max2 ? max2 : v; 323} 324function getFreshSideObject() { 325 return { 326 top: 0, 327 right: 0, 328 bottom: 0, 329 left: 0 330 }; 331} 332function mergePaddingObject(paddingObject) { 333 return Object.assign({}, getFreshSideObject(), paddingObject); 334} 335function expandToHashMap(value, keys) { 336 return keys.reduce(function(hashMap, key) { 337 hashMap[key] = value; 338 return hashMap; 339 }, {}); 340} 341var toPaddingObject = function toPaddingObject2(padding, state) { 342 padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, { 343 placement: state.placement 344 })) : padding; 345 return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); 346}; 347function arrow(_ref) { 348 var _state$modifiersData$; 349 var state = _ref.state, name = _ref.name, options = _ref.options; 350 var arrowElement = state.elements.arrow; 351 var popperOffsets2 = state.modifiersData.popperOffsets; 352 var basePlacement = getBasePlacement(state.placement); 353 var axis = getMainAxisFromPlacement(basePlacement); 354 var isVertical = [left, right].indexOf(basePlacement) >= 0; 355 var len = isVertical ? "height" : "width"; 356 if (!arrowElement || !popperOffsets2) { 357 return; 358 } 359 var paddingObject = toPaddingObject(options.padding, state); 360 var arrowRect = getLayoutRect(arrowElement); 361 var minProp = axis === "y" ? top : left; 362 var maxProp = axis === "y" ? bottom : right; 363 var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len]; 364 var startDiff = popperOffsets2[axis] - state.rects.reference[axis]; 365 var arrowOffsetParent = getOffsetParent(arrowElement); 366 var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; 367 var centerToReference = endDiff / 2 - startDiff / 2; 368 var min2 = paddingObject[minProp]; 369 var max2 = clientSize - arrowRect[len] - paddingObject[maxProp]; 370 var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; 371 var offset2 = within(min2, center, max2); 372 var axisProp = axis; 373 state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$); 374} 375function effect$1(_ref2) { 376 var state = _ref2.state, options = _ref2.options; 377 var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element; 378 if (arrowElement == null) { 379 return; 380 } 381 if (typeof arrowElement === "string") { 382 arrowElement = state.elements.popper.querySelector(arrowElement); 383 if (!arrowElement) { 384 return; 385 } 386 } 387 if (!contains(state.elements.popper, arrowElement)) { 388 return; 389 } 390 state.elements.arrow = arrowElement; 391} 392const arrow$1 = { 393 name: "arrow", 394 enabled: true, 395 phase: "main", 396 fn: arrow, 397 effect: effect$1, 398 requires: ["popperOffsets"], 399 requiresIfExists: ["preventOverflow"] 400}; 401function getVariation(placement) { 402 return placement.split("-")[1]; 403} 404var unsetSides = { 405 top: "auto", 406 right: "auto", 407 bottom: "auto", 408 left: "auto" 409}; 410function roundOffsetsByDPR(_ref, win) { 411 var x = _ref.x, y = _ref.y; 412 var dpr = win.devicePixelRatio || 1; 413 return { 414 x: round(x * dpr) / dpr || 0, 415 y: round(y * dpr) / dpr || 0 416 }; 417} 418function mapToStyles(_ref2) { 419 var _Object$assign2; 420 var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed; 421 var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y; 422 var _ref3 = typeof roundOffsets === "function" ? roundOffsets({ 423 x, 424 y 425 }) : { 426 x, 427 y 428 }; 429 x = _ref3.x; 430 y = _ref3.y; 431 var hasX = offsets.hasOwnProperty("x"); 432 var hasY = offsets.hasOwnProperty("y"); 433 var sideX = left; 434 var sideY = top; 435 var win = window; 436 if (adaptive) { 437 var offsetParent = getOffsetParent(popper2); 438 var heightProp = "clientHeight"; 439 var widthProp = "clientWidth"; 440 if (offsetParent === getWindow(popper2)) { 441 offsetParent = getDocumentElement(popper2); 442 if (getComputedStyle$1(offsetParent).position !== "static" && position === "absolute") { 443 heightProp = "scrollHeight"; 444 widthProp = "scrollWidth"; 445 } 446 } 447 offsetParent = offsetParent; 448 if (placement === top || (placement === left || placement === right) && variation === end) { 449 sideY = bottom; 450 var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : ( 451 // $FlowFixMe[prop-missing] 452 offsetParent[heightProp] 453 ); 454 y -= offsetY - popperRect.height; 455 y *= gpuAcceleration ? 1 : -1; 456 } 457 if (placement === left || (placement === top || placement === bottom) && variation === end) { 458 sideX = right; 459 var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : ( 460 // $FlowFixMe[prop-missing] 461 offsetParent[widthProp] 462 ); 463 x -= offsetX - popperRect.width; 464 x *= gpuAcceleration ? 1 : -1; 465 } 466 } 467 var commonStyles = Object.assign({ 468 position 469 }, adaptive && unsetSides); 470 var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ 471 x, 472 y 473 }, getWindow(popper2)) : { 474 x, 475 y 476 }; 477 x = _ref4.x; 478 y = _ref4.y; 479 if (gpuAcceleration) { 480 var _Object$assign; 481 return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); 482 } 483 return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2)); 484} 485function computeStyles(_ref5) { 486 var state = _ref5.state, options = _ref5.options; 487 var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; 488 var commonStyles = { 489 placement: getBasePlacement(state.placement), 490 variation: getVariation(state.placement), 491 popper: state.elements.popper, 492 popperRect: state.rects.popper, 493 gpuAcceleration, 494 isFixed: state.options.strategy === "fixed" 495 }; 496 if (state.modifiersData.popperOffsets != null) { 497 state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { 498 offsets: state.modifiersData.popperOffsets, 499 position: state.options.strategy, 500 adaptive, 501 roundOffsets 502 }))); 503 } 504 if (state.modifiersData.arrow != null) { 505 state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { 506 offsets: state.modifiersData.arrow, 507 position: "absolute", 508 adaptive: false, 509 roundOffsets 510 }))); 511 } 512 state.attributes.popper = Object.assign({}, state.attributes.popper, { 513 "data-popper-placement": state.placement 514 }); 515} 516const computeStyles$1 = { 517 name: "computeStyles", 518 enabled: true, 519 phase: "beforeWrite", 520 fn: computeStyles, 521 data: {} 522}; 523var passive = { 524 passive: true 525}; 526function effect(_ref) { 527 var state = _ref.state, instance = _ref.instance, options = _ref.options; 528 var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize; 529 var window2 = getWindow(state.elements.popper); 530 var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); 531 if (scroll) { 532 scrollParents.forEach(function(scrollParent) { 533 scrollParent.addEventListener("scroll", instance.update, passive); 534 }); 535 } 536 if (resize) { 537 window2.addEventListener("resize", instance.update, passive); 538 } 539 return function() { 540 if (scroll) {
541 scrollParents.forEach(function(scrollParent) { 542 scrollParent.removeEventListener("scroll", instance.update, passive); 543 }); 544 } 545 if (resize) { 546 window2.removeEventListener("resize", instance.update, passive); 547 } 548 }; 549} 550const eventListeners = { 551 name: "eventListeners", 552 enabled: true, 553 phase: "write", 554 fn: function fn() { 555 }, 556 effect, 557 data: {} 558}; 559var hash$1 = { 560 left: "right", 561 right: "left", 562 bottom: "top", 563 top: "bottom" 564}; 565function getOppositePlacement(placement) { 566 return placement.replace(/left|right|bottom|top/g, function(matched) { 567 return hash$1[matched]; 568 }); 569} 570var hash = { 571 start: "end", 572 end: "start" 573}; 574function getOppositeVariationPlacement(placement) { 575 return placement.replace(/start|end/g, function(matched) { 576 return hash[matched]; 577 }); 578} 579function getWindowScroll(node) { 580 var win = getWindow(node); 581 var scrollLeft = win.pageXOffset; 582 var scrollTop = win.pageYOffset; 583 return { 584 scrollLeft, 585 scrollTop 586 }; 587} 588function getWindowScrollBarX(element) { 589 return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; 590} 591function getViewportRect(element, strategy) { 592 var win = getWindow(element); 593 var html = getDocumentElement(element); 594 var visualViewport = win.visualViewport; 595 var width = html.clientWidth; 596 var height = html.clientHeight; 597 var x = 0; 598 var y = 0; 599 if (visualViewport) { 600 width = visualViewport.width;
vendor: 7,269 bytes, lines 601-770
601 height = visualViewport.height; 602 var layoutViewport = isLayoutViewport(); 603 if (layoutViewport || !layoutViewport && strategy === "fixed") { 604 x = visualViewport.offsetLeft; 605 y = visualViewport.offsetTop; 606 } 607 } 608 return { 609 width, 610 height, 611 x: x + getWindowScrollBarX(element), 612 y 613 }; 614} 615function getDocumentRect(element) { 616 var _element$ownerDocumen; 617 var html = getDocumentElement(element); 618 var winScroll = getWindowScroll(element); 619 var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; 620 var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); 621 var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); 622 var x = -winScroll.scrollLeft + getWindowScrollBarX(element); 623 var y = -winScroll.scrollTop; 624 if (getComputedStyle$1(body || html).direction === "rtl") { 625 x += max(html.clientWidth, body ? body.clientWidth : 0) - width; 626 } 627 return { 628 width, 629 height, 630 x, 631 y 632 }; 633} 634function isScrollParent(element) { 635 var _getComputedStyle = getComputedStyle$1(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY; 636 return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); 637} 638function getScrollParent(node) { 639 if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) { 640 return node.ownerDocument.body; 641 } 642 if (isHTMLElement(node) && isScrollParent(node)) { 643 return node; 644 } 645 return getScrollParent(getParentNode(node)); 646} 647function listScrollParents(element, list) { 648 var _element$ownerDocumen; 649 if (list === void 0) { 650 list = []; 651 } 652 var scrollParent = getScrollParent(element); 653 var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); 654 var win = getWindow(scrollParent); 655 var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; 656 var updatedList = list.concat(target); 657 return isBody ? updatedList : ( 658 // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here 659 updatedList.concat(listScrollParents(getParentNode(target))) 660 ); 661} 662function rectToClientRect(rect) { 663 return Object.assign({}, rect, { 664 left: rect.x, 665 top: rect.y, 666 right: rect.x + rect.width, 667 bottom: rect.y + rect.height 668 }); 669} 670function getInnerBoundingClientRect(element, strategy) { 671 var rect = getBoundingClientRect(element, false, strategy === "fixed"); 672 rect.top = rect.top + element.clientTop; 673 rect.left = rect.left + element.clientLeft; 674 rect.bottom = rect.top + element.clientHeight; 675 rect.right = rect.left + element.clientWidth; 676 rect.width = element.clientWidth; 677 rect.height = element.clientHeight; 678 rect.x = rect.left; 679 rect.y = rect.top; 680 return rect; 681} 682function getClientRectFromMixedType(element, clippingParent, strategy) { 683 return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement$1(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element))); 684} 685function getClippingParents(element) { 686 var clippingParents2 = listScrollParents(getParentNode(element)); 687 var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle$1(element).position) >= 0; 688 var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; 689 if (!isElement$1(clipperElement)) { 690 return []; 691 } 692 return clippingParents2.filter(function(clippingParent) { 693 return isElement$1(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body"; 694 }); 695} 696function getClippingRect(element, boundary, rootBoundary, strategy) { 697 var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary); 698 var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]); 699 var firstClippingParent = clippingParents2[0]; 700 var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) { 701 var rect = getClientRectFromMixedType(element, clippingParent, strategy); 702 accRect.top = max(rect.top, accRect.top); 703 accRect.right = min(rect.right, accRect.right); 704 accRect.bottom = min(rect.bottom, accRect.bottom); 705 accRect.left = max(rect.left, accRect.left); 706 return accRect; 707 }, getClientRectFromMixedType(element, firstClippingParent, strategy)); 708 clippingRect.width = clippingRect.right - clippingRect.left; 709 clippingRect.height = clippingRect.bottom - clippingRect.top; 710 clippingRect.x = clippingRect.left; 711 clippingRect.y = clippingRect.top; 712 return clippingRect; 713} 714function computeOffsets(_ref) { 715 var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement; 716 var basePlacement = placement ? getBasePlacement(placement) : null; 717 var variation = placement ? getVariation(placement) : null; 718 var commonX = reference2.x + reference2.width / 2 - element.width / 2; 719 var commonY = reference2.y + reference2.height / 2 - element.height / 2; 720 var offsets; 721 switch (basePlacement) { 722 case top: 723 offsets = { 724 x: commonX, 725 y: reference2.y - element.height 726 }; 727 break; 728 case bottom: 729 offsets = { 730 x: commonX, 731 y: reference2.y + reference2.height 732 }; 733 break; 734 case right: 735 offsets = { 736 x: reference2.x + reference2.width, 737 y: commonY 738 }; 739 break; 740 case left: 741 offsets = { 742 x: reference2.x - element.width, 743 y: commonY 744 }; 745 break; 746 default: 747 offsets = { 748 x: reference2.x, 749 y: reference2.y 750 }; 751 } 752 var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; 753 if (mainAxis != null) { 754 var len = mainAxis === "y" ? "height" : "width"; 755 switch (variation) { 756 case start: 757 offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2); 758 break; 759 case end: 760 offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2); 761 break; 762 } 763 } 764 return offsets; 765} 766function detectOverflow(state, options) { 767 if (options === void 0) { 768 options = {}; 769 } 770 var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;
771 var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements)); 772 var altContext = elementContext === popper ? reference : popper; 773 var popperRect = state.rects.popper; 774 var element = state.elements[altBoundary ? altContext : elementContext]; 775 var clippingClientRect = getClippingRect(isElement$1(element) ? element : element
vendor: 15,433 bytes, lines 775-1133
775.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy); 776 var referenceClientRect = getBoundingClientRect(state.elements.reference); 777 var popperOffsets2 = computeOffsets({ 778 reference: referenceClientRect, 779 element: popperRect, 780 strategy: "absolute", 781 placement 782 }); 783 var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2)); 784 var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; 785 var overflowOffsets = { 786 top: clippingClientRect.top - elementClientRect.top + paddingObject.top, 787 bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, 788 left: clippingClientRect.left - elementClientRect.left + paddingObject.left, 789 right: elementClientRect.right - clippingClientRect.right + paddingObject.right 790 }; 791 var offsetData = state.modifiersData.offset; 792 if (elementContext === popper && offsetData) { 793 var offset2 = offsetData[placement]; 794 Object.keys(overflowOffsets).forEach(function(key) { 795 var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; 796 var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x"; 797 overflowOffsets[key] += offset2[axis] * multiply; 798 }); 799 } 800 return overflowOffsets; 801} 802function computeAutoPlacement(state, options) { 803 if (options === void 0) { 804 options = {}; 805 } 806 var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; 807 var variation = getVariation(placement); 808 var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) { 809 return getVariation(placement2) === variation; 810 }) : basePlacements; 811 var allowedPlacements = placements$1.filter(function(placement2) { 812 return allowedAutoPlacements.indexOf(placement2) >= 0; 813 }); 814 if (allowedPlacements.length === 0) { 815 allowedPlacements = placements$1; 816 } 817 var overflows = allowedPlacements.reduce(function(acc, placement2) { 818 acc[placement2] = detectOverflow(state, { 819 placement: placement2, 820 boundary, 821 rootBoundary, 822 padding 823 })[getBasePlacement(placement2)]; 824 return acc; 825 }, {}); 826 return Object.keys(overflows).sort(function(a, b) { 827 return overflows[a] - overflows[b]; 828 }); 829} 830function getExpandedFallbackPlacements(placement) { 831 if (getBasePlacement(placement) === auto) { 832 return []; 833 } 834 var oppositePlacement = getOppositePlacement(placement); 835 return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; 836} 837function flip(_ref) { 838 var state = _ref.state, options = _ref.options, name = _ref.name; 839 if (state.modifiersData[name]._skip) { 840 return; 841 } 842 var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements; 843 var preferredPlacement = state.options.placement; 844 var basePlacement = getBasePlacement(preferredPlacement); 845 var isBasePlacement = basePlacement === preferredPlacement; 846 var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); 847 var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) { 848 return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, { 849 placement: placement2, 850 boundary, 851 rootBoundary, 852 padding, 853 flipVariations, 854 allowedAutoPlacements 855 }) : placement2); 856 }, []); 857 var referenceRect = state.rects.reference; 858 var popperRect = state.rects.popper; 859 var checksMap = /* @__PURE__ */ new Map(); 860 var makeFallbackChecks = true; 861 var firstFittingPlacement = placements2[0]; 862 for (var i = 0; i < placements2.length; i++) { 863 var placement = placements2[i]; 864 var _basePlacement = getBasePlacement(placement); 865 var isStartVariation = getVariation(placement) === start; 866 var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; 867 var len = isVertical ? "width" : "height"; 868 var overflow = detectOverflow(state, { 869 placement, 870 boundary, 871 rootBoundary, 872 altBoundary, 873 padding 874 }); 875 var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; 876 if (referenceRect[len] > popperRect[len]) { 877 mainVariationSide = getOppositePlacement(mainVariationSide); 878 } 879 var altVariationSide = getOppositePlacement(mainVariationSide); 880 var checks = []; 881 if (checkMainAxis) { 882 checks.push(overflow[_basePlacement] <= 0); 883 } 884 if (checkAltAxis) { 885 checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); 886 } 887 if (checks.every(function(check) { 888 return check; 889 })) { 890 firstFittingPlacement = placement; 891 makeFallbackChecks = false; 892 break; 893 } 894 checksMap.set(placement, checks); 895 } 896 if (makeFallbackChecks) { 897 var numberOfChecks = flipVariations ? 3 : 1; 898 var _loop = function _loop2(_i2) { 899 var fittingPlacement = placements2.find(function(placement2) { 900 var checks2 = checksMap.get(placement2); 901 if (checks2) { 902 return checks2.slice(0, _i2).every(function(check) { 903 return check; 904 }); 905 } 906 }); 907 if (fittingPlacement) { 908 firstFittingPlacement = fittingPlacement; 909 return "break"; 910 } 911 }; 912 for (var _i = numberOfChecks; _i > 0; _i--) { 913 var _ret = _loop(_i); 914 if (_ret === "break") 915 break; 916 } 917 } 918 if (state.placement !== firstFittingPlacement) { 919 state.modifiersData[name]._skip = true; 920 state.placement = firstFittingPlacement; 921 state.reset = true; 922 } 923} 924const flip$1 = { 925 name: "flip", 926 enabled: true, 927 phase: "main", 928 fn: flip, 929 requiresIfExists: ["offset"], 930 data: { 931 _skip: false 932 } 933}; 934function getSideOffsets(overflow, rect, preventedOffsets) { 935 if (preventedOffsets === void 0) { 936 preventedOffsets = { 937 x: 0, 938 y: 0 939 }; 940 } 941 return { 942 top: overflow.top - rect.height - preventedOffsets.y, 943 right: overflow.right - rect.width + preventedOffsets.x, 944 bottom: overflow.bottom - rect.height + preventedOffsets.y, 945 left: overflow.left - rect.width - preventedOffsets.x 946 }; 947} 948function isAnySideFullyClipped(overflow) { 949 return [top, right, bottom, left].some(function(side) { 950 return overflow[side] >= 0; 951 }); 952} 953function hide(_ref) { 954 var state = _ref.state, name = _ref.name; 955 var referenceRect = state.rects.reference; 956 var popperRect = state.rects.popper; 957 var preventedOffsets = state.modifiersData.preventOverflow; 958 var referenceOverflow = detectOverflow(state, { 959 elementContext: "reference" 960 }); 961 var popperAltOverflow = detectOverflow(state, { 962 altBoundary: true 963 }); 964 var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); 965 var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); 966 var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); 967 var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); 968 state.modifiersData[name] = { 969 referenceClippingOffsets, 970 popperEscapeOffsets, 971 isReferenceHidden, 972 hasPopperEscaped 973 }; 974 state.attributes.popper = Object.assign({}, state.attributes.popper, { 975 "data-popper-reference-hidden": isReferenceHidden, 976 "data-popper-escaped": hasPopperEscaped 977 }); 978} 979const hide$1 = { 980 name: "hide", 981 enabled: true, 982 phase: "main", 983 requiresIfExists: ["preventOverflow"], 984 fn: hide 985}; 986function distanceAndSkiddingToXY(placement, rects, offset2) { 987 var basePlacement = getBasePlacement(placement); 988 var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; 989 var _ref = typeof offset2 === "function" ? offset2(Object.assign({}, rects, { 990 placement 991 })) : offset2, skidding = _ref[0], distance = _ref[1]; 992 skidding = skidding || 0; 993 distance = (distance || 0) * invertDistance; 994 return [left, right].indexOf(basePlacement) >= 0 ? { 995 x: distance, 996 y: skidding 997 } : { 998 x: skidding, 999 y: distance 1000 }; 1001} 1002function offset(_ref2) { 1003 var state = _ref2.state, options = _ref2.options, name = _ref2.name; 1004 var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset; 1005 var data = placements.reduce(function(acc, placement) { 1006 acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2); 1007 return acc; 1008 }, {}); 1009 var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y; 1010 if (state.modifiersData.popperOffsets != null) { 1011 state.modifiersData.popperOffsets.x += x; 1012 state.modifiersData.popperOffsets.y += y; 1013 } 1014 state.modifiersData[name] = data; 1015} 1016const offset$1 = { 1017 name: "offset", 1018 enabled: true, 1019 phase: "main", 1020 requires: ["popperOffsets"], 1021 fn: offset 1022}; 1023function popperOffsets(_ref) { 1024 var state = _ref.state, name = _ref.name; 1025 state.modifiersData[name] = computeOffsets({ 1026 reference: state.rects.reference, 1027 element: state.rects.popper, 1028 strategy: "absolute", 1029 placement: state.placement 1030 }); 1031} 1032const popperOffsets$1 = { 1033 name: "popperOffsets", 1034 enabled: true, 1035 phase: "read", 1036 fn: popperOffsets, 1037 data: {} 1038}; 1039function getAltAxis(axis) { 1040 return axis === "x" ? "y" : "x"; 1041} 1042function preventOverflow(_ref) { 1043 var state = _ref.state, options = _ref.options, name = _ref.name; 1044 var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; 1045 var overflow = detectOverflow(state, { 1046 boundary, 1047 rootBoundary, 1048 padding, 1049 altBoundary 1050 }); 1051 var basePlacement = getBasePlacement(state.placement); 1052 var variation = getVariation(state.placement); 1053 var isBasePlacement = !variation; 1054 var mainAxis = getMainAxisFromPlacement(basePlacement); 1055 var altAxis = getAltAxis(mainAxis); 1056 var popperOffsets2 = state.modifiersData.popperOffsets; 1057 var referenceRect = state.rects.reference; 1058 var popperRect = state.rects.popper; 1059 var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, { 1060 placement: state.placement 1061 })) : tetherOffset; 1062 var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? { 1063 mainAxis: tetherOffsetValue, 1064 altAxis: tetherOffsetValue 1065 } : Object.assign({ 1066 mainAxis: 0, 1067 altAxis: 0 1068 }, tetherOffsetValue); 1069 var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; 1070 var data = { 1071 x: 0, 1072 y: 0 1073 }; 1074 if (!popperOffsets2) { 1075 return; 1076 } 1077 if (checkMainAxis) { 1078 var _offsetModifierState$; 1079 var mainSide = mainAxis === "y" ? top : left; 1080 var altSide = mainAxis === "y" ? bottom : right; 1081 var len = mainAxis === "y" ? "height" : "width"; 1082 var offset2 = popperOffsets2[mainAxis]; 1083 var min$1 = offset2 + overflow[mainSide]; 1084 var max$1 = offset2 - overflow[altSide]; 1085 var additive = tether ? -popperRect[len] / 2 : 0; 1086 var minLen = variation === start ? referenceRect[len] : popperRect[len]; 1087 var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; 1088 var arrowElement = state.elements.arrow; 1089 var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { 1090 width: 0, 1091 height: 0 1092 }; 1093 var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject(); 1094 var arrowPaddingMin = arrowPaddingObject[mainSide]; 1095 var arrowPaddingMax = arrowPaddingObject[altSide]; 1096 var arrowLen = within(0, referenceRect[len], arrowRect[len]); 1097 var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; 1098 var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; 1099 var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); 1100 var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; 1101 var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; 1102 var tetherMin = offset2 + minOffset - offsetModifierValue - clientOffset; 1103 var tetherMax = offset2 + maxOffset - offsetModifierValue; 1104 var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset2, tether ? max(max$1, tetherMax) : max$1); 1105 popperOffsets2[mainAxis] = preventedOffset; 1106 data[mainAxis] = preventedOffset - offset2; 1107 } 1108 if (checkAltAxis) { 1109 var _offsetModifierState$2; 1110 var _mainSide = mainAxis === "x" ? top : left; 1111 var _altSide = mainAxis === "x" ? bottom : right; 1112 var _offset = popperOffsets2[altAxis]; 1113 var _len = altAxis === "y" ? "height" : "width"; 1114 var _min = _offset + overflow[_mainSide]; 1115 var _max = _offset - overflow[_altSide]; 1116 var isOriginSide = [top, left].indexOf(basePlacement) !== -1; 1117 var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; 1118 var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; 1119 var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; 1120 var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); 1121 popperOffsets2[altAxis] = _preventedOffset; 1122 data[altAxis] = _preventedOffset - _offset; 1123 } 1124 state.modifiersData[name] = data; 1125} 1126const preventOverflow$1 = { 1127 name: "preventOverflow", 1128 enabled: true, 1129 phase: "main", 1130 fn: preventOverflow, 1131 requiresIfExists: ["offset"] 1132}; 1133function getHTMLElementScroll(element
vendor: 1,890 bytes, lines 1133-1191
1133) { 1134 return { 1135 scrollLeft: element.scrollLeft, 1136 scrollTop: element.scrollTop 1137 }; 1138} 1139function getNodeScroll(node) { 1140 if (node === getWindow(node) || !isHTMLElement(node)) { 1141 return getWindowScroll(node); 1142 } else { 1143 return getHTMLElementScroll(node); 1144 } 1145} 1146function isElementScaled(element) { 1147 var rect = element.getBoundingClientRect(); 1148 var scaleX = round(rect.width) / element.offsetWidth || 1; 1149 var scaleY = round(rect.height) / element.offsetHeight || 1; 1150 return scaleX !== 1 || scaleY !== 1; 1151} 1152function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { 1153 if (isFixed === void 0) { 1154 isFixed = false; 1155 } 1156 var isOffsetParentAnElement = isHTMLElement(offsetParent); 1157 var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); 1158 var documentElement = getDocumentElement(offsetParent); 1159 var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed); 1160 var scroll = { 1161 scrollLeft: 0, 1162 scrollTop: 0 1163 }; 1164 var offsets = { 1165 x: 0, 1166 y: 0 1167 }; 1168 if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { 1169 if (getNodeName(offsetParent) !== "body" || // https://github.com/popperjs/popper-core/issues/1078 1170 isScrollParent(documentElement)) { 1171 scroll = getNodeScroll(offsetParent); 1172 } 1173 if (isHTMLElement(offsetParent)) { 1174 offsets = getBoundingClientRect(offsetParent, true); 1175 offsets.x += offsetParent.clientLeft; 1176 offsets.y += offsetParent.clientTop; 1177 } else if (documentElement) { 1178 offsets.x = getWindowScrollBarX(documentElement); 1179 } 1180 } 1181 return { 1182 x: rect.left + scroll.scrollLeft - offsets.x, 1183 y: rect.top + scroll.scrollTop - offsets.y, 1184 width: rect.width, 1185 height: rect.height 1186 }; 1187} 1188function order(modifiers) { 1189 var map = /* @__PURE__ */ new Map(); 1190 var visited = /* @__PURE__ */ new Set(); 1191 var result = [];
vendor: 4,094 bytes, lines 1192-1307
1192 modifiers.forEach(function(modifier) { 1193 map.set(modifier.name, modifier); 1194 }); 1195 function sort(modifier) { 1196 visited.add(modifier.name); 1197 var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); 1198 requires.forEach(function(dep) { 1199 if (!visited.has(dep)) { 1200 var depModifier = map.get(dep); 1201 if (depModifier) { 1202 sort(depModifier); 1203 } 1204 } 1205 }); 1206 result.push(modifier); 1207 } 1208 modifiers.forEach(function(modifier) { 1209 if (!visited.has(modifier.name)) { 1210 sort(modifier); 1211 } 1212 }); 1213 return result; 1214} 1215function orderModifiers(modifiers) { 1216 var orderedModifiers = order(modifiers); 1217 return modifierPhases.reduce(function(acc, phase) { 1218 return acc.concat(orderedModifiers.filter(function(modifier) { 1219 return modifier.phase === phase; 1220 })); 1221 }, []); 1222} 1223function debounce(fn2) { 1224 var pending; 1225 return function() { 1226 if (!pending) { 1227 pending = new Promise(function(resolve) { 1228 Promise.resolve().then(function() { 1229 pending = void 0; 1230 resolve(fn2()); 1231 }); 1232 }); 1233 } 1234 return pending; 1235 }; 1236} 1237function mergeByName(modifiers) { 1238 var merged = modifiers.reduce(function(merged2, current) { 1239 var existing = merged2[current.name]; 1240 merged2[current.name] = existing ? Object.assign({}, existing, current, { 1241 options: Object.assign({}, existing.options, current.options), 1242 data: Object.assign({}, existing.data, current.data) 1243 }) : current; 1244 return merged2; 1245 }, {}); 1246 return Object.keys(merged).map(function(key) { 1247 return merged[key]; 1248 }); 1249} 1250var DEFAULT_OPTIONS = { 1251 placement: "bottom", 1252 modifiers: [], 1253 strategy: "absolute" 1254}; 1255function areValidElements() { 1256 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 1257 args[_key] = arguments[_key]; 1258 } 1259 return !args.some(function(element) { 1260 return !(element && typeof element.getBoundingClientRect === "function"); 1261 }); 1262} 1263function popperGenerator(generatorOptions) { 1264 if (generatorOptions === void 0) { 1265 generatorOptions = {}; 1266 } 1267 var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; 1268 return function createPopper2(reference2, popper2, options) { 1269 if (options === void 0) { 1270 options = defaultOptions; 1271 } 1272 var state = { 1273 placement: "bottom", 1274 orderedModifiers: [], 1275 options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), 1276 modifiersData: {}, 1277 elements: { 1278 reference: reference2, 1279 popper: popper2 1280 }, 1281 attributes: {}, 1282 styles: {} 1283 }; 1284 var effectCleanupFns = []; 1285 var isDestroyed = false; 1286 var instance = { 1287 state, 1288 setOptions: function setOptions(setOptionsAction) { 1289 var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction; 1290 cleanupModifierEffects(); 1291 state.options = Object.assign({}, defaultOptions, state.options, options2); 1292 state.scrollParents = { 1293 reference: isElement$1(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [], 1294 popper: listScrollParents(popper2) 1295 }; 1296 var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers))); 1297 state.orderedModifiers = orderedModifiers.filter(function(m) { 1298 return m.enabled; 1299 }); 1300 runModifierEffects(); 1301 return instance.update(); 1302 }, 1303 // Sync update – it will always be executed, even if not necessary. This 1304 // is useful for low frequency updates where sync behavior simplifies the 1305 // logic. 1306 // For high frequency updates (e.g. `resize` and `scroll` events), always 1307 // prefer the async Popper#update method
vendor: 26,781 bytes, lines 1308-2121
1308 forceUpdate: function forceUpdate() { 1309 if (isDestroyed) { 1310 return; 1311 } 1312 var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper; 1313 if (!areValidElements(reference3, popper3)) { 1314 return; 1315 } 1316 state.rects = { 1317 reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"), 1318 popper: getLayoutRect(popper3) 1319 }; 1320 state.reset = false; 1321 state.placement = state.options.placement; 1322 state.orderedModifiers.forEach(function(modifier) { 1323 return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); 1324 }); 1325 for (var index = 0; index < state.orderedModifiers.length; index++) { 1326 if (state.reset === true) { 1327 state.reset = false; 1328 index = -1; 1329 continue; 1330 } 1331 var _state$orderedModifie = state.orderedModifiers[index], fn2 = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name; 1332 if (typeof fn2 === "function") { 1333 state = fn2({ 1334 state, 1335 options: _options, 1336 name, 1337 instance 1338 }) || state; 1339 } 1340 } 1341 }, 1342 // Async and optimistically optimized update – it will not be executed if 1343 // not necessary (debounced to run at most once-per-tick) 1344 update: debounce(function() { 1345 return new Promise(function(resolve) { 1346 instance.forceUpdate(); 1347 resolve(state); 1348 }); 1349 }), 1350 destroy: function destroy() { 1351 cleanupModifierEffects(); 1352 isDestroyed = true; 1353 } 1354 }; 1355 if (!areValidElements(reference2, popper2)) { 1356 return instance; 1357 } 1358 instance.setOptions(options).then(function(state2) { 1359 if (!isDestroyed && options.onFirstUpdate) { 1360 options.onFirstUpdate(state2); 1361 } 1362 }); 1363 function runModifierEffects() { 1364 state.orderedModifiers.forEach(function(_ref) { 1365 var name = _ref.name, _ref$options = _ref.options, options2 = _ref$options === void 0 ? {} : _ref$options, effect2 = _ref.effect; 1366 if (typeof effect2 === "function") { 1367 var cleanupFn = effect2({ 1368 state, 1369 name, 1370 instance, 1371 options: options2 1372 }); 1373 var noopFn = function noopFn2() { 1374 }; 1375 effectCleanupFns.push(cleanupFn || noopFn); 1376 } 1377 }); 1378 } 1379 function cleanupModifierEffects() { 1380 effectCleanupFns.forEach(function(fn2) { 1381 return fn2(); 1382 }); 1383 effectCleanupFns = []; 1384 } 1385 return instance; 1386 }; 1387} 1388var createPopper$2 = /* @__PURE__ */ popperGenerator(); 1389var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; 1390var createPopper$1 = /* @__PURE__ */ popperGenerator({ 1391 defaultModifiers: defaultModifiers$1 1392}); 1393var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; 1394var createPopper = /* @__PURE__ */ popperGenerator({ 1395 defaultModifiers 1396}); 1397const Popper = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ 1398 __proto__: null, 1399 afterMain, 1400 afterRead, 1401 afterWrite, 1402 applyStyles: applyStyles$1, 1403 arrow: arrow$1, 1404 auto, 1405 basePlacements, 1406 beforeMain, 1407 beforeRead, 1408 beforeWrite, 1409 bottom, 1410 clippingParents, 1411 computeStyles: computeStyles$1, 1412 createPopper, 1413 createPopperBase: createPopper$2, 1414 createPopperLite: createPopper$1, 1415 detectOverflow, 1416 end, 1417 eventListeners, 1418 flip: flip$1, 1419 hide: hide$1, 1420 left, 1421 main, 1422 modifierPhases, 1423 offset: offset$1, 1424 placements, 1425 popper, 1426 popperGenerator, 1427 popperOffsets: popperOffsets$1, 1428 preventOverflow: preventOverflow$1, 1429 read, 1430 reference, 1431 right, 1432 start, 1433 top, 1434 variationPlacements, 1435 viewport, 1436 write 1437}, Symbol.toStringTag, { value: "Module" })); 1438/*! 1439 * Bootstrap v5.3.1 (https://getbootstrap.com/) 1440 * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 1441 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 1442 */ 1443const elementMap = /* @__PURE__ */ new Map(); 1444const Data = { 1445 set(element, key, instance) { 1446 if (!elementMap.has(element)) { 1447 elementMap.set(element, /* @__PURE__ */ new Map()); 1448 } 1449 const instanceMap = elementMap.get(element); 1450 if (!instanceMap.has(key) && instanceMap.size !== 0) { 1451 console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); 1452 return; 1453 } 1454 instanceMap.set(key, instance); 1455 }, 1456 get(element, key) { 1457 if (elementMap.has(element)) { 1458 return elementMap.get(element).get(key) || null; 1459 } 1460 return null; 1461 }, 1462 remove(element, key) { 1463 if (!elementMap.has(element)) { 1464 return; 1465 } 1466 const instanceMap = elementMap.get(element); 1467 instanceMap.delete(key); 1468 if (instanceMap.size === 0) { 1469 elementMap.delete(element); 1470 } 1471 } 1472}; 1473const MAX_UID = 1e6; 1474const MILLISECONDS_MULTIPLIER = 1e3; 1475const TRANSITION_END = "transitionend"; 1476const parseSelector = (selector) => { 1477 if (selector && window.CSS && window.CSS.escape) { 1478 selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`); 1479 } 1480 return selector; 1481}; 1482const toType = (object) => { 1483 if (object === null || object === void 0) { 1484 return `${object}`; 1485 } 1486 return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase(); 1487}; 1488const getUID = (prefix) => { 1489 do { 1490 prefix += Math.floor(Math.random() * MAX_UID); 1491 } while (document.getElementById(prefix)); 1492 return prefix; 1493}; 1494const getTransitionDurationFromElement = (element) => { 1495 if (!element) { 1496 return 0; 1497 } 1498 let { 1499 transitionDuration, 1500 transitionDelay 1501 } = window.getComputedStyle(element); 1502 const floatTransitionDuration = Number.parseFloat(transitionDuration); 1503 const floatTransitionDelay = Number.parseFloat(transitionDelay); 1504 if (!floatTransitionDuration && !floatTransitionDelay) { 1505 return 0; 1506 } 1507 transitionDuration = transitionDuration.split(",")[0]; 1508 transitionDelay = transitionDelay.split(",")[0]; 1509 return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; 1510}; 1511const triggerTransitionEnd = (element) => { 1512 element.dispatchEvent(new Event(TRANSITION_END)); 1513}; 1514const isElement = (object) => { 1515 if (!object || typeof object !== "object") { 1516 return false; 1517 } 1518 if (typeof object.jquery !== "undefined") { 1519 object = object[0]; 1520 } 1521 return typeof object.nodeType !== "undefined"; 1522}; 1523const getElement = (object) => { 1524 if (isElement(object)) { 1525 return object.jquery ? object[0] : object; 1526 } 1527 if (typeof object === "string" && object.length > 0) { 1528 return document.querySelector(parseSelector(object)); 1529 } 1530 return null; 1531}; 1532const isVisible = (element) => { 1533 if (!isElement(element) || element.getClientRects().length === 0) { 1534 return false; 1535 } 1536 const elementIsVisible = getComputedStyle(element).getPropertyValue("visibility") === "visible"; 1537 const closedDetails = element.closest("details:not([open])"); 1538 if (!closedDetails) { 1539 return elementIsVisible; 1540 } 1541 if (closedDetails !== element) { 1542 const summary = element.closest("summary"); 1543 if (summary && summary.parentNode !== closedDetails) { 1544 return false; 1545 } 1546 if (summary === null) { 1547 return false; 1548 } 1549 } 1550 return elementIsVisible; 1551}; 1552const isDisabled = (element) => { 1553 if (!element || element.nodeType !== Node.ELEMENT_NODE) { 1554 return true; 1555 } 1556 if (element.classList.contains("disabled")) { 1557 return true; 1558 } 1559 if (typeof element.disabled !== "undefined") { 1560 return element.disabled; 1561 } 1562 return element.hasAttribute("disabled") && element.getAttribute("disabled") !== "false"; 1563}; 1564const findShadowRoot = (element) => { 1565 if (!document.documentElement.attachShadow) { 1566 return null; 1567 } 1568 if (typeof element.getRootNode === "function") { 1569 const root = element.getRootNode(); 1570 return root instanceof ShadowRoot ? root : null; 1571 } 1572 if (element instanceof ShadowRoot) { 1573 return element; 1574 } 1575 if (!element.parentNode) { 1576 return null; 1577 } 1578 return findShadowRoot(element.parentNode); 1579}; 1580const noop = () => { 1581}; 1582const reflow = (element) => { 1583 element.offsetHeight; 1584}; 1585const getjQuery = () => { 1586 if (window.jQuery && !document.body.hasAttribute("data-bs-no-jquery")) { 1587 return window.jQuery; 1588 } 1589 return null; 1590}; 1591const DOMContentLoadedCallbacks = []; 1592const onDOMContentLoaded = (callback) => { 1593 if (document.readyState === "loading") { 1594 if (!DOMContentLoadedCallbacks.length) { 1595 document.addEventListener("DOMContentLoaded", () => { 1596 for (const callback2 of DOMContentLoadedCallbacks) { 1597 callback2(); 1598 } 1599 }); 1600 } 1601 DOMContentLoadedCallbacks.push(callback); 1602 } else { 1603 callback(); 1604 } 1605}; 1606const isRTL = () => document.documentElement.dir === "rtl"; 1607const defineJQueryPlugin = (plugin) => { 1608 onDOMContentLoaded(() => { 1609 const $ = getjQuery(); 1610 if ($) { 1611 const name = plugin.NAME; 1612 const JQUERY_NO_CONFLICT = $.fn[name]; 1613 $.fn[name] = plugin.jQueryInterface; 1614 $.fn[name].Constructor = plugin; 1615 $.fn[name].noConflict = () => { 1616 $.fn[name] = JQUERY_NO_CONFLICT; 1617 return plugin.jQueryInterface; 1618 }; 1619 } 1620 }); 1621}; 1622const execute = (possibleCallback, args = [], defaultValue = possibleCallback) => { 1623 return typeof possibleCallback === "function" ? possibleCallback(...args) : defaultValue; 1624}; 1625const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { 1626 if (!waitForTransition) { 1627 execute(callback); 1628 return; 1629 } 1630 const durationPadding = 5; 1631 const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; 1632 let called = false; 1633 const handler = ({ 1634 target 1635 }) => { 1636 if (target !== transitionElement) { 1637 return; 1638 } 1639 called = true; 1640 transitionElement.removeEventListener(TRANSITION_END, handler); 1641 execute(callback); 1642 }; 1643 transitionElement.addEventListener(TRANSITION_END, handler); 1644 setTimeout(() => { 1645 if (!called) { 1646 triggerTransitionEnd(transitionElement); 1647 } 1648 }, emulatedDuration); 1649}; 1650const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => { 1651 const listLength = list.length; 1652 let index = list.indexOf(activeElement); 1653 if (index === -1) { 1654 return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]; 1655 } 1656 index += shouldGetNext ? 1 : -1; 1657 if (isCycleAllowed) { 1658 index = (index + listLength) % listLength; 1659 } 1660 return list[Math.max(0, Math.min(index, listLength - 1))]; 1661}; 1662const namespaceRegex = /[^.]*(?=\..*)\.|.*/; 1663const stripNameRegex = /\..*/; 1664const stripUidRegex = /::\d+$/; 1665const eventRegistry = {}; 1666let uidEvent = 1; 1667const customEvents = { 1668 mouseenter: "mouseover", 1669 mouseleave: "mouseout" 1670}; 1671const nativeEvents = /* @__PURE__ */ new Set(["click", "dblclick", "mouseup", "mousedown", "contextmenu", "mousewheel", "DOMMouseScroll", "mouseover", "mouseout", "mousemove", "selectstart", "selectend", "keydown", "keypress", "keyup", "orientationchange", "touchstart", "touchmove", "touchend", "touchcancel", "pointerdown", "pointermove", "pointerup", "pointerleave", "pointercancel", "gesturestart", "gesturechange", "gestureend", "focus", "blur", "change", "reset", "select", "submit", "focusin", "focusout", "load", "unload", "beforeunload", "resize", "move", "DOMContentLoaded", "readystatechange", "error", "abort", "scroll"]); 1672function makeEventUid(element, uid) { 1673 return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; 1674} 1675function getElementEvents(element) { 1676 const uid = makeEventUid(element); 1677 element.uidEvent = uid; 1678 eventRegistry[uid] = eventRegistry[uid] || {}; 1679 return eventRegistry[uid]; 1680} 1681function bootstrapHandler(element, fn2) { 1682 return function handler(event) { 1683 hydrateObj(event, { 1684 delegateTarget: element 1685 }); 1686 if (handler.oneOff) { 1687 EventHandler.off(element, event.type, fn2); 1688 } 1689 return fn2.apply(element, [event]); 1690 }; 1691} 1692function bootstrapDelegationHandler(element, selector, fn2) { 1693 return function handler(event) { 1694 const domElements = element.querySelectorAll(selector); 1695 for (let { 1696 target 1697 } = event; target && target !== this; target = target.parentNode) { 1698 for (const domElement of domElements) { 1699 if (domElement !== target) { 1700 continue; 1701 } 1702 hydrateObj(event, { 1703 delegateTarget: target 1704 }); 1705 if (handler.oneOff) { 1706 EventHandler.off(element, event.type, selector, fn2); 1707 } 1708 return fn2.apply(target, [event]); 1709 } 1710 } 1711 }; 1712} 1713function findHandler(events, callable, delegationSelector = null) { 1714 return Object.values(events).find((event) => event.callable === callable && event.delegationSelector === delegationSelector); 1715} 1716function normalizeParameters(originalTypeEvent, handler, delegationFunction) { 1717 const isDelegated = typeof handler === "string"; 1718 const callable = isDelegated ? delegationFunction : handler || delegationFunction; 1719 let typeEvent = getTypeEvent(originalTypeEvent); 1720 if (!nativeEvents.has(typeEvent)) { 1721 typeEvent = originalTypeEvent; 1722 } 1723 return [isDelegated, callable, typeEvent]; 1724} 1725function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { 1726 if (typeof originalTypeEvent !== "string" || !element) { 1727 return; 1728 } 1729 let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); 1730 if (originalTypeEvent in customEvents) { 1731 const wrapFunction = (fn3) => { 1732 return function(event) { 1733 if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { 1734 return fn3.call(this, event); 1735 } 1736 }; 1737 }; 1738 callable = wrapFunction(callable); 1739 } 1740 const events = getElementEvents(element); 1741 const handlers = events[typeEvent] || (events[typeEvent] = {}); 1742 const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null); 1743 if (previousFunction) { 1744 previousFunction.oneOff = previousFunction.oneOff && oneOff; 1745 return; 1746 } 1747 const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, "")); 1748 const fn2 = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable); 1749 fn2.delegationSelector = isDelegated ? handler : null; 1750 fn2.callable = callable; 1751 fn2.oneOff = oneOff; 1752 fn2.uidEvent = uid; 1753 handlers[uid] = fn2; 1754 element.addEventListener(typeEvent, fn2, isDelegated); 1755} 1756function removeHandler(element, events, typeEvent, handler, delegationSelector) { 1757 const fn2 = findHandler(events[typeEvent], handler, delegationSelector); 1758 if (!fn2) { 1759 return; 1760 } 1761 element.removeEventListener(typeEvent, fn2, Boolean(delegationSelector)); 1762 delete events[typeEvent][fn2.uidEvent]; 1763} 1764function removeNamespacedHandlers(element, events, typeEvent, namespace) { 1765 const storeElementEvent = events[typeEvent] || {}; 1766 for (const [handlerKey, event] of Object.entries(storeElementEvent)) { 1767 if (handlerKey.includes(namespace)) { 1768 removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); 1769 } 1770 } 1771} 1772function getTypeEvent(event) { 1773 event = event.replace(stripNameRegex, ""); 1774 return customEvents[event] || event; 1775} 1776const EventHandler = { 1777 on(element, event, handler, delegationFunction) { 1778 addHandler(element, event, handler, delegationFunction, false); 1779 }, 1780 one(element, event, handler, delegationFunction) { 1781 addHandler(element, event, handler, delegationFunction, true); 1782 }, 1783 off(element, originalTypeEvent, handler, delegationFunction) { 1784 if (typeof originalTypeEvent !== "string" || !element) { 1785 return; 1786 } 1787 const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); 1788 const inNamespace = typeEvent !== originalTypeEvent; 1789 const events = getElementEvents(element); 1790 const storeElementEvent = events[typeEvent] || {}; 1791 const isNamespace = originalTypeEvent.startsWith("."); 1792 if (typeof callable !== "undefined") { 1793 if (!Object.keys(storeElementEvent).length) { 1794 return; 1795 } 1796 removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null); 1797 return; 1798 } 1799 if (isNamespace) { 1800 for (const elementEvent of Object.keys(events)) { 1801 removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); 1802 } 1803 } 1804 for (const [keyHandlers, event] of Object.entries(storeElementEvent)) { 1805 const handlerKey = keyHandlers.replace(stripUidRegex, ""); 1806 if (!inNamespace || originalTypeEvent.includes(handlerKey)) { 1807 removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); 1808 } 1809 } 1810 }, 1811 trigger(element, event, args) { 1812 if (typeof event !== "string" || !element) { 1813 return null; 1814 } 1815 const $ = getjQuery(); 1816 const typeEvent = getTypeEvent(event); 1817 const inNamespace = event !== typeEvent; 1818 let jQueryEvent = null; 1819 let bubbles = true; 1820 let nativeDispatch = true; 1821 let defaultPrevented = false; 1822 if (inNamespace && $) { 1823 jQueryEvent = $.Event(event, args); 1824 $(element).trigger(jQueryEvent); 1825 bubbles = !jQueryEvent.isPropagationStopped(); 1826 nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); 1827 defaultPrevented = jQueryEvent.isDefaultPrevented(); 1828 } 1829 const evt = hydrateObj(new Event(event, { 1830 bubbles, 1831 cancelable: true 1832 }), args); 1833 if (defaultPrevented) { 1834 evt.preventDefault(); 1835 } 1836 if (nativeDispatch) { 1837 element.dispatchEvent(evt); 1838 } 1839 if (evt.defaultPrevented && jQueryEvent) { 1840 jQueryEvent.preventDefault(); 1841 } 1842 return evt; 1843 } 1844}; 1845function hydrateObj(obj, meta = {}) { 1846 for (const [key, value] of Object.entries(meta)) { 1847 try { 1848 obj[key] = value; 1849 } catch (_unused) { 1850 Object.defineProperty(obj, key, { 1851 configurable: true, 1852 get() { 1853 return value; 1854 } 1855 }); 1856 } 1857 } 1858 return obj; 1859} 1860function normalizeData(value) { 1861 if (value === "true") { 1862 return true; 1863 } 1864 if (value === "false") { 1865 return false; 1866 } 1867 if (value === Number(value).toString()) { 1868 return Number(value); 1869 } 1870 if (value === "" || value === "null") { 1871 return null; 1872 } 1873 if (typeof value !== "string") { 1874 return value; 1875 } 1876 try { 1877 return JSON.parse(decodeURIComponent(value)); 1878 } catch (_unused) { 1879 return value; 1880 } 1881} 1882function normalizeDataKey(key) { 1883 return key.replace(/[A-Z]/g, (chr) => `-${chr.toLowerCase()}`); 1884} 1885const Manipulator = { 1886 setDataAttribute(element, key, value) { 1887 element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); 1888 }, 1889 removeDataAttribute(element, key) { 1890 element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); 1891 }, 1892 getDataAttributes(element) { 1893 if (!element) { 1894 return {}; 1895 } 1896 const attributes = {}; 1897 const bsKeys = Object.keys(element.dataset).filter((key) => key.startsWith("bs") && !key.startsWith("bsConfig")); 1898 for (const key of bsKeys) { 1899 let pureKey = key.replace(/^bs/, ""); 1900 pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); 1901 attributes[pureKey] = normalizeData(element.dataset[key]); 1902 } 1903 return attributes; 1904 }, 1905 getDataAttribute(element, key) { 1906 return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); 1907 } 1908}; 1909class Config { 1910 // Getters 1911 static get Default() { 1912 return {}; 1913 } 1914 static get DefaultType() { 1915 return {}; 1916 } 1917 static get NAME() { 1918 throw new Error('You have to implement the static method "NAME", for each component!'); 1919 } 1920 _getConfig(config) { 1921 config = this._mergeConfigObj(config); 1922 config = this._configAfterMerge(config); 1923 this._typeCheckConfig(config); 1924 return config; 1925 } 1926 _configAfterMerge(config) { 1927 return config; 1928 } 1929 _mergeConfigObj(config, element) { 1930 const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, "config") : {}; 1931 return { 1932 ...this.constructor.Default, 1933 ...typeof jsonConfig === "object" ? jsonConfig : {}, 1934 ...isElement(element) ? Manipulator.getDataAttributes(element) : {}, 1935 ...typeof config === "object" ? config : {} 1936 }; 1937 } 1938 _typeCheckConfig(config, configTypes = this.constructor.DefaultType) { 1939 for (const [property, expectedTypes] of Object.entries(configTypes)) { 1940 const value = config[property]; 1941 const valueType = isElement(value) ? "element" : toType(value); 1942 if (!new RegExp(expectedTypes).test(valueType)) { 1943 throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`); 1944 } 1945 } 1946 } 1947} 1948const VERSION = "5.3.1"; 1949class BaseComponent extends Config { 1950 constructor(element, config) { 1951 super(); 1952 element = getElement(element); 1953 if (!element) { 1954 return; 1955 } 1956 this._element = element; 1957 this._config = this._getConfig(config); 1958 Data.set(this._element, this.constructor.DATA_KEY, this); 1959 } 1960 // Public 1961 dispose() { 1962 Data.remove(this._element, this.constructor.DATA_KEY); 1963 EventHandler.off(this._element, this.constructor.EVENT_KEY); 1964 for (const propertyName of Object.getOwnPropertyNames(this)) { 1965 this[propertyName] = null; 1966 } 1967 } 1968 _queueCallback(callback, element, isAnimated = true) { 1969 executeAfterTransition(callback, element, isAnimated); 1970 } 1971 _getConfig(config) { 1972 config = this._mergeConfigObj(config, this._element); 1973 config = this._configAfterMerge(config); 1974 this._typeCheckConfig(config); 1975 return config; 1976 } 1977 // Static 1978 static getInstance(element) { 1979 return Data.get(getElement(element), this.DATA_KEY); 1980 } 1981 static getOrCreateInstance(element, config = {}) { 1982 return this.getInstance(element) || new this(element, typeof config === "object" ? config : null); 1983 } 1984 static get VERSION() { 1985 return VERSION; 1986 } 1987 static get DATA_KEY() { 1988 return `bs.${this.NAME}`; 1989 } 1990 static get EVENT_KEY() { 1991 return `.${this.DATA_KEY}`; 1992 } 1993 static eventName(name) { 1994 return `${name}${this.EVENT_KEY}`; 1995 } 1996} 1997const getSelector = (element) => { 1998 let selector = element.getAttribute("data-bs-target"); 1999 if (!selector || selector === "#") { 2000 let hrefAttribute = element.getAttribute("href"); 2001 if (!hrefAttribute || !hrefAttribute.includes("#") && !hrefAttribute.startsWith(".")) { 2002 return null; 2003 } 2004 if (hrefAttribute.includes("#") && !hrefAttribute.startsWith("#")) { 2005 hrefAttribute = `#${hrefAttribute.split("#")[1]}`; 2006 } 2007 selector = hrefAttribute && hrefAttribute !== "#" ? hrefAttribute.trim() : null; 2008 } 2009 return parseSelector(selector); 2010}; 2011const SelectorEngine = { 2012 find(selector, element = document.documentElement) { 2013 return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); 2014 }, 2015 findOne(selector, element = document.documentElement) { 2016 return Element.prototype.querySelector.call(element, selector); 2017 }, 2018 children(element, selector) { 2019 return [].concat(...element.children).filter((child) => child.matches(selector)); 2020 }, 2021 parents(element, selector) { 2022 const parents = []; 2023 let ancestor = element.parentNode.closest(selector); 2024 while (ancestor) { 2025 parents.push(ancestor); 2026 ancestor = ancestor.parentNode.closest(selector); 2027 } 2028 return parents; 2029 }, 2030 prev(element, selector) { 2031 let previous = element.previousElementSibling; 2032 while (previous) { 2033 if (previous.matches(selector)) { 2034 return [previous]; 2035 } 2036 previous = previous.previousElementSibling; 2037 } 2038 return []; 2039 }, 2040 // TODO: this is now unused; remove later along with prev() 2041 next(element, selector) { 2042 let next = element.nextElementSibling; 2043 while (next) { 2044 if (next.matches(selector)) { 2045 return [next]; 2046 } 2047 next = next.nextElementSibling; 2048 } 2049 return []; 2050 }, 2051 focusableChildren(element) { 2052 const focusables = ["a", "button", "input", "textarea", "select", "details", "[tabindex]", '[contenteditable="true"]'].map((selector) => `${selector}:not([tabindex^="-"])`).join(","); 2053 return this.find(focusables, element).filter((el) => !isDisabled(el) && isVisible(el)); 2054 }, 2055 getSelectorFromElement(element) { 2056 const selector = getSelector(element); 2057 if (selector) { 2058 return SelectorEngine.findOne(selector) ? selector : null; 2059 } 2060 return null; 2061 }, 2062 getElementFromSelector(element) { 2063 const selector = getSelector(element); 2064 return selector ? SelectorEngine.findOne(selector) : null; 2065 }, 2066 getMultipleElementsFromSelector(element) { 2067 const selector = getSelector(element); 2068 return selector ? SelectorEngine.find(selector) : []; 2069 } 2070}; 2071const enableDismissTrigger = (component, method = "hide") => { 2072 const clickEvent = `click.dismiss${component.EVENT_KEY}`; 2073 const name = component.NAME; 2074 EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function(event) { 2075 if (["A", "AREA"].includes(this.tagName)) { 2076 event.preventDefault(); 2077 } 2078 if (isDisabled(this)) { 2079 return; 2080 } 2081 const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`); 2082 const instance = component.getOrCreateInstance(target); 2083 instance[method](); 2084 }); 2085}; 2086const NAME$f = "alert"; 2087const DATA_KEY$a = "bs.alert"; 2088const EVENT_KEY$b = `.${DATA_KEY$a}`; 2089const EVENT_CLOSE = `close${EVENT_KEY$b}`; 2090const EVENT_CLOSED = `closed${EVENT_KEY$b}`; 2091const CLASS_NAME_FADE$5 = "fade"; 2092const CLASS_NAME_SHOW$8 = "show"; 2093class Alert extends BaseComponent { 2094 // Getters 2095 static get NAME() { 2096 return NAME$f; 2097 } 2098 // Public 2099 close() { 2100 const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE); 2101 if (closeEvent.defaultPrevented) { 2102 return; 2103 } 2104 this._element.classList.remove(CLASS_NAME_SHOW$8); 2105 const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5); 2106 this._queueCallback(() => this._destroyElement(), this._element, isAnimated); 2107 } 2108 // Private 2109 _destroyElement() { 2110 this._element.remove(); 2111 EventHandler.trigger(this._element, EVENT_CLOSED); 2112 this.dispose(); 2113 } 2114 // Static 2115 static jQueryInterface(config) { 2116 return this.each(function() { 2117 const data = Alert.getOrCreateInstance(this); 2118 if (typeof config !== "string") { 2119 return; 2120 } 2121 if (data[config] === void 0 || config.startsWith("_") || config === "constructor") {
vendor: 5,917 bytes, lines 2122-2307
2122 throw new TypeError(`No method named "${config}"`); 2123 } 2124 data[config](this); 2125 }); 2126 } 2127} 2128enableDismissTrigger(Alert, "close"); 2129defineJQueryPlugin(Alert); 2130const NAME$e = "button"; 2131const DATA_KEY$9 = "bs.button"; 2132const EVENT_KEY$a = `.${DATA_KEY$9}`; 2133const DATA_API_KEY$6 = ".data-api"; 2134const CLASS_NAME_ACTIVE$3 = "active"; 2135const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]'; 2136const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`; 2137class Button extends BaseComponent { 2138 // Getters 2139 static get NAME() { 2140 return NAME$e; 2141 } 2142 // Public 2143 toggle() { 2144 this._element.setAttribute("aria-pressed", this._element.classList.toggle(CLASS_NAME_ACTIVE$3)); 2145 } 2146 // Static 2147 static jQueryInterface(config) { 2148 return this.each(function() { 2149 const data = Button.getOrCreateInstance(this); 2150 if (config === "toggle") { 2151 data[config](); 2152 } 2153 }); 2154 } 2155} 2156EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, (event) => { 2157 event.preventDefault(); 2158 const button = event.target.closest(SELECTOR_DATA_TOGGLE$5); 2159 const data = Button.getOrCreateInstance(button); 2160 data.toggle(); 2161}); 2162defineJQueryPlugin(Button); 2163const NAME$d = "swipe"; 2164const EVENT_KEY$9 = ".bs.swipe"; 2165const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`; 2166const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`; 2167const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`; 2168const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`; 2169const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`; 2170const POINTER_TYPE_TOUCH = "touch"; 2171const POINTER_TYPE_PEN = "pen"; 2172const CLASS_NAME_POINTER_EVENT = "pointer-event"; 2173const SWIPE_THRESHOLD = 40; 2174const Default$c = { 2175 endCallback: null, 2176 leftCallback: null, 2177 rightCallback: null 2178}; 2179const DefaultType$c = { 2180 endCallback: "(function|null)", 2181 leftCallback: "(function|null)", 2182 rightCallback: "(function|null)" 2183}; 2184class Swipe extends Config { 2185 constructor(element, config) { 2186 super(); 2187 this._element = element; 2188 if (!element || !Swipe.isSupported()) { 2189 return; 2190 } 2191 this._config = this._getConfig(config); 2192 this._deltaX = 0; 2193 this._supportPointerEvents = Boolean(window.PointerEvent); 2194 this._initEvents(); 2195 } 2196 // Getters 2197 static get Default() { 2198 return Default$c; 2199 } 2200 static get DefaultType() { 2201 return DefaultType$c; 2202 } 2203 static get NAME() { 2204 return NAME$d; 2205 } 2206 // Public 2207 dispose() { 2208 EventHandler.off(this._element, EVENT_KEY$9); 2209 } 2210 // Private 2211 _start(event) { 2212 if (!this._supportPointerEvents) { 2213 this._deltaX = event.touches[0].clientX; 2214 return; 2215 } 2216 if (this._eventIsPointerPenTouch(event)) { 2217 this._deltaX = event.clientX; 2218 } 2219 } 2220 _end(event) { 2221 if (this._eventIsPointerPenTouch(event)) { 2222 this._deltaX = event.clientX - this._deltaX; 2223 } 2224 this._handleSwipe(); 2225 execute(this._config.endCallback); 2226 } 2227 _move(event) { 2228 this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX; 2229 } 2230 _handleSwipe() { 2231 const absDeltaX = Math.abs(this._deltaX); 2232 if (absDeltaX <= SWIPE_THRESHOLD) { 2233 return; 2234 } 2235 const direction = absDeltaX / this._deltaX; 2236 this._deltaX = 0; 2237 if (!direction) { 2238 return; 2239 } 2240 execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback); 2241 } 2242 _initEvents() { 2243 if (this._supportPointerEvents) { 2244 EventHandler.on(this._element, EVENT_POINTERDOWN, (event) => this._start(event)); 2245 EventHandler.on(this._element, EVENT_POINTERUP, (event) => this._end(event)); 2246 this._element.classList.add(CLASS_NAME_POINTER_EVENT); 2247 } else { 2248 EventHandler.on(this._element, EVENT_TOUCHSTART, (event) => this._start(event)); 2249 EventHandler.on(this._element, EVENT_TOUCHMOVE, (event) => this._move(event)); 2250 EventHandler.on(this._element, EVENT_TOUCHEND, (event) => this._end(event)); 2251 } 2252 } 2253 _eventIsPointerPenTouch(event) { 2254 return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH); 2255 } 2256 // Static 2257 static isSupported() { 2258 return "ontouchstart" in document.documentElement || navigator.maxTouchPoints > 0; 2259 } 2260} 2261const NAME$c = "carousel"; 2262const DATA_KEY$8 = "bs.carousel"; 2263const EVENT_KEY$8 = `.${DATA_KEY$8}`; 2264const DATA_API_KEY$5 = ".data-api"; 2265const ARROW_LEFT_KEY$1 = "ArrowLeft"; 2266const ARROW_RIGHT_KEY$1 = "ArrowRight"; 2267const TOUCHEVENT_COMPAT_WAIT = 500; 2268const ORDER_NEXT = "next"; 2269const ORDER_PREV = "prev"; 2270const DIRECTION_LEFT = "left"; 2271const DIRECTION_RIGHT = "right"; 2272const EVENT_SLIDE = `slide${EVENT_KEY$8}`; 2273const EVENT_SLID = `slid${EVENT_KEY$8}`; 2274const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`; 2275const EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`; 2276const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`; 2277const EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`; 2278const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`; 2279const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`; 2280const CLASS_NAME_CAROUSEL = "carousel"; 2281const CLASS_NAME_ACTIVE$2 = "active"; 2282const CLASS_NAME_SLIDE = "slide"; 2283const CLASS_NAME_END = "carousel-item-end"; 2284const CLASS_NAME_START = "carousel-item-start"; 2285const CLASS_NAME_NEXT = "carousel-item-next"; 2286const CLASS_NAME_PREV = "carousel-item-prev"; 2287const SELECTOR_ACTIVE = ".active"; 2288const SELECTOR_ITEM = ".carousel-item"; 2289const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM; 2290const SELECTOR_ITEM_IMG = ".carousel-item img"; 2291const SELECTOR_INDICATORS = ".carousel-indicators"; 2292const SELECTOR_DATA_SLIDE = "[data-bs-slide], [data-bs-slide-to]"; 2293const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]'; 2294const KEY_TO_DIRECTION = { 2295 [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT, 2296 [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT 2297}; 2298const Default$b = { 2299 interval: 5e3, 2300 keyboard: true, 2301 pause: "hover", 2302 ride: false, 2303 touch: true, 2304 wrap: true 2305}; 2306const DefaultType$b = { 2307 interval: "(number|boolean)",
vendor: 6,327 bytes, lines 2308-2507
2308 // TODO:v6 remove boolean support 2309 keyboard: "boolean", 2310 pause: "(string|boolean)", 2311 ride: "(boolean|string)", 2312 touch: "boolean", 2313 wrap: "boolean" 2314}; 2315class Carousel extends BaseComponent { 2316 constructor(element, config) { 2317 super(element, config); 2318 this._interval = null; 2319 this._activeElement = null; 2320 this._isSliding = false; 2321 this.touchTimeout = null; 2322 this._swipeHelper = null; 2323 this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element); 2324 this._addEventListeners(); 2325 if (this._config.ride === CLASS_NAME_CAROUSEL) { 2326 this.cycle(); 2327 } 2328 } 2329 // Getters 2330 static get Default() { 2331 return Default$b; 2332 } 2333 static get DefaultType() { 2334 return DefaultType$b; 2335 } 2336 static get NAME() { 2337 return NAME$c; 2338 } 2339 // Public 2340 next() { 2341 this._slide(ORDER_NEXT); 2342 } 2343 nextWhenVisible() { 2344 if (!document.hidden && isVisible(this._element)) { 2345 this.next(); 2346 } 2347 } 2348 prev() { 2349 this._slide(ORDER_PREV); 2350 } 2351 pause() { 2352 if (this._isSliding) { 2353 triggerTransitionEnd(this._element); 2354 } 2355 this._clearInterval(); 2356 } 2357 cycle() { 2358 this._clearInterval(); 2359 this._updateInterval(); 2360 this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval); 2361 } 2362 _maybeEnableCycle() { 2363 if (!this._config.ride) { 2364 return; 2365 } 2366 if (this._isSliding) { 2367 EventHandler.one(this._element, EVENT_SLID, () => this.cycle()); 2368 return; 2369 } 2370 this.cycle(); 2371 } 2372 to(index) { 2373 const items = this._getItems(); 2374 if (index > items.length - 1 || index < 0) { 2375 return; 2376 } 2377 if (this._isSliding) { 2378 EventHandler.one(this._element, EVENT_SLID, () => this.to(index)); 2379 return; 2380 } 2381 const activeIndex = this._getItemIndex(this._getActive()); 2382 if (activeIndex === index) { 2383 return; 2384 } 2385 const order2 = index > activeIndex ? ORDER_NEXT : ORDER_PREV; 2386 this._slide(order2, items[index]); 2387 } 2388 dispose() { 2389 if (this._swipeHelper) { 2390 this._swipeHelper.dispose(); 2391 } 2392 super.dispose(); 2393 } 2394 // Private 2395 _configAfterMerge(config) { 2396 config.defaultInterval = config.interval; 2397 return config; 2398 } 2399 _addEventListeners() { 2400 if (this._config.keyboard) { 2401 EventHandler.on(this._element, EVENT_KEYDOWN$1, (event) => this._keydown(event)); 2402 } 2403 if (this._config.pause === "hover") { 2404 EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause()); 2405 EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle()); 2406 } 2407 if (this._config.touch && Swipe.isSupported()) { 2408 this._addTouchEventListeners(); 2409 } 2410 } 2411 _addTouchEventListeners() { 2412 for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) { 2413 EventHandler.on(img, EVENT_DRAG_START, (event) => event.preventDefault()); 2414 } 2415 const endCallBack = () => { 2416 if (this._config.pause !== "hover") { 2417 return; 2418 } 2419 this.pause(); 2420 if (this.touchTimeout) { 2421 clearTimeout(this.touchTimeout); 2422 } 2423 this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval); 2424 }; 2425 const swipeConfig = { 2426 leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)), 2427 rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)), 2428 endCallback: endCallBack 2429 }; 2430 this._swipeHelper = new Swipe(this._element, swipeConfig); 2431 } 2432 _keydown(event) { 2433 if (/input|textarea/i.test(event.target.tagName)) { 2434 return; 2435 } 2436 const direction = KEY_TO_DIRECTION[event.key]; 2437 if (direction) { 2438 event.preventDefault(); 2439 this._slide(this._directionToOrder(direction)); 2440 } 2441 } 2442 _getItemIndex(element) { 2443 return this._getItems().indexOf(element); 2444 } 2445 _setActiveIndicatorElement(index) { 2446 if (!this._indicatorsElement) { 2447 return; 2448 } 2449 const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement); 2450 activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2); 2451 activeIndicator.removeAttribute("aria-current"); 2452 const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement); 2453 if (newActiveIndicator) { 2454 newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2); 2455 newActiveIndicator.setAttribute("aria-current", "true"); 2456 } 2457 } 2458 _updateInterval() { 2459 const element = this._activeElement || this._getActive(); 2460 if (!element) { 2461 return; 2462 } 2463 const elementInterval = Number.parseInt(element.getAttribute("data-bs-interval"), 10); 2464 this._config.interval = elementInterval || this._config.defaultInterval; 2465 } 2466 _slide(order2, element = null) { 2467 if (this._isSliding) { 2468 return; 2469 } 2470 const activeElement = this._getActive(); 2471 const isNext = order2 === ORDER_NEXT; 2472 const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap); 2473 if (nextElement === activeElement) { 2474 return; 2475 } 2476 const nextElementIndex = this._getItemIndex(nextElement); 2477 const triggerEvent = (eventName) => { 2478 return EventHandler.trigger(this._element, eventName, { 2479 relatedTarget: nextElement, 2480 direction: this._orderToDirection(order2), 2481 from: this._getItemIndex(activeElement), 2482 to: nextElementIndex 2483 }); 2484 }; 2485 const slideEvent = triggerEvent(EVENT_SLIDE); 2486 if (slideEvent.defaultPrevented) { 2487 return; 2488 } 2489 if (!activeElement || !nextElement) { 2490 return; 2491 } 2492 const isCycling = Boolean(this._interval); 2493 this.pause(); 2494 this._isSliding = true; 2495 this._setActiveIndicatorElement(nextElementIndex); 2496 this._activeElement = nextElement; 2497 const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END; 2498 const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV; 2499 nextElement.classList.add(orderClassName); 2500 reflow(nextElement); 2501 activeElement.classList.add(directionalClassName); 2502 nextElement.classList.add(directionalClassName); 2503 const completeCallBack = () => { 2504 nextElement.classList.remove(directionalClassName, orderClassName); 2505 nextElement.classList.add(CLASS_NAME_ACTIVE$2); 2506 activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName); 2507 this._isSliding = false;
vendor: 2,253 bytes, lines 2508-2582
2508 triggerEvent(EVENT_SLID); 2509 }; 2510 this._queueCallback(completeCallBack, activeElement, this._isAnimated()); 2511 if (isCycling) { 2512 this.cycle(); 2513 } 2514 } 2515 _isAnimated() { 2516 return this._element.classList.contains(CLASS_NAME_SLIDE); 2517 } 2518 _getActive() { 2519 return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); 2520 } 2521 _getItems() { 2522 return SelectorEngine.find(SELECTOR_ITEM, this._element); 2523 } 2524 _clearInterval() { 2525 if (this._interval) { 2526 clearInterval(this._interval); 2527 this._interval = null; 2528 } 2529 } 2530 _directionToOrder(direction) { 2531 if (isRTL()) { 2532 return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT; 2533 } 2534 return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV; 2535 } 2536 _orderToDirection(order2) { 2537 if (isRTL()) { 2538 return order2 === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT; 2539 } 2540 return order2 === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT; 2541 } 2542 // Static 2543 static jQueryInterface(config) { 2544 return this.each(function() { 2545 const data = Carousel.getOrCreateInstance(this, config); 2546 if (typeof config === "number") { 2547 data.to(config); 2548 return; 2549 } 2550 if (typeof config === "string") { 2551 if (data[config] === void 0 || config.startsWith("_") || config === "constructor") { 2552 throw new TypeError(`No method named "${config}"`); 2553 } 2554 data[config](); 2555 } 2556 }); 2557 } 2558} 2559EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function(event) { 2560 const target = SelectorEngine.getElementFromSelector(this); 2561 if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) { 2562 return; 2563 } 2564 event.preventDefault(); 2565 const carousel = Carousel.getOrCreateInstance(target); 2566 const slideIndex = this.getAttribute("data-bs-slide-to"); 2567 if (slideIndex) { 2568 carousel.to(slideIndex); 2569 carousel._maybeEnableCycle(); 2570 return; 2571 } 2572 if (Manipulator.getDataAttribute(this, "slide") === "next") { 2573 carousel.next(); 2574 carousel._maybeEnableCycle(); 2575 return; 2576 } 2577 carousel.prev(); 2578 carousel._maybeEnableCycle(); 2579}); 2580EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => { 2581 const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE); 2582 for (const carousel of carousels) {
vendor: 4,514 bytes, lines 2583-2712
2583 Carousel.getOrCreateInstance(carousel); 2584 } 2585}); 2586defineJQueryPlugin(Carousel); 2587const NAME$b = "collapse"; 2588const DATA_KEY$7 = "bs.collapse"; 2589const EVENT_KEY$7 = `.${DATA_KEY$7}`; 2590const DATA_API_KEY$4 = ".data-api"; 2591const EVENT_SHOW$6 = `show${EVENT_KEY$7}`; 2592const EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`; 2593const EVENT_HIDE$6 = `hide${EVENT_KEY$7}`; 2594const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`; 2595const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`; 2596const CLASS_NAME_SHOW$7 = "show"; 2597const CLASS_NAME_COLLAPSE = "collapse"; 2598const CLASS_NAME_COLLAPSING = "collapsing"; 2599const CLASS_NAME_COLLAPSED = "collapsed"; 2600const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`; 2601const CLASS_NAME_HORIZONTAL = "collapse-horizontal"; 2602const WIDTH = "width"; 2603const HEIGHT = "height"; 2604const SELECTOR_ACTIVES = ".collapse.show, .collapse.collapsing"; 2605const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]'; 2606const Default$a = { 2607 parent: null, 2608 toggle: true 2609}; 2610const DefaultType$a = { 2611 parent: "(null|element)", 2612 toggle: "boolean" 2613}; 2614class Collapse extends BaseComponent { 2615 constructor(element, config) { 2616 super(element, config); 2617 this._isTransitioning = false; 2618 this._triggerArray = []; 2619 const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4); 2620 for (const elem of toggleList) { 2621 const selector = SelectorEngine.getSelectorFromElement(elem); 2622 const filterElement = SelectorEngine.find(selector).filter((foundElement) => foundElement === this._element); 2623 if (selector !== null && filterElement.length) { 2624 this._triggerArray.push(elem); 2625 } 2626 } 2627 this._initializeChildren(); 2628 if (!this._config.parent) { 2629 this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); 2630 } 2631 if (this._config.toggle) { 2632 this.toggle(); 2633 } 2634 } 2635 // Getters 2636 static get Default() { 2637 return Default$a; 2638 } 2639 static get DefaultType() { 2640 return DefaultType$a; 2641 } 2642 static get NAME() { 2643 return NAME$b; 2644 } 2645 // Public 2646 toggle() { 2647 if (this._isShown()) { 2648 this.hide(); 2649 } else { 2650 this.show(); 2651 } 2652 } 2653 show() { 2654 if (this._isTransitioning || this._isShown()) { 2655 return; 2656 } 2657 let activeChildren = []; 2658 if (this._config.parent) { 2659 activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter((element) => element !== this._element).map((element) => Collapse.getOrCreateInstance(element, { 2660 toggle: false 2661 })); 2662 } 2663 if (activeChildren.length && activeChildren[0]._isTransitioning) { 2664 return; 2665 } 2666 const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6); 2667 if (startEvent.defaultPrevented) { 2668 return; 2669 } 2670 for (const activeInstance of activeChildren) { 2671 activeInstance.hide(); 2672 } 2673 const dimension = this._getDimension(); 2674 this._element.classList.remove(CLASS_NAME_COLLAPSE); 2675 this._element.classList.add(CLASS_NAME_COLLAPSING); 2676 this._element.style[dimension] = 0; 2677 this._addAriaAndCollapsedClass(this._triggerArray, true); 2678 this._isTransitioning = true; 2679 const complete = () => { 2680 this._isTransitioning = false; 2681 this._element.classList.remove(CLASS_NAME_COLLAPSING); 2682 this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); 2683 this._element.style[dimension] = ""; 2684 EventHandler.trigger(this._element, EVENT_SHOWN$6); 2685 }; 2686 const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); 2687 const scrollSize = `scroll${capitalizedDimension}`; 2688 this._queueCallback(complete, this._element, true); 2689 this._element.style[dimension] = `${this._element[scrollSize]}px`; 2690 } 2691 hide() { 2692 if (this._isTransitioning || !this._isShown()) { 2693 return; 2694 } 2695 const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6); 2696 if (startEvent.defaultPrevented) { 2697 return; 2698 } 2699 const dimension = this._getDimension(); 2700 this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; 2701 reflow(this._element); 2702 this._element.classList.add(CLASS_NAME_COLLAPSING); 2703 this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); 2704 for (const trigger of this._triggerArray) { 2705 const element = SelectorEngine.getElementFromSelector(trigger); 2706 if (element && !this._isShown(element)) { 2707 this._addAriaAndCollapsedClass([trigger], false); 2708 } 2709 } 2710 this._isTransitioning = true; 2711 const complete = () => { 2712 this._isTransitioning = false;
vendor: 5,767 bytes, lines 2713-2872
2713 this._element.classList.remove(CLASS_NAME_COLLAPSING); 2714 this._element.classList.add(CLASS_NAME_COLLAPSE); 2715 EventHandler.trigger(this._element, EVENT_HIDDEN$6); 2716 }; 2717 this._element.style[dimension] = ""; 2718 this._queueCallback(complete, this._element, true); 2719 } 2720 _isShown(element = this._element) { 2721 return element.classList.contains(CLASS_NAME_SHOW$7); 2722 } 2723 // Private 2724 _configAfterMerge(config) { 2725 config.toggle = Boolean(config.toggle); 2726 config.parent = getElement(config.parent); 2727 return config; 2728 } 2729 _getDimension() { 2730 return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; 2731 } 2732 _initializeChildren() { 2733 if (!this._config.parent) { 2734 return; 2735 } 2736 const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4); 2737 for (const element of children) { 2738 const selected = SelectorEngine.getElementFromSelector(element); 2739 if (selected) { 2740 this._addAriaAndCollapsedClass([element], this._isShown(selected)); 2741 } 2742 } 2743 } 2744 _getFirstLevelChildren(selector) { 2745 const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); 2746 return SelectorEngine.find(selector, this._config.parent).filter((element) => !children.includes(element)); 2747 } 2748 _addAriaAndCollapsedClass(triggerArray, isOpen) { 2749 if (!triggerArray.length) { 2750 return; 2751 } 2752 for (const element of triggerArray) { 2753 element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen); 2754 element.setAttribute("aria-expanded", isOpen); 2755 } 2756 } 2757 // Static 2758 static jQueryInterface(config) { 2759 const _config = {}; 2760 if (typeof config === "string" && /show|hide/.test(config)) { 2761 _config.toggle = false; 2762 } 2763 return this.each(function() { 2764 const data = Collapse.getOrCreateInstance(this, _config); 2765 if (typeof config === "string") { 2766 if (typeof data[config] === "undefined") { 2767 throw new TypeError(`No method named "${config}"`); 2768 } 2769 data[config](); 2770 } 2771 }); 2772 } 2773} 2774EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function(event) { 2775 if (event.target.tagName === "A" || event.delegateTarget && event.delegateTarget.tagName === "A") { 2776 event.preventDefault(); 2777 } 2778 for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) { 2779 Collapse.getOrCreateInstance(element, { 2780 toggle: false 2781 }).toggle(); 2782 } 2783}); 2784defineJQueryPlugin(Collapse); 2785const NAME$a = "dropdown"; 2786const DATA_KEY$6 = "bs.dropdown"; 2787const EVENT_KEY$6 = `.${DATA_KEY$6}`; 2788const DATA_API_KEY$3 = ".data-api"; 2789const ESCAPE_KEY$2 = "Escape"; 2790const TAB_KEY$1 = "Tab"; 2791const ARROW_UP_KEY$1 = "ArrowUp"; 2792const ARROW_DOWN_KEY$1 = "ArrowDown"; 2793const RIGHT_MOUSE_BUTTON = 2; 2794const EVENT_HIDE$5 = `hide${EVENT_KEY$6}`; 2795const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`; 2796const EVENT_SHOW$5 = `show${EVENT_KEY$6}`; 2797const EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`; 2798const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`; 2799const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`; 2800const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`; 2801const CLASS_NAME_SHOW$6 = "show"; 2802const CLASS_NAME_DROPUP = "dropup"; 2803const CLASS_NAME_DROPEND = "dropend"; 2804const CLASS_NAME_DROPSTART = "dropstart"; 2805const CLASS_NAME_DROPUP_CENTER = "dropup-center"; 2806const CLASS_NAME_DROPDOWN_CENTER = "dropdown-center"; 2807const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)'; 2808const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`; 2809const SELECTOR_MENU = ".dropdown-menu"; 2810const SELECTOR_NAVBAR = ".navbar"; 2811const SELECTOR_NAVBAR_NAV = ".navbar-nav"; 2812const SELECTOR_VISIBLE_ITEMS = ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)"; 2813const PLACEMENT_TOP = isRTL() ? "top-end" : "top-start"; 2814const PLACEMENT_TOPEND = isRTL() ? "top-start" : "top-end"; 2815const PLACEMENT_BOTTOM = isRTL() ? "bottom-end" : "bottom-start"; 2816const PLACEMENT_BOTTOMEND = isRTL() ? "bottom-start" : "bottom-end"; 2817const PLACEMENT_RIGHT = isRTL() ? "left-start" : "right-start"; 2818const PLACEMENT_LEFT = isRTL() ? "right-start" : "left-start"; 2819const PLACEMENT_TOPCENTER = "top"; 2820const PLACEMENT_BOTTOMCENTER = "bottom"; 2821const Default$9 = { 2822 autoClose: true, 2823 boundary: "clippingParents", 2824 display: "dynamic", 2825 offset: [0, 2], 2826 popperConfig: null, 2827 reference: "toggle" 2828}; 2829const DefaultType$9 = { 2830 autoClose: "(boolean|string)", 2831 boundary: "(string|element)", 2832 display: "string", 2833 offset: "(array|string|function)", 2834 popperConfig: "(null|object|function)", 2835 reference: "(string|element|object)" 2836}; 2837class Dropdown extends BaseComponent { 2838 constructor(element, config) { 2839 super(element, config); 2840 this._popper = null; 2841 this._parent = this._element.parentNode; 2842 this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent); 2843 this._inNavbar = this._detectNavbar(); 2844 } 2845 // Getters 2846 static get Default() { 2847 return Default$9; 2848 } 2849 static get DefaultType() { 2850 return DefaultType$9; 2851 } 2852 static get NAME() { 2853 return NAME$a; 2854 } 2855 // Public 2856 toggle() { 2857 return this._isShown() ? this.hide() : this.show(); 2858 } 2859 show() { 2860 if (isDisabled(this._element) || this._isShown()) { 2861 return; 2862 } 2863 const relatedTarget = { 2864 relatedTarget: this._element 2865 }; 2866 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget); 2867 if (showEvent.defaultPrevented) { 2868 return; 2869 } 2870 this._createPopper(); 2871 if ("ontouchstart" in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) { 2872 for (const element of [].concat(...document.body.children)) {
vendor: 5,060 bytes, lines 2873-3027
2873 EventHandler.on(element, "mouseover", noop); 2874 } 2875 } 2876 this._element.focus(); 2877 this._element.setAttribute("aria-expanded", true); 2878 this._menu.classList.add(CLASS_NAME_SHOW$6); 2879 this._element.classList.add(CLASS_NAME_SHOW$6); 2880 EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget); 2881 } 2882 hide() { 2883 if (isDisabled(this._element) || !this._isShown()) { 2884 return; 2885 } 2886 const relatedTarget = { 2887 relatedTarget: this._element 2888 }; 2889 this._completeHide(relatedTarget); 2890 } 2891 dispose() { 2892 if (this._popper) { 2893 this._popper.destroy(); 2894 } 2895 super.dispose(); 2896 } 2897 update() { 2898 this._inNavbar = this._detectNavbar(); 2899 if (this._popper) { 2900 this._popper.update(); 2901 } 2902 } 2903 // Private 2904 _completeHide(relatedTarget) { 2905 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget); 2906 if (hideEvent.defaultPrevented) { 2907 return; 2908 } 2909 if ("ontouchstart" in document.documentElement) { 2910 for (const element of [].concat(...document.body.children)) { 2911 EventHandler.off(element, "mouseover", noop); 2912 } 2913 } 2914 if (this._popper) { 2915 this._popper.destroy(); 2916 } 2917 this._menu.classList.remove(CLASS_NAME_SHOW$6); 2918 this._element.classList.remove(CLASS_NAME_SHOW$6); 2919 this._element.setAttribute("aria-expanded", "false"); 2920 Manipulator.removeDataAttribute(this._menu, "popper"); 2921 EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget); 2922 } 2923 _getConfig(config) { 2924 config = super._getConfig(config); 2925 if (typeof config.reference === "object" && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== "function") { 2926 throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`); 2927 } 2928 return config; 2929 } 2930 _createPopper() { 2931 if (typeof Popper === "undefined") { 2932 throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)"); 2933 } 2934 let referenceElement = this._element; 2935 if (this._config.reference === "parent") { 2936 referenceElement = this._parent; 2937 } else if (isElement(this._config.reference)) { 2938 referenceElement = getElement(this._config.reference); 2939 } else if (typeof this._config.reference === "object") { 2940 referenceElement = this._config.reference; 2941 } 2942 const popperConfig = this._getPopperConfig(); 2943 this._popper = createPopper(referenceElement, this._menu, popperConfig); 2944 } 2945 _isShown() { 2946 return this._menu.classList.contains(CLASS_NAME_SHOW$6); 2947 } 2948 _getPlacement() { 2949 const parentDropdown = this._parent; 2950 if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) { 2951 return PLACEMENT_RIGHT; 2952 } 2953 if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) { 2954 return PLACEMENT_LEFT; 2955 } 2956 if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) { 2957 return PLACEMENT_TOPCENTER; 2958 } 2959 if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) { 2960 return PLACEMENT_BOTTOMCENTER; 2961 } 2962 const isEnd = getComputedStyle(this._menu).getPropertyValue("--bs-position").trim() === "end"; 2963 if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) { 2964 return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP; 2965 } 2966 return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM; 2967 } 2968 _detectNavbar() { 2969 return this._element.closest(SELECTOR_NAVBAR) !== null; 2970 } 2971 _getOffset() { 2972 const { 2973 offset: offset2 2974 } = this._config; 2975 if (typeof offset2 === "string") { 2976 return offset2.split(",").map((value) => Number.parseInt(value, 10)); 2977 } 2978 if (typeof offset2 === "function") { 2979 return (popperData) => offset2(popperData, this._element); 2980 } 2981 return offset2; 2982 } 2983 _getPopperConfig() { 2984 const defaultBsPopperConfig = { 2985 placement: this._getPlacement(), 2986 modifiers: [{ 2987 name: "preventOverflow", 2988 options: { 2989 boundary: this._config.boundary 2990 } 2991 }, { 2992 name: "offset", 2993 options: { 2994 offset: this._getOffset() 2995 } 2996 }] 2997 }; 2998 if (this._inNavbar || this._config.display === "static") { 2999 Manipulator.setDataAttribute(this._menu, "popper", "static"); 3000 defaultBsPopperConfig.modifiers = [{ 3001 name: "applyStyles", 3002 enabled: false 3003 }]; 3004 } 3005 return { 3006 ...defaultBsPopperConfig, 3007 ...execute(this._config.popperConfig, [defaultBsPopperConfig]) 3008 }; 3009 } 3010 _selectMenuItem({ 3011 key, 3012 target 3013 }) { 3014 const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter((element) => isVisible(element)); 3015 if (!items.length) { 3016 return; 3017 } 3018 getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus(); 3019 } 3020 // Static 3021 static jQueryInterface(config) { 3022 return this.each(function() { 3023 const data = Dropdown.getOrCreateInstance(this, config); 3024 if (typeof config !== "string") { 3025 return; 3026 } 3027 if (typeof data[config] === "undefined") {
vendor: 5,962 bytes, lines 3028-3219
3028 throw new TypeError(`No method named "${config}"`); 3029 } 3030 data[config](); 3031 }); 3032 } 3033 static clearMenus(event) { 3034 if (event.button === RIGHT_MOUSE_BUTTON || event.type === "keyup" && event.key !== TAB_KEY$1) { 3035 return; 3036 } 3037 const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN); 3038 for (const toggle of openToggles) { 3039 const context = Dropdown.getInstance(toggle); 3040 if (!context || context._config.autoClose === false) { 3041 continue; 3042 } 3043 const composedPath = event.composedPath(); 3044 const isMenuTarget = composedPath.includes(context._menu); 3045 if (composedPath.includes(context._element) || context._config.autoClose === "inside" && !isMenuTarget || context._config.autoClose === "outside" && isMenuTarget) { 3046 continue; 3047 } 3048 if (context._menu.contains(event.target) && (event.type === "keyup" && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) { 3049 continue; 3050 } 3051 const relatedTarget = { 3052 relatedTarget: context._element 3053 }; 3054 if (event.type === "click") { 3055 relatedTarget.clickEvent = event; 3056 } 3057 context._completeHide(relatedTarget); 3058 } 3059 } 3060 static dataApiKeydownHandler(event) { 3061 const isInput = /input|textarea/i.test(event.target.tagName); 3062 const isEscapeEvent = event.key === ESCAPE_KEY$2; 3063 const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key); 3064 if (!isUpOrDownEvent && !isEscapeEvent) { 3065 return; 3066 } 3067 if (isInput && !isEscapeEvent) { 3068 return; 3069 } 3070 event.preventDefault(); 3071 const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode); 3072 const instance = Dropdown.getOrCreateInstance(getToggleButton); 3073 if (isUpOrDownEvent) { 3074 event.stopPropagation(); 3075 instance.show(); 3076 instance._selectMenuItem(event); 3077 return; 3078 } 3079 if (instance._isShown()) { 3080 event.stopPropagation(); 3081 instance.hide(); 3082 getToggleButton.focus(); 3083 } 3084 } 3085} 3086EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler); 3087EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler); 3088EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus); 3089EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus); 3090EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function(event) { 3091 event.preventDefault(); 3092 Dropdown.getOrCreateInstance(this).toggle(); 3093}); 3094defineJQueryPlugin(Dropdown); 3095const NAME$9 = "backdrop"; 3096const CLASS_NAME_FADE$4 = "fade"; 3097const CLASS_NAME_SHOW$5 = "show"; 3098const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`; 3099const Default$8 = { 3100 className: "modal-backdrop", 3101 clickCallback: null, 3102 isAnimated: false, 3103 isVisible: true, 3104 // if false, we use the backdrop helper without adding any element to the dom 3105 rootElement: "body" 3106 // give the choice to place backdrop under different elements 3107}; 3108const DefaultType$8 = { 3109 className: "string", 3110 clickCallback: "(function|null)", 3111 isAnimated: "boolean", 3112 isVisible: "boolean", 3113 rootElement: "(element|string)" 3114}; 3115class Backdrop extends Config { 3116 constructor(config) { 3117 super(); 3118 this._config = this._getConfig(config); 3119 this._isAppended = false; 3120 this._element = null; 3121 } 3122 // Getters 3123 static get Default() { 3124 return Default$8; 3125 } 3126 static get DefaultType() { 3127 return DefaultType$8; 3128 } 3129 static get NAME() { 3130 return NAME$9; 3131 } 3132 // Public 3133 show(callback) { 3134 if (!this._config.isVisible) { 3135 execute(callback); 3136 return; 3137 } 3138 this._append(); 3139 const element = this._getElement(); 3140 if (this._config.isAnimated) { 3141 reflow(element); 3142 } 3143 element.classList.add(CLASS_NAME_SHOW$5); 3144 this._emulateAnimation(() => { 3145 execute(callback); 3146 }); 3147 } 3148 hide(callback) { 3149 if (!this._config.isVisible) { 3150 execute(callback); 3151 return; 3152 } 3153 this._getElement().classList.remove(CLASS_NAME_SHOW$5); 3154 this._emulateAnimation(() => { 3155 this.dispose(); 3156 execute(callback); 3157 }); 3158 } 3159 dispose() { 3160 if (!this._isAppended) { 3161 return; 3162 } 3163 EventHandler.off(this._element, EVENT_MOUSEDOWN); 3164 this._element.remove(); 3165 this._isAppended = false; 3166 } 3167 // Private 3168 _getElement() { 3169 if (!this._element) { 3170 const backdrop = document.createElement("div"); 3171 backdrop.className = this._config.className; 3172 if (this._config.isAnimated) { 3173 backdrop.classList.add(CLASS_NAME_FADE$4); 3174 } 3175 this._element = backdrop; 3176 } 3177 return this._element; 3178 } 3179 _configAfterMerge(config) { 3180 config.rootElement = getElement(config.rootElement); 3181 return config; 3182 } 3183 _append() { 3184 if (this._isAppended) { 3185 return; 3186 } 3187 const element = this._getElement(); 3188 this._config.rootElement.append(element); 3189 EventHandler.on(element, EVENT_MOUSEDOWN, () => { 3190 execute(this._config.clickCallback); 3191 }); 3192 this._isAppended = true; 3193 } 3194 _emulateAnimation(callback) { 3195 executeAfterTransition(callback, this._getElement(), this._config.isAnimated); 3196 } 3197} 3198const NAME$8 = "focustrap"; 3199const DATA_KEY$5 = "bs.focustrap"; 3200const EVENT_KEY$5 = `.${DATA_KEY$5}`; 3201const EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`; 3202const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`; 3203const TAB_KEY = "Tab"; 3204const TAB_NAV_FORWARD = "forward"; 3205const TAB_NAV_BACKWARD = "backward"; 3206const Default$7 = { 3207 autofocus: true, 3208 trapElement: null 3209 // The element to trap focus inside of 3210}; 3211const DefaultType$7 = { 3212 autofocus: "boolean", 3213 trapElement: "element" 3214}; 3215class FocusTrap extends Config { 3216 constructor(config) { 3217 super(); 3218 this._config = this._getConfig(config); 3219 this._isActive = false;
vendor: 9,849 bytes, lines 3220-3524
3220 this._lastTabNavDirection = null; 3221 } 3222 // Getters 3223 static get Default() { 3224 return Default$7; 3225 } 3226 static get DefaultType() { 3227 return DefaultType$7; 3228 } 3229 static get NAME() { 3230 return NAME$8; 3231 } 3232 // Public 3233 activate() { 3234 if (this._isActive) { 3235 return; 3236 } 3237 if (this._config.autofocus) { 3238 this._config.trapElement.focus(); 3239 } 3240 EventHandler.off(document, EVENT_KEY$5); 3241 EventHandler.on(document, EVENT_FOCUSIN$2, (event) => this._handleFocusin(event)); 3242 EventHandler.on(document, EVENT_KEYDOWN_TAB, (event) => this._handleKeydown(event)); 3243 this._isActive = true; 3244 } 3245 deactivate() { 3246 if (!this._isActive) { 3247 return; 3248 } 3249 this._isActive = false; 3250 EventHandler.off(document, EVENT_KEY$5); 3251 } 3252 // Private 3253 _handleFocusin(event) { 3254 const { 3255 trapElement 3256 } = this._config; 3257 if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) { 3258 return; 3259 } 3260 const elements = SelectorEngine.focusableChildren(trapElement); 3261 if (elements.length === 0) { 3262 trapElement.focus(); 3263 } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) { 3264 elements[elements.length - 1].focus(); 3265 } else { 3266 elements[0].focus(); 3267 } 3268 } 3269 _handleKeydown(event) { 3270 if (event.key !== TAB_KEY) { 3271 return; 3272 } 3273 this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD; 3274 } 3275} 3276const SELECTOR_FIXED_CONTENT = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top"; 3277const SELECTOR_STICKY_CONTENT = ".sticky-top"; 3278const PROPERTY_PADDING = "padding-right"; 3279const PROPERTY_MARGIN = "margin-right"; 3280class ScrollBarHelper { 3281 constructor() { 3282 this._element = document.body; 3283 } 3284 // Public 3285 getWidth() { 3286 const documentWidth = document.documentElement.clientWidth; 3287 return Math.abs(window.innerWidth - documentWidth); 3288 } 3289 hide() { 3290 const width = this.getWidth(); 3291 this._disableOverFlow(); 3292 this._setElementAttributes(this._element, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width); 3293 this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, (calculatedValue) => calculatedValue + width); 3294 this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, (calculatedValue) => calculatedValue - width); 3295 } 3296 reset() { 3297 this._resetElementAttributes(this._element, "overflow"); 3298 this._resetElementAttributes(this._element, PROPERTY_PADDING); 3299 this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING); 3300 this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN); 3301 } 3302 isOverflowing() { 3303 return this.getWidth() > 0; 3304 } 3305 // Private 3306 _disableOverFlow() { 3307 this._saveInitialAttribute(this._element, "overflow"); 3308 this._element.style.overflow = "hidden"; 3309 } 3310 _setElementAttributes(selector, styleProperty, callback) { 3311 const scrollbarWidth = this.getWidth(); 3312 const manipulationCallBack = (element) => { 3313 if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) { 3314 return; 3315 } 3316 this._saveInitialAttribute(element, styleProperty); 3317 const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty); 3318 element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`); 3319 }; 3320 this._applyManipulationCallback(selector, manipulationCallBack); 3321 } 3322 _saveInitialAttribute(element, styleProperty) { 3323 const actualValue = element.style.getPropertyValue(styleProperty); 3324 if (actualValue) { 3325 Manipulator.setDataAttribute(element, styleProperty, actualValue); 3326 } 3327 } 3328 _resetElementAttributes(selector, styleProperty) { 3329 const manipulationCallBack = (element) => { 3330 const value = Manipulator.getDataAttribute(element, styleProperty); 3331 if (value === null) { 3332 element.style.removeProperty(styleProperty); 3333 return; 3334 } 3335 Manipulator.removeDataAttribute(element, styleProperty); 3336 element.style.setProperty(styleProperty, value); 3337 }; 3338 this._applyManipulationCallback(selector, manipulationCallBack); 3339 } 3340 _applyManipulationCallback(selector, callBack) { 3341 if (isElement(selector)) { 3342 callBack(selector); 3343 return; 3344 } 3345 for (const sel of SelectorEngine.find(selector, this._element)) { 3346 callBack(sel); 3347 } 3348 } 3349} 3350const NAME$7 = "modal"; 3351const DATA_KEY$4 = "bs.modal"; 3352const EVENT_KEY$4 = `.${DATA_KEY$4}`; 3353const DATA_API_KEY$2 = ".data-api"; 3354const ESCAPE_KEY$1 = "Escape"; 3355const EVENT_HIDE$4 = `hide${EVENT_KEY$4}`; 3356const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`; 3357const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`; 3358const EVENT_SHOW$4 = `show${EVENT_KEY$4}`; 3359const EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`; 3360const EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`; 3361const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`; 3362const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`; 3363const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`; 3364const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`; 3365const CLASS_NAME_OPEN = "modal-open"; 3366const CLASS_NAME_FADE$3 = "fade"; 3367const CLASS_NAME_SHOW$4 = "show"; 3368const CLASS_NAME_STATIC = "modal-static"; 3369const OPEN_SELECTOR$1 = ".modal.show"; 3370const SELECTOR_DIALOG = ".modal-dialog"; 3371const SELECTOR_MODAL_BODY = ".modal-body"; 3372const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]'; 3373const Default$6 = { 3374 backdrop: true, 3375 focus: true, 3376 keyboard: true 3377}; 3378const DefaultType$6 = { 3379 backdrop: "(boolean|string)", 3380 focus: "boolean", 3381 keyboard: "boolean" 3382}; 3383class Modal extends BaseComponent { 3384 constructor(element, config) { 3385 super(element, config); 3386 this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element); 3387 this._backdrop = this._initializeBackDrop(); 3388 this._focustrap = this._initializeFocusTrap(); 3389 this._isShown = false; 3390 this._isTransitioning = false; 3391 this._scrollBar = new ScrollBarHelper(); 3392 this._addEventListeners(); 3393 } 3394 // Getters 3395 static get Default() { 3396 return Default$6; 3397 } 3398 static get DefaultType() { 3399 return DefaultType$6; 3400 } 3401 static get NAME() { 3402 return NAME$7; 3403 } 3404 // Public 3405 toggle(relatedTarget) { 3406 return this._isShown ? this.hide() : this.show(relatedTarget); 3407 } 3408 show(relatedTarget) { 3409 if (this._isShown || this._isTransitioning) { 3410 return; 3411 } 3412 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, { 3413 relatedTarget 3414 }); 3415 if (showEvent.defaultPrevented) { 3416 return; 3417 } 3418 this._isShown = true; 3419 this._isTransitioning = true; 3420 this._scrollBar.hide(); 3421 document.body.classList.add(CLASS_NAME_OPEN); 3422 this._adjustDialog(); 3423 this._backdrop.show(() => this._showElement(relatedTarget)); 3424 } 3425 hide() { 3426 if (!this._isShown || this._isTransitioning) { 3427 return; 3428 } 3429 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4); 3430 if (hideEvent.defaultPrevented) { 3431 return; 3432 } 3433 this._isShown = false; 3434 this._isTransitioning = true; 3435 this._focustrap.deactivate(); 3436 this._element.classList.remove(CLASS_NAME_SHOW$4); 3437 this._queueCallback(() => this._hideModal(), this._element, this._isAnimated()); 3438 } 3439 dispose() { 3440 EventHandler.off(window, EVENT_KEY$4); 3441 EventHandler.off(this._dialog, EVENT_KEY$4); 3442 this._backdrop.dispose(); 3443 this._focustrap.deactivate(); 3444 super.dispose(); 3445 } 3446 handleUpdate() { 3447 this._adjustDialog(); 3448 } 3449 // Private 3450 _initializeBackDrop() { 3451 return new Backdrop({ 3452 isVisible: Boolean(this._config.backdrop), 3453 // 'static' option will be translated to true, and booleans will keep their value, 3454 isAnimated: this._isAnimated() 3455 }); 3456 } 3457 _initializeFocusTrap() { 3458 return new FocusTrap({ 3459 trapElement: this._element 3460 }); 3461 } 3462 _showElement(relatedTarget) { 3463 if (!document.body.contains(this._element)) { 3464 document.body.append(this._element); 3465 } 3466 this._element.style.display = "block"; 3467 this._element.removeAttribute("aria-hidden"); 3468 this._element.setAttribute("aria-modal", true); 3469 this._element.setAttribute("role", "dialog"); 3470 this._element.scrollTop = 0; 3471 const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog); 3472 if (modalBody) { 3473 modalBody.scrollTop = 0; 3474 } 3475 reflow(this._element); 3476 this._element.classList.add(CLASS_NAME_SHOW$4); 3477 const transitionComplete = () => { 3478 if (this._config.focus) { 3479 this._focustrap.activate(); 3480 } 3481 this._isTransitioning = false; 3482 EventHandler.trigger(this._element, EVENT_SHOWN$4, { 3483 relatedTarget 3484 }); 3485 }; 3486 this._queueCallback(transitionComplete, this._dialog, this._isAnimated()); 3487 } 3488 _addEventListeners() { 3489 EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, (event) => { 3490 if (event.key !== ESCAPE_KEY$1) { 3491 return; 3492 } 3493 if (this._config.keyboard) { 3494 this.hide(); 3495 return; 3496 } 3497 this._triggerBackdropTransition(); 3498 }); 3499 EventHandler.on(window, EVENT_RESIZE$1, () => { 3500 if (this._isShown && !this._isTransitioning) { 3501 this._adjustDialog(); 3502 } 3503 }); 3504 EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, (event) => { 3505 EventHandler.one(this._element, EVENT_CLICK_DISMISS, (event2) => { 3506 if (this._element !== event.target || this._element !== event2.target) { 3507 return; 3508 } 3509 if (this._config.backdrop === "static") { 3510 this._triggerBackdropTransition(); 3511 return; 3512 } 3513 if (this._config.backdrop) { 3514 this.hide(); 3515 } 3516 }); 3517 }); 3518 } 3519 _hideModal() { 3520 this._element.style.display = "none"; 3521 this._element.setAttribute("aria-hidden", true); 3522 this._element.removeAttribute("aria-modal"); 3523 this._element.removeAttribute("role"); 3524 this._isTransitioning = false;
vendor: 9,118 bytes, lines 3525-3811
3525 this._backdrop.hide(() => { 3526 document.body.classList.remove(CLASS_NAME_OPEN); 3527 this._resetAdjustments(); 3528 this._scrollBar.reset(); 3529 EventHandler.trigger(this._element, EVENT_HIDDEN$4); 3530 }); 3531 } 3532 _isAnimated() { 3533 return this._element.classList.contains(CLASS_NAME_FADE$3); 3534 } 3535 _triggerBackdropTransition() { 3536 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1); 3537 if (hideEvent.defaultPrevented) { 3538 return; 3539 } 3540 const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; 3541 const initialOverflowY = this._element.style.overflowY; 3542 if (initialOverflowY === "hidden" || this._element.classList.contains(CLASS_NAME_STATIC)) { 3543 return; 3544 } 3545 if (!isModalOverflowing) { 3546 this._element.style.overflowY = "hidden"; 3547 } 3548 this._element.classList.add(CLASS_NAME_STATIC); 3549 this._queueCallback(() => { 3550 this._element.classList.remove(CLASS_NAME_STATIC); 3551 this._queueCallback(() => { 3552 this._element.style.overflowY = initialOverflowY; 3553 }, this._dialog); 3554 }, this._dialog); 3555 this._element.focus(); 3556 } 3557 /** 3558 * The following methods are used to handle overflowing modals 3559 */ 3560 _adjustDialog() { 3561 const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; 3562 const scrollbarWidth = this._scrollBar.getWidth(); 3563 const isBodyOverflowing = scrollbarWidth > 0; 3564 if (isBodyOverflowing && !isModalOverflowing) { 3565 const property = isRTL() ? "paddingLeft" : "paddingRight"; 3566 this._element.style[property] = `${scrollbarWidth}px`; 3567 } 3568 if (!isBodyOverflowing && isModalOverflowing) { 3569 const property = isRTL() ? "paddingRight" : "paddingLeft"; 3570 this._element.style[property] = `${scrollbarWidth}px`; 3571 } 3572 } 3573 _resetAdjustments() { 3574 this._element.style.paddingLeft = ""; 3575 this._element.style.paddingRight = ""; 3576 } 3577 // Static 3578 static jQueryInterface(config, relatedTarget) { 3579 return this.each(function() { 3580 const data = Modal.getOrCreateInstance(this, config); 3581 if (typeof config !== "string") { 3582 return; 3583 } 3584 if (typeof data[config] === "undefined") { 3585 throw new TypeError(`No method named "${config}"`); 3586 } 3587 data[config](relatedTarget); 3588 }); 3589 } 3590} 3591EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function(event) { 3592 const target = SelectorEngine.getElementFromSelector(this); 3593 if (["A", "AREA"].includes(this.tagName)) { 3594 event.preventDefault(); 3595 } 3596 EventHandler.one(target, EVENT_SHOW$4, (showEvent) => { 3597 if (showEvent.defaultPrevented) { 3598 return; 3599 } 3600 EventHandler.one(target, EVENT_HIDDEN$4, () => { 3601 if (isVisible(this)) { 3602 this.focus(); 3603 } 3604 }); 3605 }); 3606 const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1); 3607 if (alreadyOpen) { 3608 Modal.getInstance(alreadyOpen).hide(); 3609 } 3610 const data = Modal.getOrCreateInstance(target); 3611 data.toggle(this); 3612}); 3613enableDismissTrigger(Modal); 3614defineJQueryPlugin(Modal); 3615const NAME$6 = "offcanvas"; 3616const DATA_KEY$3 = "bs.offcanvas"; 3617const EVENT_KEY$3 = `.${DATA_KEY$3}`; 3618const DATA_API_KEY$1 = ".data-api"; 3619const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`; 3620const ESCAPE_KEY = "Escape"; 3621const CLASS_NAME_SHOW$3 = "show"; 3622const CLASS_NAME_SHOWING$1 = "showing"; 3623const CLASS_NAME_HIDING = "hiding"; 3624const CLASS_NAME_BACKDROP = "offcanvas-backdrop"; 3625const OPEN_SELECTOR = ".offcanvas.show"; 3626const EVENT_SHOW$3 = `show${EVENT_KEY$3}`; 3627const EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`; 3628const EVENT_HIDE$3 = `hide${EVENT_KEY$3}`; 3629const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`; 3630const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`; 3631const EVENT_RESIZE = `resize${EVENT_KEY$3}`; 3632const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`; 3633const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`; 3634const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]'; 3635const Default$5 = { 3636 backdrop: true, 3637 keyboard: true, 3638 scroll: false 3639}; 3640const DefaultType$5 = { 3641 backdrop: "(boolean|string)", 3642 keyboard: "boolean", 3643 scroll: "boolean" 3644}; 3645class Offcanvas extends BaseComponent { 3646 constructor(element, config) { 3647 super(element, config); 3648 this._isShown = false; 3649 this._backdrop = this._initializeBackDrop(); 3650 this._focustrap = this._initializeFocusTrap(); 3651 this._addEventListeners(); 3652 } 3653 // Getters 3654 static get Default() { 3655 return Default$5; 3656 } 3657 static get DefaultType() { 3658 return DefaultType$5; 3659 } 3660 static get NAME() { 3661 return NAME$6; 3662 } 3663 // Public 3664 toggle(relatedTarget) { 3665 return this._isShown ? this.hide() : this.show(relatedTarget); 3666 } 3667 show(relatedTarget) { 3668 if (this._isShown) { 3669 return; 3670 } 3671 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { 3672 relatedTarget 3673 }); 3674 if (showEvent.defaultPrevented) { 3675 return; 3676 } 3677 this._isShown = true; 3678 this._backdrop.show(); 3679 if (!this._config.scroll) { 3680 new ScrollBarHelper().hide(); 3681 } 3682 this._element.setAttribute("aria-modal", true); 3683 this._element.setAttribute("role", "dialog"); 3684 this._element.classList.add(CLASS_NAME_SHOWING$1); 3685 const completeCallBack = () => { 3686 if (!this._config.scroll || this._config.backdrop) { 3687 this._focustrap.activate(); 3688 } 3689 this._element.classList.add(CLASS_NAME_SHOW$3); 3690 this._element.classList.remove(CLASS_NAME_SHOWING$1); 3691 EventHandler.trigger(this._element, EVENT_SHOWN$3, { 3692 relatedTarget 3693 }); 3694 }; 3695 this._queueCallback(completeCallBack, this._element, true); 3696 } 3697 hide() { 3698 if (!this._isShown) { 3699 return; 3700 } 3701 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3); 3702 if (hideEvent.defaultPrevented) { 3703 return; 3704 } 3705 this._focustrap.deactivate(); 3706 this._element.blur(); 3707 this._isShown = false; 3708 this._element.classList.add(CLASS_NAME_HIDING); 3709 this._backdrop.hide(); 3710 const completeCallback = () => { 3711 this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING); 3712 this._element.removeAttribute("aria-modal"); 3713 this._element.removeAttribute("role"); 3714 if (!this._config.scroll) { 3715 new ScrollBarHelper().reset(); 3716 } 3717 EventHandler.trigger(this._element, EVENT_HIDDEN$3); 3718 }; 3719 this._queueCallback(completeCallback, this._element, true); 3720 } 3721 dispose() { 3722 this._backdrop.dispose(); 3723 this._focustrap.deactivate(); 3724 super.dispose(); 3725 } 3726 // Private 3727 _initializeBackDrop() { 3728 const clickCallback = () => { 3729 if (this._config.backdrop === "static") { 3730 EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); 3731 return; 3732 } 3733 this.hide(); 3734 }; 3735 const isVisible2 = Boolean(this._config.backdrop); 3736 return new Backdrop({ 3737 className: CLASS_NAME_BACKDROP, 3738 isVisible: isVisible2, 3739 isAnimated: true, 3740 rootElement: this._element.parentNode, 3741 clickCallback: isVisible2 ? clickCallback : null 3742 }); 3743 } 3744 _initializeFocusTrap() { 3745 return new FocusTrap({ 3746 trapElement: this._element 3747 }); 3748 } 3749 _addEventListeners() { 3750 EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, (event) => { 3751 if (event.key !== ESCAPE_KEY) { 3752 return; 3753 } 3754 if (this._config.keyboard) { 3755 this.hide(); 3756 return; 3757 } 3758 EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); 3759 }); 3760 } 3761 // Static 3762 static jQueryInterface(config) { 3763 return this.each(function() { 3764 const data = Offcanvas.getOrCreateInstance(this, config); 3765 if (typeof config !== "string") { 3766 return; 3767 } 3768 if (data[config] === void 0 || config.startsWith("_") || config === "constructor") { 3769 throw new TypeError(`No method named "${config}"`); 3770 } 3771 data[config](this); 3772 }); 3773 } 3774} 3775EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function(event) { 3776 const target = SelectorEngine.getElementFromSelector(this); 3777 if (["A", "AREA"].includes(this.tagName)) { 3778 event.preventDefault(); 3779 } 3780 if (isDisabled(this)) { 3781 return; 3782 } 3783 EventHandler.one(target, EVENT_HIDDEN$3, () => { 3784 if (isVisible(this)) { 3785 this.focus(); 3786 } 3787 }); 3788 const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR); 3789 if (alreadyOpen && alreadyOpen !== target) { 3790 Offcanvas.getInstance(alreadyOpen).hide(); 3791 } 3792 const data = Offcanvas.getOrCreateInstance(target); 3793 data.toggle(this); 3794}); 3795EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => { 3796 for (const selector of SelectorEngine.find(OPEN_SELECTOR)) { 3797 Offcanvas.getOrCreateInstance(selector).show(); 3798 } 3799}); 3800EventHandler.on(window, EVENT_RESIZE, () => { 3801 for (const element of SelectorEngine.find("[aria-modal][class*=show][class*=offcanvas-]")) { 3802 if (getComputedStyle(element).position !== "fixed") { 3803 Offcanvas.getOrCreateInstance(element).hide(); 3804 } 3805 } 3806}); 3807enableDismissTrigger(Offcanvas); 3808defineJQueryPlugin(Offcanvas); 3809const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; 3810const DefaultAllowlist = { 3811 // Global attributes allowed on any supplied element below.
vendor: 18,699 bytes, lines 3812-4427
3812 "*": ["class", "dir", "id", "lang", "role", ARIA_ATTRIBUTE_PATTERN], 3813 a: ["target", "href", "title", "rel"], 3814 area: [], 3815 b: [], 3816 br: [], 3817 col: [], 3818 code: [], 3819 div: [], 3820 em: [], 3821 hr: [], 3822 h1: [], 3823 h2: [], 3824 h3: [], 3825 h4: [], 3826 h5: [], 3827 h6: [], 3828 i: [], 3829 img: ["src", "srcset", "alt", "title", "width", "height"], 3830 li: [], 3831 ol: [], 3832 p: [], 3833 pre: [], 3834 s: [], 3835 small: [], 3836 span: [], 3837 sub: [], 3838 sup: [], 3839 strong: [], 3840 u: [], 3841 ul: [] 3842}; 3843const uriAttributes = /* @__PURE__ */ new Set(["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"]); 3844const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i; 3845const allowedAttribute = (attribute, allowedAttributeList) => { 3846 const attributeName = attribute.nodeName.toLowerCase(); 3847 if (allowedAttributeList.includes(attributeName)) { 3848 if (uriAttributes.has(attributeName)) { 3849 return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue)); 3850 } 3851 return true; 3852 } 3853 return allowedAttributeList.filter((attributeRegex) => attributeRegex instanceof RegExp).some((regex) => regex.test(attributeName)); 3854}; 3855function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) { 3856 if (!unsafeHtml.length) { 3857 return unsafeHtml; 3858 } 3859 if (sanitizeFunction && typeof sanitizeFunction === "function") { 3860 return sanitizeFunction(unsafeHtml); 3861 } 3862 const domParser = new window.DOMParser(); 3863 const createdDocument = domParser.parseFromString(unsafeHtml, "text/html"); 3864 const elements = [].concat(...createdDocument.body.querySelectorAll("*")); 3865 for (const element of elements) { 3866 const elementName = element.nodeName.toLowerCase(); 3867 if (!Object.keys(allowList).includes(elementName)) { 3868 element.remove(); 3869 continue; 3870 } 3871 const attributeList = [].concat(...element.attributes); 3872 const allowedAttributes = [].concat(allowList["*"] || [], allowList[elementName] || []); 3873 for (const attribute of attributeList) { 3874 if (!allowedAttribute(attribute, allowedAttributes)) { 3875 element.removeAttribute(attribute.nodeName); 3876 } 3877 } 3878 } 3879 return createdDocument.body.innerHTML; 3880} 3881const NAME$5 = "TemplateFactory"; 3882const Default$4 = { 3883 allowList: DefaultAllowlist, 3884 content: {}, 3885 // { selector : text , selector2 : text2 , } 3886 extraClass: "", 3887 html: false, 3888 sanitize: true, 3889 sanitizeFn: null, 3890 template: "<div></div>" 3891}; 3892const DefaultType$4 = { 3893 allowList: "object", 3894 content: "object", 3895 extraClass: "(string|function)", 3896 html: "boolean", 3897 sanitize: "boolean", 3898 sanitizeFn: "(null|function)", 3899 template: "string" 3900}; 3901const DefaultContentType = { 3902 entry: "(string|element|function|null)", 3903 selector: "(string|element)" 3904}; 3905class TemplateFactory extends Config { 3906 constructor(config) { 3907 super(); 3908 this._config = this._getConfig(config); 3909 } 3910 // Getters 3911 static get Default() { 3912 return Default$4; 3913 } 3914 static get DefaultType() { 3915 return DefaultType$4; 3916 } 3917 static get NAME() { 3918 return NAME$5; 3919 } 3920 // Public 3921 getContent() { 3922 return Object.values(this._config.content).map((config) => this._resolvePossibleFunction(config)).filter(Boolean); 3923 } 3924 hasContent() { 3925 return this.getContent().length > 0; 3926 } 3927 changeContent(content) { 3928 this._checkContent(content); 3929 this._config.content = { 3930 ...this._config.content, 3931 ...content 3932 }; 3933 return this; 3934 } 3935 toHtml() { 3936 const templateWrapper = document.createElement("div"); 3937 templateWrapper.innerHTML = this._maybeSanitize(this._config.template); 3938 for (const [selector, text] of Object.entries(this._config.content)) { 3939 this._setContent(templateWrapper, text, selector); 3940 } 3941 const template = templateWrapper.children[0]; 3942 const extraClass = this._resolvePossibleFunction(this._config.extraClass); 3943 if (extraClass) { 3944 template.classList.add(...extraClass.split(" ")); 3945 } 3946 return template; 3947 } 3948 // Private 3949 _typeCheckConfig(config) { 3950 super._typeCheckConfig(config); 3951 this._checkContent(config.content); 3952 } 3953 _checkContent(arg) { 3954 for (const [selector, content] of Object.entries(arg)) { 3955 super._typeCheckConfig({ 3956 selector, 3957 entry: content 3958 }, DefaultContentType); 3959 } 3960 } 3961 _setContent(template, content, selector) { 3962 const templateElement = SelectorEngine.findOne(selector, template); 3963 if (!templateElement) { 3964 return; 3965 } 3966 content = this._resolvePossibleFunction(content); 3967 if (!content) { 3968 templateElement.remove(); 3969 return; 3970 } 3971 if (isElement(content)) { 3972 this._putElementInTemplate(getElement(content), templateElement); 3973 return; 3974 } 3975 if (this._config.html) { 3976 templateElement.innerHTML = this._maybeSanitize(content); 3977 return; 3978 } 3979 templateElement.textContent = content; 3980 } 3981 _maybeSanitize(arg) { 3982 return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg; 3983 } 3984 _resolvePossibleFunction(arg) { 3985 return execute(arg, [this]); 3986 } 3987 _putElementInTemplate(element, templateElement) { 3988 if (this._config.html) { 3989 templateElement.innerHTML = ""; 3990 templateElement.append(element); 3991 return; 3992 } 3993 templateElement.textContent = element.textContent; 3994 } 3995} 3996const NAME$4 = "tooltip"; 3997const DISALLOWED_ATTRIBUTES = /* @__PURE__ */ new Set(["sanitize", "allowList", "sanitizeFn"]); 3998const CLASS_NAME_FADE$2 = "fade"; 3999const CLASS_NAME_MODAL = "modal"; 4000const CLASS_NAME_SHOW$2 = "show"; 4001const SELECTOR_TOOLTIP_INNER = ".tooltip-inner"; 4002const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`; 4003const EVENT_MODAL_HIDE = "hide.bs.modal"; 4004const TRIGGER_HOVER = "hover"; 4005const TRIGGER_FOCUS = "focus"; 4006const TRIGGER_CLICK = "click"; 4007const TRIGGER_MANUAL = "manual"; 4008const EVENT_HIDE$2 = "hide"; 4009const EVENT_HIDDEN$2 = "hidden"; 4010const EVENT_SHOW$2 = "show"; 4011const EVENT_SHOWN$2 = "shown"; 4012const EVENT_INSERTED = "inserted"; 4013const EVENT_CLICK$1 = "click"; 4014const EVENT_FOCUSIN$1 = "focusin"; 4015const EVENT_FOCUSOUT$1 = "focusout"; 4016const EVENT_MOUSEENTER = "mouseenter"; 4017const EVENT_MOUSELEAVE = "mouseleave"; 4018const AttachmentMap = { 4019 AUTO: "auto", 4020 TOP: "top", 4021 RIGHT: isRTL() ? "left" : "right", 4022 BOTTOM: "bottom", 4023 LEFT: isRTL() ? "right" : "left" 4024}; 4025const Default$3 = { 4026 allowList: DefaultAllowlist, 4027 animation: true, 4028 boundary: "clippingParents", 4029 container: false, 4030 customClass: "", 4031 delay: 0, 4032 fallbackPlacements: ["top", "right", "bottom", "left"], 4033 html: false, 4034 offset: [0, 6], 4035 placement: "top", 4036 popperConfig: null, 4037 sanitize: true, 4038 sanitizeFn: null, 4039 selector: false, 4040 template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>', 4041 title: "", 4042 trigger: "hover focus" 4043}; 4044const DefaultType$3 = { 4045 allowList: "object", 4046 animation: "boolean", 4047 boundary: "(string|element)", 4048 container: "(string|element|boolean)", 4049 customClass: "(string|function)", 4050 delay: "(number|object)", 4051 fallbackPlacements: "array", 4052 html: "boolean", 4053 offset: "(array|string|function)", 4054 placement: "(string|function)", 4055 popperConfig: "(null|object|function)", 4056 sanitize: "boolean", 4057 sanitizeFn: "(null|function)", 4058 selector: "(string|boolean)", 4059 template: "string", 4060 title: "(string|element|function)", 4061 trigger: "string" 4062}; 4063class Tooltip extends BaseComponent { 4064 constructor(element, config) { 4065 if (typeof Popper === "undefined") { 4066 throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)"); 4067 } 4068 super(element, config); 4069 this._isEnabled = true; 4070 this._timeout = 0; 4071 this._isHovered = null; 4072 this._activeTrigger = {}; 4073 this._popper = null; 4074 this._templateFactory = null; 4075 this._newContent = null; 4076 this.tip = null; 4077 this._setListeners(); 4078 if (!this._config.selector) { 4079 this._fixTitle(); 4080 } 4081 } 4082 // Getters 4083 static get Default() { 4084 return Default$3; 4085 } 4086 static get DefaultType() { 4087 return DefaultType$3; 4088 } 4089 static get NAME() { 4090 return NAME$4; 4091 } 4092 // Public 4093 enable() { 4094 this._isEnabled = true; 4095 } 4096 disable() { 4097 this._isEnabled = false; 4098 } 4099 toggleEnabled() { 4100 this._isEnabled = !this._isEnabled; 4101 } 4102 toggle() { 4103 if (!this._isEnabled) { 4104 return; 4105 } 4106 this._activeTrigger.click = !this._activeTrigger.click; 4107 if (this._isShown()) { 4108 this._leave(); 4109 return; 4110 } 4111 this._enter(); 4112 } 4113 dispose() { 4114 clearTimeout(this._timeout); 4115 EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); 4116 if (this._element.getAttribute("data-bs-original-title")) { 4117 this._element.setAttribute("title", this._element.getAttribute("data-bs-original-title")); 4118 } 4119 this._disposePopper(); 4120 super.dispose(); 4121 } 4122 show() { 4123 if (this._element.style.display === "none") { 4124 throw new Error("Please use show on visible elements"); 4125 } 4126 if (!(this._isWithContent() && this._isEnabled)) { 4127 return; 4128 } 4129 const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2)); 4130 const shadowRoot = findShadowRoot(this._element); 4131 const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element); 4132 if (showEvent.defaultPrevented || !isInTheDom) { 4133 return; 4134 } 4135 this._disposePopper(); 4136 const tip = this._getTipElement(); 4137 this._element.setAttribute("aria-describedby", tip.getAttribute("id")); 4138 const { 4139 container 4140 } = this._config; 4141 if (!this._element.ownerDocument.documentElement.contains(this.tip)) { 4142 container.append(tip); 4143 EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED)); 4144 } 4145 this._popper = this._createPopper(tip); 4146 tip.classList.add(CLASS_NAME_SHOW$2); 4147 if ("ontouchstart" in document.documentElement) { 4148 for (const element of [].concat(...document.body.children)) { 4149 EventHandler.on(element, "mouseover", noop); 4150 } 4151 } 4152 const complete = () => { 4153 EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2)); 4154 if (this._isHovered === false) { 4155 this._leave(); 4156 } 4157 this._isHovered = false; 4158 }; 4159 this._queueCallback(complete, this.tip, this._isAnimated()); 4160 } 4161 hide() { 4162 if (!this._isShown()) { 4163 return; 4164 } 4165 const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2)); 4166 if (hideEvent.defaultPrevented) { 4167 return; 4168 } 4169 const tip = this._getTipElement(); 4170 tip.classList.remove(CLASS_NAME_SHOW$2); 4171 if ("ontouchstart" in document.documentElement) { 4172 for (const element of [].concat(...document.body.children)) { 4173 EventHandler.off(element, "mouseover", noop); 4174 } 4175 } 4176 this._activeTrigger[TRIGGER_CLICK] = false; 4177 this._activeTrigger[TRIGGER_FOCUS] = false; 4178 this._activeTrigger[TRIGGER_HOVER] = false; 4179 this._isHovered = null; 4180 const complete = () => { 4181 if (this._isWithActiveTrigger()) { 4182 return; 4183 } 4184 if (!this._isHovered) { 4185 this._disposePopper(); 4186 } 4187 this._element.removeAttribute("aria-describedby"); 4188 EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2)); 4189 }; 4190 this._queueCallback(complete, this.tip, this._isAnimated()); 4191 } 4192 update() { 4193 if (this._popper) { 4194 this._popper.update(); 4195 } 4196 } 4197 // Protected 4198 _isWithContent() { 4199 return Boolean(this._getTitle()); 4200 } 4201 _getTipElement() { 4202 if (!this.tip) { 4203 this.tip = this._createTipElement(this._newContent || this._getContentForTemplate()); 4204 } 4205 return this.tip; 4206 } 4207 _createTipElement(content) { 4208 const tip = this._getTemplateFactory(content).toHtml(); 4209 if (!tip) { 4210 return null; 4211 } 4212 tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); 4213 tip.classList.add(`bs-${this.constructor.NAME}-auto`); 4214 const tipId = getUID(this.constructor.NAME).toString(); 4215 tip.setAttribute("id", tipId); 4216 if (this._isAnimated()) { 4217 tip.classList.add(CLASS_NAME_FADE$2); 4218 } 4219 return tip; 4220 } 4221 setContent(content) { 4222 this._newContent = content; 4223 if (this._isShown()) { 4224 this._disposePopper(); 4225 this.show(); 4226 } 4227 } 4228 _getTemplateFactory(content) { 4229 if (this._templateFactory) { 4230 this._templateFactory.changeContent(content); 4231 } else { 4232 this._templateFactory = new TemplateFactory({ 4233 ...this._config, 4234 // the `content` var has to be after `this._config` 4235 // to override config.content in case of popover 4236 content, 4237 extraClass: this._resolvePossibleFunction(this._config.customClass) 4238 }); 4239 } 4240 return this._templateFactory; 4241 } 4242 _getContentForTemplate() { 4243 return { 4244 [SELECTOR_TOOLTIP_INNER]: this._getTitle() 4245 }; 4246 } 4247 _getTitle() { 4248 return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute("data-bs-original-title"); 4249 } 4250 // Private 4251 _initializeOnDelegatedTarget(event) { 4252 return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); 4253 } 4254 _isAnimated() { 4255 return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2); 4256 } 4257 _isShown() { 4258 return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2); 4259 } 4260 _createPopper(tip) { 4261 const placement = execute(this._config.placement, [this, tip, this._element]); 4262 const attachment = AttachmentMap[placement.toUpperCase()]; 4263 return createPopper(this._element, tip, this._getPopperConfig(attachment)); 4264 } 4265 _getOffset() { 4266 const { 4267 offset: offset2 4268 } = this._config; 4269 if (typeof offset2 === "string") { 4270 return offset2.split(",").map((value) => Number.parseInt(value, 10)); 4271 } 4272 if (typeof offset2 === "function") { 4273 return (popperData) => offset2(popperData, this._element); 4274 } 4275 return offset2; 4276 } 4277 _resolvePossibleFunction(arg) { 4278 return execute(arg, [this._element]); 4279 } 4280 _getPopperConfig(attachment) { 4281 const defaultBsPopperConfig = { 4282 placement: attachment, 4283 modifiers: [{ 4284 name: "flip", 4285 options: { 4286 fallbackPlacements: this._config.fallbackPlacements 4287 } 4288 }, { 4289 name: "offset", 4290 options: { 4291 offset: this._getOffset() 4292 } 4293 }, { 4294 name: "preventOverflow", 4295 options: { 4296 boundary: this._config.boundary 4297 } 4298 }, { 4299 name: "arrow", 4300 options: { 4301 element: `.${this.constructor.NAME}-arrow` 4302 } 4303 }, { 4304 name: "preSetPlacement", 4305 enabled: true, 4306 phase: "beforeMain", 4307 fn: (data) => { 4308 this._getTipElement().setAttribute("data-popper-placement", data.state.placement); 4309 } 4310 }] 4311 }; 4312 return { 4313 ...defaultBsPopperConfig, 4314 ...execute(this._config.popperConfig, [defaultBsPopperConfig]) 4315 }; 4316 } 4317 _setListeners() { 4318 const triggers = this._config.trigger.split(" "); 4319 for (const trigger of triggers) { 4320 if (trigger === "click") { 4321 EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, (event) => { 4322 const context = this._initializeOnDelegatedTarget(event); 4323 context.toggle(); 4324 }); 4325 } else if (trigger !== TRIGGER_MANUAL) { 4326 const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1); 4327 const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1); 4328 EventHandler.on(this._element, eventIn, this._config.selector, (event) => { 4329 const context = this._initializeOnDelegatedTarget(event); 4330 context._activeTrigger[event.type === "focusin" ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; 4331 context._enter(); 4332 }); 4333 EventHandler.on(this._element, eventOut, this._config.selector, (event) => { 4334 const context = this._initializeOnDelegatedTarget(event); 4335 context._activeTrigger[event.type === "focusout" ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); 4336 context._leave(); 4337 }); 4338 } 4339 } 4340 this._hideModalHandler = () => { 4341 if (this._element) { 4342 this.hide(); 4343 } 4344 }; 4345 EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); 4346 } 4347 _fixTitle() { 4348 const title = this._element.getAttribute("title"); 4349 if (!title) { 4350 return; 4351 } 4352 if (!this._element.getAttribute("aria-label") && !this._element.textContent.trim()) { 4353 this._element.setAttribute("aria-label", title); 4354 } 4355 this._element.setAttribute("data-bs-original-title", title); 4356 this._element.removeAttribute("title"); 4357 } 4358 _enter() { 4359 if (this._isShown() || this._isHovered) { 4360 this._isHovered = true; 4361 return; 4362 } 4363 this._isHovered = true; 4364 this._setTimeout(() => { 4365 if (this._isHovered) { 4366 this.show(); 4367 } 4368 }, this._config.delay.show); 4369 } 4370 _leave() { 4371 if (this._isWithActiveTrigger()) { 4372 return; 4373 } 4374 this._isHovered = false; 4375 this._setTimeout(() => { 4376 if (!this._isHovered) { 4377 this.hide(); 4378 } 4379 }, this._config.delay.hide); 4380 } 4381 _setTimeout(handler, timeout) { 4382 clearTimeout(this._timeout); 4383 this._timeout = setTimeout(handler, timeout); 4384 } 4385 _isWithActiveTrigger() { 4386 return Object.values(this._activeTrigger).includes(true); 4387 } 4388 _getConfig(config) { 4389 const dataAttributes = Manipulator.getDataAttributes(this._element); 4390 for (const dataAttribute of Object.keys(dataAttributes)) { 4391 if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) { 4392 delete dataAttributes[dataAttribute]; 4393 } 4394 } 4395 config = { 4396 ...dataAttributes, 4397 ...typeof config === "object" && config ? config : {} 4398 }; 4399 config = this._mergeConfigObj(config); 4400 config = this._configAfterMerge(config); 4401 this._typeCheckConfig(config); 4402 return config; 4403 } 4404 _configAfterMerge(config) { 4405 config.container = config.container === false ? document.body : getElement(config.container); 4406 if (typeof config.delay === "number") { 4407 config.delay = { 4408 show: config.delay, 4409 hide: config.delay 4410 }; 4411 } 4412 if (typeof config.title === "number") { 4413 config.title = config.title.toString(); 4414 } 4415 if (typeof config.content === "number") { 4416 config.content = config.content.toString(); 4417 } 4418 return config; 4419 } 4420 _getDelegateConfig() { 4421 const config = {}; 4422 for (const [key, value] of Object.entries(this._config)) { 4423 if (this.constructor.Default[key] !== value) { 4424 config[key] = value; 4425 } 4426 } 4427 config.selector = false;
vendor: 11,041 bytes, lines 4428-4756
4428 config.trigger = "manual"; 4429 return config; 4430 } 4431 _disposePopper() { 4432 if (this._popper) { 4433 this._popper.destroy(); 4434 this._popper = null; 4435 } 4436 if (this.tip) { 4437 this.tip.remove(); 4438 this.tip = null; 4439 } 4440 } 4441 // Static 4442 static jQueryInterface(config) { 4443 return this.each(function() { 4444 const data = Tooltip.getOrCreateInstance(this, config); 4445 if (typeof config !== "string") { 4446 return; 4447 } 4448 if (typeof data[config] === "undefined") { 4449 throw new TypeError(`No method named "${config}"`); 4450 } 4451 data[config](); 4452 }); 4453 } 4454} 4455defineJQueryPlugin(Tooltip); 4456const NAME$3 = "popover"; 4457const SELECTOR_TITLE = ".popover-header"; 4458const SELECTOR_CONTENT = ".popover-body"; 4459const Default$2 = { 4460 ...Tooltip.Default, 4461 content: "", 4462 offset: [0, 8], 4463 placement: "right", 4464 template: '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>', 4465 trigger: "click" 4466}; 4467const DefaultType$2 = { 4468 ...Tooltip.DefaultType, 4469 content: "(null|string|element|function)" 4470}; 4471class Popover extends Tooltip { 4472 // Getters 4473 static get Default() { 4474 return Default$2; 4475 } 4476 static get DefaultType() { 4477 return DefaultType$2; 4478 } 4479 static get NAME() { 4480 return NAME$3; 4481 } 4482 // Overrides 4483 _isWithContent() { 4484 return this._getTitle() || this._getContent(); 4485 } 4486 // Private 4487 _getContentForTemplate() { 4488 return { 4489 [SELECTOR_TITLE]: this._getTitle(), 4490 [SELECTOR_CONTENT]: this._getContent() 4491 }; 4492 } 4493 _getContent() { 4494 return this._resolvePossibleFunction(this._config.content); 4495 } 4496 // Static 4497 static jQueryInterface(config) { 4498 return this.each(function() { 4499 const data = Popover.getOrCreateInstance(this, config); 4500 if (typeof config !== "string") { 4501 return; 4502 } 4503 if (typeof data[config] === "undefined") { 4504 throw new TypeError(`No method named "${config}"`); 4505 } 4506 data[config](); 4507 }); 4508 } 4509} 4510defineJQueryPlugin(Popover); 4511const NAME$2 = "scrollspy"; 4512const DATA_KEY$2 = "bs.scrollspy"; 4513const EVENT_KEY$2 = `.${DATA_KEY$2}`; 4514const DATA_API_KEY = ".data-api"; 4515const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`; 4516const EVENT_CLICK = `click${EVENT_KEY$2}`; 4517const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`; 4518const CLASS_NAME_DROPDOWN_ITEM = "dropdown-item"; 4519const CLASS_NAME_ACTIVE$1 = "active"; 4520const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; 4521const SELECTOR_TARGET_LINKS = "[href]"; 4522const SELECTOR_NAV_LIST_GROUP = ".nav, .list-group"; 4523const SELECTOR_NAV_LINKS = ".nav-link"; 4524const SELECTOR_NAV_ITEMS = ".nav-item"; 4525const SELECTOR_LIST_ITEMS = ".list-group-item"; 4526const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`; 4527const SELECTOR_DROPDOWN = ".dropdown"; 4528const SELECTOR_DROPDOWN_TOGGLE$1 = ".dropdown-toggle"; 4529const Default$1 = { 4530 offset: null, 4531 // TODO: v6 @deprecated, keep it for backwards compatibility reasons 4532 rootMargin: "0px 0px -25%", 4533 smoothScroll: false, 4534 target: null, 4535 threshold: [0.1, 0.5, 1] 4536}; 4537const DefaultType$1 = { 4538 offset: "(number|null)", 4539 // TODO v6 @deprecated, keep it for backwards compatibility reasons 4540 rootMargin: "string", 4541 smoothScroll: "boolean", 4542 target: "element", 4543 threshold: "array" 4544}; 4545class ScrollSpy extends BaseComponent { 4546 constructor(element, config) { 4547 super(element, config); 4548 this._targetLinks = /* @__PURE__ */ new Map(); 4549 this._observableSections = /* @__PURE__ */ new Map(); 4550 this._rootElement = getComputedStyle(this._element).overflowY === "visible" ? null : this._element; 4551 this._activeTarget = null; 4552 this._observer = null; 4553 this._previousScrollData = { 4554 visibleEntryTop: 0, 4555 parentScrollTop: 0 4556 }; 4557 this.refresh(); 4558 } 4559 // Getters 4560 static get Default() { 4561 return Default$1; 4562 } 4563 static get DefaultType() { 4564 return DefaultType$1; 4565 } 4566 static get NAME() { 4567 return NAME$2; 4568 } 4569 // Public 4570 refresh() { 4571 this._initializeTargetsAndObservables(); 4572 this._maybeEnableSmoothScroll(); 4573 if (this._observer) { 4574 this._observer.disconnect(); 4575 } else { 4576 this._observer = this._getNewObserver(); 4577 } 4578 for (const section of this._observableSections.values()) { 4579 this._observer.observe(section); 4580 } 4581 } 4582 dispose() { 4583 this._observer.disconnect(); 4584 super.dispose(); 4585 } 4586 // Private 4587 _configAfterMerge(config) { 4588 config.target = getElement(config.target) || document.body; 4589 config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin; 4590 if (typeof config.threshold === "string") { 4591 config.threshold = config.threshold.split(",").map((value) => Number.parseFloat(value)); 4592 } 4593 return config; 4594 } 4595 _maybeEnableSmoothScroll() { 4596 if (!this._config.smoothScroll) { 4597 return; 4598 } 4599 EventHandler.off(this._config.target, EVENT_CLICK); 4600 EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, (event) => { 4601 const observableSection = this._observableSections.get(event.target.hash); 4602 if (observableSection) { 4603 event.preventDefault(); 4604 const root = this._rootElement || window; 4605 const height = observableSection.offsetTop - this._element.offsetTop; 4606 if (root.scrollTo) { 4607 root.scrollTo({ 4608 top: height, 4609 behavior: "smooth" 4610 }); 4611 return; 4612 } 4613 root.scrollTop = height; 4614 } 4615 }); 4616 } 4617 _getNewObserver() { 4618 const options = { 4619 root: this._rootElement, 4620 threshold: this._config.threshold, 4621 rootMargin: this._config.rootMargin 4622 }; 4623 return new IntersectionObserver((entries) => this._observerCallback(entries), options); 4624 } 4625 // The logic of selection 4626 _observerCallback(entries) { 4627 const targetElement = (entry) => this._targetLinks.get(`#${entry.target.id}`); 4628 const activate = (entry) => { 4629 this._previousScrollData.visibleEntryTop = entry.target.offsetTop; 4630 this._process(targetElement(entry)); 4631 }; 4632 const parentScrollTop = (this._rootElement || document.documentElement).scrollTop; 4633 const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop; 4634 this._previousScrollData.parentScrollTop = parentScrollTop; 4635 for (const entry of entries) { 4636 if (!entry.isIntersecting) { 4637 this._activeTarget = null; 4638 this._clearActiveClass(targetElement(entry)); 4639 continue; 4640 } 4641 const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; 4642 if (userScrollsDown && entryIsLowerThanPrevious) { 4643 activate(entry); 4644 if (!parentScrollTop) { 4645 return; 4646 } 4647 continue; 4648 } 4649 if (!userScrollsDown && !entryIsLowerThanPrevious) { 4650 activate(entry); 4651 } 4652 } 4653 } 4654 _initializeTargetsAndObservables() { 4655 this._targetLinks = /* @__PURE__ */ new Map(); 4656 this._observableSections = /* @__PURE__ */ new Map(); 4657 const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target); 4658 for (const anchor of targetLinks) { 4659 if (!anchor.hash || isDisabled(anchor)) { 4660 continue; 4661 } 4662 const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element); 4663 if (isVisible(observableSection)) { 4664 this._targetLinks.set(decodeURI(anchor.hash), anchor); 4665 this._observableSections.set(anchor.hash, observableSection); 4666 } 4667 } 4668 } 4669 _process(target) { 4670 if (this._activeTarget === target) { 4671 return; 4672 } 4673 this._clearActiveClass(this._config.target); 4674 this._activeTarget = target; 4675 target.classList.add(CLASS_NAME_ACTIVE$1); 4676 this._activateParents(target); 4677 EventHandler.trigger(this._element, EVENT_ACTIVATE, { 4678 relatedTarget: target 4679 }); 4680 } 4681 _activateParents(target) { 4682 if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { 4683 SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1); 4684 return; 4685 } 4686 for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) { 4687 for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) { 4688 item.classList.add(CLASS_NAME_ACTIVE$1); 4689 } 4690 } 4691 } 4692 _clearActiveClass(parent) { 4693 parent.classList.remove(CLASS_NAME_ACTIVE$1); 4694 const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent); 4695 for (const node of activeNodes) { 4696 node.classList.remove(CLASS_NAME_ACTIVE$1); 4697 } 4698 } 4699 // Static 4700 static jQueryInterface(config) { 4701 return this.each(function() { 4702 const data = ScrollSpy.getOrCreateInstance(this, config); 4703 if (typeof config !== "string") { 4704 return; 4705 } 4706 if (data[config] === void 0 || config.startsWith("_") || config === "constructor") { 4707 throw new TypeError(`No method named "${config}"`); 4708 } 4709 data[config](); 4710 }); 4711 } 4712} 4713EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => { 4714 for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) { 4715 ScrollSpy.getOrCreateInstance(spy); 4716 } 4717}); 4718defineJQueryPlugin(ScrollSpy); 4719const NAME$1 = "tab"; 4720const DATA_KEY$1 = "bs.tab"; 4721const EVENT_KEY$1 = `.${DATA_KEY$1}`; 4722const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`; 4723const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`; 4724const EVENT_SHOW$1 = `show${EVENT_KEY$1}`; 4725const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`; 4726const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`; 4727const EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`; 4728const EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`; 4729const ARROW_LEFT_KEY = "ArrowLeft"; 4730const ARROW_RIGHT_KEY = "ArrowRight"; 4731const ARROW_UP_KEY = "ArrowUp"; 4732const ARROW_DOWN_KEY = "ArrowDown"; 4733const HOME_KEY = "Home"; 4734const END_KEY = "End"; 4735const CLASS_NAME_ACTIVE = "active"; 4736const CLASS_NAME_FADE$1 = "fade"; 4737const CLASS_NAME_SHOW$1 = "show"; 4738const CLASS_DROPDOWN = "dropdown"; 4739const SELECTOR_DROPDOWN_TOGGLE = ".dropdown-toggle"; 4740const SELECTOR_DROPDOWN_MENU = ".dropdown-menu"; 4741const NOT_SELECTOR_DROPDOWN_TOGGLE = ":not(.dropdown-toggle)"; 4742const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]'; 4743const SELECTOR_OUTER = ".nav-item, .list-group-item"; 4744const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`; 4745const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; 4746const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`; 4747const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`; 4748class Tab extends BaseComponent { 4749 constructor(element) { 4750 super(element); 4751 this._parent = this._element.closest(SELECTOR_TAB_PANEL); 4752 if (!this._parent) { 4753 return; 4754 } 4755 this._setInitialAttributes(this._parent, this._getChildren()); 4756 EventHandler.on(this._element, EVENT_KEYDOWN, (event) =>
vendor: 4,128 bytes, lines 4756-4879
4756 this._keydown(event)); 4757 } 4758 // Getters 4759 static get NAME() { 4760 return NAME$1; 4761 } 4762 // Public 4763 show() { 4764 const innerElem = this._element; 4765 if (this._elemIsActive(innerElem)) { 4766 return; 4767 } 4768 const active = this._getActiveElem(); 4769 const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, { 4770 relatedTarget: innerElem 4771 }) : null; 4772 const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, { 4773 relatedTarget: active 4774 }); 4775 if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) { 4776 return; 4777 } 4778 this._deactivate(active, innerElem); 4779 this._activate(innerElem, active); 4780 } 4781 // Private 4782 _activate(element, relatedElem) { 4783 if (!element) { 4784 return; 4785 } 4786 element.classList.add(CLASS_NAME_ACTIVE); 4787 this._activate(SelectorEngine.getElementFromSelector(element)); 4788 const complete = () => { 4789 if (element.getAttribute("role") !== "tab") { 4790 element.classList.add(CLASS_NAME_SHOW$1); 4791 return; 4792 } 4793 element.removeAttribute("tabindex"); 4794 element.setAttribute("aria-selected", true); 4795 this._toggleDropDown(element, true); 4796 EventHandler.trigger(element, EVENT_SHOWN$1, { 4797 relatedTarget: relatedElem 4798 }); 4799 }; 4800 this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1)); 4801 } 4802 _deactivate(element, relatedElem) { 4803 if (!element) { 4804 return; 4805 } 4806 element.classList.remove(CLASS_NAME_ACTIVE); 4807 element.blur(); 4808 this._deactivate(SelectorEngine.getElementFromSelector(element)); 4809 const complete = () => { 4810 if (element.getAttribute("role") !== "tab") { 4811 element.classList.remove(CLASS_NAME_SHOW$1); 4812 return; 4813 } 4814 element.setAttribute("aria-selected", false); 4815 element.setAttribute("tabindex", "-1"); 4816 this._toggleDropDown(element, false); 4817 EventHandler.trigger(element, EVENT_HIDDEN$1, { 4818 relatedTarget: relatedElem 4819 }); 4820 }; 4821 this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1)); 4822 } 4823 _keydown(event) { 4824 if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) { 4825 return; 4826 } 4827 event.stopPropagation(); 4828 event.preventDefault(); 4829 const children = this._getChildren().filter((element) => !isDisabled(element)); 4830 let nextActiveElement; 4831 if ([HOME_KEY, END_KEY].includes(event.key)) { 4832 nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]; 4833 } else { 4834 const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key); 4835 nextActiveElement = getNextActiveElement(children, event.target, isNext, true); 4836 } 4837 if (nextActiveElement) { 4838 nextActiveElement.focus({ 4839 preventScroll: true 4840 }); 4841 Tab.getOrCreateInstance(nextActiveElement).show(); 4842 } 4843 } 4844 _getChildren() { 4845 return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent); 4846 } 4847 _getActiveElem() { 4848 return this._getChildren().find((child) => this._elemIsActive(child)) || null; 4849 } 4850 _setInitialAttributes(parent, children) { 4851 this._setAttributeIfNotExists(parent, "role", "tablist"); 4852 for (const child of children) { 4853 this._setInitialAttributesOnChild(child); 4854 } 4855 } 4856 _setInitialAttributesOnChild(child) { 4857 child = this._getInnerElement(child); 4858 const isActive = this._elemIsActive(child); 4859 const outerElem = this._getOuterElement(child); 4860 child.setAttribute("aria-selected", isActive); 4861 if (outerElem !== child) { 4862 this._setAttributeIfNotExists(outerElem, "role", "presentation"); 4863 } 4864 if (!isActive) { 4865 child.setAttribute("tabindex", "-1"); 4866 } 4867 this._setAttributeIfNotExists(child, "role", "tab"); 4868 this._setInitialAttributesOnTargetPanel(child); 4869 } 4870 _setInitialAttributesOnTargetPanel(child) { 4871 const target = SelectorEngine.getElementFromSelector(child); 4872 if (!target) { 4873 return; 4874 } 4875 this._setAttributeIfNotExists(target, "role", "tabpanel"); 4876 if (child.id) { 4877 this._setAttributeIfNotExists(target, "aria-labelledby", `${child.id}`); 4878 } 4879 }
vendor: 6,099 bytes, lines 4880-5079
4880 _toggleDropDown(element, open) { 4881 const outerElem = this._getOuterElement(element); 4882 if (!outerElem.classList.contains(CLASS_DROPDOWN)) { 4883 return; 4884 } 4885 const toggle = (selector, className) => { 4886 const element2 = SelectorEngine.findOne(selector, outerElem); 4887 if (element2) { 4888 element2.classList.toggle(className, open); 4889 } 4890 }; 4891 toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE); 4892 toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1); 4893 outerElem.setAttribute("aria-expanded", open); 4894 } 4895 _setAttributeIfNotExists(element, attribute, value) { 4896 if (!element.hasAttribute(attribute)) { 4897 element.setAttribute(attribute, value); 4898 } 4899 } 4900 _elemIsActive(elem) { 4901 return elem.classList.contains(CLASS_NAME_ACTIVE); 4902 } 4903 // Try to get the inner element (usually the .nav-link) 4904 _getInnerElement(elem) { 4905 return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem); 4906 } 4907 // Try to get the outer element (usually the .nav-item) 4908 _getOuterElement(elem) { 4909 return elem.closest(SELECTOR_OUTER) || elem; 4910 } 4911 // Static 4912 static jQueryInterface(config) { 4913 return this.each(function() { 4914 const data = Tab.getOrCreateInstance(this); 4915 if (typeof config !== "string") { 4916 return; 4917 } 4918 if (data[config] === void 0 || config.startsWith("_") || config === "constructor") { 4919 throw new TypeError(`No method named "${config}"`); 4920 } 4921 data[config](); 4922 }); 4923 } 4924} 4925EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) { 4926 if (["A", "AREA"].includes(this.tagName)) { 4927 event.preventDefault(); 4928 } 4929 if (isDisabled(this)) { 4930 return; 4931 } 4932 Tab.getOrCreateInstance(this).show(); 4933}); 4934EventHandler.on(window, EVENT_LOAD_DATA_API, () => { 4935 for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) { 4936 Tab.getOrCreateInstance(element); 4937 } 4938}); 4939defineJQueryPlugin(Tab); 4940const NAME = "toast"; 4941const DATA_KEY = "bs.toast"; 4942const EVENT_KEY = `.${DATA_KEY}`; 4943const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`; 4944const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`; 4945const EVENT_FOCUSIN = `focusin${EVENT_KEY}`; 4946const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`; 4947const EVENT_HIDE = `hide${EVENT_KEY}`; 4948const EVENT_HIDDEN = `hidden${EVENT_KEY}`; 4949const EVENT_SHOW = `show${EVENT_KEY}`; 4950const EVENT_SHOWN = `shown${EVENT_KEY}`; 4951const CLASS_NAME_FADE = "fade"; 4952const CLASS_NAME_HIDE = "hide"; 4953const CLASS_NAME_SHOW = "show"; 4954const CLASS_NAME_SHOWING = "showing"; 4955const DefaultType = { 4956 animation: "boolean", 4957 autohide: "boolean", 4958 delay: "number" 4959}; 4960const Default = { 4961 animation: true, 4962 autohide: true, 4963 delay: 5e3 4964}; 4965class Toast extends BaseComponent { 4966 constructor(element, config) { 4967 super(element, config); 4968 this._timeout = null; 4969 this._hasMouseInteraction = false; 4970 this._hasKeyboardInteraction = false; 4971 this._setListeners(); 4972 } 4973 // Getters 4974 static get Default() { 4975 return Default; 4976 } 4977 static get DefaultType() { 4978 return DefaultType; 4979 } 4980 static get NAME() { 4981 return NAME; 4982 } 4983 // Public 4984 show() { 4985 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW); 4986 if (showEvent.defaultPrevented) { 4987 return; 4988 } 4989 this._clearTimeout(); 4990 if (this._config.animation) { 4991 this._element.classList.add(CLASS_NAME_FADE); 4992 } 4993 const complete = () => { 4994 this._element.classList.remove(CLASS_NAME_SHOWING); 4995 EventHandler.trigger(this._element, EVENT_SHOWN); 4996 this._maybeScheduleHide(); 4997 }; 4998 this._element.classList.remove(CLASS_NAME_HIDE); 4999 reflow(this._element); 5000 this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING); 5001 this._queueCallback(complete, this._element, this._config.animation); 5002 } 5003 hide() { 5004 if (!this.isShown()) { 5005 return; 5006 } 5007 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE); 5008 if (hideEvent.defaultPrevented) { 5009 return; 5010 } 5011 const complete = () => { 5012 this._element.classList.add(CLASS_NAME_HIDE); 5013 this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW); 5014 EventHandler.trigger(this._element, EVENT_HIDDEN); 5015 }; 5016 this._element.classList.add(CLASS_NAME_SHOWING); 5017 this._queueCallback(complete, this._element, this._config.animation); 5018 } 5019 dispose() { 5020 this._clearTimeout(); 5021 if (this.isShown()) { 5022 this._element.classList.remove(CLASS_NAME_SHOW); 5023 } 5024 super.dispose(); 5025 } 5026 isShown() { 5027 return this._element.classList.contains(CLASS_NAME_SHOW); 5028 } 5029 // Private 5030 _maybeScheduleHide() { 5031 if (!this._config.autohide) { 5032 return; 5033 } 5034 if (this._hasMouseInteraction || this._hasKeyboardInteraction) { 5035 return; 5036 } 5037 this._timeout = setTimeout(() => { 5038 this.hide(); 5039 }, this._config.delay); 5040 } 5041 _onInteraction(event, isInteracting) { 5042 switch (event.type) { 5043 case "mouseover": 5044 case "mouseout": { 5045 this._hasMouseInteraction = isInteracting; 5046 break; 5047 } 5048 case "focusin": 5049 case "focusout": { 5050 this._hasKeyboardInteraction = isInteracting; 5051 break; 5052 } 5053 } 5054 if (isInteracting) { 5055 this._clearTimeout(); 5056 return; 5057 } 5058 const nextElement = event.relatedTarget; 5059 if (this._element === nextElement || this._element.contains(nextElement)) { 5060 return; 5061 } 5062 this._maybeScheduleHide(); 5063 } 5064 _setListeners() { 5065 EventHandler.on(this._element, EVENT_MOUSEOVER, (event) => this._onInteraction(event, true)); 5066 EventHandler.on(this._element, EVENT_MOUSEOUT, (event) => this._onInteraction(event, false)); 5067 EventHandler.on(this._element, EVENT_FOCUSIN, (event) => this._onInteraction(event, true)); 5068 EventHandler.on(this._element, EVENT_FOCUSOUT, (event) => this._onInteraction(event, false)); 5069 } 5070 _clearTimeout() { 5071 clearTimeout(this._timeout); 5072 this._timeout = null; 5073 } 5074 // Static 5075 static jQueryInterface(config) { 5076 return this.each(function() { 5077 const data = Toast.getOrCreateInstance(this, config); 5078 if (typeof config === "string") { 5079 if (typeof data[config] === "undefined") {
5080 throw new TypeError(`No method named "${config}"`); 5081 } 5082 data[config](this); 5083 } 5084 }); 5085 } 5086} 5087enableDismissTrigger(Toast); 5088defineJQueryPlugin(Toast); 5089var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; 5090function getDefaultExportFromCjs(x) { 5091 return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x; 5092} 5093var hcOffcanvasNav$1 = { exports: {} }; 5094(function(module) { 5095 !function(e, t) { 5096 { 5097 if (!e.document) 5098 throw new Error("HC Off-canvas Nav requires a browser to run."); 5099 module.exports = t(e); 5100 } 5101 }("undefined" != typeof window ? window : commonjsGlobal, function(re) { 5102 function i(e, t) { 5103 if (t = t || {}, !(e = "string" == typeof e ? "#" === e.charAt(0) && -1 === e.indexOf(" ") ? ie.querySelector(e) : ie.querySelectorAll(e) : e)) 5104 return false; 5105 var ee = i.Helpers; 5106 void 0 !== t.maxWidth && (ee.deprecated("maxWidth", "disableAt", "option"), t.disableAt = t.maxWidth); 5107 var te = Object.assign({}, { width: 280, height: "auto", disableAt: false, pushContent: null, swipeGestures: true, expanded: false, position: "left", levelOpen: "overlap", levelSpacing: 40, levelTitles: true, closeOpenLevels: true, closeActiveLevel: false, navTitle: null, navClass: "", disableBody: true, closeOnClick: true, closeOnEsc: true, customToggle: null, activeToggleClass: null, bodyInsert: "prepend", keepClasses: true, removeOriginalNav: false, rtl: false, insertClose: true, insertBack: true, levelTitleAsBack: true, labelClose: "", labelBack: "Back" }, t); 5108 function ne(e2) { 5109 if (ae.length) { 5110 for (var t2 = false, n3 = (e2 = "string" == typeof e2 ? [e2] : e2).length, a3 = 0; a3 < n3; a3++) 5111 -1 !== ae.indexOf(e2[a3]) && (t2 = true); 5112 return t2; 5113 } 5114 } 5115 function n2(e2) { 5116 if (e2.querySelector("ul") || "UL" === e2.tagName) { 5117 var b = "hc-nav-" + ++oe, s = ee.printStyle("hc-offcanvas-" + oe + "-style"), o = "keydown.hcOffcanvasNav", v = te.activeToggleClass || "toggle-open", u = ee.createElement("nav", { id: b }), d = ee.createElement("div", { class: "nav-container" }); 5118 u.addEventListener("click", ee.stopPropagation), u.appendChild(d); 5119 var n3, p, a3, f = null, h = null, m = null, t2 = {}, g = false, y = false, E = null, L = 0, A = 0, x = 0, C = null, O = {}, k = [], N = false, T = [], r2 = null, i2 = null, l = false, c = false; 5120 te.customToggle ? f = ee.getElements(te.customToggle) : (f = [ee.createElement("a", { href: "#" }, ee.createElement("span"))], e2.insertAdjacentElement("afterend", f[0])), f && f.length && f.forEach(function(e3) { 5121 e3.addEventListener("click", J(e3)), e3.classList.add("hc-nav-trigger", b), e3.setAttribute("role", "button"), e3.setAttribute("aria-label", (te.ariaLabels || {}).open), e3.setAttribute("aria-controls", b), e3.setAttribute("aria-expanded", false), e3.addEventListener("keydown", function(e4) { 5122 "Enter" !== e4.key && 13 !== e4.keyCode || setTimeout(function() { 5123 w(0, 0); 5124 }, 0); 5125 }); 5126 }); 5127 var w = function(e3, t3, n4) { 5128 var a4, r3, i3, s2; 5129 "number" != typeof t3 || "number" != typeof e3 && !T.length || (a4 = Array.prototype.filter.call(d.querySelectorAll(".nav-wrapper"), function(e4) { 5130 return e4.getAttribute("data-level") == t3 && ("number" != typeof n4 || "number" == typeof n4 && e4.getAttribute("data-index") == n4); 5131 })[0], a4 = ee.children(a4, ".nav-content")[0], r3 = ee.children(a4, ".nav-close, .nav-back"), a4 = ee.children(a4, "ul"), a4 = ee.children(a4, "li"), a4 = ee.children(a4, ":not(.nav-wrapper)"), a4 = [].concat(r3, a4), a4 = Array.prototype.map.call(a4, function(e4) { 5132 return Array.prototype.slice.call(e4.querySelectorAll('[tabindex="0"], a[role="menuitem"], a[href], button, textarea, input[type="text"], input[type="radio"], input[type="checkbox"], select')); 5133 }).flat(), (a4 = Array.prototype.filter.call(a4, function(e4) { 5134 return "-1" !== e4.getAttribute("tabindex"); 5135 })) && (u.classList.add("user-is-tabbing"), i3 = a4[0], s2 = a4[a4.length - 1], "number" == typeof e3 ? a4[e3].focus() : (T[T.length - 1].focus(), T.pop()), ie.removeEventListener(o), ie.addEventListener(o, function(e4) { 5136 "Tab" !== e4.key && 9 !== e4.keyCode || (e4.shiftKey ? ie.activeElement === i3 && (e4.preventDefault(), s2.focus()) : ie.activeElement === s2 && (e4.preventDefault(), i3.focu
5136s())); 5137 }))); 5138 }, S = function() { 5139 ie.removeEventListener(o), h && setTimeout(function() { 5140 h.focus(); 5141 }, p); 5142 }, M = function() { 5143 d.style.transition = "none", u.style.display = "block"; 5144 var e3 = ee.formatSizeVal(A = d.offsetWidth), t3 = ee.formatSizeVal(x = d.offsetHeight); 5145 s.add(".hc-offcanvas-nav." + b + ".nav-position-left .nav-container", "transform: translate3d(-" + e3 + ", 0, 0)"), s.add(".hc-offcanvas-nav." + b + ".nav-position-right .nav-container", "transform: translate3d(" + e3 + ", 0, 0)"), s.add(".hc-offcanvas-nav." + b + ".nav-position-top .nav-container", "transform: translate3d(0, -" + t3 + ", 0)"), s.add(".hc-offcanvas-nav." + b + ".nav-position-bottom .nav-container", "transform: translate3d(0, " + t3 + ", 0)"), s.insert(), u.style.display = "", d.style.transition = "", n3 = re.getComputedStyle(d).transitionProperty, p = ee.toMs(re.getComputedStyle(d).transitionDuration), a3 = re.getComputedStyle(d).transitionTimingFunction, te.pushContent && m && n3 && s.add(ee.getElementCssTag(m), "transition: " + n3 + " " + p + "ms " + a3), s.insert(); 5146 }, j = function(e3) { 5147 var t3 = !!f && re.getComputedStyle(f[0]).display, n4 = !!te.disableAt && "max-width: " + (te.disableAt - 1) + "px", a4 = ee.formatSizeVal(te.width), r3 = ee.formatSizeVal(te.height), i3 = ee.formatSizeVal(te.levelSpacing); 5148 !ee.isNumeric(a4) && -1 === a4.indexOf("px") || (A = parseInt(a4)), !ee.isNumeric(r3) && -1 === r3.indexOf("px") || (x = parseInt(r3)), ne(["disableAt", "position"]) && s.reset(), s.add(".hc-offcanvas-nav." + b, "display: block", n4), s.add(".hc-nav-original." + b, "display: none", n4), t3 && s.add(".hc-nav-trigger." + b, "display: " + (t3 && "none" !== t3 ? t3 : "block"), n4), -1 !== ["left", "right"].indexOf(te.position) ? s.add(".hc-offcanvas-nav." + b + " .nav-container", "width: " + a4) : s.add(".hc-offcanvas-nav." + b + " .nav-container", "height: " + r3), s.add(".hc-offcanvas-nav." + b + ".nav-position-left .nav-container", "transform: translate3d(-" + a4 + ", 0, 0);"), s.add(".hc-offcanvas-nav." + b + ".nav-position-right .nav-container", "transform: translate3d(" + a4 + ", 0, 0);"), s.add(".hc-offcanvas-nav." + b + ".nav-position-top .nav-container", "transform: translate3d(0, -" + r3 + ", 0);"), s.add(".hc-offcanvas-nav." + b + ".nav-position-bottom .nav-container", "transform: translate3d(0, " + r3 + ", 0);"), s.add(".hc-offcanvas-nav." + b + ".nav-levels-overlap.nav-position-left li.level-open > .nav-wrapper", "transform: translate3d(-" + i3 + ", 0, 0)", n4), s.add(".hc-offcanvas-nav." + b + ".nav-levels-overlap.nav-position-right li.level-open > .nav-wrapper", "transform: translate3d(" + i3 + ", 0, 0)", n4), s.add(".hc-offcanvas-nav." + b + ".nav-levels-overlap.nav-position-top li.level-open > .nav-wrapper", "transform: translate3d(0, -" + i3 + ", 0)", n4), s.add(".hc-offcanvas-nav." + b + ".nav-levels-overlap.nav-position-bottom li.level-open > .nav-wrapper", "transform: translate3d(0, " + i3 + ", 0)", n4), s.insert(), e3 && !ne("pushContent") || (m = te.pushContent ? ee.getElements(te.pushContent)[0] : null), d.style.transition = "none"; 5149 n4 = u.classList.contains(le), n4 = ["hc-offcanvas-nav", te.navClass || "", b, "nav-levels-" + (te.levelOpen || "none"), "nav-position-" + te.position, te.disableBody ? "disable-body" : "", ee.isIos ? "is-ios" : "", ee.isTouchDevice ? "touch-device" : "", n4 ? le : "", te.rtl ? "rtl" : "", true !== te.insertClose || te.labelClose ? "" : "nav-close-button-empty"].join(" ").trim().replace(/ +/g, " "); 5150 u.removeEventListener("click"), u.className = n4, u.setAttribute("aria-hidden", true), ie.documentElement.style.setProperty("--nav-level-spacing", te.levelSpacing + "px"), te.disableBody && u.addEventListener("click", $), e3 ? M() : setTimeout(M, 0); 5151 }, P = function() { 5152 t2 = function l2(e3, t3) { 5153 var n4 = []; 5154 Array.prototype.forEach.call(e3, function(e4) { 5155 var o2; 5156 ("UL" === e4.tagName || e4 instanceof HTMLHeadingElement) && (
5156o2 = { tagName: e4.tagName, id: t3, htmlClass: e4.getAttribute("class") || null, items: [] }, e4 instanceof HTMLHeadingElement ? o2.content = ee.clone(e4, false, true) : (null !== e4.getAttribute("data-nav-active") && (E = t3, e4.removeAttribute("data-nav-active")), Array.prototype.forEach.call(e4.children, function(e5) { 5157 var t4 = null !== e5.getAttribute("data-nav-custom-content"), n5 = t4 ? e5.childNodes : Array.prototype.filter.call(e5.children, function(e6) { 5158 return "UL" !== e6.tagName && !e6.querySelector("ul"); 5159 }).concat(e5.children.length ? [] : [e5.firstChild]), a4 = t4 ? [] : Array.prototype.slice.call(e5.querySelectorAll("ul")), r3 = a4.length ? [].concat(Array.prototype.filter.call(a4[0].parentNode.children, function(e6) { 5160 return "UL" === e6.tagName || e6 instanceof HTMLHeadingElement; 5161 })) : [], a4 = null; 5162 if (!n5.length) { 5163 for (var i3 = "", s2 = 0; s2 < e5.childNodes.length; s2++) 5164 e5.childNodes[s2].nodeType === Node.TEXT_NODE && (i3 += e5.childNodes[s2].textContent.trim()); 5165 n5 = [ie.createTextNode(i3)]; 5166 } 5167 r3.length && (ee.data(e5, "hc-uniqid") ? a4 = ee.data(e5, "hc-uniqid") : (a4 = Math.random().toString(36).substr(2), ee.data(e5, "hc-uniqid", a4))), null !== e5.getAttribute("data-nav-active") && (E = a4, e5.removeAttribute("data-nav-active")), o2.items.push({ id: a4, htmlClass: e5.getAttribute("class") || "", content: n5, custom: t4, subnav: r3.length ? l2(r3, a4) : [], highlight: null !== e5.getAttribute("data-nav-highlight") }); 5168 })), n4.push(o2)); 5169 }); 5170 return n4; 5171 }("UL" === e2.tagName ? [e2] : Array.prototype.filter.call(e2.children, function(e3) { 5172 return "UL" === e3.tagName || e3 instanceof HTMLHeadingElement; 5173 }), null); 5174 }, _ = function(e3) { 5175 if (e3) { 5176 for (; d.firstChild; ) 5177 d.removeChild(d.firstChild); 5178 O = {}; 5179 } 5180 !function p2(n4, e4, f2, h2, t3, a4) { 5181 var m2 = ee.createElement("div", { class: "nav-wrapper nav-wrapper-" + f2, "data-level": f2, "data-index": t3 || 0 }); 5182 var r3 = ee.createElement("div", { class: "nav-content" }); 5183 m2.addEventListener("click", ee.stopPropagation); 5184 m2.appendChild(r3); 5185 e4.appendChild(m2); 5186 h2 && (0 === f2 || 0 < f2 && "overlap" === te.levelOpen) && (e4 = "string" == typeof h2 ? h2 : ee.clone(re.jQuery && h2 instanceof re.jQuery && h2.length ? h2[0] : h2, true, true), r3.insertBefore(ee.createElement("h2", { id: 0 === f2 ? b + "-nav-title" : null, class: 0 === f2 ? "nav-title" : "level-title" }, e4), r3.firstChild), 0 === f2 && "string" == typeof h2 && u.setAttribute("aria-labelledby", b + "-nav-title")); 5187 var i3 = -1; 5188 n4.forEach(function(e5, t4) { 5189 var d2; 5190 "UL" === e5.tagName ? (i3++, d2 = ee.createElement("ul", { id: e5.id ? 1 < n4.length ? "menu-" + e5.id + "-" + i3 : "menu-" + e5.id : null, role: "menu", "aria-level": f2 + 1 }), r3.appendChild(d2), te.keepClasses && e5.htmlClass && d2.classList.add.apply(d2.classList, e5.htmlClass.split(" ")), e5.items.forEach(function(t5, e6) { 5191 var n5 = t5.content; 5192 if (t5.custom) { 5193 var a5 = ee.createElement("li", { class: "nav-item nav-item-custom" }, ee.createElement("div", { class: "nav-custom-content" }, Array.prototype.map.call(n5, function(e7) { 5194 return ee.clone(e7, true, true); 5195 }))); 5196 return te.keepClasses && t5.htmlClass && a5.classList.add.apply(a5.classList, t5.htmlClass.split(" ")), void d2.appendChild(a5); 5197 } 5198 var r4, i4 = Array.prototype.filter.call(n5, function(e7) { 5199 return "A" === e7.tagName || e7.nodeType !== Node.TEXT_NODE && e7.querySelector("a"); 5200 })[0]; 5201 i4 ? (r4 = ee.clone(i4, false, true)).classList.add("nav-item-link") : r4 = ee.createElement(t5.subnav.length ? "a" : "span", { class: "nav-item-link" }, Array.prototype.map.call(n5, function(e7) { 5202 return ee.clone(e7, true, true); 5203 })), "A" === r4.tagName && (r4.setAttribute("tabindex", "0"), r4.setAttribute("role", "menuitem"), r4.getAttribute("href") || r4.setAttribute("href", "#")), i4 && r4.addEventListener("click", function(e7) { 5204 e7.stopPropagation(), ee.hasListener(i4, "click") && i4.click(); 5205 }), "#" === r4.getAttribute("href") && r4.addEventListener("click", ee.preventDefault), te.closeOnClick && (W() ? "A" !== r4.tagName || "false" === r4.dataset.navClose || null !== r4.getAttribute("disabled") && "false" !== r4.getAttribute("disabled") || t5.subnav.length && (!r4.getAttribute("href") || "#" === r4.getAttribute("href").charAt(0)) || r4.addEventListener("click", $) : "A" !== r4.tagName || "false" === r4.dataset.navClose || null !== r4.getAttribute("disabled") && "false" !== r4.getAttribute("disabled") || r4.addEventListener("click", $)); 5206 var s3, o3, l3, c2, v2, u2 = ee.createElement("li", { class: "nav-item" }); 5207 u2.appendChild(r4), d2.appendChild(u2), te.keepClasse
5207s && t5.htmlClass && u2.classList.add.apply(u2.classList, t5.htmlClass.split(" ")), t5.highlight && u2.classList.add("nav-highlight"), ee.wrap(r4, ee.createElement("div", { class: "nav-item-wrapper" })), t5.subnav.length && (s3 = f2 + 1, o3 = t5.id, l3 = "", O[s3] || (O[s3] = 0), u2.classList.add("nav-parent"), W() ? (c2 = O[s3], (v2 = ee.createElement("input", { type: "checkbox", id: b + "-" + s3 + "-" + c2, class: "hc-chk", tabindex: -1, "data-level": s3, "data-index": c2, value: o3 })).addEventListener("click", ee.stopPropagation), v2.addEventListener("change", Q), u2.insertBefore(v2, u2.firstChild), a5 = function(e7) { 5208 e7.addEventListener("click", function(e8) { 5209 e8.stopPropagation(), v2.setAttribute("checked", "true" !== v2.getAttribute("checked")), "createEvent" in ie && ((e8 = ie.createEvent("HTMLEvents")).initEvent("change", false, true), v2.dispatchEvent(e8)); 5210 }), e7.addEventListener("keydown", function(e8) { 5211 "Enter" !== e8.key && 13 !== e8.keyCode || (N = true, T.push(this)); 5212 }), e7.setAttribute("aria-controls", 1 < t5.subnav.length ? t5.subnav.filter(function(e8) { 5213 return "UL" === e8.tagName; 5214 }).map(function(e8, t6) { 5215 return "menu-" + e8.id + "-" + t6; 5216 }).join(" ") : "menu-" + o3), e7.setAttribute("aria-haspopup", "overlap" === te.levelOpen), e7.setAttribute("aria-expanded", false); 5217 }, -1 !== k.indexOf(o3) && (m2.classList.add("sub-level-open"), m2.addEventListener("click", function() { 5218 return Z(s3, c2); 5219 }), u2.classList.add("level-open"), v2.setAttribute("checked", true)), l3 = true === te.levelTitles ? n5[0].textContent.trim() : "", r4.getAttribute("href") && "#" !== r4.getAttribute("href") ? ((n5 = ee.createElement("a", { href: "#", class: "nav-next", "aria-label": (te.ariaLabels || {}).submenu + ": " + l3, role: "menuitem", tabindex: 0 }, ee.createElement("span"))).addEventListener("click", ee.preventClick()), a5(n5), te.rtl ? r4.parentNode.appendChild(n5) : r4.parentNode.insertBefore(n5, r4.nextSibling)) : (r4.appendChild(ee.createElement("span", { class: "nav-next" }, ee.createElement("span"))), a5(r4))) : r4.setAttribute("aria-expanded", true), O[s3]++, p2(t5.subnav, u2, s3, l3, O[s3] - 1, "string" == typeof h2 ? h2 : "")); 5220 })) : r3.appendChild(e5.content); 5221 }); 5222 f2 && void 0 !== t3 && false !== te.insertBack && "overlap" === te.levelOpen && (s2 = ee.children(r3, "ul"), a4 = te.levelTitleAsBack && a4 || te.labelBack || "", l2 = ee.createElement("a", { href: "#", class: "nav-back-button", role: "menuitem", tabindex: 0 }, [a4, ee.createElement("span")]), true === te.insertBack || 0 === te.insertBack ? (a4 = ee.createElement("div", { class: "nav-back" }, l2), r3.insertBefore(a4, ee.children(r3, ":not(.level-title)")[0])) : (o2 = ee.createElement("li", { class: "nav-item nav-back" }, l2), ee.insertAt(o2, true === te.insertBack ? 0 : te.insertBack, s2)), o2 = function() { 5223 return Z(f2, t3); 5224 }, ee.wrap(l2, ee.createElement("div", { class: "nav-item-wrapper" })), l2.addEventListener("click", ee.preventClick(o2)), l2.addEventListener("keydown", function(e5) { 5225 "Enter" !== e5.key && 13 !== e5.keyCode || (N = true); 5226 })); 5227 { 5228 var s2, o2, l2; 5229 0 === f2 && false !== te.insertClose && ((s2 = ee.createElement("a", { href: "#", class: "nav-close-button" + (te.labelClose ? " has-label" : ""), role: "menuitem", tabindex: 0, "aria-label": te.labelClose ? "" : (te.ariaLabels || {}).close }, [te.labelClose || "", ee.createElement("span")])).addEventListener("click", ee.preventClick($)), s2.addEventListener("keydown", function(e5) { 5230 "Enter" !== e5.key && 13 !== e5.keyCode || S(); 5231 }), h2 && true === te.insertClose ? r3.insertBefore(ee.createElement("div", { class: "nav-close" }, s2), r3.children[1]) : true === te.insertClose ? r3.insertBefore(ee.createElement("div", { class: "nav-close" }, s2), r3.firstChild) : (o2 = ee.children(r3, "ul"), l2 = ee.createElement("li", { class: "nav-item nav-close" }, s2), ee.wrap(s2, ee.createElement("div", { class: "nav-item-wrapper" })), ee.insertAt(l2, te.insertClose, o2))); 5232 } 5233 }(t2, d, 0, te.navTitle); 5234 }, B = function(t3) { 5235 return function(e3) { 5236 "left" !== te.position && "right" !== te.position || (r2 = e3.touches[0].clientX, i2 = e3.touches[0].clientY, "doc" === t3 ? c || (ie.addEventListener("touchmove", D, ee.supportsPassive), ie.addEventListener("touchend", U, ee.supportsPassive)) : (c = true, d.addEventListener("touchmove", z, ee.supportsPassive), d.addEventListener("touchend", I, ee.supportsPassive))); 5237 }; 5238 }, q = function(e3, t3) { 5239 re.addEventListener("touchmove", ee.preventDefault, ee.supportsPassive), u.style.visibility = "visible", d.style[ee.browserPrefix("transition")] = "none", ee.setTransform(d, e3, te.position), m && (m.style[ee.browserPrefix("transition")] = "none", ee.setTransform(m, t3, te.position)); 5240 }, H = function(e3, t3, n4, a4) { 5241 void 0 === t3 && (t3 = true), void 0 === n4 && (n4 = false), void 0 === a4 && (a4 = false), re.removeEventListener("touchmove", ee.preventDefault, ee.supportsPassive), d.style[ee.browserPrefix("transition")] = "", ee.setTransform(d, n4, te.position), m && (m.style[ee.browserPrefix("transition")] = "", ee.setTransform(m, a4, te.position)), "open" === e3 ? K() : ($(), t3 ? setTimeout(function() { 5242 u.style.visibility = ""; 5243 }, p) : u.style.visibility = ""); 5244 }, D = function(e3) { 5245 var t3 = 0 - (r2 - e3.touches[0].clientX), e3 = "overlap" === te.levelOpen ? Y() * te.levelSpacing : 0, e3 = A + e3, t3 = "left" === te.position ? Math.min(Math.max(t3, 0), e3) : Math.abs(Math.min(Math.max(t3, -e3), 0)); 5246 ("left" === te.position && r2 < 50 || "right" === te.position && r2 > ie.body.clientWidth - 50) && (l = true, q(0 - (A - t3), Math.abs(t3))); 5247 }, U = function e3(t3) { 5248 var n4; 5249 ie.removeEventListener("touchmove", D), ie.removeEventListener("touchend", e3), l && (n4 = t3.changedTouches[t3.changedTouches.length - 1], t3 = 0 - (r2 - n4.clientX), n4 = "overlap" === te.levelOpen ? Y() * te.levelSpacing : 0, n4 = A + n4, (t3 = "left" === te.position ? Math.min(Math.max(t3, 0), n4) : Math.abs(Math.min(Math.max(t3, -n4), 0))) ? H(70 < t3 ? "open" : "close") : H("close", false), i2 = r2 = null, l = false); 5250 }, z = function(e3) { 5251 var t3 = 0 - (r2 - e3.touches[0].clientX), n4 = 0 - (i2 - e3.touches[0].clientY); 5252 Math.abs(t3) < Math.abs(n4) || (e3 = "overlap" === te.levelOpen ? Y() * te.levelSpacing : 0, n4 = A + e3, t3 = "left" === te.position ? Math.min(Math.max(t3, -n4), 0) : Math.min(Math.max(t3, 0), n4), ("left" === te.position && t3 < 0 || "right" === te.position && 0 < t3) && (l = true, q(-Math.abs(t3) + e3, n4 - Math.abs(t3)))); 5253 }, I = function e3(t3) { 5254 var n4, a4; 5255 d.removeEventListener("touchmove", z), d.removeEventListener("touchend", e3), c = false, l && (n4 = t3.changedTouches[t3.changedTouches.length - 1], a4 = 0 - (r2 - n4.clientX), t3 = "overlap" === te.levelOpen ? Y() * te.levelSpacing : 0, n4 = A + t3, (a4 = "left" === te.position ? Math.abs(Math.min(Math.max(a4, -n4), 0)) : Math.abs(Math.min(Math.max(a4, 0), n4))) === n4 ? H("close", false) : 50 < a4 ? H("close") : H("open", true, t3, n4), i2 = r2 = null, l = false); 5256 }; 5257 j(), P(), _(), true === te.removeOriginalNav ? e2.parentNode.removeChild(e2) : e2.classList.add("hc-nav-original", b), "prepend" === te.bodyInsert ? ie.body.insertBefore(u, ie.body.firstChild) : "append" === te.bodyInsert && ie.body.appendChild(u), true === te.expanded && (y = true, K()), te.swipeGestures && (d.addEventListener("touchstart", B("nav"), ee.supportsPassive), ie.addEventListener("touchstart", B("doc"), ee.supportsPassive)), te.closeOnEsc && ie.addEventListener("keydown", function(e3) { 5258 !g || "Escape" !== e3.key && 27 !== e3.keyCode || (0 === (e3 = Y()) ? ($(), S()) : (Z(e3, G()), w(null, e3 - 1))); 5259 }); 5260 B = ee.debounce(M, 500); 5261 re.addEventListener("resize", B, ee.supportsPassive); 5262 var X = function(e3, t3, n4) { 5263 var a4, r3, i3 = ie.querySelector("#" + b + "-" + e3 + "-" + t3); 5264 i3 && (a4 = i3.value, t3 = (r3 = i3.parentNode).closest(".
5264nav-wrapper"), i3.setAttribute("checked", false), t3.classList.remove("sub-level-open"), r3.classList.remove("level-open"), r3.querySelectorAll("[aria-controls]")[0].setAttribute("aria-expanded", false), -1 !== k.indexOf(a4) && k.splice(k.indexOf(a4), 1), n4 && "overlap" === te.levelOpen && (t3.removeEventListener("click"), t3.addEventListener("click", ee.stopPropagation), ee.setTransform(d, (e3 - 1) * te.levelSpacing, te.position), m && (t3 = "x" === ee.getAxis(te.position) ? A : x, ee.setTransform(m, t3 + (e3 - 1) * te.levelSpacing, te.position)))); 5265 }; 5266 return u.on = function(e3, t3) { 5267 u.addEventListener(e3, t3); 5268 }, u.off = function(e3, t3) { 5269 u.removeEventListener(e3, t3); 5270 }, u.getSettings = function() { 5271 return Object.assign({}, te); 5272 }, u.isOpen = F, u.open = K, u.close = $, u.toggle = J(null), u.update = function(e3, t3) { 5273 if (ae = [], "object" == typeof e3) { 5274 for (var n4 in e3) 5275 te[n4] !== e3[n4] && ae.push(n4); 5276 te = Object.assign({}, te, e3); 5277 } 5278 true === e3 || true === t3 ? te.removeOriginalNav ? console.warn("%c! HC Offcanvas Nav:%c Can't update because original navigation has been removed. Disable `removeOriginalNav` option.", "color: #fa253b", "color: default") : (j(true), P(), _(true)) : (j(true), _(true)); 5279 }, u; 5280 } 5281 function Q() { 5282 var e3 = Number(this.dataset.level), t3 = Number(this.dataset.index); 5283 ("true" === this.getAttribute("checked") ? R : Z)(e3, t3); 5284 } 5285 function V(e3) { 5286 e3.classList.remove(v), e3.setAttribute("aria-expanded", false); 5287 } 5288 function W() { 5289 return false !== te.levelOpen && "none" !== te.levelOpen; 5290 } 5291 function F() { 5292 return g; 5293 } 5294 function Y() { 5295 return k.length ? Number(Array.prototype.filter.call(d.querySelectorAll(".hc-chk"), function(e3) { 5296 return e3.value == k[k.length - 1]; 5297 })[0].dataset.level) : 0; 5298 } 5299 function G() { 5300 return k.length ? Number(Array.prototype.filter.call(d.querySelectorAll(".hc-chk"), function(e3) { 5301 return e3.value == k[k.length - 1]; 5302 })[0].dataset.index) : 0; 5303 } 5304 function K(e3, t3) { 5305 var n4, a4; 5306 if ((!g || void 0 !== t3) && (g || (g = true, u.style.visibility = "visible", u.setAttribute("aria-hidden", false), u.classList.add(le), f && (f.forEach(V), h && (h.classList.add(v), h.setAttribute("aria-expanded", true))), "expand" === te.levelOpen && C && clearTimeout(C), te.disableBody && (L = re.pageYOffset || se.scrollTop || ie.documentElement.scrollTop || ie.body.scrollTop, ie.documentElement.scrollHeight > ie.documentElement.clientHeight && se.classList.add("hc-nav-yscroll"), ie.body.classList.add("hc-nav-open"), L && (ie.body.style.top = -L + "px")), m && (n4 = "x" === ee.getAxis(te.position) ? A : x, ee.setTransform(m, n4, te.position)), y ? y = false : (u._eventListeners.toggle && u._eventListeners.toggle.forEach(function(e4) { 5307 e4.fn(ee.customEventObject("toggle", u, u, { action: "open" }), Object.assign({}, te)); 5308 }), setTimeout(function() { 5309 u._eventListeners.open && u._eventListeners.open.forEach(function(e4) { 5310 e4.fn(ee.customEventObject("open", u, u), Object.assign({}, te)); 5311 }); 5312 }, p))), W())) { 5313 if ("number" != typeof e3 && !ee.isNumeric(e3) || "number" != typeof t3 && !ee.isNumeric(t3)) 5314 E ? (a4 = Array.prototype.filter.call(d.querySelectorAll(".hc-chk"), function(e4) { 5315 return e4.value == E; 5316 })[0], !te.closeActiveLevel && te.closeOpenLevels || (E = null)) : false === te.closeOpenLevels && (a4 = (a4 = Array.prototype.filter.call(d.querySelectorAll(".hc-chk"), function(e4) { 5317 return "true" === e4.getAttribute("checked"); 5318 }))[a4.length - 1]); 5319 else if (!(a4 = ie.querySelector("#" + b + "-" + e3 + "-" + t3))) 5320 return void console.warn("HC Offcanvas Nav: level " + e3 + " doesn't have index " + t3); 5321 if (a4) { 5322 var r3 = []; 5323 if (e3 = Number(a4.dataset.level), t3 = Number(a4.dataset.index), 1 < e3) { 5324 for (var i3 = []; a4 && a4 !== ie; a4 = a4.parentNode) 5325 a4.matches(".nav-wrapper") && i3.push(a4); 5326 for (var s2 = 0; s2 < i3.length; s2++) { 5327 var o2 = i3[s2], l2 = Number(o2.dataset.level); 5328 0 < l2 && r3.push({ level: l2, index: Number(o2.dataset.index) }); 5329 } 5330 r3 = r3.reverse(); 5331 } 5332 r3.push({ level: e3, index: t3 }); 5333 for (var c2 = 0; c2 < r3.length; c2++) 5334 R(r3[c2].level, r3[c2].index, false); 5335 } 5336 } 5337 } 5338 function $() { 5339 var e3; 5340 g && (g = false, m && ee.setTransform(m, false), u.classList.remove(le), u.classList.remove("user-is-tabbing"), u.setAttribute("aria-hidden", true), d.removeAttribute("style"), f && f.forEach(V), "expand" === te.levelOpen && -1 !== ["top", "bottom"].indexOf(te.position) ? Z(0) : W() && (C = setTimeout(function() { 5341 Z(0); 5342 }, "expand" === te.levelOpen ? p : 0)), te.disableBody && (ie.body.classList.remove("hc-nav-open"), se.classList.remove("hc-nav-yscroll"), L && (ie.body.style.top = "", ie.body.scrollTop = L, se.scrollTop = L, "bottom" === te.position && (e3 = L, setTimeout(function() { 5343 ie.body.scrollTop = e3, se.scrollTop = e3; 5344 }, 0)), L = 0)), u._eventListeners.toggle && u._eventListeners.toggle.forEach(function(e4) { 5345 e4.fn(ee.customEventObject("toggle", u, u, { action: "close" }), Object.assign({}, te)); 5346 }), setTimeout(function() { 5347 u.style.visibility = "", u._eventListeners.close && u._eventListeners.close.forEach(function(e4) { 5348 e4.fn(ee.customEventObject("close", u, u), Object.assign({}, te)); 5349 }), u._eventListeners["close.once"] && u._eventListeners["close.once"].forEach(function(e4) { 5350 e4.fn(ee.customEventObject("close.once", u, u), Object.assign({}, te)); 5351 }), u.removeEventListener("close.once"); 5352 }, p)); 5353 } 5354 function J(t3) { 5355 return function(e3) { 5356 e3 && (e3.preventDefault(), e3.stopPropagation()), t3 && (h = t3), (g ? $ : K)(); 5357 }; 5358 } 5359 function R(t3, n4, e3) { 5360 void 0 === e3 && (e3 = true); 5361 var a4 = ie.querySelector("#" + b + "-" + t3 + "-" + n4), r3 = a4.value, i3 = a4.parentNode, s2 = i3.closest(".
5361nav-wrapper"), o2 = ee.children(i3, ".nav-wrapper")[0]; 5362 false === e3 && (o2.style.transition = "none"), a4.setAttribute("checked", true), s2.classList.add("sub-level-open"), i3.classList.add("level-open"), i3.querySelectorAll("[aria-controls]")[0].setAttribute("aria-expanded", true), false === e3 && setTimeout(function() { 5363 o2.style.transition = ""; 5364 }, p), -1 === k.indexOf(r3) && k.push(r3), "overlap" === te.levelOpen && (s2.addEventListener("click", function() { 5365 return Z(t3, n4); 5366 }), ee.setTransform(d, t3 * te.levelSpacing, te.position), m && (s2 = "x" === ee.getAxis(te.position) ? A : x, ee.setTransform(m, s2 + t3 * te.levelSpacing, te.position))), u._eventListeners["open.level"] && u._eventListeners["open.level"].forEach(function(e4) { 5367 e4.fn(ee.customEventObject("open.level", u, o2, { currentLevel: t3, currentIndex: n4 }), Object.assign({}, te)); 5368 }), N && (w(0, t3, n4), N = false); 5369 } 5370 function Z(t3, e3) { 5371 for (var n4, a4 = t3; a4 <= Object.keys(O).length; a4++) 5372 if (a4 === t3 && void 0 !== e3) 5373 X(t3, e3, true); 5374 else if (0 !== t3 || te.closeOpenLevels) 5375 for (var r3 = 0; r3 < O[a4]; r3++) 5376 X(a4, r3, a4 === t3); 5377 else 5378 ; 5379 0 < t3 && u._eventListeners["close.level"] && (n4 = ie.querySelector("#" + b + "-" + t3 + "-" + e3).closest(".nav-wrapper"), u._eventListeners["close.level"].forEach(function(e4) { 5380 e4.fn(ee.customEventObject("close.level", u, n4, { currentLevel: t3 - 1, currentIndex: G() }), Object.assign({}, te)); 5381 })), N && (w(null, t3 - 1), N = false); 5382 } 5383 console.error("%c! HC Offcanvas Nav:%c Navigation must contain <ul> element.", "color: #fa253b", "color: default"); 5384 } 5385 te.ariaLabels = Object.assign({}, { open: "Open Menu", close: "Close Menu", submenu: "Submenu" }, t.ariaLabels); 5386 var ae = []; 5387 if (Array.isArray(e) || e instanceof NodeList) { 5388 for (var a2 = [], r = 0; r < e.length; r++) 5389 a2.push(n2(e[r])); 5390 return 1 < a2.length ? a2 : a2[0]; 5391 } 5392 return n2(e); 5393 } 5394 var n, a, ie = re.document, se = ie.getElementsByTagName("html")[0], oe = 0, le = "nav-open"; 5395 return void 0 !== re.jQuery && (n = re.jQuery, a = "hcOffcanvasNav", n.fn.extend({ hcOffcanvasNav: function(t) { 5396 return this.length ? this.each(function() { 5397 var e = n.data(this, a); 5398 e ? e.update(t) : (e = new i(this, t), n.data(this, a, e)); 5399 }) : this; 5400 } })), re.hcOffcanvasNav = re.hcOffcanvasNav || i, i; 5401 }), function(n) { 5402 var e = n.hcOffcanvasNav, o = n.document; 5403 "function" != typeof Object.assign && Object.defineProperty(Object, "assign", { value: function(e2, t2) { 5404 if (null == e2) 5405 throw new TypeError("Cannot convert undefined or null to object"); 5406 for (var n2 = Object(e2), a2 = 1; a2 < arguments.length; a2++) { 5407 var r2 = arguments[a2]; 5408 if (null != r2) 5409 for (var i2 in r2) 5410 Object.prototype.hasOwnProperty.call(r2, i2) && (n2[i2] = r2[i2]); 5411 } 5412 return n2; 5413 }, writable: true, configurable: true }), Element.prototype.closest || (Element.prototype.closest = function(e2) { 5414 var t2 = this; 5415 do { 5416 if (Element.prototype.matches.call(t2, e2)) 5417 return t2; 5418 } while (null !== (t2 = t2.parentElement || t2.parentNode) && 1 === t2.nodeType); 5419 return null; 5420 }), Array.prototype.flat || Object.defineProperty(Array.prototype, "flat", { configurable: true, value: function n2() { 5421 var a2 = isNaN(arguments[0]) ? 1 : Number(arguments[0]); 5422 return a2 ? Array.prototype.reduce.call(this, function(e2, t2) { 5423 return Array.isArray(t2) ? e2.push.apply(e2, n2.call(t2, a2 - 1)) : e2.push(t2), e2; 5424 }, []) : Array.prototype.slice.call(this); 5425 }, writable: true }), Element.prototype.matches || (Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector); 5426 var t = false;
5427 try { 5428 var a = Object.defineProperty({}, "passive", { get: function() { 5429 t = { passive: false }; 5430 } }); 5431 n.addEventListener("testPassive", null, a), n.removeEventListener("testPassive", null, a); 5432 } catch (e2) { 5433 } 5434 function r(e2) { 5435 return !isNaN(parseFloat(e2)) && isFinite(e2); 5436 } 5437 function i(e2) { 5438 return "auto" === e2 ? "100%" : r(e2) && 0 !== e2 ? e2 + "px" : e2; 5439 } 5440 function s(e2) { 5441 var t2 = ["Webkit", "Moz", "Ms", "O"], n2 = (o.body || o.documentElement).style, a2 = e2.charAt(0).toUpperCase() + e2.slice(1); 5442 if (void 0 !== n2[e2]) 5443 return e2; 5444 for (var r2 = 0; r2 < t2.length; r2++) 5445 if (void 0 !== n2[t2[r2] + a2]) 5446 return t2[r2] + a2; 5447 return false; 5448 } 5449 function l(e2, t2) { 5450 if (e2 instanceof Element) 5451 return t2 ? Array.prototype.filter.call(e2.children, function(e3) { 5452 return e3.matches(t2); 5453 }) : e2.children; 5454 var n2 = []; 5455 return Array.prototype.forEach.call(e2, function(e3) { 5456 n2 = t2 ? n2.concat(Array.prototype.filter.call(e3.children, function(e4) { 5457 return e4.matches(t2); 5458 })) : n2.concat(Array.prototype.slice.call(e3.children)); 5459 }), n2; 5460 } 5461 var c = (/iPad|iPhone|iPod/.test(navigator.userAgent) || !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform)) && !n.MSStream, v = "ontouchstart" in n || navigator.maxTouchPoints || n.DocumentTouch && o instanceof DocumentTouch, u = function(o2) { 5462 var l2 = Node.prototype[o2 + "EventListener"]; 5463 return function(e2, t2, n2) { 5464 if (this) { 5465 var a2 = e2.split(".")[0]; 5466 if (this._eventListeners = this._eventListeners || {}, "add" === o2) { 5467 this._eventListeners[e2] = this._eventListeners[e2] || []; 5468 var r2 = { fn: t2 }; 5469 n2 && (r2.options = n2), this._eventListeners[e2].push(r2), l2.call(this, a2, t2, n2); 5470 } else if ("function" == typeof t2) 5471 for (var i2 in l2.call(this, a2, t2, n2), this._eventListeners) 5472 this._eventListeners[i2] = this._eventListeners[i2].filter(function(e3) { 5473 return e3.fn !== t2; 5474 }), this._eventListeners[i2].length || delete this._eventListeners[i2]; 5475 else if (this._eventListeners[e2]) { 5476 for (var s2 = this._eventListeners[e2].length; s2--; ) 5477 l2.call(this, a2, this._eventListeners[e2][s2].fn, this._eventListeners[e2][s2].options), this._eventListeners[e2].splice(s2, 1); 5478 this._eventListeners[e2].length || delete this._eventListeners[e2]; 5479 } 5480 } 5481 }; 5482 }; 5483 Node.prototype.addEventListener = u("add"), Node.prototype.removeEventListener = u("remove"); 5484 function d(e2, t2, n2) { 5485 void 0 === t2 && (t2 = {}); 5486 var a2, r2 = o.createElement(e2); 5487 for (a2 in t2) 5488 "class" !== a2 ? !t2[a2] && 0 !== t2[a2] || r2.setAttribute(a2, t2[a2]) : r2.className = t2[a2]; 5489 if (n2) { 5490 Array.isArray(n2) || (n2 = [n2]); 5491 for (var i2 = 0; i2 < n2.length; i2++) 5492 if ("object" == typeof n2[i2] && n2[i2].length && !n2[i2].nodeType) 5493 for (var s2 = 0; s2 < n2[i2].length; s2++) 5494 r2.appendChild(n2[i2][s2]); 5495 else 5496 r2.appendChild("string" == typeof n2[i2] ? o.createTextNode(n2[i2]) : n2[i2]); 5497 } 5498 return r2; 5499 } 5500 function p(e2) { 5501 return -1 !== ["left", "right"].indexOf(e2) ? "x" : "y"; 5502 } 5503 a = function e2(t2) { 5504 return "string" == typeof t2 ? t2 : t2.getAttribute("id") ? "#" + t2.getAttribute("id") : t2.getAttribute("class") ? t2.tagName.toLowerCase() + "." + t2.getAttribute("class").replace(/\s+/g, ".") : e2(t2.parentNode) + " > " + t2.tagName.toLowerCase(); 5505 }, u = function() { 5506 s("transform"); 5507 return function(e2, t2, n2) { 5508 false === t2 || "" === t2 ? e2.style.transform = "" : "x" === p(n2) ? e2.style.transform = "translate3d(" + i("left" === n2 ? t2 : -t2) + ",0,0)" : e2.style.transform = "translate3d(0," + i("top" === n2 ? t2 : -t2) + ",0)"; 5509 }; 5510 }(); 5511 e.Helpers = { supportsPassive: t, isIos: c, isTouchDevice: v, isNumeric: r, formatSizeVal: i, toMs: function(e2) { 5512 return parseFloat(e2) * (/\ds$/.test(e2) ? 1e3 : 1); 5513 }, stopPropagation: function(e2) { 5514 return e2.stopPropagation(); 5515 }, preventDefault: function(e2) { 5516 return e2.preventDefault(); 5517 }, preventClick: function(t2) { 5518 return function(e2) { 5519 e2.preventDefault(), e2.stopPropagation(), "function" == typeof t2 && t2(); 5520 }; 5521 }, browserPrefix: s, children: l, wrap: function(e2, t2) { 5522 e2.parentNode.insertBefore(t2, e2), t2.appendChild(e2); 5523 }, data: function(e2, t2, n2) { 5524 if (e2.hcOffcanvasNav = e2.hcOffcanvasNav || {}, void 0 === n2) 5525 return e2.hcOffcanvasNav[t2]; 5526 e2.hcOffcanvasNav[t2] = n2; 5527 }, clone: function(e2, t2, n2) { 5528 var a2 = e2.cloneNode(n2 || false), r2 = e2 instanceof Element ? [e2].concat(Array.prototype.slice.call(e2.getElementsByTagName("*"))) : [], e2 = a2 instanceof Element ? [a2].concat(Array.prototype.slice.call(a2.getElementsByTagName("*"))) : []; 5529 return t2 || (r2.shift(), e2.shift()), n2 && function(e3, t3) { 5530 for (var n3 = 0; n3 < e3.length; n3++) 5531 if (e3[n3]._eventListeners) 5532 for (var a3 in e3[n3]._eventListeners) 5533 for (var r3 = 0; r3 < e3[n3]._eventListeners[a3].length; r3++) 5534 t3[r3].addEventListener(a3, e3[n3]._eventListeners[a3][r3].fn, e3[n3]._eventListeners[a3][r3].options); 5535 }(r2, e2), a2; 5536 }, customEventObject: function(e2, n2, a2, r2) { 5537 return new function(e3) { 5538 for (var t2 in this.bubbles = false, this.cancelable = false, this.composed = false, this.currentTarget = a2, this.data = r2 ? {} : null, this.defaultPrevented = false, this.eventPhase = 0, this.isTrusted = false, this.target = n2, this.timeStamp = Date.now(), this.type = e3, r2) 5539 this.data[t2] = r2[t2]; 5540 }(e2); 5541 }, hasListener: function(e2, t2) { 5542 return (t2 ? (e2._eventListeners || {})[t2] : e2._eventListeners) || false; 5543 }, debounce: function(a2, r2, i2) { 5544 var s2; 5545 return function() { 5546 var e2 = this, t2 = arguments, n2 = i2 && !s2; 5547 clearTimeout(s2), s2 = setTimeout(function() { 5548 s2 = null, i2 || a2.apply(e2, t2); 5549 }, r2), n2 && a2.apply(e2, t2); 5550 }; 5551 }, createElement: d, getElements: function(e2) { 5552 var t2 = null; 5553 return "string" == typeof e2 ? t2 = o.querySelectorAll(e2) : n.jQuery && e2 instanceof n.jQuery && e2.length ? t2 = e2.toArray() : e2 instanceof Element && (t2 = [e2]), t2; 5554 }, getElementCssTag: a, printStyle: function(e2) { 5555 var r2 = d("style", { id: e2 }), i2 = {}, s2 = {}; 5556 o.head.appendChild(r2); 5557 function a2(e3) { 5558 return ";" !== e3.substr(-1) && (e3 += ";" !== e3.substr(-1) ? ";" : ""), e3; 5559 } 5560 return { reset: function() { 5561 i2 = {}, s2 = {}; 5562 }, add: function(e3, t2, n2) { 5563 e3 = e3.trim(), t2 = t2.trim(), n2 ? (n2 = n2.trim(), s2[n2] = s2[n2] || {}, s2[n2][e3] = a2(t2)) : i2[e3] = a2(t2); 5564 }, remove: function(e3, t2) { 5565 e3 = e3.trim(), t2 ? (t2 = t2.trim(), void 0 !== s2[t2][e3] && delete s2[t2][e3]) : void 0 !== i2[e3] && delete i2[e3]; 5566 }, insert: function() { 5567 var e3, t2, n2 = ""; 5568 for (e3 in s2) { 5569 for (var a3 in n2 += "@media screen and (" + e3 + ") {\n", s2[e3]) 5570 n2 += " " + a3 + " { " + s2[e3][a3] + " }\n"; 5571 n2 += "}\n"; 5572 } 5573 for (t2 in i2) 5574 n2 += t2 + " { " + i2[t2] + " }\n"; 5575 r2.innerHTML = n2; 5576 } }; 5577 }, insertAt: function(e2, t2, n2) { 5578 var a2 = l(n2), r2 = a2.length, r2 = -1 < (t2 = "last" === (t2 = "first" === t2 ? 0 : t2) ? r2 : t2) ? Math.max(0, Math.min(t2, r2)) : Math.max(0, Math.min(r2 + t2, r2)); 5579 0 === r2 ? n2[0].insertBefore(e2, n2[0].firstChild) : a2[r2 - 1].insertAdjacentElement("afterend", e2); 5580 }, getAxis: p, setTransform: u, deprecated: function(e2, t2, n2) { 5581 console.warn("%cHC Off-canvas Nav:%c " + n2 + "%c '" + e2 + "'%c is now deprecated and will be removed in the future. Use%c '" + t2 + "'%c option instead. See details about plugin usage at https://github.com/somewebmedia/hc-offcanvas-nav.", "color: #fa253b", "color: default", "color: #5595c6", "color: default", "color: #5595c6", "color: default"); 5582 } }; 5583 }(window); 5584})(hcOffcanvasNav$1); 5585var hcOffcanvasNavExports = hcOffcanvasNav$1.exports; 5586const hcOffcanvasNav = /* @__PURE__ */ getDefaultExportFromCjs(hcOffcanvasNavExports); 5587document.addEventListener("DOMContentLoaded", function() { 5588 new hcOffcanvasNav("#mobile-main-nav", { 5589 disableAt: 1197, 5590 navTitle: "All Categories", 5591 customToggle: "#mobile-nav-open", 5592 removeOriginalNav: true, 5593 insertBack: true, 5594 labelBack: "Back to", 5595 width: 390 5596 }); 5597 new hcOffcanvasNav("#mobile-member-menu", { 5598 navTitle: "Your Quality Aging", 5599 position: "right", 5600 customToggle: "#mobile-member-nav-open", 5601 removeOriginalNav: true, 5602 insertBack: true, 5603 labelBack: "Back to", 5604 disableAt: 1197 5605 }); 5606 if (document.querySelector(".member-password .riSingle input[type=password]")) { 5607 document.querySelector(".member-password .riSingle input[type=password]").setAttribute("placeholder", "password"); 5608 } 5609 if (document.querySelector(".member-name .riSingle input[type=text]")) { 5610 document.querySelector(".member-name .riSingle input[type=text]").setAttribute("placeholder", "username"); 5611 } 5612 if (document.querySelector(".pbForgotPassword .liFieldInput input[type=text]")) { 5613 document.querySelector(".pbForgotPassword .liFieldInput input[type=text]").setAttribute("placeholder", "email"); 5614 } 5615 const menuSearchBoxElem = document.getElementById("menuSearch").querySelector("input[type=text]"); 5616 const menuSearchButtonElem = document.getElementById("menuSearch").querySelector(".search-button"); 5617 menuSearchBoxElem.addEventListener("keydown", (e) => { 5618 preventDefaultPress(e, menuSearchButtonElem); 5619 }); 5620 const documentSearchBoxElem = document.getElementsByClassName("document-search-bar")[0].querySelector("input[type=text]"); 5621 const documentSearchButtonElem = document.getElementsByClassName("document-search-bar")[0].querySelector(".button"); 5622 documentSearchBoxElem.addEventListener("keydown", (e) => { 5623 preventDefaultPress(e, documentSearchButtonElem); 5624 }); 5625 function preventDefaultPress(event, buttonToPush) {
5626 const charCode = event.keyCode; 5627 if (charCode !== 0) { 5628 if (charCode == 13) { 5629 event.preventDefault(); 5630 buttonToPush.click(); 5631 } 5632 } 5633 } 5634});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.